@convai/web-sdk 1.7.0-beta.0 → 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/README.md +40 -6
- 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.d.ts +1 -31
- package/dist/core/ConvaiClient.d.ts.map +1 -1
- package/dist/core/ConvaiClient.js +8 -200
- 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.d.ts.map +1 -1
- package/dist/core/MessageHandler.js +4 -26
- 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.d.ts +2 -2
- package/dist/core/connectRequest.js +3 -3
- 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.d.ts +9 -163
- package/dist/core/types.d.ts.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.d.ts.map +1 -1
- package/dist/react/hooks/useConvaiClient.js +0 -3
- 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.d.ts +2 -2
- package/dist/vanilla/types.d.ts.map +1 -1
- package/dist/vanilla/types.js.map +1 -1
- package/dist/vanilla/websocket.js.map +1 -1
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +4 -0
- package/dist/version.js.map +1 -0
- package/package.json +13 -6
- package/dist/core/CharacterRoster.d.ts +0 -68
- package/dist/core/CharacterRoster.d.ts.map +0 -1
- package/dist/core/CharacterRoster.js +0 -235
- package/dist/core/CharacterRoster.js.map +0 -1
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
**Real-time conversational AI characters for the web.**
|
|
4
4
|
|
|
5
|
-
[](https://www.npmjs.com/package/@convai/web-sdk)
|
|
6
6
|
[](https://www.typescriptlang.org/)
|
|
7
7
|
[](./LICENSE)
|
|
8
8
|
|
|
@@ -10,14 +10,18 @@ TypeScript-first SDK for embedding Convai AI characters into React and vanilla J
|
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
13
|
-
## What's new in 1.
|
|
13
|
+
## What's new in 1.7.0
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
- **Character state of mind** — set a temporary generation mood with the `stateOfMind` config option, and change it mid-session with `updateEmotion()` without triggering a response. [Usage below.](#character-state-of-mind)
|
|
16
|
+
- **Send-ahead enabled by default** — NeuroSync lipsync ahead-delivery is now on by default, reversing the 1.6.0 opt-in. Fall back to the legacy paced path with `blendshapeConfig.deliver_chunks_ahead: false`.
|
|
17
|
+
- **Lipsync naturalness pipeline** — modular naturalness processing with a tuned MetaHuman profile.
|
|
18
|
+
- **Adaptive glass widget styling** — `ConvaiWidget` adapts to light and dark backgrounds.
|
|
19
|
+
|
|
20
|
+
### Previously in 1.6.0
|
|
16
21
|
|
|
17
22
|
- **Narrative Design template keys** — personalize one narrative graph per session: seed values at connect with the `narrativeTemplateKeys` config option, replace them mid-session with `updateTemplateKeys()`. [Usage below.](#narrative-design-template-keys)
|
|
18
23
|
- **Typed parameterized actions** — `actionResponse` is now typed via the exported `ConvaiAction` / `ActionResponseEvent`, including the `target` of parameterized actions. [Usage below.](#actions)
|
|
19
24
|
- **Vision dynamic context** — camera, screen, canvas, and custom tracks feed unified vision context on WebRTC, with hardened WebSocket vision handling. [Usage below.](#vision-dynamic-context-beta)
|
|
20
|
-
- **Send-ahead disabled by default** — lipsync send-ahead is now opt-in.
|
|
21
25
|
|
|
22
26
|
---
|
|
23
27
|
|
|
@@ -26,7 +30,7 @@ TypeScript-first SDK for embedding Convai AI characters into React and vanilla J
|
|
|
26
30
|
- **React & vanilla JS** — `useConvaiClient` hook, `ConvaiWidget`, and a framework-agnostic core
|
|
27
31
|
- **Real-time audio/video** — full-duplex WebRTC with echo cancellation, camera, and screen share
|
|
28
32
|
- **Lipsync** — ARKit and MetaHuman blendshape streams for facial animation
|
|
29
|
-
- **Emotions** — per-turn emotion detection with intensity scale
|
|
33
|
+
- **Emotions & state of mind** — per-turn emotion detection with intensity scale, plus a settable generation mood
|
|
30
34
|
- **Dynamic context & vision** — inject text state, scene metadata, and LiveKit video frames mid-session
|
|
31
35
|
- **Actions & Narrative Design** — typed action decisions with parameterized targets, named triggers, and per-session template keys
|
|
32
36
|
- **Long-term memory** — persistent cross-session memories scoped to each end user
|
|
@@ -101,7 +105,7 @@ Full documentation is at **<a href="https://docs.convai.com/api-docs/plugins-and
|
|
|
101
105
|
| <a href="https://docs.convai.com/api-docs/plugins-and-integrations/web-plugins/convai-web-sdk" target="_blank" rel="noopener noreferrer">Vanilla JS</a> | `ConvaiClient`, `createConvaiWidget`, and audio setup |
|
|
102
106
|
| <a href="https://docs.convai.com/api-docs/plugins-and-integrations/web-plugins/convai-web-sdk/event-reference" target="_blank" rel="noopener noreferrer">Events</a> | Full event reference — `botReady`, `stateChange`, `messagesChange`, `interactionCreated`, and more |
|
|
103
107
|
| <a href="https://docs.convai.com/api-docs/plugins-and-integrations/web-plugins/convai-web-sdk/dynamic-context" target="_blank" rel="noopener noreferrer">Context Management</a> | Dynamic context, `updateContext`, file upload, session management |
|
|
104
|
-
| <a href="https://docs.convai.com/api-docs/plugins-and-integrations/web-plugins/convai-web-sdk/emotions" target="_blank" rel="noopener noreferrer">Emotions</a> | Per-turn emotion detection
|
|
108
|
+
| <a href="https://docs.convai.com/api-docs/plugins-and-integrations/web-plugins/convai-web-sdk/emotions" target="_blank" rel="noopener noreferrer">Emotions</a> | Per-turn emotion detection, provider options, and `stateOfMind` / `updateEmotion()` |
|
|
105
109
|
| <a href="https://docs.convai.com/api-docs/plugins-and-integrations/web-plugins/convai-web-sdk" target="_blank" rel="noopener noreferrer">Lipsync</a> | ARKit / MetaHuman blendshape streams and `BlendshapeQueue` API |
|
|
106
110
|
| <a href="https://docs.convai.com/api-docs/plugins-and-integrations/web-plugins/convai-web-sdk/actions" target="_blank" rel="noopener noreferrer">Actions</a> | Trigger character behaviors and scene actions |
|
|
107
111
|
| <a href="https://docs.convai.com/api-docs/plugins-and-integrations/web-plugins/convai-web-sdk/long-term-memory" target="_blank" rel="noopener noreferrer">Memory</a> | Long-term memory scoped to end users |
|
|
@@ -236,6 +240,36 @@ Requires Narrative Design on the character; `updateTemplateKeys` is a full repla
|
|
|
236
240
|
|
|
237
241
|
---
|
|
238
242
|
|
|
243
|
+
## Character state of mind
|
|
244
|
+
|
|
245
|
+
Set a temporary generation mood that shapes tone and pacing for the next response. This is separate from `enableEmotion`, which reports the character's detected emotion *after* a turn.
|
|
246
|
+
|
|
247
|
+
```ts
|
|
248
|
+
const client = new ConvaiClient({
|
|
249
|
+
apiKey: "...",
|
|
250
|
+
characterId: "...",
|
|
251
|
+
stateOfMind: "anticipation",
|
|
252
|
+
});
|
|
253
|
+
|
|
254
|
+
// Mid-session. Affects the next response; does not trigger one.
|
|
255
|
+
client.updateEmotion("joy");
|
|
256
|
+
client.updateEmotion(null); // clear — "neutral" and "" clear it too
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
Values are trimmed and lowercased. The runtime value carries into the next connect, including a reconnect; an explicit `stateOfMind` in the connect config takes precedence.
|
|
260
|
+
|
|
261
|
+
Requires backend support — live on production as of 2026-08-20. On a backend without it, the server replies with an `Unknown message type` error on `serverResponse`. Because `/connect` silently ignores unknown fields, a successful connect alone does not prove `state_of_mind` was applied, so watch the ack:
|
|
262
|
+
|
|
263
|
+
```ts
|
|
264
|
+
client.on("serverResponse", (r) => {
|
|
265
|
+
if (r.event_type === "update-emotion" && r.status !== "success") {
|
|
266
|
+
console.warn("state of mind unsupported by this backend:", r.message);
|
|
267
|
+
}
|
|
268
|
+
});
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
239
273
|
## License
|
|
240
274
|
|
|
241
275
|
Licensed under the [Apache License 2.0](./LICENSE). Copyright 2025 Convai.
|
|
@@ -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,5 +1,5 @@
|
|
|
1
1
|
import { Room } from "livekit-client";
|
|
2
|
-
import { ConvaiConfig, ConvaiClientState, ChatMessage, IConvaiClient, AudioControls, VideoControls, ScreenShareControls, DynamicInfo, ContextUpdateOptions, UploadFileOptions, WebSocketSessionFactory, RespondModeUpdateOptions, UpdateSceneMetadataOptions, VisionStatusOptions, VisionTriggerOptions
|
|
2
|
+
import { ConvaiConfig, ConvaiClientState, ChatMessage, IConvaiClient, AudioControls, VideoControls, ScreenShareControls, DynamicInfo, ContextUpdateOptions, UploadFileOptions, WebSocketSessionFactory, RespondModeUpdateOptions, UpdateSceneMetadataOptions, VisionStatusOptions, VisionTriggerOptions } from "./types";
|
|
3
3
|
import { EventEmitter } from "./EventEmitter";
|
|
4
4
|
import { BlendshapeQueue } from "./BlendshapeQueue";
|
|
5
5
|
import { MemoryManager } from "./MemoryManager";
|
|
@@ -46,7 +46,6 @@ export declare class ConvaiClient extends EventEmitter implements IConvaiClient
|
|
|
46
46
|
private _apiKey;
|
|
47
47
|
private _authToken;
|
|
48
48
|
private _characterId;
|
|
49
|
-
private _speakerId;
|
|
50
49
|
private _characterSessionId;
|
|
51
50
|
private _isBotReady;
|
|
52
51
|
private _participantSid;
|
|
@@ -57,11 +56,6 @@ export declare class ConvaiClient extends EventEmitter implements IConvaiClient
|
|
|
57
56
|
* so updateEmotion() called before any config is stored is not lost.
|
|
58
57
|
*/
|
|
59
58
|
private _stateOfMind;
|
|
60
|
-
/** Roster state for multi-character rooms. Empty for single-character sessions. */
|
|
61
|
-
private _roster;
|
|
62
|
-
/** Pending setInteractionTarget/updateCharacterRoster commands, keyed by command_id. */
|
|
63
|
-
private _pendingRosterCommands;
|
|
64
|
-
private _rosterCommandSeq;
|
|
65
59
|
private _endUserId;
|
|
66
60
|
private _endUserMetadata;
|
|
67
61
|
private _wsSession;
|
|
@@ -93,7 +87,6 @@ export declare class ConvaiClient extends EventEmitter implements IConvaiClient
|
|
|
93
87
|
get apiKey(): string | null;
|
|
94
88
|
get authToken(): string | null;
|
|
95
89
|
get characterId(): string | null;
|
|
96
|
-
get speakerId(): string | null;
|
|
97
90
|
get room(): Room;
|
|
98
91
|
get chatMessages(): ChatMessage[];
|
|
99
92
|
get userTranscription(): string;
|
|
@@ -224,29 +217,6 @@ export declare class ConvaiClient extends EventEmitter implements IConvaiClient
|
|
|
224
217
|
* This is silent: it affects the next response and does not trigger one.
|
|
225
218
|
*/
|
|
226
219
|
updateEmotion(stateOfMind: string | null): void;
|
|
227
|
-
/** Timeout for a roster command to be acknowledged by the server. */
|
|
228
|
-
private static readonly ROSTER_COMMAND_TIMEOUT_MS;
|
|
229
|
-
/**
|
|
230
|
-
* Correlate interaction-target / character-roster-update acks back to the
|
|
231
|
-
* promise returned by the method that issued them, and keep roster state and
|
|
232
|
-
* the two roster events in sync — including for changes we did not initiate.
|
|
233
|
-
*/
|
|
234
|
-
private _handleRosterServerResponse;
|
|
235
|
-
/**
|
|
236
|
-
* Publish a roster command and resolve when its ack arrives.
|
|
237
|
-
*/
|
|
238
|
-
private _sendRosterCommand;
|
|
239
|
-
/**
|
|
240
|
-
* Route subsequent user turns to a different character instance.
|
|
241
|
-
*
|
|
242
|
-
* Retries once against the server's authoritative epoch if the routing epoch
|
|
243
|
-
* was stale, which happens when another participant switched first.
|
|
244
|
-
*/
|
|
245
|
-
setInteractionTarget(membershipId: string): Promise<ConvaiCharacterInstance>;
|
|
246
|
-
/**
|
|
247
|
-
* Add or remove character instances on a live room, without reconnecting.
|
|
248
|
-
*/
|
|
249
|
-
updateCharacterRoster(options: UpdateCharacterRosterOptions): Promise<CharacterRosterChange>;
|
|
250
220
|
/**
|
|
251
221
|
* Send descriptive scene updates. Use when environment description changes
|
|
252
222
|
* and the bot should know what is visible or nearby. Does not modify action_config.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConvaiClient.d.ts","sourceRoot":"","sources":["../../src/core/ConvaiClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EAML,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,WAAW,EAEX,aAAa,EACb,aAAa,EACb,aAAa,EACb,mBAAmB,EACnB,WAAW,EACX,oBAAoB,EACpB,iBAAiB,EAIjB,uBAAuB,EACvB,wBAAwB,EAExB,0BAA0B,EAC1B,mBAAmB,EACnB,oBAAoB,
|
|
1
|
+
{"version":3,"file":"ConvaiClient.d.ts","sourceRoot":"","sources":["../../src/core/ConvaiClient.ts"],"names":[],"mappings":"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"}
|