@convai/web-sdk 1.3.1-beta.0 → 1.4.0-beta.0
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.d.ts +4 -0
- package/dist/core/AudioManager.d.ts.map +1 -1
- package/dist/core/AudioManager.js +26 -0
- package/dist/core/AudioManager.js.map +1 -1
- package/dist/core/BlendshapeQueue.d.ts +13 -1
- package/dist/core/BlendshapeQueue.d.ts.map +1 -1
- package/dist/core/BlendshapeQueue.js +56 -5
- package/dist/core/BlendshapeQueue.js.map +1 -1
- package/dist/core/ConvaiClient.d.ts +26 -0
- package/dist/core/ConvaiClient.d.ts.map +1 -1
- package/dist/core/ConvaiClient.js +287 -196
- package/dist/core/ConvaiClient.js.map +1 -1
- package/dist/core/MessageHandler.d.ts +6 -0
- package/dist/core/MessageHandler.d.ts.map +1 -1
- package/dist/core/MessageHandler.js +107 -27
- package/dist/core/MessageHandler.js.map +1 -1
- package/dist/core/WebSocketSession.d.ts +45 -0
- package/dist/core/WebSocketSession.d.ts.map +1 -0
- package/dist/core/WebSocketSession.js +133 -0
- package/dist/core/WebSocketSession.js.map +1 -0
- package/dist/core/types.d.ts +15 -51
- package/dist/core/types.d.ts.map +1 -1
- package/dist/react/components/ConvaiWidget.d.ts.map +1 -1
- package/dist/react/components/ConvaiWidget.js +26 -14
- package/dist/react/components/ConvaiWidget.js.map +1 -1
- package/dist/react/hooks/useConvaiClient.d.ts.map +1 -1
- package/dist/react/hooks/useConvaiClient.js +16 -0
- package/dist/react/hooks/useConvaiClient.js.map +1 -1
- package/dist/vanilla/AudioRenderer.d.ts +6 -0
- package/dist/vanilla/AudioRenderer.d.ts.map +1 -1
- package/dist/vanilla/AudioRenderer.js +21 -0
- package/dist/vanilla/AudioRenderer.js.map +1 -1
- package/dist/vanilla/ConvaiWidget.d.ts.map +1 -1
- package/dist/vanilla/ConvaiWidget.js +1 -0
- package/dist/vanilla/ConvaiWidget.js.map +1 -1
- package/dist/vanilla/types.d.ts +1 -1
- package/dist/vanilla/types.d.ts.map +1 -1
- package/package.json +3 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Room } from "livekit-client";
|
|
2
2
|
import { AudioControls } from "./types";
|
|
3
3
|
import { EventEmitter } from "./EventEmitter";
|
|
4
|
+
import type { WebSocketSession } from "./WebSocketSession";
|
|
4
5
|
/**
|
|
5
6
|
* Manages audio controls for LiveKit room
|
|
6
7
|
* Provides methods to enable/disable microphone, manage audio devices,
|
|
@@ -8,10 +9,13 @@ import { EventEmitter } from "./EventEmitter";
|
|
|
8
9
|
*/
|
|
9
10
|
export declare class AudioManager extends EventEmitter implements AudioControls {
|
|
10
11
|
private room;
|
|
12
|
+
private _wsSession;
|
|
11
13
|
private _isAudioEnabled;
|
|
12
14
|
private _isAudioMuted;
|
|
13
15
|
private _audioLevel;
|
|
14
16
|
constructor(room?: Room);
|
|
17
|
+
setWebSocketSession(session: WebSocketSession | null): void;
|
|
18
|
+
syncWsAudioState(isEnabled: boolean): void;
|
|
15
19
|
get isAudioEnabled(): boolean;
|
|
16
20
|
get isAudioMuted(): boolean;
|
|
17
21
|
get audioLevel(): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudioManager.d.ts","sourceRoot":"","sources":["../../src/core/AudioManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"AudioManager.d.ts","sourceRoot":"","sources":["../../src/core/AudioManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D;;;;GAIG;AACH,qBAAa,YAAa,SAAQ,YAAa,YAAW,aAAa;IACrE,OAAO,CAAC,IAAI,CAAqB;IACjC,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,WAAW,CAAa;gBAEpB,IAAI,CAAC,EAAE,IAAI;IAOvB,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,GAAG,IAAI;IAI3D,gBAAgB,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAS1C,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAczB;;OAEG;IACH,OAAO,CAAC,cAAc;IA2CtB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAKxB;;;;OAIG;IACH,iBAAiB,CAAC,OAAO,GAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,IAAI;IA0CzD;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IA2BlC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAwCnC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAIhC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAIlC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAQlC;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYrD;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAUnD;;OAEG;IACH,yBAAyB,IAAI,IAAI;IAOjC;;OAEG;IACH,wBAAwB,IAAI,IAAI;IAIhC;;OAEG;IACH,KAAK,IAAI,IAAI;CAUd"}
|
|
@@ -8,6 +8,7 @@ export class AudioManager extends EventEmitter {
|
|
|
8
8
|
constructor(room) {
|
|
9
9
|
super();
|
|
10
10
|
this.room = null;
|
|
11
|
+
this._wsSession = null;
|
|
11
12
|
this._isAudioEnabled = false;
|
|
12
13
|
this._isAudioMuted = false;
|
|
13
14
|
this._audioLevel = 0;
|
|
@@ -15,6 +16,17 @@ export class AudioManager extends EventEmitter {
|
|
|
15
16
|
this.setRoom(room);
|
|
16
17
|
}
|
|
17
18
|
}
|
|
19
|
+
setWebSocketSession(session) {
|
|
20
|
+
this._wsSession = session;
|
|
21
|
+
}
|
|
22
|
+
syncWsAudioState(isEnabled) {
|
|
23
|
+
this._isAudioEnabled = isEnabled;
|
|
24
|
+
this._isAudioMuted = !isEnabled;
|
|
25
|
+
this.emit("audioStateChange", {
|
|
26
|
+
isAudioMuted: this._isAudioMuted,
|
|
27
|
+
isAudioEnabled: this._isAudioEnabled,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
18
30
|
get isAudioEnabled() {
|
|
19
31
|
return this._isAudioEnabled;
|
|
20
32
|
}
|
|
@@ -134,6 +146,13 @@ export class AudioManager extends EventEmitter {
|
|
|
134
146
|
* Enable audio
|
|
135
147
|
*/
|
|
136
148
|
async enableAudio() {
|
|
149
|
+
if (this._wsSession) {
|
|
150
|
+
this._wsSession.enableMic(true);
|
|
151
|
+
this._isAudioEnabled = true;
|
|
152
|
+
this._isAudioMuted = false;
|
|
153
|
+
this.emit('audioStateChange', { isAudioMuted: false, isAudioEnabled: true, audioLevel: this._audioLevel });
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
137
156
|
if (!this.room) {
|
|
138
157
|
throw new Error('Room not initialized');
|
|
139
158
|
}
|
|
@@ -155,6 +174,13 @@ export class AudioManager extends EventEmitter {
|
|
|
155
174
|
* Disable audio and completely release microphone
|
|
156
175
|
*/
|
|
157
176
|
async disableAudio() {
|
|
177
|
+
if (this._wsSession) {
|
|
178
|
+
this._wsSession.enableMic(false);
|
|
179
|
+
this._isAudioEnabled = false;
|
|
180
|
+
this._isAudioMuted = true;
|
|
181
|
+
this.emit('audioStateChange', { isAudioMuted: true, isAudioEnabled: false, audioLevel: 0 });
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
158
184
|
if (!this.room) {
|
|
159
185
|
throw new Error('Room not initialized');
|
|
160
186
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudioManager.js","sourceRoot":"","sources":["../../src/core/AudioManager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"AudioManager.js","sourceRoot":"","sources":["../../src/core/AudioManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,6 +37,8 @@ export declare class BlendshapeQueue {
|
|
|
37
37
|
private framesConsumed;
|
|
38
38
|
private interrupted;
|
|
39
39
|
private interruptedAtFrame;
|
|
40
|
+
private needsNormalization;
|
|
41
|
+
private _awaitingBotSpeak;
|
|
40
42
|
private static readonly TARGET_FPS;
|
|
41
43
|
/**
|
|
42
44
|
* Create a new BlendshapeQueue
|
|
@@ -123,7 +125,7 @@ export declare class BlendshapeQueue {
|
|
|
123
125
|
* Mark bot as started speaking (called when bot-started-speaking event received)
|
|
124
126
|
* This signals that the lipsync player can start consuming frames
|
|
125
127
|
*/
|
|
126
|
-
startBotSpeaking():
|
|
128
|
+
startBotSpeaking(): boolean;
|
|
127
129
|
/**
|
|
128
130
|
* Mark bot as stopped speaking (called when bot-stopped-speaking event received)
|
|
129
131
|
*/
|
|
@@ -144,6 +146,13 @@ export declare class BlendshapeQueue {
|
|
|
144
146
|
* Keeps last 10 frames in queue and fades them out
|
|
145
147
|
*/
|
|
146
148
|
interrupt(): void;
|
|
149
|
+
/**
|
|
150
|
+
* Consume the normalization signal (one-shot).
|
|
151
|
+
* Returns true if the lipsync player should begin lerping morphs back to 0.
|
|
152
|
+
* startConversation() intentionally does NOT clear this so the signal survives
|
|
153
|
+
* the immediate queue reset that follows an interruption.
|
|
154
|
+
*/
|
|
155
|
+
consumeNormalizationSignal(): boolean;
|
|
147
156
|
/**
|
|
148
157
|
* Get turn stats
|
|
149
158
|
*/
|
|
@@ -181,7 +190,10 @@ export declare class BlendshapeQueue {
|
|
|
181
190
|
getDebugInfo(): {
|
|
182
191
|
frameCount: number;
|
|
183
192
|
conversationActive: boolean;
|
|
193
|
+
botSpeaking: boolean;
|
|
184
194
|
conversationEnded: boolean;
|
|
195
|
+
interrupted: boolean;
|
|
196
|
+
awaitingBotSpeak: boolean;
|
|
185
197
|
framesConsumed: number;
|
|
186
198
|
turnStats: TurnStats | null;
|
|
187
199
|
timeLeftMs: number | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlendshapeQueue.d.ts","sourceRoot":"","sources":["../../src/core/BlendshapeQueue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,iBAAiB,EAAE,MAAM,CAAC;IAC1B,uBAAuB,EAAE,MAAM,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,kBAAkB,CAAkB;IAC5C,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,iBAAiB,CAAkB;IAC3C,OAAO,CAAC,MAAM,CAAC,CAAmD;IAClE,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,kBAAkB,CAAa;
|
|
1
|
+
{"version":3,"file":"BlendshapeQueue.d.ts","sourceRoot":"","sources":["../../src/core/BlendshapeQueue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,iBAAiB,EAAE,MAAM,CAAC;IAC1B,uBAAuB,EAAE,MAAM,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,kBAAkB,CAAkB;IAC5C,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,iBAAiB,CAAkB;IAC3C,OAAO,CAAC,MAAM,CAAC,CAAmD;IAClE,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,kBAAkB,CAAa;IACvC,OAAO,CAAC,kBAAkB,CAAkB;IAC5C,OAAO,CAAC,iBAAiB,CAAkB;IAG3C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAM;IAExC;;;OAGG;gBACS,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,YAAY,KAAK,YAAY;IAIrE;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI;IA+BvC;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,YAAY,KAAK,YAAY,GAAG,IAAI;IAIzE;;OAEG;IACH,WAAW,IAAI,IAAI;IAInB;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;;OAGG;IACH,SAAS,IAAI,YAAY,EAAE;IAI3B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAO5C;;;;;;OAMG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IA+CrD;;;OAGG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAOlC;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,oBAAoB,IAAI,OAAO;IAI/B;;;;;;;;;;OAUG;IACH,mBAAmB,IAAI,OAAO;IAyB9B;;;OAGG;IACH,oBAAoB,IAAI,OAAO;IAI/B;;;OAGG;IACH,iBAAiB,IAAI,IAAI;IAazB;;;OAGG;IACH,gBAAgB,IAAI,OAAO;IAY3B;;OAEG;IACH,eAAe,IAAI,IAAI;IAIvB;;;OAGG;IACH,aAAa,IAAI,OAAO;IAIxB;;;;OAIG;IACH,eAAe,CAAC,KAAK,CAAC,EAAE,SAAS,GAAG,IAAI;IAexC;;;OAGG;IACH,SAAS,IAAI,IAAI;IAcjB;;;;;OAKG;IACH,0BAA0B,IAAI,OAAO;IAMrC;;OAEG;IACH,YAAY,IAAI,SAAS,GAAG,IAAI;IAIhC;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAI3B;;;OAGG;IACH,aAAa,IAAI,MAAM,GAAG,IAAI;IAiB9B;;OAEG;IACH,mBAAmB,IAAI,OAAO;IAK9B;;;OAGG;IACH,KAAK,IAAI,IAAI;IAWb;;;;OAIG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG;QACnC,KAAK,EAAE,YAAY,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;KACpB,GAAG,IAAI;IAiBR;;OAEG;IACH,YAAY,IAAI;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,kBAAkB,EAAE,OAAO,CAAC;QAC5B,WAAW,EAAE,OAAO,CAAC;QACrB,iBAAiB,EAAE,OAAO,CAAC;QAC3B,WAAW,EAAE,OAAO,CAAC;QACrB,gBAAgB,EAAE,OAAO,CAAC;QAC1B,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;QAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3B;CAaF"}
|
|
@@ -34,6 +34,8 @@ export class BlendshapeQueue {
|
|
|
34
34
|
this.framesConsumed = 0;
|
|
35
35
|
this.interrupted = false; // Track if conversation was interrupted
|
|
36
36
|
this.interruptedAtFrame = 0; // Frame number when interrupted
|
|
37
|
+
this.needsNormalization = false; // One-shot signal for lipsync player to lerp morphs back to 0
|
|
38
|
+
this._awaitingBotSpeak = false; // Set by startConversation(), cleared by startBotSpeaking(); guards against stale blendshape-turn-stats
|
|
37
39
|
this.mapper = mapper;
|
|
38
40
|
}
|
|
39
41
|
/**
|
|
@@ -41,13 +43,21 @@ export class BlendshapeQueue {
|
|
|
41
43
|
* @param blendshapes - Array of blendshape frames (each frame is an array of numbers)
|
|
42
44
|
*/
|
|
43
45
|
addChunk(blendshapes) {
|
|
44
|
-
// Accept frames
|
|
45
|
-
//
|
|
46
|
-
|
|
46
|
+
// Accept frames when:
|
|
47
|
+
// a) conversation is active (user sent message, server hasn't sent turn-stats yet), OR
|
|
48
|
+
// b) bot is currently speaking (bot-started-speaking received), OR
|
|
49
|
+
// c) Fix 3: turn-stats already arrived but we haven't yet received all expected frames —
|
|
50
|
+
// this covers the race where bot-stopped-speaking and blendshape-turn-stats both reach
|
|
51
|
+
// the client before the last in-flight blendshape chunks do. Without this guard those
|
|
52
|
+
// trailing chunks would be silently dropped because both flags above are already false.
|
|
53
|
+
const framesReceivedSoFar = this.framesConsumed + this.queue.length;
|
|
54
|
+
const stillExpectingFrames = this.conversationEnded &&
|
|
55
|
+
this.turnStats !== null &&
|
|
56
|
+
framesReceivedSoFar < this.turnStats.total_blendshapes;
|
|
57
|
+
const shouldAcceptFrames = this.conversationActive || this.botSpeaking || stillExpectingFrames;
|
|
47
58
|
if (!shouldAcceptFrames) {
|
|
48
59
|
return;
|
|
49
60
|
}
|
|
50
|
-
const before = this.queue.length;
|
|
51
61
|
for (let i = 0; i < blendshapes.length; i++) {
|
|
52
62
|
const rawFrame = blendshapes[i];
|
|
53
63
|
// Apply mapper if provided, otherwise convert to Float32Array directly
|
|
@@ -56,7 +66,6 @@ export class BlendshapeQueue {
|
|
|
56
66
|
: new Float32Array(rawFrame);
|
|
57
67
|
this.queue.push(mappedFrame);
|
|
58
68
|
}
|
|
59
|
-
const after = this.queue.length;
|
|
60
69
|
}
|
|
61
70
|
/**
|
|
62
71
|
* Set or update the mapper function
|
|
@@ -185,6 +194,15 @@ export class BlendshapeQueue {
|
|
|
185
194
|
if (!this.conversationEnded) {
|
|
186
195
|
return false;
|
|
187
196
|
}
|
|
197
|
+
// Don't signal end while the bot is still speaking — blendshape-turn-stats
|
|
198
|
+
// arrives before bot-stopped-speaking (blendshapes are generated ahead of
|
|
199
|
+
// audio). Returning true here while botSpeaking is true causes the React
|
|
200
|
+
// player's normalization guard (isConversationActive || isBotSpeaking) to
|
|
201
|
+
// mis-fire and cancel normalization, and causes the vanilla player to call
|
|
202
|
+
// reset() while audio is still playing.
|
|
203
|
+
if (this.botSpeaking) {
|
|
204
|
+
return false;
|
|
205
|
+
}
|
|
188
206
|
// Check completion - EITHER:
|
|
189
207
|
// A) All expected frames consumed based on server stats
|
|
190
208
|
const allFramesConsumed = this.isAllFramesConsumed();
|
|
@@ -213,13 +231,22 @@ export class BlendshapeQueue {
|
|
|
213
231
|
this.turnStats = null; // Clear old stats
|
|
214
232
|
this.interrupted = false; // Reset interruption flag
|
|
215
233
|
this.interruptedAtFrame = 0;
|
|
234
|
+
this._awaitingBotSpeak = true; // Guard: ignore stale blendshape-turn-stats until new bot-started-speaking
|
|
216
235
|
}
|
|
217
236
|
/**
|
|
218
237
|
* Mark bot as started speaking (called when bot-started-speaking event received)
|
|
219
238
|
* This signals that the lipsync player can start consuming frames
|
|
220
239
|
*/
|
|
221
240
|
startBotSpeaking() {
|
|
241
|
+
// Reject stale bot-started-speaking that arrives after the current turn has already
|
|
242
|
+
// ended (conversationEnded=true). This happens when an interrupted conversation's
|
|
243
|
+
// delayed bot-started-speaking arrives after a later conversation has fully completed.
|
|
244
|
+
if (this.conversationEnded) {
|
|
245
|
+
return false;
|
|
246
|
+
}
|
|
222
247
|
this.botSpeaking = true;
|
|
248
|
+
this._awaitingBotSpeak = false; // New turn confirmed — endConversation() is now valid
|
|
249
|
+
return true;
|
|
223
250
|
}
|
|
224
251
|
/**
|
|
225
252
|
* Mark bot as stopped speaking (called when bot-stopped-speaking event received)
|
|
@@ -240,6 +267,12 @@ export class BlendshapeQueue {
|
|
|
240
267
|
* Stops accepting new frames and marks conversation as ended
|
|
241
268
|
*/
|
|
242
269
|
endConversation(stats) {
|
|
270
|
+
// Ignore stale blendshape-turn-stats that arrive after startConversation()
|
|
271
|
+
// but before the new turn's bot-started-speaking. These are in-flight leftovers
|
|
272
|
+
// from the interrupted turn and would corrupt conversationEnded/botSpeaking state.
|
|
273
|
+
if (this._awaitingBotSpeak) {
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
243
276
|
// Stop accepting new frames when conversation ends
|
|
244
277
|
this.conversationActive = false;
|
|
245
278
|
this.conversationEnded = true;
|
|
@@ -256,11 +289,24 @@ export class BlendshapeQueue {
|
|
|
256
289
|
this.interruptedAtFrame = this.framesConsumed + this.queue.length;
|
|
257
290
|
this.conversationActive = false; // Stop accepting new frames
|
|
258
291
|
this.botSpeaking = false; // Bot is no longer speaking due to interruption
|
|
292
|
+
this.conversationEnded = true; // Mark conversation as ended so the player can drain fade-out frames and fire onConversationEnded
|
|
293
|
+
this.needsNormalization = true; // Signal lipsync player to lerp morphs back to 0
|
|
259
294
|
// Keep only last 10 frames for fade out
|
|
260
295
|
if (this.queue.length > 10) {
|
|
261
296
|
this.queue = this.queue.slice(-10);
|
|
262
297
|
}
|
|
263
298
|
}
|
|
299
|
+
/**
|
|
300
|
+
* Consume the normalization signal (one-shot).
|
|
301
|
+
* Returns true if the lipsync player should begin lerping morphs back to 0.
|
|
302
|
+
* startConversation() intentionally does NOT clear this so the signal survives
|
|
303
|
+
* the immediate queue reset that follows an interruption.
|
|
304
|
+
*/
|
|
305
|
+
consumeNormalizationSignal() {
|
|
306
|
+
const val = this.needsNormalization;
|
|
307
|
+
this.needsNormalization = false;
|
|
308
|
+
return val;
|
|
309
|
+
}
|
|
264
310
|
/**
|
|
265
311
|
* Get turn stats
|
|
266
312
|
*/
|
|
@@ -308,6 +354,8 @@ export class BlendshapeQueue {
|
|
|
308
354
|
this.conversationEnded = false;
|
|
309
355
|
this.turnStats = null;
|
|
310
356
|
this.framesConsumed = 0;
|
|
357
|
+
this.needsNormalization = false;
|
|
358
|
+
this._awaitingBotSpeak = false;
|
|
311
359
|
}
|
|
312
360
|
/**
|
|
313
361
|
* Get frame at specified time
|
|
@@ -334,7 +382,10 @@ export class BlendshapeQueue {
|
|
|
334
382
|
return {
|
|
335
383
|
frameCount: this.queue.length,
|
|
336
384
|
conversationActive: this.conversationActive,
|
|
385
|
+
botSpeaking: this.botSpeaking,
|
|
337
386
|
conversationEnded: this.conversationEnded,
|
|
387
|
+
interrupted: this.interrupted,
|
|
388
|
+
awaitingBotSpeak: this._awaitingBotSpeak,
|
|
338
389
|
framesConsumed: this.framesConsumed,
|
|
339
390
|
turnStats: this.turnStats,
|
|
340
391
|
timeLeftMs: this.getTimeLeftMs(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlendshapeQueue.js","sourceRoot":"","sources":["../../src/core/BlendshapeQueue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAUH,MAAM,OAAO,eAAe;
|
|
1
|
+
{"version":3,"file":"BlendshapeQueue.js","sourceRoot":"","sources":["../../src/core/BlendshapeQueue.ts"],"names":[],"mappings":"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"}
|
|
@@ -54,6 +54,8 @@ export declare class ConvaiClient extends EventEmitter implements IConvaiClient
|
|
|
54
54
|
private _storedConfig;
|
|
55
55
|
private _endUserId;
|
|
56
56
|
private _endUserMetadata;
|
|
57
|
+
private _wsSession;
|
|
58
|
+
private _activeTransport;
|
|
57
59
|
private _audioManager;
|
|
58
60
|
private _videoManager;
|
|
59
61
|
private _screenShareManager;
|
|
@@ -94,6 +96,16 @@ export declare class ConvaiClient extends EventEmitter implements IConvaiClient
|
|
|
94
96
|
* Update state and emit changes
|
|
95
97
|
*/
|
|
96
98
|
private updateState;
|
|
99
|
+
/**
|
|
100
|
+
* Send a data message via the active transport.
|
|
101
|
+
* For LiveKit: publishes via the data channel.
|
|
102
|
+
* For WebSocket: sends via PipecatClient.sendClientMessage (wrapped in {t,d} envelope).
|
|
103
|
+
*/
|
|
104
|
+
private publishMessage;
|
|
105
|
+
/**
|
|
106
|
+
* Returns true when a message can be sent on the active transport.
|
|
107
|
+
*/
|
|
108
|
+
private isTransportReady;
|
|
97
109
|
/**
|
|
98
110
|
* Connect to a Convai character
|
|
99
111
|
*/
|
|
@@ -122,6 +134,12 @@ export declare class ConvaiClient extends EventEmitter implements IConvaiClient
|
|
|
122
134
|
* Send a trigger message to invoke specific character actions
|
|
123
135
|
*/
|
|
124
136
|
sendTriggerMessage(triggerName?: string, triggerMessage?: string): void;
|
|
137
|
+
/**
|
|
138
|
+
* If the bot is currently speaking or a conversation is active, send an
|
|
139
|
+
* interrupt to the server and end the blendshape conversation so the queue
|
|
140
|
+
* is clean before a new response starts arriving.
|
|
141
|
+
*/
|
|
142
|
+
private endCurrentConversationIfActive;
|
|
125
143
|
/**
|
|
126
144
|
* Send an interrupt message to stop the bot's current response
|
|
127
145
|
*/
|
|
@@ -163,6 +181,14 @@ export declare class ConvaiClient extends EventEmitter implements IConvaiClient
|
|
|
163
181
|
* ```
|
|
164
182
|
*/
|
|
165
183
|
updateContext(options: ContextUpdateOptions): void;
|
|
184
|
+
/**
|
|
185
|
+
* Send descriptive scene updates. Use when environment description changes
|
|
186
|
+
* and the bot should know what is visible or nearby. Does not modify action_config.
|
|
187
|
+
*/
|
|
188
|
+
updateSceneMetadata(items: Array<{
|
|
189
|
+
name: string;
|
|
190
|
+
description: string;
|
|
191
|
+
}>): void;
|
|
166
192
|
/**
|
|
167
193
|
* Toggle text-to-speech on or off
|
|
168
194
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConvaiClient.d.ts","sourceRoot":"","sources":["../../src/core/ConvaiClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EAKL,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,WAAW,EAEX,aAAa,EACb,aAAa,EACb,aAAa,EACb,mBAAmB,EACnB,WAAW,EACX,oBAAoB,EACrB,MAAM,SAAS,CAAC;AAKjB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"ConvaiClient.d.ts","sourceRoot":"","sources":["../../src/core/ConvaiClient.ts"],"names":[],"mappings":"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"}
|