@convai/web-sdk 1.8.0-beta.3 → 1.8.0-beta.5

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.
Files changed (102) hide show
  1. package/README.md +37 -1
  2. package/dist/core/AudioManager.d.ts +3 -3
  3. package/dist/core/AudioManager.js +1 -1
  4. package/dist/core/CharacterVersionManager.d.ts +100 -0
  5. package/dist/core/CharacterVersionManager.d.ts.map +1 -0
  6. package/dist/core/CharacterVersionManager.js +227 -0
  7. package/dist/core/CharacterVersionManager.js.map +1 -0
  8. package/dist/core/ConnectionStateHandler.d.ts +1 -1
  9. package/dist/core/ConvaiClient.d.ts +19 -4
  10. package/dist/core/ConvaiClient.d.ts.map +1 -1
  11. package/dist/core/ConvaiClient.js +74 -17
  12. package/dist/core/ConvaiClient.js.map +1 -1
  13. package/dist/core/MemoryManager.d.ts +1 -1
  14. package/dist/core/MessageHandler.d.ts +3 -3
  15. package/dist/core/MessageHandler.js +2 -2
  16. package/dist/core/SSESession.d.ts +1 -1
  17. package/dist/core/SSESession.js +1 -1
  18. package/dist/core/ScreenShareManager.d.ts +2 -2
  19. package/dist/core/ScreenShareManager.js +2 -2
  20. package/dist/core/VideoManager.d.ts +2 -2
  21. package/dist/core/VideoManager.js +3 -3
  22. package/dist/core/characterReference.d.ts +40 -0
  23. package/dist/core/characterReference.d.ts.map +1 -0
  24. package/dist/core/characterReference.js +72 -0
  25. package/dist/core/characterReference.js.map +1 -0
  26. package/dist/core/connectRequest.d.ts +1 -1
  27. package/dist/core/contextUpdateRequest.d.ts +1 -1
  28. package/dist/core/index.d.ts +14 -12
  29. package/dist/core/index.d.ts.map +1 -1
  30. package/dist/core/index.js +13 -10
  31. package/dist/core/index.js.map +1 -1
  32. package/dist/core/types.d.ts +257 -4
  33. package/dist/core/types.d.ts.map +1 -1
  34. package/dist/core/types.js.map +1 -1
  35. package/dist/core/videoSourceState.d.ts +1 -1
  36. package/dist/core/visionRequest.d.ts +1 -1
  37. package/dist/index.d.ts +2 -2
  38. package/dist/index.js +2 -2
  39. package/dist/lipsync-helpers/createBlendshapeQueue.d.ts +2 -2
  40. package/dist/lipsync-helpers/createBlendshapeQueue.js +2 -2
  41. package/dist/lipsync-helpers/declarativeMapping.d.ts +1 -1
  42. package/dist/lipsync-helpers/declarativeMapping.js +2 -2
  43. package/dist/lipsync-helpers/index.d.ts +12 -12
  44. package/dist/lipsync-helpers/index.js +9 -9
  45. package/dist/lipsync-helpers/mhaLimitDrivers.js +2 -2
  46. package/dist/lipsync-helpers/naturalness/processor.d.ts +1 -1
  47. package/dist/lipsync-helpers/naturalness/processor.js +1 -1
  48. package/dist/lipsync-helpers/naturalness/profiles/mha.d.ts +1 -1
  49. package/dist/lipsync-helpers/naturalness/profiles/mha.js +1 -1
  50. package/dist/lipsync-helpers/presetMappers.d.ts +1 -1
  51. package/dist/react/components/ConvaiWidget.d.ts +1 -1
  52. package/dist/react/components/ConvaiWidget.js +4 -4
  53. package/dist/react/components/index.d.ts +1 -1
  54. package/dist/react/components/index.js +1 -1
  55. package/dist/react/components/rtc-widget/components/AudioSettingsPanel.d.ts +1 -1
  56. package/dist/react/components/rtc-widget/components/ConviMessage.js +3 -3
  57. package/dist/react/components/rtc-widget/components/FloatingVideo.js +3 -3
  58. package/dist/react/components/rtc-widget/components/MessageBubble.js +1 -1
  59. package/dist/react/components/rtc-widget/components/MessageList.d.ts +1 -1
  60. package/dist/react/components/rtc-widget/components/MessageList.js +4 -4
  61. package/dist/react/components/rtc-widget/components/UserMessage.js +3 -3
  62. package/dist/react/components/rtc-widget/components/conviComponents/ConviButton.js +4 -4
  63. package/dist/react/components/rtc-widget/components/conviComponents/ConviFooter.js +3 -3
  64. package/dist/react/components/rtc-widget/components/conviComponents/ConviHeader.js +4 -4
  65. package/dist/react/components/rtc-widget/components/conviComponents/SettingsTray.js +3 -3
  66. package/dist/react/components/rtc-widget/components/conviComponents/VoiceModeOverlay.js +3 -3
  67. package/dist/react/components/rtc-widget/components/conviComponents/index.d.ts +5 -5
  68. package/dist/react/components/rtc-widget/components/conviComponents/index.js +5 -5
  69. package/dist/react/components/rtc-widget/components/index.d.ts +8 -8
  70. package/dist/react/components/rtc-widget/components/index.js +9 -9
  71. package/dist/react/components/rtc-widget/index.d.ts +5 -5
  72. package/dist/react/components/rtc-widget/index.js +3 -3
  73. package/dist/react/components/rtc-widget/styles/icons.d.ts +1 -1
  74. package/dist/react/components/rtc-widget/styles/icons.js +1 -1
  75. package/dist/react/components/rtc-widget/styles/index.d.ts +5 -5
  76. package/dist/react/components/rtc-widget/styles/index.js +4 -4
  77. package/dist/react/components/rtc-widget/styles/styledComponents.js +1 -1
  78. package/dist/react/hooks/index.d.ts +3 -3
  79. package/dist/react/hooks/index.js +3 -3
  80. package/dist/react/hooks/useCharacterInfo.js +1 -1
  81. package/dist/react/hooks/useConvaiClient.d.ts +1 -1
  82. package/dist/react/hooks/useConvaiClient.d.ts.map +1 -1
  83. package/dist/react/hooks/useConvaiClient.js +8 -3
  84. package/dist/react/hooks/useConvaiClient.js.map +1 -1
  85. package/dist/react/index.d.ts +6 -6
  86. package/dist/react/index.js +6 -6
  87. package/dist/vanilla/AudioRenderer.js +1 -1
  88. package/dist/vanilla/ConvaiWidget.d.ts +1 -1
  89. package/dist/vanilla/ConvaiWidget.js +4 -4
  90. package/dist/vanilla/WebSocketSession.d.ts +1 -1
  91. package/dist/vanilla/WebSocketSession.js +1 -1
  92. package/dist/vanilla/index.d.ts +6 -5
  93. package/dist/vanilla/index.d.ts.map +1 -1
  94. package/dist/vanilla/index.js +5 -4
  95. package/dist/vanilla/index.js.map +1 -1
  96. package/dist/vanilla/types.d.ts +1 -1
  97. package/dist/vanilla/websocket.d.ts +1 -1
  98. package/dist/vanilla/websocket.js +2 -2
  99. package/dist/version.d.ts +1 -1
  100. package/dist/version.js +1 -1
  101. package/dist/version.js.map +1 -1
  102. package/package.json +5 -4
@@ -1,19 +1,21 @@
1
1
  import { Room, RoomEvent, DefaultReconnectPolicy, setLogLevel, } from "livekit-client";
2
2
  setLogLevel("warn");
3
- import { DisconnectReasonEnum, } from "./types";
4
- import { AudioManager } from "./AudioManager";
5
- import { VideoManager } from "./VideoManager";
6
- import { ScreenShareManager } from "./ScreenShareManager";
7
- import { MessageHandler } from "./MessageHandler";
8
- import { SDK_VERSION } from "../version";
9
- import { EventEmitter } from "./EventEmitter";
10
- import { MemoryManager } from "./MemoryManager";
11
- import { ConnectionStateHandler } from "./ConnectionStateHandler";
12
- import { buildActionConnectConfig, buildBlendshapeConnectConfig, buildEmotionConnectConfig, } from "./connectRequest";
13
- import { shouldPreemptForContextUpdateResponse, shouldPreemptForExplicitRespondMode, } from "./contextUpdateRequest";
14
- import { resolveVisionInputConfig, serializeVisionInputConfig, } from "./visionRequest";
15
- import { SSESession } from "./SSESession";
16
- import { isValidLogicalTurnId } from "./logicalTurn";
3
+ import { DisconnectReasonEnum, } from "./types.js";
4
+ import { AudioManager } from "./AudioManager.js";
5
+ import { VideoManager } from "./VideoManager.js";
6
+ import { ScreenShareManager } from "./ScreenShareManager.js";
7
+ import { MessageHandler } from "./MessageHandler.js";
8
+ import { SDK_VERSION } from "../version.js";
9
+ import { EventEmitter } from "./EventEmitter.js";
10
+ import { MemoryManager } from "./MemoryManager.js";
11
+ import { CharacterVersionManager } from "./CharacterVersionManager.js";
12
+ import { resolveCharacterReference, } from "./characterReference.js";
13
+ import { ConnectionStateHandler } from "./ConnectionStateHandler.js";
14
+ import { buildActionConnectConfig, buildBlendshapeConnectConfig, buildEmotionConnectConfig, } from "./connectRequest.js";
15
+ import { shouldPreemptForContextUpdateResponse, shouldPreemptForExplicitRespondMode, } from "./contextUpdateRequest.js";
16
+ import { resolveVisionInputConfig, serializeVisionInputConfig, } from "./visionRequest.js";
17
+ import { SSESession } from "./SSESession.js";
18
+ import { isValidLogicalTurnId } from "./logicalTurn.js";
17
19
  // Module-level registry — populated by importing @convai/web-sdk/vanilla/websocket
18
20
  let _wsFactory = null;
19
21
  function normalizeStateOfMind(value) {
@@ -81,6 +83,10 @@ export class ConvaiClient extends EventEmitter {
81
83
  this._apiKey = null;
82
84
  this._authToken = null;
83
85
  this._characterId = null;
86
+ this._characterVersion = null;
87
+ this._characterReference = null;
88
+ this._characterVersionManager = null;
89
+ this._characterVersionManagerKey = null;
84
90
  this._characterSessionId = "-1";
85
91
  this._isBotReady = false;
86
92
  this._participantSid = "";
@@ -169,6 +175,42 @@ export class ConvaiClient extends EventEmitter {
169
175
  get characterId() {
170
176
  return this._characterId;
171
177
  }
178
+ get characterVersion() {
179
+ return this._characterVersion;
180
+ }
181
+ get characterReference() {
182
+ return this._characterReference;
183
+ }
184
+ /**
185
+ * Character version manager for the configured character. Built from the
186
+ * live connection when there is one, otherwise from the stored config, so
187
+ * versions can be listed and released before connecting. Null without an
188
+ * API key (the Character REST platform does not accept realtime auth tokens).
189
+ */
190
+ get characterVersions() {
191
+ const apiKey = this._apiKey ?? this._storedConfig?.apiKey ?? null;
192
+ const rawCharacterId = this._characterId ?? this._storedConfig?.characterId ?? null;
193
+ if (!apiKey || !rawCharacterId)
194
+ return null;
195
+ let characterId = rawCharacterId;
196
+ try {
197
+ characterId = resolveCharacterReference(rawCharacterId).characterId;
198
+ }
199
+ catch {
200
+ // A malformed id is reported by connect(); use it verbatim here.
201
+ }
202
+ const baseUrl = this._storedConfig?.characterApiUrl ?? undefined;
203
+ const key = `${apiKey}\u0000${characterId}\u0000${baseUrl ?? ""}`;
204
+ if (this._characterVersionManagerKey !== key) {
205
+ this._characterVersionManager = new CharacterVersionManager({
206
+ apiKey,
207
+ characterId,
208
+ baseUrl,
209
+ });
210
+ this._characterVersionManagerKey = key;
211
+ }
212
+ return this._characterVersionManager;
213
+ }
172
214
  get room() {
173
215
  return this._room;
174
216
  }
@@ -430,6 +472,8 @@ export class ConvaiClient extends EventEmitter {
430
472
  this._apiKey = configWithDefaults.apiKey ?? null;
431
473
  this._authToken = configWithDefaults.authToken ?? null;
432
474
  this._characterId = configWithDefaults.characterId;
475
+ this._characterVersion = configWithDefaults.characterVersion ?? null;
476
+ this._characterReference = configWithDefaults.characterReference;
433
477
  // Determine connection type based on enableVideo
434
478
  const connType = configWithDefaults.enableVideo ? "video" : "audio";
435
479
  this._connectionType = connType;
@@ -453,7 +497,7 @@ export class ConvaiClient extends EventEmitter {
453
497
  this._sseSession = new SSESession({
454
498
  interactionApiUrl: configWithDefaults.interactionApiUrl,
455
499
  authorization: configWithDefaults.authToken ?? configWithDefaults.apiKey,
456
- characterId: configWithDefaults.characterId,
500
+ characterId: configWithDefaults.characterReference,
457
501
  getCharacterSessionId: () => this._characterSessionId,
458
502
  takeStateOfMind: () => {
459
503
  const stateOfMind = this._stateOfMind;
@@ -496,7 +540,7 @@ export class ConvaiClient extends EventEmitter {
496
540
  // Prepare request body with required parameters
497
541
  const characterSessionIdToSend = configWithDefaults.characterSessionId ?? this._characterSessionId;
498
542
  const requestBody = {
499
- character_id: configWithDefaults.characterId,
543
+ character_id: configWithDefaults.characterReference,
500
544
  ...(stateOfMind ? { state_of_mind: stateOfMind } : {}),
501
545
  ...(configWithDefaults.endUserId && {
502
546
  end_user_id: configWithDefaults.endUserId,
@@ -686,7 +730,16 @@ export class ConvaiClient extends EventEmitter {
686
730
  if (missingCredential || !configWithDefaults.characterId) {
687
731
  throw new Error("Either apiKey or authToken is required, and characterId is required");
688
732
  }
689
- return configWithDefaults;
733
+ // Split the character id from its version selector. The bare UUID names
734
+ // the character everywhere inside the SDK (memory, character info); the
735
+ // joined reference is what the runtime receives.
736
+ const reference = resolveCharacterReference(configWithDefaults.characterId, configWithDefaults.characterVersion);
737
+ return {
738
+ ...configWithDefaults,
739
+ characterId: reference.characterId,
740
+ characterVersion: reference.version,
741
+ characterReference: reference.reference,
742
+ };
690
743
  }
691
744
  /**
692
745
  * Consume a /connect response and bring up the transport.
@@ -718,6 +771,8 @@ export class ConvaiClient extends EventEmitter {
718
771
  this._apiKey = configWithDefaults.apiKey ?? null;
719
772
  this._authToken = configWithDefaults.authToken ?? null;
720
773
  this._characterId = configWithDefaults.characterId;
774
+ this._characterVersion = configWithDefaults.characterVersion ?? null;
775
+ this._characterReference = configWithDefaults.characterReference;
721
776
  const connType = configWithDefaults.enableVideo ? "video" : "audio";
722
777
  this._connectionType = connType;
723
778
  const transportType = configWithDefaults.transport ?? "livekit";
@@ -1016,6 +1071,8 @@ export class ConvaiClient extends EventEmitter {
1016
1071
  this._apiKey = null;
1017
1072
  this._authToken = null;
1018
1073
  this._characterId = null;
1074
+ this._characterVersion = null;
1075
+ this._characterReference = null;
1019
1076
  this._endUserId = null;
1020
1077
  this._endUserMetadata = null;
1021
1078
  this._memoryManager = null; // Clear memory manager on disconnect