@elevenlabs/client 1.7.1 → 1.8.1

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 (162) hide show
  1. package/dist/BaseConversation.d.ts +2 -2
  2. package/dist/BaseConversation.d.ts.map +1 -1
  3. package/dist/BaseConversation.js +18 -15
  4. package/dist/BaseConversation.js.map +1 -1
  5. package/dist/InputController.d.ts +9 -0
  6. package/dist/InputController.d.ts.map +1 -1
  7. package/dist/OutputController.d.ts +18 -0
  8. package/dist/OutputController.d.ts.map +1 -1
  9. package/dist/TextConversation.js +2 -2
  10. package/dist/TextConversation.js.map +1 -1
  11. package/dist/VoiceConversation.d.ts +3 -6
  12. package/dist/VoiceConversation.d.ts.map +1 -1
  13. package/dist/VoiceConversation.js +15 -69
  14. package/dist/VoiceConversation.js.map +1 -1
  15. package/dist/WebRTCAudioAdapter.d.ts +52 -0
  16. package/dist/WebRTCAudioAdapter.d.ts.map +1 -0
  17. package/dist/WebRTCAudioAdapter.js +17 -0
  18. package/dist/WebRTCAudioAdapter.js.map +1 -0
  19. package/dist/index.d.ts +3 -5
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +3 -1
  22. package/dist/index.js.map +1 -1
  23. package/dist/internal.d.ts +6 -1
  24. package/dist/internal.d.ts.map +1 -1
  25. package/dist/internal.js +4 -1
  26. package/dist/internal.js.map +1 -1
  27. package/dist/lib.iife.js +3519 -3220
  28. package/dist/lib.iife.js.map +1 -1
  29. package/dist/platform/VoiceSessionSetup.d.ts +10 -15
  30. package/dist/platform/VoiceSessionSetup.d.ts.map +1 -1
  31. package/dist/platform/VoiceSessionSetup.js +20 -62
  32. package/dist/platform/VoiceSessionSetup.js.map +1 -1
  33. package/dist/platform/tsconfig.test.tsbuildinfo +1 -0
  34. package/dist/platform/web/VoiceSessionSetup.d.ts +9 -0
  35. package/dist/platform/web/VoiceSessionSetup.d.ts.map +1 -0
  36. package/dist/platform/web/VoiceSessionSetup.js +166 -0
  37. package/dist/platform/web/VoiceSessionSetup.js.map +1 -0
  38. package/dist/platform/web/addLibsamplerateModule.d.ts.map +1 -0
  39. package/dist/platform/web/addLibsamplerateModule.js.map +1 -0
  40. package/dist/platform/web/audioConcatProcessor.generated.d.ts.map +1 -0
  41. package/dist/platform/web/audioConcatProcessor.generated.js.map +1 -0
  42. package/dist/platform/web/audioUnlock.d.ts +11 -0
  43. package/dist/platform/web/audioUnlock.d.ts.map +1 -0
  44. package/dist/platform/web/audioUnlock.js +74 -0
  45. package/dist/platform/web/audioUnlock.js.map +1 -0
  46. package/dist/platform/web/compatibility.d.ts.map +1 -0
  47. package/dist/platform/web/compatibility.js.map +1 -0
  48. package/dist/platform/web/createWorkletModuleLoader.d.ts.map +1 -0
  49. package/dist/platform/web/createWorkletModuleLoader.js.map +1 -0
  50. package/dist/platform/web/index.d.ts +3 -0
  51. package/dist/platform/web/index.d.ts.map +1 -0
  52. package/dist/platform/web/index.js +18 -0
  53. package/dist/platform/web/index.js.map +1 -0
  54. package/dist/{utils → platform/web}/input.d.ts +3 -12
  55. package/dist/platform/web/input.d.ts.map +1 -0
  56. package/dist/platform/web/input.js.map +1 -0
  57. package/dist/platform/web/output.d.ts +29 -0
  58. package/dist/platform/web/output.d.ts.map +1 -0
  59. package/dist/{utils → platform/web}/output.js +29 -3
  60. package/dist/platform/web/output.js.map +1 -0
  61. package/dist/platform/web/rawAudioProcessor.generated.d.ts.map +1 -0
  62. package/dist/platform/web/rawAudioProcessor.generated.js.map +1 -0
  63. package/dist/platform/web/scribeAudioProcessor.generated.d.ts.map +1 -0
  64. package/dist/platform/web/scribeAudioProcessor.generated.js.map +1 -0
  65. package/dist/platform/web/scribeMicrophone.d.ts +10 -0
  66. package/dist/platform/web/scribeMicrophone.d.ts.map +1 -0
  67. package/dist/platform/web/scribeMicrophone.js +65 -0
  68. package/dist/platform/web/scribeMicrophone.js.map +1 -0
  69. package/dist/platform/web/volumeProvider.d.ts +4 -0
  70. package/dist/platform/web/volumeProvider.d.ts.map +1 -0
  71. package/dist/platform/web/volumeProvider.js +24 -0
  72. package/dist/platform/web/volumeProvider.js.map +1 -0
  73. package/dist/platform/web/webAudioAdapter.d.ts +23 -0
  74. package/dist/platform/web/webAudioAdapter.d.ts.map +1 -0
  75. package/dist/platform/web/webAudioAdapter.js +127 -0
  76. package/dist/platform/web/webAudioAdapter.js.map +1 -0
  77. package/dist/runtime.d.ts +181 -0
  78. package/dist/runtime.d.ts.map +1 -0
  79. package/dist/runtime.js +34 -0
  80. package/dist/runtime.js.map +1 -0
  81. package/dist/scribe/microphone.d.ts +31 -0
  82. package/dist/scribe/microphone.d.ts.map +1 -0
  83. package/dist/scribe/microphone.js +23 -0
  84. package/dist/scribe/microphone.js.map +1 -0
  85. package/dist/scribe/scribe.d.ts +1 -1
  86. package/dist/scribe/scribe.d.ts.map +1 -1
  87. package/dist/scribe/scribe.js +6 -62
  88. package/dist/scribe/scribe.js.map +1 -1
  89. package/dist/types.d.ts +12 -2
  90. package/dist/types.d.ts.map +1 -1
  91. package/dist/types.js.map +1 -1
  92. package/dist/utils/BaseConnection.d.ts +1 -1
  93. package/dist/utils/BaseConnection.d.ts.map +1 -1
  94. package/dist/utils/WebRTCConnection.d.ts +4 -7
  95. package/dist/utils/WebRTCConnection.d.ts.map +1 -1
  96. package/dist/utils/WebRTCConnection.js +51 -128
  97. package/dist/utils/WebRTCConnection.js.map +1 -1
  98. package/dist/utils/WebSocketConnection.d.ts +2 -1
  99. package/dist/utils/WebSocketConnection.d.ts.map +1 -1
  100. package/dist/utils/WebSocketConnection.js +29 -12
  101. package/dist/utils/WebSocketConnection.js.map +1 -1
  102. package/dist/utils/applyDelay.d.ts +3 -2
  103. package/dist/utils/applyDelay.d.ts.map +1 -1
  104. package/dist/utils/applyDelay.js +18 -12
  105. package/dist/utils/applyDelay.js.map +1 -1
  106. package/dist/utils/assert.d.ts +3 -0
  107. package/dist/utils/assert.d.ts.map +1 -0
  108. package/dist/utils/assert.js +9 -0
  109. package/dist/utils/assert.js.map +1 -0
  110. package/dist/utils/attachConnectionToOutput.d.ts +1 -1
  111. package/dist/utils/attachConnectionToOutput.d.ts.map +1 -1
  112. package/dist/utils/attachInputToConnection.d.ts +1 -1
  113. package/dist/utils/attachInputToConnection.d.ts.map +1 -1
  114. package/dist/utils/audio.d.ts.map +1 -1
  115. package/dist/utils/audio.js +2 -3
  116. package/dist/utils/audio.js.map +1 -1
  117. package/dist/utils/connection.d.ts +1 -1
  118. package/dist/utils/connection.d.ts.map +1 -1
  119. package/dist/utils/connection.js.map +1 -1
  120. package/dist/utils/errors.d.ts.map +1 -1
  121. package/dist/utils/errors.js +5 -1
  122. package/dist/utils/errors.js.map +1 -1
  123. package/dist/utils/mergeOptions.d.ts.map +1 -1
  124. package/dist/utils/mergeOptions.js +1 -3
  125. package/dist/utils/mergeOptions.js.map +1 -1
  126. package/dist/utils/volumeProvider.d.ts +0 -1
  127. package/dist/utils/volumeProvider.d.ts.map +1 -1
  128. package/dist/utils/volumeProvider.js +0 -22
  129. package/dist/utils/volumeProvider.js.map +1 -1
  130. package/dist/version.d.ts +1 -1
  131. package/dist/version.js +1 -1
  132. package/package.json +3 -2
  133. package/dist/utils/addLibsamplerateModule.d.ts.map +0 -1
  134. package/dist/utils/addLibsamplerateModule.js.map +0 -1
  135. package/dist/utils/audioConcatProcessor.generated.d.ts.map +0 -1
  136. package/dist/utils/audioConcatProcessor.generated.js.map +0 -1
  137. package/dist/utils/compatibility.d.ts.map +0 -1
  138. package/dist/utils/compatibility.js.map +0 -1
  139. package/dist/utils/createWorkletModuleLoader.d.ts.map +0 -1
  140. package/dist/utils/createWorkletModuleLoader.js.map +0 -1
  141. package/dist/utils/input.d.ts.map +0 -1
  142. package/dist/utils/input.js.map +0 -1
  143. package/dist/utils/output.d.ts +0 -45
  144. package/dist/utils/output.d.ts.map +0 -1
  145. package/dist/utils/output.js.map +0 -1
  146. package/dist/utils/rawAudioProcessor.generated.d.ts.map +0 -1
  147. package/dist/utils/rawAudioProcessor.generated.js.map +0 -1
  148. package/dist/utils/scribeAudioProcessor.generated.d.ts.map +0 -1
  149. package/dist/utils/scribeAudioProcessor.generated.js.map +0 -1
  150. /package/dist/{utils → platform/web}/addLibsamplerateModule.d.ts +0 -0
  151. /package/dist/{utils → platform/web}/addLibsamplerateModule.js +0 -0
  152. /package/dist/{utils → platform/web}/audioConcatProcessor.generated.d.ts +0 -0
  153. /package/dist/{utils → platform/web}/audioConcatProcessor.generated.js +0 -0
  154. /package/dist/{utils → platform/web}/compatibility.d.ts +0 -0
  155. /package/dist/{utils → platform/web}/compatibility.js +0 -0
  156. /package/dist/{utils → platform/web}/createWorkletModuleLoader.d.ts +0 -0
  157. /package/dist/{utils → platform/web}/createWorkletModuleLoader.js +0 -0
  158. /package/dist/{utils → platform/web}/input.js +0 -0
  159. /package/dist/{utils → platform/web}/rawAudioProcessor.generated.d.ts +0 -0
  160. /package/dist/{utils → platform/web}/rawAudioProcessor.generated.js +0 -0
  161. /package/dist/{utils → platform/web}/scribeAudioProcessor.generated.d.ts +0 -0
  162. /package/dist/{utils → platform/web}/scribeAudioProcessor.generated.js +0 -0
@@ -1,14 +1,16 @@
1
1
  import { BaseConnection, parseFormat, } from "./BaseConnection.js";
2
+ import { isJsonObject } from "./assert.js";
2
3
  import { extractApiErrorMessage } from "./errors.js";
3
4
  import { sourceInfo } from "../sourceInfo.js";
4
5
  import { isValidSocketEvent } from "./events.js";
5
6
  import { Room, RoomEvent, Track, ConnectionState, createLocalAudioTrack, } from "livekit-client";
6
7
  import { constructOverrides, CONVERSATION_INITIATION_CLIENT_DATA_TYPE, } from "./overrides.js";
7
8
  import { arrayBufferToBase64 } from "./audio.js";
8
- import { loadRawAudioProcessor } from "./rawAudioProcessor.generated.js";
9
- import { NO_VOLUME, createAnalyserVolumeProvider, } from "./volumeProvider.js";
9
+ import { NO_VOLUME } from "./volumeProvider.js";
10
+ import { createAudioAdapter, } from "../WebRTCAudioAdapter.js";
10
11
  const DEFAULT_LIVEKIT_WS_URL = "wss://livekit.rtc.elevenlabs.io";
11
12
  const HTTPS_API_ORIGIN = "https://api.elevenlabs.io";
13
+ const AUDIO_VOLUME_THRESHOLD = 0.01;
12
14
  // Convert WSS origin to HTTPS for API calls
13
15
  function convertWssToHttps(origin) {
14
16
  return origin.replace(/^wss:\/\//, "https://");
@@ -20,13 +22,11 @@ export class WebRTCConnection extends BaseConnection {
20
22
  room;
21
23
  isConnected = false;
22
24
  audioEventId = 1;
23
- audioCaptureContext = null;
24
- audioElements = [];
25
25
  outputDeviceId = null;
26
- inputAnalyser = null;
27
- inputAudioContext = null;
26
+ audioAdapter;
27
+ inputAnalyser = undefined;
28
28
  inputVolumeProvider = NO_VOLUME;
29
- outputAnalyser = null;
29
+ outputAnalyser = undefined;
30
30
  outputVolumeProvider = NO_VOLUME;
31
31
  // InputController state
32
32
  _isMuted = false;
@@ -102,7 +102,7 @@ export class WebRTCConnection extends BaseConnection {
102
102
  }
103
103
  },
104
104
  isMuted: () => this._isMuted,
105
- getAnalyser: () => this.inputAnalyser ?? undefined,
105
+ getAnalyser: () => this.inputAnalyser,
106
106
  getVolume: () => {
107
107
  if (this._isMuted)
108
108
  return 0;
@@ -143,7 +143,7 @@ export class WebRTCConnection extends BaseConnection {
143
143
  // No-op for WebRTC - LiveKit handles audio playback and interruption
144
144
  // Audio interruption is managed by the server/agent
145
145
  },
146
- getAnalyser: () => this.outputAnalyser ?? undefined,
146
+ getAnalyser: () => this.outputAnalyser,
147
147
  getVolume: () => this.outputVolumeProvider.getVolume(),
148
148
  getByteFrequencyData: (buffer) => {
149
149
  this.outputVolumeProvider.getByteFrequencyData(buffer);
@@ -155,6 +155,7 @@ export class WebRTCConnection extends BaseConnection {
155
155
  this.conversationId = conversationId;
156
156
  this.inputFormat = inputFormat;
157
157
  this.outputFormat = outputFormat;
158
+ this.audioAdapter = createAudioAdapter();
158
159
  this.setupRoomEventListeners();
159
160
  }
160
161
  static async create(config) {
@@ -180,6 +181,9 @@ export class WebRTCConnection extends BaseConnection {
180
181
  throw new Error(`ElevenLabs API returned ${response.status} ${message}`);
181
182
  }
182
183
  const data = await response.json();
184
+ if (!isJsonObject(data) || typeof data.token !== "string") {
185
+ throw new Error("No conversation token received from API");
186
+ }
183
187
  conversationToken = data.token;
184
188
  if (!conversationToken) {
185
189
  throw new Error("No conversation token received from API");
@@ -265,14 +269,14 @@ export class WebRTCConnection extends BaseConnection {
265
269
  }
266
270
  }
267
271
  setupRoomEventListeners() {
268
- this.room.on(RoomEvent.Connected, async () => {
272
+ this.room.on(RoomEvent.Connected, () => {
269
273
  this.isConnected = true;
270
274
  });
271
275
  this.room.on(RoomEvent.Disconnected, reason => {
272
276
  this.isConnected = false;
273
277
  this.disconnect({
274
278
  reason: "agent",
275
- context: new CloseEvent("close", { reason: reason?.toString() }),
279
+ context: { type: "close", reason: reason?.toString() },
276
280
  });
277
281
  });
278
282
  this.room.on(RoomEvent.ConnectionStateChanged, state => {
@@ -281,7 +285,7 @@ export class WebRTCConnection extends BaseConnection {
281
285
  this.disconnect({
282
286
  reason: "error",
283
287
  message: `LiveKit connection state changed to ${state}`,
284
- context: new Event("connection_state_changed"),
288
+ context: { type: "connection_state_changed" },
285
289
  });
286
290
  }
287
291
  });
@@ -308,32 +312,14 @@ export class WebRTCConnection extends BaseConnection {
308
312
  this.room.on(RoomEvent.TrackSubscribed, async (track, _publication, participant) => {
309
313
  if (track.kind === Track.Kind.Audio &&
310
314
  participant.identity.includes("agent")) {
311
- // Play the audio track
312
315
  const remoteAudioTrack = track;
313
- const audioElement = remoteAudioTrack.attach();
314
- audioElement.autoplay = true;
315
- audioElement.controls = false;
316
- // Set output device if one was previously selected
317
- if (this.outputDeviceId && audioElement.setSinkId) {
318
- try {
319
- await audioElement.setSinkId(this.outputDeviceId);
320
- }
321
- catch (error) {
322
- console.warn("Failed to set output device for new audio element:", error);
323
- }
324
- }
325
- // Add to DOM (hidden) to ensure it plays
326
- audioElement.style.display = "none";
327
- document.body.appendChild(audioElement);
328
- // Store reference for volume control
329
- this.audioElements.push(audioElement);
330
- // Apply current volume if it exists (for when volume was set before audio track arrived)
331
- if (this.audioElements.length === 1) {
332
- // First audio element - trigger a callback to sync with current volume
316
+ if (this.audioAdapter) {
317
+ // Delegate playback to the platform-specific adapter
318
+ await this.audioAdapter.attachRemoteTrack(remoteAudioTrack, this.outputDeviceId);
319
+ // Set up output volume analysis and audio capture
320
+ await this.setupAudioCapture(remoteAudioTrack);
333
321
  this.onDebug?.({ type: "audio_element_ready" });
334
322
  }
335
- // Set up audio capture for onAudio callback
336
- await this.setupAudioCapture(remoteAudioTrack);
337
323
  }
338
324
  });
339
325
  this.room.on(RoomEvent.ActiveSpeakersChanged, async (speakers) => {
@@ -348,7 +334,7 @@ export class WebRTCConnection extends BaseConnection {
348
334
  if (participant.identity?.startsWith("agent")) {
349
335
  this.disconnect({
350
336
  reason: "agent",
351
- context: new CloseEvent("close", { reason: "agent disconnected" }),
337
+ context: { type: "close", reason: "agent disconnected" },
352
338
  });
353
339
  }
354
340
  });
@@ -366,28 +352,12 @@ export class WebRTCConnection extends BaseConnection {
366
352
  catch (error) {
367
353
  console.warn("Error stopping local tracks:", error);
368
354
  }
369
- // Clean up input audio context (non-blocking)
370
- if (this.inputAudioContext) {
371
- this.inputAudioContext.close().catch(error => {
372
- console.warn("Error closing input audio context:", error);
373
- });
374
- this.inputAudioContext = null;
375
- this.inputAnalyser = null;
376
- }
377
- // Clean up audio capture context (non-blocking)
378
- if (this.audioCaptureContext) {
379
- this.audioCaptureContext.close().catch(error => {
380
- console.warn("Error closing audio capture context:", error);
381
- });
382
- this.audioCaptureContext = null;
383
- }
384
- // Clean up audio elements
385
- this.audioElements.forEach(element => {
386
- if (element.parentNode) {
387
- element.parentNode.removeChild(element);
388
- }
389
- });
390
- this.audioElements = [];
355
+ // Delegate all audio cleanup to the adapter
356
+ this.audioAdapter?.cleanup();
357
+ this.inputAnalyser = undefined;
358
+ this.outputAnalyser = undefined;
359
+ this.inputVolumeProvider = NO_VOLUME;
360
+ this.outputVolumeProvider = NO_VOLUME;
391
361
  this.room.disconnect();
392
362
  }
393
363
  }
@@ -422,26 +392,17 @@ export class WebRTCConnection extends BaseConnection {
422
392
  return this.room;
423
393
  }
424
394
  /**
425
- * (Re-)creates an AudioContext + AnalyserNode from the given track and
426
- * installs the corresponding VolumeProvider. Called once during create()
427
- * and again after an input device switch so the analyser follows the
428
- * active mic track.
395
+ * Delegates input volume analysis to the audio adapter (if present).
396
+ * Called once during create() and again after an input device switch
397
+ * so the analyser follows the active mic track.
429
398
  */
430
399
  setupInputAnalyser(mediaStreamTrack) {
431
- // Clean up existing input audio context
432
- if (this.inputAudioContext) {
433
- this.inputAudioContext.close().catch(() => { });
434
- this.inputAudioContext = null;
435
- this.inputAnalyser = null;
436
- }
400
+ if (!this.audioAdapter)
401
+ return;
437
402
  try {
438
- const ctx = new AudioContext();
439
- const analyser = ctx.createAnalyser();
440
- const source = ctx.createMediaStreamSource(new MediaStream([mediaStreamTrack]));
441
- source.connect(analyser);
442
- this.inputAnalyser = analyser;
443
- this.inputAudioContext = ctx;
444
- this.inputVolumeProvider = createAnalyserVolumeProvider(analyser, ctx.sampleRate);
403
+ const result = this.audioAdapter.setupInputAnalysis(mediaStreamTrack);
404
+ this.inputVolumeProvider = result.volumeProvider;
405
+ this.inputAnalyser = result.analyser;
445
406
  }
446
407
  catch (error) {
447
408
  // Don't reset inputVolumeProvider here — an external provider (e.g.
@@ -456,39 +417,14 @@ export class WebRTCConnection extends BaseConnection {
456
417
  this.outputVolumeProvider = provider;
457
418
  }
458
419
  async setupAudioCapture(track) {
420
+ if (!this.audioAdapter)
421
+ return;
459
422
  try {
460
- // Create audio context for processing
461
- const audioContext = new AudioContext();
462
- this.audioCaptureContext = audioContext;
463
- // Create analyser for frequency data
464
- this.outputAnalyser = audioContext.createAnalyser();
465
- this.outputAnalyser.fftSize = 2048;
466
- this.outputAnalyser.smoothingTimeConstant = 0.8;
467
- // Create MediaStream from the track
468
- const mediaStream = new MediaStream([track.mediaStreamTrack]);
469
- // Create audio source from the stream
470
- const source = audioContext.createMediaStreamSource(mediaStream);
471
- // Connect source to analyser
472
- source.connect(this.outputAnalyser);
473
- this.setOutputVolumeProvider(createAnalyserVolumeProvider(this.outputAnalyser, audioContext.sampleRate));
474
- await loadRawAudioProcessor(audioContext.audioWorklet);
475
- const worklet = new AudioWorkletNode(audioContext, "rawAudioProcessor");
476
- // Connect analyser to worklet for processing
477
- this.outputAnalyser.connect(worklet);
478
- // Configure the processor for the output format
479
- worklet.port.postMessage({
480
- type: "setFormat",
481
- format: this.outputFormat.format,
482
- sampleRate: this.outputFormat.sampleRate,
483
- });
484
- // Handle processed audio data
485
- worklet.port.onmessage = (event) => {
486
- const [audioData, maxVolume] = event.data;
423
+ const onAudioData = (audioData, maxVolume) => {
487
424
  // Only send audio if there's significant volume (not just silence)
488
- const volumeThreshold = 0.01;
489
- if (maxVolume > volumeThreshold) {
425
+ if (maxVolume > AUDIO_VOLUME_THRESHOLD) {
490
426
  // Convert to base64
491
- const base64Audio = arrayBufferToBase64(audioData.buffer);
427
+ const base64Audio = arrayBufferToBase64(audioData);
492
428
  // Use sequential event ID for proper feedback tracking
493
429
  const eventId = this.audioEventId++;
494
430
  // Trigger the onAudio callback by simulating an audio event
@@ -501,33 +437,22 @@ export class WebRTCConnection extends BaseConnection {
501
437
  });
502
438
  }
503
439
  };
504
- // Connect the audio processing chain
505
- source.connect(worklet);
440
+ const result = await this.audioAdapter.setupOutputAnalysis(track, this.outputFormat, onAudioData);
441
+ this.outputVolumeProvider = result.volumeProvider;
442
+ this.outputAnalyser = result.analyser;
506
443
  }
507
444
  catch (error) {
508
445
  console.warn("Failed to set up audio capture:", error);
509
446
  }
510
447
  }
511
448
  setAudioVolume(volume) {
512
- this.audioElements.forEach(element => {
513
- element.volume = volume;
514
- });
449
+ this.audioAdapter?.setVolume(volume);
515
450
  }
516
451
  async setAudioOutputDevice(deviceId) {
517
- if (!("setSinkId" in HTMLAudioElement.prototype)) {
518
- throw new Error("setSinkId is not supported in this browser");
452
+ if (!this.audioAdapter) {
453
+ throw new Error("Cannot set output device: no audio adapter available on this platform");
519
454
  }
520
- // Set output device for all existing audio elements
521
- const promises = this.audioElements.map(async (element) => {
522
- try {
523
- await element.setSinkId(deviceId);
524
- }
525
- catch (error) {
526
- console.error("Failed to set sink ID for audio element:", error);
527
- throw error;
528
- }
529
- });
530
- await Promise.all(promises);
455
+ await this.audioAdapter.setOutputDevice(deviceId);
531
456
  // Store the device ID for future audio elements
532
457
  this.outputDeviceId = deviceId;
533
458
  }
@@ -543,16 +468,14 @@ export class WebRTCConnection extends BaseConnection {
543
468
  await currentMicTrackPublication.track.stop();
544
469
  await this.room.localParticipant.unpublishTrack(currentMicTrackPublication.track);
545
470
  }
546
- // Create constraints for the new input device
547
- const audioConstraints = {
471
+ // Create new audio track with the specified device
472
+ const audioTrack = await createLocalAudioTrack({
548
473
  deviceId: { exact: deviceId },
549
474
  echoCancellation: true,
550
475
  noiseSuppression: true,
551
476
  autoGainControl: true,
552
477
  channelCount: { ideal: 1 },
553
- };
554
- // Create new audio track with the specified device
555
- const audioTrack = await createLocalAudioTrack(audioConstraints);
478
+ });
556
479
  // Publish the new microphone track
557
480
  await this.room.localParticipant.publishTrack(audioTrack, {
558
481
  name: "microphone",
@@ -1 +1 @@
1
- {"version":3,"file":"WebRTCConnection.js","sourceRoot":"","sources":["../../src/utils/WebRTCConnection.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAGd,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAA4B,MAAM,aAAa,CAAC;AAC3E,OAAO,EACL,IAAI,EACJ,SAAS,EACT,KAAK,EACL,eAAe,EACf,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AAOxB,OAAO,EACL,kBAAkB,EAClB,wCAAwC,GACzC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAMzE,OAAO,EAEL,SAAS,EACT,4BAA4B,GAC7B,MAAM,qBAAqB,CAAC;AAE7B,MAAM,sBAAsB,GAAG,iCAAiC,CAAC;AACjE,MAAM,gBAAgB,GAAG,2BAA2B,CAAC;AAErD,4CAA4C;AAC5C,SAAS,iBAAiB,CAAC,MAAc;IACvC,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AACjD,CAAC;AAMD,MAAM,OAAO,gBAAiB,SAAQ,cAAc;IAC3C,cAAc,CAAS;IACd,WAAW,CAAe;IAC1B,YAAY,CAAe;IAEnC,IAAI,CAAO;IACX,WAAW,GAAG,KAAK,CAAC;IACpB,YAAY,GAAG,CAAC,CAAC;IACjB,mBAAmB,GAAwB,IAAI,CAAC;IAChD,aAAa,GAAuB,EAAE,CAAC;IACvC,cAAc,GAAkB,IAAI,CAAC;IAErC,aAAa,GAAwB,IAAI,CAAC;IAC1C,iBAAiB,GAAwB,IAAI,CAAC;IAC9C,mBAAmB,GAAmB,SAAS,CAAC;IAEhD,cAAc,GAAwB,IAAI,CAAC;IAC3C,oBAAoB,GAAmB,SAAS,CAAC;IAEzD,wBAAwB;IAChB,QAAQ,GAAG,KAAK,CAAC;IAEzB,kDAAkD;IAClC,KAAK,GAAoB;QACvC,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,0DAA0D;YAC1D,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,IAAI,CAAC;oBACH,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,OAAO,CACvD,WAAW,CAAC,EAAE;wBACZ,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;4BACtB,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;wBAC3B,CAAC;oBACH,CAAC,CACF,CAAC;gBACJ,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,IAAI,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;gBACtD,CAAC;YACH,CAAC;QACH,CAAC;QACD,SAAS,EAAE,KAAK,EAAE,MAAkD,EAAE,EAAE;YACtE,8CAA8C;YAC9C,0EAA0E;YAC1E,IACE,MAAM,EAAE,UAAU,KAAK,SAAS;gBAChC,MAAM,EAAE,MAAM,KAAK,SAAS;gBAC5B,MAAM,EAAE,6BAA6B,KAAK,SAAS,EACnD,CAAC;gBACD,MAAM,IAAI,KAAK,CACb,mGAAmG,CACpG,CAAC;YACJ,CAAC;YAED,MAAM,aAAa,GAAG,MAAM,EAAE,aAAa,CAAC;YAC5C,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,sDAAsD;gBACtD,2CAA2C;gBAC3C,OAAO;YACT,CAAC;YACD,MAAM,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;QAChD,CAAC;QACD,QAAQ,EAAE,KAAK,EAAE,OAAgB,EAAE,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACrD,OAAO,CAAC,IAAI,CACV,yEAAyE,CAC1E,CAAC;gBACF,OAAO;YACT,CAAC;YAED,mEAAmE;YACnE,mEAAmE;YACnE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YAExB,uCAAuC;YACvC,MAAM,mBAAmB,GACvB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAE1E,IAAI,mBAAmB,EAAE,KAAK,EAAE,CAAC;gBAC/B,IAAI,CAAC;oBACH,sCAAsC;oBACtC,IAAI,OAAO,EAAE,CAAC;wBACZ,MAAM,mBAAmB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;oBACzC,CAAC;yBAAM,CAAC;wBACN,MAAM,mBAAmB,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;oBAC3C,CAAC;gBACH,CAAC;gBAAC,OAAO,MAAM,EAAE,CAAC;oBAChB,gEAAgE;oBAChE,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,yDAAyD;gBACzD,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,CAAC;YAClE,CAAC;YAED,mEAAmE;YACnE,oEAAoE;YACpE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAC1D,KAAK,CAAC,MAAM,CAAC,UAAU,CACxB,EAAE,KAAK,CAAC;gBACT,IAAI,KAAK,EAAE,CAAC;oBACV,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;gBAClD,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ;QAC5B,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,IAAI,SAAS;QAClD,SAAS,EAAE,GAAG,EAAE;YACd,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO,CAAC,CAAC;YAC5B,OAAO,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,CAAC;QAC9C,CAAC;QACD,oBAAoB,EAAE,CAAC,MAA+B,EAAE,EAAE;YACxD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACf,OAAO;YACT,CAAC;YACD,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QACxD,CAAC;KACF,CAAC;IAEF,mDAAmD;IACnC,MAAM,GAAqB;QACzC,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,6CAA6C;YAC7C,2DAA2D;QAC7D,CAAC;QACD,SAAS,EAAE,KAAK,EAAE,MAAmD,EAAE,EAAE;YACvE,+CAA+C;YAC/C,0CAA0C;YAC1C,IAAI,MAAM,EAAE,UAAU,KAAK,SAAS,IAAI,MAAM,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;gBACrE,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE,CAAC;YACJ,CAAC;YAED,MAAM,cAAc,GAAG,MAAM,EAAE,cAAc,CAAC;YAC9C,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,sDAAsD;gBACtD,2CAA2C;gBAC3C,OAAO;YACT,CAAC;YACD,MAAM,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;QAClD,CAAC;QACD,SAAS,EAAE,CAAC,MAAc,EAAE,EAAE;YAC5B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QACD,SAAS,EAAE,CAAC,cAAuB,EAAE,EAAE;YACrC,qEAAqE;YACrE,oDAAoD;QACtD,CAAC;QACD,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,IAAI,SAAS;QACnD,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE;QACtD,oBAAoB,EAAE,CAAC,MAA+B,EAAE,EAAE;YACxD,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QACzD,CAAC;KACF,CAAC;IAEF,YACE,IAAU,EACV,cAAsB,EACtB,WAAyB,EACzB,YAA0B,EAC1B,SAAgD,EAAE;QAElD,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QAEjC,IAAI,CAAC,uBAAuB,EAAE,CAAC;IACjC,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,MAAM,CACxB,MAAwB;QAExB,IAAI,iBAAyB,CAAC;QAE9B,4CAA4C;QAC5C,IAAI,mBAAmB,IAAI,MAAM,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAC9D,wBAAwB;YACxB,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAC/C,CAAC;aAAM,IAAI,SAAS,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACjD,2CAA2C;YAC3C,IAAI,CAAC;gBACH,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;gBAC7C,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,IAAI,gBAAgB,CAAC;gBACvD,MAAM,MAAM,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC,0BAA0B;gBAC1E,IAAI,GAAG,GAAG,GAAG,MAAM,0CAA0C,MAAM,CAAC,OAAO,WAAW,MAAM,YAAY,OAAO,EAAE,CAAC;gBAClH,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;oBACvB,GAAG,IAAI,gBAAgB,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;gBAClE,CAAC;gBACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;gBAElC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACjB,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,QAAQ,CAAC,CAAC;oBACvD,MAAM,IAAI,KAAK,CACb,2BAA2B,QAAQ,CAAC,MAAM,IAAI,OAAO,EAAE,CACxD,CAAC;gBACJ,CAAC;gBAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACnC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC;gBAE/B,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACvB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;gBAC7D,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACjE,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC5D,GAAG;wBACD,8FAA8F,CAAC;gBACnG,CAAC;gBAED,MAAM,IAAI,KAAK,CACb,gDAAgD,MAAM,CAAC,OAAO,KAAK,GAAG,EAAE,CACzE,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CACb,uEAAuE,CACxE,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC;YACpB,iEAAiE;YACjE,+DAA+D;YAC/D,sDAAsD;YACtD,oBAAoB,EAAE,KAAK;SAC5B,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,6DAA6D;YAC7D,MAAM,cAAc,GAAG,QAAQ,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAC5C,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;YAC7C,MAAM,YAAY,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;YAC9C,MAAM,UAAU,GAAG,IAAI,gBAAgB,CACrC,IAAI,EACJ,cAAc,EACd,WAAW,EACX,YAAY,EACZ,MAAM,CACP,CAAC;YAEF,0DAA0D;YAC1D,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,sBAAsB,CAAC;YAE/D,uEAAuE;YACvE,mEAAmE;YACnE,sEAAsE;YACtE,sDAAsD;YACtD,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ;gBAChC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE;gBACnB,CAAC,CAAC,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBACpC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,GAAG,EAAE;wBACxC,IAAI,CAAC,gBAAgB;6BAClB,oBAAoB,CAAC,IAAI,CAAC;6BAC1B,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;6BACrB,KAAK,CAAC,MAAM,CAAC,CAAC;oBACnB,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YAEP,8BAA8B;YAC9B,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;YAElD,6DAA6D;YAC7D,MAAM,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;gBAChC,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;oBAC3B,OAAO,EAAE,CAAC;gBACZ,CAAC;qBAAM,CAAC;oBACN,MAAM,WAAW,GAAG,GAAG,EAAE;wBACvB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;wBAC3C,OAAO,EAAE,CAAC;oBACZ,CAAC,CAAC;oBACF,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,iDAAiD;YACjD,MAAM,UAAU,CAAC;YAEjB,qEAAqE;YACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CACxD,KAAK,CAAC,MAAM,CAAC,UAAU,CACxB,EAAE,KAAK,CAAC;YACT,IAAI,QAAQ,EAAE,CAAC;gBACb,UAAU,CAAC,kBAAkB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YAC3D,CAAC;YAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,UAAU,CAAC,cAAc;oBACvB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;YAC7D,CAAC;YAED,MAAM,cAAc,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAElD,UAAU,CAAC,KAAK,CAAC;gBACf,IAAI,EAAE,wCAAwC;gBAC9C,OAAO,EAAE,cAAc;aACxB,CAAC,CAAC;YAEH,MAAM,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YAE7C,OAAO,UAAU,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACxB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,uBAAuB;QAC7B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;YAC3C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE;YAC5C,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,UAAU,CAAC;gBACd,MAAM,EAAE,OAAO;gBACf,OAAO,EAAE,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;aACjE,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,sBAAsB,EAAE,KAAK,CAAC,EAAE;YACrD,IAAI,KAAK,KAAK,eAAe,CAAC,YAAY,EAAE,CAAC;gBAC3C,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;gBACzB,IAAI,CAAC,UAAU,CAAC;oBACd,MAAM,EAAE,OAAO;oBACf,OAAO,EAAE,uCAAuC,KAAK,EAAE;oBACvD,OAAO,EAAE,IAAI,KAAK,CAAC,0BAA0B,CAAC;iBAC/C,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,gCAAgC;QAChC,IAAI,CAAC,IAAI,CAAC,EAAE,CACV,SAAS,CAAC,YAAY,EACtB,CAAC,OAAmB,EAAE,YAAY,EAAE,EAAE;YACpC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;gBAE9D,0EAA0E;gBAC1E,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAC7B,OAAO;gBACT,CAAC;gBAED,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;oBAChC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBAC9B,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC,gCAAgC,EAAE,OAAO,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;gBAC9D,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YAClE,CAAC;QACH,CAAC,CACF,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,EAAE,CACV,SAAS,CAAC,eAAe,EACzB,KAAK,EACH,KAAY,EACZ,YAA8B,EAC9B,WAAwB,EACxB,EAAE;YACF,IACE,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK;gBAC/B,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EACtC,CAAC;gBACD,uBAAuB;gBACvB,MAAM,gBAAgB,GAAG,KAAyB,CAAC;gBACnD,MAAM,YAAY,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC;gBAC/C,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC;gBAC7B,YAAY,CAAC,QAAQ,GAAG,KAAK,CAAC;gBAE9B,mDAAmD;gBACnD,IAAI,IAAI,CAAC,cAAc,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;oBAClD,IAAI,CAAC;wBACH,MAAM,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;oBACpD,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,OAAO,CAAC,IAAI,CACV,oDAAoD,EACpD,KAAK,CACN,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,yCAAyC;gBACzC,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;gBACpC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;gBAExC,qCAAqC;gBACrC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAEtC,yFAAyF;gBACzF,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACpC,uEAAuE;oBACvE,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAC;gBAClD,CAAC;gBAED,4CAA4C;gBAC5C,MAAM,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;YACjD,CAAC;QACH,CAAC,CACF,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,EAAE,CACV,SAAS,CAAC,qBAAqB,EAC/B,KAAK,EAAE,QAAuB,EAAE,EAAE;YAChC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,IAAI,CAAC,UAAU,CACb,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CACpE,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC,CACF,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,EAAE,CACV,SAAS,CAAC,uBAAuB,EACjC,CAAC,WAA8B,EAAE,EAAE;YACjC,IAAI,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC9C,IAAI,CAAC,UAAU,CAAC;oBACd,MAAM,EAAE,OAAO;oBACf,OAAO,EAAE,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC;iBACnE,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;IAEM,KAAK;QACV,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC;gBACH,yFAAyF;gBACzF,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,OAAO,CACvD,WAAW,CAAC,EAAE;oBACZ,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;wBACtB,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;oBAC3B,CAAC;gBACH,CAAC,CACF,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;YACtD,CAAC;YAED,8CAA8C;YAC9C,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC3B,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;oBAC3C,OAAO,CAAC,IAAI,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;gBAC5D,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;gBAC9B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC5B,CAAC;YAED,gDAAgD;YAChD,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC7B,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;oBAC7C,OAAO,CAAC,IAAI,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;gBAC9D,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAClC,CAAC;YAED,0BAA0B;YAC1B,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBACnC,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;oBACvB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;YAExB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,OAA4B;QACnD,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACrD,OAAO,CAAC,IAAI,CACV,iEAAiE,CAClE,CAAC;YACF,OAAO;QACT,CAAC;QAED,wEAAwE;QACxE,IAAI,kBAAkB,IAAI,OAAO,EAAE,CAAC;YAClC,iEAAiE;YACjE,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YAErD,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACzE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC;gBACT,IAAI,EAAE,oBAAoB;gBAC1B,OAAO,EAAE;oBACP,OAAO;oBACP,KAAK;iBACN;aACF,CAAC,CAAC;YACH,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,2CAA2C;IACpC,OAAO;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACK,kBAAkB,CAAC,gBAAkC;QAC3D,wCAAwC;QACxC,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC/C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC5B,CAAC;QAED,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,GAAG,CAAC,uBAAuB,CACxC,IAAI,WAAW,CAAC,CAAC,gBAAgB,CAAC,CAAC,CACpC,CAAC;YACF,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACzB,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;YAC9B,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC;YAC7B,IAAI,CAAC,mBAAmB,GAAG,4BAA4B,CACrD,QAAQ,EACR,GAAG,CAAC,UAAU,CACf,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,oEAAoE;YACpE,0DAA0D;YAC1D,OAAO,CAAC,IAAI,CACV,4DAA4D,EAC5D,KAAK,CACN,CAAC;QACJ,CAAC;IACH,CAAC;IAEM,sBAAsB,CAAC,QAAwB;QACpD,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC;IACtC,CAAC;IAEM,uBAAuB,CAAC,QAAwB;QACrD,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC;IACvC,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,KAAuB;QACrD,IAAI,CAAC;YACH,sCAAsC;YACtC,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;YACxC,IAAI,CAAC,mBAAmB,GAAG,YAAY,CAAC;YAExC,qCAAqC;YACrC,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC,cAAc,EAAE,CAAC;YACpD,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC;YACnC,IAAI,CAAC,cAAc,CAAC,qBAAqB,GAAG,GAAG,CAAC;YAEhD,oCAAoC;YACpC,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAE9D,sCAAsC;YACtC,MAAM,MAAM,GAAG,YAAY,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;YAEjE,6BAA6B;YAC7B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACpC,IAAI,CAAC,uBAAuB,CAC1B,4BAA4B,CAC1B,IAAI,CAAC,cAAc,EACnB,YAAY,CAAC,UAAU,CACxB,CACF,CAAC;YAEF,MAAM,qBAAqB,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YACvD,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;YAExE,6CAA6C;YAC7C,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAErC,gDAAgD;YAChD,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;gBACvB,IAAI,EAAE,WAAW;gBACjB,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM;gBAChC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU;aACzC,CAAC,CAAC;YAEH,8BAA8B;YAC9B,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,KAAmB,EAAE,EAAE;gBAC/C,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;gBAE1C,mEAAmE;gBACnE,MAAM,eAAe,GAAG,IAAI,CAAC;gBAE7B,IAAI,SAAS,GAAG,eAAe,EAAE,CAAC;oBAChC,oBAAoB;oBACpB,MAAM,WAAW,GAAG,mBAAmB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oBAE1D,uDAAuD;oBACvD,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;oBAEpC,4DAA4D;oBAC5D,IAAI,CAAC,aAAa,CAAC;wBACjB,IAAI,EAAE,OAAO;wBACb,WAAW,EAAE;4BACX,aAAa,EAAE,WAAW;4BAC1B,QAAQ,EAAE,OAAO;yBAClB;qBACF,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC;YAEF,qCAAqC;YACrC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAEM,cAAc,CAAC,MAAc;QAClC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACnC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,oBAAoB,CAAC,QAAgB;QAChD,IAAI,CAAC,CAAC,WAAW,IAAI,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QAED,oDAAoD;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAC,OAAO,EAAC,EAAE;YACtD,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACpC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,CAAC,CAAC;gBACjE,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE5B,gDAAgD;QAChD,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;IACjC,CAAC;IAEM,KAAK,CAAC,mBAAmB,CAAC,QAAgB;QAC/C,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CACb,wEAAwE,CACzE,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,+CAA+C;YAC/C,MAAM,0BAA0B,GAC9B,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAE1E,iDAAiD;YACjD,IAAI,0BAA0B,EAAE,KAAK,EAAE,CAAC;gBACtC,MAAM,0BAA0B,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC9C,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAC7C,0BAA0B,CAAC,KAAK,CACjC,CAAC;YACJ,CAAC;YAED,8CAA8C;YAC9C,MAAM,gBAAgB,GAA0B;gBAC9C,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;gBAC7B,gBAAgB,EAAE,IAAI;gBACtB,gBAAgB,EAAE,IAAI;gBACtB,eAAe,EAAE,IAAI;gBACrB,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;aAC3B,CAAC;YAEF,mDAAmD;YACnD,MAAM,UAAU,GAAG,MAAM,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;YAEjE,mCAAmC;YACnC,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,UAAU,EAAE;gBACxD,IAAI,EAAE,YAAY;gBAClB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU;aAChC,CAAC,CAAC;YAEH,gDAAgD;YAChD,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;YAEvD,iDAAiD;YACjD,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAC9D,CAAC;YAAC,OAAO,aAAa,EAAE,CAAC;gBACvB,OAAO,CAAC,KAAK,CACX,yDAAyD,EACzD,aAAa,CACd,CAAC;YACJ,CAAC;YAED,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"WebRTCConnection.js","sourceRoot":"","sources":["../../src/utils/WebRTCConnection.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,13 @@
1
1
  import { BaseConnection, type SessionConfig, type FormatConfig } from "./BaseConnection.js";
2
2
  import { type OutgoingSocketEvent, type IncomingSocketEvent } from "./events.js";
3
- import type { OutputEventTarget, OutputListener } from "./output.js";
3
+ import type { OutputEventTarget, OutputListener } from "../OutputController.js";
4
4
  export declare class WebSocketConnection extends BaseConnection implements OutputEventTarget {
5
5
  private readonly socket;
6
6
  readonly conversationId: string;
7
7
  readonly inputFormat: FormatConfig;
8
8
  readonly outputFormat: FormatConfig;
9
9
  private outputListeners;
10
+ private pendingAudioEvents;
10
11
  private constructor();
11
12
  static create(config: SessionConfig): Promise<WebSocketConnection>;
12
13
  close(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"WebSocketConnection.d.ts","sourceRoot":"","sources":["../../src/utils/WebSocketConnection.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,YAAY,EAElB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACzB,MAAM,aAAa,CAAC;AAGrB,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAMrE,qBAAa,mBACX,SAAQ,cACR,YAAW,iBAAiB;IAS1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAPzB,SAAgB,cAAc,EAAE,MAAM,CAAC;IACvC,SAAgB,WAAW,EAAE,YAAY,CAAC;IAC1C,SAAgB,YAAY,EAAE,YAAY,CAAC;IAE3C,OAAO,CAAC,eAAe,CAAkC;IAEzD,OAAO;WAqEa,MAAM,CACxB,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,mBAAmB,CAAC;IA8GxB,KAAK;IAIL,WAAW,CAAC,OAAO,EAAE,mBAAmB;IAIxC,WAAW,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAI3C,cAAc,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;cAIlC,aAAa,CAAC,WAAW,EAAE,mBAAmB;CAWlE"}
1
+ {"version":3,"file":"WebSocketConnection.d.ts","sourceRoot":"","sources":["../../src/utils/WebSocketConnection.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,YAAY,EAElB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACzB,MAAM,aAAa,CAAC;AAGrB,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EAEf,MAAM,wBAAwB,CAAC;AAMhC,qBAAa,mBACX,SAAQ,cACR,YAAW,iBAAiB;IAU1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IARzB,SAAgB,cAAc,EAAE,MAAM,CAAC;IACvC,SAAgB,WAAW,EAAE,YAAY,CAAC;IAC1C,SAAgB,YAAY,EAAE,YAAY,CAAC;IAE3C,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,kBAAkB,CAA0B;IAEpD,OAAO;WAuEa,MAAM,CACxB,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,mBAAmB,CAAC;IA8GxB,KAAK;IAKL,WAAW,CAAC,OAAO,EAAE,mBAAmB;IAIxC,WAAW,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAa3C,cAAc,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;cAIlC,aAAa,CAAC,WAAW,EAAE,mBAAmB;CAelE"}
@@ -12,6 +12,7 @@ export class WebSocketConnection extends BaseConnection {
12
12
  inputFormat;
13
13
  outputFormat;
14
14
  outputListeners = new Set();
15
+ pendingAudioEvents = [];
15
16
  constructor(socket, conversationId, inputFormat, outputFormat) {
16
17
  super();
17
18
  this.socket = socket;
@@ -25,23 +26,25 @@ export class WebSocketConnection extends BaseConnection {
25
26
  setTimeout(() => this.disconnect({
26
27
  reason: "error",
27
28
  message: "The connection was closed due to a socket error.",
28
- context: event,
29
+ context: { type: event.type },
29
30
  }), 0);
30
31
  });
31
32
  this.socket.addEventListener("close", event => {
32
- this.disconnect(event.code === 1000
33
- ? {
34
- reason: "agent",
35
- context: event,
36
- closeCode: event.code,
37
- closeReason: event.reason || undefined,
38
- }
33
+ const closeCode = event.code;
34
+ const closeReason = event.reason || undefined;
35
+ const context = {
36
+ type: event.type,
37
+ code: closeCode,
38
+ reason: closeReason,
39
+ };
40
+ this.disconnect(closeCode === 1000
41
+ ? { reason: "agent", context, closeCode, closeReason }
39
42
  : {
40
43
  reason: "error",
41
- message: event.reason || "The connection was closed by the server.",
42
- context: event,
43
- closeCode: event.code,
44
- closeReason: event.reason || undefined,
44
+ message: closeReason || "The connection was closed by the server.",
45
+ context,
46
+ closeCode,
47
+ closeReason,
45
48
  });
46
49
  });
47
50
  this.socket.addEventListener("message", event => {
@@ -133,13 +136,23 @@ export class WebSocketConnection extends BaseConnection {
133
136
  }
134
137
  }
135
138
  close() {
139
+ this.pendingAudioEvents = [];
136
140
  this.socket.close(1000, "User ended conversation");
137
141
  }
138
142
  sendMessage(message) {
139
143
  this.socket.send(JSON.stringify(message));
140
144
  }
141
145
  addListener(listener) {
146
+ const hadListeners = this.outputListeners.size > 0;
142
147
  this.outputListeners.add(listener);
148
+ if (hadListeners || this.pendingAudioEvents.length === 0) {
149
+ return;
150
+ }
151
+ const pending = this.pendingAudioEvents;
152
+ this.pendingAudioEvents = [];
153
+ for (const event of pending) {
154
+ listener(event);
155
+ }
143
156
  }
144
157
  removeListener(listener) {
145
158
  this.outputListeners.delete(listener);
@@ -151,6 +164,10 @@ export class WebSocketConnection extends BaseConnection {
151
164
  const audioEvent = {
152
165
  audio_base_64: parsedEvent.audio_event.audio_base_64,
153
166
  };
167
+ if (this.outputListeners.size === 0) {
168
+ this.pendingAudioEvents.push(audioEvent);
169
+ return;
170
+ }
154
171
  this.outputListeners.forEach(listener => listener(audioEvent));
155
172
  }
156
173
  }
@@ -1 +1 @@
1
- {"version":3,"file":"WebSocketConnection.js","sourceRoot":"","sources":["../../src/utils/WebSocketConnection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WebSocketConnection.js","sourceRoot":"","sources":["../../src/utils/WebSocketConnection.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
- import type { DelayConfig } from "./connection.js";
2
- export declare function applyDelay(delayConfig?: DelayConfig): Promise<void>;
1
+ import type { DelayConfig } from "./BaseConnection.js";
2
+ export declare function resolveDelay(delayConfig: DelayConfig | undefined, platform?: "android" | "ios" | "default"): number;
3
+ export declare function applyDelay(delayMs: number): Promise<void>;
3
4
  //# sourceMappingURL=applyDelay.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"applyDelay.d.ts","sourceRoot":"","sources":["../../src/utils/applyDelay.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,wBAAsB,UAAU,CAC9B,WAAW,GAAE,WAIZ,iBAYF"}
1
+ {"version":3,"file":"applyDelay.d.ts","sourceRoot":"","sources":["../../src/utils/applyDelay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAavD,wBAAgB,YAAY,CAC1B,WAAW,EAAE,WAAW,GAAG,SAAS,EACpC,QAAQ,GAAE,SAAS,GAAG,KAAK,GAAG,SAAqB,GAClD,MAAM,CAKR;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,iBAI/C"}
@@ -1,18 +1,24 @@
1
- import { isAndroidDevice, isIosDevice } from "./compatibility.js";
2
- export async function applyDelay(delayConfig = {
1
+ /**
2
+ * Resolves a platform-specific delay from a DelayConfig.
3
+ * The `platform` parameter is determined by the caller (e.g. via
4
+ * `compatibility.ts` on the web, or from the React Native runtime).
5
+ */
6
+ const DEFAULT_DELAY = {
3
7
  default: 0,
4
8
  // Give the Android AudioManager enough time to switch to the correct audio mode
5
9
  android: 3_000,
6
- }) {
7
- let delay = delayConfig.default;
8
- if (isAndroidDevice()) {
9
- delay = delayConfig.android ?? delay;
10
- }
11
- else if (isIosDevice()) {
12
- delay = delayConfig.ios ?? delay;
13
- }
14
- if (delay > 0) {
15
- await new Promise(resolve => setTimeout(resolve, delay));
10
+ };
11
+ export function resolveDelay(delayConfig, platform = "default") {
12
+ const config = delayConfig ?? DEFAULT_DELAY;
13
+ if (platform === "android")
14
+ return config.android ?? config.default;
15
+ if (platform === "ios")
16
+ return config.ios ?? config.default;
17
+ return config.default;
18
+ }
19
+ export async function applyDelay(delayMs) {
20
+ if (delayMs > 0) {
21
+ await new Promise(resolve => setTimeout(resolve, delayMs));
16
22
  }
17
23
  }
18
24
  //# sourceMappingURL=applyDelay.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"applyDelay.js","sourceRoot":"","sources":["../../src/utils/applyDelay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGlE,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,cAA2B;IACzB,OAAO,EAAE,CAAC;IACV,gFAAgF;IAChF,OAAO,EAAE,KAAK;CACf;IAED,IAAI,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC;IAChC,IAAI,eAAe,EAAE,EAAE,CAAC;QACtB,KAAK,GAAG,WAAW,CAAC,OAAO,IAAI,KAAK,CAAC;IACvC,CAAC;SAAM,IAAI,WAAW,EAAE,EAAE,CAAC;QACzB,KAAK,GAAG,WAAW,CAAC,GAAG,IAAI,KAAK,CAAC;IACnC,CAAC;IAED,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"applyDelay.js","sourceRoot":"","sources":["../../src/utils/applyDelay.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,aAAa,GAAgB;IACjC,OAAO,EAAE,CAAC;IACV,gFAAgF;IAChF,OAAO,EAAE,KAAK;CACf,CAAC;AAEF,MAAM,UAAU,YAAY,CAC1B,WAAoC,EACpC,WAA0C,SAAS;IAEnD,MAAM,MAAM,GAAG,WAAW,IAAI,aAAa,CAAC;IAC5C,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC;IACpE,IAAI,QAAQ,KAAK,KAAK;QAAE,OAAO,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC;IAC5D,OAAO,MAAM,CAAC,OAAO,CAAC;AACxB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAe;IAC9C,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,MAAM,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACnE,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function isJsonObject(value: unknown): value is Record<string, unknown>;
2
+ export declare function assertJsonObject(value: unknown, message?: string): asserts value is Record<string, unknown>;
3
+ //# sourceMappingURL=assert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assert.d.ts","sourceRoot":"","sources":["../../src/utils/assert.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAE7E;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,OAAO,EACd,OAAO,SAA2B,GACjC,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAI1C"}
@@ -0,0 +1,9 @@
1
+ export function isJsonObject(value) {
2
+ return value != null && typeof value === "object" && !Array.isArray(value);
3
+ }
4
+ export function assertJsonObject(value, message = "Expected a JSON object") {
5
+ if (!isJsonObject(value)) {
6
+ throw new Error(message);
7
+ }
8
+ }
9
+ //# sourceMappingURL=assert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assert.js","sourceRoot":"","sources":["../../src/utils/assert.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,OAAO,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,KAAc,EACd,OAAO,GAAG,wBAAwB;IAElC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { OutputEventTarget } from "./output.js";
1
+ import type { OutputEventTarget } from "../OutputController.js";
2
2
  export declare function attachConnectionToOutput(connection: OutputEventTarget, output: {
3
3
  playAudio(chunk: ArrayBuffer): void;
4
4
  }): () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"attachConnectionToOutput.d.ts","sourceRoot":"","sources":["../../src/utils/attachConnectionToOutput.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAkB,MAAM,aAAa,CAAC;AAGrE,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,iBAAiB,EAC7B,MAAM,EAAE;IAAE,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,GAC9C,MAAM,IAAI,CAUZ"}
1
+ {"version":3,"file":"attachConnectionToOutput.d.ts","sourceRoot":"","sources":["../../src/utils/attachConnectionToOutput.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAkB,MAAM,wBAAwB,CAAC;AAGhF,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,iBAAiB,EAC7B,MAAM,EAAE;IAAE,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,GAC9C,MAAM,IAAI,CAUZ"}