diff --git a/src/claude/runClaude.ts b/src/claude/runClaude.ts index bcdd74fd..9eec8ce7 100644 --- a/src/claude/runClaude.ts +++ b/src/claude/runClaude.ts @@ -162,12 +162,15 @@ export async function runClaude(credentials: Credentials, options: StartOptions logger.debug('[START] Failed to report to daemon (may not be running):', error); } + // Create realtime session FIRST (before SDK metadata extraction) + const session = api.sessionSyncClient(response); + // Extract SDK metadata in background and update session when ready extractSDKMetadataAsync(async (sdkMetadata) => { logger.debug('[start] SDK metadata extracted, updating session:', sdkMetadata); try { // Update session metadata with tools and slash commands - api.sessionSyncClient(response).updateMetadata((currentMetadata) => ({ + session.updateMetadata((currentMetadata) => ({ ...currentMetadata, tools: sdkMetadata.tools, slashCommands: sdkMetadata.slashCommands @@ -178,9 +181,6 @@ export async function runClaude(credentials: Credentials, options: StartOptions } }); - // Create realtime session - const session = api.sessionSyncClient(response); - // Start Happy MCP server const happyServer = await startHappyServer(session); logger.debug(`[START] Happy MCP server started at ${happyServer.url}`);