@convai/web-sdk 1.7.0-beta.1 → 1.7.0-beta.2
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/core/AudioManager.js.map +1 -1
- package/dist/core/BlendshapeQueue.js.map +1 -1
- package/dist/core/ConnectionStateHandler.js.map +1 -1
- package/dist/core/ConvaiClient.js.map +1 -1
- package/dist/core/EventEmitter.js.map +1 -1
- package/dist/core/MemoryManager.js.map +1 -1
- package/dist/core/MessageHandler.js.map +1 -1
- package/dist/core/ScreenShareManager.js.map +1 -1
- package/dist/core/VideoManager.js.map +1 -1
- package/dist/core/connectRequest.js.map +1 -1
- package/dist/core/contextUpdateRequest.js.map +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/core/videoSourceState.js.map +1 -1
- package/dist/core/visionRequest.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lipsync-helpers/arkitOrder61.js.map +1 -1
- package/dist/lipsync-helpers/createBlendshapeQueue.js.map +1 -1
- package/dist/lipsync-helpers/declarativeMapping.js.map +1 -1
- package/dist/lipsync-helpers/index.js.map +1 -1
- package/dist/lipsync-helpers/mappingTypes.js.map +1 -1
- package/dist/lipsync-helpers/metahumanOrder251.js.map +1 -1
- package/dist/lipsync-helpers/mhaLimitDrivers.js.map +1 -1
- package/dist/lipsync-helpers/naturalness/processor.js.map +1 -1
- package/dist/lipsync-helpers/naturalness/profiles/mha.js.map +1 -1
- package/dist/lipsync-helpers/naturalness/types.js.map +1 -1
- package/dist/lipsync-helpers/presetMappers.js.map +1 -1
- package/dist/react/components/ConvaiWidget.js.map +1 -1
- package/dist/react/components/index.js.map +1 -1
- package/dist/react/components/rtc-widget/components/AudioSettingsPanel.js.map +1 -1
- package/dist/react/components/rtc-widget/components/AudioVisualizer.js.map +1 -1
- package/dist/react/components/rtc-widget/components/ConviMessage.js.map +1 -1
- package/dist/react/components/rtc-widget/components/FloatingVideo.js.map +1 -1
- package/dist/react/components/rtc-widget/components/MarkdownRenderer.js.map +1 -1
- package/dist/react/components/rtc-widget/components/MessageBubble.js.map +1 -1
- package/dist/react/components/rtc-widget/components/MessageList.js.map +1 -1
- package/dist/react/components/rtc-widget/components/UserMessage.js.map +1 -1
- package/dist/react/components/rtc-widget/components/conviComponents/ConviButton.js.map +1 -1
- package/dist/react/components/rtc-widget/components/conviComponents/ConviFooter.js.map +1 -1
- package/dist/react/components/rtc-widget/components/conviComponents/ConviHeader.js.map +1 -1
- package/dist/react/components/rtc-widget/components/conviComponents/SettingsTray.js.map +1 -1
- package/dist/react/components/rtc-widget/components/conviComponents/VoiceModeOverlay.js.map +1 -1
- package/dist/react/components/rtc-widget/components/conviComponents/index.js.map +1 -1
- package/dist/react/components/rtc-widget/components/index.js.map +1 -1
- package/dist/react/components/rtc-widget/index.js.map +1 -1
- package/dist/react/components/rtc-widget/styles/framerConfig.js.map +1 -1
- package/dist/react/components/rtc-widget/styles/icons.js.map +1 -1
- package/dist/react/components/rtc-widget/styles/index.js.map +1 -1
- package/dist/react/components/rtc-widget/styles/styledComponents.js.map +1 -1
- package/dist/react/components/rtc-widget/styles/theme.js.map +1 -1
- package/dist/react/components/rtc-widget/types/index.js.map +1 -1
- package/dist/react/hooks/index.js.map +1 -1
- package/dist/react/hooks/useCharacterInfo.js.map +1 -1
- package/dist/react/hooks/useConvaiClient.js.map +1 -1
- package/dist/react/hooks/useLocalCameraTrack.js.map +1 -1
- package/dist/react/index.js.map +1 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/vanilla/AudioRenderer.js.map +1 -1
- package/dist/vanilla/ConvaiWidget.js.map +1 -1
- package/dist/vanilla/WebSocketSession.js.map +1 -1
- package/dist/vanilla/icons.js.map +1 -1
- package/dist/vanilla/index.js.map +1 -1
- package/dist/vanilla/styles.js.map +1 -1
- package/dist/vanilla/types.js.map +1 -1
- package/dist/vanilla/websocket.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +9 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudioManager.js","sourceRoot":"","sources":["../../src/core/AudioManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AudioManager.js","sourceRoot":"","sources":["../../src/core/AudioManager.ts"],"names":[],"mappings":"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","sourcesContent":["import { Room } from \"livekit-client\";\nimport { AudioControls } from \"./types\";\nimport { logger } from \"../utils/logger\";\nimport { EventEmitter } from \"./EventEmitter\";\nimport type { IWebSocketSession } from \"./types\";\n\n/**\n * Manages audio controls for LiveKit room\n * Provides methods to enable/disable microphone, manage audio devices,\n * and control audio state.\n */\nexport class AudioManager extends EventEmitter implements AudioControls {\n private room: Room | null = null;\n private _wsSession: IWebSocketSession | null = null;\n private _isAudioEnabled: boolean = false;\n private _isAudioMuted: boolean = false;\n private _audioLevel: number = 0;\n\n constructor(room?: Room) {\n super();\n if (room) {\n this.setRoom(room);\n }\n }\n\n setWebSocketSession(session: IWebSocketSession | null): void {\n this._wsSession = session;\n }\n\n syncWsAudioState(isEnabled: boolean): void {\n this._isAudioEnabled = isEnabled;\n this._isAudioMuted = !isEnabled;\n this.emit(\"audioStateChange\", {\n isAudioMuted: this._isAudioMuted,\n isAudioEnabled: this._isAudioEnabled,\n });\n }\n\n get isAudioEnabled(): boolean {\n return this._isAudioEnabled;\n }\n\n get isAudioMuted(): boolean {\n return this._isAudioMuted;\n }\n\n get audioLevel(): number {\n return this._audioLevel;\n }\n\n /**\n * Set the LiveKit room instance\n */\n setRoom(room: Room): void {\n // Clean up previous room listeners\n if (this.room) {\n this.cleanupListeners();\n }\n\n this.room = room;\n \n if (room && room.state !== 'disconnected') {\n this.setupListeners();\n this.updateState();\n }\n }\n\n /**\n * Setup event listeners for room\n */\n private setupListeners(): void {\n if (!this.room) return;\n\n const localParticipant = this.room.localParticipant;\n\n const handleTrackMuted = (track: any) => {\n if (track.source === 'microphone') {\n this._isAudioMuted = true;\n this._isAudioEnabled = false;\n this.emit('audioStateChange', { isAudioMuted: true, isAudioEnabled: false });\n }\n };\n\n const handleTrackUnmuted = (track: any) => {\n if (track.source === 'microphone') {\n this._isAudioMuted = false;\n this._isAudioEnabled = true;\n this.emit('audioStateChange', { isAudioMuted: false, isAudioEnabled: true });\n }\n };\n\n const handleTrackPublished = (track: any) => {\n if (track.source === 'microphone') {\n this._isAudioEnabled = true;\n this._isAudioMuted = false;\n this.emit('audioStateChange', { isAudioMuted: false, isAudioEnabled: true });\n }\n };\n\n const handleTrackUnpublished = (track: any) => {\n if (track.source === 'microphone') {\n this._isAudioEnabled = false;\n this._isAudioMuted = true;\n this.emit('audioStateChange', { isAudioMuted: true, isAudioEnabled: false });\n }\n };\n\n localParticipant.on('trackMuted', handleTrackMuted);\n localParticipant.on('trackUnmuted', handleTrackUnmuted);\n localParticipant.on('trackPublished', handleTrackPublished);\n localParticipant.on('trackUnpublished', handleTrackUnpublished);\n }\n\n /**\n * Clean up event listeners\n */\n private cleanupListeners(): void {\n if (!this.room) return;\n // LiveKit handles cleanup automatically when participant is removed\n }\n\n /**\n * Force-sync the stored audio state with the underlying LiveKit room.\n * Useful right after a connection completes so the UI can reflect\n * the current microphone permission without waiting for a toggle event.\n */\n syncStateFromRoom(options: { emit?: boolean } = {}): void {\n const { emit = false } = options;\n\n if (!this.room || this.room.state === 'disconnected') {\n const stateChanged =\n this._isAudioEnabled !== false ||\n this._isAudioMuted !== true ||\n this._audioLevel !== 0;\n\n this._isAudioEnabled = false;\n this._isAudioMuted = true;\n this._audioLevel = 0;\n\n if (emit && stateChanged) {\n this.emit('audioStateChange', {\n isAudioMuted: this._isAudioMuted,\n isAudioEnabled: this._isAudioEnabled,\n audioLevel: this._audioLevel,\n });\n }\n return;\n }\n\n const localParticipant = this.room.localParticipant;\n const isMicEnabled = localParticipant?.isMicrophoneEnabled ?? false;\n const nextMutedState = !isMicEnabled;\n const stateChanged =\n this._isAudioEnabled !== isMicEnabled ||\n this._isAudioMuted !== nextMutedState;\n\n this._isAudioEnabled = isMicEnabled;\n this._isAudioMuted = nextMutedState;\n\n if (emit && stateChanged) {\n this.emit('audioStateChange', {\n isAudioMuted: this._isAudioMuted,\n isAudioEnabled: this._isAudioEnabled,\n audioLevel: this._audioLevel,\n });\n }\n }\n\n /**\n * Update audio state from room\n */\n private updateState(): void {\n this.syncStateFromRoom();\n }\n\n /**\n * Enable audio\n */\n async enableAudio(): Promise<void> {\n if (this._wsSession) {\n this._wsSession.enableMic(true);\n this._isAudioEnabled = true;\n this._isAudioMuted = false;\n this.emit('audioStateChange', { isAudioMuted: false, isAudioEnabled: true, audioLevel: this._audioLevel });\n return;\n }\n\n if (!this.room) {\n throw new Error('Room not initialized');\n }\n\n try {\n await this.room.localParticipant.setMicrophoneEnabled(true);\n this._isAudioEnabled = true;\n this._isAudioMuted = false;\n this.emit('audioStateChange', {\n isAudioMuted: false,\n isAudioEnabled: true,\n audioLevel: this._audioLevel,\n });\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * Disable audio and completely release microphone\n */\n async disableAudio(): Promise<void> {\n if (this._wsSession) {\n this._wsSession.enableMic(false);\n this._isAudioEnabled = false;\n this._isAudioMuted = true;\n this.emit('audioStateChange', { isAudioMuted: true, isAudioEnabled: false, audioLevel: 0 });\n return;\n }\n\n if (!this.room) {\n throw new Error('Room not initialized');\n }\n\n try {\n // Get the microphone track before disabling\n const micTrack = Array.from(this.room.localParticipant.audioTrackPublications.values()).find(\n (publication) => publication.source === 'microphone' && publication.track,\n )?.track;\n\n // Disable microphone (unpublishes the track)\n await this.room.localParticipant.setMicrophoneEnabled(false);\n\n // Explicitly stop the underlying MediaStreamTrack to release hardware\n // This removes the browser recording indicator\n if (micTrack) {\n micTrack.stop();\n }\n\n this._isAudioEnabled = false;\n this._isAudioMuted = true;\n this.emit('audioStateChange', {\n isAudioMuted: true,\n isAudioEnabled: false,\n audioLevel: 0,\n });\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * Mute audio\n */\n async muteAudio(): Promise<void> {\n await this.disableAudio();\n }\n\n /**\n * Unmute audio\n */\n async unmuteAudio(): Promise<void> {\n await this.enableAudio();\n }\n\n /**\n * Toggle audio\n */\n async toggleAudio(): Promise<void> {\n if (this._isAudioMuted) {\n await this.unmuteAudio();\n } else {\n await this.muteAudio();\n }\n }\n\n /**\n * Set audio device\n */\n async setAudioDevice(deviceId: string): Promise<void> {\n if (!this.room) {\n throw new Error('Room not initialized');\n }\n\n try {\n await this.room.localParticipant.setMicrophoneEnabled(true, { deviceId });\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * Get available audio devices\n */\n async getAudioDevices(): Promise<MediaDeviceInfo[]> {\n try {\n const devices = await navigator.mediaDevices.enumerateDevices();\n const audioDevices = devices.filter(device => device.kind === 'audioinput');\n return audioDevices;\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * Start audio level monitoring\n */\n startAudioLevelMonitoring(): void {\n if (!this.room) {\n return;\n }\n // TODO: Implement audio level monitoring when LiveKit provides the API\n }\n\n /**\n * Stop audio level monitoring\n */\n stopAudioLevelMonitoring(): void {\n this._audioLevel = 0;\n }\n\n /**\n * Reset state on disconnect\n */\n reset(): void {\n this._isAudioEnabled = false;\n this._isAudioMuted = false;\n this._audioLevel = 0;\n this.emit('audioStateChange', { \n isAudioMuted: false, \n isAudioEnabled: false,\n audioLevel: 0\n });\n }\n}\n\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlendshapeQueue.js","sourceRoot":"","sources":["../../src/core/BlendshapeQueue.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BlendshapeQueue.js","sourceRoot":"","sources":["../../src/core/BlendshapeQueue.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * BlendshapeQueue - Manages buffering and lifecycle of blendshape frames\n *\n * This queue buffers blendshape chunks (typically 5-10 frames each) as they arrive from the server.\n * It separates queue activation (accepting frames) from playback (bot speaking).\n *\n * Flow:\n * 1. User sends message → queue activates (conversationActive = true)\n * 2. Blendshapes arrive in chunks and are buffered in the queue\n * 3. bot-started-speaking triggers (botSpeaking = true) → lipsync playback begins\n * 4. Consumer reads frames from queue using time-based indexing (elapsed_time * 60fps)\n * 5. bot-stopped-speaking triggers (botSpeaking = false) → lipsync playback stops\n * 6. blendshape-turn-stats received → conversation ends (conversationActive = false, conversationEnded = true)\n * 7. Remaining frames in queue are consumed\n * 8. ConversationEnded event emitted when all frames played\n * 9. Queue resets for next conversation\n *\n * Mapping:\n * - Supports optional mapping of blendshape data via a mapper function\n * - Mapper is applied when frames are added to the queue\n * - Common use cases: ARKit 61 → ARKit 52, MetaHuman 251 → Custom format\n */\n\nexport interface TurnStats {\n fps: number;\n total_audio_bytes: number;\n total_audio_duration_ms: number;\n total_blendshapes: number;\n total_turn_duration_ms: number;\n}\n\nexport interface BlendshapeChunkMetadata {\n fps?: number;\n startFrameIndex?: number;\n responseId?: string;\n neurosyncTurnId?: number;\n epoch?: number;\n}\n\nexport class BlendshapeQueue {\n private queue: Float32Array[] = [];\n private pendingTimelineFrames = new Map<number, Float32Array>();\n private activeTimelineAliases = new Set<string>();\n private retiredTimelineAliases = new Set<string>();\n private retiredOwnerlessTimelineAliases = new Set<string>();\n private conversationActive: boolean = false; // Queue is accepting frames (starts when user sends message)\n private botSpeaking: boolean = false; // Bot is actually speaking (starts when bot-started-speaking)\n private conversationEnded: boolean = false;\n private mapper?: (input: number[] | Float32Array) => Float32Array;\n private turnStats: TurnStats | null = null;\n private framesConsumed: number = 0;\n private interrupted: boolean = false; // Track if conversation was interrupted\n private interruptedAtFrame: number = 0; // Frame number when interrupted\n private needsNormalization: boolean = false; // One-shot signal for lipsync player to lerp morphs back to 0\n private _awaitingBotSpeak: boolean = false; // Set by startConversation(), cleared by startBotSpeaking(); guards against stale blendshape-turn-stats\n private playbackFps: number = 60;\n private ownerReplacementStoppedSpeaking: boolean = false;\n private missingExpectedFramesSinceMs: number | null = null;\n private readonly now: () => number;\n\n // Constants\n private static readonly TARGET_FPS = 60;\n private static readonly MAX_RETIRED_TIMELINE_ALIASES = 48;\n private static readonly MISSING_INDEXED_FRAME_GRACE_MS =\n (24 / BlendshapeQueue.TARGET_FPS) * 1000;\n\n /**\n * Create a new BlendshapeQueue\n * @param mapper - Optional function to map/transform blendshape data as it's added\n */\n constructor(\n mapper?: (input: number[] | Float32Array) => Float32Array,\n now: () => number = () => Date.now(),\n ) {\n this.mapper = mapper;\n this.now = now;\n }\n\n /**\n * Add a chunk of blendshapes to the queue\n * @param blendshapes - Array of blendshape frames (each frame is an array of numbers)\n * @param metadata - Optional timeline metadata for ahead-delivered chunks\n */\n addChunk(\n blendshapes: number[][],\n metadata: BlendshapeChunkMetadata = {},\n ): void {\n if (blendshapes.length === 0) {\n return;\n }\n\n // Accept frames when:\n // a) conversation is active (user sent message, server hasn't sent turn-stats yet), OR\n // b) bot is currently speaking (bot-started-speaking received), OR\n // c) Fix 3: turn-stats already arrived but we haven't yet received all expected frames —\n // this covers the race where bot-stopped-speaking and blendshape-turn-stats both reach\n // the client before the last in-flight blendshape chunks do. Without this guard those\n // trailing chunks would be silently dropped because both flags above are already false.\n const framesReceivedSoFar =\n this.framesConsumed + this.queue.length + this.pendingTimelineFrames.size;\n const stillExpectingFrames =\n this.conversationEnded &&\n this.turnStats !== null &&\n framesReceivedSoFar < this.turnStats.total_blendshapes;\n\n const shouldAcceptFrames =\n this.conversationActive || this.botSpeaking || stillExpectingFrames;\n\n const ownerAliases = this.timelineAliases(metadata);\n if (ownerAliases.length > 0) {\n if (this.isRetiredTimelineOwner(metadata)) {\n return;\n }\n if (!this.hasActiveTimelineOwner()) {\n if (!shouldAcceptFrames) {\n return;\n }\n this.adoptTimelineOwner(ownerAliases, this.botSpeaking);\n } else if (this.matchesActiveTimelineChunkOwner(metadata)) {\n this.mergeActiveTimelineAliases(ownerAliases);\n } else {\n // A different response owner means the server has moved to a new bot\n // turn. Ahead-delivered chunks can race ahead of the explicit cancel\n // event, so adopt the newer owner instead of dropping its first frames.\n const replacedSpeakingOwner = this.botSpeaking;\n this.rememberRetiredTimelineAliases(\n this.activeTimelineAliases,\n ownerAliases,\n );\n this.adoptTimelineOwner(ownerAliases);\n if (replacedSpeakingOwner) {\n this.ownerReplacementStoppedSpeaking = true;\n this.needsNormalization = true;\n }\n }\n } else if (!shouldAcceptFrames) {\n return;\n }\n\n const hasIndexedTimeline = Number.isInteger(metadata.startFrameIndex);\n\n if (\n hasIndexedTimeline &&\n Number.isFinite(metadata.fps) &&\n metadata.fps! > 0\n ) {\n this.playbackFps = metadata.fps!;\n }\n\n this.missingExpectedFramesSinceMs = null;\n\n if (hasIndexedTimeline) {\n this.addTimelineChunk(blendshapes, metadata.startFrameIndex!);\n return;\n }\n\n for (let i = 0; i < blendshapes.length; i++) {\n this.queue.push(this.mapFrame(blendshapes[i]));\n }\n }\n\n private mapFrame(input: number[] | Float32Array): Float32Array {\n return this.mapper ? this.mapper(input) : new Float32Array(input);\n }\n\n private addTimelineChunk(\n blendshapes: number[][],\n startFrameIndex: number,\n ): void {\n const queuedStart = this.framesConsumed;\n const queuedEnd = this.framesConsumed + this.queue.length;\n\n for (let i = 0; i < blendshapes.length; i++) {\n const absoluteIndex = startFrameIndex + i;\n if (\n absoluteIndex < queuedStart ||\n absoluteIndex < queuedEnd ||\n this.pendingTimelineFrames.has(absoluteIndex)\n ) {\n continue;\n }\n this.pendingTimelineFrames.set(\n absoluteIndex,\n this.mapFrame(blendshapes[i]),\n );\n }\n\n this.flushContiguousTimelineFrames();\n }\n\n private flushContiguousTimelineFrames(): void {\n let nextFrameIndex = this.framesConsumed + this.queue.length;\n while (this.pendingTimelineFrames.has(nextFrameIndex)) {\n const frame = this.pendingTimelineFrames.get(nextFrameIndex);\n if (!frame) {\n break;\n }\n this.pendingTimelineFrames.delete(nextFrameIndex);\n this.queue.push(frame);\n nextFrameIndex += 1;\n }\n }\n\n private timelineAliases(metadata: BlendshapeChunkMetadata = {}): string[] {\n const aliases: string[] = [];\n if (metadata.responseId) {\n aliases.push(`r:${metadata.responseId}`);\n }\n\n if (Number.isInteger(metadata.neurosyncTurnId)) {\n aliases.push(`t:${metadata.neurosyncTurnId}`);\n if (Number.isInteger(metadata.epoch)) {\n aliases.push(`t:${metadata.neurosyncTurnId}|e:${metadata.epoch}`);\n }\n }\n return Array.from(new Set(aliases));\n }\n\n private hasActiveTimelineOwner(): boolean {\n return this.activeTimelineAliases.size > 0;\n }\n\n private responseAlias(\n metadata: BlendshapeChunkMetadata = {},\n ): string | undefined {\n return metadata.responseId ? `r:${metadata.responseId}` : undefined;\n }\n\n private turnEpochAlias(\n metadata: BlendshapeChunkMetadata = {},\n ): string | undefined {\n return Number.isInteger(metadata.neurosyncTurnId) &&\n Number.isInteger(metadata.epoch)\n ? `t:${metadata.neurosyncTurnId}|e:${metadata.epoch}`\n : undefined;\n }\n\n private turnAlias(metadata: BlendshapeChunkMetadata = {}): string | undefined {\n return Number.isInteger(metadata.neurosyncTurnId)\n ? `t:${metadata.neurosyncTurnId}`\n : undefined;\n }\n\n private activeHasResponseAlias(): boolean {\n return Array.from(this.activeTimelineAliases).some((alias) =>\n alias.startsWith(\"r:\"),\n );\n }\n\n private activeHasTurnEpochAlias(): boolean {\n return Array.from(this.activeTimelineAliases).some((alias) =>\n alias.includes(\"|e:\"),\n );\n }\n\n private matchesActiveTimelineOwner(\n metadata: BlendshapeChunkMetadata = {},\n ): boolean {\n const aliases = this.timelineAliases(metadata);\n if (aliases.length === 0 || !this.hasActiveTimelineOwner()) {\n return false;\n }\n\n const responseAlias = this.responseAlias(metadata);\n if (responseAlias && this.activeHasResponseAlias()) {\n return this.activeTimelineAliases.has(responseAlias);\n }\n\n const turnEpochAlias = this.turnEpochAlias(metadata);\n if (turnEpochAlias && this.activeHasTurnEpochAlias()) {\n return this.activeTimelineAliases.has(turnEpochAlias);\n }\n\n return aliases.some((alias) => this.activeTimelineAliases.has(alias));\n }\n\n private matchesActiveTimelineChunkOwner(\n metadata: BlendshapeChunkMetadata = {},\n ): boolean {\n if (!this.hasActiveTimelineOwner()) {\n return false;\n }\n\n const responseAlias = this.responseAlias(metadata);\n const activeHasResponseAlias = this.activeHasResponseAlias();\n if (activeHasResponseAlias && responseAlias) {\n return this.activeTimelineAliases.has(responseAlias);\n }\n\n const turnEpochAlias = this.turnEpochAlias(metadata);\n const activeHasTurnEpochAlias = this.activeHasTurnEpochAlias();\n if (turnEpochAlias || activeHasTurnEpochAlias) {\n return (\n turnEpochAlias !== undefined &&\n this.activeTimelineAliases.has(turnEpochAlias)\n );\n }\n\n const turnAlias = this.turnAlias(metadata);\n return turnAlias !== undefined && this.activeTimelineAliases.has(turnAlias);\n }\n\n private mergeActiveTimelineAliases(aliases: string[]): void {\n aliases.forEach((alias) => this.activeTimelineAliases.add(alias));\n }\n\n private isRetiredTimelineOwner(\n metadata: BlendshapeChunkMetadata = {},\n ): boolean {\n const aliases = this.timelineAliases(metadata);\n if (aliases.length === 0) {\n return false;\n }\n\n const responseAlias = this.responseAlias(metadata);\n if (responseAlias) {\n if (this.retiredTimelineAliases.has(responseAlias)) {\n return true;\n }\n if (this.activeTimelineAliases.has(responseAlias)) {\n return false;\n }\n }\n\n const turnEpochAlias = this.turnEpochAlias(metadata);\n if (\n turnEpochAlias !== undefined &&\n this.retiredTimelineAliases.has(turnEpochAlias)\n ) {\n return true;\n }\n if (\n responseAlias === undefined &&\n turnEpochAlias !== undefined &&\n this.retiredOwnerlessTimelineAliases.has(turnEpochAlias)\n ) {\n return true;\n }\n\n const turnAlias = this.turnAlias(metadata);\n return (\n turnAlias !== undefined &&\n (this.retiredTimelineAliases.has(turnAlias) ||\n (responseAlias === undefined &&\n this.retiredOwnerlessTimelineAliases.has(turnAlias)))\n );\n }\n\n private rememberRetiredTimelineAliases(\n aliases: Iterable<string>,\n keepAliases: Iterable<string> = [],\n ): void {\n this.rememberBoundedAliases(\n this.retiredTimelineAliases,\n aliases,\n keepAliases,\n );\n }\n\n private rememberRetiredOwnerlessTimelineAliases(\n aliases: Iterable<string>,\n keepAliases: Iterable<string> = [],\n ): void {\n this.rememberBoundedAliases(\n this.retiredOwnerlessTimelineAliases,\n aliases,\n keepAliases,\n );\n }\n\n private rememberBoundedAliases(\n target: Set<string>,\n aliases: Iterable<string>,\n keepAliases: Iterable<string> = [],\n ): void {\n const aliasesToKeep = new Set(keepAliases);\n const aliasesToRetire = Array.from(aliases).filter(\n (alias) => !aliasesToKeep.has(alias),\n );\n if (aliasesToRetire.length === 0) {\n return;\n }\n aliasesToRetire.forEach((alias) => target.add(alias));\n while (\n target.size >\n BlendshapeQueue.MAX_RETIRED_TIMELINE_ALIASES\n ) {\n const oldestKey = target.values().next().value;\n if (!oldestKey) {\n break;\n }\n target.delete(oldestKey);\n }\n }\n\n private adoptTimelineOwner(\n ownerAliases: string[],\n preserveBotSpeaking = false,\n ): void {\n const botSpeaking = preserveBotSpeaking && this.botSpeaking;\n this.activeTimelineAliases = new Set(ownerAliases);\n this.queue = [];\n this.pendingTimelineFrames.clear();\n this.framesConsumed = 0;\n this.turnStats = null;\n this.missingExpectedFramesSinceMs = null;\n this.conversationActive = true;\n this.conversationEnded = false;\n this.interrupted = false;\n this.botSpeaking = botSpeaking;\n this._awaitingBotSpeak = !botSpeaking;\n this.playbackFps = BlendshapeQueue.TARGET_FPS;\n if (!botSpeaking) {\n this.ownerReplacementStoppedSpeaking = false;\n }\n }\n\n private clearTimelineOwner(): void {\n this.activeTimelineAliases.clear();\n }\n\n /**\n * True when a lifecycle event belongs to an owner that has already been\n * interrupted/cancelled or does not match the active indexed timeline.\n * Ownerless events are treated as current for backward compatibility.\n */\n isStaleOwner(metadata: BlendshapeChunkMetadata = {}): boolean {\n const ownerAliases = this.timelineAliases(metadata);\n if (ownerAliases.length === 0) {\n return false;\n }\n if (this.isRetiredOwner(metadata)) {\n return true;\n }\n return (\n this.hasActiveTimelineOwner() &&\n !this.matchesActiveTimelineOwner(metadata)\n );\n }\n\n /**\n * True when an owner was explicitly interrupted/cancelled/completed.\n * Chunk messages use this narrower predicate so a newer owner can still\n * reach addChunk() and atomically replace the active owner there.\n */\n isRetiredOwner(metadata: BlendshapeChunkMetadata = {}): boolean {\n return this.isRetiredTimelineOwner(metadata);\n }\n\n /**\n * Drop buffered ahead-delivered frames for a server-cancelled owner.\n * Returns true when the active owner was flushed.\n */\n cancelOwner(metadata: BlendshapeChunkMetadata = {}): boolean {\n const ownerAliases = this.timelineAliases(metadata);\n if (ownerAliases.length === 0) {\n return false;\n }\n const matchesActiveOwner = this.matchesActiveTimelineOwner(metadata);\n const activeOwnerAliases = Array.from(this.activeTimelineAliases);\n const isResponseScopedActiveCancel =\n matchesActiveOwner &&\n this.responseAlias(metadata) !== undefined &&\n this.turnAlias(metadata) === undefined;\n\n if (isResponseScopedActiveCancel) {\n this.rememberRetiredTimelineAliases(ownerAliases);\n this.rememberRetiredOwnerlessTimelineAliases(\n activeOwnerAliases,\n ownerAliases,\n );\n } else {\n this.rememberRetiredTimelineAliases(\n matchesActiveOwner\n ? [...ownerAliases, ...activeOwnerAliases]\n : ownerAliases,\n matchesActiveOwner ? [] : activeOwnerAliases,\n );\n }\n if (!matchesActiveOwner) {\n return false;\n }\n\n this.queue = [];\n this.pendingTimelineFrames.clear();\n this.framesConsumed = 0;\n this.missingExpectedFramesSinceMs = null;\n this.botSpeaking = false;\n this.conversationActive = false;\n this.conversationEnded = true;\n this.needsNormalization = true;\n this.clearTimelineOwner();\n return true;\n }\n\n hasBufferedFrames(): boolean {\n return this.queue.length > 0 || this.pendingTimelineFrames.size > 0;\n }\n\n /**\n * Set or update the mapper function\n * @param mapper - Function to map/transform blendshape data\n */\n setMapper(mapper: (input: number[] | Float32Array) => Float32Array): void {\n this.mapper = mapper;\n }\n\n /**\n * Clear the mapper function (passthrough mode)\n */\n clearMapper(): void {\n this.mapper = undefined;\n }\n\n /**\n * Check if a mapper is configured\n */\n hasMapper(): boolean {\n return this.mapper !== undefined;\n }\n\n /**\n * Get all frames currently in the queue\n * @returns Array of blendshape frames as Float32Arrays\n */\n getFrames(): Float32Array[] {\n return this.queue;\n }\n\n /**\n * Get a specific frame by index\n * @param index - Frame index\n * @returns The frame at the given index, or null if out of bounds\n */\n getFrame(index: number): Float32Array | null {\n if (index < 0 || index >= this.queue.length) {\n return null;\n }\n return this.queue[index];\n }\n\n /**\n * Get a frame with fade-in/fade-out alpha multiplier applied\n * First 10 frames: fade in from 0 to 1 (starts with bot-started-speaking)\n * Last 10 frames: fade out from 1 to 0 (normal end or interruption)\n * @param index - Frame index within the current queue\n * @returns The frame with alpha applied, or null if out of bounds\n */\n getFrameWithAlpha(index: number): Float32Array | null {\n const frame = this.getFrame(index);\n if (!frame) return null;\n\n let alpha = 1.0;\n\n // Calculate absolute frame number (frames consumed + current index in queue)\n const absoluteFrameNumber = this.framesConsumed + index;\n\n // Fade in: first 10 frames (0 to 1) - starts when bot-started-speaking\n if (absoluteFrameNumber < 10) {\n alpha = absoluteFrameNumber / 10;\n }\n\n // Fade out for interruptions: last 10 frames of remaining queue\n if (this.interrupted) {\n const remainingFrames = this.queue.length;\n const frameIndexInQueue = index;\n\n // Apply fade out to last 10 frames in queue\n if (frameIndexInQueue >= remainingFrames - 10) {\n const framesFromEnd = remainingFrames - frameIndexInQueue;\n alpha = Math.min(alpha, framesFromEnd / 10);\n }\n }\n // Fade out for normal end: last 10 frames based on turn stats\n else if (this.turnStats) {\n const totalFrames = this.turnStats.total_blendshapes;\n const framesFromEnd = totalFrames - absoluteFrameNumber;\n\n if (framesFromEnd <= 10) {\n alpha = Math.min(alpha, framesFromEnd / 10);\n }\n }\n\n // Apply alpha to all morph values\n if (alpha < 1.0) {\n const fadedFrame = new Float32Array(frame.length);\n for (let i = 0; i < frame.length; i++) {\n fadedFrame[i] = frame[i] * alpha;\n }\n return fadedFrame;\n }\n\n return frame;\n }\n\n /**\n * Remove frames from the beginning of the queue (consume frames)\n * @param count - Number of frames to remove\n */\n consumeFrames(count: number): void {\n if (count <= 0) return;\n const actualConsumed = Math.min(count, this.queue.length);\n this.queue.splice(0, actualConsumed);\n this.framesConsumed += actualConsumed;\n this.flushContiguousTimelineFrames();\n }\n\n /**\n * Get the number of frames currently in the queue\n */\n get length(): number {\n return this.queue.length;\n }\n\n /**\n * Check if queue has frames\n */\n hasFrames(): boolean {\n return this.queue.length > 0;\n }\n\n /**\n * Check if conversation is active\n */\n isConversationActive(): boolean {\n return this.conversationActive;\n }\n\n /**\n * Check if conversation has ended and is ready for reset\n *\n * Returns true when:\n * 1. Server sent blendshape-turn-stats (conversationEnded = true)\n * AND\n * 2. All expected frames consumed OR queue is empty (playback complete)\n *\n * This combines the logic previously needed in consumers for definitive\n * end-of-conversation detection.\n */\n isConversationEnded(): boolean {\n if (!this.conversationEnded) {\n return false;\n }\n\n // Don't signal end while the bot is still speaking — blendshape-turn-stats\n // arrives before bot-stopped-speaking (blendshapes are generated ahead of\n // audio). Returning true here while botSpeaking is true causes the React\n // player's normalization guard (isConversationActive || isBotSpeaking) to\n // mis-fire and cancel normalization, and causes the vanilla player to call\n // reset() while audio is still playing.\n if (this.botSpeaking) {\n return false;\n }\n\n // Check completion - EITHER:\n // A) All expected frames consumed based on server stats\n const allFramesConsumed = this.isAllFramesConsumed();\n\n // B) OR stats received and there are no playable frames. For indexed owners,\n // defer the first empty check while expected frames are missing so late\n // chunks can arrive; allow a later empty check to complete so dropped chunks\n // or unfillable pending gaps do not hang the player forever.\n const waitingForExpectedFrames = this.hasUnconsumedExpectedFrames();\n const noPlayableFramesAfterStats = !this.hasFrames();\n\n if (!noPlayableFramesAfterStats || !waitingForExpectedFrames) {\n this.missingExpectedFramesSinceMs = null;\n } else if (this.hasActiveTimelineOwner()) {\n if (this.missingExpectedFramesSinceMs === null) {\n this.missingExpectedFramesSinceMs = this.now();\n return false;\n }\n if (\n this.now() - this.missingExpectedFramesSinceMs <\n BlendshapeQueue.MISSING_INDEXED_FRAME_GRACE_MS\n ) {\n return false;\n }\n }\n\n return allFramesConsumed || noPlayableFramesAfterStats;\n }\n\n /**\n * Check if the server end signal is safe to expose to playback consumers.\n *\n * Ahead-delivery can deliver blendshape-turn-stats before bot-started-speaking.\n * Keep those early stats internally for expected-frame accounting, but do not\n * expose a public drain signal until audio playback has actually started.\n * This does NOT check if all frames have been consumed - use isConversationEnded() for that.\n */\n hasReceivedEndSignal(): boolean {\n return this.conversationEnded && !this._awaitingBotSpeak;\n }\n\n /**\n * Mark conversation start (called when user sends a message)\n * Clears any remaining frames from previous conversation and activates the queue\n */\n startConversation(): void {\n if (\n this.hasActiveTimelineOwner() &&\n (this.hasBufferedFrames() || this.hasUnconsumedExpectedFrames())\n ) {\n this.conversationActive = !this.conversationEnded;\n this.botSpeaking = false;\n this.interrupted = false;\n this._awaitingBotSpeak = true;\n this.ownerReplacementStoppedSpeaking = false;\n return;\n }\n\n // Clear any leftover frames from previous conversation\n this.queue = [];\n this.pendingTimelineFrames.clear();\n this.rememberRetiredTimelineAliases(this.activeTimelineAliases);\n this.clearTimelineOwner();\n this.conversationActive = true;\n this.botSpeaking = false; // Bot hasn't started speaking yet\n this.conversationEnded = false;\n this.framesConsumed = 0; // Reset frame counter for new conversation\n this.turnStats = null; // Clear old stats\n this.interrupted = false; // Reset interruption flag\n this.interruptedAtFrame = 0;\n this._awaitingBotSpeak = true; // Guard: ignore stale blendshape-turn-stats until new bot-started-speaking\n this.playbackFps = BlendshapeQueue.TARGET_FPS;\n this.ownerReplacementStoppedSpeaking = false;\n this.missingExpectedFramesSinceMs = null;\n }\n\n /**\n * Mark bot as started speaking (called when bot-started-speaking event received)\n * This signals that the lipsync player can start consuming frames\n */\n startBotSpeaking(): boolean {\n // Reject stale bot-started-speaking that arrives after the current turn has already\n // ended (conversationEnded=true). This happens when an interrupted conversation's\n // delayed bot-started-speaking arrives after a later conversation has fully completed.\n const hasEarlyAheadStats =\n this.conversationEnded &&\n this._awaitingBotSpeak &&\n this.hasActiveTimelineOwner() &&\n this.hasBufferedFrames();\n if (this.conversationEnded && !hasEarlyAheadStats) {\n return false;\n }\n this.botSpeaking = true;\n this._awaitingBotSpeak = false; // New turn confirmed — endConversation() is now valid\n return true;\n }\n\n /**\n * Mark bot as stopped speaking (called when bot-stopped-speaking event received)\n */\n stopBotSpeaking(): void {\n this.botSpeaking = false;\n }\n\n /**\n * Check if bot is currently speaking\n * Lipsync player should only play frames when this is true\n */\n isBotSpeaking(): boolean {\n return this.botSpeaking;\n }\n\n /**\n * Consume the signal that a newer ahead-delivered owner replaced an active\n * speaking owner before the old bot-stopped-speaking event arrived.\n */\n consumeOwnerReplacementStoppedSpeaking(): boolean {\n const val = this.ownerReplacementStoppedSpeaking;\n this.ownerReplacementStoppedSpeaking = false;\n return val;\n }\n\n /**\n * Mark conversation end with turn stats\n * Called when blendshape-turn-stats received\n * Stops accepting new frames and marks conversation as ended\n */\n endConversation(\n stats?: TurnStats,\n metadata: BlendshapeChunkMetadata = {},\n ): void {\n const ownerAliases = this.timelineAliases(metadata);\n if (ownerAliases.length > 0) {\n if (this.isRetiredTimelineOwner(metadata)) {\n return;\n }\n if (\n this.hasActiveTimelineOwner() &&\n !this.matchesActiveTimelineOwner(metadata)\n ) {\n return;\n }\n if (this.hasActiveTimelineOwner() || !this._awaitingBotSpeak) {\n this.mergeActiveTimelineAliases(ownerAliases);\n }\n }\n\n // Ignore stale blendshape-turn-stats that arrive after startConversation()\n // but before the new turn's bot-started-speaking. These are in-flight leftovers\n // from the interrupted turn and would corrupt conversationEnded/botSpeaking state.\n const belongsToActiveAheadOwner =\n ownerAliases.length > 0 &&\n this.hasActiveTimelineOwner() &&\n this.matchesActiveTimelineOwner(metadata);\n if (this._awaitingBotSpeak && !belongsToActiveAheadOwner) {\n return;\n }\n // Stop accepting new frames when conversation ends\n this.conversationActive = false;\n this.conversationEnded = true;\n this.missingExpectedFramesSinceMs = null;\n if (stats) {\n this.turnStats = stats;\n }\n }\n\n /**\n * Handle interruption - mark for fade out\n * Keeps last 10 frames in queue and fades them out\n */\n interrupt(): void {\n this.rememberRetiredTimelineAliases(this.activeTimelineAliases);\n this.clearTimelineOwner();\n this.interrupted = true;\n this.interruptedAtFrame = this.framesConsumed + this.queue.length;\n this.conversationActive = false; // Stop accepting new frames\n this.botSpeaking = false; // Bot is no longer speaking due to interruption\n this.conversationEnded = true; // Mark conversation as ended so the player can drain fade-out frames and fire onConversationEnded\n this.needsNormalization = true; // Signal lipsync player to lerp morphs back to 0\n this.ownerReplacementStoppedSpeaking = false;\n this.pendingTimelineFrames.clear();\n this.missingExpectedFramesSinceMs = null;\n\n // Ahead-delivered turns may have many seconds of future frames buffered.\n // On interrupt, audio stops immediately, so visuals must hard-stop too.\n this.queue = [];\n }\n\n /**\n * Consume the normalization signal (one-shot).\n * Returns true if the lipsync player should begin lerping morphs back to 0.\n * startConversation() intentionally does NOT clear this so the signal survives\n * the immediate queue reset that follows an interruption.\n */\n consumeNormalizationSignal(): boolean {\n const val = this.needsNormalization;\n this.needsNormalization = false;\n return val;\n }\n\n /**\n * Get turn stats\n */\n getTurnStats(): TurnStats | null {\n return this.turnStats;\n }\n\n /**\n * Get number of frames consumed\n */\n getFramesConsumed(): number {\n return this.framesConsumed;\n }\n\n /**\n * Get playback FPS from chunk metadata, falling back to 60fps.\n */\n getPlaybackFps(): number {\n return this.playbackFps || BlendshapeQueue.TARGET_FPS;\n }\n\n /**\n * Calculate time left in milliseconds based on turn stats\n * Returns null if stats not available\n */\n getTimeLeftMs(): number | null {\n if (!this.turnStats) return null;\n\n const { total_audio_duration_ms, total_blendshapes } = this.turnStats;\n\n // Calculate time per frame\n const msPerFrame = total_audio_duration_ms / total_blendshapes;\n\n // Calculate remaining frames\n const remainingFrames = total_blendshapes - this.framesConsumed;\n\n // Calculate time left\n const timeLeftMs = remainingFrames * msPerFrame;\n\n return Math.max(0, timeLeftMs);\n }\n\n /**\n * Check if all frames have been consumed based on turn stats\n */\n isAllFramesConsumed(): boolean {\n if (!this.turnStats) return false;\n return this.framesConsumed >= this.turnStats.total_blendshapes;\n }\n\n private hasUnconsumedExpectedFrames(): boolean {\n if (!this.turnStats) return false;\n const receivedOrConsumedFrames =\n this.framesConsumed + this.queue.length + this.pendingTimelineFrames.size;\n return receivedOrConsumedFrames < this.turnStats.total_blendshapes;\n }\n\n /**\n * Reset queue for new conversation\n * Should be called after all frames have been consumed\n */\n reset(): void {\n this.queue = [];\n this.pendingTimelineFrames.clear();\n this.rememberRetiredTimelineAliases(this.activeTimelineAliases);\n this.clearTimelineOwner();\n this.conversationActive = false;\n this.botSpeaking = false;\n this.conversationEnded = false;\n this.turnStats = null;\n this.framesConsumed = 0;\n this.needsNormalization = false;\n this._awaitingBotSpeak = false;\n this.playbackFps = BlendshapeQueue.TARGET_FPS;\n this.ownerReplacementStoppedSpeaking = false;\n this.missingExpectedFramesSinceMs = null;\n }\n\n /**\n * Get frame at specified time\n * @param elapsedTime - Elapsed time in seconds\n * @returns Frame data\n */\n getFrameAtTime(elapsedTime: number): {\n frame: Float32Array;\n frameIndex: number;\n } | null {\n if (this.queue.length === 0) {\n return null;\n }\n\n // Calculate frame index based on elapsed time and current playback FPS\n const frameIndex = Math.floor(elapsedTime * this.getPlaybackFps());\n\n // Clamp to valid range\n const clampedIndex = Math.min(frameIndex, this.queue.length - 1);\n\n return {\n frame: this.queue[clampedIndex],\n frameIndex: clampedIndex,\n };\n }\n\n /**\n * Get debug info about the queue state\n */\n getDebugInfo(): {\n frameCount: number;\n conversationActive: boolean;\n botSpeaking: boolean;\n conversationEnded: boolean;\n interrupted: boolean;\n awaitingBotSpeak: boolean;\n framesConsumed: number;\n turnStats: TurnStats | null;\n timeLeftMs: number | null;\n pendingTimelineFrames: number;\n playbackFps: number;\n } {\n return {\n frameCount: this.queue.length,\n conversationActive: this.conversationActive,\n botSpeaking: this.botSpeaking,\n conversationEnded: this.conversationEnded,\n interrupted: this.interrupted,\n awaitingBotSpeak: this._awaitingBotSpeak,\n framesConsumed: this.framesConsumed,\n turnStats: this.turnStats,\n timeLeftMs: this.getTimeLeftMs(),\n pendingTimelineFrames: this.pendingTimelineFrames.size,\n playbackFps: this.getPlaybackFps(),\n };\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectionStateHandler.js","sourceRoot":"","sources":["../../src/core/ConnectionStateHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAoB,MAAM,gBAAgB,CAAC;AAGnE;;;GAGG;AACH,MAAM,OAAO,sBAAsB;IAMjC,YACE,aAA4D,EAC5D,gBAA0C,EAC1C,qBAAiC,EACjC,iBAAqD;QAErD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;QACnD,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACH,kBAAkB,CAAC,MAAyB;QAC1C,qEAAqE;QACrE,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,CAAC;QAErC,IAAI,CAAC,aAAa,CAAC;YACjB,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,KAAK;YACnB,UAAU,EAAE,KAAK;YACjB,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,KAAK;YAClB,SAAS,EAAE,IAAI;YACf,eAAe,EAAE,IAAI;YACrB,OAAO,EAAE,EAAE;YACX,gBAAgB;SACjB,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,oCAAoC;QACpC,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACH,4BAA4B,CAAC,KAAsB;QACjD,IAAI,KAAK,KAAK,eAAe,CAAC,YAAY,EAAE,CAAC;YAC3C,IAAI,CAAC,aAAa,CAAC;gBACjB,WAAW,EAAE,KAAK;gBAClB,YAAY,EAAE,KAAK;aACpB,CAAC,CAAC;YACH,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAC7B,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC/B,CAAC;aAAM,IAAI,KAAK,KAAK,eAAe,CAAC,SAAS,EAAE,CAAC;YAC/C,IAAI,CAAC,aAAa,CAAC;gBACjB,WAAW,EAAE,IAAI;gBACjB,YAAY,EAAE,KAAK;aACpB,CAAC,CAAC;YACH,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,6BAA6B;QAC7D,CAAC;aAAM,IAAI,KAAK,KAAK,eAAe,CAAC,UAAU,EAAE,CAAC;YAChD,IAAI,CAAC,aAAa,CAAC;gBACjB,YAAY,EAAE,IAAI;gBAClB,WAAW,EAAE,KAAK;aACnB,CAAC,CAAC;YACH,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,oBAAoB;QAClB,IAAI,CAAC,aAAa,CAAC;YACjB,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,KAAK;YACnB,UAAU,EAAE,KAAK;YACjB,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,KAAK;YAClB,SAAS,EAAE,IAAI;YACf,eAAe,EAAE,IAAI;YACrB,OAAO,EAAE,EAAE;YACX,gBAAgB,EAAE,IAAI;SACvB,CAAC,CAAC;QACH,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"ConnectionStateHandler.js","sourceRoot":"","sources":["../../src/core/ConnectionStateHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAoB,MAAM,gBAAgB,CAAC;AAGnE;;;GAGG;AACH,MAAM,OAAO,sBAAsB;IAMjC,YACE,aAA4D,EAC5D,gBAA0C,EAC1C,qBAAiC,EACjC,iBAAqD;QAErD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;QACnD,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACH,kBAAkB,CAAC,MAAyB;QAC1C,qEAAqE;QACrE,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,CAAC;QAErC,IAAI,CAAC,aAAa,CAAC;YACjB,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,KAAK;YACnB,UAAU,EAAE,KAAK;YACjB,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,KAAK;YAClB,SAAS,EAAE,IAAI;YACf,eAAe,EAAE,IAAI;YACrB,OAAO,EAAE,EAAE;YACX,gBAAgB;SACjB,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,oCAAoC;QACpC,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACH,4BAA4B,CAAC,KAAsB;QACjD,IAAI,KAAK,KAAK,eAAe,CAAC,YAAY,EAAE,CAAC;YAC3C,IAAI,CAAC,aAAa,CAAC;gBACjB,WAAW,EAAE,KAAK;gBAClB,YAAY,EAAE,KAAK;aACpB,CAAC,CAAC;YACH,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAC7B,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC/B,CAAC;aAAM,IAAI,KAAK,KAAK,eAAe,CAAC,SAAS,EAAE,CAAC;YAC/C,IAAI,CAAC,aAAa,CAAC;gBACjB,WAAW,EAAE,IAAI;gBACjB,YAAY,EAAE,KAAK;aACpB,CAAC,CAAC;YACH,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,6BAA6B;QAC7D,CAAC;aAAM,IAAI,KAAK,KAAK,eAAe,CAAC,UAAU,EAAE,CAAC;YAChD,IAAI,CAAC,aAAa,CAAC;gBACjB,YAAY,EAAE,IAAI;gBAClB,WAAW,EAAE,KAAK;aACnB,CAAC,CAAC;YACH,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,oBAAoB;QAClB,IAAI,CAAC,aAAa,CAAC;YACjB,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,KAAK;YACnB,UAAU,EAAE,KAAK;YACjB,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,KAAK;YAClB,SAAS,EAAE,IAAI;YACf,eAAe,EAAE,IAAI;YACrB,OAAO,EAAE,EAAE;YACX,gBAAgB,EAAE,IAAI;SACvB,CAAC,CAAC;QACH,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;CACF","sourcesContent":["import { ConnectionState, DisconnectReason } from \"livekit-client\";\nimport { ConvaiClientState } from \"./types\";\n\n/**\n * Handles connection state changes and disconnection logic for ConvaiClient.\n * Centralizes error handling and state management for better maintainability.\n */\nexport class ConnectionStateHandler {\n private onStateUpdate: (updates: Partial<ConvaiClientState>) => void;\n private onBotReadyChange: (ready: boolean) => void;\n private onMessageHandlerReset: () => void;\n private onDisconnectEvent: (reason: DisconnectReason) => void;\n\n constructor(\n onStateUpdate: (updates: Partial<ConvaiClientState>) => void,\n onBotReadyChange: (ready: boolean) => void,\n onMessageHandlerReset: () => void,\n onDisconnectEvent: (reason: DisconnectReason) => void,\n ) {\n this.onStateUpdate = onStateUpdate;\n this.onBotReadyChange = onBotReadyChange;\n this.onMessageHandlerReset = onMessageHandlerReset;\n this.onDisconnectEvent = onDisconnectEvent;\n }\n\n /**\n * Handle room disconnection\n * @param reason - LiveKit disconnect reason (optional, defaults to UNKNOWN_REASON if not provided)\n */\n handleDisconnected(reason?: DisconnectReason): void {\n // If LiveKit doesn't provide a reason, default to UNKNOWN_REASON (0)\n const disconnectReason = reason ?? 0;\n\n this.onStateUpdate({\n isConnected: false,\n isConnecting: false,\n isSpeaking: false,\n isThinking: false,\n isListening: false,\n endUserId: null,\n endUserMetadata: null,\n metrics: [],\n disconnectReason,\n });\n\n this.onBotReadyChange(false);\n this.onMessageHandlerReset();\n\n // Emit disconnect event with reason\n this.onDisconnectEvent(disconnectReason);\n }\n\n /**\n * Handle connection state changes from LiveKit\n * @param state - The new connection state\n */\n handleConnectionStateChanged(state: ConnectionState): void {\n if (state === ConnectionState.Disconnected) {\n this.onStateUpdate({\n isConnected: false,\n isConnecting: false,\n });\n this.onBotReadyChange(false);\n this.onMessageHandlerReset();\n } else if (state === ConnectionState.Connected) {\n this.onStateUpdate({\n isConnected: true,\n isConnecting: false,\n });\n this.onBotReadyChange(false); // Wait for bot-ready message\n } else if (state === ConnectionState.Connecting) {\n this.onStateUpdate({\n isConnecting: true,\n isConnected: false,\n });\n this.onBotReadyChange(false);\n }\n }\n\n /**\n * Reset all connection state to default values\n * Called when disconnecting or cleaning up the client\n */\n resetConnectionState(): void {\n this.onStateUpdate({\n isConnected: false,\n isConnecting: false,\n isSpeaking: false,\n isThinking: false,\n isListening: false,\n endUserId: null,\n endUserMetadata: null,\n metrics: [],\n disconnectReason: null,\n });\n this.onBotReadyChange(false);\n this.onMessageHandlerReset();\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConvaiClient.js","sourceRoot":"","sources":["../../src/core/ConvaiClient.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ConvaiClient.js","sourceRoot":"","sources":["../../src/core/ConvaiClient.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Room,\n RoomEvent,\n ConnectionState,\n DisconnectReason,\n DefaultReconnectPolicy,\n setLogLevel,\n} from \"livekit-client\";\n\nsetLogLevel(\"warn\");\nimport {\n ConvaiConfig,\n ConvaiClientState,\n ChatMessage,\n AudioSettings,\n IConvaiClient,\n AudioControls,\n VideoControls,\n ScreenShareControls,\n DynamicInfo,\n ContextUpdateOptions,\n UploadFileOptions,\n ServerResponse,\n InteractionCreated,\n IWebSocketSession,\n WebSocketSessionFactory,\n RespondModeUpdateOptions,\n RespondModesConfig,\n UpdateSceneMetadataOptions,\n VisionStatusOptions,\n VisionTriggerOptions,\n DisconnectReasonEnum,\n ActionResponseEvent,\n} from \"./types\";\nimport { AudioManager } from \"./AudioManager\";\nimport { VideoManager } from \"./VideoManager\";\nimport { ScreenShareManager } from \"./ScreenShareManager\";\nimport { MessageHandler } from \"./MessageHandler\";\nimport { SDK_VERSION } from \"../version\";\nimport { EventEmitter } from \"./EventEmitter\";\nimport { BlendshapeQueue } from \"./BlendshapeQueue\";\nimport { MemoryManager } from \"./MemoryManager\";\nimport { ConnectionStateHandler } from \"./ConnectionStateHandler\";\nimport { buildBlendshapeConnectConfig } from \"./connectRequest\";\nimport {\n shouldPreemptForContextUpdateResponse,\n shouldPreemptForExplicitRespondMode,\n} from \"./contextUpdateRequest\";\nimport {\n resolveVisionInputConfig,\n serializeVisionInputConfig,\n} from \"./visionRequest\";\n\n// Module-level registry — populated by importing @convai/web-sdk/vanilla/websocket\nlet _wsFactory: WebSocketSessionFactory | null = null;\n\nfunction normalizeStateOfMind(value: string | null | undefined): string | null | undefined {\n if (value == null) return value;\n const normalized = value.trim().toLowerCase();\n return normalized === \"neutral\" || normalized === \"\" ? null : normalized;\n}\n\n/**\n * Custom reconnect policy that disables automatic reconnection\n */\nclass NoReconnectPolicy extends DefaultReconnectPolicy {\n nextRetryDelayInMs(): number | null {\n return null; // Always return null to prevent any reconnection attempts\n }\n}\n\n/**\n * Main Convai client class for managing AI voice assistant connections\n * Provides complete interface for connecting to Convai's voice assistants,\n * managing real-time audio/video conversations, and handling messages.\n *\n * @example\n * ```typescript\n * import { ConvaiClient } from '@convai/web-sdk/core';\n *\n * // Recommended: Pass config to constructor\n * const client = new ConvaiClient({\n * apiKey: 'your-api-key',\n * characterId: 'your-character-id',\n * endUserId: 'user-uuid', // Optional: enables memory & analytics\n * enableVideo: true,\n * });\n *\n * // Listen for state changes\n * client.on('stateChange', (state) => {\n * console.log('State:', state);\n * });\n *\n * // Connect (uses stored config from constructor)\n * await client.connect();\n *\n * // Send a message\n * client.sendUserTextMessage('Hello!');\n *\n * // Advanced: Override config or connect without constructor config\n * await client.connect({ apiKey: 'different-key', characterId: 'different-id' });\n *\n * // Disconnect and reconnect\n * await client.disconnect();\n * await client.reconnect();\n * ```\n */\nexport class ConvaiClient extends EventEmitter implements IConvaiClient {\n private _room: Room;\n private _state: ConvaiClientState;\n private _connectionType: \"audio\" | \"video\" | null = null;\n private _apiKey: string | null = null;\n private _authToken: string | null = null;\n private _characterId: string | null = null;\n private _characterSessionId: string | null = \"-1\";\n private _isBotReady: boolean = false;\n private _participantSid: string = \"\";\n private _audioSettings: AudioSettings;\n private _storedConfig: ConvaiConfig | null = null;\n /**\n * Runtime state of mind. Source of truth for the value sent on connect,\n * so updateEmotion() called before any config is stored is not lost.\n */\n private _stateOfMind: string | null = null;\n private _endUserId: string | null = null;\n private _endUserMetadata: Record<string, unknown> | null = null;\n private _wsSession: IWebSocketSession | null = null;\n private _activeTransport: \"livekit\" | \"websocket\" | null = null;\n private _logRtviMessages: boolean = true;\n private _isDisconnecting: boolean = false;\n\n // RTVI client-ready handshake (race-proof bot-ready delivery)\n private _clientReadyRetryTimer: ReturnType<typeof setTimeout> | null = null;\n private _clientReadyTimeoutTimer: ReturnType<typeof setTimeout> | null = null;\n private _clientReadyMsgId: string | null = null;\n private static readonly CLIENT_READY_RETRY_MS = 500;\n private static readonly CLIENT_READY_TIMEOUT_MS = 45_000;\n\n /**\n * Register the WebSocket transport factory. Called automatically as a side-effect\n * when you import `@convai/web-sdk/vanilla/websocket` (or the react equivalent).\n * Only needed when using `transport: \"websocket\"` in ConvaiConfig.\n */\n static registerWebSocketTransport(factory: WebSocketSessionFactory): void {\n _wsFactory = factory;\n }\n\n // Managers\n private _audioManager: AudioManager;\n private _videoManager: VideoManager;\n private _screenShareManager: ScreenShareManager;\n private _messageHandler: MessageHandler;\n private _connectionStateHandler: ConnectionStateHandler;\n\n // Conversation session tracking\n private _conversationSessionId: number = 0;\n private _conversationStartTime: number = 0;\n\n // Memory manager instance\n private _memoryManager: MemoryManager | null = null;\n\n constructor(config?: ConvaiConfig) {\n super();\n\n // Store config if provided\n if (config) {\n this._storedConfig = config;\n this._logRtviMessages = config.logRtviMessages !== false;\n }\n\n // Initialize room with no reconnect policy\n this._room = new Room({\n reconnectPolicy: new NoReconnectPolicy(),\n });\n\n // Initialize state\n this._state = {\n isConnected: false,\n isConnecting: false,\n isListening: false,\n isThinking: false,\n isSpeaking: false,\n agentState: \"disconnected\",\n emotion: null,\n endUserId: null,\n endUserMetadata: null,\n metrics: [],\n disconnectReason: null,\n };\n\n // Default audio settings for optimal interruption handling\n this._audioSettings = {\n echoCancellation: true,\n noiseSuppression: true,\n autoGainControl: true,\n sampleRate: 48000,\n channelCount: 1,\n };\n\n // Initialize managers\n this._audioManager = new AudioManager(this._room);\n this._videoManager = new VideoManager(this._room);\n this._screenShareManager = new ScreenShareManager(this._room);\n this._messageHandler = new MessageHandler(this._room);\n this._messageHandler.setRtviMessageLogging(this._logRtviMessages);\n this._connectionStateHandler = new ConnectionStateHandler(\n this.updateState.bind(this),\n (ready) => (this._isBotReady = ready),\n () => {\n this._messageHandler.reset();\n this._endUserId = null;\n this._endUserMetadata = null;\n },\n (reason) => this.emit(\"disconnect\", reason),\n );\n\n // Setup event listeners\n this.setupEventListeners();\n\n // Connect MessageHandler to conversation start events\n this.setupMessageHandlerEvents();\n }\n\n // Getters\n get state(): ConvaiClientState {\n return { ...this._state };\n }\n\n get connectionType(): \"audio\" | \"video\" | null {\n return this._connectionType;\n }\n\n get apiKey(): string | null {\n return this._apiKey;\n }\n\n get authToken(): string | null {\n return this._authToken;\n }\n\n get characterId(): string | null {\n return this._characterId;\n }\n\n get room(): Room {\n return this._room;\n }\n\n get chatMessages(): ChatMessage[] {\n return this._messageHandler.getChatMessages();\n }\n\n get userTranscription(): string {\n return this._messageHandler.getUserTranscription();\n }\n\n get characterSessionId(): string | null {\n return this._characterSessionId;\n }\n\n get isBotReady(): boolean {\n return this._isBotReady;\n }\n\n get audioControls(): AudioControls {\n return this._audioManager;\n }\n\n get videoControls(): VideoControls {\n return this._videoManager;\n }\n\n get screenShareControls(): ScreenShareControls {\n return this._screenShareManager;\n }\n\n get blendshapeQueue(): BlendshapeQueue {\n return this._messageHandler.getBlendshapeQueue();\n }\n\n get conversationSessionId(): number {\n return this._conversationSessionId;\n }\n\n get memoryManager(): MemoryManager | null {\n return this._memoryManager;\n }\n\n /**\n * Setup event listeners for room and managers\n */\n private setupEventListeners(): void {\n // Room event listeners\n this._room.on(RoomEvent.Disconnected, (reason?: DisconnectReason) => {\n this._connectionStateHandler.handleDisconnected(reason);\n });\n this._room.on(\n RoomEvent.ConnectionStateChanged,\n this._connectionStateHandler.handleConnectionStateChanged.bind(\n this._connectionStateHandler,\n ),\n );\n\n // Message handler events\n this._messageHandler.on(\"botReady\", () => {\n // Server may send multiple bot-ready frames (one per client-ready\n // we retried). Only surface the first to consumers per connect.\n if (this._isBotReady) {\n return;\n }\n this._isBotReady = true;\n this._stopClientReadyHandshake();\n this.updateState({ isConnected: true });\n this.emit(\"botReady\");\n });\n\n this._messageHandler.on(\"messagesChange\", (messages: ChatMessage[]) => {\n this.emit(\"message\", messages[messages.length - 1]);\n this.emit(\"messagesChange\", messages);\n });\n\n this._messageHandler.on(\n \"userTranscriptionChange\",\n (transcription: string) => {\n this.emit(\"userTranscriptionChange\", transcription);\n },\n );\n\n this._messageHandler.on(\"speakingChange\", (isSpeaking: boolean) => {\n this.updateState({ isSpeaking });\n this.emit(\"speakingChange\", isSpeaking);\n\n if (!isSpeaking && this._conversationSessionId > 0) {\n // Bot stopped speaking - turn end signal (same semantics as BlendshapeQueue.hasReceivedEndSignal())\n const duration = (\n (Date.now() - this._conversationStartTime) /\n 1000\n ).toFixed(2);\n\n this.emit(\"turnEnd\", {\n sessionId: this._conversationSessionId,\n duration: parseFloat(duration),\n timestamp: Date.now(),\n });\n }\n });\n\n this._messageHandler.on(\"botRespondingChange\", (isResponding: boolean) => {\n this.updateState({ isThinking: isResponding });\n });\n\n this._messageHandler.on(\n \"emotionChange\",\n (emotion: { emotion: string; scale?: number } | null) => {\n this.updateState({ emotion });\n this.emit(\"emotionChange\", emotion);\n },\n );\n\n this._messageHandler.on(\"listeningChange\", (isListening: boolean) => {\n const wasListening = this._state.isListening;\n this.updateState({ isListening });\n\n // Voice input path — activate the blendshape queue as soon as the user\n // starts speaking (user-started-speaking) so conversationActive is true\n // immediately, matching the text-input path where it's true on send.\n if (!wasListening && isListening) {\n // Reset blendshape queue if mid-conversation, but don't interrupt the server\n if (\n this.blendshapeQueue.isConversationActive() ||\n this._state.isSpeaking ||\n this.blendshapeQueue.hasBufferedFrames()\n ) {\n this._messageHandler.interruptLipsyncPlayback();\n }\n\n this._conversationSessionId++;\n this._conversationStartTime = Date.now();\n this.emit(\"conversationStart\", {\n sessionId: this._conversationSessionId,\n userMessage: \"[voice]\",\n timestamp: this._conversationStartTime,\n });\n }\n });\n\n // Handle metrics events\n this._messageHandler.on(\"metrics\", (metricsData: any) => {\n const newMetrics = [\n ...this._state.metrics,\n {\n id: `metrics-${Date.now()}-${Math.random()}`,\n data: metricsData,\n timestamp: new Date().toISOString(),\n },\n ];\n this.updateState({ metrics: newMetrics });\n this.emit(\"metrics\", metricsData);\n });\n\n // Forward blendshapes events\n this._messageHandler.on(\"blendshapes\", (data: unknown) => {\n this.emit(\"blendshapes\", data);\n });\n\n // Forward blendshape stats event (conversation end marker)\n this._messageHandler.on(\"blendshapeStatsReceived\", (stats: unknown) => {\n this.emit(\"blendshapeStatsReceived\", stats);\n });\n\n // Forward blendshape cancel event (owner-scoped visual hard stop)\n this._messageHandler.on(\"blendshapeCancel\", (data: unknown) => {\n this.emit(\"blendshapeCancel\", data);\n });\n\n // Forward idle warning event\n this._messageHandler.on(\n \"idleWarning\",\n (data: { remainingSeconds: number | null }) => {\n this.emit(\"idleWarning\", data);\n },\n );\n\n // Forward LLM no-response event\n this._messageHandler.on(\"llmNoResponse\", () => {\n this.emit(\"llmNoResponse\");\n });\n\n // Forward bot-output event (aggregated output with spoken status)\n this._messageHandler.on(\n \"botOutput\",\n (data: { text: string; spoken: boolean; aggregatedBy: string }) => {\n this.emit(\"botOutput\", data);\n },\n );\n\n // Forward bot TTS text (word-by-word as spoken)\n this._messageHandler.on(\"botTtsText\", (data: { text: string }) => {\n this.emit(\"botTtsText\", data);\n });\n\n // Forward bot TTS lifecycle events\n this._messageHandler.on(\"botTtsStarted\", () => {\n this.emit(\"botTtsStarted\");\n });\n\n this._messageHandler.on(\"botTtsStopped\", () => {\n this.emit(\"botTtsStopped\");\n });\n\n // Forward server-side muting events\n this._messageHandler.on(\"userMuteStarted\", () => {\n this.emit(\"userMuteStarted\");\n });\n\n this._messageHandler.on(\"userMuteStopped\", () => {\n this.emit(\"userMuteStopped\");\n });\n\n this._messageHandler.on(\"actionResponse\", (data: ActionResponseEvent) => {\n this.emit(\"actionResponse\", data);\n });\n\n this._messageHandler.on(\"serverResponse\", (response: ServerResponse) => {\n this.emit(\"serverResponse\", response);\n });\n\n this._messageHandler.on(\"interactionCreated\", (data: InteractionCreated) => {\n this.emit(\"interactionCreated\", data);\n });\n }\n\n /**\n * Setup MessageHandler to respond to conversation start events\n * This ensures the BlendshapeQueue starts accepting frames when user sends a message,\n * rather than waiting for bot-started-speaking (which would cause early frames to be dropped)\n */\n private setupMessageHandlerEvents(): void {\n this.on(\n \"conversationStart\",\n (data: { sessionId: number; userMessage: string; timestamp: number }) => {\n this._messageHandler.getBlendshapeQueue().startConversation();\n },\n );\n }\n\n /**\n * Update state and emit changes\n */\n private updateState(updates: Partial<ConvaiClientState>): void {\n const oldState = { ...this._state };\n this._state = { ...this._state, ...updates };\n\n // Update agentState: speaking (highest) > listening (user speaking) > thinking > connected\n if (!this._state.isConnected) {\n this._state.agentState = \"disconnected\";\n } else if (this._state.isSpeaking) {\n this._state.agentState = \"speaking\";\n } else if (this._state.isListening) {\n this._state.agentState = \"listening\";\n } else if (this._state.isThinking) {\n this._state.agentState = \"thinking\";\n } else {\n this._state.agentState = \"connected\";\n }\n\n // Emit state change if changed\n if (JSON.stringify(oldState) !== JSON.stringify(this._state)) {\n this.emit(\"stateChange\", this._state);\n }\n }\n\n /**\n * Send a data message via the active transport.\n * For LiveKit: publishes via the data channel.\n * For WebSocket: sends via PipecatClient.sendClientMessage (wrapped in {t,d} envelope).\n */\n private publishMessage(type: string, data: unknown): void {\n const message = { type, data };\n\n if (this._activeTransport === \"websocket\" && this._wsSession?.isConnected) {\n this._wsSession.sendMessage(type, data);\n } else if (\n this._room?.localParticipant &&\n this._room.state !== \"disconnected\"\n ) {\n const encodedData = new TextEncoder().encode(JSON.stringify(message));\n this._room.localParticipant.publishData(encodedData, { reliable: true });\n }\n }\n\n /**\n * Returns true when a message can be sent on the active transport.\n */\n private isTransportReady(): boolean {\n if (this._activeTransport === \"websocket\") {\n return this._wsSession?.isConnected ?? false;\n }\n return (\n !!this._room?.localParticipant && this._room.state !== \"disconnected\"\n );\n }\n\n /**\n * Connect to a Convai character\n */\n async connect(config?: ConvaiConfig): Promise<void> {\n // Use provided config or stored config\n const finalConfig = config || this._storedConfig;\n\n if (!finalConfig) {\n throw new Error(\n \"No configuration provided. Pass config to connect() or store it in the client\",\n );\n }\n\n // Store config for reconnection\n this._storedConfig = { ...finalConfig };\n\n // Use characterSessionId from config when reconnecting (so we resume the same session)\n if (\n finalConfig.characterSessionId &&\n finalConfig.characterSessionId !== \"-1\"\n ) {\n this._characterSessionId = finalConfig.characterSessionId;\n }\n\n // Add default URL if not provided\n const configWithDefaults = {\n url: \"https://realtime-api.convai.com\",\n ...finalConfig,\n };\n\n this._logRtviMessages = configWithDefaults.logRtviMessages !== false;\n this._messageHandler.setRtviMessageLogging(this._logRtviMessages);\n\n const hasApiKey = Boolean(configWithDefaults.apiKey);\n const hasAuthToken = Boolean(configWithDefaults.authToken);\n if ((!hasApiKey && !hasAuthToken) || !configWithDefaults.characterId) {\n throw new Error(\n \"Either apiKey or authToken is required, and characterId is required\",\n );\n }\n\n this.updateState({ isConnecting: true });\n\n try {\n // Store connection config\n this._apiKey = configWithDefaults.apiKey ?? null;\n this._authToken = configWithDefaults.authToken ?? null;\n this._characterId = configWithDefaults.characterId;\n\n // Determine connection type based on enableVideo\n const connType = configWithDefaults.enableVideo ? \"video\" : \"audio\";\n this._connectionType = connType;\n\n const transportType = configWithDefaults.transport ?? \"livekit\";\n this._activeTransport = transportType;\n const effectiveVisionInputConfig =\n resolveVisionInputConfig(configWithDefaults);\n\n // Prepare request body with required parameters\n // An explicit stateOfMind in the config wins; otherwise carry whatever\n // updateEmotion() last set, including before the first connect.\n const stateOfMind =\n configWithDefaults.stateOfMind !== undefined\n ? normalizeStateOfMind(configWithDefaults.stateOfMind) ?? null\n : this._stateOfMind;\n this._stateOfMind = stateOfMind;\n const characterSessionIdToSend =\n configWithDefaults.characterSessionId ?? this._characterSessionId;\n const requestBody = {\n character_id: configWithDefaults.characterId,\n ...(stateOfMind ? { state_of_mind: stateOfMind } : {}),\n ...(configWithDefaults.endUserId && {\n end_user_id: configWithDefaults.endUserId,\n }),\n ...(configWithDefaults.endUserMetadata != null && {\n end_user_metadata: configWithDefaults.endUserMetadata,\n }),\n transport: transportType,\n connection_type: connType,\n ...buildBlendshapeConnectConfig(configWithDefaults),\n llm_provider: \"dynamic\",\n ...(configWithDefaults.enableEmotion === true && {\n emotion_config: (() => {\n const cfg = configWithDefaults.emotionConfig;\n const provider = cfg?.provider ?? \"llm\";\n if (provider === \"nrclex\") {\n return {\n provider,\n min_word_threshold: (cfg as { provider: \"nrclex\"; min_word_threshold?: number }).min_word_threshold ?? 3,\n low_intensity_threshold: (cfg as { provider: \"nrclex\"; low_intensity_threshold?: number }).low_intensity_threshold ?? 0.33,\n high_intensity_threshold: (cfg as { provider: \"nrclex\"; high_intensity_threshold?: number }).high_intensity_threshold ?? 0.66,\n };\n }\n return { provider };\n })(),\n }),\n default_tts_enabled:\n configWithDefaults.ttsEnabled !== undefined\n ? configWithDefaults.ttsEnabled\n : true,\n default_stt_enabled: true,\n ...(effectiveVisionInputConfig && {\n vision_input_config: serializeVisionInputConfig(\n effectiveVisionInputConfig,\n ),\n }),\n ...(configWithDefaults.respondModes && {\n respond_modes: this.serializeRespondModes(\n configWithDefaults.respondModes,\n ),\n }),\n ...(characterSessionIdToSend &&\n characterSessionIdToSend !== \"-1\" && {\n character_session_id: characterSessionIdToSend,\n }),\n ...(configWithDefaults.actionConfig && {\n action_config: {\n actions: configWithDefaults.actionConfig.actions,\n objects: configWithDefaults.actionConfig.objects,\n characters: configWithDefaults.actionConfig.characters,\n ...(configWithDefaults.actionConfig.current_attention_object && {\n current_attention_object: configWithDefaults.actionConfig.current_attention_object,\n }),\n },\n }),\n ...(configWithDefaults.dynamicInfo && {\n dynamic_info: {\n text: configWithDefaults.dynamicInfo,\n ...(configWithDefaults.keepInContext !== undefined && {\n keep_in_context: configWithDefaults.keepInContext,\n }),\n },\n }),\n ...(configWithDefaults.narrativeTemplateKeys &&\n Object.keys(configWithDefaults.narrativeTemplateKeys).length > 0 && {\n narrative_template_keys: configWithDefaults.narrativeTemplateKeys,\n }),\n ...(configWithDefaults.debug !== undefined && {\n debug: configWithDefaults.debug,\n }),\n invocation_metadata: {\n source: configWithDefaults.invocationMetadata?.source ?? \"web_sdk\",\n client_version:\n configWithDefaults.invocationMetadata?.clientVersion ??\n SDK_VERSION,\n ...(configWithDefaults.invocationMetadata?.extraMetadata && {\n extra_metadata: configWithDefaults.invocationMetadata.extraMetadata,\n }),\n },\n };\n\n const connectHeaders: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n };\n if (configWithDefaults.authToken) {\n connectHeaders[\"API-AUTH-TOKEN\"] = configWithDefaults.authToken;\n } else if (configWithDefaults.apiKey) {\n connectHeaders[\"X-API-Key\"] = configWithDefaults.apiKey;\n }\n\n // HTTP POST /connect — same request for both transports\n const response = await fetch(`${configWithDefaults.url}/connect`, {\n method: \"POST\",\n headers: connectHeaders,\n body: JSON.stringify(requestBody),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n\n let errorMessage = `HTTP ${response.status}`;\n try {\n const errorData = JSON.parse(errorText);\n const raw = errorData.message ?? errorData.error ?? errorData.detail;\n if (typeof raw === \"string\") {\n errorMessage = raw;\n } else if (Array.isArray(raw)) {\n // FastAPI/Pydantic 422 — detail is an array of validation error objects\n errorMessage = raw\n .map((e: { msg?: string; loc?: string[] }) =>\n [e.loc?.join(\".\"), e.msg].filter(Boolean).join(\": \")\n )\n .join(\"; \") || errorMessage;\n } else if (raw != null) {\n errorMessage = JSON.stringify(raw);\n } else if (errorText) {\n errorMessage = `${errorMessage}: ${errorText}`;\n }\n } catch {\n if (errorText) errorMessage = `${errorMessage}: ${errorText}`;\n }\n\n throw new Error(errorMessage);\n }\n\n const connectionData = await response.json();\n\n // Capture session identifiers from /connect response\n if (connectionData.character_session_id) {\n this._characterSessionId = connectionData.character_session_id;\n this._storedConfig = {\n ...this._storedConfig!,\n characterSessionId: connectionData.character_session_id,\n };\n }\n if (connectionData.end_user_id) {\n this._endUserId = connectionData.end_user_id;\n }\n if (connectionData.end_user_metadata) {\n this._endUserMetadata = connectionData.end_user_metadata;\n }\n\n if (transportType === \"websocket\") {\n // ── WebSocket (Pipecat) transport path ────────────────────────────\n // Server returns the WebSocket URL in room_url (same field as LiveKit).\n const wsUrl = connectionData.room_url as string;\n if (!wsUrl) {\n throw new Error(\n \"No WebSocket URL returned from /connect endpoint (expected room_url)\",\n );\n }\n\n if (!_wsFactory) {\n throw new Error(\n \"[ConvaiClient] WebSocket transport is not registered. \" +\n \"Add `import '@convai/web-sdk/vanilla/websocket'` before calling connect().\",\n );\n }\n // Always enable mic at construction so WavMediaManager initializes the\n // audio stream during connect(). If startWithAudioOn is false, we mute\n // after the connection is established (enableMic(false) works once the\n // stream exists, but not before it is initialized).\n this._wsSession = _wsFactory(\n (payload) => this._messageHandler.handleDataReceivedPublic(payload),\n true,\n );\n const webSocketVisionEnabled =\n configWithDefaults.enableVideo === true &&\n effectiveVisionInputConfig?.enabled !== false;\n if (webSocketVisionEnabled) {\n this._videoManager.setWebSocketVisionMessageSender((type, data) => {\n if (\n this._activeTransport !== \"websocket\" ||\n !this._wsSession?.isConnected\n ) {\n return;\n }\n this._wsSession.sendMessage(type, data);\n });\n } else {\n this._videoManager.setWebSocketVisionDisabled();\n }\n\n const wsSession = this._wsSession;\n\n wsSession.on(\"botAudioTrack\", (track: MediaStreamTrack) => {\n this.emit(\"botAudioTrack\", track);\n });\n\n wsSession.on(\"disconnected\", () => {\n if (this._wsSession !== wsSession || this._isDisconnecting) {\n return;\n }\n this._connectionStateHandler.handleDisconnected();\n this.clearAllManagers();\n });\n\n this._audioManager.setWebSocketSession(this._wsSession);\n\n // Wait for WebSocket transport to connect (fires before bot-ready)\n await new Promise<void>((resolve, reject) => {\n let settled = false;\n const cleanupConnectListeners = () => {\n wsSession.off(\"connected\", onConnected);\n wsSession.off(\"error\", onError);\n wsSession.off(\"disconnected\", onDisconnected);\n };\n const settle = (callback: () => void) => {\n if (settled) {\n return;\n }\n settled = true;\n cleanupConnectListeners();\n callback();\n };\n const onConnected = () => {\n settle(resolve);\n };\n const onError = (err: unknown) => {\n settle(() => {\n reject(err instanceof Error ? err : new Error(String(err)));\n });\n };\n const onDisconnected = () => {\n settle(() => {\n reject(new Error(\"WebSocket disconnected before connect completed\"));\n });\n };\n wsSession.on(\"connected\", onConnected);\n wsSession.on(\"error\", onError);\n wsSession.on(\"disconnected\", onDisconnected);\n // connectWithUrl calls initDevices() then connect({ wsUrl }) — matches sandbox flow\n wsSession.connectWithUrl(wsUrl).catch((err: unknown) => {\n settle(() => {\n reject(err instanceof Error ? err : new Error(String(err)));\n });\n });\n });\n\n // For WebSocket, mic is already streaming after connect.\n // Only mute if the caller explicitly sets startWithAudioOn: false.\n // Defaulting to on matches the sandbox behavior and ensures the bot\n // sees audio when it initializes (avoids server \"tap mic to talk\" prompt).\n if (configWithDefaults.startWithAudioOn === false) {\n this._wsSession.enableMic(false);\n this._audioManager.syncWsAudioState(false);\n } else {\n this._audioManager.syncWsAudioState(true);\n }\n\n if (\n webSocketVisionEnabled &&\n configWithDefaults.enableVideo &&\n configWithDefaults.startWithVideoOn\n ) {\n await this._videoManager.enableVideo();\n }\n } else {\n this._videoManager.setWebSocketVisionMessageSender(null);\n // ── LiveKit transport path (default) ─────────────────────────────\n await this._room.connect(\n connectionData.room_url,\n connectionData.token,\n {\n rtcConfig: {\n iceTransportPolicy: \"relay\",\n },\n },\n );\n\n if (configWithDefaults.startWithAudioOn) {\n await this._room.localParticipant.setMicrophoneEnabled(true, {\n echoCancellation: this._audioSettings.echoCancellation,\n noiseSuppression: this._audioSettings.noiseSuppression,\n autoGainControl: this._audioSettings.autoGainControl,\n sampleRate: this._audioSettings.sampleRate,\n channelCount: this._audioSettings.channelCount,\n });\n }\n\n if (\n configWithDefaults.enableVideo &&\n configWithDefaults.startWithVideoOn\n ) {\n await this._room.localParticipant.setCameraEnabled(true);\n }\n\n this._audioManager.syncStateFromRoom({ emit: true });\n this._participantSid = this._room.localParticipant.sid;\n }\n\n // Apply custom mapper to blendshape queue if provided\n if (configWithDefaults.blendshapeConfig?.customMapper) {\n this.blendshapeQueue.setMapper(\n configWithDefaults.blendshapeConfig.customMapper,\n );\n }\n\n this.updateState({\n isConnected: true,\n isConnecting: false,\n endUserId: this._endUserId,\n endUserMetadata: this._endUserMetadata,\n });\n\n // Initialize memory manager if we have authentication and endUserId\n if (this._endUserId) {\n if (this._apiKey) {\n // Use API key authentication\n this._memoryManager = new MemoryManager(\n this._apiKey,\n this._characterId!,\n this._endUserId,\n undefined, // Use default base URL\n false, // Use as API key\n );\n } else if (this._authToken) {\n // Use auth token authentication\n this._memoryManager = new MemoryManager(\n this._authToken,\n this._characterId!,\n this._endUserId,\n undefined, // Use default base URL\n true, // Use as auth token\n );\n }\n }\n\n this.emit(\"connect\");\n\n this._startClientReadyHandshake();\n } catch (error) {\n await this.cleanupWebSocketSessionAfterConnectFailure();\n this.updateState({\n isConnected: false,\n isConnecting: false,\n });\n this.emit(\"error\", error);\n throw error;\n }\n }\n\n private async cleanupWebSocketSessionAfterConnectFailure(): Promise<void> {\n if (this._activeTransport !== \"websocket\" || !this._wsSession) {\n return;\n }\n\n this._isDisconnecting = true;\n try {\n await this._wsSession.disconnect();\n } catch {\n // ignore cleanup errors while preserving the original connect failure\n } finally {\n this._isDisconnecting = false;\n }\n this.clearAllManagers();\n }\n\n /**\n * RTVI client-ready handshake. Server-side gates bot-ready emission on\n * receipt of client-ready (and re-emits bot-ready on every client-ready),\n * so we can retry until we hear bot-ready back. Closes the race where the\n * bot publishes bot-ready before the client data-channel is subscribed.\n */\n private _startClientReadyHandshake(): void {\n // RTVI client-ready handshake is LiveKit-only. WebSocket transport\n // uses its own pipecat ready signalling.\n if (this._activeTransport !== \"livekit\") {\n return;\n }\n this._stopClientReadyHandshake();\n this._clientReadyMsgId =\n typeof crypto !== \"undefined\" && \"randomUUID\" in crypto\n ? crypto.randomUUID()\n : `client-ready-${Date.now()}-${Math.random()}`;\n\n const send = () => {\n if (this._isBotReady) return;\n if (!this._room || this._room.state !== \"connected\") return;\n try {\n const msg = {\n id: this._clientReadyMsgId,\n label: \"rtvi-ai\",\n type: \"client-ready\",\n data: {\n version: \"1.0.0\",\n about: { library: \"convai-web-sdk\" },\n },\n };\n const encoded = new TextEncoder().encode(JSON.stringify(msg));\n this._room.localParticipant.publishData(encoded, { reliable: true });\n } catch {\n // swallow; next retry will try again\n }\n this._clientReadyRetryTimer = setTimeout(\n send,\n ConvaiClient.CLIENT_READY_RETRY_MS,\n );\n };\n\n send();\n\n this._clientReadyTimeoutTimer = setTimeout(() => {\n if (this._isBotReady) return;\n this._stopClientReadyHandshake();\n const err = new Error(\n `bot-ready not received within ${ConvaiClient.CLIENT_READY_TIMEOUT_MS}ms`,\n );\n this.emit(\"error\", err);\n }, ConvaiClient.CLIENT_READY_TIMEOUT_MS);\n }\n\n private _stopClientReadyHandshake(): void {\n if (this._clientReadyRetryTimer) {\n clearTimeout(this._clientReadyRetryTimer);\n this._clientReadyRetryTimer = null;\n }\n if (this._clientReadyTimeoutTimer) {\n clearTimeout(this._clientReadyTimeoutTimer);\n this._clientReadyTimeoutTimer = null;\n }\n }\n\n /**\n * Disconnect from the current character session\n */\n async disconnect(): Promise<void> {\n this._stopClientReadyHandshake();\n if (this._activeTransport === \"websocket\" && this._wsSession) {\n this._isDisconnecting = true;\n try {\n await this._wsSession.disconnect();\n } catch {\n // ignore disconnect errors\n } finally {\n this._isDisconnecting = false;\n }\n this._wsSession = null;\n this._connectionStateHandler.handleDisconnected(\n DisconnectReasonEnum.CLIENT_INITIATED as DisconnectReason,\n );\n this.clearAllManagers();\n } else if (this._room && this._room.state !== \"disconnected\") {\n try {\n await this._room.disconnect();\n this._connectionStateHandler.resetConnectionState();\n this.clearAllManagers();\n } catch (error) {\n // Handle disconnect errors gracefully\n this._connectionStateHandler.resetConnectionState();\n this.clearAllManagers();\n }\n }\n }\n\n /**\n * Clear all manager states\n */\n private clearAllManagers(): void {\n this._connectionType = null;\n this._activeTransport = null;\n this._wsSession = null;\n this._apiKey = null;\n this._authToken = null;\n this._characterId = null;\n this._endUserId = null;\n this._endUserMetadata = null;\n this._memoryManager = null; // Clear memory manager on disconnect\n this._audioManager.setWebSocketSession(null);\n this._audioManager.reset();\n this._videoManager.setWebSocketVisionMessageSender(null);\n this._videoManager.reset();\n this._screenShareManager.reset();\n }\n\n /**\n * Reconnect - disconnect and connect again using stored config\n */\n async reconnect(): Promise<void> {\n if (!this._storedConfig) {\n throw new Error(\"No stored config available for reconnection\");\n }\n await this.connect(this._storedConfig);\n }\n\n /**\n * Reset the session ID to start a new conversation\n */\n resetSession(): void {\n this._characterSessionId = \"-1\";\n this._messageHandler.reset();\n // Clear metrics and disconnect reason when resetting session\n this.updateState({ metrics: [], disconnectReason: null });\n }\n\n /**\n * Send a text message to the character\n */\n sendUserTextMessage(text: string): void {\n if (!this.isTransportReady()) return;\n if (!text || !text.trim()) return;\n\n try {\n // Reset blendshape queue if mid-conversation, but don't interrupt the server\n if (\n this.blendshapeQueue.isConversationActive() ||\n this._state.isSpeaking ||\n this.blendshapeQueue.hasBufferedFrames()\n ) {\n this._messageHandler.interruptLipsyncPlayback();\n }\n\n // Start new conversation session\n this._conversationSessionId++;\n this._conversationStartTime = Date.now();\n\n // Emit conversation start event\n this.emit(\"conversationStart\", {\n sessionId: this._conversationSessionId,\n userMessage: text.trim(),\n timestamp: this._conversationStartTime,\n });\n\n this.publishMessage(\"user_text_message\", {\n text: text.trim(),\n participant_sid:\n this._participantSid || this._room.localParticipant?.sid,\n });\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * Send a trigger message to invoke specific character actions\n */\n sendTriggerMessage(triggerName?: string, triggerMessage?: string): void {\n if (!this.isTransportReady()) return;\n\n // Reset blendshape queue if mid-conversation, but don't interrupt the server\n if (\n this.blendshapeQueue.isConversationActive() ||\n this._state.isSpeaking ||\n this.blendshapeQueue.hasBufferedFrames()\n ) {\n this._messageHandler.interruptLipsyncPlayback();\n }\n\n this._conversationSessionId++;\n this._conversationStartTime = Date.now();\n this.emit(\"conversationStart\", {\n sessionId: this._conversationSessionId,\n userMessage: `[trigger:${triggerName ?? \"\"}]`,\n timestamp: this._conversationStartTime,\n });\n\n this.publishMessage(\"trigger-message\", {\n ...(triggerName && { trigger_name: triggerName }),\n ...(triggerMessage && { trigger_message: triggerMessage }),\n participant_sid: this._participantSid || this._room.localParticipant?.sid,\n });\n }\n\n /**\n * If the bot is currently speaking or a conversation is active, send an\n * interrupt to the server and end the blendshape conversation so the queue\n * is clean before a new response starts arriving.\n */\n private endCurrentConversationIfActive(): void {\n const queueActive =\n this.blendshapeQueue.isConversationActive() ||\n this.blendshapeQueue.hasBufferedFrames();\n const botSpeaking = this._state.isSpeaking;\n\n if (!queueActive && !botSpeaking) return;\n\n if (this.isTransportReady()) {\n this.publishMessage(\"interrupt-bot\", {\n participant_sid:\n this._participantSid || this._room.localParticipant?.sid,\n });\n }\n\n // End the blendshape queue so the lipsync player finishes cleanly\n this._messageHandler.interruptLipsyncPlayback();\n }\n\n private startTrackedConversation(userMessage: string): void {\n if (\n this.blendshapeQueue.isConversationActive() ||\n this._state.isSpeaking ||\n this.blendshapeQueue.hasBufferedFrames()\n ) {\n this._messageHandler.interruptLipsyncPlayback();\n }\n\n this._conversationSessionId++;\n this._conversationStartTime = Date.now();\n this.emit(\"conversationStart\", {\n sessionId: this._conversationSessionId,\n userMessage,\n timestamp: this._conversationStartTime,\n });\n }\n\n /**\n * Send an interrupt message to stop the bot's current response\n */\n sendInterruptMessage(): void {\n if (!this.isTransportReady()) return;\n\n try {\n this.publishMessage(\"interrupt-bot\", {\n participant_sid:\n this._participantSid || this._room.localParticipant?.sid,\n });\n\n // Stop local lipsync immediately for every transport. WebSocket can also\n // buffer ahead-delivered frames, and waiting for a server cancel leaves\n // stale mouth animation visible after the audio stop.\n if (\n this.blendshapeQueue.isConversationActive() ||\n this._state.isSpeaking ||\n this.blendshapeQueue.hasBufferedFrames()\n ) {\n this._messageHandler.interruptLipsyncPlayback();\n }\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * Replace the Narrative Design template keys on the live session.\n * Same key map as the `narrativeTemplateKeys` config option; full replace,\n * not a merge. Requires Narrative Design enabled on the character.\n */\n updateTemplateKeys(templateKeys: { [key: string]: string }): void {\n if (!this.isTransportReady() || Object.keys(templateKeys).length === 0)\n return;\n\n this.publishMessage(\"update-template-keys\", {\n template_keys: templateKeys,\n participant_sid: this._participantSid || this._room.localParticipant?.sid,\n });\n }\n\n /**\n * Update dynamic information about the current context\n */\n updateDynamicInfo(dynamicInfo: DynamicInfo): void {\n if (!this.isTransportReady() || !dynamicInfo?.trim()) return;\n\n this.publishMessage(\"update-dynamic-info\", {\n dynamic_info: { text: dynamicInfo },\n participant_sid: this._participantSid || this._room.localParticipant?.sid,\n });\n }\n\n /**\n * Update the bot's temporary runtime context in a unified way.\n * Provides flexible control over ephemeral context management.\n *\n * @param options - Context update configuration\n *\n * @example\n * ```typescript\n * // Append to existing context\n * client.updateContext({\n * text: \"User completed dragon quest\",\n * mode: \"append\",\n * run_llm: \"false\"\n * });\n *\n * // Replace entire context\n * client.updateContext({\n * text: \"New game state: level 5\",\n * mode: \"replace\",\n * run_llm: \"auto\"\n * });\n *\n * // Clear context\n * client.updateContext({ mode: \"reset\" });\n * ```\n */\n updateContext(options: ContextUpdateOptions): void {\n if (!this.isTransportReady()) return;\n\n const hasText = !!options.text?.trim();\n const hasAttention = options.current_attention_object !== undefined;\n\n // text is required unless mode is \"reset\" or only updating attention\n if (options.mode !== \"reset\" && !hasText && !hasAttention) {\n console.warn(\n \"[ConvaiClient] updateContext: text or current_attention_object is required unless mode is 'reset'\",\n );\n return;\n }\n\n // Only guaranteed-response updates should preempt active local lipsync.\n // Server-scheduled auto/silent updates may be downgraded while the bot is\n // speaking, so clearing the local queue here can stop lipsync while audio\n // continues.\n const shouldPreemptLipsync = shouldPreemptForContextUpdateResponse(options);\n if (shouldPreemptLipsync) {\n this.startTrackedConversation(\n `[context-update:${options.mode ?? \"append\"}]`,\n );\n }\n\n this.publishMessage(\"context-update\", {\n ...(hasText && { text: options.text!.trim() }),\n ...(options.mode && { mode: options.mode }),\n ...(options.run_llm && { run_llm: options.run_llm }),\n ...(options.respond_mode && { respond_mode: options.respond_mode }),\n ...(hasAttention && { current_attention_object: options.current_attention_object }),\n participant_sid: this._participantSid || this._room.localParticipant?.sid,\n });\n }\n\n visionStatus(options: VisionStatusOptions = {}): string | null {\n if (!this.isTransportReady()) return null;\n const updateId = options.updateId ?? this.createUpdateId(\"vision-status\");\n this.publishMessage(\"vision-status\", {\n update_id: updateId,\n participant_sid: this._participantSid || this._room.localParticipant?.sid,\n });\n return updateId;\n }\n\n visionTrigger(options: VisionTriggerOptions = {}): string | null {\n if (!this.isTransportReady()) return null;\n const updateId = options.updateId ?? this.createUpdateId(\"vision-trigger\");\n const respondMode = options.respondMode;\n if (shouldPreemptForExplicitRespondMode(respondMode)) {\n this.startTrackedConversation(`[vision-trigger:${respondMode}]`);\n }\n this.publishMessage(\"vision-trigger\", {\n update_id: updateId,\n ...(options.text && { text: options.text }),\n ...(respondMode && { respond_mode: respondMode }),\n ...(options.frameIndices && { frame_indices: options.frameIndices }),\n ...(options.frameIds && { frame_ids: options.frameIds }),\n participant_sid: this._participantSid || this._room.localParticipant?.sid,\n });\n return updateId;\n }\n\n respondModeUpdate(options: RespondModeUpdateOptions): string | null {\n if (!this.isTransportReady()) return null;\n const updateId = options.updateId ?? this.createUpdateId(\"respond-mode\");\n this.publishMessage(\"respond-mode-update\", {\n update_id: updateId,\n modality: options.modality,\n mode: options.mode,\n participant_sid: this._participantSid || this._room.localParticipant?.sid,\n });\n return updateId;\n }\n\n /**\n * Set or clear the character's temporary state of mind.\n * This is silent: it affects the next response and does not trigger one.\n */\n updateEmotion(stateOfMind: string | null): void {\n const normalized = normalizeStateOfMind(stateOfMind) ?? null;\n\n this._stateOfMind = normalized;\n if (this._storedConfig) {\n this._storedConfig = { ...this._storedConfig, stateOfMind: normalized };\n }\n\n if (!this.isTransportReady()) return;\n\n this.publishMessage(\"update-emotion\", {\n state_of_mind: normalized,\n participant_sid:\n this._participantSid || this._room.localParticipant?.sid,\n });\n }\n\n /**\n * Send descriptive scene updates. Use when environment description changes\n * and the bot should know what is visible or nearby. Does not modify action_config.\n */\n updateSceneMetadata(\n items: Array<{ name: string; description: string }>,\n options: UpdateSceneMetadataOptions = {},\n ): void {\n if (!this.isTransportReady()) return;\n if (shouldPreemptForExplicitRespondMode(options.respondMode)) {\n this.startTrackedConversation(\n `[scene-metadata:${options.respondMode}]`,\n );\n }\n this.publishMessage(\"update-scene-metadata\", {\n scene_metadata: items,\n ...(options.respondMode && { respond_mode: options.respondMode }),\n });\n }\n\n private createUpdateId(prefix: string): string {\n if (typeof crypto !== \"undefined\" && \"randomUUID\" in crypto) {\n return `${prefix}:${crypto.randomUUID()}`;\n }\n return `${prefix}:${Date.now()}:${Math.random().toString(36).slice(2)}`;\n }\n\n private serializeRespondModes(config: RespondModesConfig): Record<string, unknown> {\n return {\n ...(config.text !== undefined && { text: config.text }),\n ...(config.audio !== undefined && { audio: config.audio }),\n ...(config.vision !== undefined && { vision: config.vision }),\n ...(config.contextUpdate !== undefined && {\n context_update: config.contextUpdate,\n }),\n ...(config.trigger !== undefined && { trigger: config.trigger }),\n ...(config.sceneMetadata !== undefined && {\n scene_metadata: config.sceneMetadata,\n }),\n };\n }\n\n /**\n * Upload a file to the character via the LiveKit byte stream transport.\n * Only works when connected with the LiveKit transport.\n *\n * @throws if not connected or if the LiveKit room is unavailable\n */\n async uploadFile(file: File, options: UploadFileOptions = {}): Promise<void> {\n if (!this._room?.localParticipant) {\n throw new Error(\"[ConvaiClient] uploadFile: not connected to a LiveKit room\");\n }\n\n const { topic = \"file-upload\", onProgress } = options;\n\n await this._room.localParticipant.sendFile(file, {\n topic,\n mimeType: file.type,\n ...(onProgress && {\n onProgress: (raw: number) => onProgress(Math.ceil(raw * 100)),\n }),\n });\n }\n\n /**\n * Toggle text-to-speech on or off\n */\n toggleTts(enabled: boolean): void {\n if (!this.isTransportReady()) return;\n this.publishMessage(\"tts-toggle\", { enabled });\n }\n\n /**\n * Toggle speech-to-text on or off\n */\n toggleStt(enabled: boolean): void {\n if (!this.isTransportReady()) return;\n this.publishMessage(\"stt-toggle\", { muted: !enabled });\n }\n\n /**\n * Reset the server-side idle timer.\n * Call this on any user activity (clicks, UI interactions, etc.) to prevent\n * the session from being disconnected due to inactivity.\n */\n resetIdleTimer(): void {\n if (!this.isTransportReady()) return;\n this.publishMessage(\"reset-idle-timer\", {\n participant_sid: this._participantSid || this._room.localParticipant?.sid,\n });\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventEmitter.js","sourceRoot":"","sources":["../../src/core/EventEmitter.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,YAAY;IAAzB;QACU,WAAM,GAAoC,IAAI,GAAG,EAAE,CAAC;IAqE9D,CAAC;IAnEC;;;;;OAKG;IACH,EAAE,CAAC,KAAa,EAAE,QAAuB;QACvC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEtC,8BAA8B;QAC9B,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC5B,CAAC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,KAAa,EAAE,QAAuB;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,SAAS,EAAE,CAAC;YACd,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC3B,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBACzB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,IAAI,CAAC,KAAa,EAAE,GAAG,IAAW;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,SAAS,EAAE,CAAC;YACd,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAC7B,IAAI,CAAC;oBACH,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;gBACpB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,KAAK,IAAI,EAAE,KAAK,CAAC,CAAC;gBACjE,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,KAAa;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC;IAC3C,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"EventEmitter.js","sourceRoot":"","sources":["../../src/core/EventEmitter.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,YAAY;IAAzB;QACU,WAAM,GAAoC,IAAI,GAAG,EAAE,CAAC;IAqE9D,CAAC;IAnEC;;;;;OAKG;IACH,EAAE,CAAC,KAAa,EAAE,QAAuB;QACvC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEtC,8BAA8B;QAC9B,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC5B,CAAC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,KAAa,EAAE,QAAuB;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,SAAS,EAAE,CAAC;YACd,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC3B,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBACzB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,IAAI,CAAC,KAAa,EAAE,GAAG,IAAW;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,SAAS,EAAE,CAAC;YACd,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAC7B,IAAI,CAAC;oBACH,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;gBACpB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,KAAK,IAAI,EAAE,KAAK,CAAC,CAAC;gBACjE,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,KAAa;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC;IAC3C,CAAC;CACF","sourcesContent":["/**\n * Simple event emitter for state change notifications\n * Allows subscribers to listen for state changes without React dependencies\n */\nexport type EventCallback = (...args: any[]) => void;\n\nexport class EventEmitter {\n private events: Map<string, Set<EventCallback>> = new Map();\n\n /**\n * Subscribe to an event\n * @param event Event name\n * @param callback Callback function\n * @returns Unsubscribe function\n */\n on(event: string, callback: EventCallback): () => void {\n if (!this.events.has(event)) {\n this.events.set(event, new Set());\n }\n \n this.events.get(event)!.add(callback);\n\n // Return unsubscribe function\n return () => {\n this.off(event, callback);\n };\n }\n\n /**\n * Unsubscribe from an event\n * @param event Event name\n * @param callback Callback function to remove\n */\n off(event: string, callback: EventCallback): void {\n const callbacks = this.events.get(event);\n if (callbacks) {\n callbacks.delete(callback);\n if (callbacks.size === 0) {\n this.events.delete(event);\n }\n }\n }\n\n /**\n * Emit an event to all subscribers\n * @param event Event name\n * @param args Arguments to pass to callbacks\n */\n emit(event: string, ...args: any[]): void {\n const callbacks = this.events.get(event);\n if (callbacks) {\n callbacks.forEach((callback) => {\n try {\n callback(...args);\n } catch (error) {\n console.error(`Error in event handler for \"${event}\":`, error);\n }\n });\n }\n }\n\n /**\n * Remove all event listeners\n */\n removeAllListeners(): void {\n this.events.clear();\n }\n\n /**\n * Get the number of listeners for an event\n * @param event Event name\n * @returns Number of listeners\n */\n listenerCount(event: string): number {\n return this.events.get(event)?.size ?? 0;\n }\n}\n\n"]}
|