MCPcopy Create free account
hub / github.com/tiann/hapi / connect

Method connect

cli/src/api/apiMachine.ts:376–487  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

374 }
375
376 connect(): void {
377 this.socket = io(`${configuration.apiUrl}/cli`, {
378 transports: ['websocket'],
379 auth: {
380 token: this.token,
381 clientType: 'machine-scoped' as const,
382 machineId: this.machine.id
383 },
384 path: '/socket.io/',
385 reconnection: true,
386 reconnectionDelay: 1000,
387 reconnectionDelayMax: 5000,
388 ...buildSocketIoExtraHeaderOptions()
389 })
390
391 this.socket.on('connect', () => {
392 logger.debug('[API MACHINE] Connected to bot')
393 this.rpcHandlerManager.onSocketConnect(this.socket)
394 this.updateRunnerState((state) => ({
395 ...(state ?? {}),
396 status: 'running',
397 pid: process.pid,
398 httpPort: this.machine.runnerState?.httpPort,
399 startedAt: Date.now()
400 })).catch((error) => {
401 logger.debug('[API MACHINE] Failed to update runner state on connect', error)
402 })
403
404 const hubWorkspaceRoots = this.machine.metadata?.workspaceRoots
405 const desiredWorkspaceRoots = this.workspaceRoots
406 if (!workspaceRootsEqual(desiredWorkspaceRoots, hubWorkspaceRoots)) {
407 if (desiredWorkspaceRoots?.length) {
408 console.log(`[HAPI] Syncing workspace roots to hub: ${formatWorkspaceRoots(desiredWorkspaceRoots)} (current hub value: ${formatWorkspaceRoots(hubWorkspaceRoots)})`)
409 } else {
410 console.log(`[HAPI] Clearing workspace roots on hub (was: ${formatWorkspaceRoots(hubWorkspaceRoots)})`)
411 }
412 this.updateMachineMetadata((current) => {
413 const base = current ?? this.machine.metadata
414 if (!base) {
415 return { workspaceRoots: desiredWorkspaceRoots } as MachineMetadata
416 }
417 if (desiredWorkspaceRoots?.length) {
418 return { ...base, workspaceRoots: desiredWorkspaceRoots }
419 }
420 const { workspaceRoots: _workspaceRoots, ...rest } = base
421 return rest as MachineMetadata
422 }).then(() => {
423 console.log(`[HAPI] Workspace roots synced: ${formatWorkspaceRoots(this.machine.metadata?.workspaceRoots)}`)
424 }).catch((error) => {
425 console.error('[HAPI] Failed to sync workspace roots:', error instanceof Error ? error.message : error)
426 })
427 } else if (desiredWorkspaceRoots?.length) {
428 console.log(`[HAPI] Workspace roots already up to date on hub: ${formatWorkspaceRoots(desiredWorkspaceRoots)}`)
429 }
430
431 this.startKeepAlive()
432 })
433

Callers 6

startRunnerFunction · 0.45
constructorMethod · 0.45
waitForConnectedMethod · 0.45
startMethod · 0.45
enqueueMethod · 0.45
useTerminalSocketFunction · 0.45

Calls 13

updateRunnerStateMethod · 0.95
updateMachineMetadataMethod · 0.95
startKeepAliveMethod · 0.95
stopKeepAliveMethod · 0.95
workspaceRootsEqualFunction · 0.85
formatWorkspaceRootsFunction · 0.85
debugMethod · 0.80
errorMethod · 0.80
onMethod · 0.45
onSocketConnectMethod · 0.45
onSocketDisconnectMethod · 0.45

Tested by

no test coverage detected