@voxevolv/client 0.3.10 → 0.3.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1,7 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/index.ts"],
4
+ "sourcesContent": ["import {\n ConnectionState as LiveKitConnectionState,\n DataPacket_Kind,\n DisconnectReason,\n LocalAudioTrack,\n Room,\n RoomEvent,\n RpcError,\n type RpcInvocationData,\n Track,\n} from \"livekit-client\";\n\nimport {\n createClientMessage,\n CommandError,\n EventCursor,\n isCommandAckPayload,\n isCommandErrorPayload,\n isContextRejectedPayload,\n isContextUpdatePayload,\n isContextUpdatedPayload,\n isRealtimeEvent,\n type CommandAckPayload,\n type ClientMessage,\n type ContextUpdate,\n type ContextUpdatePayload,\n type ContextUpdatedPayload,\n type EventGap,\n type RealtimeEvent,\n} from \"./protocol.js\";\nimport { ContextDeliveryError, contextRetryDelay, ReplacementContextQueue } from \"./context-queue.js\";\nimport {\n ClientDiagnosticBuffer,\n DiagnosticDeliveryError,\n type ClientDiagnosticInput,\n type ClientDiagnosticReport,\n type DiagnosticEventType,\n type DiagnosticOperation,\n type RecoveryStage,\n} from \"./diagnostics.js\";\nimport { TranscriptStore, type TranscriptMessage } from \"./transcripts.js\";\nexport { TranscriptStore, type TranscriptMessage } from \"./transcripts.js\";\n\nexport {\n CommandError,\n EventCursor,\n createClientMessage,\n isCommandAckPayload,\n isCommandErrorPayload,\n isContextRejectedPayload,\n isContextUpdatePayload,\n isContextUpdatedPayload,\n isRealtimeEvent,\n} from \"./protocol.js\";\nexport type {\n ClientMessage,\n CommandAckPayload,\n CommandErrorPayload,\n ContextRejectedPayload,\n ContextUpdate,\n ContextUpdatePayload,\n ContextUpdatedPayload,\n EventGap,\n RealtimeEvent,\n} from \"./protocol.js\";\nexport {\n decodeAgentSnapshotPayload,\n decodeClientHelloPayload,\n decodeClientMessage,\n decodeCommandAckPayload,\n decodeCommandErrorPayload,\n decodeContextRejectedPayload,\n decodeContextUpdatePayload,\n decodeContextUpdatedPayload,\n decodeRealtimeEvent,\n} from \"./generated/protocol-codecs.js\";\n\nexport type ConnectionState =\n | \"idle\"\n | \"connecting\"\n | \"connected_not_ready\"\n | \"connected\"\n | \"reconnecting\"\n | \"resuming\"\n | \"disconnected\"\n | \"failed\";\n\nexport type ConnectionQuality =\n | \"unknown\"\n | \"excellent\"\n | \"good\"\n | \"poor\"\n | \"lost\";\n\nexport interface ConnectionCredentials {\n url: string;\n token: string;\n room_name: string;\n}\n\nexport interface SessionCredentials {\n id: string;\n connection: ConnectionCredentials;\n access_token: string;\n access_token_expires_at: string;\n}\n\nexport const SDK_VERSION = \"0.3.12\";\nconst CLIENT_HELLO_TIMEOUT_MS = 30_000;\nconst RECOVERY_BUFFER_STALL_MS = 5_000;\nconst RECOVERY_BUFFER_POLL_MS = 500;\nconst DIAGNOSTIC_REPORT_TIMEOUT_MS = 5_000;\nconst DEFAULT_STARTUP_ATTEMPTS: readonly ResolvedStartupAttempt[] = [\n { delayBeforeMs: 0, readyTimeoutMs: 15_000 },\n { delayBeforeMs: 1_000, readyTimeoutMs: 20_000 },\n { delayBeforeMs: 3_000, readyTimeoutMs: 50_000 },\n];\nconst DEFAULT_STARTUP_TIMEOUT_MS = 90_000;\n\nclass RecoveryDataChannelStalledError extends Error {\n constructor() {\n super(\"Recovery data channel stopped draining before the agent handshake completed\");\n this.name = \"RecoveryDataChannelStalledError\";\n }\n}\n\ntype Listener = (event: RealtimeEvent) => void;\ntype StateListener = (state: ConnectionState) => void;\ntype GapListener = (gap: EventGap) => void;\ntype ConnectionQualityListener = (quality: ConnectionQuality) => void;\ntype RecoveryListener = (event: RecoveryEvent) => void;\ntype StartupAttemptListener = (event: StartupAttemptEvent) => void;\nexport type FetchLike = (\n input: RequestInfo | URL,\n init?: RequestInit,\n) => Promise<Response>;\nexport type RemoteAudioTrackListener = (\n track: MediaStreamTrack,\n stream: MediaStream,\n) => void;\nexport interface TranscriptEvent {\n role: \"user\" | \"agent\";\n text: string;\n final: boolean;\n event: RealtimeEvent;\n}\nexport interface ToolCallEvent {\n name: string;\n callId: string;\n arguments: Record<string, unknown>;\n}\nexport interface ConnectOptions {\n microphone?: boolean;\n audioTrack?: MediaStreamTrack;\n readyTimeoutMs?: number;\n waitForRemoteAudio?: boolean;\n apiBase?: string;\n}\nexport interface AutoRejoinOptions {\n maxAttempts?: number;\n baseDelayMs?: number;\n maxDelayMs?: number;\n timeoutMs?: number;\n}\nexport interface StartupAttempt {\n readyTimeoutMs: number;\n delayBeforeMs?: number;\n}\nexport interface StartupRetryOptions {\n attempts?: readonly StartupAttempt[];\n timeoutMs?: number;\n}\nexport interface RealtimeSessionOptions {\n connect?: ConnectOptions;\n tools?: Record<string, ToolHandler>;\n fetch?: FetchLike;\n endEndpoint?: string;\n refreshCredentials?: () => Promise<SessionCredentials>;\n autoRejoin?: boolean | AutoRejoinOptions;\n /** Enabled by default. Set false for a single startup attempt. */\n startupRetry?: boolean | StartupRetryOptions;\n lifecycleCredentials?: RequestCredentials;\n}\nexport interface RealtimeSessionCreateOptions extends Omit<RealtimeSessionOptions, \"connect\"> {\n endpoint: string;\n apiBase: string;\n request?: Omit<RequestInit, \"method\">;\n microphone?: boolean;\n audioTrack?: MediaStreamTrack;\n readyTimeoutMs?: number;\n waitForRemoteAudio?: boolean;\n}\nexport interface EndOptions {\n endpoint?: string;\n request?: RequestInit;\n disconnect?: boolean;\n}\nexport interface AudioPlaybackBlockedEvent {\n error: unknown;\n element: HTMLMediaElement;\n track: MediaStreamTrack;\n}\nexport interface WaitForStateOptions {\n signal?: AbortSignal;\n}\nexport interface RecoveryEvent {\n status: \"started\" | \"succeeded\" | \"failed\";\n strategy: \"livekit\" | \"rejoin\";\n attempt: number;\n trigger: RecoveryTrigger;\n operation?: DiagnosticOperation;\n messageId?: string;\n contextKey?: string;\n timeoutMs?: number;\n error?: Error;\n}\nexport interface StartupAttemptEvent {\n status: \"started\" | \"succeeded\" | \"failed\";\n attempt: number;\n maxAttempts: number;\n readyTimeoutMs: number;\n error?: Error;\n}\n\nexport type RecoveryTrigger =\n | \"manual_rejoin\"\n | \"livekit_reconnecting\"\n | \"livekit_resume_failed\"\n | \"livekit_disconnected\"\n | \"agent_disconnected\"\n | \"worker_replaced\"\n | \"context_transfer_timeout\"\n | \"context_command_timeout\";\n\ntype ResolvedAutoRejoinOptions = {\n maxAttempts: number;\n baseDelayMs: number;\n maxDelayMs: number;\n timeoutMs: number;\n};\n\ntype ResolvedStartupAttempt = {\n readyTimeoutMs: number;\n delayBeforeMs: number;\n};\n\ntype ResolvedStartupRetryOptions = {\n attempts: readonly ResolvedStartupAttempt[];\n timeoutMs: number;\n};\n\ntype ActiveRecovery = {\n strategy: \"livekit\" | \"rejoin\";\n attempt: number;\n details: RecoveryDetails;\n};\n\ntype RecoveryDetails = {\n trigger: RecoveryTrigger;\n operation?: DiagnosticOperation;\n messageId?: string;\n contextKey?: string;\n timeoutMs?: number;\n};\n\ntype DisconnectMode = \"intentional\" | \"rejoin\" | \"connect_failure\" | null;\n\nexport class RealtimeSessionHttpError extends Error {\n readonly status: number;\n readonly code: string | null;\n readonly requestId: string | null;\n readonly details: unknown[];\n\n constructor(\n message: string,\n options: {\n status: number;\n code?: string | null;\n requestId?: string | null;\n details?: unknown[];\n },\n ) {\n super(message);\n this.name = \"RealtimeSessionHttpError\";\n this.status = options.status;\n this.code = options.code ?? null;\n this.requestId = options.requestId ?? null;\n this.details = options.details ?? [];\n }\n}\n\nclass SessionConfigurationError extends TypeError {}\n\nclass SessionErrorEventError extends Error {\n readonly retryable: boolean;\n\n constructor(event: RealtimeEvent) {\n const payload = event.payload as Record<string, unknown>;\n const message = typeof payload.message === \"string\"\n ? payload.message\n : \"VoxEvolv reported a session error\";\n super(message);\n this.name = \"SessionErrorEventError\";\n this.retryable = payload.retryable === true;\n }\n}\ntype PendingCommand = {\n commandType: string;\n message: ClientMessage;\n startedAt: number;\n contextKey?: string;\n payloadBytes?: number;\n retryCount: number;\n publishQueued: boolean;\n resolve: (payload: CommandAckPayload) => void;\n reject: (error: Error) => void;\n timeout: ReturnType<typeof globalThis.setTimeout>;\n retry?: ReturnType<typeof globalThis.setTimeout>;\n settled: Promise<void>;\n markSettled: () => void;\n retryTransfer?: () => Promise<void>;\n transferRetrying: boolean;\n transferRetryRequested: boolean;\n transferSettled?: Promise<void>;\n};\ntype ContextTransfer = {\n payload: ContextUpdatePayload;\n resend?: () => Promise<void>;\n};\nexport type ToolHandler = (\n arguments_: Record<string, unknown>,\n context: { callId: string },\n) => unknown | Promise<unknown>;\n\nexport class RealtimeSession {\n readonly id: string;\n readonly room: Room;\n private accessToken: string;\n private credentials: ConnectionCredentials;\n private stateValue: ConnectionState = \"idle\";\n private listeners = new Set<Listener>();\n private stateListeners = new Set<StateListener>();\n private gapListeners = new Set<GapListener>();\n private connectionQualityListeners = new Set<ConnectionQualityListener>();\n private recoveryListeners = new Set<RecoveryListener>();\n private startupAttemptListeners = new Set<StartupAttemptListener>();\n private remoteAudioTrackListeners = new Set<RemoteAudioTrackListener>();\n private remoteAudioTrackUnsubscribedListeners = new Set<RemoteAudioTrackListener>();\n private readyListeners = new Set<(event: RealtimeEvent) => void>();\n private userTranscriptListeners = new Set<(event: TranscriptEvent) => void>();\n private agentTranscriptListeners = new Set<(event: TranscriptEvent) => void>();\n private transcriptListeners = new Set<(message: TranscriptMessage) => void>();\n private transcriptStore = new TranscriptStore();\n private errorListeners = new Set<(event: RealtimeEvent) => void>();\n private endedListeners = new Set<(event: RealtimeEvent) => void>();\n private toolCallListeners = new Set<(event: ToolCallEvent) => void>();\n private audioPlaybackBlockedListeners = new Set<(event: AudioPlaybackBlockedEvent) => void>();\n private remoteAudioStreams = new WeakMap<object, MediaStream>();\n private outputMediaStream: MediaStream | null = null;\n private remoteAudioTrackResolve: (() => void) | null = null;\n private readonly cursor = new EventCursor();\n private connectionId = `conn_${Math.random().toString(36).slice(2)}_${Date.now().toString(36)}`;\n private clientSeq = 0;\n private lastHelloMessageId: string | null = null;\n private reconnectStartedAt: number | null = null;\n private pendingReconnect: {\n started_at: string;\n recovered_at: string;\n duration_ms: number;\n } | null = null;\n private agentReady = false;\n private agentStreamId: string | null = null;\n private contextGeneration = 0;\n private readonly replacementContext = new ReplacementContextQueue(\n (update, timeoutMs) => this.sendContextUpdate(update, timeoutMs),\n );\n private readyResolve: (() => void) | null = null;\n private replayPromise: Promise<void> | null = null;\n private pendingCommands = new Map<string, PendingCommand>();\n private commandPublishTail: Promise<void> = Promise.resolve();\n private toolHandlers = new Map<string, ToolHandler>();\n private apiBase = \"/v1\";\n private hasConnectedValue = false;\n private sessionEnded = false;\n private pendingEndEvent: RealtimeEvent | null = null;\n private agentDisconnected = false;\n private terminalSessionError: SessionErrorEventError | null = null;\n private endNotificationDelivered = false;\n private disconnectMode: DisconnectMode = null;\n private activeRecovery: ActiveRecovery | null = null;\n private recoveryStartedAt: number | null = null;\n private livekitResumeController: AbortController | null = null;\n private autoRejoinPromise: Promise<void> | null = null;\n private autoRejoinController: AbortController | null = null;\n private manualRejoinController: AbortController | null = null;\n private startupConnectController: AbortController | null = null;\n private startupAttemptController: AbortController | null = null;\n private useManagedMicrophone = true;\n private microphoneEnabled = true;\n private applicationAudioTrack: MediaStreamTrack | null = null;\n private localApplicationAudioTrack: LocalAudioTrack | null = null;\n private readonly connectDefaults: ConnectOptions;\n private recoveryReadiness: Required<Pick<ConnectOptions, \"readyTimeoutMs\" | \"waitForRemoteAudio\">>;\n private credentialRefreshGeneration = 0;\n private readonly fetcher: FetchLike;\n private readonly endEndpoint: string | null;\n private readonly refreshCredentialsCallback: (() => Promise<SessionCredentials>) | null;\n private readonly autoRejoinOptions: ResolvedAutoRejoinOptions | null;\n private readonly startupRetryOptions: ResolvedStartupRetryOptions | null;\n private readonly lifecycleCredentials: RequestCredentials;\n private readonly diagnostics = new ClientDiagnosticBuffer({ sdkVersion: SDK_VERSION });\n private activeContextTransfers = 0;\n private activeContextBytes = 0;\n private diagnosticLoopTimer: ReturnType<typeof setInterval> | undefined;\n private diagnosticLoopExpectedAt = 0;\n private diagnosticLoopDelayMs: number | undefined;\n private readonly diagnosticReportTimeoutMs = DIAGNOSTIC_REPORT_TIMEOUT_MS;\n private readonly onDiagnosticVisibilityChange = (): void => {\n if (globalThis.document?.visibilityState === \"hidden\") this.flushDiagnostics(\"page_hidden\");\n };\n\n constructor(credentials: SessionCredentials, options: RealtimeSessionOptions = {}) {\n validateSessionCredentials(credentials);\n this.id = credentials.id;\n this.accessToken = credentials.access_token;\n this.credentials = credentials.connection;\n this.connectDefaults = options.connect?.apiBase === undefined\n ? (options.connect ?? {})\n : { ...options.connect, apiBase: normalizeApiBase(options.connect.apiBase) };\n this.apiBase = this.connectDefaults.apiBase ?? this.apiBase;\n this.recoveryReadiness = {\n readyTimeoutMs: this.connectDefaults.readyTimeoutMs ?? 15_000,\n waitForRemoteAudio: this.connectDefaults.waitForRemoteAudio ?? true,\n };\n this.fetcher = options.fetch ?? globalThis.fetch.bind(globalThis);\n this.endEndpoint = options.endEndpoint ?? null;\n this.refreshCredentialsCallback = options.refreshCredentials ?? null;\n this.autoRejoinOptions = resolveAutoRejoinOptions(options.autoRejoin);\n this.startupRetryOptions = resolveStartupRetryOptions(options.startupRetry);\n this.lifecycleCredentials = options.lifecycleCredentials ?? \"same-origin\";\n this.room = new Room({ adaptiveStream: true, dynacast: true });\n for (const [name, handler] of Object.entries(options.tools ?? {})) {\n this.registerTool(name, handler);\n }\n this.room.registerRpcMethod(\"voxevolv.tool.invoke\", (invocation) => this.invokeBrowserTool(invocation));\n this.room.registerRpcMethod(\"voxevolv.diagnostics.flush\", async (invocation) => {\n const payload = JSON.parse(invocation.payload);\n if (typeof payload?.call_id !== \"string\" || payload.call_id.length > 200) {\n throw new RpcError(1500, \"Invalid diagnostic request\");\n }\n this.recordDiagnostic({\n operation: \"tool_rpc\", status: \"started\", stage: \"flush_requested\",\n call_id: payload.call_id, rpc_request_id: invocation.requestId,\n });\n // HTTP delivery has its own retry/receipt handling; never await it on the RPC channel.\n this.flushDiagnostics(\"tool_rpc_worker_request\");\n return \"{}\";\n });\n this.bindRoomEvents();\n }\n\n private async invokeBrowserTool(invocation: RpcInvocationData): Promise<string> {\n const receivedAt = performance.now();\n let callId: string | undefined;\n let toolName: string | undefined;\n let slowTimer: ReturnType<typeof setTimeout> | undefined;\n const record = (entry: Partial<ClientDiagnosticInput>) => this.recordDiagnostic({\n operation: \"tool_rpc\", status: \"started\", rpc_request_id: invocation.requestId,\n call_id: callId, tool_name: toolName,\n duration_ms: performance.now() - receivedAt, ...entry,\n });\n record({ stage: \"received\" });\n try {\n let payload: { name?: unknown; call_id?: unknown; arguments?: unknown };\n try {\n payload = JSON.parse(invocation.payload) as typeof payload;\n } catch (error) {\n throw new RpcError(1500, \"Tool invocation payload was not valid JSON\", undefined, { cause: error });\n }\n if (typeof payload?.name !== \"string\") {\n throw new RpcError(1500, \"Tool invocation did not include a valid name\");\n }\n toolName = payload.name;\n callId = typeof payload.call_id === \"string\" ? payload.call_id : invocation.requestId;\n const handler = this.toolHandlers.get(toolName);\n if (!handler) throw new RpcError(1500, `No browser handler is registered for ${toolName}`);\n if (!payload.arguments || typeof payload.arguments !== \"object\" || Array.isArray(payload.arguments)) {\n throw new RpcError(1500, \"Tool invocation arguments must be an object\");\n }\n const arguments_ = payload.arguments as Record<string, unknown>;\n this.notifyListeners(this.toolCallListeners, { name: toolName, callId, arguments: arguments_ });\n record({ stage: \"handler_started\" });\n this.flushDiagnostics(\"tool_rpc_received\");\n slowTimer = globalThis.setTimeout(() => {\n record({ stage: \"handler_started\", reason: \"handler_slow\" });\n this.flushDiagnostics(\"tool_rpc_slow\");\n }, 2_000);\n let response: string;\n try {\n const result = await handler(arguments_, { callId });\n response = JSON.stringify(result ?? null);\n } catch (error) {\n const message = error instanceof Error ? error.message : \"Browser tool handler failed\";\n throw new RpcError(1500, message, undefined, { cause: error });\n }\n // LiveKit sends the response after this callback returns. This is readiness,\n // not proof of a network send or acknowledgement by the worker.\n record({ stage: \"response_ready\", status: \"succeeded\" });\n return response;\n } catch (error) {\n record({ status: \"failed\", rpc_error_code: error instanceof RpcError ? error.code : undefined });\n throw error;\n } finally {\n globalThis.clearTimeout(slowTimer);\n this.flushDiagnostics(\"tool_rpc_finished\");\n }\n }\n\n static async create(options: RealtimeSessionCreateOptions): Promise<RealtimeSession> {\n if (\"connect\" in options) {\n throw new TypeError(\n \"RealtimeSession.create() accepts apiBase and media options at the top level, not in connect\",\n );\n }\n const {\n endpoint,\n request,\n microphone,\n audioTrack,\n readyTimeoutMs,\n waitForRemoteAudio,\n apiBase,\n ...sessionOptions\n } = options;\n if (!endpoint) throw new TypeError(\"endpoint is required\");\n if (!apiBase) {\n throw new TypeError(\n \"apiBase is required so rejoin, replay, and end use the intended VoxEvolv API or application proxy\",\n );\n }\n const normalizedApiBase = normalizeApiBase(apiBase);\n const fetcher = sessionOptions.fetch ?? globalThis.fetch.bind(globalThis);\n const response = await fetcher(endpoint, { ...request, method: \"POST\" });\n if (!response.ok) throw await httpError(response, \"Could not create realtime session\");\n const credentials = await response.json() as SessionCredentials;\n return new RealtimeSession(credentials, {\n ...sessionOptions,\n fetch: fetcher,\n connect: { microphone, audioTrack, readyTimeoutMs, waitForRemoteAudio, apiBase: normalizedApiBase },\n });\n }\n\n get state(): ConnectionState {\n return this.stateValue;\n }\n\n get hasConnectedBefore(): boolean {\n return this.hasConnectedValue;\n }\n\n /**\n * Stable stream holding the agent's current remote audio tracks. The stream\n * object never changes across track arrival, reconnects, or rejoin; tracks\n * are added and removed as the room subscribes and unsubscribes them.\n */\n get outputStream(): MediaStream {\n this.outputMediaStream ??= new MediaStream();\n return this.outputMediaStream;\n }\n\n onEvent(listener: Listener): () => void {\n this.listeners.add(listener);\n return () => this.listeners.delete(listener);\n }\n\n onStateChange(listener: StateListener): () => void {\n this.stateListeners.add(listener);\n this.notifyListeners(new Set([listener]), this.stateValue);\n return () => this.stateListeners.delete(listener);\n }\n\n onProtocolGap(listener: GapListener): () => void {\n this.gapListeners.add(listener);\n return () => this.gapListeners.delete(listener);\n }\n\n onConnectionQuality(listener: ConnectionQualityListener): () => void {\n this.connectionQualityListeners.add(listener);\n this.notifyListeners(\n new Set([listener]),\n this.room.localParticipant.connectionQuality as ConnectionQuality,\n );\n return () => this.connectionQualityListeners.delete(listener);\n }\n\n onRecovery(listener: RecoveryListener): () => void {\n this.recoveryListeners.add(listener);\n return () => this.recoveryListeners.delete(listener);\n }\n\n onStartupAttempt(listener: StartupAttemptListener): () => void {\n this.startupAttemptListeners.add(listener);\n return () => this.startupAttemptListeners.delete(listener);\n }\n\n waitForState(\n states: readonly ConnectionState[],\n timeoutMs: number,\n options: WaitForStateOptions = {},\n ): Promise<ConnectionState> {\n if (!states.length) throw new TypeError(\"states must contain at least one connection state\");\n if (!Number.isFinite(timeoutMs) || timeoutMs < 0) {\n throw new TypeError(\"timeoutMs must be a non-negative finite number\");\n }\n const targets = new Set(states);\n if (targets.has(this.stateValue)) return Promise.resolve(this.stateValue);\n if (options.signal?.aborted) {\n return Promise.reject(options.signal.reason ?? new DOMException(\"Aborted\", \"AbortError\"));\n }\n return new Promise((resolve, reject) => {\n let settled = false;\n const finish = (state: ConnectionState | null, error?: unknown) => {\n if (settled) return;\n settled = true;\n globalThis.clearTimeout(timeout);\n this.stateListeners.delete(onState);\n options.signal?.removeEventListener(\"abort\", onAbort);\n if (error !== undefined) {\n reject(error);\n } else if (state !== null) {\n resolve(state);\n }\n };\n const onState = (state: ConnectionState) => {\n if (targets.has(state)) finish(state);\n };\n const onAbort = () => {\n finish(null, options.signal?.reason ?? new DOMException(\"Aborted\", \"AbortError\"));\n };\n const timeout = globalThis.setTimeout(() => {\n finish(\n null,\n new Error(`Session did not reach ${states.join(\" or \")} within ${timeoutMs}ms`),\n );\n }, timeoutMs);\n this.stateListeners.add(onState);\n options.signal?.addEventListener(\"abort\", onAbort, { once: true });\n });\n }\n\n onRemoteAudioTrack(listener: RemoteAudioTrackListener): () => void {\n this.remoteAudioTrackListeners.add(listener);\n return () => this.remoteAudioTrackListeners.delete(listener);\n }\n\n onRemoteAudioTrackUnsubscribed(listener: RemoteAudioTrackListener): () => void {\n this.remoteAudioTrackUnsubscribedListeners.add(listener);\n return () => this.remoteAudioTrackUnsubscribedListeners.delete(listener);\n }\n\n onReady(listener: (event: RealtimeEvent) => void): () => void {\n this.readyListeners.add(listener);\n return () => this.readyListeners.delete(listener);\n }\n\n onUserTranscript(listener: (event: TranscriptEvent) => void): () => void {\n this.userTranscriptListeners.add(listener);\n return () => this.userTranscriptListeners.delete(listener);\n }\n\n onAgentTranscript(listener: (event: TranscriptEvent) => void): () => void {\n this.agentTranscriptListeners.add(listener);\n return () => this.agentTranscriptListeners.delete(listener);\n }\n\n /** Latest message snapshots, retained across transport recovery and replay. */\n get transcript(): readonly TranscriptMessage[] {\n return this.transcriptStore.snapshot;\n }\n\n onTranscriptUpdated(listener: (message: TranscriptMessage) => void): () => void {\n this.transcriptListeners.add(listener);\n return () => this.transcriptListeners.delete(listener);\n }\n\n onError(listener: (event: RealtimeEvent) => void): () => void {\n this.errorListeners.add(listener);\n return () => this.errorListeners.delete(listener);\n }\n\n onEnded(listener: (event: RealtimeEvent) => void): () => void {\n this.endedListeners.add(listener);\n return () => this.endedListeners.delete(listener);\n }\n\n onToolCall(listener: (event: ToolCallEvent) => void): () => void {\n this.toolCallListeners.add(listener);\n return () => this.toolCallListeners.delete(listener);\n }\n\n onAudioPlaybackBlocked(listener: (event: AudioPlaybackBlockedEvent) => void): () => void {\n this.audioPlaybackBlockedListeners.add(listener);\n return () => this.audioPlaybackBlockedListeners.delete(listener);\n }\n\n registerTool(name: string, handler: ToolHandler): () => void {\n if (\n [\"connecting\", \"connected_not_ready\", \"connected\", \"reconnecting\", \"resuming\"]\n .includes(this.stateValue)\n ) {\n throw new Error(\"Browser tools must be registered before connect()\");\n }\n if (!/^[a-z][a-z0-9_]{0,79}$/.test(name)) {\n throw new TypeError(\"Tool name must be lowercase letters, numbers, and underscores\");\n }\n if (this.toolHandlers.has(name)) throw new TypeError(`Tool ${name} is already registered`);\n this.toolHandlers.set(name, handler);\n return () => {\n if (this.toolHandlers.get(name) === handler) this.toolHandlers.delete(name);\n };\n }\n\n async connect(options: ConnectOptions = {}): Promise<void> {\n if (this.startupConnectController || this.manualRejoinController) {\n throw new Error(\"A session connection attempt is already in progress\");\n }\n if (\n [\"connecting\", \"connected_not_ready\", \"connected\", \"reconnecting\", \"resuming\"]\n .includes(this.stateValue)\n ) {\n throw new Error(`Cannot connect while session is ${this.stateValue}`);\n }\n this.cancelRecovery();\n const controller = new AbortController();\n this.startupConnectController = controller;\n this.credentialRefreshGeneration += 1;\n const resolved = { ...this.connectDefaults, ...options };\n // Keep caller preferences separate from temporary startup-attempt budgets.\n this.recoveryReadiness = {\n readyTimeoutMs: resolved.readyTimeoutMs ?? 15_000,\n waitForRemoteAudio: resolved.waitForRemoteAudio ?? true,\n };\n this.microphoneEnabled = resolved.audioTrack\n ? resolved.audioTrack.enabled !== false\n : resolved.microphone ?? true;\n this.setState(\"connecting\");\n try {\n if (this.startupRetryOptions) {\n await this.connectWithStartupRetry(options, controller);\n } else {\n this.startupAttemptController = controller;\n await this.connectWithMode(options, false, controller.signal, false);\n }\n } catch (error) {\n if (this.startupConnectController === controller && this.terminalSessionError) {\n this.sessionEnded = true;\n this.setState(\"failed\");\n } else if (this.startupConnectController === controller && !this.sessionEnded) {\n this.setState(\"failed\");\n }\n throw error;\n } finally {\n if (this.startupAttemptController === controller) {\n this.startupAttemptController = null;\n }\n if (this.startupConnectController === controller) {\n this.startupConnectController = null;\n }\n }\n }\n\n private async connectWithStartupRetry(\n options: ConnectOptions,\n controller: AbortController,\n ): Promise<void> {\n const startupOptions = this.startupRetryOptions;\n if (!startupOptions) return;\n const startupStartedAt = performance.now();\n const timeout = globalThis.setTimeout(() => {\n controller.abort(new Error(\n `Session startup did not complete within ${startupOptions.timeoutMs}ms`,\n ));\n }, startupOptions.timeoutMs);\n let lastError = new Error(\"Session startup failed\");\n let startupRegistered = this.hasConnectedValue;\n this.apiBase = normalizeApiBase(options.apiBase ?? this.connectDefaults.apiBase ?? this.apiBase);\n\n try {\n for (const [index, attempt] of startupOptions.attempts.entries()) {\n const attemptNumber = index + 1;\n if (attempt.delayBeforeMs > 0) {\n this.setState(\"connecting\");\n await abortableDelay(attempt.delayBeforeMs, controller.signal);\n }\n throwIfAborted(controller.signal);\n\n const attemptController = createLinkedAbortController(controller.signal);\n this.startupAttemptController = attemptController;\n this.notifyStartupAttempt(\"started\", attemptNumber, attempt.readyTimeoutMs);\n try {\n if (!startupRegistered) {\n const remainingMs = startupOptions.timeoutMs - (performance.now() - startupStartedAt);\n await this.registerStartupRecovery(remainingMs, attemptController.signal);\n startupRegistered = true;\n }\n throwIfAborted(attemptController.signal);\n if (index === 0) {\n await this.connectWithMode(\n { ...options, readyTimeoutMs: attempt.readyTimeoutMs },\n false,\n attemptController.signal,\n false,\n );\n } else {\n await this.performRejoin(this.apiBase, {\n signal: attemptController.signal,\n recovering: false,\n connect: { ...options, readyTimeoutMs: attempt.readyTimeoutMs },\n markFailureTerminal: false,\n });\n }\n throwIfAborted(controller.signal);\n this.notifyStartupAttempt(\"succeeded\", attemptNumber, attempt.readyTimeoutMs);\n return;\n } catch (error) {\n lastError = toError(error);\n this.notifyStartupAttempt(\"failed\", attemptNumber, attempt.readyTimeoutMs, lastError);\n if (controller.signal.aborted) throw abortError(controller.signal);\n if (isTerminalStartupError(error) || attemptNumber === startupOptions.attempts.length) {\n throw error;\n }\n this.setState(\"connecting\");\n } finally {\n if (this.startupAttemptController === attemptController) {\n this.startupAttemptController = null;\n }\n }\n }\n throw lastError;\n } finally {\n globalThis.clearTimeout(timeout);\n }\n }\n\n private async registerStartupRecovery(timeoutMs: number, signal: AbortSignal): Promise<void> {\n const reserveMs = Math.min(5_000, timeoutMs / 10);\n const controller = createLinkedAbortController(signal);\n const requestTimeout = globalThis.setTimeout(() => {\n controller.abort(new Error(\"Startup registration timed out\"));\n }, Math.max(1, reserveMs));\n try {\n // Leave room for registration latency and final readiness before the\n // browser's existing overall deadline. Rejoins never renew this window.\n const send = () => raceWithAbort(this.fetcher(`${this.apiBase}/sessions/${this.id}/startup`, {\n method: \"POST\",\n headers: { Authorization: `Bearer ${this.accessToken}`, \"Content-Type\": \"application/json\" },\n credentials: this.lifecycleCredentials,\n body: JSON.stringify({ timeout_ms: Math.max(1, Math.floor(Math.min(timeoutMs - reserveMs, 85_000))) }),\n signal: controller.signal,\n }), controller.signal);\n let response = await send();\n if (response.status === 401 && this.refreshCredentialsCallback) {\n await this.refreshCredentials(controller.signal);\n response = await send();\n }\n if (!response.ok) throw await httpError(response, \"Could not register session startup\");\n const body = await raceWithAbort(response.json(), controller.signal) as { remaining_ms?: number };\n if (typeof body.remaining_ms !== \"number\" || body.remaining_ms <= 0) {\n throw new Error(\"Session startup window has expired\");\n }\n } finally {\n globalThis.clearTimeout(requestTimeout);\n }\n }\n\n private notifyStartupAttempt(\n status: StartupAttemptEvent[\"status\"],\n attempt: number,\n readyTimeoutMs: number,\n error?: Error,\n ): void {\n const maxAttempts = this.startupRetryOptions?.attempts.length ?? 1;\n this.notifyListeners(this.startupAttemptListeners, {\n status,\n attempt,\n maxAttempts,\n readyTimeoutMs,\n ...(error ? { error } : {}),\n });\n }\n\n private async connectWithMode(\n options: ConnectOptions,\n recovering: boolean,\n signal?: AbortSignal,\n markFailureTerminal = true,\n ): Promise<void> {\n throwIfAborted(signal);\n const blockedStates: ConnectionState[] = recovering\n ? [\"connecting\", \"connected_not_ready\", \"connected\", \"reconnecting\"]\n : [\"connecting\", \"connected_not_ready\", \"connected\", \"reconnecting\", \"resuming\"];\n const continuingStartupRetry = (\n !recovering\n && !markFailureTerminal\n && this.stateValue === \"connecting\"\n );\n if (blockedStates.includes(this.stateValue) && !continuingStartupRetry) {\n throw new Error(`Cannot connect while session is ${this.stateValue}`);\n }\n const generation = this.contextGeneration;\n const resolved = { ...this.connectDefaults, ...options };\n const audioTrack = resolved.audioTrack ?? null;\n const microphone = resolved.microphone ?? audioTrack === null;\n const readyTimeoutMs = resolved.readyTimeoutMs ?? 15_000;\n const waitForRemoteAudio = resolved.waitForRemoteAudio ?? true;\n const apiBase = normalizeApiBase(resolved.apiBase ?? this.apiBase);\n this.validateAudioOptions(microphone, audioTrack);\n this.useManagedMicrophone = microphone;\n this.applicationAudioTrack = audioTrack;\n if (!recovering) {\n this.sessionEnded = false;\n this.agentStreamId = null;\n this.reconnectStartedAt = null;\n this.pendingEndEvent = null;\n this.agentDisconnected = false;\n this.terminalSessionError = null;\n this.endNotificationDelivered = false;\n this.setState(\"connecting\");\n } else {\n this.setState(\"resuming\");\n }\n this.apiBase = apiBase;\n this.agentReady = false;\n try {\n await this.measureRecoveryStage(\n \"room_connect\", () => this.connectRoom(signal, recovering), recovering,\n );\n throwIfAborted(signal);\n if (audioTrack) {\n await raceWithAbort(this.publishApplicationAudioTrack(audioTrack), signal);\n } else if (microphone) {\n await raceWithAbort(\n this.room.localParticipant.setMicrophoneEnabled(this.microphoneEnabled),\n signal,\n );\n }\n throwIfAborted(signal);\n this.setState(recovering ? \"resuming\" : \"connected_not_ready\");\n await this.measureRecoveryStage(\"hello\", () => (\n recovering ? this.sendRecoveryHello(signal) : raceWithAbort(this.sendHello(), signal)\n ), recovering);\n const readyDeadline = Date.now() + readyTimeoutMs;\n await this.measureRecoveryStage(\n \"agent_ready\", () => this.waitForAgentReady(readyTimeoutMs, signal), recovering,\n );\n if (waitForRemoteAudio) {\n await this.measureRecoveryStage(\n \"remote_audio\", () => this.waitForRemoteAudioTrack(readyDeadline, signal), recovering,\n );\n }\n throwIfAborted(signal);\n if (this.sessionEnded || generation !== this.contextGeneration) {\n throw new Error(\"Connection restoration interrupted\");\n }\n this.resumeContextDelivery(recovering);\n throwIfAborted(signal);\n if (this.sessionEnded || generation !== this.contextGeneration) {\n throw new Error(\"Connection restoration interrupted\");\n }\n this.hasConnectedValue = true;\n this.setState(\"connected\");\n } catch (error) {\n if (signal?.aborted) this.rejectPendingCommands(toError(abortError(signal)));\n this.disconnectMode = recovering ? \"rejoin\" : \"connect_failure\";\n try {\n await this.room.disconnect();\n } catch {\n // Preserve the original connection/readiness failure.\n } finally {\n this.disconnectMode = null;\n }\n if (!recovering && markFailureTerminal) this.setState(\"failed\");\n throw error;\n }\n }\n\n private connectRoom(signal: AbortSignal | undefined, recovering: boolean): Promise<void> {\n throwIfAborted(signal);\n const connection = this.room.connect(this.credentials.url, this.credentials.token);\n if (!signal) return connection;\n\n return new Promise((resolve, reject) => {\n let settled = false;\n const resolveOnce = () => {\n if (settled) return;\n settled = true;\n signal.removeEventListener(\"abort\", onAbort);\n resolve();\n };\n const rejectOnce = (error: unknown) => {\n if (settled) return;\n settled = true;\n signal.removeEventListener(\"abort\", onAbort);\n reject(error);\n };\n const onAbort = () => {\n this.disconnectMode = recovering ? \"rejoin\" : \"connect_failure\";\n void this.room.disconnect().catch(() => {});\n rejectOnce(abortError(signal));\n };\n if (signal.aborted) {\n onAbort();\n } else {\n signal.addEventListener(\"abort\", onAbort, { once: true });\n }\n connection.then(resolveOnce, rejectOnce);\n });\n }\n\n async rejoin(apiBase = this.apiBase): Promise<void> {\n if (this.startupConnectController || this.manualRejoinController) {\n throw new Error(\"A session connection attempt is already in progress\");\n }\n if (this.sessionEnded) {\n throw this.terminalSessionError ?? new Error(\"Cannot rejoin a session that has ended\");\n }\n if ([\"connecting\", \"connected_not_ready\", \"reconnecting\", \"resuming\"].includes(this.stateValue)) {\n throw new Error(`Cannot rejoin while session is ${this.stateValue}`);\n }\n this.cancelRecovery();\n const normalizedApiBase = normalizeApiBase(apiBase);\n const recovering = this.hasConnectedValue;\n const controller = new AbortController();\n this.manualRejoinController = controller;\n if (recovering) {\n this.beginRecovery(\"rejoin\", 1, { trigger: \"manual_rejoin\" });\n this.setState(\"resuming\");\n }\n try {\n await this.performRejoin(normalizedApiBase, { recovering, signal: controller.signal });\n if (this.sessionEnded) return;\n if (recovering) this.completeRecovery();\n } catch (error) {\n if (controller.signal.aborted && !this.terminalSessionError) return;\n const normalizedError = toError(error);\n if (recovering) this.failRecovery(normalizedError);\n this.setState(\"failed\");\n throw error;\n } finally {\n if (this.manualRejoinController === controller) {\n this.manualRejoinController = null;\n }\n }\n }\n\n private async performRejoin(\n apiBase: string,\n options: {\n signal?: AbortSignal;\n recovering?: boolean;\n connect?: ConnectOptions;\n markFailureTerminal?: boolean;\n } = {},\n ): Promise<void> {\n const {\n signal,\n recovering = true,\n connect,\n markFailureTerminal = true,\n } = options;\n this.contextGeneration += 1;\n this.replacementContext.pause();\n this.rejectPendingCommands(new Error(\"Restoring the session\"));\n let response = await this.fetchRoomToken(apiBase, signal, recovering);\n if (response.status === 401 && this.refreshCredentialsCallback) {\n await this.refreshCredentials(signal);\n throwIfAborted(signal);\n response = await this.fetchRoomToken(apiBase, signal, recovering);\n }\n // A live ending may arrive while token renewal is in flight.\n if (this.sessionEnded) {\n if (this.terminalSessionError) throw this.terminalSessionError;\n return;\n }\n if (!response.ok) {\n if (response.status === 409 && await this.recoverSessionEnd(apiBase, signal)) return;\n throw await raceWithAbort(httpError(response, \"Could not renew room token\"), signal);\n }\n const payload = (await raceWithAbort(response.json(), signal)) as {\n connection: ConnectionCredentials;\n };\n throwIfAborted(signal);\n this.credentials = payload.connection;\n if (this.room.state !== LiveKitConnectionState.Disconnected) {\n this.disconnectMode = \"rejoin\";\n try {\n await this.measureRecoveryStage(\n \"room_disconnect\", () => raceWithAbort(this.room.disconnect(), signal), recovering,\n );\n } finally {\n this.disconnectMode = null;\n }\n }\n throwIfAborted(signal);\n if (recovering && this.reconnectStartedAt !== null) {\n this.pendingReconnect = {\n started_at: new Date(this.reconnectStartedAt).toISOString(),\n recovered_at: new Date().toISOString(),\n duration_ms: Date.now() - this.reconnectStartedAt,\n };\n }\n // Startup retries resolve the original caller options with constructor defaults.\n // A later rejoin restores the audio settings saved by the previous connection.\n const connectionOptions = connect ?? {\n ...this.recoveryReadiness,\n microphone: this.useManagedMicrophone,\n ...(this.applicationAudioTrack ? { audioTrack: this.applicationAudioTrack } : {}),\n };\n await this.connectWithMode({ ...connectionOptions, apiBase }, recovering, signal, markFailureTerminal);\n }\n\n async setMicrophoneEnabled(enabled: boolean): Promise<void> {\n // Recovery must see the user's latest intent while the media operation waits.\n this.microphoneEnabled = enabled;\n if (this.applicationAudioTrack) {\n // The room may not know this track yet while publication is pending.\n const track = this.localApplicationAudioTrack;\n if (enabled) await track?.unmute();\n else await track?.mute();\n return;\n }\n await this.room.localParticipant.setMicrophoneEnabled(enabled);\n }\n\n async sendCommand<T extends Record<string, unknown>>(\n type: string,\n payload: T,\n timeoutMs = 10_000,\n ): Promise<CommandAckPayload> {\n const message = createClientMessage(\n this.connectionId,\n ++this.clientSeq,\n type,\n payload,\n );\n return this.sendTrackedCommand(message, timeoutMs);\n }\n\n async updateContext(\n update: ContextUpdate,\n timeoutMs = 20_000,\n ): Promise<ContextUpdatedPayload> {\n if (this.sessionEnded || [\"failed\", \"disconnected\"].includes(this.stateValue)) {\n throw new Error(\"Cannot update context while the session is inactive\");\n }\n if (update.mode === \"replace\") return this.replacementContext.submit(update, timeoutMs);\n if (this.activeRecovery) throw new Error(\"Cannot append context during recovery\");\n return this.sendContextUpdate(update, timeoutMs);\n }\n\n private async sendContextUpdate(update: ContextUpdate, timeoutMs: number): Promise<ContextUpdatedPayload> {\n const generation = this.contextGeneration;\n const payloadBytes = contextUpdateBytes(update);\n const transferStartedAt = Date.now();\n let transferTimedOut = false;\n this.recordDiagnostic({\n operation: \"context_transfer\",\n status: \"started\",\n context_key: update.key,\n payload_bytes: payloadBytes,\n });\n this.activeContextTransfers += 1;\n this.activeContextBytes += payloadBytes;\n const uploading = (\"image\" in update ? this.uploadImageContext(update) : this.uploadTextContext(update))\n .finally(() => {\n this.activeContextTransfers -= 1;\n this.activeContextBytes -= payloadBytes;\n });\n const transferSettled = uploading.then(() => {}, () => {});\n let transferTimeout: ReturnType<typeof setTimeout> | undefined;\n const transferExpired = new Promise<never>((_resolve, reject) => {\n transferTimeout = globalThis.setTimeout(() => {\n transferTimedOut = true;\n const error = new ContextDeliveryError(`Context transfer timed out after ${timeoutMs}ms`, {\n retryAfter: transferSettled,\n });\n this.recordDiagnostic({\n operation: \"context_transfer\",\n status: \"timed_out\",\n reason: \"context_transfer_timeout\",\n context_key: update.key,\n payload_bytes: payloadBytes,\n duration_ms: Date.now() - transferStartedAt,\n timeout_ms: timeoutMs,\n });\n this.flushDiagnostics(\"context_transfer_timeout\");\n reject(error);\n }, timeoutMs);\n });\n let transfer: ContextTransfer;\n try {\n transfer = await Promise.race([\n uploading,\n transferExpired,\n ]);\n } catch (error) {\n if (!transferTimedOut) {\n this.recordDiagnostic({\n operation: \"context_transfer\",\n status: \"failed\",\n reason: \"context_transfer_failed\",\n context_key: update.key,\n payload_bytes: payloadBytes,\n duration_ms: Date.now() - transferStartedAt,\n });\n this.flushDiagnostics(\"command_failed\");\n }\n if (error instanceof TypeError || error instanceof ContextDeliveryError) throw error;\n throw new ContextDeliveryError(toError(error).message, { cause: error });\n } finally {\n globalThis.clearTimeout(transferTimeout);\n }\n const transferDurationMs = Date.now() - transferStartedAt;\n this.recordDiagnostic({\n operation: \"context_transfer\",\n status: \"succeeded\",\n context_key: update.key,\n payload_bytes: payloadBytes,\n duration_ms: transferDurationMs,\n });\n if (transferDurationMs > 2_000) this.flushDiagnostics(\"slow_operation\");\n if (generation !== this.contextGeneration) throw new Error(\"Context transfer interrupted by recovery\");\n const { payload } = transfer;\n if (!isContextUpdatePayload(payload)) {\n throw new TypeError(\"Invalid context update payload\");\n }\n const message = createClientMessage(\n this.connectionId,\n ++this.clientSeq,\n \"context.update\",\n { ...payload },\n );\n return this.sendTrackedCommand(\n message,\n timeoutMs,\n transfer.resend,\n ) as Promise<ContextUpdatedPayload>;\n }\n\n private resumeContextDelivery(restore: boolean): void {\n // Audio readiness owns connection recovery. Context delivery has its own\n // deadlines and retries, and may be interrupted by a later disconnect.\n void this.replacementContext.resume(restore).catch(() => {});\n }\n\n private async uploadTextContext(update: Extract<ContextUpdate, { text: string }>): Promise<ContextTransfer> {\n const data = new TextEncoder().encode(update.text);\n if (data.byteLength === 0) throw new TypeError(\"Context text cannot be empty\");\n if (data.byteLength > 262_144) {\n throw new TypeError(\"Context text must be at most 262144 UTF-8 bytes\");\n }\n const base = {\n key: update.key,\n mode: update.mode,\n label: update.label ?? \"\",\n respond: update.respond ?? false,\n };\n if (data.byteLength <= 32_768) return { payload: { ...base, text: update.text } };\n const sha256 = await sha256Hex(data);\n const streamId = contextStreamId();\n const send = async () => {\n const writer = await this.room.localParticipant.streamText({\n streamId,\n topic: \"voxevolv.context.text\",\n totalSize: data.byteLength,\n attributes: { sha256 },\n });\n await writer.write(update.text);\n await writer.close();\n };\n await send();\n return {\n payload: {\n ...base,\n text_stream: { stream_id: streamId, bytes: data.byteLength, sha256 },\n },\n resend: send,\n };\n }\n\n private async uploadImageContext(update: Extract<ContextUpdate, { image: Blob }>): Promise<ContextTransfer> {\n const allowed = new Set([\"image/jpeg\", \"image/png\", \"image/webp\"]);\n if (!allowed.has(update.image.type)) {\n throw new TypeError(\"Image context must be JPEG, PNG, or WebP\");\n }\n const data = new Uint8Array(await update.image.arrayBuffer());\n if (data.byteLength === 0 || data.byteLength > 5_242_880) {\n throw new TypeError(\"Image context must be between 1 byte and 5 MiB\");\n }\n const sha256 = await sha256Hex(data);\n const streamId = contextStreamId();\n const send = async () => {\n const writer = await this.room.localParticipant.streamBytes({\n streamId,\n topic: \"voxevolv.context.image\",\n name: \"context-image\",\n mimeType: update.image.type,\n totalSize: data.byteLength,\n attributes: { sha256 },\n });\n await writer.write(data);\n await writer.close();\n };\n await send();\n return {\n payload: {\n key: update.key,\n mode: \"replace\",\n label: update.label ?? \"\",\n image: {\n stream_id: streamId,\n mime: update.image.type as \"image/jpeg\" | \"image/png\" | \"image/webp\",\n bytes: data.byteLength,\n sha256,\n ...(update.width === undefined ? {} : { width: update.width }),\n ...(update.height === undefined ? {} : { height: update.height }),\n detail: update.detail ?? \"low\",\n },\n respond: update.respond ?? false,\n },\n resend: send,\n };\n }\n\n async disconnect(): Promise<void> {\n this.abortStartupConnect(new Error(\"Session disconnected\"));\n this.startupConnectController = null;\n this.failRecovery(new Error(\"Session disconnected during recovery\"));\n this.cancelRecovery();\n this.contextGeneration += 1;\n this.localApplicationAudioTrack = null;\n this.replacementContext.clear(new Error(\"Session disconnected\"));\n if (this.stateValue === \"disconnected\") return;\n this.rejectPendingCommands(new Error(\"Session disconnected before command completion\"));\n this.disconnectMode = \"intentional\";\n try {\n await this.room.disconnect();\n } finally {\n this.disconnectMode = null;\n this.activeRecovery = null;\n this.setState(\"disconnected\");\n }\n }\n\n async end(options: EndOptions = {}): Promise<void> {\n this.credentialRefreshGeneration += 1;\n this.abortStartupConnect(new Error(\"Session ended\"));\n this.startupConnectController = null;\n this.failRecovery(new Error(\"Session ended during recovery\"));\n this.cancelRecovery();\n this.sessionEnded = true;\n const endpoint = options.endpoint ?? this.endEndpoint ?? `${this.apiBase}/sessions/${this.id}`;\n const request = options.request ?? {};\n const headers = new Headers(request.headers);\n const usesScopedSessionEndpoint = !options.endpoint && !this.endEndpoint;\n if (!headers.has(\"Authorization\") && usesScopedSessionEndpoint) {\n headers.set(\"Authorization\", `Bearer ${this.accessToken}`);\n }\n let response = await this.fetcher(endpoint, {\n ...request,\n method: request.method ?? \"DELETE\",\n headers,\n credentials: request.credentials ?? this.lifecycleCredentials,\n });\n if (response.status === 401 && usesScopedSessionEndpoint && this.refreshCredentialsCallback) {\n await this.refreshCredentials(request.signal ?? undefined);\n headers.set(\"Authorization\", `Bearer ${this.accessToken}`);\n response = await this.fetcher(endpoint, {\n ...request,\n method: request.method ?? \"DELETE\",\n headers,\n credentials: request.credentials ?? this.lifecycleCredentials,\n });\n }\n if (!response.ok) throw await httpError(response, \"Could not end realtime session\");\n if (options.disconnect ?? true) await this.disconnect();\n }\n\n async replay(apiBase = this.apiBase, afterSeq = this.cursor.lastServerSeq): Promise<void> {\n if (this.replayPromise) return this.replayPromise;\n const normalizedApiBase = normalizeApiBase(apiBase);\n this.replayPromise = this.fetchReplay(normalizedApiBase, afterSeq).finally(() => {\n this.replayPromise = null;\n });\n return this.replayPromise;\n }\n\n private setState(state: ConnectionState): void {\n if (this.stateValue === state) return;\n this.stateValue = state;\n if (state === \"connecting\" || state === \"resuming\") {\n this.startDiagnosticLoopMonitor();\n globalThis.document?.addEventListener?.(\"visibilitychange\", this.onDiagnosticVisibilityChange);\n }\n if (state === \"disconnected\" || state === \"failed\") {\n globalThis.clearInterval(this.diagnosticLoopTimer);\n this.diagnosticLoopTimer = undefined;\n this.diagnosticLoopDelayMs = undefined;\n globalThis.document?.removeEventListener?.(\"visibilitychange\", this.onDiagnosticVisibilityChange);\n this.flushDiagnostics(\"session_finished\");\n const error = new Error(`Session ${state}`);\n this.contextGeneration += 1;\n this.replacementContext.clear(error);\n this.rejectPendingCommands(error);\n }\n this.notifyListeners(this.stateListeners, state);\n }\n\n private bindRoomEvents(): void {\n this.room.on(RoomEvent.ParticipantDisconnected, (participant) => {\n if (participant.isAgent && !this.disconnectMode) {\n // LiveKit removes its local participant objects BEFORE announcing a\n // native restart. Let that synchronous cleanup finish before deciding\n // whether the agent actually left an otherwise connected room.\n queueMicrotask(() => {\n if (this.disconnectMode || this.terminalSessionError) return;\n if (this.sessionEnded) {\n this.agentDisconnected = true;\n this.finishPendingEnd();\n return;\n }\n if (\n this.room.state === LiveKitConnectionState.Reconnecting\n || this.activeRecovery !== null\n || this.autoRejoinPromise !== null\n || this.manualRejoinController !== null\n ) return;\n if ([...this.room.remoteParticipants.values()].some((remote) => remote.isAgent)) return;\n this.agentDisconnected = true;\n this.startAutoRejoin(\n new Error(\"Agent disconnected from the room\"),\n { trigger: \"agent_disconnected\" },\n );\n });\n }\n });\n this.room.on(RoomEvent.SignalReconnecting, () => this.handleLiveKitReconnecting());\n this.room.on(RoomEvent.Reconnecting, () => this.handleLiveKitReconnecting());\n this.room.on(RoomEvent.Reconnected, () => {\n void this.handleLiveKitReconnected();\n });\n this.room.on(RoomEvent.Disconnected, (reason) => {\n this.handleLiveKitDisconnected(reason);\n });\n this.room.on(RoomEvent.ConnectionStateChanged, (state) => {\n if (this.sessionEnded || this.terminalSessionError) return;\n if (state === LiveKitConnectionState.Connected) {\n const recovering = this.activeRecovery !== null || this.stateValue === \"resuming\";\n this.setState(\n this.agentReady\n ? \"connected\"\n : recovering\n ? \"resuming\"\n : \"connected_not_ready\",\n );\n }\n });\n this.room.on(RoomEvent.ConnectionQualityChanged, (quality, participant) => {\n if (!participant.isLocal) return;\n this.notifyListeners(\n this.connectionQualityListeners,\n quality as ConnectionQuality,\n );\n });\n this.room.on(RoomEvent.TrackSubscribed, (track) => {\n if (track.kind !== Track.Kind.Audio) return;\n const element = track.attach();\n element.dataset.voxevolvRemoteAudio = \"true\";\n element.style.display = \"none\";\n document.body.appendChild(element);\n try {\n const playback = element.play();\n void playback.catch((error) => {\n this.notifyListeners(this.audioPlaybackBlockedListeners, {\n error,\n element,\n track: track.mediaStreamTrack,\n });\n });\n } catch (error) {\n this.notifyListeners(this.audioPlaybackBlockedListeners, {\n error,\n element,\n track: track.mediaStreamTrack,\n });\n }\n const stream = new MediaStream([track.mediaStreamTrack]);\n this.remoteAudioStreams.set(track, stream);\n this.outputStream.addTrack(track.mediaStreamTrack);\n this.notifyRemoteAudioListeners(this.remoteAudioTrackListeners, track.mediaStreamTrack, stream);\n this.remoteAudioTrackResolve?.();\n });\n this.room.on(RoomEvent.TrackUnsubscribed, (track) => {\n if (track.kind !== Track.Kind.Audio) return;\n const stream = this.remoteAudioStreams.get(track) ?? new MediaStream([track.mediaStreamTrack]);\n this.notifyRemoteAudioListeners(\n this.remoteAudioTrackUnsubscribedListeners,\n track.mediaStreamTrack,\n stream,\n );\n this.remoteAudioStreams.delete(track);\n this.outputMediaStream?.removeTrack(track.mediaStreamTrack);\n track.detach().forEach((element) => element.remove());\n });\n this.room.on(RoomEvent.DataReceived, (data, _participant, kind, topic) => {\n if (topic !== \"voxevolv.events\" || kind !== DataPacket_Kind.RELIABLE) return;\n let value: unknown;\n try {\n value = JSON.parse(new TextDecoder().decode(data));\n } catch {\n // Ignore data from other room participants that is not a VoxEvolv envelope.\n return;\n }\n if (!isRealtimeEvent(value)) return;\n const result = this.cursor.accept(value);\n if (result.gap) {\n this.notifyListeners(this.gapListeners, result.gap);\n void this.replay(this.apiBase, result.gap.after_server_seq);\n }\n if (!result.deliver) return;\n this.observeReadiness(value);\n this.observeCommandResult(value);\n this.observeConvenienceEvents(value);\n this.notifyListeners(this.listeners, value);\n });\n }\n\n private handleLiveKitReconnecting(): void {\n if (this.sessionEnded || this.disconnectMode === \"intentional\") return;\n this.agentReady = false;\n // Once full rejoin owns recovery, late LiveKit reconnect notifications\n // from the old transport must not move the wrapper back to reconnecting.\n // Doing so makes connectWithMode() reject the replacement connection.\n if (\n this.autoRejoinPromise !== null\n || this.activeRecovery?.strategy === \"rejoin\"\n || this.disconnectMode === \"rejoin\"\n ) {\n this.setState(\"resuming\");\n return;\n }\n this.contextGeneration += 1;\n this.livekitResumeController?.abort(new Error(\"LiveKit connection interrupted again\"));\n this.livekitResumeController = null;\n this.replacementContext.pause();\n this.reconnectStartedAt ??= Date.now();\n this.rejectPendingCommands(\n new Error(\"Connection interrupted before command completion\"),\n true,\n );\n if (this.activeRecovery === null) {\n this.beginRecovery(\"livekit\", 1, { trigger: \"livekit_reconnecting\" });\n this.recordDiagnostic({ operation: \"connection_recovery\", stage: \"room_connect\", status: \"started\" });\n }\n this.setState(\"reconnecting\");\n }\n\n private async handleLiveKitReconnected(): Promise<void> {\n if (\n this.sessionEnded || this.disconnectMode\n || this.autoRejoinPromise || this.livekitResumeController\n ) return;\n const generation = this.contextGeneration;\n const controller = new AbortController();\n this.livekitResumeController = controller;\n const recoveredAt = Date.now();\n if (this.reconnectStartedAt !== null) {\n this.pendingReconnect = {\n started_at: new Date(this.reconnectStartedAt).toISOString(),\n recovered_at: new Date(recoveredAt).toISOString(),\n duration_ms: Math.max(recoveredAt - this.reconnectStartedAt, 0),\n };\n this.reconnectStartedAt = null;\n }\n if (this.hasConnectedValue && this.activeRecovery === null) {\n this.beginRecovery(\"livekit\", 1, { trigger: \"livekit_reconnecting\" });\n }\n this.recordDiagnostic({\n operation: \"connection_recovery\", stage: \"room_connect\", status: \"succeeded\",\n duration_ms: Math.max(Date.now() - (this.recoveryStartedAt ?? Date.now()), 0),\n });\n this.connectionId = `conn_${Math.random().toString(36).slice(2)}_${Date.now().toString(36)}`;\n this.clientSeq = 0;\n this.setState(this.hasConnectedValue ? \"resuming\" : \"connected_not_ready\");\n try {\n await this.measureRecoveryStage(\"hello\", () => this.sendRecoveryHello(controller.signal));\n const deadline = Date.now() + this.recoveryReadiness.readyTimeoutMs;\n await this.measureRecoveryStage(\n \"agent_ready\",\n () => this.waitForAgentReady(Math.max(deadline - Date.now(), 0), controller.signal),\n );\n if (this.recoveryReadiness.waitForRemoteAudio) {\n await this.measureRecoveryStage(\n \"remote_audio\", () => this.waitForRemoteAudioTrack(deadline, controller.signal),\n );\n }\n if (this.sessionEnded || generation !== this.contextGeneration) return;\n this.resumeContextDelivery(true);\n if (this.sessionEnded || generation !== this.contextGeneration) return;\n this.setState(\"connected\");\n this.completeRecovery();\n } catch (error) {\n if (controller.signal.aborted || this.sessionEnded || generation !== this.contextGeneration) return;\n const normalizedError = toError(error);\n if (this.shouldAutoRejoin()) {\n this.startAutoRejoin(normalizedError, { trigger: \"livekit_resume_failed\" });\n } else {\n this.failRecovery(normalizedError);\n this.setState(\"failed\");\n }\n } finally {\n if (this.livekitResumeController === controller) this.livekitResumeController = null;\n }\n }\n\n private handleLiveKitDisconnected(reason?: DisconnectReason): void {\n this.agentReady = false;\n if (this.disconnectMode !== \"rejoin\") {\n this.pendingReconnect = null;\n }\n // Drop any remaining remote tracks so a stale, ended track cannot\n // satisfy the next connect()'s wait for agent audio.\n this.outputMediaStream?.getTracks().forEach((track) => {\n this.outputMediaStream?.removeTrack(track);\n });\n this.rejectPendingCommands(new Error(\"Session disconnected before command completion\"));\n\n if (this.disconnectMode === \"rejoin\") return;\n if (this.disconnectMode === \"connect_failure\") return;\n if (this.disconnectMode === \"intentional\") {\n this.activeRecovery = null;\n this.deliverPendingEndEvent();\n this.setState(\"disconnected\");\n return;\n }\n if (this.terminalSessionError) return;\n if (this.shouldAutoRejoin(reason)) {\n this.startAutoRejoin(\n new Error(`LiveKit disconnected (${disconnectReasonName(reason)})`),\n { trigger: \"livekit_disconnected\" },\n );\n return;\n }\n if (this.activeRecovery !== null) {\n this.failRecovery(\n new Error(`LiveKit disconnected (${disconnectReasonName(reason)})`),\n );\n }\n this.deliverPendingEndEvent();\n this.setState(\"disconnected\");\n }\n\n // The terminal session.ended event is recorded durably after room teardown,\n // so turn the earlier live announcement into the browser completion signal.\n private deliverPendingEndEvent(): void {\n const ending = this.pendingEndEvent;\n if (!ending) return;\n this.pendingEndEvent = null;\n this.notifyEnded({ ...ending, type: \"session.ended\" });\n }\n\n private finishPendingEnd(): void {\n this.deliverPendingEndEvent();\n // The agent can leave while the browser remains in the room. Close that\n // transport ourselves, after notifying the application of the true reason.\n void this.disconnect().catch(() => {});\n }\n\n private async recoverSessionEnd(apiBase: string, signal?: AbortSignal): Promise<boolean> {\n const controller = new AbortController();\n const cancel = () => controller.abort(signal?.reason);\n signal?.addEventListener(\"abort\", cancel, { once: true });\n if (signal?.aborted) cancel();\n const timeout = globalThis.setTimeout(() => controller.abort(), 5_000);\n try {\n // A later live event may have advanced the cursor past a missed ending.\n // Replay from the start; event IDs suppress already delivered messages.\n await this.fetchReplay(apiBase, 0, { signal: controller.signal, terminalOnly: true });\n } catch {\n // A 409 also covers failed sessions. Without an authoritative ending,\n // retain the original HTTP failure rather than invent a normal end.\n } finally {\n globalThis.clearTimeout(timeout);\n signal?.removeEventListener(\"abort\", cancel);\n }\n if (!this.sessionEnded || this.terminalSessionError) return false;\n this.finishPendingEnd();\n return true;\n }\n\n private notifyEnded(event: RealtimeEvent): void {\n if (this.endNotificationDelivered) return;\n this.endNotificationDelivered = true;\n this.notifyListeners(this.endedListeners, event);\n }\n\n private beginRecovery(\n strategy: ActiveRecovery[\"strategy\"],\n attempt: number,\n details: RecoveryDetails,\n ): void {\n this.recoveryStartedAt ??= Date.now();\n this.activeRecovery = { strategy, attempt, details };\n this.recordDiagnostic({\n operation: \"connection_recovery\",\n status: \"started\",\n reason: details.trigger,\n message_id: details.messageId,\n context_key: details.contextKey,\n timeout_ms: details.timeoutMs,\n retry_count: attempt - 1,\n });\n this.flushDiagnostics(\"recovery_started\");\n this.notifyListeners(this.recoveryListeners, {\n status: \"started\",\n strategy,\n attempt,\n ...details,\n });\n }\n\n private completeRecovery(): void {\n const recovery = this.activeRecovery;\n if (!recovery) return;\n this.recordDiagnostic({\n operation: \"connection_recovery\", stage: \"complete\", status: \"succeeded\",\n duration_ms: Math.max(Date.now() - (this.recoveryStartedAt ?? Date.now()), 0),\n retry_count: recovery.attempt - 1,\n reason: recovery.details.trigger,\n });\n this.flushDiagnostics(\"recovery_completed\");\n this.recoveryStartedAt = null;\n this.activeRecovery = null;\n this.notifyListeners(this.recoveryListeners, {\n status: \"succeeded\",\n strategy: recovery.strategy,\n attempt: recovery.attempt,\n ...recovery.details,\n });\n }\n\n private failRecovery(error: Error): void {\n const recovery = this.activeRecovery;\n if (!recovery) return;\n this.recordDiagnostic({\n operation: \"connection_recovery\", stage: \"complete\", status: \"failed\",\n duration_ms: Math.max(Date.now() - (this.recoveryStartedAt ?? Date.now()), 0),\n retry_count: recovery.attempt - 1,\n reason: recovery.details.trigger,\n });\n this.flushDiagnostics(\"recovery_failed\");\n this.activeRecovery = null;\n this.notifyListeners(this.recoveryListeners, {\n status: \"failed\",\n strategy: recovery.strategy,\n attempt: recovery.attempt,\n ...recovery.details,\n error,\n });\n }\n\n private shouldAutoRejoin(reason?: DisconnectReason): boolean {\n return (\n this.autoRejoinOptions !== null\n && this.hasConnectedValue\n && !this.sessionEnded\n && ![\"disconnected\", \"failed\"].includes(this.stateValue)\n && !isTerminalDisconnectReason(reason)\n );\n }\n\n private startAutoRejoin(initialError: Error, details: RecoveryDetails): void {\n if (this.autoRejoinPromise || !this.shouldAutoRejoin()) return;\n // Include time spent offline before the first token request can start.\n this.recoveryStartedAt ??= Date.now();\n this.agentReady = false;\n this.contextGeneration += 1;\n this.livekitResumeController?.abort(initialError);\n this.replacementContext.pause();\n this.rejectPendingCommands(initialError);\n this.reconnectStartedAt ??= Date.now();\n const controller = new AbortController();\n this.autoRejoinController = controller;\n const timeout = globalThis.setTimeout(() => {\n if (controller.signal.aborted) return;\n const error = new Error(\"Session recovery timed out\");\n controller.abort(error);\n this.contextGeneration += 1;\n this.rejectPendingCommands(error);\n this.replacementContext.clear(error);\n this.failRecovery(error);\n this.setState(\"failed\");\n }, this.autoRejoinOptions!.timeoutMs);\n const promise = this.runAutoRejoin(initialError, controller.signal, details)\n .finally(() => {\n globalThis.clearTimeout(timeout);\n if (this.autoRejoinController === controller) {\n this.autoRejoinController = null;\n this.autoRejoinPromise = null;\n }\n });\n this.autoRejoinPromise = promise;\n void promise;\n }\n\n private async runAutoRejoin(\n initialError: Error,\n signal: AbortSignal,\n details: RecoveryDetails,\n ): Promise<void> {\n const options = this.autoRejoinOptions;\n if (!options) return;\n let lastError = initialError;\n if (this.activeRecovery?.strategy === \"livekit\") {\n this.failRecovery(initialError);\n }\n this.setState(\"resuming\");\n for (let attempt = 1; attempt <= options.maxAttempts; attempt += 1) {\n try {\n await waitUntilOnline(signal);\n if (attempt > 1) {\n const exponentialDelay = options.baseDelayMs * (2 ** (attempt - 2));\n const delayMs = Math.min(exponentialDelay, options.maxDelayMs);\n await abortableDelay(delayMs + Math.random() * Math.min(delayMs, 500), signal);\n }\n throwIfAborted(signal);\n this.beginRecovery(\"rejoin\", attempt, details);\n await this.performRejoin(this.apiBase, { signal });\n if (this.sessionEnded) return;\n throwIfAborted(signal);\n this.reconnectStartedAt = null;\n this.completeRecovery();\n return;\n } catch (error) {\n if (signal.aborted) return;\n lastError = toError(error);\n if (isTerminalRejoinError(error)) break;\n }\n }\n this.failRecovery(lastError);\n this.replacementContext.clear(lastError);\n this.setState(\"failed\");\n }\n\n private cancelRecovery(): void {\n this.livekitResumeController?.abort();\n this.livekitResumeController = null;\n this.recoveryStartedAt = null;\n this.autoRejoinController?.abort();\n this.autoRejoinController = null;\n this.manualRejoinController?.abort();\n this.manualRejoinController = null;\n this.autoRejoinPromise = null;\n this.activeRecovery = null;\n }\n\n private notifyListeners<T>(listeners: ReadonlySet<(value: T) => void>, value: T): void {\n for (const listener of listeners) {\n try {\n listener(value);\n } catch (error) {\n console.error(\"VoxEvolv event listener failed\", error);\n }\n }\n }\n\n private notifyRemoteAudioListeners(\n listeners: ReadonlySet<RemoteAudioTrackListener>,\n track: MediaStreamTrack,\n stream: MediaStream,\n ): void {\n for (const listener of listeners) {\n try {\n listener(track, stream);\n } catch (error) {\n console.error(\"VoxEvolv remote audio listener failed\", error);\n }\n }\n }\n\n private validateAudioOptions(\n microphone: boolean,\n audioTrack: MediaStreamTrack | null,\n ): void {\n if (microphone && audioTrack) {\n throw new SessionConfigurationError(\"microphone and audioTrack cannot both be enabled\");\n }\n if (!audioTrack) return;\n if (audioTrack.kind !== \"audio\") {\n throw new SessionConfigurationError(\"audioTrack must be an audio MediaStreamTrack\");\n }\n if (audioTrack.readyState === \"ended\") {\n throw new SessionConfigurationError(\"audioTrack has already ended\");\n }\n }\n\n private async measureRecoveryStage<T>(\n stage: RecoveryStage,\n operation: () => Promise<T>,\n recovering = true,\n ): Promise<T> {\n if (!recovering) return operation();\n const startedAt = Date.now();\n this.recordDiagnostic({ operation: \"connection_recovery\", stage, status: \"started\" });\n try {\n const result = await operation();\n this.recordDiagnostic({\n operation: \"connection_recovery\", stage, status: \"succeeded\",\n duration_ms: Date.now() - startedAt,\n });\n return result;\n } catch (error) {\n this.recordDiagnostic({\n operation: \"connection_recovery\", stage, status: \"failed\",\n duration_ms: Date.now() - startedAt,\n reason: error instanceof RecoveryDataChannelStalledError ? \"data_channel_stalled\" : \"stage_failed\",\n });\n this.flushDiagnostics(\"recovery_stage_failed\");\n throw error;\n }\n }\n\n private async fetchRoomToken(\n apiBase: string,\n signal?: AbortSignal,\n recovering = true,\n ): Promise<Response> {\n const controller = new AbortController();\n const cancel = () => controller.abort(signal?.reason);\n signal?.addEventListener(\"abort\", cancel, { once: true });\n const timeout = globalThis.setTimeout(() => controller.abort(), 10_000);\n const startedAt = Date.now();\n if (recovering) {\n this.recordDiagnostic({ operation: \"connection_recovery\", stage: \"token_request\", status: \"started\" });\n }\n try {\n throwIfAborted(signal);\n const response = await raceWithAbort(this.fetcher(`${apiBase}/sessions/${this.id}/room-tokens`, {\n method: \"POST\",\n headers: { Authorization: `Bearer ${this.accessToken}` },\n credentials: this.lifecycleCredentials,\n signal: controller.signal,\n }), controller.signal);\n if (recovering) {\n this.recordDiagnostic({\n operation: \"connection_recovery\", stage: \"token_request\",\n status: response.ok ? \"succeeded\" : \"failed\", http_status: response.status,\n duration_ms: Date.now() - startedAt,\n });\n if (!response.ok) this.flushDiagnostics(\"recovery_stage_failed\");\n }\n return response;\n } catch (error) {\n if (recovering) {\n this.recordDiagnostic({\n operation: \"connection_recovery\", stage: \"token_request\", status: \"failed\",\n duration_ms: Date.now() - startedAt,\n reason: signal?.aborted ? \"cancelled\" : controller.signal.aborted ? \"request_timeout\" : \"request_failed\",\n });\n this.flushDiagnostics(\"recovery_stage_failed\");\n }\n throw error;\n } finally {\n globalThis.clearTimeout(timeout);\n signal?.removeEventListener(\"abort\", cancel);\n }\n }\n\n private async refreshCredentials(signal?: AbortSignal): Promise<void> {\n if (!this.refreshCredentialsCallback) return;\n throwIfAborted(signal);\n const connectionGeneration = this.contextGeneration;\n const refreshGeneration = ++this.credentialRefreshGeneration;\n const refreshed = await raceWithAbort(this.refreshCredentialsCallback(), signal);\n throwIfAborted(signal);\n if (\n connectionGeneration !== this.contextGeneration\n || refreshGeneration !== this.credentialRefreshGeneration\n ) {\n throw new Error(\"Credential refresh was superseded\");\n }\n validateSessionCredentials(refreshed);\n if (refreshed.id !== this.id) {\n throw new Error(\"Refreshed credentials belong to a different session\");\n }\n this.accessToken = refreshed.access_token;\n this.credentials = refreshed.connection;\n }\n\n private async finishSessionFailure(error: Error): Promise<void> {\n this.sessionEnded = true;\n this.contextGeneration += 1;\n this.rejectPendingCommands(error);\n this.replacementContext.clear(error);\n this.failRecovery(error);\n this.cancelRecovery();\n this.disconnectMode = \"connect_failure\";\n try {\n await this.room.disconnect();\n } finally {\n this.disconnectMode = null;\n this.setState(\"failed\");\n }\n }\n\n private observeConvenienceEvents(event: RealtimeEvent): void {\n if (event.type === \"session.error\") {\n // Teardown errors must not overwrite an already announced normal ending.\n if (this.sessionEnded) return;\n const error = new SessionErrorEventError(event);\n // Retryability applies to an active startup attempt. Once connected,\n // a durable session.error means the server has failed the session.\n if (error.retryable && this.startupAttemptController) {\n this.startupAttemptController.abort(error);\n } else {\n this.terminalSessionError = error;\n this.abortStartupConnect(error);\n // Startup owns its aborted attempt's cleanup. An established session\n // needs to release media and settle recovery immediately on failure.\n if (!this.startupConnectController) {\n void this.finishSessionFailure(error).catch(() => {});\n }\n }\n }\n if (event.type === \"session.ending\" || event.type === \"session.ended\") {\n // A worker shutdown event can follow a durable session.error. The server\n // retains FAILED in that case, so it must not become a normal completion.\n if (this.terminalSessionError) return;\n this.abortStartupConnect(new Error(\"Session ended during startup\"));\n this.contextGeneration += 1;\n this.rejectPendingCommands(new Error(\"Session ended\"));\n this.failRecovery(new Error(\"Session ended during recovery\"));\n }\n if (event.type === \"session.ending\") {\n // The server announced an intentional hang-up before tearing down the\n // room, so the coming disconnect must not fail recovery or auto-rejoin.\n this.sessionEnded = true;\n this.cancelRecovery();\n this.replacementContext.clear(new Error(\"Session ended\"));\n // Match the server's first terminal outcome, even if teardown announces\n // another ending before the agent has left the room.\n this.pendingEndEvent ??= event;\n if (\n !this.hasConnectedValue\n || this.agentDisconnected\n || this.room.state === LiveKitConnectionState.Disconnected\n ) {\n this.finishPendingEnd();\n }\n }\n if (event.type === \"session.ended\") {\n const ending = this.pendingEndEvent;\n this.pendingEndEvent = null;\n this.sessionEnded = true;\n this.replacementContext.clear(new Error(\"Session ended\"));\n this.cancelRecovery();\n this.notifyEnded(ending ? { ...ending, type: \"session.ended\" } : event);\n void this.disconnect().catch(() => {});\n }\n if (event.type.endsWith(\".error\")) this.notifyListeners(this.errorListeners, event);\n const message = this.transcriptStore.accept(event);\n if (message) this.notifyListeners(this.transcriptListeners, message);\n const transcript = transcriptEvent(event);\n if (!transcript) return;\n this.notifyListeners(\n transcript.role === \"user\" ? this.userTranscriptListeners : this.agentTranscriptListeners,\n transcript,\n );\n }\n\n private abortStartupConnect(error: Error): void {\n if (!this.startupConnectController?.signal.aborted) {\n this.startupConnectController?.abort(error);\n }\n }\n\n private async publishApplicationAudioTrack(audioTrack: MediaStreamTrack): Promise<void> {\n const clonedTrack = audioTrack.clone();\n let publishedTrack: LocalAudioTrack | null = null;\n try {\n publishedTrack = new LocalAudioTrack(clonedTrack, undefined, true);\n this.localApplicationAudioTrack = publishedTrack;\n if (!this.microphoneEnabled) {\n // LiveKit can re-enable a raw track when wrapping it. Mute the wrapper\n // before publication so recovery cannot briefly transmit muted input.\n await publishedTrack.mute();\n }\n await this.room.localParticipant.publishTrack(publishedTrack, {\n source: Track.Source.Microphone,\n name: \"voxevolv-application-audio\",\n });\n } catch (error) {\n if (this.localApplicationAudioTrack === publishedTrack) {\n this.localApplicationAudioTrack = null;\n }\n clonedTrack.stop();\n throw error;\n }\n }\n\n private async sendHello(): Promise<void> {\n const reconnect = this.pendingReconnect;\n const message = createClientMessage(\n this.connectionId,\n ++this.clientSeq,\n \"client.hello\",\n {\n last_server_seq: this.cursor.lastServerSeq,\n sdk: `@voxevolv/client@${SDK_VERSION}`,\n tool_handlers: [...this.toolHandlers.keys()].sort(),\n ...(reconnect ? { reconnect } : {}),\n },\n );\n this.lastHelloMessageId = message.message_id;\n await this.sendTrackedCommand(message, CLIENT_HELLO_TIMEOUT_MS);\n if (this.pendingReconnect === reconnect) this.pendingReconnect = null;\n }\n\n private async sendRecoveryHello(signal?: AbortSignal): Promise<void> {\n throwIfAborted(signal);\n let previousBytes = this.reliableDataChannelBufferedBytes();\n let lastProgressAt = Date.now();\n let timer: ReturnType<typeof globalThis.setTimeout> | undefined;\n const stalled = new Promise<never>((_resolve, reject) => {\n const checkProgress = () => {\n const bufferedBytes = this.reliableDataChannelBufferedBytes();\n if (\n bufferedBytes === undefined || bufferedBytes === 0\n || previousBytes === undefined || previousBytes === 0\n || bufferedBytes < previousBytes\n ) {\n lastProgressAt = Date.now();\n } else if (Date.now() - lastProgressAt >= RECOVERY_BUFFER_STALL_MS) {\n reject(new RecoveryDataChannelStalledError());\n return;\n }\n previousBytes = bufferedBytes;\n timer = globalThis.setTimeout(checkProgress, RECOVERY_BUFFER_POLL_MS);\n };\n timer = globalThis.setTimeout(checkProgress, RECOVERY_BUFFER_POLL_MS);\n });\n try {\n // Initial joins keep their existing deadline. During recovery, positive\n // queued bytes with no draining progress indicate a stuck transport; a\n // slow but draining channel still gets the normal hello deadline.\n await raceWithAbort(Promise.race([this.sendHello(), stalled]), signal);\n } catch (error) {\n if (error instanceof RecoveryDataChannelStalledError) {\n this.rejectPendingCommands(error);\n }\n throw error;\n } finally {\n if (timer !== undefined) globalThis.clearTimeout(timer);\n }\n }\n\n private async sendTrackedCommand(\n message: ClientMessage,\n timeoutMs: number,\n retryTransfer?: () => Promise<void>,\n ): Promise<CommandAckPayload> {\n const contextKey = contextKeyFromMessage(message);\n const payloadBytes = contextPayloadBytes(message.payload);\n const startedAt = Date.now();\n this.recordDiagnostic({\n operation: \"command_send\",\n status: \"started\",\n message_id: message.message_id,\n connection_id: message.connection_id,\n client_seq: message.client_seq,\n context_key: contextKey,\n payload_bytes: payloadBytes,\n retry_count: 0,\n timeout_ms: timeoutMs,\n event_type: diagnosticEventType(message.type),\n });\n let markSettled = () => {};\n const settled = new Promise<void>((resolve) => { markSettled = resolve; });\n const response = new Promise<CommandAckPayload>((resolve, reject) => {\n const timeout = globalThis.setTimeout(() => {\n const pending = this.pendingCommands.get(message.message_id);\n if (pending) globalThis.clearTimeout(pending.retry);\n pending?.markSettled();\n this.pendingCommands.delete(message.message_id);\n const detail = `Command ${message.type} timed out after ${timeoutMs}ms`;\n const error = message.type === \"context.update\"\n ? new ContextDeliveryError(detail, { retryAfter: pending?.transferSettled })\n : new Error(detail);\n this.recordDiagnostic({\n operation: \"command_send\",\n status: \"timed_out\",\n reason: message.type === \"context.update\"\n ? \"context_command_timeout\"\n : \"command_timeout\",\n message_id: message.message_id,\n connection_id: message.connection_id,\n client_seq: message.client_seq,\n context_key: contextKey,\n payload_bytes: payloadBytes,\n duration_ms: Date.now() - startedAt,\n retry_count: pending?.retryCount ?? 0,\n timeout_ms: timeoutMs,\n event_type: diagnosticEventType(message.type),\n });\n this.flushDiagnostics(\"command_timeout\");\n reject(error);\n }, timeoutMs);\n this.pendingCommands.set(\n message.message_id,\n {\n commandType: message.type,\n message,\n startedAt,\n contextKey,\n payloadBytes,\n retryCount: 0,\n publishQueued: false,\n resolve,\n reject,\n timeout,\n settled,\n markSettled,\n retryTransfer,\n transferRetrying: false,\n transferRetryRequested: false,\n },\n );\n this.scheduleCommandRetry(message);\n });\n void this.publishCommandAttempt(message, false).catch(() => {\n // The reliable data channel may still be warming immediately after a\n // reconnect. Keep the command pending so the retry timer can publish\n // it once the transport accepts writes, or reject at the normal timeout.\n });\n return response;\n }\n\n private scheduleCommandRetry(message: ClientMessage): void {\n const pending = this.pendingCommands.get(message.message_id);\n if (!pending) return;\n const delayMs = message.type === \"context.update\"\n ? contextRetryDelay(pending.retryCount + 1)\n : 500;\n pending.retry = globalThis.setTimeout(() => {\n void this.retryCommand(message).finally(() => this.scheduleCommandRetry(message));\n }, delayMs);\n }\n\n private async retryCommand(message: ClientMessage): Promise<void> {\n const pending = this.pendingCommands.get(message.message_id);\n if (!pending) return;\n if (message.type === \"context.update\" && (\n this.sessionEnded || [\"reconnecting\", \"resuming\", \"disconnected\", \"failed\"].includes(this.stateValue)\n )) return;\n try {\n if (pending.transferRetryRequested && pending.retryTransfer) {\n pending.transferRetryRequested = false;\n pending.transferRetrying = true;\n const transfer = pending.retryTransfer();\n pending.transferSettled = transfer.then(() => {}, () => {});\n if (pending.contextKey) {\n this.replacementContext.blockUntilTransferSettles(pending.contextKey, pending.transferSettled);\n }\n await Promise.race([transfer, pending.settled]);\n }\n await this.publishCommandAttempt(message, true);\n } catch {\n // Failed writes retain their original deadline and retry with backoff.\n } finally {\n pending.transferRetrying = false;\n }\n }\n\n private publishCommandAttempt(message: ClientMessage, retrying: boolean): Promise<void> {\n const pending = this.pendingCommands.get(message.message_id);\n if (!pending || pending.publishQueued) return Promise.resolve();\n pending.publishQueued = true;\n // Context keys drain independently, but client_seq is global. Serialize the\n // asynchronous LiveKit publish boundary so a later sequence cannot overtake\n // an earlier one before the reliable data channel receives it.\n const attempt = this.commandPublishTail\n .then(() => this.publishCommandAttemptNow(message, retrying))\n .finally(() => {\n const current = this.pendingCommands.get(message.message_id);\n if (current === pending) current.publishQueued = false;\n });\n this.commandPublishTail = attempt.catch(() => {});\n return attempt;\n }\n\n private async publishCommandAttemptNow(\n message: ClientMessage,\n retrying: boolean,\n ): Promise<void> {\n const pending = this.pendingCommands.get(message.message_id);\n if (!pending) return;\n if (retrying) {\n pending.retryCount += 1;\n this.recordDiagnostic({\n operation: \"command_send\",\n status: \"retrying\",\n message_id: message.message_id,\n connection_id: message.connection_id,\n client_seq: message.client_seq,\n context_key: pending.contextKey,\n payload_bytes: pending.payloadBytes,\n retry_count: pending.retryCount,\n event_type: diagnosticEventType(message.type),\n });\n }\n const attemptStartedAt = Date.now();\n try {\n let publishFinished = false;\n const publish = this.publishCommand(message).then(() => { publishFinished = true; });\n await Promise.race([publish, pending.settled]);\n if (!publishFinished) return;\n } catch (error) {\n this.recordDiagnostic({\n operation: \"command_send\",\n status: \"failed\",\n reason: \"command_publish_failed\",\n message_id: message.message_id,\n connection_id: message.connection_id,\n client_seq: message.client_seq,\n context_key: pending.contextKey,\n payload_bytes: pending.payloadBytes,\n duration_ms: Date.now() - attemptStartedAt,\n retry_count: pending.retryCount,\n event_type: diagnosticEventType(message.type),\n });\n this.flushDiagnostics(\"command_failed\");\n throw error;\n }\n const durationMs = Date.now() - attemptStartedAt;\n this.recordDiagnostic({\n operation: \"command_send\",\n status: \"succeeded\",\n message_id: message.message_id,\n connection_id: message.connection_id,\n client_seq: message.client_seq,\n context_key: pending.contextKey,\n payload_bytes: pending.payloadBytes,\n duration_ms: durationMs,\n retry_count: pending.retryCount,\n event_type: diagnosticEventType(message.type),\n });\n if (durationMs > 2_000) this.flushDiagnostics(\"slow_operation\");\n }\n\n private async publishCommand(message: ClientMessage): Promise<void> {\n await this.room.localParticipant.publishData(\n new TextEncoder().encode(JSON.stringify(message)),\n { reliable: true, topic: \"voxevolv.commands\" },\n );\n }\n\n private startDiagnosticLoopMonitor(): void {\n if (this.diagnosticLoopTimer !== undefined) return;\n this.diagnosticLoopExpectedAt = performance.now() + 1_000;\n this.diagnosticLoopTimer = globalThis.setInterval(() => {\n const now = performance.now();\n this.diagnosticLoopDelayMs = Math.max(0, now - this.diagnosticLoopExpectedAt);\n this.diagnosticLoopExpectedAt = now + 1_000;\n }, 1_000);\n (this.diagnosticLoopTimer as unknown as { unref?: () => void }).unref?.();\n }\n\n private recordDiagnostic(entry: ClientDiagnosticInput): void {\n const snapshot: ClientDiagnosticInput = {\n ...entry,\n connection_state: this.stateValue,\n buffered_bytes: this.reliableDataChannelBufferedBytes(),\n };\n if (entry.operation === \"tool_rpc\") {\n snapshot.page_visibility = globalThis.document?.visibilityState;\n snapshot.active_context_transfers = this.activeContextTransfers;\n snapshot.active_context_bytes = this.activeContextBytes;\n if (this.diagnosticLoopTimer !== undefined) {\n snapshot.event_loop_delay_ms = Math.max(\n this.diagnosticLoopDelayMs ?? 0, performance.now() - this.diagnosticLoopExpectedAt,\n );\n }\n }\n this.diagnostics.record(snapshot);\n }\n\n private reliableDataChannelBufferedBytes(): number | undefined {\n try {\n const bufferedAmount = this.room.engine.dataChannelForKind(0)?.bufferedAmount;\n return typeof bufferedAmount === \"number\" ? bufferedAmount : undefined;\n } catch {\n return undefined;\n }\n }\n\n private flushDiagnostics(trigger: string): void {\n void this.diagnostics.flush(trigger, (report) => this.postDiagnostics(report));\n }\n\n private async postDiagnostics(report: ClientDiagnosticReport): Promise<void> {\n const controller = new AbortController();\n let timeout: ReturnType<typeof globalThis.setTimeout> | undefined;\n const timeoutExpired = new Promise<never>((_resolve, reject) => {\n timeout = globalThis.setTimeout(() => {\n controller.abort();\n reject(new Error(\n `Diagnostic report timed out after ${this.diagnosticReportTimeoutMs}ms`,\n ));\n }, this.diagnosticReportTimeoutMs);\n });\n try {\n const upload = async (): Promise<void> => {\n const response = await this.fetcher(`${this.apiBase}/sessions/${this.id}/diagnostics`, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n credentials: this.lifecycleCredentials,\n body: JSON.stringify(report),\n signal: controller.signal,\n keepalive: true,\n });\n const body = await response.json().catch(() => null) as {\n report_id?: string; retry_after_ms?: number;\n } | null;\n if (!response.ok) {\n const retryable = response.status === 408 || response.status === 429 || response.status >= 500;\n const headerDelay = Number(response.headers.get(\"Retry-After\")) * 1000;\n const retryAfterMs = typeof body?.retry_after_ms === \"number\"\n ? body.retry_after_ms : headerDelay;\n throw new DiagnosticDeliveryError(\n `Diagnostic report failed (${response.status})`,\n retryable,\n Number.isFinite(retryAfterMs) ? Math.max(retryAfterMs, 0) : 0,\n );\n }\n if (body?.report_id !== report.report_id) {\n throw new DiagnosticDeliveryError(\"Diagnostic report was not acknowledged\");\n }\n };\n // The receipt body is part of the timeout too, not just the response headers.\n await Promise.race([upload(), timeoutExpired]);\n } finally {\n if (timeout !== undefined) globalThis.clearTimeout(timeout);\n }\n }\n\n private waitForRemoteAudioTrack(deadline: number, signal?: AbortSignal): Promise<void> {\n if ((this.outputMediaStream?.getAudioTracks().length ?? 0) > 0) return Promise.resolve();\n throwIfAborted(signal);\n return new Promise((resolve, reject) => {\n const cleanup = () => {\n globalThis.clearTimeout(timeout);\n signal?.removeEventListener(\"abort\", onAbort);\n this.remoteAudioTrackResolve = null;\n };\n const timeout = globalThis.setTimeout(() => {\n cleanup();\n reject(new Error(\n \"Agent audio track did not arrive within the ready timeout;\"\n + \" pass waitForRemoteAudio: false to resolve connect() on signaling readiness alone\",\n ));\n }, Math.max(deadline - Date.now(), 0));\n const onAbort = () => {\n cleanup();\n reject(abortError(signal!));\n };\n this.remoteAudioTrackResolve = () => {\n cleanup();\n resolve();\n };\n signal?.addEventListener(\"abort\", onAbort, { once: true });\n });\n }\n\n private waitForAgentReady(timeoutMs: number, signal?: AbortSignal): Promise<void> {\n if (this.agentReady) return Promise.resolve();\n throwIfAborted(signal);\n return new Promise((resolve, reject) => {\n const cleanup = () => {\n globalThis.clearTimeout(timeout);\n signal?.removeEventListener(\"abort\", onAbort);\n this.readyResolve = null;\n };\n const timeout = globalThis.setTimeout(() => {\n cleanup();\n reject(new Error(`Agent did not become ready within ${timeoutMs}ms`));\n }, timeoutMs);\n const onAbort = () => {\n cleanup();\n reject(abortError(signal!));\n };\n this.readyResolve = () => {\n cleanup();\n resolve();\n };\n signal?.addEventListener(\"abort\", onAbort, { once: true });\n });\n }\n\n private observeReadiness(event: RealtimeEvent): void {\n // Replayed readiness describes an old worker, not the current transport.\n if (event.stream_id === \"durable-replay\") return;\n const payload = event.payload as Record<string, unknown>;\n const snapshotReady = event.type === \"agent.snapshot\"\n && payload.status === \"ready\"\n && payload.connection_id === this.connectionId\n && payload.ack_message_id === this.lastHelloMessageId;\n if (event.type !== \"agent.ready\" && !snapshotReady) return;\n if (this.agentStreamId && this.agentStreamId !== event.stream_id && !this.activeRecovery) {\n this.startAutoRejoin(\n new Error(\"Agent worker was replaced\"),\n { trigger: \"worker_replaced\" },\n );\n return;\n }\n this.agentStreamId = event.stream_id;\n this.agentDisconnected = false;\n const wasReady = this.agentReady;\n this.agentReady = true;\n // connect/reconnect owns the transition after hello and audio are ready.\n // Context restoration proceeds independently in the background.\n this.readyResolve?.();\n if (!wasReady) this.notifyListeners(this.readyListeners, event);\n }\n\n private observeCommandResult(event: RealtimeEvent): void {\n if (\n event.type !== \"command.ack\"\n && event.type !== \"command.error\"\n && event.type !== \"context.updated\"\n && event.type !== \"context.rejected\"\n ) return;\n const pending = this.pendingCommands.get(String(event.payload.message_id ?? \"\"));\n if (!pending) return;\n if (event.type === \"command.ack\" && isCommandAckPayload(event.payload)) {\n this.recordCommandResult(pending, event.type, \"acknowledged\");\n globalThis.clearTimeout(pending.timeout);\n globalThis.clearTimeout(pending.retry);\n pending.markSettled();\n this.pendingCommands.delete(event.payload.message_id);\n pending.resolve(event.payload);\n return;\n }\n if (event.type === \"context.updated\" && isContextUpdatedPayload(event.payload)) {\n this.recordCommandResult(pending, event.type, \"acknowledged\");\n globalThis.clearTimeout(pending.timeout);\n globalThis.clearTimeout(pending.retry);\n pending.markSettled();\n this.pendingCommands.delete(event.payload.message_id);\n pending.resolve(event.payload);\n return;\n }\n if (\n (event.type === \"command.error\" && isCommandErrorPayload(event.payload))\n || (event.type === \"context.rejected\" && isContextRejectedPayload(event.payload))\n ) {\n this.recordCommandResult(pending, event.type, \"rejected\", event.payload.code);\n this.flushDiagnostics(\"command_rejected\");\n if (event.type === \"context.rejected\" && event.payload.retryable) {\n if (event.payload.code === \"stream_unavailable\" && pending.retryTransfer && !pending.transferRetrying) {\n pending.transferRetryRequested = true;\n }\n return;\n }\n globalThis.clearTimeout(pending.timeout);\n globalThis.clearTimeout(pending.retry);\n pending.markSettled();\n this.pendingCommands.delete(event.payload.message_id);\n pending.reject(new CommandError(event.payload));\n }\n }\n\n private rejectPendingCommands(error: Error, preserveContext = false): void {\n for (const [messageId, pending] of this.pendingCommands) {\n if (preserveContext && pending.commandType === \"context.update\") continue;\n this.recordCommandResult(\n pending,\n pending.commandType === \"context.update\" ? \"context.rejected\" : \"command.error\",\n \"failed\",\n \"pending_command_cancelled\",\n );\n globalThis.clearTimeout(pending.timeout);\n globalThis.clearTimeout(pending.retry);\n pending.markSettled();\n pending.reject(pending.commandType === \"context.update\"\n ? new ContextDeliveryError(error.message, { cause: error, retryAfter: pending.transferSettled })\n : error);\n this.pendingCommands.delete(messageId);\n }\n }\n\n private recordCommandResult(\n pending: PendingCommand,\n eventType: \"command.ack\" | \"command.error\" | \"context.updated\" | \"context.rejected\",\n status: \"acknowledged\" | \"rejected\" | \"failed\",\n reason?: string,\n ): void {\n const durationMs = Date.now() - pending.startedAt;\n this.recordDiagnostic({\n operation: \"command_result\",\n status,\n reason,\n message_id: pending.message.message_id,\n connection_id: pending.message.connection_id,\n client_seq: pending.message.client_seq,\n context_key: pending.contextKey,\n payload_bytes: pending.payloadBytes,\n duration_ms: durationMs,\n retry_count: pending.retryCount,\n event_type: eventType,\n });\n if (durationMs > 2_000) this.flushDiagnostics(\"slow_operation\");\n }\n\n private async fetchReplay(\n apiBase: string,\n afterSeq: number,\n options: { signal?: AbortSignal; terminalOnly?: boolean } = {},\n ): Promise<void> {\n const { signal, terminalOnly = false } = options;\n let nextAfter = afterSeq;\n while (true) {\n throwIfAborted(signal);\n const url = `${apiBase}/sessions/${this.id}/events?after_seq=${nextAfter}&limit=200`\n + (terminalOnly ? \"&terminal_only=true\" : \"\");\n let response = await raceWithAbort(this.fetcher(\n url,\n {\n headers: { Authorization: `Bearer ${this.accessToken}` },\n credentials: this.lifecycleCredentials,\n signal,\n },\n ), signal);\n if (response.status === 401 && this.refreshCredentialsCallback) {\n await this.refreshCredentials(signal);\n response = await raceWithAbort(this.fetcher(\n url,\n {\n headers: { Authorization: `Bearer ${this.accessToken}` },\n credentials: this.lifecycleCredentials,\n signal,\n },\n ), signal);\n }\n if (!response.ok) {\n throw await raceWithAbort(httpError(response, \"Could not replay session events\"), signal);\n }\n const page = (await raceWithAbort(response.json(), signal)) as {\n items: Array<{\n event_id: string;\n server_seq: number;\n type: string;\n payload: Record<string, unknown>;\n created_at: string;\n }>;\n next_after_seq: number;\n has_more: boolean;\n };\n throwIfAborted(signal);\n for (const stored of page.items) {\n nextAfter = Math.max(nextAfter, stored.server_seq);\n const event: RealtimeEvent = {\n protocol_version: 1,\n event_id: stored.event_id,\n stream_id: \"durable-replay\",\n stream_seq: Math.max(this.cursor.lastStreamSeq, 1),\n server_seq: stored.server_seq,\n ts: stored.created_at,\n type: stored.type,\n payload: stored.payload,\n };\n if (!this.cursor.acceptReplay(event)) continue;\n this.observeReadiness(event);\n this.observeConvenienceEvents(event);\n this.notifyListeners(this.listeners, event);\n }\n nextAfter = Math.max(nextAfter, page.next_after_seq);\n if (!page.has_more) return;\n }\n }\n}\n\nfunction resolveAutoRejoinOptions(\n value: boolean | AutoRejoinOptions | undefined,\n): ResolvedAutoRejoinOptions | null {\n if (!value) return null;\n const options = value === true ? {} : value;\n const resolved = {\n maxAttempts: options.maxAttempts ?? Number.MAX_SAFE_INTEGER,\n baseDelayMs: options.baseDelayMs ?? 750,\n maxDelayMs: options.maxDelayMs ?? 5_000,\n timeoutMs: options.timeoutMs ?? 180_000,\n };\n if (!Number.isFinite(resolved.timeoutMs) || resolved.timeoutMs <= 0) {\n throw new TypeError(\"autoRejoin.timeoutMs must be a positive finite number\");\n }\n if (!Number.isInteger(resolved.maxAttempts) || resolved.maxAttempts < 1) {\n throw new TypeError(\"autoRejoin.maxAttempts must be a positive integer\");\n }\n if (!Number.isFinite(resolved.baseDelayMs) || resolved.baseDelayMs < 0) {\n throw new TypeError(\"autoRejoin.baseDelayMs must be a non-negative finite number\");\n }\n if (!Number.isFinite(resolved.maxDelayMs) || resolved.maxDelayMs < 0) {\n throw new TypeError(\"autoRejoin.maxDelayMs must be a non-negative finite number\");\n }\n return resolved;\n}\n\nfunction resolveStartupRetryOptions(\n value: boolean | StartupRetryOptions | undefined,\n): ResolvedStartupRetryOptions | null {\n if (value === false) return null;\n const options = typeof value === \"object\" ? value : {};\n const attempts = (options.attempts ?? DEFAULT_STARTUP_ATTEMPTS).map((attempt) => ({\n readyTimeoutMs: attempt.readyTimeoutMs,\n delayBeforeMs: attempt.delayBeforeMs ?? 0,\n }));\n const timeoutMs = options.timeoutMs ?? DEFAULT_STARTUP_TIMEOUT_MS;\n\n if (attempts.length === 0) {\n throw new TypeError(\"startupRetry.attempts must contain at least one attempt\");\n }\n for (const attempt of attempts) {\n if (!Number.isFinite(attempt.readyTimeoutMs) || attempt.readyTimeoutMs <= 0) {\n throw new TypeError(\n \"startupRetry.attempts readyTimeoutMs must be a positive finite number\",\n );\n }\n if (!Number.isFinite(attempt.delayBeforeMs) || attempt.delayBeforeMs < 0) {\n throw new TypeError(\n \"startupRetry.attempts delayBeforeMs must be a non-negative finite number\",\n );\n }\n }\n if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {\n throw new TypeError(\"startupRetry.timeoutMs must be a positive finite number\");\n }\n return { attempts, timeoutMs };\n}\n\nfunction isTerminalDisconnectReason(reason?: DisconnectReason): boolean {\n return reason !== undefined && [\n DisconnectReason.CLIENT_INITIATED,\n DisconnectReason.DUPLICATE_IDENTITY,\n DisconnectReason.PARTICIPANT_REMOVED,\n DisconnectReason.ROOM_DELETED,\n DisconnectReason.ROOM_CLOSED,\n DisconnectReason.USER_UNAVAILABLE,\n DisconnectReason.USER_REJECTED,\n ].includes(reason);\n}\n\nfunction disconnectReasonName(reason?: DisconnectReason): string {\n if (reason === undefined) return \"unknown\";\n return DisconnectReason[reason] ?? String(reason);\n}\n\nfunction isTerminalRejoinError(error: unknown): boolean {\n return error instanceof RealtimeSessionHttpError\n && [401, 403, 409].includes(error.status);\n}\n\nfunction isTerminalStartupError(error: unknown): boolean {\n if (error instanceof SessionErrorEventError) return !error.retryable;\n if (error instanceof RealtimeSessionHttpError) {\n return error.status >= 400\n && error.status < 500\n && ![408, 425, 429].includes(error.status);\n }\n // Browser fetch also rejects network failures with TypeError. Only our\n // explicit configuration errors are terminal before transport is established.\n if (error instanceof SessionConfigurationError) return true;\n return error instanceof Error && [\n \"ConstraintNotSatisfiedError\",\n \"DevicesNotFoundError\",\n \"InvalidStateError\",\n \"NotAllowedError\",\n \"NotFoundError\",\n \"NotReadableError\",\n \"NotSupportedError\",\n \"OverconstrainedError\",\n \"SecurityError\",\n \"TrackStartError\",\n ].includes(error.name);\n}\n\nfunction toError(error: unknown): Error {\n return error instanceof Error ? error : new Error(String(error));\n}\n\nfunction abortError(signal: AbortSignal): unknown {\n return signal.reason ?? new DOMException(\"Aborted\", \"AbortError\");\n}\n\nfunction createLinkedAbortController(parentSignal: AbortSignal): AbortController {\n const controller = new AbortController();\n if (parentSignal.aborted) {\n controller.abort(abortError(parentSignal));\n } else {\n parentSignal.addEventListener(\n \"abort\",\n () => controller.abort(abortError(parentSignal)),\n { once: true },\n );\n }\n return controller;\n}\n\nfunction throwIfAborted(signal?: AbortSignal): void {\n if (signal?.aborted) throw abortError(signal);\n}\n\nfunction raceWithAbort<T>(promise: Promise<T>, signal?: AbortSignal): Promise<T> {\n if (!signal) return promise;\n return new Promise((resolve, reject) => {\n let settled = false;\n const resolveOnce = (value: T) => {\n if (settled) return;\n settled = true;\n signal.removeEventListener(\"abort\", onAbort);\n resolve(value);\n };\n const rejectOnce = (error: unknown) => {\n if (settled) return;\n settled = true;\n signal.removeEventListener(\"abort\", onAbort);\n reject(error);\n };\n const onAbort = () => rejectOnce(abortError(signal));\n if (signal.aborted) {\n onAbort();\n } else {\n signal.addEventListener(\"abort\", onAbort, { once: true });\n }\n // Always observe the operation, including when it aborted the signal before\n // returning its promise, so a later rejection cannot escape to the caller.\n promise.then(resolveOnce, rejectOnce);\n });\n}\n\nfunction abortableDelay(delayMs: number, signal: AbortSignal): Promise<void> {\n throwIfAborted(signal);\n if (delayMs <= 0) return Promise.resolve();\n return new Promise((resolve, reject) => {\n const timeout = globalThis.setTimeout(() => {\n signal.removeEventListener(\"abort\", onAbort);\n resolve();\n }, delayMs);\n const onAbort = () => {\n globalThis.clearTimeout(timeout);\n reject(abortError(signal));\n };\n signal.addEventListener(\"abort\", onAbort, { once: true });\n });\n}\n\nfunction waitUntilOnline(signal: AbortSignal): Promise<void> {\n throwIfAborted(signal);\n if (typeof navigator === \"undefined\" || navigator.onLine !== false) {\n return Promise.resolve();\n }\n if (typeof globalThis.addEventListener !== \"function\") return Promise.resolve();\n return new Promise((resolve, reject) => {\n const cleanup = () => {\n globalThis.removeEventListener(\"online\", onOnline);\n signal.removeEventListener(\"abort\", onAbort);\n };\n const onOnline = () => {\n cleanup();\n resolve();\n };\n const onAbort = () => {\n cleanup();\n reject(abortError(signal));\n };\n globalThis.addEventListener(\"online\", onOnline, { once: true });\n signal.addEventListener(\"abort\", onAbort, { once: true });\n });\n}\n\nasync function sha256Hex(data: Uint8Array): Promise<string> {\n if (!globalThis.crypto?.subtle) throw new Error(\"Web Crypto SHA-256 is unavailable\");\n const digest = await globalThis.crypto.subtle.digest(\"SHA-256\", Uint8Array.from(data).buffer);\n return [...new Uint8Array(digest)]\n .map((byte) => byte.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n\nfunction contextStreamId(): string {\n if (globalThis.crypto?.randomUUID) return globalThis.crypto.randomUUID();\n return `ctx_${Date.now().toString(36)}_${Math.random().toString(36).slice(2)}`;\n}\n\nfunction contextUpdateBytes(update: ContextUpdate): number {\n return \"image\" in update\n ? update.image.size\n : new TextEncoder().encode(update.text).byteLength;\n}\n\nfunction contextPayloadBytes(payload: Record<string, unknown>): number | undefined {\n const image = payload.image;\n if (image && typeof image === \"object\" && \"bytes\" in image) {\n const bytes = (image as { bytes?: unknown }).bytes;\n if (typeof bytes === \"number\") return bytes;\n }\n const textStream = payload.text_stream;\n if (textStream && typeof textStream === \"object\" && \"bytes\" in textStream) {\n const bytes = (textStream as { bytes?: unknown }).bytes;\n if (typeof bytes === \"number\") return bytes;\n }\n if (typeof payload.text === \"string\") {\n return new TextEncoder().encode(payload.text).byteLength;\n }\n try {\n return new TextEncoder().encode(JSON.stringify(payload)).byteLength;\n } catch {\n return undefined;\n }\n}\n\nfunction contextKeyFromMessage(message: ClientMessage): string | undefined {\n if (message.type !== \"context.update\") return undefined;\n const key = message.payload.key;\n return typeof key === \"string\" ? key : undefined;\n}\n\nfunction diagnosticEventType(type: string): DiagnosticEventType | undefined {\n return type === \"client.hello\" || type === \"context.update\" ? type : undefined;\n}\n\nfunction validateSessionCredentials(value: SessionCredentials): void {\n if (!value || typeof value !== \"object\") {\n throw new SessionConfigurationError(\"Session credentials must be an object\");\n }\n if (!value.id || !value.access_token || !value.access_token_expires_at) {\n throw new SessionConfigurationError(\"Session credentials are incomplete\");\n }\n if (\n !value.connection\n || !value.connection.url\n || !value.connection.token\n || !value.connection.room_name\n ) {\n throw new SessionConfigurationError(\"Session connection credentials are incomplete\");\n }\n}\n\nfunction normalizeApiBase(value: string): string {\n const normalized = value.trim().replace(/\\/+$/, \"\");\n if (!normalized) {\n throw new SessionConfigurationError(\"apiBase must be a non-root relative path or an absolute URL\");\n }\n return normalized;\n}\n\nfunction transcriptEvent(event: RealtimeEvent): TranscriptEvent | null {\n const match = /^transcript\\.(user|agent)\\.(interim|final)$/.exec(event.type);\n if (!match) return null;\n const text = (event.payload as Record<string, unknown>).text;\n if (typeof text !== \"string\") return null;\n return {\n role: match[1] as \"user\" | \"agent\",\n text,\n final: match[2] === \"final\",\n event,\n };\n}\n\nasync function httpError(response: Response, fallback: string): Promise<RealtimeSessionHttpError> {\n let payload: Record<string, unknown> = {};\n try {\n payload = await response.json() as Record<string, unknown>;\n } catch {\n // The HTTP status and fallback message remain actionable without a JSON body.\n }\n return new RealtimeSessionHttpError(\n typeof payload.message === \"string\" ? payload.message : `${fallback} (${response.status})`,\n {\n status: response.status,\n code: typeof payload.error === \"string\" ? payload.error : null,\n requestId: typeof payload.request_id === \"string\" ? payload.request_id : null,\n details: Array.isArray(payload.details) ? payload.details : [],\n },\n );\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["TranscriptStore", "CommandError", "EventCursor", "createClientMessage", "isCommandAckPayload", "isCommandErrorPayload", "isContextRejectedPayload", "isContextUpdatePayload", "isContextUpdatedPayload", "isRealtimeEvent"]
7
+ }