MCPcopy Create free account
hub / github.com/AnukarOP/claude-code-leaked / useDirectConnect

Function useDirectConnect

source code/hooks/useDirectConnect.ts:41–231  ·  view source on GitHub ↗
({
  config,
  setMessages,
  setIsLoading,
  setToolUseConfirmQueue,
  tools,
}: UseDirectConnectProps)

Source from the content-addressed store, hash-verified

39}
40
41export function useDirectConnect({
42 config,
43 setMessages,
44 setIsLoading,
45 setToolUseConfirmQueue,
46 tools,
47}: UseDirectConnectProps): UseDirectConnectResult {
48 const isRemoteMode = !!config
49
50 const managerRef = useRef<DirectConnectSessionManager | null>(null)
51 const hasReceivedInitRef = useRef(false)
52 const isConnectedRef = useRef(false)
53
54 // Keep a ref to tools so the WebSocket callback doesn't go stale
55 const toolsRef = useRef(tools)
56 useEffect(() => {
57 toolsRef.current = tools
58 }, [tools])
59
60 useEffect(() => {
61 if (!config) {
62 return
63 }
64
65 hasReceivedInitRef.current = false
66 logForDebugging(`[useDirectConnect] Connecting to ${config.wsUrl}`)
67
68 const manager = new DirectConnectSessionManager(config, {
69 onMessage: sdkMessage => {
70 if (isSessionEndMessage(sdkMessage)) {
71 setIsLoading(false)
72 }
73
74 // Skip duplicate init messages (server sends one per turn)
75 if (sdkMessage.type === 'system' && sdkMessage.subtype === 'init') {
76 if (hasReceivedInitRef.current) {
77 return
78 }
79 hasReceivedInitRef.current = true
80 }
81
82 const converted = convertSDKMessage(sdkMessage, {
83 convertToolResults: true,
84 })
85 if (converted.type === 'message') {
86 setMessages(prev => [...prev, converted.message])
87 }
88 },
89 onPermissionRequest: (request, requestId) => {
90 logForDebugging(
91 `[useDirectConnect] Permission request for tool: ${request.tool_name}`,
92 )
93
94 const tool =
95 findToolByName(toolsRef.current, request.tool_name) ??
96 createToolStub(request.tool_name)
97
98 const syntheticMessage = createSyntheticAssistantMessage(

Callers 1

REPLFunction · 0.85

Calls 13

connectMethod · 0.95
disconnectMethod · 0.95
sendMessageMethod · 0.95
logForDebuggingFunction · 0.85
isSessionEndMessageFunction · 0.85
convertSDKMessageFunction · 0.85
findToolByNameFunction · 0.85
createToolStubFunction · 0.85
gracefulShutdownFunction · 0.85
sendInterruptMethod · 0.80
writeMethod · 0.45

Tested by

no test coverage detected