@voicethere/client 0.7.12 → 0.7.14

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 (35) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +14 -11
  3. package/dist/browser/browser-session.d.ts +8 -2
  4. package/dist/browser/browser-session.d.ts.map +1 -1
  5. package/dist/browser/browser-session.js +6 -1
  6. package/dist/browser/browser-session.js.map +1 -1
  7. package/dist/browser/browser-voice-session.d.ts +11 -0
  8. package/dist/browser/browser-voice-session.d.ts.map +1 -1
  9. package/dist/browser/browser-voice-session.js +112 -6
  10. package/dist/browser/browser-voice-session.js.map +1 -1
  11. package/dist/browser/client-capabilities.d.ts +10 -0
  12. package/dist/browser/client-capabilities.d.ts.map +1 -0
  13. package/dist/browser/client-capabilities.js +9 -0
  14. package/dist/browser/client-capabilities.js.map +1 -0
  15. package/dist/browser/peer-connection-close.d.ts +22 -0
  16. package/dist/browser/peer-connection-close.d.ts.map +1 -0
  17. package/dist/browser/peer-connection-close.js +64 -0
  18. package/dist/browser/peer-connection-close.js.map +1 -0
  19. package/dist/browser/voice-session-diagnostics.d.ts +24 -0
  20. package/dist/browser/voice-session-diagnostics.d.ts.map +1 -0
  21. package/dist/browser/voice-session-diagnostics.js +48 -0
  22. package/dist/browser/voice-session-diagnostics.js.map +1 -0
  23. package/dist/browser/webrtc-diagnostics.d.ts +23 -0
  24. package/dist/browser/webrtc-diagnostics.d.ts.map +1 -1
  25. package/dist/browser/webrtc-diagnostics.js +113 -42
  26. package/dist/browser/webrtc-diagnostics.js.map +1 -1
  27. package/dist/browser/webrtc-runtime.d.ts +4 -0
  28. package/dist/browser/webrtc-runtime.d.ts.map +1 -1
  29. package/dist/browser/webrtc-runtime.js +8 -0
  30. package/dist/browser/webrtc-runtime.js.map +1 -1
  31. package/dist/node/index.d.ts +2 -1
  32. package/dist/node/index.d.ts.map +1 -1
  33. package/dist/node/index.js +1 -0
  34. package/dist/node/index.js.map +1 -1
  35. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,26 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## 0.7.14 — 2026-07-27
6
+
7
+ ### Added
8
+
9
+ - **`disconnectAsync()`** — awaitable terminal cleanup barrier; awaits Node runtime `closeAsync()` when present. Close failure is diagnostic-only and never aborts cleanup. Emits `peer_close` (redacted).
10
+ - **`CLIENT_CAPABILITIES.iceTransportPolicy`** — explicit package capability export for e2e fail-closed checks (`/browser` and `/node` entry points).
11
+ - **`iceTransportPolicy`** option — `"all" | "relay"` pass-through to `RTCConfiguration` for forced-relay TURN smokes.
12
+
13
+ ### Changed
14
+
15
+ - **`disconnect()` remains synchronous** — terminal invalidation (timers, WebSocket, peer/channels, mic) using standard sync `pc.close()`. Prefer `disconnectAsync()` when callers need to await native cleanup.
16
+ - **Removed startup ICE PC reconstruction** — race-prone automatic peer rebuild on failed/disconnected startup was dropped. Existing same-session signaling reconnect is unchanged.
17
+ - 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.
18
+
19
+ ## 0.7.13 — 2026-07-26
20
+
21
+ ### Added
22
+
23
+ - **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).
24
+
5
25
  ## 0.7.12 — 2026-07-24
6
26
 
7
27
  ### Added
package/README.md CHANGED
@@ -75,19 +75,19 @@ See [`examples/browser-test/README.md`](examples/browser-test/README.md).
75
75
 
76
76
  ## Ending a session
77
77
 
78
- | Action | API | Server `end_reason` |
79
- | --------------------- | ---------------------------------- | --------------------- |
80
- | Local teardown | `session.disconnect()` | `client_disconnected` |
81
- | Graceful close signal | `session.sendCloseSignal(reason?)` | `client_close_signal` |
82
- | Server idle timeout | _(automatic)_ | `idle_timeout` |
78
+ | Action | API | Server `end_reason` |
79
+ | --------------------- | --------------------------------------------------------------------------------- | --------------------- |
80
+ | Local teardown | `session.disconnect()` (sync) or `session.disconnectAsync()` (await native close) | `client_disconnected` |
81
+ | Graceful close signal | `session.sendCloseSignal(reason?)` | `client_close_signal` |
82
+ | Server idle timeout | _(automatic)_ | `idle_timeout` |
83
83
 
84
84
  ## Reconnect and billing
85
85
 
86
- | UI / API | Behavior |
87
- | -------- | -------- |
88
- | Dashboard **Reconnect** or embed **Connect** after disconnect | Calls `startSession()` → **new orchestrator session id**, new Supabase row, new billing period once WebRTC connects |
89
- | Unintentional drop (network, signaling close) | Default `reconnectPolicy: "same-session"` re-joins with the **same credentials** and `peerId` (auto-retry with backoff) |
90
- | Manual `session.reconnect()` | Same orchestrator session — re-opens signaling only |
86
+ | UI / API | Behavior |
87
+ | ------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
88
+ | Dashboard **Reconnect** or embed **Connect** after disconnect | Calls `startSession()` → **new orchestrator session id**, new Supabase row, new billing period once WebRTC connects |
89
+ | Unintentional drop (network, signaling close) | Default `reconnectPolicy: "same-session"` re-joins with the **same credentials** and `peerId` (auto-retry with backoff) |
90
+ | Manual `session.reconnect()` | Same orchestrator session — re-opens signaling only |
91
91
 
92
92
  Billing starts when the runner reports a billable WebRTC leg (voice: connected PC + open control channel + agent; data-only: PC + DC). Provision alone does not bill.
93
93
 
@@ -114,7 +114,10 @@ Configure idle timeouts per project in the dashboard **Session settings** panel
114
114
  Pass `onSessionError` to `startSession` and `connectBrowserSession` for a unified handler across provisioning failures, WebRTC errors, and runner `session_error` data-channel events:
115
115
 
116
116
  ```typescript
117
- import { startSession, connectBrowserSession } from "@voicethere/client/browser";
117
+ import {
118
+ startSession,
119
+ connectBrowserSession,
120
+ } from "@voicethere/client/browser";
118
121
 
119
122
  const provision = await startSession({
120
123
  apiBase: "https://sessions.example/v1",
@@ -19,6 +19,8 @@ export type ConnectBrowserSessionOptions = {
19
19
  maxAutoReconnectAttempts?: number;
20
20
  onReconnecting?: (attempt: number) => void;
21
21
  onConnectionStatus?: (status: WebRtcConnectionStatus) => void;
22
+ iceTransportPolicy?: BrowserVoiceSessionOptions["iceTransportPolicy"];
23
+ onDiagnosticEvent?: BrowserVoiceSessionOptions["onDiagnosticEvent"];
22
24
  };
23
25
  export type BrowserSession = BrowserVoiceSession & {
24
26
  mode: BrowserSessionMode;
@@ -38,8 +40,12 @@ export type { SessionCredentials, SessionStatusResponse, StartSessionOptions, St
38
40
  export { BrowserSessionModeType, ProvisionedRunnerModeType, type BrowserSessionMode, type ProvisionedRunnerMode, } from "./session-modes.js";
39
41
  export type { WebRtcConnectionPhase, WebRtcConnectionSnapshot, WebRtcConnectionStatus, WebRtcReadinessProfile, } from "./webrtc-connection-status.js";
40
42
  export { buildWebRtcConnectionStatus, deriveWebRtcConnectionPhase, isWebRtcConnectionReady, resolveReadinessProfile, } from "./webrtc-connection-status.js";
41
- export { collectWebRtcDiagnostics, formatWebRtcDiagnosticsLines, summarizeRtcStatsReport, type WebRtcDiagnostics, type WebRtcStatsSummary, } from "./webrtc-diagnostics.js";
43
+ export { collectWebRtcDiagnostics, formatWebRtcDiagnosticsLines, summarizeRtcStatsReport, type WebRtcDiagnostics, type WebRtcIceCandidatePairSummary, type WebRtcStatsSummary, } from "./webrtc-diagnostics.js";
42
44
  export type { DebugConsole, DebugEvent } from "./debug-console.js";
43
45
  export type { WebRtcRuntime } from "./webrtc-runtime.js";
44
- export { getDefaultBrowserRuntime } from "./webrtc-runtime.js";
46
+ export { getDefaultBrowserRuntime, peerConnectionSupportsCloseAsync, } from "./webrtc-runtime.js";
47
+ export { closePeerConnectionAwaitable, type AwaitableCloseablePeerConnection, type PeerCloseResult, } from "./peer-connection-close.js";
48
+ export type { VoiceSessionDiagnosticEvent, VoiceSessionDiagnosticHandler, } from "./voice-session-diagnostics.js";
49
+ export { redactDiagnosticDetail } from "./voice-session-diagnostics.js";
50
+ export { CLIENT_CAPABILITIES, type ClientCapabilities, } from "./client-capabilities.js";
45
51
  //# sourceMappingURL=browser-session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser-session.d.ts","sourceRoot":"","sources":["../../src/browser/browser-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser-session.d.ts","sourceRoot":"","sources":["../../src/browser/browser-session.ts"],"names":[],"mappings":"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"}
@@ -37,6 +37,8 @@ export async function connectBrowserSession(options) {
37
37
  maxAutoReconnectAttempts: options.maxAutoReconnectAttempts,
38
38
  onReconnecting: options.onReconnecting,
39
39
  onConnectionStatus: options.onConnectionStatus,
40
+ iceTransportPolicy: options.iceTransportPolicy,
41
+ onDiagnosticEvent: options.onDiagnosticEvent,
40
42
  });
41
43
  return { ...session, mode: resolvedMode };
42
44
  }
@@ -54,5 +56,8 @@ export { createDebugConsole } from "./debug-console.js";
54
56
  export { BrowserSessionModeType, ProvisionedRunnerModeType, } from "./session-modes.js";
55
57
  export { buildWebRtcConnectionStatus, deriveWebRtcConnectionPhase, isWebRtcConnectionReady, resolveReadinessProfile, } from "./webrtc-connection-status.js";
56
58
  export { collectWebRtcDiagnostics, formatWebRtcDiagnosticsLines, summarizeRtcStatsReport, } from "./webrtc-diagnostics.js";
57
- export { getDefaultBrowserRuntime } from "./webrtc-runtime.js";
59
+ export { getDefaultBrowserRuntime, peerConnectionSupportsCloseAsync, } from "./webrtc-runtime.js";
60
+ export { closePeerConnectionAwaitable, } from "./peer-connection-close.js";
61
+ export { redactDiagnosticDetail } from "./voice-session-diagnostics.js";
62
+ export { CLIENT_CAPABILITIES, } from "./client-capabilities.js";
58
63
  //# sourceMappingURL=browser-session.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser-session.js","sourceRoot":"","sources":["../../src/browser/browser-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser-session.js","sourceRoot":"","sources":["../../src/browser/browser-session.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import type { DebugConsole } from "./debug-console.js";
4
4
  import { type WebRtcConnectionStatus, type WebRtcReadinessProfile } from "./webrtc-connection-status.js";
5
5
  import { type WebRtcDiagnostics } from "./webrtc-diagnostics.js";
6
6
  import { type WebRtcRuntime } from "./webrtc-runtime.js";
7
+ import { type VoiceSessionDiagnosticHandler } from "./voice-session-diagnostics.js";
7
8
  /**
8
9
  * Native RTCPeerConnection rejects offers without `a=ice-ufrag` (empty or truncated SDP).
9
10
  * Detect before setRemoteDescription so we can same-session reconnect instead of hanging.
@@ -41,6 +42,13 @@ export type BrowserVoiceSessionOptions = {
41
42
  onDebugEvent?: DebugConsole;
42
43
  /** Injectable WebRTC runtime (default: browser globals). */
43
44
  runtime?: WebRtcRuntime;
45
+ /**
46
+ * ICE transport policy for the peer connection (`all` | `relay`).
47
+ * Passed through to `RTCConfiguration.iceTransportPolicy`.
48
+ */
49
+ iceTransportPolicy?: "all" | "relay";
50
+ /** Structured diagnostics (peer close) — redacted; exceptions never affect lifecycle. */
51
+ onDiagnosticEvent?: VoiceSessionDiagnosticHandler;
44
52
  /** Opaque context forwarded to runner/agent on session start. */
45
53
  customerContext?: Record<string, unknown>;
46
54
  /** Unified handler for session_error DC events and local WebRTC failures. */
@@ -80,7 +88,10 @@ export type BrowserVoiceSessionOptions = {
80
88
  };
81
89
  export type BrowserVoiceSession = {
82
90
  peerId: string;
91
+ /** Synchronous terminal invalidation (reconnect-friendly; uses sync `pc.close()`). */
83
92
  disconnect: () => void;
93
+ /** Awaitable terminal cleanup barrier (Node `closeAsync` when present). */
94
+ disconnectAsync: () => Promise<void>;
84
95
  /** Ask the server to close this WebRTC leg (graceful close signal on voice-control). */
85
96
  sendCloseSignal: (reason?: string) => void;
86
97
  sendSpeak: (text: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"browser-voice-session.d.ts","sourceRoot":"","sources":["../../src/browser/browser-voice-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser-voice-session.d.ts","sourceRoot":"","sources":["../../src/browser/browser-voice-session.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,8 @@ import { createLocalSessionError, emitSessionError, isSessionErrorEvent, parseLe
4
4
  import { buildWebRtcConnectionStatus, isWebRtcConnectionReady, resolveReadinessProfile, } from "./webrtc-connection-status.js";
5
5
  import { collectWebRtcDiagnostics, } from "./webrtc-diagnostics.js";
6
6
  import { getDefaultBrowserRuntime, } from "./webrtc-runtime.js";
7
+ import { closePeerConnectionAwaitable } from "./peer-connection-close.js";
8
+ import { emitDiagnosticSafely, redactDiagnosticDetail, } from "./voice-session-diagnostics.js";
7
9
  import { waitForIceGatheringComplete } from "./wait-for-ice-gathering.js";
8
10
  import { isWebRtcConnectRetryError, WebRtcConnectRetryError, } from "./webrtc-connect-retry.js";
9
11
  /** Game-sync DC traffic logged at debug level — E2E stderr needs `LOAD_TEST_CLIENT_DEBUG=1`. */
@@ -404,7 +406,12 @@ export async function connectBrowserVoiceSession(options) {
404
406
  logOfferStep(step);
405
407
  step = "create_peer_connection";
406
408
  ensureConnectedPromise();
407
- pc = new runtime.RTCPeerConnection({ iceServers });
409
+ pc = new runtime.RTCPeerConnection({
410
+ iceServers,
411
+ ...(options.iceTransportPolicy
412
+ ? { iceTransportPolicy: options.iceTransportPolicy }
413
+ : {}),
414
+ });
408
415
  logOfferStep(step);
409
416
  pc.ontrack = (event) => {
410
417
  if (event.track.kind !== "audio")
@@ -741,16 +748,115 @@ export async function connectBrowserVoiceSession(options) {
741
748
  debug?.info("session", "close_signal", reason ?? "");
742
749
  },
743
750
  disconnect: () => {
751
+ // Sync terminal invalidation — must not await native close (reconnect opens WS promptly).
752
+ gracefulDisconnect = true;
753
+ if (reconnectTimer)
754
+ clearTimeout(reconnectTimer);
755
+ reconnectTimer = undefined;
756
+ stopMicPump?.();
757
+ stopMicPump = null;
758
+ const localControl = controlChannel;
759
+ const localSync = syncChannel;
760
+ const localPc = pc;
761
+ const localWs = ws;
762
+ const localMic = micStream;
763
+ controlChannel = null;
764
+ syncChannel = null;
765
+ pc = null;
766
+ ws = null;
767
+ micStream = null;
768
+ try {
769
+ localControl?.close();
770
+ }
771
+ catch {
772
+ /* ignore */
773
+ }
774
+ try {
775
+ localSync?.close();
776
+ }
777
+ catch {
778
+ /* ignore */
779
+ }
780
+ if (localWs) {
781
+ localWs.onclose = null;
782
+ localWs.onmessage = null;
783
+ localWs.onerror = null;
784
+ try {
785
+ localWs.close();
786
+ }
787
+ catch {
788
+ /* ignore */
789
+ }
790
+ }
791
+ try {
792
+ localPc?.close();
793
+ }
794
+ catch {
795
+ /* ignore */
796
+ }
797
+ localMic?.getTracks().forEach((track) => track.stop());
798
+ updateConnectionSnapshot({
799
+ signalingJoined: false,
800
+ peerConnectionState: "closed",
801
+ inboundAudioTrack: false,
802
+ outboundAudioTrack: false,
803
+ controlChannelOpen: false,
804
+ syncChannelOpen: false,
805
+ });
806
+ debug?.info("session", "disconnected");
807
+ },
808
+ disconnectAsync: async () => {
744
809
  gracefulDisconnect = true;
745
810
  if (reconnectTimer)
746
811
  clearTimeout(reconnectTimer);
812
+ reconnectTimer = undefined;
747
813
  stopMicPump?.();
748
814
  stopMicPump = null;
749
- controlChannel?.close();
750
- syncChannel?.close();
751
- pc?.close();
752
- micStream?.getTracks().forEach((track) => track.stop());
753
- ws?.close();
815
+ const localControl = controlChannel;
816
+ const localSync = syncChannel;
817
+ const localPc = pc;
818
+ const localWs = ws;
819
+ const localMic = micStream;
820
+ controlChannel = null;
821
+ syncChannel = null;
822
+ pc = null;
823
+ ws = null;
824
+ micStream = null;
825
+ try {
826
+ localControl?.close();
827
+ }
828
+ catch {
829
+ /* ignore */
830
+ }
831
+ try {
832
+ localSync?.close();
833
+ }
834
+ catch {
835
+ /* ignore */
836
+ }
837
+ if (localWs) {
838
+ localWs.onclose = null;
839
+ localWs.onmessage = null;
840
+ localWs.onerror = null;
841
+ try {
842
+ localWs.close();
843
+ }
844
+ catch {
845
+ /* ignore */
846
+ }
847
+ }
848
+ localMic?.getTracks().forEach((track) => track.stop());
849
+ const closeResult = await closePeerConnectionAwaitable(localPc);
850
+ emitDiagnosticSafely(options.onDiagnosticEvent, {
851
+ type: "peer_close",
852
+ mode: closeResult.mode,
853
+ durationMs: closeResult.durationMs,
854
+ timedOut: closeResult.timedOut,
855
+ context: "disconnect",
856
+ ...(closeResult.error !== undefined
857
+ ? { error: redactDiagnosticDetail(closeResult.error) }
858
+ : {}),
859
+ });
754
860
  updateConnectionSnapshot({
755
861
  signalingJoined: false,
756
862
  peerConnectionState: "closed",
@@ -1 +1 @@
1
- {"version":3,"file":"browser-voice-session.js","sourceRoot":"","sources":["../../src/browser/browser-voice-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser-voice-session.js","sourceRoot":"","sources":["../../src/browser/browser-voice-session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Explicit browser-client capability flags for consumers (e2e, tooling).
3
+ * Prefer this over inspecting installed bundle source text.
4
+ */
5
+ export declare const CLIENT_CAPABILITIES: {
6
+ /** RTCConfiguration.iceTransportPolicy is honored by connectBrowserVoiceSession. */
7
+ readonly iceTransportPolicy: true;
8
+ };
9
+ export type ClientCapabilities = typeof CLIENT_CAPABILITIES;
10
+ //# sourceMappingURL=client-capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-capabilities.d.ts","sourceRoot":"","sources":["../../src/browser/client-capabilities.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,mBAAmB;IAC9B,oFAAoF;;CAE5E,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,OAAO,mBAAmB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Explicit browser-client capability flags for consumers (e2e, tooling).
3
+ * Prefer this over inspecting installed bundle source text.
4
+ */
5
+ export const CLIENT_CAPABILITIES = {
6
+ /** RTCConfiguration.iceTransportPolicy is honored by connectBrowserVoiceSession. */
7
+ iceTransportPolicy: true,
8
+ };
9
+ //# sourceMappingURL=client-capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-capabilities.js","sourceRoot":"","sources":["../../src/browser/client-capabilities.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,oFAAoF;IACpF,kBAAkB,EAAE,IAAI;CAChB,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Capability-based awaitable peer close (Node SDK `closeAsync`, browser sync `close`).
3
+ */
4
+ export type AwaitableCloseablePeerConnection = RTCPeerConnection & {
5
+ closeAsync?: () => Promise<void>;
6
+ };
7
+ export type PeerCloseResult = {
8
+ /** `async` when runtime exposed closeAsync; otherwise sync browser-style close. */
9
+ mode: "async" | "sync";
10
+ durationMs: number;
11
+ timedOut: boolean;
12
+ /** Present when native close rejected; cleanup still completed. */
13
+ error?: unknown;
14
+ };
15
+ /**
16
+ * Close a peer connection, awaiting `closeAsync()` when the runtime provides it.
17
+ * Never rejects — sync and async close failures are returned on {@link PeerCloseResult.error}.
18
+ */
19
+ export declare function closePeerConnectionAwaitable(pc: AwaitableCloseablePeerConnection | null | undefined, options?: {
20
+ timeoutMs?: number;
21
+ }): Promise<PeerCloseResult>;
22
+ //# sourceMappingURL=peer-connection-close.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peer-connection-close.d.ts","sourceRoot":"","sources":["../../src/browser/peer-connection-close.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,gCAAgC,GAAG,iBAAiB,GAAG;IACjE,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,mFAAmF;IACnF,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,mEAAmE;IACnE,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAIF;;;GAGG;AACH,wBAAsB,4BAA4B,CAChD,EAAE,EAAE,gCAAgC,GAAG,IAAI,GAAG,SAAS,EACvD,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/B,OAAO,CAAC,eAAe,CAAC,CAwD1B"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Capability-based awaitable peer close (Node SDK `closeAsync`, browser sync `close`).
3
+ */
4
+ const DEFAULT_CLOSE_TIMEOUT_MS = 5_000;
5
+ /**
6
+ * Close a peer connection, awaiting `closeAsync()` when the runtime provides it.
7
+ * Never rejects — sync and async close failures are returned on {@link PeerCloseResult.error}.
8
+ */
9
+ export async function closePeerConnectionAwaitable(pc, options) {
10
+ const started = Date.now();
11
+ if (!pc) {
12
+ return { mode: "sync", durationMs: 0, timedOut: false };
13
+ }
14
+ const timeoutMs = options?.timeoutMs ?? DEFAULT_CLOSE_TIMEOUT_MS;
15
+ if (typeof pc.closeAsync === "function") {
16
+ let timedOut = false;
17
+ let timer;
18
+ let error;
19
+ try {
20
+ // Promise.resolve().then contains synchronous throws from closeAsync().
21
+ const closeWork = Promise.resolve()
22
+ .then(() => pc.closeAsync())
23
+ .then(() => undefined, (err) => {
24
+ error = err;
25
+ });
26
+ await Promise.race([
27
+ closeWork,
28
+ new Promise((resolve) => {
29
+ timer = setTimeout(() => {
30
+ timedOut = true;
31
+ resolve();
32
+ }, timeoutMs);
33
+ }),
34
+ ]);
35
+ }
36
+ finally {
37
+ if (timer)
38
+ clearTimeout(timer);
39
+ }
40
+ return {
41
+ mode: "async",
42
+ durationMs: Date.now() - started,
43
+ timedOut,
44
+ ...(error !== undefined ? { error } : {}),
45
+ };
46
+ }
47
+ try {
48
+ pc.close();
49
+ }
50
+ catch (error) {
51
+ return {
52
+ mode: "sync",
53
+ durationMs: Date.now() - started,
54
+ timedOut: false,
55
+ error,
56
+ };
57
+ }
58
+ return {
59
+ mode: "sync",
60
+ durationMs: Date.now() - started,
61
+ timedOut: false,
62
+ };
63
+ }
64
+ //# sourceMappingURL=peer-connection-close.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peer-connection-close.js","sourceRoot":"","sources":["../../src/browser/peer-connection-close.ts"],"names":[],"mappings":"AAAA;;GAEG;AAeH,MAAM,wBAAwB,GAAG,KAAK,CAAC;AAEvC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,EAAuD,EACvD,OAAgC;IAEhC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC1D,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,wBAAwB,CAAC;IACjE,IAAI,OAAO,EAAE,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QACxC,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,KAAgD,CAAC;QACrD,IAAI,KAAc,CAAC;QACnB,IAAI,CAAC;YACH,wEAAwE;YACxE,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE;iBAChC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,UAAW,EAAE,CAAC;iBAC5B,IAAI,CACH,GAAG,EAAE,CAAC,SAAS,EACf,CAAC,GAAY,EAAE,EAAE;gBACf,KAAK,GAAG,GAAG,CAAC;YACd,CAAC,CACF,CAAC;YACJ,MAAM,OAAO,CAAC,IAAI,CAAC;gBACjB,SAAS;gBACT,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;oBAC5B,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;wBACtB,QAAQ,GAAG,IAAI,CAAC;wBAChB,OAAO,EAAE,CAAC;oBACZ,CAAC,EAAE,SAAS,CAAC,CAAC;gBAChB,CAAC,CAAC;aACH,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,IAAI,KAAK;gBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QACD,OAAO;YACL,IAAI,EAAE,OAAO;YACb,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;YAChC,QAAQ;YACR,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1C,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;YAChC,QAAQ,EAAE,KAAK;YACf,KAAK;SACN,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;QAChC,QAAQ,EAAE,KAAK;KAChB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,24 @@
1
+ /** Structured diagnostic events for peer cleanup (no secrets / raw SDP / URLs). */
2
+ export type VoiceSessionDiagnosticEvent = {
3
+ type: "peer_close";
4
+ mode: "async" | "sync";
5
+ durationMs: number;
6
+ timedOut: boolean;
7
+ context: "disconnect" | "reset" | "failed_connect";
8
+ /** Redacted close failure summary when native close rejects (no URL/token/detail dump). */
9
+ error?: string;
10
+ };
11
+ export type VoiceSessionDiagnosticHandler = (event: VoiceSessionDiagnosticEvent) => void | Promise<void>;
12
+ /** Prefer short codes over raw messages when a known failure shape is recognized. */
13
+ export declare function diagnosticErrorCode(input: unknown): string | undefined;
14
+ /**
15
+ * Redact credentials, signaling/ICE URLs, query tokens, JSON secrets, and SDP ice-pwd.
16
+ * Prefer {@link diagnosticErrorCode} in call sites when a code is enough.
17
+ */
18
+ export declare function redactDiagnosticDetail(input: unknown): string;
19
+ /**
20
+ * Invoke a diagnostic callback without letting sync throws or async rejections
21
+ * affect disconnect / reconnect lifecycle. Never awaits the handler.
22
+ */
23
+ export declare function emitDiagnosticSafely(handler: VoiceSessionDiagnosticHandler | undefined, event: VoiceSessionDiagnosticEvent): void;
24
+ //# sourceMappingURL=voice-session-diagnostics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voice-session-diagnostics.d.ts","sourceRoot":"","sources":["../../src/browser/voice-session-diagnostics.ts"],"names":[],"mappings":"AAAA,mFAAmF;AAEnF,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,YAAY,GAAG,OAAO,GAAG,gBAAgB,CAAC;IACnD,2FAA2F;IAC3F,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG,CAC1C,KAAK,EAAE,2BAA2B,KAC/B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,qFAAqF;AACrF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAKtE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CA0B7D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,6BAA6B,GAAG,SAAS,EAClD,KAAK,EAAE,2BAA2B,GACjC,IAAI,CAUN"}
@@ -0,0 +1,48 @@
1
+ /** Structured diagnostic events for peer cleanup (no secrets / raw SDP / URLs). */
2
+ /** Prefer short codes over raw messages when a known failure shape is recognized. */
3
+ export function diagnosticErrorCode(input) {
4
+ const raw = input instanceof Error ? input.message : String(input ?? "");
5
+ if (/native close boom|closeAsync/i.test(raw))
6
+ return "peer_close_failed";
7
+ if (/timeout/i.test(raw))
8
+ return "peer_close_timeout";
9
+ return undefined;
10
+ }
11
+ /**
12
+ * Redact credentials, signaling/ICE URLs, query tokens, JSON secrets, and SDP ice-pwd.
13
+ * Prefer {@link diagnosticErrorCode} in call sites when a code is enough.
14
+ */
15
+ export function redactDiagnosticDetail(input) {
16
+ const code = diagnosticErrorCode(input);
17
+ if (code)
18
+ return code;
19
+ const raw = input instanceof Error ? input.message : String(input ?? "");
20
+ return (raw
21
+ // http(s), ws(s), and ICE URIs (including user:pass@ and query strings)
22
+ .replace(/\b(?:https?|wss?):\/\/[^\s"'`<>]+/gi, "[redacted-url]")
23
+ .replace(/\b(?:turns?|stuns?):[^\s"'`<>]+/gi, "[redacted-ice-uri]")
24
+ .replace(/([?&](?:token|join_token|access_token|auth|authorization|password|credential|secret|api[_-]?key)=)[^&\s"']+/gi, "$1[redacted]")
25
+ .replace(/\b(join_token|access_token|auth_token|api[_-]?key|password|credential|secret)\b\s*[:=]\s*["']?[^"'&\s,}\]]+/gi, "$1=[redacted]")
26
+ .replace(/(["'](?:join_token|access_token|password|credential|secret|username)["']\s*:\s*)["'][^"']*["']/gi, '$1"[redacted]"')
27
+ .replace(/\b(a=ice-pwd:)[^\r\n]+/gi, "$1[redacted]")
28
+ .replace(/\b(Bearer\s+)[A-Za-z0-9._\-+=/]+/gi, "$1[redacted]")
29
+ .slice(0, 200));
30
+ }
31
+ /**
32
+ * Invoke a diagnostic callback without letting sync throws or async rejections
33
+ * affect disconnect / reconnect lifecycle. Never awaits the handler.
34
+ */
35
+ export function emitDiagnosticSafely(handler, event) {
36
+ if (!handler)
37
+ return;
38
+ try {
39
+ const result = handler(event);
40
+ void Promise.resolve(result).catch(() => {
41
+ // Async diagnostic sinks must never surface unhandled rejections.
42
+ });
43
+ }
44
+ catch {
45
+ // Sync diagnostic sinks must never break disconnect / reconnect.
46
+ }
47
+ }
48
+ //# sourceMappingURL=voice-session-diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voice-session-diagnostics.js","sourceRoot":"","sources":["../../src/browser/voice-session-diagnostics.ts"],"names":[],"mappings":"AAAA,mFAAmF;AAgBnF,qFAAqF;AACrF,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACzE,IAAI,+BAA+B,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,mBAAmB,CAAC;IAC1E,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,oBAAoB,CAAC;IACtD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,MAAM,IAAI,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACxC,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAEtB,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACzE,OAAO,CACL,GAAG;QACD,wEAAwE;SACvE,OAAO,CAAC,qCAAqC,EAAE,gBAAgB,CAAC;SAChE,OAAO,CAAC,mCAAmC,EAAE,oBAAoB,CAAC;SAClE,OAAO,CACN,+GAA+G,EAC/G,cAAc,CACf;SACA,OAAO,CACN,+GAA+G,EAC/G,eAAe,CAChB;SACA,OAAO,CACN,kGAAkG,EAClG,gBAAgB,CACjB;SACA,OAAO,CAAC,0BAA0B,EAAE,cAAc,CAAC;SACnD,OAAO,CAAC,oCAAoC,EAAE,cAAc,CAAC;SAC7D,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CACjB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAkD,EAClD,KAAkC;IAElC,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9B,KAAK,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YACtC,kEAAkE;QACpE,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,iEAAiE;IACnE,CAAC;AACH,CAAC"}
@@ -1,4 +1,16 @@
1
1
  import type { WebRtcConnectionStatus } from "./webrtc-connection-status.js";
2
+ /** Compact ICE candidate-pair row for diagnostics (types/state only — no addresses). */
3
+ export type WebRtcIceCandidatePairSummary = {
4
+ id: string;
5
+ state?: string;
6
+ nominated: boolean;
7
+ selected: boolean;
8
+ protocol?: string;
9
+ /** Local candidateType, or omitted when the referenced report is missing. */
10
+ localType?: string;
11
+ /** Remote candidateType, or omitted when the referenced report is missing. */
12
+ remoteType?: string;
13
+ };
2
14
  export type WebRtcStatsSummary = {
3
15
  totalReports: number;
4
16
  candidatePairs: number;
@@ -8,6 +20,17 @@ export type WebRtcStatsSummary = {
8
20
  relayLocalCandidates: number;
9
21
  hostLocalCandidates: number;
10
22
  srflxLocalCandidates: number;
23
+ /** Optional for consumers/mocks built against older summary shapes. */
24
+ prflxLocalCandidates?: number;
25
+ /** Local candidates with missing or unrecognized candidateType. */
26
+ unknownLocalCandidates?: number;
27
+ /** Count of `local-candidate` stats reports (distinct from type buckets). */
28
+ localCandidateReports?: number;
29
+ /**
30
+ * Per-pair diagnostics (all pairs, safely capped). Types resolve via candidate
31
+ * id lookup after collecting local/remote reports — independent of report order.
32
+ */
33
+ pairs?: WebRtcIceCandidatePairSummary[];
11
34
  selectedPairId?: string;
12
35
  selectedLocalType?: string;
13
36
  selectedRemoteType?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"webrtc-diagnostics.d.ts","sourceRoot":"","sources":["../../src/browser/webrtc-diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAE5E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,mBAAmB,EAAE,sBAAsB,GAAG,KAAK,CAAC;IACpD,kBAAkB,EAAE,qBAAqB,GAAG,SAAS,CAAC;IACtD,iBAAiB,EAAE,oBAAoB,GAAG,SAAS,CAAC;IACpD,cAAc,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC9C,gBAAgB,EAAE,sBAAsB,CAAC;IACzC,KAAK,EAAE,kBAAkB,CAAC;CAC3B,CAAC;AAcF,4FAA4F;AAC5F,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,cAAc,GACpB,kBAAkB,CAiEpB;AAED,wBAAsB,wBAAwB,CAC5C,EAAE,EAAE,iBAAiB,GAAG,IAAI,EAC5B,gBAAgB,EAAE,sBAAsB,GACvC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CA4BnC;AAED,wBAAgB,4BAA4B,CAC1C,WAAW,EAAE,iBAAiB,GAC7B,MAAM,EAAE,CAiBV"}
1
+ {"version":3,"file":"webrtc-diagnostics.d.ts","sourceRoot":"","sources":["../../src/browser/webrtc-diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAE5E,wFAAwF;AACxF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uEAAuE;IACvE,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mEAAmE;IACnE,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,6EAA6E;IAC7E,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;OAGG;IACH,KAAK,CAAC,EAAE,6BAA6B,EAAE,CAAC;IACxC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,mBAAmB,EAAE,sBAAsB,GAAG,KAAK,CAAC;IACpD,kBAAkB,EAAE,qBAAqB,GAAG,SAAS,CAAC;IACtD,iBAAiB,EAAE,oBAAoB,GAAG,SAAS,CAAC;IACpD,cAAc,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC9C,gBAAgB,EAAE,sBAAsB,CAAC;IACzC,KAAK,EAAE,kBAAkB,CAAC;CAC3B,CAAC;AAwDF,4FAA4F;AAC5F,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,cAAc,GACpB,kBAAkB,CAwGpB;AAED,wBAAsB,wBAAwB,CAC5C,EAAE,EAAE,iBAAiB,GAAG,IAAI,EAC5B,gBAAgB,EAAE,sBAAsB,GACvC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAmBnC;AAED,wBAAgB,4BAA4B,CAC1C,WAAW,EAAE,iBAAiB,GAC7B,MAAM,EAAE,CA4BV"}
@@ -1,3 +1,23 @@
1
+ /** Max pairs retained on {@link WebRtcStatsSummary.pairs}. */
2
+ const MAX_STORED_PAIRS = 32;
3
+ /** Max `webrtc pair …` lines emitted by {@link formatWebRtcDiagnosticsLines}. */
4
+ const MAX_FORMATTED_PAIRS = 8;
5
+ function emptyStatsSummary() {
6
+ return {
7
+ totalReports: 0,
8
+ candidatePairs: 0,
9
+ nominatedPairs: 0,
10
+ succeededPairs: 0,
11
+ failedPairs: 0,
12
+ relayLocalCandidates: 0,
13
+ hostLocalCandidates: 0,
14
+ srflxLocalCandidates: 0,
15
+ prflxLocalCandidates: 0,
16
+ unknownLocalCandidates: 0,
17
+ localCandidateReports: 0,
18
+ pairs: [],
19
+ };
20
+ }
1
21
  function readString(report, key) {
2
22
  const value = report[key];
3
23
  return typeof value === "string" ? value : undefined;
@@ -5,69 +25,121 @@ function readString(report, key) {
5
25
  function readBool(report, key) {
6
26
  return report[key] === true;
7
27
  }
28
+ function candidateTypeOf(candidates, id) {
29
+ if (!id)
30
+ return undefined;
31
+ const row = candidates.get(id);
32
+ if (!row)
33
+ return undefined;
34
+ return readString(row, "candidateType");
35
+ }
36
+ function candidateProtocolOf(candidates, id) {
37
+ if (!id)
38
+ return undefined;
39
+ const row = candidates.get(id);
40
+ if (!row)
41
+ return undefined;
42
+ return readString(row, "protocol");
43
+ }
8
44
  /** Summarize {@link RTCPeerConnection.getStats} for logs (candidate pairs, relay usage). */
9
45
  export function summarizeRtcStatsReport(stats) {
10
46
  const locals = new Map();
11
- let candidatePairs = 0;
12
- let nominatedPairs = 0;
13
- let succeededPairs = 0;
14
- let failedPairs = 0;
47
+ const remotes = new Map();
48
+ const pairRows = [];
15
49
  let relayLocalCandidates = 0;
16
50
  let hostLocalCandidates = 0;
17
51
  let srflxLocalCandidates = 0;
18
- let selectedPairId;
19
- let selectedLocalType;
20
- let selectedRemoteType;
21
- let selectedProtocol;
52
+ let prflxLocalCandidates = 0;
53
+ let unknownLocalCandidates = 0;
54
+ let localCandidateReports = 0;
55
+ // Pass 1: collect candidates and pair rows so resolution is order-independent.
22
56
  stats.forEach((report, id) => {
23
57
  const row = report;
24
58
  const type = readString(row, "type");
25
59
  if (type === "local-candidate") {
26
60
  locals.set(id, row);
61
+ localCandidateReports += 1;
27
62
  const candidateType = readString(row, "candidateType");
28
63
  if (candidateType === "relay")
29
64
  relayLocalCandidates += 1;
30
- if (candidateType === "host")
65
+ else if (candidateType === "host")
31
66
  hostLocalCandidates += 1;
32
- if (candidateType === "srflx")
67
+ else if (candidateType === "srflx")
33
68
  srflxLocalCandidates += 1;
69
+ else if (candidateType === "prflx")
70
+ prflxLocalCandidates += 1;
71
+ else
72
+ unknownLocalCandidates += 1;
34
73
  return;
35
74
  }
36
- if (type !== "candidate-pair")
75
+ if (type === "remote-candidate") {
76
+ remotes.set(id, row);
37
77
  return;
38
- candidatePairs += 1;
39
- if (readBool(row, "nominated"))
40
- nominatedPairs += 1;
78
+ }
79
+ if (type === "candidate-pair") {
80
+ pairRows.push({ id, row });
81
+ }
82
+ });
83
+ let nominatedPairs = 0;
84
+ let succeededPairs = 0;
85
+ let failedPairs = 0;
86
+ let selectedPairId;
87
+ let selectedLocalType;
88
+ let selectedRemoteType;
89
+ let selectedProtocol;
90
+ let selectedIsExplicit = false;
91
+ const pairs = [];
92
+ for (const { id, row } of pairRows) {
93
+ const nominated = readBool(row, "nominated");
94
+ const selected = readBool(row, "selected");
41
95
  const state = readString(row, "state");
96
+ const localCandidateId = readString(row, "localCandidateId");
97
+ const remoteCandidateId = readString(row, "remoteCandidateId");
98
+ const protocol = readString(row, "protocol") ??
99
+ candidateProtocolOf(locals, localCandidateId);
100
+ const localType = candidateTypeOf(locals, localCandidateId);
101
+ const remoteType = candidateTypeOf(remotes, remoteCandidateId);
102
+ if (nominated)
103
+ nominatedPairs += 1;
42
104
  if (state === "succeeded")
43
105
  succeededPairs += 1;
44
106
  if (state === "failed")
45
107
  failedPairs += 1;
46
- if (readBool(row, "selected") || readBool(row, "nominated")) {
47
- selectedPairId = id;
48
- selectedProtocol = readString(row, "protocol");
49
- const localId = readString(row, "localCandidateId");
50
- const remoteId = readString(row, "remoteCandidateId");
51
- if (localId && locals.has(localId)) {
52
- selectedLocalType = readString(locals.get(localId), "candidateType");
53
- }
54
- if (remoteId) {
55
- const remote = stats.get(remoteId);
56
- if (remote) {
57
- selectedRemoteType = readString(remote, "candidateType");
58
- }
108
+ if (pairs.length < MAX_STORED_PAIRS) {
109
+ pairs.push({
110
+ id,
111
+ state,
112
+ nominated,
113
+ selected,
114
+ protocol,
115
+ localType,
116
+ remoteType,
117
+ });
118
+ }
119
+ // Prefer an explicitly selected pair; otherwise keep last nominated (legacy).
120
+ if (selected || nominated) {
121
+ if (selected || !selectedIsExplicit) {
122
+ selectedPairId = id;
123
+ selectedProtocol = protocol;
124
+ selectedLocalType = localType;
125
+ selectedRemoteType = remoteType;
126
+ selectedIsExplicit = selected;
59
127
  }
60
128
  }
61
- });
129
+ }
62
130
  return {
63
131
  totalReports: stats.size,
64
- candidatePairs,
132
+ candidatePairs: pairRows.length,
65
133
  nominatedPairs,
66
134
  succeededPairs,
67
135
  failedPairs,
68
136
  relayLocalCandidates,
69
137
  hostLocalCandidates,
70
138
  srflxLocalCandidates,
139
+ prflxLocalCandidates,
140
+ unknownLocalCandidates,
141
+ localCandidateReports,
142
+ pairs,
71
143
  selectedPairId,
72
144
  selectedLocalType,
73
145
  selectedRemoteType,
@@ -77,16 +149,7 @@ export function summarizeRtcStatsReport(stats) {
77
149
  export async function collectWebRtcDiagnostics(pc, connectionStatus) {
78
150
  if (!pc)
79
151
  return null;
80
- let stats = {
81
- totalReports: 0,
82
- candidatePairs: 0,
83
- nominatedPairs: 0,
84
- succeededPairs: 0,
85
- failedPairs: 0,
86
- relayLocalCandidates: 0,
87
- hostLocalCandidates: 0,
88
- srflxLocalCandidates: 0,
89
- };
152
+ let stats = emptyStatsSummary();
90
153
  try {
91
154
  stats = summarizeRtcStatsReport(await pc.getStats());
92
155
  }
@@ -104,17 +167,25 @@ export async function collectWebRtcDiagnostics(pc, connectionStatus) {
104
167
  }
105
168
  export function formatWebRtcDiagnosticsLines(diagnostics) {
106
169
  const status = diagnostics.connectionStatus;
170
+ const s = diagnostics.stats;
171
+ const prflxLocal = s.prflxLocalCandidates ?? 0;
172
+ const unknownLocal = s.unknownLocalCandidates ?? 0;
173
+ const localReports = s.localCandidateReports ?? 0;
174
+ const pairs = s.pairs ?? [];
107
175
  const lines = [
108
176
  `webrtc phase=${status.phase} ready=${status.ready} pc=${status.peerConnectionState} ice=${diagnostics.iceConnectionState} gathering=${diagnostics.iceGatheringState} signaling=${diagnostics.signalingState}`,
109
177
  `webrtc channels signaling=${status.signalingJoined} control_dc=${status.controlChannelOpen} sync_dc=${status.syncChannelOpen} inbound_audio=${status.inboundAudioTrack} outbound_audio=${status.outboundAudioTrack}`,
110
- `webrtc stats reports=${diagnostics.stats.totalReports} pairs=${diagnostics.stats.candidatePairs} nominated=${diagnostics.stats.nominatedPairs} succeeded=${diagnostics.stats.succeededPairs} failed=${diagnostics.stats.failedPairs} relay_local=${diagnostics.stats.relayLocalCandidates} host_local=${diagnostics.stats.hostLocalCandidates} srflx_local=${diagnostics.stats.srflxLocalCandidates}`,
178
+ `webrtc stats reports=${s.totalReports} pairs=${s.candidatePairs} nominated=${s.nominatedPairs} succeeded=${s.succeededPairs} failed=${s.failedPairs} relay_local=${s.relayLocalCandidates} host_local=${s.hostLocalCandidates} srflx_local=${s.srflxLocalCandidates} prflx_local=${prflxLocal} unknown_local=${unknownLocal} local_reports=${localReports}`,
111
179
  ];
112
- if (diagnostics.stats.selectedPairId) {
113
- lines.push(`webrtc selected_pair id=${diagnostics.stats.selectedPairId} local=${diagnostics.stats.selectedLocalType ?? "?"} remote=${diagnostics.stats.selectedRemoteType ?? "?"} protocol=${diagnostics.stats.selectedProtocol ?? "?"}`);
180
+ if (s.selectedPairId) {
181
+ lines.push(`webrtc selected_pair id=${s.selectedPairId} local=${s.selectedLocalType ?? "?"} remote=${s.selectedRemoteType ?? "?"} protocol=${s.selectedProtocol ?? "?"}`);
114
182
  }
115
183
  else {
116
184
  lines.push("webrtc selected_pair none");
117
185
  }
186
+ for (const pair of pairs.slice(0, MAX_FORMATTED_PAIRS)) {
187
+ lines.push(`webrtc pair state=${pair.state ?? "?"} nominated=${pair.nominated} selected=${pair.selected} local=${pair.localType ?? "?"} remote=${pair.remoteType ?? "?"} protocol=${pair.protocol ?? "?"}`);
188
+ }
118
189
  return lines;
119
190
  }
120
191
  //# sourceMappingURL=webrtc-diagnostics.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"webrtc-diagnostics.js","sourceRoot":"","sources":["../../src/browser/webrtc-diagnostics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webrtc-diagnostics.js","sourceRoot":"","sources":["../../src/browser/webrtc-diagnostics.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  /**
2
2
  * Injectable WebRTC + signaling primitives for browser and Node test runtimes.
3
3
  */
4
+ import type { AwaitableCloseablePeerConnection } from "./peer-connection-close.js";
5
+ export type { AwaitableCloseablePeerConnection };
4
6
  export type WebRtcRuntime = {
5
7
  WebSocket: {
6
8
  new (url: string, protocols?: string | string[]): WebSocket;
@@ -12,4 +14,6 @@ export type WebRtcRuntime = {
12
14
  getUserMedia?: (constraints: MediaStreamConstraints) => Promise<MediaStream>;
13
15
  };
14
16
  export declare function getDefaultBrowserRuntime(): WebRtcRuntime;
17
+ /** True when a peer connection instance exposes awaitable native cleanup. */
18
+ export declare function peerConnectionSupportsCloseAsync(pc: RTCPeerConnection | null | undefined): boolean;
15
19
  //# sourceMappingURL=webrtc-runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webrtc-runtime.d.ts","sourceRoot":"","sources":["../../src/browser/webrtc-runtime.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,EAAE;QACT,KAAK,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;QAC5D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,iBAAiB,EAAE;QACjB,KAAK,aAAa,CAAC,EAAE,gBAAgB,GAAG,iBAAiB,CAAC;KAC3D,CAAC;IACF,YAAY,CAAC,EAAE,CACb,WAAW,EAAE,sBAAsB,KAChC,OAAO,CAAC,WAAW,CAAC,CAAC;CAC3B,CAAC;AAEF,wBAAgB,wBAAwB,IAAI,aAAa,CAsBxD"}
1
+ {"version":3,"file":"webrtc-runtime.d.ts","sourceRoot":"","sources":["../../src/browser/webrtc-runtime.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,4BAA4B,CAAC;AAEnF,YAAY,EAAE,gCAAgC,EAAE,CAAC;AAEjD,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,EAAE;QACT,KAAK,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;QAC5D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,iBAAiB,EAAE;QACjB,KAAK,aAAa,CAAC,EAAE,gBAAgB,GAAG,iBAAiB,CAAC;KAC3D,CAAC;IACF,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,sBAAsB,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;CAC9E,CAAC;AAEF,wBAAgB,wBAAwB,IAAI,aAAa,CAsBxD;AAED,6EAA6E;AAC7E,wBAAgB,gCAAgC,CAC9C,EAAE,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,GACvC,OAAO,CAKT"}
@@ -1,3 +1,6 @@
1
+ /**
2
+ * Injectable WebRTC + signaling primitives for browser and Node test runtimes.
3
+ */
1
4
  export function getDefaultBrowserRuntime() {
2
5
  if (typeof globalThis.WebSocket === "undefined") {
3
6
  throw new Error("WebSocket is not available; pass runtime (e.g. createNodeWebRtcRuntime from @voicethere/client/node)");
@@ -16,4 +19,9 @@ export function getDefaultBrowserRuntime() {
16
19
  },
17
20
  };
18
21
  }
22
+ /** True when a peer connection instance exposes awaitable native cleanup. */
23
+ export function peerConnectionSupportsCloseAsync(pc) {
24
+ return (typeof pc
25
+ ?.closeAsync === "function");
26
+ }
19
27
  //# sourceMappingURL=webrtc-runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"webrtc-runtime.js","sourceRoot":"","sources":["../../src/browser/webrtc-runtime.ts"],"names":[],"mappings":"AAgBA,MAAM,UAAU,wBAAwB;IACtC,IAAI,OAAO,UAAU,CAAC,SAAS,KAAK,WAAW,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CACb,sGAAsG,CACvG,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,UAAU,CAAC,iBAAiB,KAAK,WAAW,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,SAAS,EAAE,UAAU,CAAC,SAAS;QAC/B,iBAAiB,EAAE,UAAU,CAAC,iBAAiB;QAC/C,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE;YAClC,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;gBAC3C,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;YAC1E,CAAC;YACD,OAAO,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QAC1D,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"webrtc-runtime.js","sourceRoot":"","sources":["../../src/browser/webrtc-runtime.ts"],"names":[],"mappings":"AAAA;;GAEG;AAiBH,MAAM,UAAU,wBAAwB;IACtC,IAAI,OAAO,UAAU,CAAC,SAAS,KAAK,WAAW,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CACb,sGAAsG,CACvG,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,UAAU,CAAC,iBAAiB,KAAK,WAAW,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,SAAS,EAAE,UAAU,CAAC,SAAS;QAC/B,iBAAiB,EAAE,UAAU,CAAC,iBAAiB;QAC/C,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE;YAClC,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;gBAC3C,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;YAC1E,CAAC;YACD,OAAO,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QAC1D,CAAC;KACF,CAAC;AACJ,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,gCAAgC,CAC9C,EAAwC;IAExC,OAAO,CACL,OAAQ,EAA0D;QAChE,EAAE,UAAU,KAAK,UAAU,CAC9B,CAAC;AACJ,CAAC"}
@@ -2,7 +2,8 @@ export { createNodeWebRtcRuntime } from "./runtime.js";
2
2
  export { NodeWebSocketAdapter } from "./node-websocket.js";
3
3
  export { connectBrowserSession, connectBrowserVoiceSession, connectBrowserChatSession, connectDataSession, startSession, fetchSessionApi, DEFAULT_SESSION_API_RETRY_DELAYS_MS, isRetryableSessionApiBody, isRetryableSessionApiFailure, isRetryableSessionApiNetworkError, isRetryableSessionApiStatus, BrowserSessionModeType, ProvisionedRunnerModeType, VOICE_CONTROL_CHANNEL_LABEL, VOICE_SYNC_CHANNEL_LABEL, } from "../browser/browser-session.js";
4
4
  export type { FetchSessionApiOptions, SessionApiRetryRuntime, } from "../browser/browser-session.js";
5
- export type { BrowserSession, BrowserSessionMode, ConnectBrowserSessionOptions, BrowserVoiceSession, BrowserVoiceSessionOptions, SessionCredentials, SessionStatusResponse, StartSessionOptions, StartSessionResult, WebRtcConnectionStatus, WebRtcReadinessProfile, WebRtcDiagnostics, WebRtcStatsSummary, } from "../browser/browser-session.js";
5
+ export type { BrowserSession, BrowserSessionMode, ConnectBrowserSessionOptions, BrowserVoiceSession, BrowserVoiceSessionOptions, SessionCredentials, SessionStatusResponse, StartSessionOptions, StartSessionResult, WebRtcConnectionStatus, WebRtcReadinessProfile, WebRtcDiagnostics, WebRtcIceCandidatePairSummary, WebRtcStatsSummary, } from "../browser/browser-session.js";
6
6
  export { collectWebRtcDiagnostics, formatWebRtcDiagnosticsLines, summarizeRtcStatsReport, } from "../browser/browser-session.js";
7
7
  export type { WebRtcRuntime } from "../browser/webrtc-runtime.js";
8
+ export { CLIENT_CAPABILITIES, type ClientCapabilities, } from "../browser/client-capabilities.js";
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,EACzB,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,mCAAmC,EACnC,yBAAyB,EACzB,4BAA4B,EAC5B,iCAAiC,EACjC,2BAA2B,EAC3B,sBAAsB,EACtB,yBAAyB,EACzB,2BAA2B,EAC3B,wBAAwB,GACzB,MAAM,+BAA+B,CAAC;AAEvC,YAAY,EACV,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,+BAA+B,CAAC;AAEvC,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,4BAA4B,EAC5B,mBAAmB,EACnB,0BAA0B,EAC1B,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,+BAA+B,CAAC;AAEvC,YAAY,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,EACzB,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,mCAAmC,EACnC,yBAAyB,EACzB,4BAA4B,EAC5B,iCAAiC,EACjC,2BAA2B,EAC3B,sBAAsB,EACtB,yBAAyB,EACzB,2BAA2B,EAC3B,wBAAwB,GACzB,MAAM,+BAA+B,CAAC;AAEvC,YAAY,EACV,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,+BAA+B,CAAC;AAEvC,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,4BAA4B,EAC5B,mBAAmB,EACnB,0BAA0B,EAC1B,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,EACjB,6BAA6B,EAC7B,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,+BAA+B,CAAC;AAEvC,YAAY,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE,OAAO,EACL,mBAAmB,EACnB,KAAK,kBAAkB,GACxB,MAAM,mCAAmC,CAAC"}
@@ -2,4 +2,5 @@ export { createNodeWebRtcRuntime } from "./runtime.js";
2
2
  export { NodeWebSocketAdapter } from "./node-websocket.js";
3
3
  export { connectBrowserSession, connectBrowserVoiceSession, connectBrowserChatSession, connectDataSession, startSession, fetchSessionApi, DEFAULT_SESSION_API_RETRY_DELAYS_MS, isRetryableSessionApiBody, isRetryableSessionApiFailure, isRetryableSessionApiNetworkError, isRetryableSessionApiStatus, BrowserSessionModeType, ProvisionedRunnerModeType, VOICE_CONTROL_CHANNEL_LABEL, VOICE_SYNC_CHANNEL_LABEL, } from "../browser/browser-session.js";
4
4
  export { collectWebRtcDiagnostics, formatWebRtcDiagnosticsLines, summarizeRtcStatsReport, } from "../browser/browser-session.js";
5
+ export { CLIENT_CAPABILITIES, } from "../browser/client-capabilities.js";
5
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,EACzB,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,mCAAmC,EACnC,yBAAyB,EACzB,4BAA4B,EAC5B,iCAAiC,EACjC,2BAA2B,EAC3B,sBAAsB,EACtB,yBAAyB,EACzB,2BAA2B,EAC3B,wBAAwB,GACzB,MAAM,+BAA+B,CAAC;AAuBvC,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,EACzB,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,mCAAmC,EACnC,yBAAyB,EACzB,4BAA4B,EAC5B,iCAAiC,EACjC,2BAA2B,EAC3B,sBAAsB,EACtB,yBAAyB,EACzB,2BAA2B,EAC3B,wBAAwB,GACzB,MAAM,+BAA+B,CAAC;AAwBvC,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,+BAA+B,CAAC;AAIvC,OAAO,EACL,mBAAmB,GAEpB,MAAM,mCAAmC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voicethere/client",
3
- "version": "0.7.12",
3
+ "version": "0.7.14",
4
4
  "description": "VoiceThere browser/Node client — cloud gateway, browser voice/chat, embed widget",
5
5
  "type": "module",
6
6
  "exports": {