ug-js-sdk 3.0.51 → 3.0.57

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 (71) hide show
  1. package/README.md +3 -3
  2. package/dist/ug-core/__tests__/__mocks__/ErrorRetryHandler.d.ts +7 -0
  3. package/dist/ug-core/__tests__/__mocks__/ErrorRetryHandler.js +16 -0
  4. package/dist/ug-core/__tests__/__mocks__/ErrorRetryHandler.js.map +1 -0
  5. package/dist/ug-core/__tests__/__mocks__/mpg123-decoder.d.ts +10 -0
  6. package/dist/ug-core/__tests__/__mocks__/mpg123-decoder.js +16 -0
  7. package/dist/ug-core/__tests__/__mocks__/mpg123-decoder.js.map +1 -0
  8. package/dist/ug-core/__tests__/__mocks__/uuid.d.ts +2 -0
  9. package/dist/ug-core/__tests__/__mocks__/uuid.js +11 -0
  10. package/dist/ug-core/__tests__/__mocks__/uuid.js.map +1 -0
  11. package/dist/ug-core/__tests__/__mocks__/vad-web.d.ts +11 -0
  12. package/dist/ug-core/__tests__/__mocks__/vad-web.js +19 -0
  13. package/dist/ug-core/__tests__/__mocks__/vad-web.js.map +1 -0
  14. package/dist/ug-core/__tests__/conversation-manager/ConversationCommands.test.d.ts +1 -0
  15. package/dist/ug-core/__tests__/conversation-manager/ConversationCommands.test.js +67 -0
  16. package/dist/ug-core/__tests__/conversation-manager/ConversationCommands.test.js.map +1 -0
  17. package/dist/ug-core/__tests__/conversation-manager/ConversationManager.test.d.ts +1 -0
  18. package/dist/ug-core/__tests__/conversation-manager/ConversationManager.test.js +185 -0
  19. package/dist/ug-core/__tests__/conversation-manager/ConversationManager.test.js.map +1 -0
  20. package/dist/ug-core/__tests__/conversation-manager/ErrorRetryHandler.test.d.ts +1 -0
  21. package/dist/ug-core/__tests__/conversation-manager/ErrorRetryHandler.test.js +168 -0
  22. package/dist/ug-core/__tests__/conversation-manager/ErrorRetryHandler.test.js.map +1 -0
  23. package/dist/ug-core/__tests__/core/EventEmitter.test.d.ts +1 -0
  24. package/dist/ug-core/__tests__/core/EventEmitter.test.js +211 -0
  25. package/dist/ug-core/__tests__/core/EventEmitter.test.js.map +1 -0
  26. package/dist/ug-core/__tests__/core/Logger.test.d.ts +1 -0
  27. package/dist/ug-core/__tests__/core/Logger.test.js +162 -0
  28. package/dist/ug-core/__tests__/core/Logger.test.js.map +1 -0
  29. package/dist/ug-core/__tests__/core/localStorage.test.d.ts +1 -0
  30. package/dist/ug-core/__tests__/core/localStorage.test.js +172 -0
  31. package/dist/ug-core/__tests__/core/localStorage.test.js.map +1 -0
  32. package/dist/ug-core/__tests__/e2e/replicate-test.e2e.d.ts +15 -0
  33. package/dist/ug-core/__tests__/e2e/replicate-test.e2e.js +224 -0
  34. package/dist/ug-core/__tests__/e2e/replicate-test.e2e.js.map +1 -0
  35. package/dist/ug-core/__tests__/network/WebSocketConnection.test.d.ts +1 -0
  36. package/dist/ug-core/__tests__/network/WebSocketConnection.test.js +193 -0
  37. package/dist/ug-core/__tests__/network/WebSocketConnection.test.js.map +1 -0
  38. package/dist/ug-core/__tests__/playback-manager/SubtitleManager.test.d.ts +1 -0
  39. package/dist/ug-core/__tests__/playback-manager/SubtitleManager.test.js +228 -0
  40. package/dist/ug-core/__tests__/playback-manager/SubtitleManager.test.js.map +1 -0
  41. package/dist/ug-core/__tests__/setup.d.ts +4 -0
  42. package/dist/ug-core/__tests__/setup.js +8 -0
  43. package/dist/ug-core/__tests__/setup.js.map +1 -0
  44. package/dist/ug-core/conversation-manager/ConversationManager.js +18 -0
  45. package/dist/ug-core/conversation-manager/ConversationManager.js.map +1 -1
  46. package/dist/ug-core/conversation-manager/ErrorRetryHandler.d.ts +1 -0
  47. package/dist/ug-core/conversation-manager/ErrorRetryHandler.js +3 -0
  48. package/dist/ug-core/conversation-manager/ErrorRetryHandler.js.map +1 -1
  49. package/dist/ug-core/conversation-manager/types.d.ts +51 -6
  50. package/dist/ug-core/network/ConversationNetwork.js +12 -6
  51. package/dist/ug-core/network/ConversationNetwork.js.map +1 -1
  52. package/dist/ug-core/playback-manager/PlaybackManager.d.ts +104 -0
  53. package/dist/ug-core/playback-manager/PlaybackManager.js +121 -4
  54. package/dist/ug-core/playback-manager/PlaybackManager.js.map +1 -1
  55. package/dist/ug-core/playback-manager/audio-player/AudioPlayer.d.ts +156 -0
  56. package/dist/ug-core/playback-manager/audio-player/AudioPlayer.js +156 -0
  57. package/dist/ug-core/playback-manager/audio-player/AudioPlayer.js.map +1 -1
  58. package/dist/ug-core/playback-manager/subtitle-manager/SubtitleManager.js +3 -1
  59. package/dist/ug-core/playback-manager/subtitle-manager/SubtitleManager.js.map +1 -1
  60. package/dist/ug-core/types/index.d.ts +34 -3
  61. package/dist/ug-core/user-input-manager/AudioRecorder.d.ts +49 -0
  62. package/dist/ug-core/user-input-manager/AudioRecorder.js +39 -1
  63. package/dist/ug-core/user-input-manager/AudioRecorder.js.map +1 -1
  64. package/dist/ug-core/user-input-manager/UserInputManager.d.ts +82 -6
  65. package/dist/ug-core/user-input-manager/UserInputManager.js +82 -6
  66. package/dist/ug-core/user-input-manager/UserInputManager.js.map +1 -1
  67. package/dist/ug-core/user-input-manager/VADManager.d.ts +62 -0
  68. package/dist/ug-core/user-input-manager/VADManager.js +99 -8
  69. package/dist/ug-core/user-input-manager/VADManager.js.map +1 -1
  70. package/dist/ug-js-sdk.mjs +1 -1
  71. package/package.json +1 -1
@@ -4,13 +4,43 @@ import { ConversationNetwork } from '../network/ConversationNetwork';
4
4
  import { AudioRecordingConfig } from './AudioRecorder';
5
5
  import { IVADManager } from './types';
6
6
  /**
7
- * Manages user input for conversations
7
+ * Manages user input for conversations including voice and text input.
8
8
  *
9
- * Supports different types of input:
10
- * - audio: Voice/audio input through microphone
11
- * - text: Text input through interact() method
12
- * eg. interact({uid:'', kind: 'interact', type: 'stream', text:'Your text'})
13
- **/
9
+ * The UserInputManager coordinates:
10
+ * - Audio recording via microphone (AudioRecorder)
11
+ * - Voice Activity Detection (VADManager) to detect speech start/end
12
+ * - Network communication for sending audio/text to the server
13
+ *
14
+ * Input modes:
15
+ * - **Audio mode**: Voice input through microphone with VAD for automatic turn-taking
16
+ * - **Text mode**: Text input via the `interact()` method
17
+ *
18
+ * @example Audio input flow
19
+ * ```typescript
20
+ * // Audio is captured continuously when started
21
+ * await userInputManager.start() // Starts VAD and recording
22
+ *
23
+ * // VAD detects speech start → emits UserSpeaking event
24
+ * // VAD detects speech end → emits UserSilence, sends input_complete
25
+ * // Server processes audio and responds
26
+ *
27
+ * await userInputManager.stop() // Stops recording and VAD
28
+ * ```
29
+ *
30
+ * @example Text input
31
+ * ```typescript
32
+ * await userInputManager.interact({
33
+ * text: 'Hello!',
34
+ * kind: 'interact',
35
+ * type: 'stream',
36
+ * uid: ''
37
+ * })
38
+ * ```
39
+ *
40
+ * @fires UserInputManagerEvents.UserSpeaking - When VAD detects user started speaking
41
+ * @fires UserInputManagerEvents.UserSilence - When VAD detects user stopped speaking
42
+ * @fires UserInputManagerEvents.UserInput - When input (audio/text/complete) is ready to send
43
+ */
14
44
  export declare class UserInputManager extends EventEmitter {
15
45
  private capabilities;
16
46
  private vadManager;
@@ -23,10 +53,40 @@ export declare class UserInputManager extends EventEmitter {
23
53
  private debugMode;
24
54
  private capturedAudioChunks;
25
55
  constructor(capabilities: InputCapabilities, vadManager: IVADManager, network: ConversationNetwork, recordingConfig?: AudioRecordingConfig);
56
+ /**
57
+ * Initializes the user input manager with an optional media stream.
58
+ *
59
+ * If audio capabilities are enabled and no stream is provided,
60
+ * the manager will request microphone access.
61
+ *
62
+ * @param mediaStream - Optional existing MediaStream to use for audio input
63
+ * @throws Error if microphone access is denied when audio is enabled
64
+ */
26
65
  initialize(mediaStream?: MediaStream): Promise<void>;
27
66
  reinitializeAudio(mediaStream?: MediaStream): Promise<void>;
67
+ /**
68
+ * Starts audio recording and voice activity detection.
69
+ *
70
+ * This method:
71
+ * 1. Clears any server-side audio buffer from previous sessions
72
+ * 2. Starts VAD analysis (unless skipVAD is true)
73
+ * 3. Begins audio recording
74
+ *
75
+ * @param skipVAD - If true, skips VAD startup to reduce CPU load during playback
76
+ *
77
+ * @example
78
+ * ```typescript
79
+ * await userInputManager.start()
80
+ * // Now listening for voice input
81
+ * ```
82
+ */
28
83
  start(skipVAD?: boolean): Promise<void>;
29
84
  startVAD(): void;
85
+ /**
86
+ * Stops audio recording and voice activity detection.
87
+ *
88
+ * @returns True if successfully stopped, false if already stopped
89
+ */
30
90
  stop(): Promise<boolean>;
31
91
  updateCapabilities(capabilities: InputCapabilities): Promise<void>;
32
92
  stopRecording(): Promise<void>;
@@ -39,6 +99,22 @@ export declare class UserInputManager extends EventEmitter {
39
99
  flushBufferedAudio(): Promise<void>;
40
100
  sendAudio(audioData: ArrayBuffer): Promise<void>;
41
101
  private arrayBufferToBase64;
102
+ /**
103
+ * Sends a text interaction request to the server.
104
+ *
105
+ * @param request - The interaction request containing text, context, and utilities
106
+ *
107
+ * @example
108
+ * ```typescript
109
+ * await userInputManager.interact({
110
+ * text: 'Hello, how are you?',
111
+ * kind: 'interact',
112
+ * type: 'stream',
113
+ * uid: '',
114
+ * on_output: ['sentiment'] // Optional: utilities to run
115
+ * })
116
+ * ```
117
+ */
42
118
  interact(request: InteractRequest): Promise<void>;
43
119
  sendInputComplete(): Promise<void>;
44
120
  reset(): void;
@@ -3,13 +3,43 @@ import { EventEmitter } from '../core/EventEmitter';
3
3
  import { AudioRecorder, AudioRecorderEvents } from './AudioRecorder';
4
4
  import { UserInputManagerEvents, VadManagerEvents, } from './types';
5
5
  /**
6
- * Manages user input for conversations
6
+ * Manages user input for conversations including voice and text input.
7
7
  *
8
- * Supports different types of input:
9
- * - audio: Voice/audio input through microphone
10
- * - text: Text input through interact() method
11
- * eg. interact({uid:'', kind: 'interact', type: 'stream', text:'Your text'})
12
- **/
8
+ * The UserInputManager coordinates:
9
+ * - Audio recording via microphone (AudioRecorder)
10
+ * - Voice Activity Detection (VADManager) to detect speech start/end
11
+ * - Network communication for sending audio/text to the server
12
+ *
13
+ * Input modes:
14
+ * - **Audio mode**: Voice input through microphone with VAD for automatic turn-taking
15
+ * - **Text mode**: Text input via the `interact()` method
16
+ *
17
+ * @example Audio input flow
18
+ * ```typescript
19
+ * // Audio is captured continuously when started
20
+ * await userInputManager.start() // Starts VAD and recording
21
+ *
22
+ * // VAD detects speech start → emits UserSpeaking event
23
+ * // VAD detects speech end → emits UserSilence, sends input_complete
24
+ * // Server processes audio and responds
25
+ *
26
+ * await userInputManager.stop() // Stops recording and VAD
27
+ * ```
28
+ *
29
+ * @example Text input
30
+ * ```typescript
31
+ * await userInputManager.interact({
32
+ * text: 'Hello!',
33
+ * kind: 'interact',
34
+ * type: 'stream',
35
+ * uid: ''
36
+ * })
37
+ * ```
38
+ *
39
+ * @fires UserInputManagerEvents.UserSpeaking - When VAD detects user started speaking
40
+ * @fires UserInputManagerEvents.UserSilence - When VAD detects user stopped speaking
41
+ * @fires UserInputManagerEvents.UserInput - When input (audio/text/complete) is ready to send
42
+ */
13
43
  export class UserInputManager extends EventEmitter {
14
44
  capabilities;
15
45
  vadManager;
@@ -35,6 +65,15 @@ export class UserInputManager extends EventEmitter {
35
65
  this.setupRecorderListeners();
36
66
  }
37
67
  }
68
+ /**
69
+ * Initializes the user input manager with an optional media stream.
70
+ *
71
+ * If audio capabilities are enabled and no stream is provided,
72
+ * the manager will request microphone access.
73
+ *
74
+ * @param mediaStream - Optional existing MediaStream to use for audio input
75
+ * @throws Error if microphone access is denied when audio is enabled
76
+ */
38
77
  async initialize(mediaStream) {
39
78
  await this.reinitializeAudio(mediaStream);
40
79
  }
@@ -59,6 +98,22 @@ export class UserInputManager extends EventEmitter {
59
98
  await this.audioRecorder?.initialize(this.mediaStream);
60
99
  }
61
100
  }
101
+ /**
102
+ * Starts audio recording and voice activity detection.
103
+ *
104
+ * This method:
105
+ * 1. Clears any server-side audio buffer from previous sessions
106
+ * 2. Starts VAD analysis (unless skipVAD is true)
107
+ * 3. Begins audio recording
108
+ *
109
+ * @param skipVAD - If true, skips VAD startup to reduce CPU load during playback
110
+ *
111
+ * @example
112
+ * ```typescript
113
+ * await userInputManager.start()
114
+ * // Now listening for voice input
115
+ * ```
116
+ */
62
117
  async start(skipVAD = false) {
63
118
  if (this.isStopped) {
64
119
  this.isStopped = false;
@@ -93,6 +148,11 @@ export class UserInputManager extends EventEmitter {
93
148
  this.vadManager.startAnalysis();
94
149
  }
95
150
  }
151
+ /**
152
+ * Stops audio recording and voice activity detection.
153
+ *
154
+ * @returns True if successfully stopped, false if already stopped
155
+ */
96
156
  async stop() {
97
157
  if (this.isStopped) {
98
158
  return false;
@@ -196,6 +256,22 @@ export class UserInputManager extends EventEmitter {
196
256
  }
197
257
  return btoa(binary);
198
258
  }
259
+ /**
260
+ * Sends a text interaction request to the server.
261
+ *
262
+ * @param request - The interaction request containing text, context, and utilities
263
+ *
264
+ * @example
265
+ * ```typescript
266
+ * await userInputManager.interact({
267
+ * text: 'Hello, how are you?',
268
+ * kind: 'interact',
269
+ * type: 'stream',
270
+ * uid: '',
271
+ * on_output: ['sentiment'] // Optional: utilities to run
272
+ * })
273
+ * ```
274
+ */
199
275
  async interact(request) {
200
276
  await this.network.interact(request);
201
277
  }
@@ -1 +1 @@
1
- {"version":3,"file":"UserInputManager.js","sourceRoot":"","sources":["../../../src/ug-core/user-input-manager/UserInputManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UserInputManager.js","sourceRoot":"","sources":["../../../src/ug-core/user-input-manager/UserInputManager.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,52 @@
1
1
  import { EventEmitter } from '../core/EventEmitter';
2
2
  import { IVADManager } from './types';
3
+ /**
4
+ * Events emitted by the VADManager.
5
+ */
3
6
  export declare const VadManagerEvents: {
7
+ /** Emitted when voice activity state changes (speech start/end) */
4
8
  readonly VoiceActivity: "voiceActivity";
9
+ /** Emitted after silence timeout - indicates user has stopped speaking */
5
10
  readonly Silence: "silence";
6
11
  };
12
+ /**
13
+ * Voice Activity Detection (VAD) manager using Silero VAD model.
14
+ *
15
+ * Uses the Silero VAD neural network model via ONNX Runtime Web to detect
16
+ * when the user starts and stops speaking. This enables automatic turn-taking
17
+ * in voice conversations without requiring push-to-talk.
18
+ *
19
+ * The VAD runs entirely in the browser using WebAssembly for performance.
20
+ * No audio is sent to any server for speech detection.
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * const vad = new VADManager(
25
+ * 300, // silenceTimeoutMs - time after speech ends before emitting Silence
26
+ * 0.5, // positiveSpeechThreshold - probability threshold to detect speech
27
+ * 0.35, // negativeSpeechThreshold - probability threshold to end speech
28
+ * 100 // minSpeechMs - minimum speech duration to avoid misfires
29
+ * )
30
+ *
31
+ * vad.on(VadManagerEvents.VoiceActivity, (event) => {
32
+ * if (event.isSpeaking) {
33
+ * console.log('User started speaking')
34
+ * } else {
35
+ * console.log('User stopped speaking')
36
+ * }
37
+ * })
38
+ *
39
+ * vad.on(VadManagerEvents.Silence, () => {
40
+ * console.log('Silence timeout - user turn complete')
41
+ * })
42
+ *
43
+ * await vad.initialize(mediaStream)
44
+ * vad.startAnalysis()
45
+ * ```
46
+ *
47
+ * @fires VadManagerEvents.VoiceActivity - When speech starts or ends
48
+ * @fires VadManagerEvents.Silence - After silence timeout (user turn complete)
49
+ */
7
50
  export declare class VADManager extends EventEmitter implements IVADManager {
8
51
  private vadModel;
9
52
  private silenceTimer;
@@ -13,12 +56,31 @@ export declare class VADManager extends EventEmitter implements IVADManager {
13
56
  private minSpeechMs;
14
57
  private isDisposed;
15
58
  private currentStream;
59
+ /**
60
+ * Creates a new VADManager instance.
61
+ *
62
+ * @param silenceTimeoutMs - Time in ms after speech ends before emitting Silence event (default: 300)
63
+ * @param positiveSpeechThreshold - Probability threshold to start speech detection, 0-1 (default: 0.5)
64
+ * @param negativeSpeechThreshold - Probability threshold to end speech detection, 0-1 (default: 0.35)
65
+ * @param minSpeechMs - Minimum speech duration in ms to avoid misfires (default: 100)
66
+ */
16
67
  constructor(silenceTimeoutMs?: number, positiveSpeechThreshold?: number, negativeSpeechThreshold?: number, minSpeechMs?: number);
17
68
  /**
18
69
  * Initialize the VAD model. Accepts a MediaStream to use for voice activity detection.
19
70
  */
20
71
  initialize(stream: MediaStream): Promise<void>;
72
+ /**
73
+ * Starts voice activity detection analysis.
74
+ *
75
+ * Must be called after `initialize()`. The VAD will begin analyzing
76
+ * the audio stream and emitting VoiceActivity events.
77
+ */
21
78
  startAnalysis(): void;
79
+ /**
80
+ * Stops voice activity detection analysis.
81
+ *
82
+ * Pauses the VAD model and clears any pending silence timers.
83
+ */
22
84
  stopAnalysis(): void;
23
85
  startSilenceTimer(): void;
24
86
  clearSilenceTimer(): void;
@@ -1,10 +1,53 @@
1
1
  import { EventEmitter } from '../core/EventEmitter';
2
2
  import { DefaultLogger, StylePurple } from '../core/Logger';
3
3
  import { MicVAD } from '@ricky0123/vad-web';
4
+ /**
5
+ * Events emitted by the VADManager.
6
+ */
4
7
  export const VadManagerEvents = {
8
+ /** Emitted when voice activity state changes (speech start/end) */
5
9
  VoiceActivity: 'voiceActivity',
10
+ /** Emitted after silence timeout - indicates user has stopped speaking */
6
11
  Silence: 'silence',
7
12
  };
13
+ /**
14
+ * Voice Activity Detection (VAD) manager using Silero VAD model.
15
+ *
16
+ * Uses the Silero VAD neural network model via ONNX Runtime Web to detect
17
+ * when the user starts and stops speaking. This enables automatic turn-taking
18
+ * in voice conversations without requiring push-to-talk.
19
+ *
20
+ * The VAD runs entirely in the browser using WebAssembly for performance.
21
+ * No audio is sent to any server for speech detection.
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * const vad = new VADManager(
26
+ * 300, // silenceTimeoutMs - time after speech ends before emitting Silence
27
+ * 0.5, // positiveSpeechThreshold - probability threshold to detect speech
28
+ * 0.35, // negativeSpeechThreshold - probability threshold to end speech
29
+ * 100 // minSpeechMs - minimum speech duration to avoid misfires
30
+ * )
31
+ *
32
+ * vad.on(VadManagerEvents.VoiceActivity, (event) => {
33
+ * if (event.isSpeaking) {
34
+ * console.log('User started speaking')
35
+ * } else {
36
+ * console.log('User stopped speaking')
37
+ * }
38
+ * })
39
+ *
40
+ * vad.on(VadManagerEvents.Silence, () => {
41
+ * console.log('Silence timeout - user turn complete')
42
+ * })
43
+ *
44
+ * await vad.initialize(mediaStream)
45
+ * vad.startAnalysis()
46
+ * ```
47
+ *
48
+ * @fires VadManagerEvents.VoiceActivity - When speech starts or ends
49
+ * @fires VadManagerEvents.Silence - After silence timeout (user turn complete)
50
+ */
8
51
  export class VADManager extends EventEmitter {
9
52
  vadModel = null;
10
53
  silenceTimer = null;
@@ -14,8 +57,15 @@ export class VADManager extends EventEmitter {
14
57
  minSpeechMs;
15
58
  isDisposed = false;
16
59
  currentStream = null;
17
- constructor(silenceTimeoutMs = 300, positiveSpeechThreshold = 0.5, negativeSpeechThreshold = 0.35, minSpeechMs = 100 // Minimum speech duration in milliseconds
18
- ) {
60
+ /**
61
+ * Creates a new VADManager instance.
62
+ *
63
+ * @param silenceTimeoutMs - Time in ms after speech ends before emitting Silence event (default: 300)
64
+ * @param positiveSpeechThreshold - Probability threshold to start speech detection, 0-1 (default: 0.5)
65
+ * @param negativeSpeechThreshold - Probability threshold to end speech detection, 0-1 (default: 0.35)
66
+ * @param minSpeechMs - Minimum speech duration in ms to avoid misfires (default: 100)
67
+ */
68
+ constructor(silenceTimeoutMs = 300, positiveSpeechThreshold = 0.5, negativeSpeechThreshold = 0.35, minSpeechMs = 100) {
19
69
  const logger = new DefaultLogger({ category: '🎤 VADManager', style: StylePurple });
20
70
  super(logger);
21
71
  this.silenceTimeoutMs = silenceTimeoutMs;
@@ -33,7 +83,12 @@ export class VADManager extends EventEmitter {
33
83
  this.logger.debug('You may need to close the browser console for this to initialize');
34
84
  const vadModel = await MicVAD.new({
35
85
  // New API uses callbacks for stream management
36
- getStream: async () => this.currentStream,
86
+ getStream: async () => {
87
+ if (!this.currentStream) {
88
+ throw new Error('Stream is no longer available - VADManager may have been disposed');
89
+ }
90
+ return this.currentStream;
91
+ },
37
92
  pauseStream: async () => {
38
93
  // We don't stop the stream since it's managed externally
39
94
  },
@@ -75,23 +130,59 @@ export class VADManager extends EventEmitter {
75
130
  // Check if disposed while waiting for initialization
76
131
  if (this.isDisposed) {
77
132
  this.logger.debug('VADManager disposed during initialization, cleaning up model');
78
- if (typeof vadModel.destroy === 'function') {
79
- vadModel.destroy();
133
+ try {
134
+ if (typeof vadModel.destroy === 'function') {
135
+ vadModel.destroy();
136
+ }
137
+ else {
138
+ vadModel.pause();
139
+ }
80
140
  }
81
- else {
82
- vadModel.pause();
141
+ catch (error) {
142
+ // Silently ignore - VAD may have partially initialized state (null stream/context)
143
+ this.logger.debug('Error cleaning up VAD model after disposal during init', error);
83
144
  }
84
145
  return;
85
146
  }
86
147
  this.vadModel = vadModel;
87
148
  this.logger.debug(`VAD Manager initialized (MicVAD) with silenceTimeoutMs=${this.silenceTimeoutMs}, positiveSpeechThreshold=${this.positiveSpeechThreshold}, negativeSpeechThreshold=${this.negativeSpeechThreshold}, minSpeechMs=${this.minSpeechMs}`);
88
149
  }
150
+ /**
151
+ * Starts voice activity detection analysis.
152
+ *
153
+ * Must be called after `initialize()`. The VAD will begin analyzing
154
+ * the audio stream and emitting VoiceActivity events.
155
+ */
89
156
  startAnalysis() {
90
- if (this.vadModel) {
157
+ // Guard against calling start when VAD is not fully initialized or already disposed
158
+ if (this.isDisposed) {
159
+ this.logger.debug('Cannot start VAD analysis - VADManager is disposed');
160
+ return;
161
+ }
162
+ if (!this.vadModel) {
163
+ this.logger.debug('Cannot start VAD analysis - VAD model not initialized');
164
+ return;
165
+ }
166
+ if (!this.currentStream) {
167
+ this.logger.debug('Cannot start VAD analysis - no active stream');
168
+ return;
169
+ }
170
+ try {
91
171
  this.vadModel.start();
92
172
  this.logger.debug('VAD analysis started (MicVAD)');
93
173
  }
174
+ catch (error) {
175
+ // Gracefully handle errors when VAD is in an inconsistent state
176
+ // This can happen during conversation restart/recovery when the stream
177
+ // was cleaned up but the VAD model still exists
178
+ this.logger.warn('Error starting VAD analysis, VAD may be in inconsistent state:', error);
179
+ }
94
180
  }
181
+ /**
182
+ * Stops voice activity detection analysis.
183
+ *
184
+ * Pauses the VAD model and clears any pending silence timers.
185
+ */
95
186
  stopAnalysis() {
96
187
  this.clearSilenceTimer();
97
188
  if (this.vadModel) {
@@ -1 +1 @@
1
- {"version":3,"file":"VADManager.js","sourceRoot":"","sources":["../../../src/ug-core/user-input-manager/VADManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VADManager.js","sourceRoot":"","sources":["../../../src/ug-core/user-input-manager/VADManager.ts"],"names":[],"mappings":"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"}