MCPcopy
hub / github.com/claude-code-best/claude-code / DirectConnectSessionManager

Class DirectConnectSessionManager

src/server/directConnectManager.ts:40–213  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

38}
39
40export class DirectConnectSessionManager {
41 private ws: WebSocket | null = null
42 private config: DirectConnectConfig
43 private callbacks: DirectConnectCallbacks
44
45 constructor(config: DirectConnectConfig, callbacks: DirectConnectCallbacks) {
46 this.config = config
47 this.callbacks = callbacks
48 }
49
50 connect(): void {
51 const headers: Record<string, string> = {}
52 if (this.config.authToken) {
53 headers['authorization'] = `Bearer ${this.config.authToken}`
54 }
55 // Bun's WebSocket supports headers option but the DOM typings don't
56 this.ws = new WebSocket(this.config.wsUrl, {
57 headers,
58 } as unknown as string[])
59
60 this.ws.addEventListener('open', () => {
61 this.callbacks.onConnected?.()
62 })
63
64 this.ws.addEventListener('message', event => {
65 const data = typeof event.data === 'string' ? event.data : ''
66 const lines = data.split('\n').filter((l: string) => l.trim())
67
68 for (const line of lines) {
69 let raw: unknown
70 try {
71 raw = jsonParse(line)
72 } catch {
73 continue
74 }
75
76 if (!isStdoutMessage(raw)) {
77 continue
78 }
79 const parsed = raw
80
81 // Handle control requests (permission requests)
82 if (parsed.type === 'control_request') {
83 if (parsed.request.subtype === 'can_use_tool') {
84 this.callbacks.onPermissionRequest(
85 parsed.request,
86 parsed.request_id,
87 )
88 } else {
89 // Send an error response for unrecognized subtypes so the
90 // server doesn't hang waiting for a reply that never comes.
91 logForDebugging(
92 `[DirectConnect] Unsupported control request subtype: ${parsed.request.subtype}`,
93 )
94 this.sendErrorResponse(
95 parsed.request_id,
96 `Unsupported control request subtype: ${parsed.request.subtype}`,
97 )

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected