MCPcopy Index your code
hub / github.com/codeaashu/claude-code / useSSHSession

Function useSSHSession

src/hooks/useSSHSession.ts:48–241  ·  view source on GitHub ↗
({
  session,
  setMessages,
  setIsLoading,
  setToolUseConfirmQueue,
  tools,
}: UseSSHSessionProps)

Source from the content-addressed store, hash-verified

46}
47
48export function useSSHSession({
49 session,
50 setMessages,
51 setIsLoading,
52 setToolUseConfirmQueue,
53 tools,
54}: UseSSHSessionProps): UseSSHSessionResult {
55 const isRemoteMode = !!session
56
57 const managerRef = useRef<SSHSessionManager | null>(null)
58 const hasReceivedInitRef = useRef(false)
59 const isConnectedRef = useRef(false)
60
61 const toolsRef = useRef(tools)
62 useEffect(() => {
63 toolsRef.current = tools
64 }, [tools])
65
66 useEffect(() => {
67 if (!session) return
68
69 hasReceivedInitRef.current = false
70 logForDebugging('[useSSHSession] wiring SSH session manager')
71
72 const manager = session.createManager({
73 onMessage: sdkMessage => {
74 if (isSessionEndMessage(sdkMessage)) {
75 setIsLoading(false)
76 }
77
78 // Skip duplicate init messages (one per turn from stream-json mode).
79 if (sdkMessage.type === 'system' && sdkMessage.subtype === 'init') {
80 if (hasReceivedInitRef.current) return
81 hasReceivedInitRef.current = true
82 }
83
84 const converted = convertSDKMessage(sdkMessage, {
85 convertToolResults: true,
86 })
87 if (converted.type === 'message') {
88 setMessages(prev => [...prev, converted.message])
89 }
90 },
91 onPermissionRequest: (request, requestId) => {
92 logForDebugging(
93 `[useSSHSession] permission request: ${request.tool_name}`,
94 )
95
96 const tool =
97 findToolByName(toolsRef.current, request.tool_name) ??
98 createToolStub(request.tool_name)
99
100 const syntheticMessage = createSyntheticAssistantMessage(
101 request,
102 requestId,
103 )
104
105 const permissionResult: PermissionAskDecision = {

Callers 1

REPLFunction · 0.85

Calls 12

logForDebuggingFunction · 0.85
isSessionEndMessageFunction · 0.85
convertSDKMessageFunction · 0.85
findToolByNameFunction · 0.85
createToolStubFunction · 0.85
gracefulShutdownFunction · 0.85
sendInterruptMethod · 0.80
stopMethod · 0.65
connectMethod · 0.45
disconnectMethod · 0.45
sendMessageMethod · 0.45

Tested by

no test coverage detected