@voicethere/client 0.7.13 → 0.7.15

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 (43) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +14 -11
  3. package/dist/browser/browser-session.d.ts +7 -1
  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 +19 -0
  8. package/dist/browser/browser-voice-session.d.ts.map +1 -1
  9. package/dist/browser/browser-voice-session.js +580 -93
  10. package/dist/browser/browser-voice-session.js.map +1 -1
  11. package/dist/browser/client-capabilities.d.ts +15 -0
  12. package/dist/browser/client-capabilities.d.ts.map +1 -0
  13. package/dist/browser/client-capabilities.js +14 -0
  14. package/dist/browser/client-capabilities.js.map +1 -0
  15. package/dist/browser/peer-connection-close.d.ts +34 -0
  16. package/dist/browser/peer-connection-close.d.ts.map +1 -0
  17. package/dist/browser/peer-connection-close.js +98 -0
  18. package/dist/browser/peer-connection-close.js.map +1 -0
  19. package/dist/browser/session-api-retry.d.ts +2 -0
  20. package/dist/browser/session-api-retry.d.ts.map +1 -1
  21. package/dist/browser/session-api-retry.js +37 -3
  22. package/dist/browser/session-api-retry.js.map +1 -1
  23. package/dist/browser/session-provision-poll.d.ts +1 -0
  24. package/dist/browser/session-provision-poll.d.ts.map +1 -1
  25. package/dist/browser/session-provision-poll.js +31 -2
  26. package/dist/browser/session-provision-poll.js.map +1 -1
  27. package/dist/browser/session-provision.d.ts +5 -0
  28. package/dist/browser/session-provision.d.ts.map +1 -1
  29. package/dist/browser/session-provision.js +8 -1
  30. package/dist/browser/session-provision.js.map +1 -1
  31. package/dist/browser/voice-session-diagnostics.d.ts +26 -0
  32. package/dist/browser/voice-session-diagnostics.d.ts.map +1 -0
  33. package/dist/browser/voice-session-diagnostics.js +48 -0
  34. package/dist/browser/voice-session-diagnostics.js.map +1 -0
  35. package/dist/browser/webrtc-runtime.d.ts +4 -0
  36. package/dist/browser/webrtc-runtime.d.ts.map +1 -1
  37. package/dist/browser/webrtc-runtime.js +8 -0
  38. package/dist/browser/webrtc-runtime.js.map +1 -1
  39. package/dist/node/index.d.ts +1 -0
  40. package/dist/node/index.d.ts.map +1 -1
  41. package/dist/node/index.js +1 -0
  42. package/dist/node/index.js.map +1 -1
  43. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"session-provision.js","sourceRoot":"","sources":["../../src/browser/session-provision.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-provision.js","sourceRoot":"","sources":["../../src/browser/session-provision.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /** Structured diagnostic events for peer cleanup (no secrets / raw SDP / URLs). */
2
+ export type VoiceSessionDiagnosticEvent = {
3
+ type: "peer_close";
4
+ /** Strict native close outcome (`closed` / `timed_out` / `failed`). */
5
+ status: "closed" | "timed_out" | "failed";
6
+ mode: "async" | "sync";
7
+ durationMs: number;
8
+ timedOut: boolean;
9
+ context: "disconnect" | "reset" | "failed_connect" | "offer_replace" | "reconnect";
10
+ /** Redacted close failure summary when native close rejects (no URL/token/detail dump). */
11
+ error?: string;
12
+ };
13
+ export type VoiceSessionDiagnosticHandler = (event: VoiceSessionDiagnosticEvent) => void | Promise<void>;
14
+ /** Prefer short codes over raw messages when a known failure shape is recognized. */
15
+ export declare function diagnosticErrorCode(input: unknown): string | undefined;
16
+ /**
17
+ * Redact credentials, signaling/ICE URLs, query tokens, JSON secrets, and SDP ice-pwd.
18
+ * Prefer {@link diagnosticErrorCode} in call sites when a code is enough.
19
+ */
20
+ export declare function redactDiagnosticDetail(input: unknown): string;
21
+ /**
22
+ * Invoke a diagnostic callback without letting sync throws or async rejections
23
+ * affect disconnect / reconnect lifecycle. Never awaits the handler.
24
+ */
25
+ export declare function emitDiagnosticSafely(handler: VoiceSessionDiagnosticHandler | undefined, event: VoiceSessionDiagnosticEvent): void;
26
+ //# 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,uEAAuE;IACvE,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC1C,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EACH,YAAY,GACZ,OAAO,GACP,gBAAgB,GAChB,eAAe,GACf,WAAW,CAAC;IAChB,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;AAuBnF,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,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"}
@@ -5,4 +5,5 @@ export type { FetchSessionApiOptions, SessionApiRetryRuntime, } from "../browser
5
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,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"}
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;AAwBvC,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.13",
3
+ "version": "0.7.15",
4
4
  "description": "VoiceThere browser/Node client — cloud gateway, browser voice/chat, embed widget",
5
5
  "type": "module",
6
6
  "exports": {