ug-js-sdk 3.0.51 → 3.0.56

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 (68) 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__/network/WebSocketConnection.test.d.ts +1 -0
  33. package/dist/ug-core/__tests__/network/WebSocketConnection.test.js +193 -0
  34. package/dist/ug-core/__tests__/network/WebSocketConnection.test.js.map +1 -0
  35. package/dist/ug-core/__tests__/playback-manager/SubtitleManager.test.d.ts +1 -0
  36. package/dist/ug-core/__tests__/playback-manager/SubtitleManager.test.js +228 -0
  37. package/dist/ug-core/__tests__/playback-manager/SubtitleManager.test.js.map +1 -0
  38. package/dist/ug-core/__tests__/setup.d.ts +4 -0
  39. package/dist/ug-core/__tests__/setup.js +8 -0
  40. package/dist/ug-core/__tests__/setup.js.map +1 -0
  41. package/dist/ug-core/conversation-manager/ConversationManager.js +14 -0
  42. package/dist/ug-core/conversation-manager/ConversationManager.js.map +1 -1
  43. package/dist/ug-core/conversation-manager/ErrorRetryHandler.d.ts +1 -0
  44. package/dist/ug-core/conversation-manager/ErrorRetryHandler.js +3 -0
  45. package/dist/ug-core/conversation-manager/ErrorRetryHandler.js.map +1 -1
  46. package/dist/ug-core/conversation-manager/types.d.ts +51 -6
  47. package/dist/ug-core/network/ConversationNetwork.js +12 -6
  48. package/dist/ug-core/network/ConversationNetwork.js.map +1 -1
  49. package/dist/ug-core/playback-manager/PlaybackManager.d.ts +104 -0
  50. package/dist/ug-core/playback-manager/PlaybackManager.js +121 -4
  51. package/dist/ug-core/playback-manager/PlaybackManager.js.map +1 -1
  52. package/dist/ug-core/playback-manager/audio-player/AudioPlayer.d.ts +156 -0
  53. package/dist/ug-core/playback-manager/audio-player/AudioPlayer.js +156 -0
  54. package/dist/ug-core/playback-manager/audio-player/AudioPlayer.js.map +1 -1
  55. package/dist/ug-core/playback-manager/subtitle-manager/SubtitleManager.js +3 -1
  56. package/dist/ug-core/playback-manager/subtitle-manager/SubtitleManager.js.map +1 -1
  57. package/dist/ug-core/types/index.d.ts +34 -3
  58. package/dist/ug-core/user-input-manager/AudioRecorder.d.ts +49 -0
  59. package/dist/ug-core/user-input-manager/AudioRecorder.js +39 -1
  60. package/dist/ug-core/user-input-manager/AudioRecorder.js.map +1 -1
  61. package/dist/ug-core/user-input-manager/UserInputManager.d.ts +82 -6
  62. package/dist/ug-core/user-input-manager/UserInputManager.js +82 -6
  63. package/dist/ug-core/user-input-manager/UserInputManager.js.map +1 -1
  64. package/dist/ug-core/user-input-manager/VADManager.d.ts +62 -0
  65. package/dist/ug-core/user-input-manager/VADManager.js +99 -8
  66. package/dist/ug-core/user-input-manager/VADManager.js.map +1 -1
  67. package/dist/ug-js-sdk.mjs +1 -1
  68. package/package.json +1 -1
@@ -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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"}