@elevenlabs/client 0.15.2 → 1.0.0-rc.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.
Files changed (160) hide show
  1. package/README.md +20 -836
  2. package/dist/BaseConversation.d.ts +10 -12
  3. package/dist/BaseConversation.d.ts.map +1 -0
  4. package/dist/BaseConversation.js +392 -0
  5. package/dist/BaseConversation.js.map +1 -0
  6. package/dist/InputController.d.ts +13 -0
  7. package/dist/InputController.d.ts.map +1 -0
  8. package/dist/InputController.js +2 -0
  9. package/dist/InputController.js.map +1 -0
  10. package/dist/OutputController.d.ts +12 -0
  11. package/dist/OutputController.d.ts.map +1 -0
  12. package/dist/OutputController.js +2 -0
  13. package/dist/OutputController.js.map +1 -0
  14. package/dist/TextConversation.d.ts +7 -0
  15. package/dist/TextConversation.d.ts.map +1 -0
  16. package/dist/TextConversation.js +53 -0
  17. package/dist/TextConversation.js.map +1 -0
  18. package/dist/VoiceConversation.d.ts +14 -12
  19. package/dist/VoiceConversation.d.ts.map +1 -0
  20. package/dist/VoiceConversation.js +225 -0
  21. package/dist/VoiceConversation.js.map +1 -0
  22. package/dist/index.d.ts +11 -6
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +20 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/internal.d.ts +8 -0
  27. package/dist/internal.d.ts.map +1 -0
  28. package/dist/internal.js +6 -0
  29. package/dist/internal.js.map +1 -0
  30. package/dist/lib.iife.js +23493 -0
  31. package/dist/lib.iife.js.map +1 -0
  32. package/dist/platform/VoiceSessionSetup.d.ts +35 -0
  33. package/dist/platform/VoiceSessionSetup.d.ts.map +1 -0
  34. package/dist/platform/VoiceSessionSetup.js +74 -0
  35. package/dist/platform/VoiceSessionSetup.js.map +1 -0
  36. package/dist/scribe/connection.d.ts +1 -0
  37. package/dist/scribe/connection.d.ts.map +1 -0
  38. package/dist/scribe/connection.js +363 -0
  39. package/dist/scribe/connection.js.map +1 -0
  40. package/dist/scribe/index.d.ts +1 -0
  41. package/dist/scribe/index.d.ts.map +1 -0
  42. package/dist/scribe/index.js +8 -0
  43. package/dist/scribe/index.js.map +1 -0
  44. package/dist/scribe/scribe.d.ts +1 -0
  45. package/dist/scribe/scribe.d.ts.map +1 -0
  46. package/dist/scribe/scribe.js +193 -0
  47. package/dist/scribe/scribe.js.map +1 -0
  48. package/dist/sourceInfo.d.ts +7 -0
  49. package/dist/sourceInfo.d.ts.map +1 -0
  50. package/dist/sourceInfo.js +9 -0
  51. package/dist/sourceInfo.js.map +1 -0
  52. package/dist/utils/BaseConnection.d.ts +2 -9
  53. package/dist/utils/BaseConnection.d.ts.map +1 -0
  54. package/dist/utils/BaseConnection.js +73 -0
  55. package/dist/utils/BaseConnection.js.map +1 -0
  56. package/dist/utils/ConnectionFactory.d.ts +1 -0
  57. package/dist/utils/ConnectionFactory.d.ts.map +1 -0
  58. package/dist/utils/ConnectionFactory.js +26 -0
  59. package/dist/utils/ConnectionFactory.js.map +1 -0
  60. package/dist/utils/WebRTCConnection.d.ts +6 -1
  61. package/dist/utils/WebRTCConnection.d.ts.map +1 -0
  62. package/dist/utils/WebRTCConnection.js +494 -0
  63. package/dist/utils/WebRTCConnection.js.map +1 -0
  64. package/dist/utils/WebSocketConnection.d.ts +8 -3
  65. package/dist/utils/WebSocketConnection.d.ts.map +1 -0
  66. package/dist/utils/WebSocketConnection.js +155 -0
  67. package/dist/utils/WebSocketConnection.js.map +1 -0
  68. package/dist/utils/applyDelay.d.ts +1 -0
  69. package/dist/utils/applyDelay.d.ts.map +1 -0
  70. package/dist/utils/applyDelay.js +18 -0
  71. package/dist/utils/applyDelay.js.map +1 -0
  72. package/dist/utils/attachConnectionToOutput.d.ts +5 -0
  73. package/dist/utils/attachConnectionToOutput.d.ts.map +1 -0
  74. package/dist/utils/attachConnectionToOutput.js +11 -0
  75. package/dist/utils/attachConnectionToOutput.js.map +1 -0
  76. package/dist/utils/attachInputToConnection.d.ts +6 -0
  77. package/dist/utils/attachInputToConnection.d.ts.map +1 -0
  78. package/dist/utils/attachInputToConnection.js +16 -0
  79. package/dist/utils/attachInputToConnection.js.map +1 -0
  80. package/dist/utils/audio.d.ts +1 -0
  81. package/dist/utils/audio.d.ts.map +1 -0
  82. package/dist/utils/audio.js +16 -0
  83. package/dist/utils/audio.js.map +1 -0
  84. package/dist/utils/audioConcatProcessor.generated.d.ts +1 -0
  85. package/dist/utils/audioConcatProcessor.generated.d.ts.map +1 -0
  86. package/{worklets/audioConcatProcessor.js → dist/utils/audioConcatProcessor.generated.js} +12 -18
  87. package/dist/utils/audioConcatProcessor.generated.js.map +1 -0
  88. package/dist/utils/compatibility.d.ts +1 -0
  89. package/dist/utils/compatibility.d.ts.map +1 -0
  90. package/dist/utils/compatibility.js +16 -0
  91. package/dist/utils/compatibility.js.map +1 -0
  92. package/dist/utils/connection.d.ts +11 -0
  93. package/dist/utils/connection.d.ts.map +1 -0
  94. package/dist/utils/connection.js +14 -0
  95. package/dist/utils/connection.js.map +1 -0
  96. package/dist/utils/createWorkletModuleLoader.d.ts +1 -0
  97. package/dist/utils/createWorkletModuleLoader.d.ts.map +1 -0
  98. package/dist/utils/createWorkletModuleLoader.js +43 -0
  99. package/dist/utils/createWorkletModuleLoader.js.map +1 -0
  100. package/dist/utils/errors.d.ts +1 -0
  101. package/dist/utils/errors.d.ts.map +1 -0
  102. package/dist/utils/errors.js +11 -0
  103. package/dist/utils/errors.js.map +1 -0
  104. package/dist/utils/events.d.ts +3 -5
  105. package/dist/utils/events.d.ts.map +1 -0
  106. package/dist/utils/events.js +4 -0
  107. package/dist/utils/events.js.map +1 -0
  108. package/dist/utils/input.d.ts +22 -11
  109. package/dist/utils/input.d.ts.map +1 -0
  110. package/dist/utils/input.js +181 -0
  111. package/dist/utils/input.js.map +1 -0
  112. package/dist/utils/location.d.ts +5 -0
  113. package/dist/utils/location.d.ts.map +1 -0
  114. package/dist/utils/location.js +31 -0
  115. package/dist/utils/location.js.map +1 -0
  116. package/dist/utils/mergeOptions.d.ts +11 -0
  117. package/dist/utils/mergeOptions.d.ts.map +1 -0
  118. package/dist/utils/mergeOptions.js +38 -0
  119. package/dist/utils/mergeOptions.js.map +1 -0
  120. package/dist/utils/output.d.ts +36 -10
  121. package/dist/utils/output.d.ts.map +1 -0
  122. package/dist/utils/output.js +127 -0
  123. package/dist/utils/output.js.map +1 -0
  124. package/dist/utils/overrides.d.ts +1 -0
  125. package/dist/utils/overrides.d.ts.map +1 -0
  126. package/dist/utils/overrides.js +40 -0
  127. package/dist/utils/overrides.js.map +1 -0
  128. package/dist/utils/postOverallFeedback.d.ts +1 -0
  129. package/dist/utils/postOverallFeedback.d.ts.map +1 -0
  130. package/dist/utils/postOverallFeedback.js +19 -0
  131. package/dist/utils/postOverallFeedback.js.map +1 -0
  132. package/dist/utils/rawAudioProcessor.generated.d.ts +1 -0
  133. package/dist/utils/rawAudioProcessor.generated.d.ts.map +1 -0
  134. package/{worklets/rawAudioProcessor.js → dist/utils/rawAudioProcessor.generated.js} +7 -1
  135. package/dist/utils/rawAudioProcessor.generated.js.map +1 -0
  136. package/dist/utils/scribeAudioProcessor.generated.d.ts +1 -0
  137. package/dist/utils/scribeAudioProcessor.generated.d.ts.map +1 -0
  138. package/{worklets/scribeAudioProcessor.js → dist/utils/scribeAudioProcessor.generated.js} +7 -1
  139. package/dist/utils/scribeAudioProcessor.generated.js.map +1 -0
  140. package/dist/version.d.ts +2 -1
  141. package/dist/version.d.ts.map +1 -0
  142. package/dist/version.js +3 -0
  143. package/dist/version.js.map +1 -0
  144. package/package.json +22 -16
  145. package/.turbo/turbo-build.log +0 -13
  146. package/.turbo/turbo-generate-version.log +0 -4
  147. package/.turbo/turbo-generate-worklets.log +0 -9
  148. package/.turbo/turbo-lint$colon$es.log +0 -6
  149. package/.turbo/turbo-lint$colon$prettier.log +0 -6
  150. package/CHANGELOG.md +0 -50
  151. package/dist/lib.cjs +0 -2
  152. package/dist/lib.cjs.map +0 -1
  153. package/dist/lib.modern.js +0 -2
  154. package/dist/lib.modern.js.map +0 -1
  155. package/dist/lib.module.js +0 -2
  156. package/dist/lib.module.js.map +0 -1
  157. package/dist/lib.umd.js +0 -2
  158. package/dist/lib.umd.js.map +0 -1
  159. package/dist/utils/addLibsamplerateModule.d.ts +0 -1
  160. package/scripts/generateWorklets.js +0 -59
@@ -0,0 +1,193 @@
1
+ import { RealtimeConnection } from "./connection";
2
+ import { loadScribeAudioProcessor } from "../utils/scribeAudioProcessor.generated";
3
+ export var AudioFormat;
4
+ (function (AudioFormat) {
5
+ AudioFormat["PCM_8000"] = "pcm_8000";
6
+ AudioFormat["PCM_16000"] = "pcm_16000";
7
+ AudioFormat["PCM_22050"] = "pcm_22050";
8
+ AudioFormat["PCM_24000"] = "pcm_24000";
9
+ AudioFormat["PCM_44100"] = "pcm_44100";
10
+ AudioFormat["PCM_48000"] = "pcm_48000";
11
+ AudioFormat["ULAW_8000"] = "ulaw_8000";
12
+ })(AudioFormat || (AudioFormat = {}));
13
+ export var CommitStrategy;
14
+ (function (CommitStrategy) {
15
+ CommitStrategy["MANUAL"] = "manual";
16
+ CommitStrategy["VAD"] = "vad";
17
+ })(CommitStrategy || (CommitStrategy = {}));
18
+ /**
19
+ * Real-time speech-to-text transcription client for browser environments.
20
+ * Supports microphone streaming and manual audio chunk transmission.
21
+ */
22
+ // biome-ignore lint/complexity/noStaticOnlyClass: This class is static only because it is a singleton
23
+ export class ScribeRealtime {
24
+ static DEFAULT_BASE_URI = "wss://api.elevenlabs.io";
25
+ static getWebSocketUri(baseUri = ScribeRealtime.DEFAULT_BASE_URI) {
26
+ return `${baseUri}/v1/speech-to-text/realtime`;
27
+ }
28
+ static buildWebSocketUri(options) {
29
+ const baseUri = ScribeRealtime.getWebSocketUri(options.baseUri);
30
+ const params = new URLSearchParams();
31
+ // Model ID and token are required, so no check required
32
+ params.append("model_id", options.modelId);
33
+ params.append("token", options.token);
34
+ // Add optional parameters if provided, with validation
35
+ if (options.commitStrategy !== undefined) {
36
+ params.append("commit_strategy", options.commitStrategy);
37
+ }
38
+ if (options.audioFormat !== undefined) {
39
+ params.append("audio_format", options.audioFormat);
40
+ }
41
+ if (options.vadSilenceThresholdSecs !== undefined) {
42
+ if (options.vadSilenceThresholdSecs <= 0.3 ||
43
+ options.vadSilenceThresholdSecs > 3.0) {
44
+ throw new Error("vadSilenceThresholdSecs must be between 0.3 and 3.0");
45
+ }
46
+ params.append("vad_silence_threshold_secs", options.vadSilenceThresholdSecs.toString());
47
+ }
48
+ if (options.vadThreshold !== undefined) {
49
+ if (options.vadThreshold < 0.1 || options.vadThreshold > 0.9) {
50
+ throw new Error("vadThreshold must be between 0.1 and 0.9");
51
+ }
52
+ params.append("vad_threshold", options.vadThreshold.toString());
53
+ }
54
+ if (options.minSpeechDurationMs !== undefined) {
55
+ if (options.minSpeechDurationMs <= 50 ||
56
+ options.minSpeechDurationMs > 2000) {
57
+ throw new Error("minSpeechDurationMs must be between 50 and 2000");
58
+ }
59
+ params.append("min_speech_duration_ms", options.minSpeechDurationMs.toString());
60
+ }
61
+ if (options.minSilenceDurationMs !== undefined) {
62
+ if (options.minSilenceDurationMs <= 50 ||
63
+ options.minSilenceDurationMs > 2000) {
64
+ throw new Error("minSilenceDurationMs must be between 50 and 2000");
65
+ }
66
+ params.append("min_silence_duration_ms", options.minSilenceDurationMs.toString());
67
+ }
68
+ if (options.languageCode !== undefined) {
69
+ params.append("language_code", options.languageCode);
70
+ }
71
+ if (options.includeTimestamps !== undefined) {
72
+ params.append("include_timestamps", options.includeTimestamps ? "true" : "false");
73
+ }
74
+ const queryString = params.toString();
75
+ return queryString ? `${baseUri}?${queryString}` : baseUri;
76
+ }
77
+ /**
78
+ * Establishes a WebSocket connection for real-time speech-to-text transcription.
79
+ *
80
+ * @param options - Configuration options for the connection
81
+ * @returns A RealtimeConnection instance
82
+ *
83
+ * @example
84
+ * ```typescript
85
+ * // Manual audio streaming
86
+ * const connection = Scribe.connect({
87
+ * token: "...",
88
+ * modelId: "scribe_v2_realtime",
89
+ * audioFormat: AudioFormat.PCM_16000,
90
+ * sampleRate: 16000,
91
+ * });
92
+ *
93
+ * // Automatic microphone streaming
94
+ * const connection = Scribe.connect({
95
+ * token: "...",
96
+ * modelId: "scribe_v2_realtime",
97
+ * microphone: {
98
+ * echoCancellation: true,
99
+ * noiseSuppression: true
100
+ * }
101
+ * });
102
+ * ```
103
+ */
104
+ static connect(options) {
105
+ if (!options.modelId) {
106
+ throw new Error("modelId is required");
107
+ }
108
+ // Create connection object first so users can attach event listeners before messages arrive
109
+ const sampleRate = "microphone" in options && options.microphone
110
+ ? 16000
111
+ : options.sampleRate;
112
+ const connection = new RealtimeConnection(sampleRate);
113
+ // Build WebSocket URI with query parameters
114
+ const uri = ScribeRealtime.buildWebSocketUri(options);
115
+ const websocket = new WebSocket(uri);
116
+ // If microphone mode, set up streaming handler
117
+ if ("microphone" in options && options.microphone) {
118
+ websocket.addEventListener("open", () => {
119
+ ScribeRealtime.streamFromMicrophone(options, connection);
120
+ });
121
+ }
122
+ connection.setWebSocket(websocket);
123
+ return connection;
124
+ }
125
+ static async streamFromMicrophone(options, connection) {
126
+ const TARGET_SAMPLE_RATE = 16000;
127
+ try {
128
+ // Get microphone access
129
+ const stream = await navigator.mediaDevices.getUserMedia({
130
+ audio: {
131
+ deviceId: options.microphone?.deviceId,
132
+ echoCancellation: options.microphone?.echoCancellation ?? true,
133
+ noiseSuppression: options.microphone?.noiseSuppression ?? true,
134
+ autoGainControl: options.microphone?.autoGainControl ?? true,
135
+ channelCount: options.microphone?.channelCount ?? 1,
136
+ sampleRate: { ideal: TARGET_SAMPLE_RATE },
137
+ },
138
+ });
139
+ // Get the actual sample rate from the stream - the ideal may not have been honored
140
+ const trackSettings = stream.getAudioTracks()[0]?.getSettings();
141
+ const streamSampleRate = trackSettings?.sampleRate;
142
+ // Create audio context matching the stream's sample rate to avoid Firefox errors
143
+ // Firefox requires the AudioContext to match the microphone's native sample rate
144
+ const audioContext = new AudioContext(streamSampleRate ? { sampleRate: streamSampleRate } : {});
145
+ // Load scribe worklet
146
+ await loadScribeAudioProcessor(audioContext.audioWorklet);
147
+ // Set up audio pipeline
148
+ const source = audioContext.createMediaStreamSource(stream);
149
+ const scribeNode = new AudioWorkletNode(audioContext, "scribeAudioProcessor");
150
+ // Configure the worklet with sample rate info for resampling
151
+ // (only needed when AudioContext sample rate differs from target)
152
+ if (audioContext.sampleRate !== TARGET_SAMPLE_RATE) {
153
+ scribeNode.port.postMessage({
154
+ type: "configure",
155
+ inputSampleRate: audioContext.sampleRate,
156
+ outputSampleRate: TARGET_SAMPLE_RATE,
157
+ });
158
+ }
159
+ // Handle audio data from worklet
160
+ scribeNode.port.onmessage = event => {
161
+ const { audioData } = event.data;
162
+ // Convert ArrayBuffer to base64
163
+ const bytes = new Uint8Array(audioData);
164
+ let binary = "";
165
+ for (let i = 0; i < bytes.length; i++) {
166
+ binary += String.fromCharCode(bytes[i]);
167
+ }
168
+ const base64Audio = btoa(binary);
169
+ connection.send({ audioBase64: base64Audio });
170
+ };
171
+ // Connect audio pipeline
172
+ source.connect(scribeNode);
173
+ // Resume audio context if needed
174
+ if (audioContext.state === "suspended") {
175
+ await audioContext.resume();
176
+ }
177
+ // Store cleanup function
178
+ connection._audioCleanup = () => {
179
+ stream.getTracks().forEach(track => {
180
+ track.stop();
181
+ });
182
+ source.disconnect();
183
+ scribeNode.disconnect();
184
+ audioContext.close();
185
+ };
186
+ }
187
+ catch (error) {
188
+ console.error("Failed to start microphone streaming:", error);
189
+ throw error;
190
+ }
191
+ }
192
+ }
193
+ //# sourceMappingURL=scribe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scribe.js","sourceRoot":"","sources":["../../src/scribe/scribe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AAEnF,MAAM,CAAN,IAAY,WAQX;AARD,WAAY,WAAW;IACrB,oCAAqB,CAAA;IACrB,sCAAuB,CAAA;IACvB,sCAAuB,CAAA;IACvB,sCAAuB,CAAA;IACvB,sCAAuB,CAAA;IACvB,sCAAuB,CAAA;IACvB,sCAAuB,CAAA;AACzB,CAAC,EARW,WAAW,KAAX,WAAW,QAQtB;AAED,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,mCAAiB,CAAA;IACjB,6BAAW,CAAA;AACb,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AA2ED;;;GAGG;AAEH,sGAAsG;AACtG,MAAM,OAAO,cAAc;IACjB,MAAM,CAAU,gBAAgB,GAAG,yBAAyB,CAAC;IAE7D,MAAM,CAAC,eAAe,CAC5B,UAAkB,cAAc,CAAC,gBAAgB;QAEjD,OAAO,GAAG,OAAO,6BAA6B,CAAC;IACjD,CAAC;IAEO,MAAM,CAAC,iBAAiB,CAC9B,OAAyC;QAEzC,MAAM,OAAO,GAAG,cAAc,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QAErC,wDAAwD;QACxD,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAEtC,uDAAuD;QACvD,IAAI,OAAO,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YACzC,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,OAAO,CAAC,uBAAuB,KAAK,SAAS,EAAE,CAAC;YAClD,IACE,OAAO,CAAC,uBAAuB,IAAI,GAAG;gBACtC,OAAO,CAAC,uBAAuB,GAAG,GAAG,EACrC,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;YACzE,CAAC;YACD,MAAM,CAAC,MAAM,CACX,4BAA4B,EAC5B,OAAO,CAAC,uBAAuB,CAAC,QAAQ,EAAE,CAC3C,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACvC,IAAI,OAAO,CAAC,YAAY,GAAG,GAAG,IAAI,OAAO,CAAC,YAAY,GAAG,GAAG,EAAE,CAAC;gBAC7D,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAC9D,CAAC;YACD,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,OAAO,CAAC,mBAAmB,KAAK,SAAS,EAAE,CAAC;YAC9C,IACE,OAAO,CAAC,mBAAmB,IAAI,EAAE;gBACjC,OAAO,CAAC,mBAAmB,GAAG,IAAI,EAClC,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACrE,CAAC;YACD,MAAM,CAAC,MAAM,CACX,wBAAwB,EACxB,OAAO,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CACvC,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;YAC/C,IACE,OAAO,CAAC,oBAAoB,IAAI,EAAE;gBAClC,OAAO,CAAC,oBAAoB,GAAG,IAAI,EACnC,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;YACtE,CAAC;YACD,MAAM,CAAC,MAAM,CACX,yBAAyB,EACzB,OAAO,CAAC,oBAAoB,CAAC,QAAQ,EAAE,CACxC,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,OAAO,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;YAC5C,MAAM,CAAC,MAAM,CACX,oBAAoB,EACpB,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAC7C,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,OAAO,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IAC7D,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACI,MAAM,CAAC,OAAO,CACnB,OAAyC;QAEzC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACzC,CAAC;QAED,4FAA4F;QAC5F,MAAM,UAAU,GACd,YAAY,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU;YAC3C,CAAC,CAAC,KAAK;YACP,CAAC,CAAE,OAAwB,CAAC,UAAU,CAAC;QAC3C,MAAM,UAAU,GAAG,IAAI,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAEtD,4CAA4C;QAC5C,MAAM,GAAG,GAAG,cAAc,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAEtD,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;QAErC,+CAA+C;QAC/C,IAAI,YAAY,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YAClD,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE;gBACtC,cAAc,CAAC,oBAAoB,CACjC,OAA4B,EAC5B,UAAU,CACX,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;QAED,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAEnC,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,oBAAoB,CACvC,OAA0B,EAC1B,UAA8B;QAE9B,MAAM,kBAAkB,GAAG,KAAK,CAAC;QAEjC,IAAI,CAAC;YACH,wBAAwB;YACxB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC;gBACvD,KAAK,EAAE;oBACL,QAAQ,EAAE,OAAO,CAAC,UAAU,EAAE,QAAQ;oBACtC,gBAAgB,EAAE,OAAO,CAAC,UAAU,EAAE,gBAAgB,IAAI,IAAI;oBAC9D,gBAAgB,EAAE,OAAO,CAAC,UAAU,EAAE,gBAAgB,IAAI,IAAI;oBAC9D,eAAe,EAAE,OAAO,CAAC,UAAU,EAAE,eAAe,IAAI,IAAI;oBAC5D,YAAY,EAAE,OAAO,CAAC,UAAU,EAAE,YAAY,IAAI,CAAC;oBACnD,UAAU,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE;iBAC1C;aACF,CAAC,CAAC;YAEH,mFAAmF;YACnF,MAAM,aAAa,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;YAChE,MAAM,gBAAgB,GAAG,aAAa,EAAE,UAAU,CAAC;YAEnD,iFAAiF;YACjF,iFAAiF;YACjF,MAAM,YAAY,GAAG,IAAI,YAAY,CACnC,gBAAgB,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CACzD,CAAC;YAEF,sBAAsB;YACtB,MAAM,wBAAwB,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YAE1D,wBAAwB;YACxB,MAAM,MAAM,GAAG,YAAY,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;YAC5D,MAAM,UAAU,GAAG,IAAI,gBAAgB,CACrC,YAAY,EACZ,sBAAsB,CACvB,CAAC;YAEF,6DAA6D;YAC7D,kEAAkE;YAClE,IAAI,YAAY,CAAC,UAAU,KAAK,kBAAkB,EAAE,CAAC;gBACnD,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;oBAC1B,IAAI,EAAE,WAAW;oBACjB,eAAe,EAAE,YAAY,CAAC,UAAU;oBACxC,gBAAgB,EAAE,kBAAkB;iBACrC,CAAC,CAAC;YACL,CAAC;YAED,iCAAiC;YACjC,UAAU,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,EAAE;gBAClC,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;gBACjC,gCAAgC;gBAChC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;gBACxC,IAAI,MAAM,GAAG,EAAE,CAAC;gBAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACtC,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1C,CAAC;gBACD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;gBAEjC,UAAU,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;YAChD,CAAC,CAAC;YAEF,yBAAyB;YACzB,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAE3B,iCAAiC;YACjC,IAAI,YAAY,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;gBACvC,MAAM,YAAY,CAAC,MAAM,EAAE,CAAC;YAC9B,CAAC;YAED,yBAAyB;YACzB,UAAU,CAAC,aAAa,GAAG,GAAG,EAAE;gBAC9B,MAAM,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACjC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,CAAC,CAAC,CAAC;gBACH,MAAM,CAAC,UAAU,EAAE,CAAC;gBACpB,UAAU,CAAC,UAAU,EAAE,CAAC;gBACxB,YAAY,CAAC,KAAK,EAAE,CAAC;YACvB,CAAC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;YAC9D,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ export interface SourceInfo {
2
+ name: string;
3
+ version: string;
4
+ }
5
+ export declare let sourceInfo: Readonly<SourceInfo>;
6
+ export declare function setSourceInfo(value: SourceInfo): void;
7
+ //# sourceMappingURL=sourceInfo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sourceInfo.d.ts","sourceRoot":"","sources":["../src/sourceInfo.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,IAAI,UAAU,EAAE,QAAQ,CAAC,UAAU,CAGxC,CAAC;AAEH,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAErD"}
@@ -0,0 +1,9 @@
1
+ import { PACKAGE_VERSION } from "./version";
2
+ export let sourceInfo = Object.freeze({
3
+ name: "js_sdk",
4
+ version: PACKAGE_VERSION,
5
+ });
6
+ export function setSourceInfo(value) {
7
+ sourceInfo = Object.freeze(value);
8
+ }
9
+ //# sourceMappingURL=sourceInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sourceInfo.js","sourceRoot":"","sources":["../src/sourceInfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAO5C,MAAM,CAAC,IAAI,UAAU,GAAyB,MAAM,CAAC,MAAM,CAAC;IAC1D,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,eAAe;CACzB,CAAC,CAAC;AAEH,MAAM,UAAU,aAAa,CAAC,KAAiB;IAC7C,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC"}
@@ -1,7 +1,6 @@
1
1
  import type { IncomingSocketEvent, OutgoingSocketEvent } from "./events";
2
2
  import type { Mode } from "../BaseConversation";
3
- import type { ConversationConfigOverrideAgentLanguage as Language } from "@elevenlabs/types/generated/types/asyncapi-types";
4
- import type { DisconnectionDetails } from "@elevenlabs/types";
3
+ import type { DisconnectionDetails, ConversationConfigOverrideAgentLanguage as Language } from "@elevenlabs/types";
5
4
  export type { DisconnectionDetails, ConversationConfigOverrideAgentLanguage as Language, } from "@elevenlabs/types";
6
5
  export type DelayConfig = {
7
6
  default: number;
@@ -11,7 +10,6 @@ export type DelayConfig = {
11
10
  export type FormatConfig = {
12
11
  format: "pcm" | "ulaw";
13
12
  sampleRate: number;
14
- outputDeviceId?: string;
15
13
  };
16
14
  export type OnDisconnectCallback = (details: DisconnectionDetails) => void;
17
15
  export type OnMessageCallback = (event: IncomingSocketEvent) => void;
@@ -36,10 +34,6 @@ export type BaseSessionConfig = {
36
34
  conversation?: {
37
35
  textOnly?: boolean;
38
36
  };
39
- client?: {
40
- source?: string;
41
- version?: string;
42
- };
43
37
  };
44
38
  customLlmExtraBody?: unknown;
45
39
  dynamicVariables?: Record<string, string | number | boolean>;
@@ -47,7 +41,6 @@ export type BaseSessionConfig = {
47
41
  connectionDelay?: DelayConfig;
48
42
  textOnly?: boolean;
49
43
  userId?: string;
50
- environment?: string;
51
44
  };
52
45
  export type ConnectionType = "websocket" | "webrtc";
53
46
  export type PublicSessionConfig = BaseSessionConfig & {
@@ -85,7 +78,6 @@ export declare abstract class BaseConnection {
85
78
  protected debug(info: unknown): void;
86
79
  abstract close(): void;
87
80
  abstract sendMessage(message: OutgoingSocketEvent): void;
88
- abstract setMicMuted(isMuted: boolean): Promise<void>;
89
81
  onMessage(callback: OnMessageCallback): void;
90
82
  onDisconnect(callback: OnDisconnectCallback): void;
91
83
  onModeChange(callback: (mode: Mode) => void): void;
@@ -94,3 +86,4 @@ export declare abstract class BaseConnection {
94
86
  protected handleMessage(parsedEvent: IncomingSocketEvent): void;
95
87
  }
96
88
  export declare function parseFormat(format: string): FormatConfig;
89
+ //# sourceMappingURL=BaseConnection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseConnection.d.ts","sourceRoot":"","sources":["../../src/utils/BaseConnection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACzE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EACV,oBAAoB,EACpB,uCAAuC,IAAI,QAAQ,EACpD,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,oBAAoB,EACpB,uCAAuC,IAAI,QAAQ,GACpD,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI,CAAC;AAC3E,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;AAErE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE;QACV,KAAK,CAAC,EAAE;YACN,MAAM,CAAC,EAAE;gBACP,MAAM,CAAC,EAAE,MAAM,CAAC;aACjB,CAAC;YACF,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB,QAAQ,CAAC,EAAE,QAAQ,CAAC;SACrB,CAAC;QACF,GAAG,CAAC,EAAE;YACJ,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,eAAe,CAAC,EAAE,MAAM,CAAC;SAC1B,CAAC;QACF,YAAY,CAAC,EAAE;YACb,QAAQ,CAAC,EAAE,OAAO,CAAC;SACpB,CAAC;KACH,CAAC;IACF,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IAC7D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,QAAQ,CAAC;AAEpD,MAAM,MAAM,mBAAmB,GAAG,iBAAiB,GAAG;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,cAAc,CAAC;IAC/B,SAAS,CAAC,EAAE,KAAK,CAAC;IAClB,iBAAiB,CAAC,EAAE,KAAK,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG,iBAAiB,GAAG;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,WAAW,CAAC;IAC7B,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,iBAAiB,CAAC,EAAE,KAAK,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,iBAAiB,GAAG;IAC3D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1B,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,SAAS,CAAC,EAAE,KAAK,CAAC;CACnB,CAAC;AAGF,MAAM,MAAM,aAAa,GACrB,mBAAmB,GACnB,6BAA6B,GAC7B,0BAA0B,CAAC;AAE/B,8BAAsB,cAAc;IAClC,kBAAyB,cAAc,EAAE,MAAM,CAAC;IAChD,kBAAyB,WAAW,EAAE,YAAY,CAAC;IACnD,kBAAyB,YAAY,EAAE,YAAY,CAAC;IAEpD,SAAS,CAAC,KAAK,EAAE,mBAAmB,EAAE,CAAM;IAC5C,SAAS,CAAC,oBAAoB,EAAE,oBAAoB,GAAG,IAAI,CAAQ;IACnE,SAAS,CAAC,oBAAoB,EAAE,oBAAoB,GAAG,IAAI,CAAQ;IACnE,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,CAAQ;IAC7D,SAAS,CAAC,oBAAoB,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAQ;IACrE,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;gBAEhC,MAAM,GAAE;QAAE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;KAAO;IAI9D,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO;aAIb,KAAK,IAAI,IAAI;aACb,WAAW,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAExD,SAAS,CAAC,QAAQ,EAAE,iBAAiB;IAcrC,YAAY,CAAC,QAAQ,EAAE,oBAAoB;IAY3C,YAAY,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI;IAIlD,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI;IAI/B,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,oBAAoB;IAOlD,SAAS,CAAC,aAAa,CAAC,WAAW,EAAE,mBAAmB;CAOzD;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAexD"}
@@ -0,0 +1,73 @@
1
+ export class BaseConnection {
2
+ queue = [];
3
+ disconnectionDetails = null;
4
+ onDisconnectCallback = null;
5
+ onMessageCallback = null;
6
+ onModeChangeCallback = null;
7
+ onDebug;
8
+ constructor(config = {}) {
9
+ this.onDebug = config.onDebug;
10
+ }
11
+ debug(info) {
12
+ if (this.onDebug)
13
+ this.onDebug(info);
14
+ }
15
+ onMessage(callback) {
16
+ this.onMessageCallback = callback;
17
+ const queue = this.queue;
18
+ this.queue = [];
19
+ if (queue.length > 0) {
20
+ // Make sure the queue is flushed after the constructors finishes and
21
+ // classes are initialized.
22
+ queueMicrotask(() => {
23
+ queue.forEach(callback);
24
+ });
25
+ }
26
+ }
27
+ onDisconnect(callback) {
28
+ this.onDisconnectCallback = callback;
29
+ const details = this.disconnectionDetails;
30
+ if (details) {
31
+ // Make sure the event is triggered after the constructors finishes and
32
+ // classes are initialized.
33
+ queueMicrotask(() => {
34
+ callback(details);
35
+ });
36
+ }
37
+ }
38
+ onModeChange(callback) {
39
+ this.onModeChangeCallback = callback;
40
+ }
41
+ updateMode(mode) {
42
+ this.onModeChangeCallback?.(mode);
43
+ }
44
+ disconnect(details) {
45
+ if (!this.disconnectionDetails) {
46
+ this.disconnectionDetails = details;
47
+ this.onDisconnectCallback?.(details);
48
+ }
49
+ }
50
+ handleMessage(parsedEvent) {
51
+ if (this.onMessageCallback) {
52
+ this.onMessageCallback(parsedEvent);
53
+ }
54
+ else {
55
+ this.queue.push(parsedEvent);
56
+ }
57
+ }
58
+ }
59
+ export function parseFormat(format) {
60
+ const [formatPart, sampleRatePart] = format.split("_");
61
+ if (!["pcm", "ulaw"].includes(formatPart)) {
62
+ throw new Error(`Invalid format: ${format}`);
63
+ }
64
+ const sampleRate = Number.parseInt(sampleRatePart);
65
+ if (Number.isNaN(sampleRate)) {
66
+ throw new Error(`Invalid sample rate: ${sampleRatePart}`);
67
+ }
68
+ return {
69
+ format: formatPart,
70
+ sampleRate,
71
+ };
72
+ }
73
+ //# sourceMappingURL=BaseConnection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseConnection.js","sourceRoot":"","sources":["../../src/utils/BaseConnection.ts"],"names":[],"mappings":"AAqFA,MAAM,OAAgB,cAAc;IAKxB,KAAK,GAA0B,EAAE,CAAC;IAClC,oBAAoB,GAAgC,IAAI,CAAC;IACzD,oBAAoB,GAAgC,IAAI,CAAC;IACzD,iBAAiB,GAA6B,IAAI,CAAC;IACnD,oBAAoB,GAAkC,IAAI,CAAC;IAC3D,OAAO,CAA2B;IAE5C,YAAY,SAAgD,EAAE;QAC5D,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAChC,CAAC;IAES,KAAK,CAAC,IAAa;QAC3B,IAAI,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAKM,SAAS,CAAC,QAA2B;QAC1C,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAEhB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,qEAAqE;YACrE,2BAA2B;YAC3B,cAAc,CAAC,GAAG,EAAE;gBAClB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC1B,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEM,YAAY,CAAC,QAA8B;QAChD,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC;QAC1C,IAAI,OAAO,EAAE,CAAC;YACZ,uEAAuE;YACvE,2BAA2B;YAC3B,cAAc,CAAC,GAAG,EAAE;gBAClB,QAAQ,CAAC,OAAO,CAAC,CAAC;YACpB,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEM,YAAY,CAAC,QAA8B;QAChD,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC;IACvC,CAAC;IAES,UAAU,CAAC,IAAU;QAC7B,IAAI,CAAC,oBAAoB,EAAE,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAES,UAAU,CAAC,OAA6B;QAChD,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC/B,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC;YACpC,IAAI,CAAC,oBAAoB,EAAE,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAES,aAAa,CAAC,WAAgC;QACtD,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;CACF;AAED,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,MAAM,CAAC,UAAU,EAAE,cAAc,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvD,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IACnD,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,wBAAwB,cAAc,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO;QACL,MAAM,EAAE,UAAoC;QAC5C,UAAU;KACX,CAAC;AACJ,CAAC"}
@@ -1,2 +1,3 @@
1
1
  import type { BaseConnection, SessionConfig } from "./BaseConnection";
2
2
  export declare function createConnection(config: SessionConfig): Promise<BaseConnection>;
3
+ //# sourceMappingURL=ConnectionFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectionFactory.d.ts","sourceRoot":"","sources":["../../src/utils/ConnectionFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EAEd,MAAM,kBAAkB,CAAC;AAmB1B,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,cAAc,CAAC,CAWzB"}
@@ -0,0 +1,26 @@
1
+ import { WebSocketConnection } from "./WebSocketConnection";
2
+ import { WebRTCConnection } from "./WebRTCConnection";
3
+ function determineConnectionType(config) {
4
+ // If connectionType is explicitly specified, use it
5
+ if (config.connectionType) {
6
+ return config.connectionType;
7
+ }
8
+ // If conversationToken is provided, use WebRTC
9
+ if ("conversationToken" in config && config.conversationToken) {
10
+ return "webrtc";
11
+ }
12
+ // Default to WebSocket for backward compatibility
13
+ return "websocket";
14
+ }
15
+ export async function createConnection(config) {
16
+ const connectionType = determineConnectionType(config);
17
+ switch (connectionType) {
18
+ case "websocket":
19
+ return WebSocketConnection.create(config);
20
+ case "webrtc":
21
+ return WebRTCConnection.create(config);
22
+ default:
23
+ throw new Error(`Unknown connection type: ${connectionType}`);
24
+ }
25
+ }
26
+ //# sourceMappingURL=ConnectionFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectionFactory.js","sourceRoot":"","sources":["../../src/utils/ConnectionFactory.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,SAAS,uBAAuB,CAAC,MAAqB;IACpD,oDAAoD;IACpD,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC,cAAc,CAAC;IAC/B,CAAC;IAED,+CAA+C;IAC/C,IAAI,mBAAmB,IAAI,MAAM,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC9D,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,kDAAkD;IAClD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAqB;IAErB,MAAM,cAAc,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAEvD,QAAQ,cAAc,EAAE,CAAC;QACvB,KAAK,WAAW;YACd,OAAO,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5C,KAAK,QAAQ;YACX,OAAO,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzC;YACE,MAAM,IAAI,KAAK,CAAC,4BAA4B,cAAc,EAAE,CAAC,CAAC;IAClE,CAAC;AACH,CAAC"}
@@ -1,6 +1,8 @@
1
1
  import { BaseConnection, type SessionConfig, type FormatConfig } from "./BaseConnection";
2
2
  import { type OutgoingSocketEvent } from "./events";
3
3
  import { Room } from "livekit-client";
4
+ import type { InputController } from "../InputController";
5
+ import type { OutputController } from "../OutputController";
4
6
  export type ConnectionConfig = SessionConfig & {
5
7
  onDebug?: (info: unknown) => void;
6
8
  };
@@ -16,16 +18,19 @@ export declare class WebRTCConnection extends BaseConnection {
16
18
  private outputDeviceId;
17
19
  private outputAnalyser;
18
20
  private outputFrequencyData;
21
+ private _isMuted;
22
+ readonly input: InputController;
23
+ readonly output: OutputController;
19
24
  private constructor();
20
25
  static create(config: ConnectionConfig): Promise<WebRTCConnection>;
21
26
  private setupRoomEventListeners;
22
27
  close(): void;
23
28
  sendMessage(message: OutgoingSocketEvent): Promise<void>;
24
29
  getRoom(): Room;
25
- setMicMuted(isMuted: boolean): Promise<void>;
26
30
  private setupAudioCapture;
27
31
  setAudioVolume(volume: number): void;
28
32
  setAudioOutputDevice(deviceId: string): Promise<void>;
29
33
  setAudioInputDevice(deviceId: string): Promise<void>;
30
34
  getOutputByteFrequencyData(): Uint8Array<ArrayBuffer> | null;
31
35
  }
36
+ //# sourceMappingURL=WebRTCConnection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebRTCConnection.d.ts","sourceRoot":"","sources":["../../src/utils/WebRTCConnection.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,YAAY,EAElB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAsB,KAAK,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACxE,OAAO,EACL,IAAI,EAKL,MAAM,gBAAgB,CAAC;AAaxB,OAAO,KAAK,EAAE,eAAe,EAAqB,MAAM,oBAAoB,CAAC;AAC7E,OAAO,KAAK,EAAE,gBAAgB,EAAsB,MAAM,qBAAqB,CAAC;AAUhF,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAC7C,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACnC,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,cAAc;IAC3C,cAAc,EAAE,MAAM,CAAC;IAC9B,SAAgB,WAAW,EAAE,YAAY,CAAC;IAC1C,SAAgB,YAAY,EAAE,YAAY,CAAC;IAE3C,OAAO,CAAC,IAAI,CAAO;IACnB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,mBAAmB,CAA6B;IACxD,OAAO,CAAC,aAAa,CAA0B;IAC/C,OAAO,CAAC,cAAc,CAAuB;IAE7C,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,mBAAmB,CAAwC;IAGnE,OAAO,CAAC,QAAQ,CAAS;IAGzB,SAAgB,KAAK,EAAE,eAAe,CAuEpC;IAGF,SAAgB,MAAM,EAAE,gBAAgB,CA8BtC;IAEF,OAAO;WAgBa,MAAM,CACxB,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,gBAAgB,CAAC;IAsH5B,OAAO,CAAC,uBAAuB;IA0HxB,KAAK;IAmCC,WAAW,CAAC,OAAO,EAAE,mBAAmB;IAgC9C,OAAO,IAAI,IAAI;YAIR,iBAAiB;IAiExB,cAAc,CAAC,MAAM,EAAE,MAAM;IAMvB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBrD,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsD1D,0BAA0B,IAAI,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI;CASpE"}