@voicethere/client 0.17.0 → 0.17.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.
- package/CHANGELOG.md +65 -48
- package/dist/spoken-text-reveal.d.ts.map +1 -1
- package/dist/spoken-text-reveal.js +151 -8
- package/dist/spoken-text-reveal.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.17.1] - 2026-10-30
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- A spoken reply interrupted before its first word was revealed (a barge-in, often the listener's speakers echoing into the mic) no longer disappears. Once the reply's audio has started, `onAgentText` and the spoken caption show at least its first sentence when the turn is interrupted, replaced by the next turn, or when the session closes or reconnects. A reply whose audio never started still shows nothing. An `agent_speaking_start` that arrives just before a turn's first `assistant_delta` now counts for that turn and its text starts revealing right away, and closing the session while a completed reply is still being revealed reports its full text.
|
|
8
|
+
|
|
3
9
|
## [0.17.0] - 2026-10-30
|
|
4
10
|
|
|
5
11
|
### Added
|
|
@@ -133,7 +139,7 @@
|
|
|
133
139
|
- Session error code `SESSION_ENDED_DURING_RECONNECT` when the gateway rejects the reconnect token with HTTP 401.
|
|
134
140
|
- `disconnect()` / `disconnectAsync()` send `{ "type": "client_hangup" }` (`CLIENT_HANGUP_MESSAGE_TYPE`) on the control channel before closing.
|
|
135
141
|
|
|
136
|
-
## 0.10.0
|
|
142
|
+
## [0.10.0] - 2026-10-04
|
|
137
143
|
|
|
138
144
|
### Changed
|
|
139
145
|
|
|
@@ -145,19 +151,19 @@
|
|
|
145
151
|
- `startSession` failures from a rejected `POST /sessions` now include `httpStatus`.
|
|
146
152
|
- Exported `widgetKeyMapUrl` and `widgetProjectBootstrapUrl` URL builders.
|
|
147
153
|
|
|
148
|
-
## 0.9.0
|
|
154
|
+
## [0.9.0] - 2026-09-26
|
|
149
155
|
|
|
150
156
|
### Added
|
|
151
157
|
|
|
152
158
|
- **Key-only embed bootstrap** — `createVoiceThereWidgetAsync({ clientKey })` loads `{cdn}/widgets/by-key/{sha256(clientKey)}/bootstrap.json` (no `Authorization`; `credentials: "omit"`), caches the document in `sessionStorage` for repeat navigations, and merges optional published `widget` appearance. Legacy `configUrl` still fetches `config.json` only. Default hosts: `https://sessions.voicethere.io/v1` and `https://cdn.voicethere.io` (staging sessions host pairs with `https://cdn.voicethere.dev`).
|
|
153
159
|
|
|
154
|
-
## 0.8.3
|
|
160
|
+
## [0.8.3] - 2026-09-21
|
|
155
161
|
|
|
156
162
|
### Added
|
|
157
163
|
|
|
158
164
|
- **Embed spoken chat captions** — optional `streamSpokenText` (default off) reveals incoming agent `chat_reply` text word-by-word during speech; snaps on `agent_speaking_end` and freezes on `barge_in`. Supports `chat_reply` fields `stream`, `utteranceId`, and `durationMs` on voice-control messages.
|
|
159
165
|
|
|
160
|
-
## 0.8.2
|
|
166
|
+
## [0.8.2] - 2026-09-19
|
|
161
167
|
|
|
162
168
|
### Added
|
|
163
169
|
|
|
@@ -171,13 +177,13 @@
|
|
|
171
177
|
- **Embed panel UX** — opening the chat hides the launcher pill; panel header includes a close control (`data-vt-open` on the root).
|
|
172
178
|
- **Embed transcript** — message bubbles replace the debug `<pre>` log; `onControlMessage` appends incoming agent/chat text.
|
|
173
179
|
|
|
174
|
-
## 0.8.1
|
|
180
|
+
## [0.8.1] - 2026-09-01
|
|
175
181
|
|
|
176
182
|
### Fixed
|
|
177
183
|
|
|
178
184
|
- **Mic-denied synthetic fallback** — When microphone permission is denied or unavailable, the synthetic outbound track now sends inaudible looping white noise instead of silence so WebRTC is not DTX-suppressed, the runner receives `ontrack`, and the voice conversation can start. The production embed API `createVoiceThereWidget({ apiBase, projectId, clientKey, mode })` (no `configUrl`) is unchanged.
|
|
179
185
|
|
|
180
|
-
## 0.8.0
|
|
186
|
+
## [0.8.0] - 2026-08-31
|
|
181
187
|
|
|
182
188
|
### Added
|
|
183
189
|
|
|
@@ -188,7 +194,7 @@
|
|
|
188
194
|
- **Embed widget CDN config** — `createVoiceThereWidgetAsync` still mounts the launcher from inline options when `configUrl` is missing, unreachable, or returns invalid JSON; warns in the console instead of rejecting the promise.
|
|
189
195
|
- **Audio visualizer idle frame** — `attachAudioVisualizer().stop()` and ended MediaStream tracks now clear the canvas and draw a flat midline instead of freezing on the last analyser snapshot.
|
|
190
196
|
|
|
191
|
-
## 0.7.29
|
|
197
|
+
## [0.7.29] - 2026-08-28
|
|
192
198
|
|
|
193
199
|
### Added
|
|
194
200
|
|
|
@@ -203,13 +209,13 @@
|
|
|
203
209
|
|
|
204
210
|
- **Reconnect callbacks** — `onIceRecovery`, `onReconnecting`, and `onReconnected` accept an optional 2nd arg `VoiceSessionReconnectInfo` (`reason`, effective `iceTransportPolicy`) for E2E/load-test diagnostics.
|
|
205
211
|
|
|
206
|
-
## 0.7.28
|
|
212
|
+
## [0.7.28] - 2026-08-15
|
|
207
213
|
|
|
208
214
|
### Fixed
|
|
209
215
|
|
|
210
216
|
- Node runtime (`createNodeWebRtcRuntime`) waits for ICE gathering (`gatheringComplete` when available) before sending the SDP answer so relay candidates are in the answer. Browser default remains trickle-immediate.
|
|
211
217
|
|
|
212
|
-
## 0.7.27
|
|
218
|
+
## [0.7.27] - 2026-08-12
|
|
213
219
|
|
|
214
220
|
### Added
|
|
215
221
|
|
|
@@ -218,77 +224,77 @@
|
|
|
218
224
|
- **`audioInputDeviceId`** option on connect (`deviceId: { ideal }` for initial GUM).
|
|
219
225
|
- **`client/src/browser/microphone.ts`** helpers exported from `@voicethere/client/browser`.
|
|
220
226
|
|
|
221
|
-
## 0.7.26
|
|
227
|
+
## [0.7.26] - 2026-08-05
|
|
222
228
|
|
|
223
229
|
### Added
|
|
224
230
|
|
|
225
231
|
- **ICE recovery (relay-leaning)** — before same-session auto-reconnect budget: on PeerConnection fail (or stuck ICE checking ≥12s with `nominated=0`), rebuild via signaling with `iceTransportPolicy=relay`. Uses `onIceRecovery` / `maxIceRecoveryAttempts` (default **1**) and does **not** increment `autoReconnectAttempts` or call `onReconnecting`. Set `maxIceRecoveryAttempts=0` for legacy behavior; `iceRecoveryStuckCheckingMs=0` disables proactive stuck-checking.
|
|
226
232
|
- **`webrtc ice_triage`** — compact diagnostics line (selected/nominated/succeeded/failed + host/srflx/relay counts) in `formatWebRtcDiagnosticsLines` / `formatIceTriageLine`.
|
|
227
233
|
|
|
228
|
-
## 0.7.25
|
|
234
|
+
## [0.7.25] - 2026-08-03
|
|
229
235
|
|
|
230
236
|
### Fixed
|
|
231
237
|
|
|
232
238
|
- **`session_reconnect_token`** — after updating join credentials, forward the control message to `onControlMessage` so E2E waiters and app hooks observe the token (previously returned early after internal update only).
|
|
233
239
|
|
|
234
|
-
## 0.7.24
|
|
240
|
+
## [0.7.24] - 2026-08-03
|
|
235
241
|
|
|
236
242
|
### Added
|
|
237
243
|
|
|
238
244
|
- **`onReconnected`** — callback after same-session reconnect reaches ready again (not on first connect). Enables load/e2e mid-turn phrase resend without treating reconnect as a fresh session.
|
|
239
245
|
|
|
240
|
-
## 0.7.23
|
|
246
|
+
## [0.7.23] - 2026-08-03
|
|
241
247
|
|
|
242
248
|
### Added
|
|
243
249
|
|
|
244
250
|
- **`session_reconnect_token`** — voice-control handler updates in-memory join credentials when the runner mints an opaque reconnect token; same-session `reconnect()` and auto-reconnect open signaling with the latest token.
|
|
245
251
|
- **`forceCloseSignalingForTests()`** — test/E2E hook on `BrowserVoiceSession` to force-close the signaling WebSocket and trigger `signaling_closed` auto-reconnect.
|
|
246
252
|
|
|
247
|
-
## 0.7.22
|
|
253
|
+
## [0.7.22] - 2026-07-31
|
|
248
254
|
|
|
249
255
|
### Fixed
|
|
250
256
|
|
|
251
257
|
- **POST `/sessions` 429 mapping** — monthly usage gate responses (`NWRTC_MONTHLY_USAGE_EXCEEDED`) now surface `MONTHLY_USAGE_EXCEEDED` instead of always `CAPACITY_EXCEEDED`.
|
|
252
258
|
|
|
253
|
-
## 0.7.21
|
|
259
|
+
## [0.7.21] - 2026-07-31
|
|
254
260
|
|
|
255
261
|
### Fixed
|
|
256
262
|
|
|
257
263
|
- **`getConnectionState()` after idle kick** — inbound `session_close` now sets internal `connectionState` to `closed` (matching connection status), so callers polling `getConnectionState()` observe the disconnect.
|
|
258
264
|
|
|
259
|
-
## 0.7.20
|
|
265
|
+
## [0.7.20] - 2026-07-31
|
|
260
266
|
|
|
261
267
|
### Changed
|
|
262
268
|
|
|
263
269
|
- **Deps** — `@node-webrtc-rust/{sdk,signaling}` **0.7.0** (Opus SDP omits `maxaveragebitrate` unless env set; encode default 400 kbps).
|
|
264
270
|
|
|
265
|
-
## 0.7.19
|
|
271
|
+
## [0.7.19] - 2026-07-30
|
|
266
272
|
|
|
267
273
|
### Fixed
|
|
268
274
|
|
|
269
275
|
- **Inbound `session_close`** — idle kick and other server-initiated closes now emit a non-recoverable `session_error` (`SESSION_IDLE_TIMEOUT` or `WEBRTC_CONNECTION_CLOSED`) and stop auto-reconnect so dashboard chat does not stay "Connected".
|
|
270
276
|
- **`auto_reconnect_exhausted`** — emits `WEBRTC_RECONNECT_EXHAUSTED`, marks the session terminal, and publishes a closed/not-ready connection snapshot.
|
|
271
277
|
|
|
272
|
-
## 0.7.18
|
|
278
|
+
## [0.7.18] - 2026-07-30
|
|
273
279
|
|
|
274
280
|
### Fixed
|
|
275
281
|
|
|
276
282
|
- **Browser ICE:** send the SDP answer immediately after `setLocalDescription` and trickle candidates via `onicecandidate`, instead of waiting for `iceGatheringState === "complete"`. Waiting for gather-complete delayed CreatePermission on the runner and caused Chromium sessions (especially TURN relay) to fail with `WEBRTC_CONNECTION_FAILED` while Node clients succeeded.
|
|
277
283
|
- **`waitForConnected`:** fail fast when `connectionState` / `iceConnectionState` enter `failed` or `disconnected`, instead of waiting for the full timeout (dashboard half-open recovery).
|
|
278
284
|
|
|
279
|
-
## 0.7.17
|
|
285
|
+
## [0.7.17] - 2026-07-28
|
|
280
286
|
|
|
281
287
|
### Changed
|
|
282
288
|
|
|
283
289
|
- Treat control-channel JSON `position` as high-frequency: log at debug (with `keepalive` / `state` / `tick`) so load/redis-sync smokes stay quiet unless `LOAD_TEST_CLIENT_DEBUG=1`.
|
|
284
290
|
|
|
285
|
-
## 0.7.16
|
|
291
|
+
## [0.7.16] - 2026-07-28
|
|
286
292
|
|
|
287
293
|
### Changed
|
|
288
294
|
|
|
289
295
|
- Stop logging `dc/control_not_open` / `dc/sync_not_open` on every failed send while channels are connecting. Open/close transitions remain single `dc/open` / `dc/close` events (avoids spam from readiness polls).
|
|
290
296
|
|
|
291
|
-
## 0.7.15
|
|
297
|
+
## [0.7.15] - 2026-07-28
|
|
292
298
|
|
|
293
299
|
### Added
|
|
294
300
|
|
|
@@ -299,7 +305,7 @@
|
|
|
299
305
|
|
|
300
306
|
- Consumers that require abortable `startSession` (canonical voice soak) must install this release (or newer). Older published `0.7.14` builds do not advertise the capability.
|
|
301
307
|
|
|
302
|
-
## 0.7.14
|
|
308
|
+
## [0.7.14] - 2026-07-27
|
|
303
309
|
|
|
304
310
|
### Added
|
|
305
311
|
|
|
@@ -313,31 +319,31 @@
|
|
|
313
319
|
- **Removed startup ICE PC reconstruction** — race-prone automatic peer rebuild on failed/disconnected startup was dropped. Existing same-session signaling reconnect is unchanged.
|
|
314
320
|
- Diagnostic redaction covers `http(s)`, `ws(s)`, `turn(s)`, `stun` URIs, join tokens, JSON credentials, and SDP `ice-pwd`; async diagnostic handler rejections are isolated.
|
|
315
321
|
|
|
316
|
-
## 0.7.13
|
|
322
|
+
## [0.7.13] - 2026-07-26
|
|
317
323
|
|
|
318
324
|
### Added
|
|
319
325
|
|
|
320
326
|
- **ICE candidate-pair diagnostics** — `getWebRtcDiagnostics()` / `summarizeRtcStatsReport` now resolve local/remote candidate types for every retained pair (order-independent), including failed non-selected pairs. Aggregate counts add `prflx` / unknown local candidates and total local candidate reports. Formatted lines stay redacted (no addresses, ports, URLs, or credentials).
|
|
321
327
|
|
|
322
|
-
## 0.7.12
|
|
328
|
+
## [0.7.12] - 2026-07-24
|
|
323
329
|
|
|
324
330
|
### Added
|
|
325
331
|
|
|
326
332
|
- **`fetchSessionApi`** — retries session-service `POST`/`GET` on Envoy-style 502–504 / `upstream connect error` / connection termination (and network `fetch failed`), with short backoff. Wired into `startSession` and status polling so rolling deploys do not fail one-shot polls.
|
|
327
333
|
|
|
328
|
-
## 0.7.11
|
|
334
|
+
## [0.7.11] - 2026-07-23
|
|
329
335
|
|
|
330
336
|
### Changed
|
|
331
337
|
|
|
332
338
|
- **Adaptive session provisioning polling** — replace fixed 1s status polls with backoff + jitter, and honor Session API `retry_after_ms` hints to cut control-plane load during wait queues.
|
|
333
339
|
|
|
334
|
-
## 0.7.10
|
|
340
|
+
## [0.7.10] - 2026-07-21
|
|
335
341
|
|
|
336
342
|
### Fixed
|
|
337
343
|
|
|
338
344
|
- **Same-session reconnect after `WEBRTC_SDP_NEGOTIATION_FAILED`** — malformed/empty remote offers (missing `a=ice-ufrag`) now trigger signaling reconnect under the default `same-session` policy so `waitForConnected()` can recover instead of hanging until timeout (scale-up burst flake class).
|
|
339
345
|
|
|
340
|
-
## 0.7.9
|
|
346
|
+
## [0.7.9] - 2026-07-17
|
|
341
347
|
|
|
342
348
|
### Added
|
|
343
349
|
|
|
@@ -348,19 +354,19 @@
|
|
|
348
354
|
|
|
349
355
|
- **`waitForConnected()` after early offer failure** — preserve non-retriable SDP handler errors via `pendingConnectFailure` so callers fail fast instead of waiting for the connect timeout.
|
|
350
356
|
|
|
351
|
-
## 0.7.8
|
|
357
|
+
## [0.7.8] - 2026-07-17
|
|
352
358
|
|
|
353
359
|
### Fixed
|
|
354
360
|
|
|
355
361
|
- **Terminal `session_error` vs transport failure** — when the server sends `session_error` with `recoverable: false` (e.g. `AGENT_HANDLER_FAILED`), mark the session as gracefully disconnected so auto-reconnect does not overwrite the error with `WEBRTC_CONNECTION_FAILED`.
|
|
356
362
|
|
|
357
|
-
## 0.7.7
|
|
363
|
+
## [0.7.7] - 2026-07-15
|
|
358
364
|
|
|
359
365
|
### Changed
|
|
360
366
|
|
|
361
367
|
- **Data-channel debug noise** — `keepalive`, `state`, and `tick` payloads log at `debug` instead of `info` (inbound and `sendToAgent` outbound). Staging E2E omits them unless `LOAD_TEST_CLIENT_DEBUG=1`.
|
|
362
368
|
|
|
363
|
-
## 0.7.6
|
|
369
|
+
## [0.7.6] - 2026-07-15
|
|
364
370
|
|
|
365
371
|
### Added
|
|
366
372
|
|
|
@@ -371,31 +377,31 @@
|
|
|
371
377
|
|
|
372
378
|
- **`waitForConnected()` during reconnect** — preserve the connect wait promise across signaling rejoin and ignore intentional peer-connection teardown when applying a replacement server offer.
|
|
373
379
|
|
|
374
|
-
## 0.7.5
|
|
380
|
+
## [0.7.5] - 2026-07-13
|
|
375
381
|
|
|
376
382
|
### Changed
|
|
377
383
|
|
|
378
384
|
- **`waitForConnected()` timeout** — error message includes connection phase, peer connection state, and data-channel flags for E2E/Loki triage without extra debug tooling.
|
|
379
385
|
|
|
380
|
-
## 0.7.4
|
|
386
|
+
## [0.7.4] - 2026-07-10
|
|
381
387
|
|
|
382
388
|
### Added
|
|
383
389
|
|
|
384
390
|
- **`getWebRtcDiagnostics()`** on `BrowserVoiceSession` — ICE transport state plus `getStats()` candidate-pair / relay summary for connect failure triage in staging E2E.
|
|
385
391
|
|
|
386
|
-
## 0.7.3
|
|
392
|
+
## [0.7.3] - 2026-07-07
|
|
387
393
|
|
|
388
394
|
### Fixed
|
|
389
395
|
|
|
390
396
|
- **`waitForIceGatheringComplete` on Node** — fall back to `onicegatheringstatechange` when `RTCPeerConnection.addEventListener` is unavailable (`@node-webrtc-rust/sdk`), fixing headless E2E load tests that use `@voicethere/client/node`.
|
|
391
397
|
|
|
392
|
-
## 0.7.2
|
|
398
|
+
## [0.7.2] - 2026-07-07
|
|
393
399
|
|
|
394
400
|
### Fixed
|
|
395
401
|
|
|
396
402
|
- **Browser answer ICE gathering** — wait for local ICE gathering to complete before sending the SDP answer (matches agent offer and `@node-webrtc-rust/signaling` auto-negotiate), reducing first-connect `WEBRTC_CONNECTION_FAILED` when TURN relay candidates are required.
|
|
397
403
|
|
|
398
|
-
## 0.7.1
|
|
404
|
+
## [0.7.1] - 2026-07-07
|
|
399
405
|
|
|
400
406
|
### Added
|
|
401
407
|
|
|
@@ -412,7 +418,7 @@
|
|
|
412
418
|
|
|
413
419
|
- **Initial signaling join** — first connect uses a dedicated join path instead of the same-session reconnect flow, avoiding spurious peer-connection resets and reconnect debug noise.
|
|
414
420
|
|
|
415
|
-
## 0.7.0
|
|
421
|
+
## [0.7.0] - 2026-07-03
|
|
416
422
|
|
|
417
423
|
### Added
|
|
418
424
|
|
|
@@ -426,7 +432,7 @@
|
|
|
426
432
|
|
|
427
433
|
- **`connectBrowserSession` mic request** — `requestMic` is derived from resolved mode (`voice` and `voice+data` request mic; data-only provisioning maps to `chat` without mic).
|
|
428
434
|
|
|
429
|
-
## 0.6.1
|
|
435
|
+
## [0.6.1] - 2026-06-28
|
|
430
436
|
|
|
431
437
|
### Fixed
|
|
432
438
|
|
|
@@ -437,7 +443,7 @@
|
|
|
437
443
|
- **Split binary receive callbacks** — browser voice sessions now support a dedicated `onSyncBinaryMessage` callback for `voicethere-sync`, while `onBinaryMessage` handles `voice-control` binary frames.
|
|
438
444
|
- **Regression coverage** — added tests to lock callback forwarding and channel-specific binary routing.
|
|
439
445
|
|
|
440
|
-
## 0.6.0
|
|
446
|
+
## [0.6.0] - 2026-06-28
|
|
441
447
|
|
|
442
448
|
### Changed
|
|
443
449
|
|
|
@@ -448,13 +454,13 @@
|
|
|
448
454
|
|
|
449
455
|
- **Boundary regression tests** — added tests that fail if browser-facing sources reintroduce `@node-webrtc-rust/sdk` imports.
|
|
450
456
|
|
|
451
|
-
## 0.5.7
|
|
457
|
+
## [0.5.7] - 2026-06-28
|
|
452
458
|
|
|
453
459
|
### Added
|
|
454
460
|
|
|
455
461
|
- **Root connection error handler surface** — session and signaling transport errors now bubble to the process-wide root connection error handler so apps can centralize telemetry/logging without wiring `.on("error")` on every connection.
|
|
456
462
|
|
|
457
|
-
## 0.5.6
|
|
463
|
+
## [0.5.6] - 2026-06-23
|
|
458
464
|
|
|
459
465
|
### Added
|
|
460
466
|
|
|
@@ -464,20 +470,20 @@
|
|
|
464
470
|
|
|
465
471
|
- **Dependencies** — `@node-webrtc-rust/signaling@0.6.2`; peer `@node-webrtc-rust/sdk` `>=0.6.2`.
|
|
466
472
|
|
|
467
|
-
## 0.5.5
|
|
473
|
+
## [0.5.5] - 2026-06-20
|
|
468
474
|
|
|
469
475
|
### Fixed
|
|
470
476
|
|
|
471
477
|
- **`waitForConnected` after transport failure** — clear the internal connect promise when the peer connection enters `failed` or `closed` so same-session auto-reconnect and a subsequent `waitForConnected()` can succeed instead of hanging on a stale rejected promise.
|
|
472
478
|
- **`micPump: "external"` Node connect** — send a short PCM kick on mic attach (before answer handling) so headless load tests emit RTP during ICE like the default silent pump.
|
|
473
479
|
|
|
474
|
-
## 0.5.4
|
|
480
|
+
## [0.5.4] - 2026-06-19
|
|
475
481
|
|
|
476
482
|
### Added
|
|
477
483
|
|
|
478
484
|
- **`micPump`** on `connectBrowserVoiceSession` — `'silent'` (default) or `'external'` so headless load tests can pump scripted PCM via `writeSample` without racing the silent mic loop
|
|
479
485
|
|
|
480
|
-
## 0.5.3
|
|
486
|
+
## [0.5.3] - 2026-06-19
|
|
481
487
|
|
|
482
488
|
### Added
|
|
483
489
|
|
|
@@ -491,7 +497,7 @@
|
|
|
491
497
|
|
|
492
498
|
- Recoverable WebRTC disconnects (`WEBRTC_CONNECTION_FAILED`, `WEBRTC_CONNECTION_CLOSED`) emit `session_error` with `recoverable: true` and trigger same-session retry when policy allows
|
|
493
499
|
|
|
494
|
-
## 0.5.2
|
|
500
|
+
## [0.5.2] - 2026-06-19
|
|
495
501
|
|
|
496
502
|
### Added
|
|
497
503
|
|
|
@@ -505,7 +511,18 @@
|
|
|
505
511
|
- **Node headless voice** — attach mic with `addTrack` **before** `setRemoteDescription` so the answer SDP includes `sendrecv` (required by `@node-webrtc-rust/sdk`; fixes runner mic-track timeout in staging E2E).
|
|
506
512
|
- **Mic RTP pump** — after `connected`, send kick + silent PCM frames via `writeSample` so the server receives `ontrack` and starts VoiceAgent.
|
|
507
513
|
|
|
508
|
-
## 0.5.
|
|
514
|
+
## [0.5.1] - 2026-06-18
|
|
515
|
+
|
|
516
|
+
### Fixed
|
|
517
|
+
|
|
518
|
+
- Node headless voice (`@voicethere/client/node`): the microphone track is now attached with `addTrack` before the remote description is set, so the answer SDP includes `sendrecv`.
|
|
519
|
+
- After the connection is up, the Node mic sends a short kick frame and then silent PCM frames through `writeSample`, so the server receives the audio track and starts the voice agent. The pump stops when the connection leaves `connected`.
|
|
520
|
+
|
|
521
|
+
### Changed
|
|
522
|
+
|
|
523
|
+
- Browser test harness README: documents the CORS requirements for calling the session API from the browser.
|
|
524
|
+
|
|
525
|
+
## [0.5.0] - 2026-06-17
|
|
509
526
|
|
|
510
527
|
### Added
|
|
511
528
|
|
|
@@ -513,7 +530,7 @@
|
|
|
513
530
|
- Injectable `WebRtcRuntime` on `connectBrowserVoiceSession` for Node test harnesses
|
|
514
531
|
- `waitForConnected`, `onControlMessage` on browser voice sessions
|
|
515
532
|
|
|
516
|
-
## 0.4.0
|
|
533
|
+
## [0.4.0] - 2026-06-16
|
|
517
534
|
|
|
518
535
|
### Added
|
|
519
536
|
|
|
@@ -521,7 +538,7 @@
|
|
|
521
538
|
- `onBinaryMessage` callback for inbound binary frames.
|
|
522
539
|
- Export `VOICE_SYNC_CHANNEL_LABEL` (matches helpers / agent sync channel).
|
|
523
540
|
|
|
524
|
-
## 0.3.0
|
|
541
|
+
## [0.3.0] - 2026-06-15
|
|
525
542
|
|
|
526
543
|
### Added
|
|
527
544
|
|
|
@@ -530,6 +547,6 @@
|
|
|
530
547
|
- `templates/` — React hook, embed HTML, debug page starters
|
|
531
548
|
- CI workflow and release tag publish (mirror `@voicethere/cli`)
|
|
532
549
|
|
|
533
|
-
## 0.1.0
|
|
550
|
+
## [0.1.0]
|
|
534
551
|
|
|
535
552
|
- Initial `connectVoiceSession` cloud/local signaling helper
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spoken-text-reveal.d.ts","sourceRoot":"","sources":["../src/spoken-text-reveal.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"spoken-text-reveal.d.ts","sourceRoot":"","sources":["../src/spoken-text-reveal.ts"],"names":[],"mappings":"AAgBA,+EAA+E;AAC/E,MAAM,MAAM,oBAAoB,GAAG;IACjC,2EAA2E;IAC3E,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,CACR,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE,oBAAoB,KACxB,IAAI,CAAC;IACV,UAAU,CAAC,EAAE,OAAO,UAAU,CAAC;IAC/B,YAAY,CAAC,EAAE,OAAO,YAAY,CAAC;CACpC,CAAC;AAqCF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACjE,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAgEF,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,wBAAwB,GAC7B,iBAAiB,CA2mBnB;AAED;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,WAAW,CAAC;AAI5D,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,mDAAmD;IACnD,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACjE,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,IAAI,CAAC,EAAE,oBAAoB,CAAC;IAC5B,WAAW,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IAC/C,UAAU,CAAC,EAAE,OAAO,UAAU,CAAC;IAC/B,YAAY,CAAC,EAAE,OAAO,YAAY,CAAC;CACpC,GAAG,eAAe,CA+ElB"}
|
|
@@ -5,6 +5,13 @@ const START_FALLBACK_MS = 400;
|
|
|
5
5
|
*/
|
|
6
6
|
const SPOKEN_START_FALLBACK_MS = 5000;
|
|
7
7
|
const DEFAULT_MS_PER_WORD = 330;
|
|
8
|
+
/**
|
|
9
|
+
* speech_event carries no turnId, and the agent sends each sentence's assistant_delta before
|
|
10
|
+
* its speak, so a turn's first delta trails its own audio start only by transport skew. A cut
|
|
11
|
+
* start (agent_speaking_start then barge_in) not claimed by a turn within this window belonged
|
|
12
|
+
* to an earlier turn.
|
|
13
|
+
*/
|
|
14
|
+
const UNCLAIMED_CUT_MS = 1500;
|
|
8
15
|
const COMPLETED_IDS_MAX = 32;
|
|
9
16
|
function splitWords(text) {
|
|
10
17
|
return text.split(/\s+/).filter(Boolean);
|
|
@@ -64,6 +71,13 @@ export function createSpokenChatCaption(opts) {
|
|
|
64
71
|
// The caption follows one utterance at a time: a new turnId drops the previous state and
|
|
65
72
|
// leaves its line at a prefix. A finished, unfrozen turn is settled to its full text first.
|
|
66
73
|
let currentSpoken = null;
|
|
74
|
+
// agent_speaking_start seen while no unfinished spoken turn was current: its audio belongs to
|
|
75
|
+
// the next turn (the start can arrive before that turn's first delta).
|
|
76
|
+
let unclaimedStart = false;
|
|
77
|
+
// A barge_in landed while that start was unclaimed: the turn that claims it is already cut
|
|
78
|
+
// off, so it is frozen from its first delta.
|
|
79
|
+
let unclaimedBargeIn = false;
|
|
80
|
+
let unclaimedCutTimer;
|
|
67
81
|
/** Single send path for every visible change; spoken turns carry `info`. */
|
|
68
82
|
const emit = (utteranceId, visibleText) => {
|
|
69
83
|
const turn = spokenTurns.get(utteranceId);
|
|
@@ -333,14 +347,104 @@ export function createSpokenChatCaption(opts) {
|
|
|
333
347
|
}
|
|
334
348
|
}
|
|
335
349
|
};
|
|
350
|
+
const clearUnclaimedCutTimer = () => {
|
|
351
|
+
if (unclaimedCutTimer === undefined)
|
|
352
|
+
return;
|
|
353
|
+
clearTimeoutFn(unclaimedCutTimer);
|
|
354
|
+
unclaimedCutTimer = undefined;
|
|
355
|
+
};
|
|
356
|
+
/** A turn whose audio started never ends without a line: show its first sentence. */
|
|
357
|
+
const commitRevealed = (turn) => {
|
|
358
|
+
if (turn.lastEmitted || !turn.audioStarted || !turn.firstChunk)
|
|
359
|
+
return;
|
|
360
|
+
emit(turn.turnId, turn.firstChunk);
|
|
361
|
+
};
|
|
362
|
+
/**
|
|
363
|
+
* A claimed start (it came before this turn's first delta) begins pacing after a 400 ms grace,
|
|
364
|
+
* so a barge-in inside it still shows the first sentence.
|
|
365
|
+
*/
|
|
366
|
+
const scheduleClaimedStart = (turn) => {
|
|
367
|
+
const pending = state;
|
|
368
|
+
if (!turn.audioStarted ||
|
|
369
|
+
turn.frozen ||
|
|
370
|
+
!pending ||
|
|
371
|
+
pending.utteranceId !== turn.turnId ||
|
|
372
|
+
pending.revealStarted ||
|
|
373
|
+
pending.frozen ||
|
|
374
|
+
pending.startTimeoutId !== undefined) {
|
|
375
|
+
return;
|
|
376
|
+
}
|
|
377
|
+
pending.startTimeoutId = setTimeoutFn(() => {
|
|
378
|
+
pending.startTimeoutId = undefined;
|
|
379
|
+
if (state !== pending || pending.revealStarted || pending.frozen)
|
|
380
|
+
return;
|
|
381
|
+
startReveal(pending);
|
|
382
|
+
}, START_FALLBACK_MS);
|
|
383
|
+
};
|
|
384
|
+
/** Spoken-turn bookkeeping for speech events; the caption's own pacing runs separately. */
|
|
385
|
+
const trackSpokenSpeechEvent = (event) => {
|
|
386
|
+
if (event === "agent_speaking_start") {
|
|
387
|
+
const current = currentSpoken;
|
|
388
|
+
const waitingForStart = current !== null &&
|
|
389
|
+
state !== null &&
|
|
390
|
+
state.utteranceId === current.turnId &&
|
|
391
|
+
!state.revealStarted &&
|
|
392
|
+
!state.frozen;
|
|
393
|
+
if (current && (!current.done || waitingForStart)) {
|
|
394
|
+
current.audioStarted = true;
|
|
395
|
+
}
|
|
396
|
+
else {
|
|
397
|
+
clearUnclaimedCutTimer();
|
|
398
|
+
unclaimedBargeIn = false;
|
|
399
|
+
unclaimedStart = true;
|
|
400
|
+
}
|
|
401
|
+
return;
|
|
402
|
+
}
|
|
403
|
+
if (event === "agent_speaking_end") {
|
|
404
|
+
// An end right after a barge_in is the cut-off playback of the same, unclaimed turn.
|
|
405
|
+
if (!unclaimedBargeIn)
|
|
406
|
+
unclaimedStart = false;
|
|
407
|
+
return;
|
|
408
|
+
}
|
|
409
|
+
if (event === "barge_in") {
|
|
410
|
+
if (currentSpoken)
|
|
411
|
+
commitRevealed(currentSpoken);
|
|
412
|
+
if (unclaimedStart) {
|
|
413
|
+
unclaimedBargeIn = true;
|
|
414
|
+
clearUnclaimedCutTimer();
|
|
415
|
+
unclaimedCutTimer = setTimeoutFn(() => {
|
|
416
|
+
unclaimedCutTimer = undefined;
|
|
417
|
+
unclaimedStart = false;
|
|
418
|
+
unclaimedBargeIn = false;
|
|
419
|
+
}, UNCLAIMED_CUT_MS);
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
};
|
|
423
|
+
/** Makes `turn` the current spoken turn; it claims an unclaimed audio start. */
|
|
424
|
+
const claimSpoken = (turn) => {
|
|
425
|
+
if (currentSpoken !== turn) {
|
|
426
|
+
currentSpoken = turn;
|
|
427
|
+
if (unclaimedStart) {
|
|
428
|
+
turn.audioStarted = true;
|
|
429
|
+
if (unclaimedBargeIn)
|
|
430
|
+
turn.frozen = true;
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
unclaimedStart = false;
|
|
434
|
+
unclaimedBargeIn = false;
|
|
435
|
+
clearUnclaimedCutTimer();
|
|
436
|
+
};
|
|
336
437
|
const settleOtherSpoken = (turnId) => {
|
|
337
438
|
const previous = currentSpoken;
|
|
338
439
|
if (!previous || previous.turnId === turnId)
|
|
339
440
|
return;
|
|
340
|
-
if (previous.done &&
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
441
|
+
if (previous.done && !previous.frozen) {
|
|
442
|
+
if (previous.lastEmitted !== previous.text) {
|
|
443
|
+
emit(previous.turnId, previous.text);
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
else {
|
|
447
|
+
commitRevealed(previous);
|
|
344
448
|
}
|
|
345
449
|
currentSpoken = null;
|
|
346
450
|
};
|
|
@@ -356,6 +460,8 @@ export function createSpokenChatCaption(opts) {
|
|
|
356
460
|
frozen: false,
|
|
357
461
|
lastEmitted: "",
|
|
358
462
|
finalReported: false,
|
|
463
|
+
firstChunk: "",
|
|
464
|
+
audioStarted: false,
|
|
359
465
|
};
|
|
360
466
|
spokenTurns.set(turnId, turn);
|
|
361
467
|
while (spokenTurns.size > COMPLETED_IDS_MAX) {
|
|
@@ -401,7 +507,14 @@ export function createSpokenChatCaption(opts) {
|
|
|
401
507
|
return;
|
|
402
508
|
}
|
|
403
509
|
settleOtherSpoken(turnId);
|
|
404
|
-
|
|
510
|
+
claimSpoken(turn);
|
|
511
|
+
if (!turn.firstChunk)
|
|
512
|
+
turn.firstChunk = chunk;
|
|
513
|
+
if (turn.frozen) {
|
|
514
|
+
// Cut off before this delta: only the first sentence is shown.
|
|
515
|
+
commitRevealed(turn);
|
|
516
|
+
return;
|
|
517
|
+
}
|
|
405
518
|
handleChatReply({
|
|
406
519
|
type: "chat_reply",
|
|
407
520
|
utteranceId: turnId,
|
|
@@ -409,6 +522,7 @@ export function createSpokenChatCaption(opts) {
|
|
|
409
522
|
partial: true,
|
|
410
523
|
text: turn.text,
|
|
411
524
|
}, true);
|
|
525
|
+
scheduleClaimedStart(turn);
|
|
412
526
|
return;
|
|
413
527
|
}
|
|
414
528
|
const status = typeof payload.status === "string" ? payload.status : "";
|
|
@@ -423,10 +537,13 @@ export function createSpokenChatCaption(opts) {
|
|
|
423
537
|
return;
|
|
424
538
|
}
|
|
425
539
|
settleOtherSpoken(turnId);
|
|
426
|
-
|
|
540
|
+
claimSpoken(turn);
|
|
541
|
+
if (!turn.firstChunk)
|
|
542
|
+
turn.firstChunk = turn.text;
|
|
543
|
+
const wasFrozen = turn.frozen;
|
|
427
544
|
if (stopped)
|
|
428
545
|
turn.frozen = true;
|
|
429
|
-
if (turn.text) {
|
|
546
|
+
if (turn.text && !wasFrozen) {
|
|
430
547
|
handleChatReply({
|
|
431
548
|
type: "chat_reply",
|
|
432
549
|
utteranceId: turnId,
|
|
@@ -436,12 +553,15 @@ export function createSpokenChatCaption(opts) {
|
|
|
436
553
|
}
|
|
437
554
|
if (stopped)
|
|
438
555
|
handleSpeechEvent({ event: "barge_in" });
|
|
556
|
+
if (turn.frozen)
|
|
557
|
+
commitRevealed(turn);
|
|
439
558
|
const pending = state;
|
|
440
559
|
if (!stopped &&
|
|
441
560
|
pending &&
|
|
442
561
|
pending.utteranceId === turnId &&
|
|
443
562
|
!pending.revealStarted &&
|
|
444
|
-
!pending.frozen
|
|
563
|
+
!pending.frozen &&
|
|
564
|
+
!turn.audioStarted) {
|
|
445
565
|
// Audio that never starts must not hide a completed reply forever.
|
|
446
566
|
clearUtteranceTimers(pending);
|
|
447
567
|
pending.startTimeoutId = setTimeoutFn(() => {
|
|
@@ -451,6 +571,8 @@ export function createSpokenChatCaption(opts) {
|
|
|
451
571
|
snapToFull(pending);
|
|
452
572
|
}, SPOKEN_START_FALLBACK_MS);
|
|
453
573
|
}
|
|
574
|
+
if (!stopped)
|
|
575
|
+
scheduleClaimedStart(turn);
|
|
454
576
|
// Nothing visible changed since the last emit but the turn is now final.
|
|
455
577
|
if (!turn.finalReported &&
|
|
456
578
|
turn.lastEmitted &&
|
|
@@ -473,7 +595,12 @@ export function createSpokenChatCaption(opts) {
|
|
|
473
595
|
}
|
|
474
596
|
if (type === "speech_event") {
|
|
475
597
|
if (enabled) {
|
|
598
|
+
const event = typeof payload.event === "string" ? payload.event : "";
|
|
599
|
+
if (event !== "barge_in")
|
|
600
|
+
trackSpokenSpeechEvent(event);
|
|
476
601
|
handleSpeechEvent(payload);
|
|
602
|
+
if (event === "barge_in")
|
|
603
|
+
trackSpokenSpeechEvent(event);
|
|
477
604
|
return;
|
|
478
605
|
}
|
|
479
606
|
}
|
|
@@ -486,9 +613,25 @@ export function createSpokenChatCaption(opts) {
|
|
|
486
613
|
}
|
|
487
614
|
};
|
|
488
615
|
const dispose = () => {
|
|
616
|
+
// Disconnect or reconnect: a finished turn still pacing shows its full text, and a turn
|
|
617
|
+
// whose audio started keeps at least its first sentence.
|
|
618
|
+
const current = currentSpoken;
|
|
619
|
+
if (current && !current.frozen) {
|
|
620
|
+
if (current.done) {
|
|
621
|
+
if (current.lastEmitted !== current.text) {
|
|
622
|
+
emit(current.turnId, current.text);
|
|
623
|
+
}
|
|
624
|
+
}
|
|
625
|
+
else {
|
|
626
|
+
commitRevealed(current);
|
|
627
|
+
}
|
|
628
|
+
}
|
|
489
629
|
resetUtteranceState();
|
|
490
630
|
spokenTurns.clear();
|
|
491
631
|
currentSpoken = null;
|
|
632
|
+
unclaimedStart = false;
|
|
633
|
+
unclaimedBargeIn = false;
|
|
634
|
+
clearUnclaimedCutTimer();
|
|
492
635
|
};
|
|
493
636
|
return {
|
|
494
637
|
handleControlMessage,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spoken-text-reveal.js","sourceRoot":"","sources":["../src/spoken-text-reveal.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spoken-text-reveal.js","sourceRoot":"","sources":["../src/spoken-text-reveal.ts"],"names":[],"mappings":"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"}
|