@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
|
@@ -5,7 +5,7 @@ import { AudioManager } from "./AudioManager";
|
|
|
5
5
|
import { VideoManager } from "./VideoManager";
|
|
6
6
|
import { ScreenShareManager } from "./ScreenShareManager";
|
|
7
7
|
import { MessageHandler } from "./MessageHandler";
|
|
8
|
-
import {
|
|
8
|
+
import { SDK_VERSION } from "../version";
|
|
9
9
|
import { EventEmitter } from "./EventEmitter";
|
|
10
10
|
import { MemoryManager } from "./MemoryManager";
|
|
11
11
|
import { ConnectionStateHandler } from "./ConnectionStateHandler";
|
|
@@ -79,7 +79,6 @@ export class ConvaiClient extends EventEmitter {
|
|
|
79
79
|
this._apiKey = null;
|
|
80
80
|
this._authToken = null;
|
|
81
81
|
this._characterId = null;
|
|
82
|
-
this._speakerId = null;
|
|
83
82
|
this._characterSessionId = "-1";
|
|
84
83
|
this._isBotReady = false;
|
|
85
84
|
this._participantSid = "";
|
|
@@ -89,11 +88,6 @@ export class ConvaiClient extends EventEmitter {
|
|
|
89
88
|
* so updateEmotion() called before any config is stored is not lost.
|
|
90
89
|
*/
|
|
91
90
|
this._stateOfMind = null;
|
|
92
|
-
/** Roster state for multi-character rooms. Empty for single-character sessions. */
|
|
93
|
-
this._roster = new CharacterRoster();
|
|
94
|
-
/** Pending setInteractionTarget/updateCharacterRoster commands, keyed by command_id. */
|
|
95
|
-
this._pendingRosterCommands = new Map();
|
|
96
|
-
this._rosterCommandSeq = 0;
|
|
97
91
|
this._endUserId = null;
|
|
98
92
|
this._endUserMetadata = null;
|
|
99
93
|
this._wsSession = null;
|
|
@@ -130,8 +124,6 @@ export class ConvaiClient extends EventEmitter {
|
|
|
130
124
|
endUserId: null,
|
|
131
125
|
endUserMetadata: null,
|
|
132
126
|
metrics: [],
|
|
133
|
-
characters: [],
|
|
134
|
-
activeMembershipId: null,
|
|
135
127
|
disconnectReason: null,
|
|
136
128
|
};
|
|
137
129
|
// Default audio settings for optimal interruption handling
|
|
@@ -174,9 +166,6 @@ export class ConvaiClient extends EventEmitter {
|
|
|
174
166
|
get characterId() {
|
|
175
167
|
return this._characterId;
|
|
176
168
|
}
|
|
177
|
-
get speakerId() {
|
|
178
|
-
return this._speakerId;
|
|
179
|
-
}
|
|
180
169
|
get room() {
|
|
181
170
|
return this._room;
|
|
182
171
|
}
|
|
@@ -220,15 +209,7 @@ export class ConvaiClient extends EventEmitter {
|
|
|
220
209
|
});
|
|
221
210
|
this._room.on(RoomEvent.ConnectionStateChanged, this._connectionStateHandler.handleConnectionStateChanged.bind(this._connectionStateHandler));
|
|
222
211
|
// Message handler events
|
|
223
|
-
this._messageHandler.on("botReady", (
|
|
224
|
-
// Each character instance sends its own bot-ready. Feed the roster
|
|
225
|
-
// before the de-dupe below, which only guards the consumer-facing event.
|
|
226
|
-
if (this._roster.applyBotReady(about)) {
|
|
227
|
-
this.updateState({
|
|
228
|
-
characters: this._roster.characters,
|
|
229
|
-
activeMembershipId: this._roster.activeMembershipId,
|
|
230
|
-
});
|
|
231
|
-
}
|
|
212
|
+
this._messageHandler.on("botReady", () => {
|
|
232
213
|
// Server may send multiple bot-ready frames (one per client-ready
|
|
233
214
|
// we retried). Only surface the first to consumers per connect.
|
|
234
215
|
if (this._isBotReady) {
|
|
@@ -348,7 +329,6 @@ export class ConvaiClient extends EventEmitter {
|
|
|
348
329
|
this.emit("actionResponse", data);
|
|
349
330
|
});
|
|
350
331
|
this._messageHandler.on("serverResponse", (response) => {
|
|
351
|
-
this._handleRosterServerResponse(response);
|
|
352
332
|
this.emit("serverResponse", response);
|
|
353
333
|
});
|
|
354
334
|
this._messageHandler.on("interactionCreated", (data) => {
|
|
@@ -397,12 +377,8 @@ export class ConvaiClient extends EventEmitter {
|
|
|
397
377
|
* For LiveKit: publishes via the data channel.
|
|
398
378
|
* For WebSocket: sends via PipecatClient.sendClientMessage (wrapped in {t,d} envelope).
|
|
399
379
|
*/
|
|
400
|
-
publishMessage(type, data
|
|
401
|
-
|
|
402
|
-
// echoes back as extras.command_id. interaction-target REJECTS a message
|
|
403
|
-
// without it (code "invalid_command") even when the same value is present
|
|
404
|
-
// inside `data`, so the envelope field is not optional for those.
|
|
405
|
-
const message = id ? { id, type, data } : { type, data };
|
|
380
|
+
publishMessage(type, data) {
|
|
381
|
+
const message = { type, data };
|
|
406
382
|
if (this._activeTransport === "websocket" && this._wsSession?.isConnected) {
|
|
407
383
|
this._wsSession.sendMessage(type, data);
|
|
408
384
|
}
|
|
@@ -446,33 +422,15 @@ export class ConvaiClient extends EventEmitter {
|
|
|
446
422
|
this._messageHandler.setRtviMessageLogging(this._logRtviMessages);
|
|
447
423
|
const hasApiKey = Boolean(configWithDefaults.apiKey);
|
|
448
424
|
const hasAuthToken = Boolean(configWithDefaults.authToken);
|
|
449
|
-
|
|
450
|
-
const hasCharacterList = characterList.length > 0;
|
|
451
|
-
if (!hasApiKey && !hasAuthToken) {
|
|
425
|
+
if ((!hasApiKey && !hasAuthToken) || !configWithDefaults.characterId) {
|
|
452
426
|
throw new Error("Either apiKey or authToken is required, and characterId is required");
|
|
453
427
|
}
|
|
454
|
-
// Exactly one of characterId / characters — the server takes either shape,
|
|
455
|
-
// but silently ignores unknown fields, so catch the ambiguity here.
|
|
456
|
-
if (!hasCharacterList && !configWithDefaults.characterId) {
|
|
457
|
-
throw new Error("Either apiKey or authToken is required, and characterId is required");
|
|
458
|
-
}
|
|
459
|
-
if (hasCharacterList && configWithDefaults.characterId) {
|
|
460
|
-
throw new Error("Pass either characterId or characters, not both");
|
|
461
|
-
}
|
|
462
|
-
if (hasCharacterList && characterList.some((c) => !c?.characterId)) {
|
|
463
|
-
throw new Error("Every entry in characters requires a characterId");
|
|
464
|
-
}
|
|
465
428
|
this.updateState({ isConnecting: true });
|
|
466
429
|
try {
|
|
467
430
|
// Store connection config
|
|
468
431
|
this._apiKey = configWithDefaults.apiKey ?? null;
|
|
469
432
|
this._authToken = configWithDefaults.authToken ?? null;
|
|
470
|
-
this._characterId =
|
|
471
|
-
configWithDefaults.characterId ??
|
|
472
|
-
characterList[0]?.characterId ??
|
|
473
|
-
null;
|
|
474
|
-
this._roster.reset();
|
|
475
|
-
// Resolve speaker ID based on endUserId
|
|
433
|
+
this._characterId = configWithDefaults.characterId;
|
|
476
434
|
// Determine connection type based on enableVideo
|
|
477
435
|
const connType = configWithDefaults.enableVideo ? "video" : "audio";
|
|
478
436
|
this._connectionType = connType;
|
|
@@ -488,13 +446,7 @@ export class ConvaiClient extends EventEmitter {
|
|
|
488
446
|
this._stateOfMind = stateOfMind;
|
|
489
447
|
const characterSessionIdToSend = configWithDefaults.characterSessionId ?? this._characterSessionId;
|
|
490
448
|
const requestBody = {
|
|
491
|
-
|
|
492
|
-
? {
|
|
493
|
-
characters: characterList.map((c) => ({
|
|
494
|
-
character_id: c.characterId,
|
|
495
|
-
})),
|
|
496
|
-
}
|
|
497
|
-
: { character_id: configWithDefaults.characterId }),
|
|
449
|
+
character_id: configWithDefaults.characterId,
|
|
498
450
|
...(stateOfMind ? { state_of_mind: stateOfMind } : {}),
|
|
499
451
|
...(configWithDefaults.endUserId && {
|
|
500
452
|
end_user_id: configWithDefaults.endUserId,
|
|
@@ -563,7 +515,7 @@ export class ConvaiClient extends EventEmitter {
|
|
|
563
515
|
invocation_metadata: {
|
|
564
516
|
source: configWithDefaults.invocationMetadata?.source ?? "web_sdk",
|
|
565
517
|
client_version: configWithDefaults.invocationMetadata?.clientVersion ??
|
|
566
|
-
|
|
518
|
+
SDK_VERSION,
|
|
567
519
|
...(configWithDefaults.invocationMetadata?.extraMetadata && {
|
|
568
520
|
extra_metadata: configWithDefaults.invocationMetadata.extraMetadata,
|
|
569
521
|
}),
|
|
@@ -621,14 +573,6 @@ export class ConvaiClient extends EventEmitter {
|
|
|
621
573
|
characterSessionId: connectionData.character_session_id,
|
|
622
574
|
};
|
|
623
575
|
}
|
|
624
|
-
// Seed the roster before the transport comes up, so the first bot-ready
|
|
625
|
-
// and any early roster change already have instances to match against.
|
|
626
|
-
if (this._roster.applyConnectResponse(connectionData)) {
|
|
627
|
-
this.updateState({
|
|
628
|
-
characters: this._roster.characters,
|
|
629
|
-
activeMembershipId: this._roster.activeMembershipId,
|
|
630
|
-
});
|
|
631
|
-
}
|
|
632
576
|
if (connectionData.end_user_id) {
|
|
633
577
|
this._endUserId = connectionData.end_user_id;
|
|
634
578
|
}
|
|
@@ -911,7 +855,6 @@ export class ConvaiClient extends EventEmitter {
|
|
|
911
855
|
this._apiKey = null;
|
|
912
856
|
this._authToken = null;
|
|
913
857
|
this._characterId = null;
|
|
914
|
-
this._speakerId = null;
|
|
915
858
|
this._endUserId = null;
|
|
916
859
|
this._endUserMetadata = null;
|
|
917
860
|
this._memoryManager = null; // Clear memory manager on disconnect
|
|
@@ -1187,139 +1130,6 @@ export class ConvaiClient extends EventEmitter {
|
|
|
1187
1130
|
participant_sid: this._participantSid || this._room.localParticipant?.sid,
|
|
1188
1131
|
});
|
|
1189
1132
|
}
|
|
1190
|
-
/**
|
|
1191
|
-
* Correlate interaction-target / character-roster-update acks back to the
|
|
1192
|
-
* promise returned by the method that issued them, and keep roster state and
|
|
1193
|
-
* the two roster events in sync — including for changes we did not initiate.
|
|
1194
|
-
*/
|
|
1195
|
-
_handleRosterServerResponse(response) {
|
|
1196
|
-
const { event_type: eventType, extras } = response;
|
|
1197
|
-
if (eventType !== "interaction-target" &&
|
|
1198
|
-
eventType !== "character-roster-update") {
|
|
1199
|
-
return;
|
|
1200
|
-
}
|
|
1201
|
-
// Always adopt the server's epochs, including from errors — a
|
|
1202
|
-
// stale_route_epoch rejection carries the authoritative value.
|
|
1203
|
-
const commandId = extras?.command_id;
|
|
1204
|
-
const pending = commandId
|
|
1205
|
-
? this._pendingRosterCommands.get(commandId)
|
|
1206
|
-
: undefined;
|
|
1207
|
-
if (response.status === "error") {
|
|
1208
|
-
this._roster.adoptEpochs(extras ?? null);
|
|
1209
|
-
this.updateState({
|
|
1210
|
-
characters: this._roster.characters,
|
|
1211
|
-
activeMembershipId: this._roster.activeMembershipId,
|
|
1212
|
-
});
|
|
1213
|
-
if (pending && commandId) {
|
|
1214
|
-
this._pendingRosterCommands.delete(commandId);
|
|
1215
|
-
clearTimeout(pending.timer);
|
|
1216
|
-
pending.reject(Object.assign(new Error(response.message ?? `${eventType} was rejected by the server`), { code: extras?.code ?? null, extras: extras ?? null }));
|
|
1217
|
-
}
|
|
1218
|
-
return;
|
|
1219
|
-
}
|
|
1220
|
-
let result;
|
|
1221
|
-
if (eventType === "interaction-target") {
|
|
1222
|
-
result = this._roster.applyInteractionTarget(extras ?? null);
|
|
1223
|
-
this.updateState({
|
|
1224
|
-
characters: this._roster.characters,
|
|
1225
|
-
activeMembershipId: this._roster.activeMembershipId,
|
|
1226
|
-
});
|
|
1227
|
-
if (result)
|
|
1228
|
-
this.emit("activeCharacterChange", result);
|
|
1229
|
-
}
|
|
1230
|
-
else {
|
|
1231
|
-
result = this._roster.applyRosterUpdate(extras ?? null);
|
|
1232
|
-
this.updateState({
|
|
1233
|
-
characters: this._roster.characters,
|
|
1234
|
-
activeMembershipId: this._roster.activeMembershipId,
|
|
1235
|
-
});
|
|
1236
|
-
if (result)
|
|
1237
|
-
this.emit("rosterChange", result);
|
|
1238
|
-
}
|
|
1239
|
-
if (pending && commandId) {
|
|
1240
|
-
this._pendingRosterCommands.delete(commandId);
|
|
1241
|
-
clearTimeout(pending.timer);
|
|
1242
|
-
pending.resolve(result);
|
|
1243
|
-
}
|
|
1244
|
-
}
|
|
1245
|
-
/**
|
|
1246
|
-
* Publish a roster command and resolve when its ack arrives.
|
|
1247
|
-
*/
|
|
1248
|
-
_sendRosterCommand(type, build) {
|
|
1249
|
-
if (!this.isTransportReady()) {
|
|
1250
|
-
return Promise.reject(new Error(`Cannot send ${type}: not connected`));
|
|
1251
|
-
}
|
|
1252
|
-
if (!this._roster.isMultiCharacter) {
|
|
1253
|
-
return Promise.reject(new Error(`Cannot send ${type}: this session was not created with a characters array`));
|
|
1254
|
-
}
|
|
1255
|
-
const commandId = `${type}-${++this._rosterCommandSeq}`;
|
|
1256
|
-
return new Promise((resolve, reject) => {
|
|
1257
|
-
const timer = setTimeout(() => {
|
|
1258
|
-
this._pendingRosterCommands.delete(commandId);
|
|
1259
|
-
reject(new Error(`${type} timed out waiting for a server response`));
|
|
1260
|
-
}, ConvaiClient.ROSTER_COMMAND_TIMEOUT_MS);
|
|
1261
|
-
this._pendingRosterCommands.set(commandId, { resolve, reject, timer });
|
|
1262
|
-
this.publishMessage(type, build(commandId), commandId);
|
|
1263
|
-
});
|
|
1264
|
-
}
|
|
1265
|
-
/**
|
|
1266
|
-
* Route subsequent user turns to a different character instance.
|
|
1267
|
-
*
|
|
1268
|
-
* Retries once against the server's authoritative epoch if the routing epoch
|
|
1269
|
-
* was stale, which happens when another participant switched first.
|
|
1270
|
-
*/
|
|
1271
|
-
async setInteractionTarget(membershipId) {
|
|
1272
|
-
if (!membershipId) {
|
|
1273
|
-
throw new Error("setInteractionTarget requires a membershipId");
|
|
1274
|
-
}
|
|
1275
|
-
if (this._roster.isMultiCharacter && !this._roster.find(membershipId)) {
|
|
1276
|
-
throw new Error(`Unknown membershipId "${membershipId}". Address instances by membershipId, not characterId.`);
|
|
1277
|
-
}
|
|
1278
|
-
const send = () => this._sendRosterCommand("interaction-target", (commandId) => this._roster.buildInteractionTarget(membershipId, commandId));
|
|
1279
|
-
try {
|
|
1280
|
-
await send();
|
|
1281
|
-
}
|
|
1282
|
-
catch (error) {
|
|
1283
|
-
const code = error?.code;
|
|
1284
|
-
if (code !== "stale_route_epoch")
|
|
1285
|
-
throw error;
|
|
1286
|
-
// The roster adopted the server's epoch when the error came in, so a
|
|
1287
|
-
// single retry is now fenced correctly.
|
|
1288
|
-
await send();
|
|
1289
|
-
}
|
|
1290
|
-
const instance = this._roster.find(membershipId);
|
|
1291
|
-
if (!instance) {
|
|
1292
|
-
throw new Error(`interaction-target succeeded but membership "${membershipId}" is not in the roster`);
|
|
1293
|
-
}
|
|
1294
|
-
return instance;
|
|
1295
|
-
}
|
|
1296
|
-
/**
|
|
1297
|
-
* Add or remove character instances on a live room, without reconnecting.
|
|
1298
|
-
*/
|
|
1299
|
-
async updateCharacterRoster(options) {
|
|
1300
|
-
const add = options?.add ?? [];
|
|
1301
|
-
const remove = options?.remove ?? [];
|
|
1302
|
-
if (add.length === 0 && remove.length === 0) {
|
|
1303
|
-
throw new Error("updateCharacterRoster requires at least one add or remove");
|
|
1304
|
-
}
|
|
1305
|
-
if (add.some((c) => !c?.characterId)) {
|
|
1306
|
-
throw new Error("Every entry in add requires a characterId");
|
|
1307
|
-
}
|
|
1308
|
-
// The server rejects removing the active instance without a replacement
|
|
1309
|
-
// (`replacement_target_required`), and rejects one that is not ready yet
|
|
1310
|
-
// (`replacement_target_unavailable`). Choose a ready survivor by default.
|
|
1311
|
-
const active = this._roster.activeMembershipId;
|
|
1312
|
-
const effective = !options.replacementTarget && active && remove.includes(active)
|
|
1313
|
-
? { ...options, replacementTarget: this._roster.pickReplacement(remove) }
|
|
1314
|
-
: options;
|
|
1315
|
-
const result = (await this._sendRosterCommand("character-roster-update", (commandId) => this._roster.buildRosterUpdate(effective, commandId)));
|
|
1316
|
-
// A success ack that moved nothing still resolves; report the roster as-is.
|
|
1317
|
-
return (result ?? {
|
|
1318
|
-
added: [],
|
|
1319
|
-
removed: [],
|
|
1320
|
-
characters: this._roster.characters,
|
|
1321
|
-
});
|
|
1322
|
-
}
|
|
1323
1133
|
/**
|
|
1324
1134
|
* Send descriptive scene updates. Use when environment description changes
|
|
1325
1135
|
* and the bot should know what is visible or nearby. Does not modify action_config.
|
|
@@ -1405,6 +1215,4 @@ export class ConvaiClient extends EventEmitter {
|
|
|
1405
1215
|
}
|
|
1406
1216
|
ConvaiClient.CLIENT_READY_RETRY_MS = 500;
|
|
1407
1217
|
ConvaiClient.CLIENT_READY_TIMEOUT_MS = 45000;
|
|
1408
|
-
/** Timeout for a roster command to be acknowledged by the server. */
|
|
1409
|
-
ConvaiClient.ROSTER_COMMAND_TIMEOUT_MS = 10000;
|
|
1410
1218
|
//# sourceMappingURL=ConvaiClient.js.map
|
|
@@ -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"]}
|