@voicethere/client 0.7.10 → 0.7.12
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 +12 -0
- package/dist/browser/browser-session.d.ts +1 -0
- package/dist/browser/browser-session.d.ts.map +1 -1
- package/dist/browser/browser-session.js +1 -0
- package/dist/browser/browser-session.js.map +1 -1
- package/dist/browser/session-api-retry.d.ts +27 -0
- package/dist/browser/session-api-retry.d.ts.map +1 -0
- package/dist/browser/session-api-retry.js +81 -0
- package/dist/browser/session-api-retry.js.map +1 -0
- package/dist/browser/session-provision-poll.d.ts +54 -0
- package/dist/browser/session-provision-poll.d.ts.map +1 -0
- package/dist/browser/session-provision-poll.js +163 -0
- package/dist/browser/session-provision-poll.js.map +1 -0
- package/dist/browser/session-provision.d.ts +2 -0
- package/dist/browser/session-provision.d.ts.map +1 -1
- package/dist/browser/session-provision.js +4 -70
- package/dist/browser/session-provision.js.map +1 -1
- package/dist/node/index.d.ts +2 -1
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +1 -1
- package/dist/node/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## 0.7.12 — 2026-07-24
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- **`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.
|
|
10
|
+
|
|
11
|
+
## 0.7.11 — 2026-07-23
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
|
|
15
|
+
- **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.
|
|
16
|
+
|
|
5
17
|
## 0.7.10 — 2026-07-21
|
|
6
18
|
|
|
7
19
|
### Fixed
|
|
@@ -29,6 +29,7 @@ export type { ReconnectPolicy } from "./browser-voice-session.js";
|
|
|
29
29
|
export { connectBrowserChatSession } from "./browser-chat-session.js";
|
|
30
30
|
export { connectBrowserVoiceSession, VOICE_SYNC_CHANNEL_LABEL, VOICE_CONTROL_CHANNEL_LABEL, type BinaryMessageHandler, type SyncBinaryMessageHandler, type DataChannelKind, type BrowserVoiceSession, type BrowserVoiceSessionOptions, } from "./browser-voice-session.js";
|
|
31
31
|
export { startSession } from "./session-provision.js";
|
|
32
|
+
export { DEFAULT_SESSION_API_RETRY_DELAYS_MS, fetchSessionApi, isRetryableSessionApiBody, isRetryableSessionApiFailure, isRetryableSessionApiNetworkError, isRetryableSessionApiStatus, type FetchSessionApiOptions, type SessionApiRetryRuntime, } from "./session-api-retry.js";
|
|
32
33
|
export { createLocalSessionError, emitSessionError, isSessionErrorEvent, LOCAL_SESSION_ERROR_CODES, REMOTE_SESSION_ERROR_CODES, SESSION_ERROR_CODES, type SessionErrorCode, type SessionErrorEvent, type SessionErrorHandler, } from "../session-errors.js";
|
|
33
34
|
export { ConnectionError, createConnectionError, formatConnectionErrorSource, getRootConnectionErrorHandler, reportConnectionError, setRootConnectionErrorHandler, type ConnectionErrorSource, type RootConnectionErrorHandler, } from "../connection-errors.js";
|
|
34
35
|
export { attachAudioVisualizer } from "./audio-visualizer.js";
|
|
@@ -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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"}
|
|
@@ -46,6 +46,7 @@ export async function connectDataSession(options) {
|
|
|
46
46
|
export { connectBrowserChatSession } from "./browser-chat-session.js";
|
|
47
47
|
export { connectBrowserVoiceSession, VOICE_SYNC_CHANNEL_LABEL, VOICE_CONTROL_CHANNEL_LABEL, } from "./browser-voice-session.js";
|
|
48
48
|
export { startSession } from "./session-provision.js";
|
|
49
|
+
export { DEFAULT_SESSION_API_RETRY_DELAYS_MS, fetchSessionApi, isRetryableSessionApiBody, isRetryableSessionApiFailure, isRetryableSessionApiNetworkError, isRetryableSessionApiStatus, } from "./session-api-retry.js";
|
|
49
50
|
export { createLocalSessionError, emitSessionError, isSessionErrorEvent, LOCAL_SESSION_ERROR_CODES, REMOTE_SESSION_ERROR_CODES, SESSION_ERROR_CODES, } from "../session-errors.js";
|
|
50
51
|
export { ConnectionError, createConnectionError, formatConnectionErrorSource, getRootConnectionErrorHandler, reportConnectionError, setRootConnectionErrorHandler, } from "../connection-errors.js";
|
|
51
52
|
export { attachAudioVisualizer } from "./audio-visualizer.js";
|
|
@@ -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":"AAGA,OAAO,EACL,0BAA0B,GAG3B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,sBAAsB,EACtB,yBAAyB,GAE1B,MAAM,oBAAoB,CAAC;AA4B5B,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAAqC;IAErC,MAAM,UAAU,GACd,OAAO,CAAC,WAAW,CAAC,IAAI,KAAK,yBAAyB,CAAC,IAAI;QACzD,CAAC,CAAC,sBAAsB,CAAC,IAAI;QAC7B,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;IAC/B,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC;IAChD,IACE,UAAU,KAAK,sBAAsB,CAAC,IAAI;QAC1C,YAAY,KAAK,sBAAsB,CAAC,IAAI,EAC5C,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,IACE,UAAU,KAAK,sBAAsB,CAAC,KAAK;QAC3C,YAAY,KAAK,sBAAsB,CAAC,KAAK,EAC7C,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IACD,MAAM,UAAU,GACd,YAAY,KAAK,sBAAsB,CAAC,KAAK;QAC7C,YAAY,KAAK,sBAAsB,CAAC,YAAY,CAAC;IACvD,MAAM,SAAS,GACb,YAAY,KAAK,sBAAsB,CAAC,YAAY;QAClD,CAAC,CAAC,gBAAgB;QAClB,CAAC,CAAC,YAAY,KAAK,sBAAsB,CAAC,KAAK;YAC7C,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,MAAM,CAAC;IACf,MAAM,OAAO,GAAG,MAAM,0BAA0B,CAAC;QAC/C,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,UAAU;QACV,SAAS;QACT,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;QAChD,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;QAC5C,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,wBAAwB,EAAE,OAAO,CAAC,wBAAwB;QAC1D,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;KAC/C,CAAC,CAAC;IAEH,OAAO,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAuD;IAEvD,OAAO,0BAA0B,CAAC,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;AACvE,CAAC;AAGD,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,2BAA2B,GAM5B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EACL,mCAAmC,EACnC,eAAe,EACf,yBAAyB,EACzB,4BAA4B,EAC5B,iCAAiC,EACjC,2BAA2B,GAG5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,mBAAmB,EACnB,yBAAyB,EACzB,0BAA0B,EAC1B,mBAAmB,GAIpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,2BAA2B,EAC3B,6BAA6B,EAC7B,qBAAqB,EACrB,6BAA6B,GAG9B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAQxD,OAAO,EACL,sBAAsB,EACtB,yBAAyB,GAG1B,MAAM,oBAAoB,CAAC;AAO5B,OAAO,EACL,2BAA2B,EAC3B,2BAA2B,EAC3B,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC5B,uBAAuB,GAGxB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { DebugConsole } from "./debug-console.js";
|
|
2
|
+
/** Backoff between attempts: 250ms, 750ms, 1500ms (4 tries total). */
|
|
3
|
+
export declare const DEFAULT_SESSION_API_RETRY_DELAYS_MS: readonly [250, 750, 1500];
|
|
4
|
+
export type SessionApiRetryRuntime = {
|
|
5
|
+
sleep: (ms: number) => Promise<void>;
|
|
6
|
+
fetch: typeof fetch;
|
|
7
|
+
};
|
|
8
|
+
export declare function isRetryableSessionApiStatus(status: number): boolean;
|
|
9
|
+
export declare function isRetryableSessionApiBody(body: string): boolean;
|
|
10
|
+
export declare function isRetryableSessionApiFailure(input: {
|
|
11
|
+
status: number;
|
|
12
|
+
body: string;
|
|
13
|
+
}): boolean;
|
|
14
|
+
export declare function isRetryableSessionApiNetworkError(error: unknown): boolean;
|
|
15
|
+
export type FetchSessionApiOptions = {
|
|
16
|
+
delaysMs?: readonly number[];
|
|
17
|
+
runtime?: SessionApiRetryRuntime;
|
|
18
|
+
debug?: DebugConsole;
|
|
19
|
+
/** Label for debug logs (e.g. GET /sessions/:id). */
|
|
20
|
+
label?: string;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* fetch() with retries for Envoy/ingress blips (502–504, upstream connect errors).
|
|
24
|
+
* Does not retry other 4xx (including 429).
|
|
25
|
+
*/
|
|
26
|
+
export declare function fetchSessionApi(input: RequestInfo | URL, init?: RequestInit, options?: FetchSessionApiOptions): Promise<Response>;
|
|
27
|
+
//# sourceMappingURL=session-api-retry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-api-retry.d.ts","sourceRoot":"","sources":["../../src/browser/session-api-retry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,sEAAsE;AACtE,eAAO,MAAM,mCAAmC,2BAA6B,CAAC;AAE9E,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,KAAK,EAAE,OAAO,KAAK,CAAC;CACrB,CAAC;AAcF,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEnE;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAO/D;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAKV;AAED,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAazE;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,WAAW,GAAG,GAAG,EACxB,IAAI,CAAC,EAAE,WAAW,EAClB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,QAAQ,CAAC,CAyDnB"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/** Backoff between attempts: 250ms, 750ms, 1500ms (4 tries total). */
|
|
2
|
+
export const DEFAULT_SESSION_API_RETRY_DELAYS_MS = [250, 750, 1_500];
|
|
3
|
+
/** Resolve fetch/sleep at call time so test stubs of globalThis.fetch apply. */
|
|
4
|
+
function resolveRuntime(runtime) {
|
|
5
|
+
return {
|
|
6
|
+
sleep: runtime?.sleep ??
|
|
7
|
+
((ms) => new Promise((resolve) => setTimeout(resolve, ms))),
|
|
8
|
+
fetch: runtime?.fetch ?? globalThis.fetch.bind(globalThis),
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export function isRetryableSessionApiStatus(status) {
|
|
12
|
+
return status === 502 || status === 503 || status === 504;
|
|
13
|
+
}
|
|
14
|
+
export function isRetryableSessionApiBody(body) {
|
|
15
|
+
const normalized = body.toLowerCase();
|
|
16
|
+
return (normalized.includes("upstream connect error") ||
|
|
17
|
+
normalized.includes("connection termination") ||
|
|
18
|
+
normalized.includes("disconnect/reset before headers"));
|
|
19
|
+
}
|
|
20
|
+
export function isRetryableSessionApiFailure(input) {
|
|
21
|
+
return (isRetryableSessionApiStatus(input.status) ||
|
|
22
|
+
isRetryableSessionApiBody(input.body));
|
|
23
|
+
}
|
|
24
|
+
export function isRetryableSessionApiNetworkError(error) {
|
|
25
|
+
if (!(error instanceof Error)) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
const message = error.message.toLowerCase();
|
|
29
|
+
return (error.name === "TypeError" ||
|
|
30
|
+
message.includes("fetch failed") ||
|
|
31
|
+
message.includes("network") ||
|
|
32
|
+
message.includes("econnreset") ||
|
|
33
|
+
message.includes("econnrefused") ||
|
|
34
|
+
message.includes("socket hang up"));
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* fetch() with retries for Envoy/ingress blips (502–504, upstream connect errors).
|
|
38
|
+
* Does not retry other 4xx (including 429).
|
|
39
|
+
*/
|
|
40
|
+
export async function fetchSessionApi(input, init, options) {
|
|
41
|
+
const runtime = resolveRuntime(options?.runtime);
|
|
42
|
+
const delaysMs = options?.delaysMs ?? DEFAULT_SESSION_API_RETRY_DELAYS_MS;
|
|
43
|
+
const maxAttempts = delaysMs.length + 1;
|
|
44
|
+
const label = options?.label ?? "session-api";
|
|
45
|
+
let lastError;
|
|
46
|
+
for (let attempt = 0; attempt < maxAttempts; attempt += 1) {
|
|
47
|
+
try {
|
|
48
|
+
const response = await runtime.fetch(input, init);
|
|
49
|
+
if (response.ok ||
|
|
50
|
+
(response.status < 500 && !isRetryableSessionApiStatus(response.status))) {
|
|
51
|
+
return response;
|
|
52
|
+
}
|
|
53
|
+
const body = await response
|
|
54
|
+
.clone()
|
|
55
|
+
.text()
|
|
56
|
+
.catch(() => "");
|
|
57
|
+
if (!isRetryableSessionApiFailure({ status: response.status, body }) ||
|
|
58
|
+
attempt >= maxAttempts - 1) {
|
|
59
|
+
return response;
|
|
60
|
+
}
|
|
61
|
+
const delayMs = delaysMs[attempt] ?? delaysMs.at(-1);
|
|
62
|
+
options?.debug?.warn("provision", "session_api_retry", `${label} status=${response.status} attempt=${attempt + 1}/${maxAttempts} delay_ms=${delayMs}`);
|
|
63
|
+
await runtime.sleep(delayMs);
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
lastError = error;
|
|
68
|
+
if (!isRetryableSessionApiNetworkError(error) ||
|
|
69
|
+
attempt >= maxAttempts - 1) {
|
|
70
|
+
throw error;
|
|
71
|
+
}
|
|
72
|
+
const delayMs = delaysMs[attempt] ?? delaysMs.at(-1);
|
|
73
|
+
options?.debug?.warn("provision", "session_api_retry", `${label} network_error attempt=${attempt + 1}/${maxAttempts} delay_ms=${delayMs}`);
|
|
74
|
+
await runtime.sleep(delayMs);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
throw lastError instanceof Error
|
|
78
|
+
? lastError
|
|
79
|
+
: new Error(`${label} failed after retries`);
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=session-api-retry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-api-retry.js","sourceRoot":"","sources":["../../src/browser/session-api-retry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { DebugConsole } from "./debug-console.js";
|
|
2
|
+
import type { SessionStatusResponse, StartSessionResult } from "./session-provision.js";
|
|
3
|
+
/** Multipliers applied to {@link StartSessionOptions.pollIntervalMs} between polls without progress. */
|
|
4
|
+
export declare const SESSION_POLL_BACKOFF_MULTIPLIERS: readonly [1, 2, 3, 5];
|
|
5
|
+
/** Upper bound for adaptive poll spacing (ms). */
|
|
6
|
+
export declare const SESSION_POLL_INTERVAL_CAP_MS = 5000;
|
|
7
|
+
/** Clamp bounds for optional server `retry_after_ms` hints. */
|
|
8
|
+
export declare const SESSION_POLL_RETRY_AFTER_MIN_MS = 250;
|
|
9
|
+
export declare const SESSION_POLL_RETRY_AFTER_MAX_MS = 5000;
|
|
10
|
+
export type SessionPollProgressSnapshot = {
|
|
11
|
+
status: string;
|
|
12
|
+
queuePosition?: number | null;
|
|
13
|
+
};
|
|
14
|
+
export type SessionPollRuntime = {
|
|
15
|
+
sleep: (ms: number) => Promise<void>;
|
|
16
|
+
now: () => number;
|
|
17
|
+
random: () => number;
|
|
18
|
+
};
|
|
19
|
+
export declare const defaultSessionPollRuntime: SessionPollRuntime;
|
|
20
|
+
export declare function clampSessionPollRetryAfterMs(retryAfterMs: number, bounds?: {
|
|
21
|
+
minMs?: number;
|
|
22
|
+
maxMs?: number;
|
|
23
|
+
}): number;
|
|
24
|
+
/**
|
|
25
|
+
* Returns true when adaptive backoff should reset to the base interval — status
|
|
26
|
+
* changed or a capacity-wait queue position moved.
|
|
27
|
+
*/
|
|
28
|
+
export declare function shouldResetSessionPollBackoff(previous: SessionPollProgressSnapshot | null, current: SessionPollProgressSnapshot): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Computes the delay before the next GET /sessions/:id poll.
|
|
31
|
+
* `attemptIndex` is the number of consecutive waits without progress (0 = first wait).
|
|
32
|
+
*/
|
|
33
|
+
export declare function computeSessionPollDelayMs(input: {
|
|
34
|
+
baseIntervalMs: number;
|
|
35
|
+
attemptIndex: number;
|
|
36
|
+
retryAfterMs?: number | null;
|
|
37
|
+
/** When false, omit jitter (deterministic tests). Default true. */
|
|
38
|
+
jitter?: boolean;
|
|
39
|
+
/** Returns [0, 1). Used for jitter when `jitter` is true. */
|
|
40
|
+
random?: () => number;
|
|
41
|
+
}): number;
|
|
42
|
+
export declare function pollSessionStatus(input: {
|
|
43
|
+
apiBase: string;
|
|
44
|
+
jobId: string;
|
|
45
|
+
headers: Record<string, string>;
|
|
46
|
+
pollIntervalMs: number;
|
|
47
|
+
pollTimeoutMs: number;
|
|
48
|
+
onStatus?: (status: SessionStatusResponse) => void;
|
|
49
|
+
onQueuePosition?: (position: number, status: SessionStatusResponse) => void;
|
|
50
|
+
onSessionError?: import("../session-errors.js").SessionErrorHandler;
|
|
51
|
+
debug?: DebugConsole;
|
|
52
|
+
runtime?: SessionPollRuntime;
|
|
53
|
+
}): Promise<StartSessionResult>;
|
|
54
|
+
//# sourceMappingURL=session-provision-poll.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-provision-poll.d.ts","sourceRoot":"","sources":["../../src/browser/session-provision-poll.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAQvD,OAAO,KAAK,EACV,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAEhC,wGAAwG;AACxG,eAAO,MAAM,gCAAgC,uBAAwB,CAAC;AAEtE,kDAAkD;AAClD,eAAO,MAAM,4BAA4B,OAAQ,CAAC;AAElD,+DAA+D;AAC/D,eAAO,MAAM,+BAA+B,MAAM,CAAC;AACnD,eAAO,MAAM,+BAA+B,OAAQ,CAAC;AAErD,MAAM,MAAM,2BAA2B,GAAG;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,MAAM,CAAC;CACtB,CAAC;AAMF,eAAO,MAAM,yBAAyB,EAAE,kBAIvC,CAAC;AAEF,wBAAgB,4BAA4B,CAC1C,YAAY,EAAE,MAAM,EACpB,MAAM,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9C,MAAM,CAOR;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,2BAA2B,GAAG,IAAI,EAC5C,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAeT;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAC/C,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,mEAAmE;IACnE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;CACvB,GAAG,MAAM,CA8BT;AAWD,wBAAsB,iBAAiB,CAAC,KAAK,EAAE;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACnD,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC5E,cAAc,CAAC,EAAE,OAAO,sBAAsB,EAAE,mBAAmB,CAAC;IACpE,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAoH9B"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { fetchSessionApi } from "./session-api-retry.js";
|
|
2
|
+
import { ProvisionedRunnerModeType } from "./session-modes.js";
|
|
3
|
+
import { createLocalSessionError, emitSessionError, mapProvisioningFailureCode, } from "../session-errors.js";
|
|
4
|
+
/** Multipliers applied to {@link StartSessionOptions.pollIntervalMs} between polls without progress. */
|
|
5
|
+
export const SESSION_POLL_BACKOFF_MULTIPLIERS = [1, 2, 3, 5];
|
|
6
|
+
/** Upper bound for adaptive poll spacing (ms). */
|
|
7
|
+
export const SESSION_POLL_INTERVAL_CAP_MS = 5_000;
|
|
8
|
+
/** Clamp bounds for optional server `retry_after_ms` hints. */
|
|
9
|
+
export const SESSION_POLL_RETRY_AFTER_MIN_MS = 250;
|
|
10
|
+
export const SESSION_POLL_RETRY_AFTER_MAX_MS = 5_000;
|
|
11
|
+
function defaultSleep(ms) {
|
|
12
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
13
|
+
}
|
|
14
|
+
export const defaultSessionPollRuntime = {
|
|
15
|
+
sleep: defaultSleep,
|
|
16
|
+
now: () => Date.now(),
|
|
17
|
+
random: () => Math.random(),
|
|
18
|
+
};
|
|
19
|
+
export function clampSessionPollRetryAfterMs(retryAfterMs, bounds = {}) {
|
|
20
|
+
const minMs = bounds.minMs ?? SESSION_POLL_RETRY_AFTER_MIN_MS;
|
|
21
|
+
const maxMs = bounds.maxMs ?? SESSION_POLL_RETRY_AFTER_MAX_MS;
|
|
22
|
+
if (!Number.isFinite(retryAfterMs)) {
|
|
23
|
+
return minMs;
|
|
24
|
+
}
|
|
25
|
+
return Math.min(maxMs, Math.max(minMs, Math.round(retryAfterMs)));
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Returns true when adaptive backoff should reset to the base interval — status
|
|
29
|
+
* changed or a capacity-wait queue position moved.
|
|
30
|
+
*/
|
|
31
|
+
export function shouldResetSessionPollBackoff(previous, current) {
|
|
32
|
+
if (!previous) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
if (previous.status !== current.status) {
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
if (current.status === "waiting" &&
|
|
39
|
+
current.queuePosition != null &&
|
|
40
|
+
previous.queuePosition !== current.queuePosition) {
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Computes the delay before the next GET /sessions/:id poll.
|
|
47
|
+
* `attemptIndex` is the number of consecutive waits without progress (0 = first wait).
|
|
48
|
+
*/
|
|
49
|
+
export function computeSessionPollDelayMs(input) {
|
|
50
|
+
const baseMs = Math.max(1, Math.round(input.baseIntervalMs));
|
|
51
|
+
const capMs = Math.min(SESSION_POLL_INTERVAL_CAP_MS, baseMs * SESSION_POLL_BACKOFF_MULTIPLIERS.at(-1));
|
|
52
|
+
let delayMs;
|
|
53
|
+
if (input.retryAfterMs != null &&
|
|
54
|
+
Number.isFinite(input.retryAfterMs) &&
|
|
55
|
+
input.retryAfterMs > 0) {
|
|
56
|
+
delayMs = clampSessionPollRetryAfterMs(input.retryAfterMs);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
const multiplierIndex = Math.min(Math.max(0, input.attemptIndex), SESSION_POLL_BACKOFF_MULTIPLIERS.length - 1);
|
|
60
|
+
const multiplier = SESSION_POLL_BACKOFF_MULTIPLIERS[multiplierIndex];
|
|
61
|
+
delayMs = Math.min(baseMs * multiplier, capMs);
|
|
62
|
+
}
|
|
63
|
+
if (input.jitter !== false) {
|
|
64
|
+
const random = input.random ?? Math.random;
|
|
65
|
+
// ±10% jitter to avoid synchronized client polls.
|
|
66
|
+
delayMs = Math.round(delayMs * (0.9 + random() * 0.2));
|
|
67
|
+
}
|
|
68
|
+
return Math.max(1, delayMs);
|
|
69
|
+
}
|
|
70
|
+
function toPollProgressSnapshot(status) {
|
|
71
|
+
return {
|
|
72
|
+
status: status.status,
|
|
73
|
+
queuePosition: status.queue_position,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
export async function pollSessionStatus(input) {
|
|
77
|
+
const runtime = input.runtime ?? defaultSessionPollRuntime;
|
|
78
|
+
const started = runtime.now();
|
|
79
|
+
const url = `${input.apiBase.replace(/\/$/, "")}/sessions/${input.jobId}`;
|
|
80
|
+
let pollAttemptIndex = 0;
|
|
81
|
+
let previousProgress = null;
|
|
82
|
+
while (runtime.now() - started < input.pollTimeoutMs) {
|
|
83
|
+
const res = await fetchSessionApi(url, { headers: input.headers }, {
|
|
84
|
+
debug: input.debug,
|
|
85
|
+
label: `GET /sessions/${input.jobId}`,
|
|
86
|
+
runtime: {
|
|
87
|
+
sleep: runtime.sleep,
|
|
88
|
+
fetch: globalThis.fetch.bind(globalThis),
|
|
89
|
+
},
|
|
90
|
+
});
|
|
91
|
+
if (!res.ok) {
|
|
92
|
+
const body = await res.text().catch(() => "");
|
|
93
|
+
const message = `GET session status failed (${res.status}): ${body}`;
|
|
94
|
+
emitSessionError(input.onSessionError, createLocalSessionError({
|
|
95
|
+
code: "PROVISIONING_FAILED",
|
|
96
|
+
message,
|
|
97
|
+
sessionId: input.jobId,
|
|
98
|
+
}));
|
|
99
|
+
return {
|
|
100
|
+
ok: false,
|
|
101
|
+
code: "HTTP_ERROR",
|
|
102
|
+
message,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
const status = (await res.json());
|
|
106
|
+
input.onStatus?.(status);
|
|
107
|
+
if (status.status === "waiting" &&
|
|
108
|
+
status.queue_position != null &&
|
|
109
|
+
status.queue_position > 0) {
|
|
110
|
+
input.onQueuePosition?.(status.queue_position, status);
|
|
111
|
+
}
|
|
112
|
+
input.debug?.info("provision", status.status, status.failure_message ?? undefined, status);
|
|
113
|
+
if (status.status === "ready" && status.credentials) {
|
|
114
|
+
return {
|
|
115
|
+
ok: true,
|
|
116
|
+
credentials: {
|
|
117
|
+
...status.credentials,
|
|
118
|
+
mode: status.credentials.mode ?? ProvisionedRunnerModeType.Voice,
|
|
119
|
+
},
|
|
120
|
+
jobId: input.jobId,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
if (status.status === "failed") {
|
|
124
|
+
const code = mapProvisioningFailureCode(status.failure_code ?? "ORCHESTRATOR_ERROR");
|
|
125
|
+
emitSessionError(input.onSessionError, createLocalSessionError({
|
|
126
|
+
code,
|
|
127
|
+
message: status.failure_message ?? "Session provisioning failed",
|
|
128
|
+
sessionId: input.jobId,
|
|
129
|
+
projectId: status.project_id,
|
|
130
|
+
buildId: status.build_id ?? undefined,
|
|
131
|
+
}));
|
|
132
|
+
return {
|
|
133
|
+
ok: false,
|
|
134
|
+
code: status.failure_code ?? "ORCHESTRATOR_ERROR",
|
|
135
|
+
message: status.failure_message ?? "Session provisioning failed",
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
const currentProgress = toPollProgressSnapshot(status);
|
|
139
|
+
if (shouldResetSessionPollBackoff(previousProgress, currentProgress)) {
|
|
140
|
+
pollAttemptIndex = 0;
|
|
141
|
+
}
|
|
142
|
+
const delayMs = computeSessionPollDelayMs({
|
|
143
|
+
baseIntervalMs: input.pollIntervalMs,
|
|
144
|
+
attemptIndex: pollAttemptIndex,
|
|
145
|
+
retryAfterMs: status.retry_after_ms,
|
|
146
|
+
random: runtime.random,
|
|
147
|
+
});
|
|
148
|
+
previousProgress = currentProgress;
|
|
149
|
+
pollAttemptIndex += 1;
|
|
150
|
+
await runtime.sleep(delayMs);
|
|
151
|
+
}
|
|
152
|
+
emitSessionError(input.onSessionError, createLocalSessionError({
|
|
153
|
+
code: "PROVISIONING_TIMEOUT",
|
|
154
|
+
message: "Session provisioning timed out",
|
|
155
|
+
sessionId: input.jobId,
|
|
156
|
+
}));
|
|
157
|
+
return {
|
|
158
|
+
ok: false,
|
|
159
|
+
code: "TIMEOUT",
|
|
160
|
+
message: "Session provisioning timed out",
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=session-provision-poll.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-provision-poll.js","sourceRoot":"","sources":["../../src/browser/session-provision-poll.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,6 +31,8 @@ export type SessionStatusResponse = {
|
|
|
31
31
|
queue_last_seen_at?: string | null;
|
|
32
32
|
/** Rough ETA in seconds based on queue position. */
|
|
33
33
|
estimated_wait_seconds?: number | null;
|
|
34
|
+
/** Optional server hint for time until the next status poll (ms). */
|
|
35
|
+
retry_after_ms?: number | null;
|
|
34
36
|
credentials?: SessionCredentials | null;
|
|
35
37
|
created_at: string;
|
|
36
38
|
updated_at: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-provision.d.ts","sourceRoot":"","sources":["../../src/browser/session-provision.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"session-provision.d.ts","sourceRoot":"","sources":["../../src/browser/session-provision.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { fetchSessionApi } from "./session-api-retry.js";
|
|
2
|
+
import { pollSessionStatus } from "./session-provision-poll.js";
|
|
1
3
|
import { ProvisionedRunnerModeType, } from "./session-modes.js";
|
|
2
4
|
import { createLocalSessionError, emitSessionError, mapProvisioningFailureCode, } from "../session-errors.js";
|
|
3
5
|
export function isTerminalSessionJobStatus(status) {
|
|
@@ -6,74 +8,6 @@ export function isTerminalSessionJobStatus(status) {
|
|
|
6
8
|
export function isCapacityWaitStatus(status) {
|
|
7
9
|
return status.status === "waiting";
|
|
8
10
|
}
|
|
9
|
-
function sleep(ms) {
|
|
10
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
11
|
-
}
|
|
12
|
-
async function pollSessionStatus(input) {
|
|
13
|
-
const started = Date.now();
|
|
14
|
-
const url = `${input.apiBase.replace(/\/$/, "")}/sessions/${input.jobId}`;
|
|
15
|
-
while (Date.now() - started < input.pollTimeoutMs) {
|
|
16
|
-
const res = await fetch(url, { headers: input.headers });
|
|
17
|
-
if (!res.ok) {
|
|
18
|
-
const body = await res.text().catch(() => "");
|
|
19
|
-
const message = `GET session status failed (${res.status}): ${body}`;
|
|
20
|
-
emitSessionError(input.onSessionError, createLocalSessionError({
|
|
21
|
-
code: "PROVISIONING_FAILED",
|
|
22
|
-
message,
|
|
23
|
-
sessionId: input.jobId,
|
|
24
|
-
}));
|
|
25
|
-
return {
|
|
26
|
-
ok: false,
|
|
27
|
-
code: "HTTP_ERROR",
|
|
28
|
-
message,
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
const status = (await res.json());
|
|
32
|
-
input.onStatus?.(status);
|
|
33
|
-
if (status.status === "waiting" &&
|
|
34
|
-
status.queue_position != null &&
|
|
35
|
-
status.queue_position > 0) {
|
|
36
|
-
input.onQueuePosition?.(status.queue_position, status);
|
|
37
|
-
}
|
|
38
|
-
input.debug?.info("provision", status.status, status.failure_message ?? undefined, status);
|
|
39
|
-
if (status.status === "ready" && status.credentials) {
|
|
40
|
-
return {
|
|
41
|
-
ok: true,
|
|
42
|
-
credentials: {
|
|
43
|
-
...status.credentials,
|
|
44
|
-
mode: status.credentials.mode ?? ProvisionedRunnerModeType.Voice,
|
|
45
|
-
},
|
|
46
|
-
jobId: input.jobId,
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
if (status.status === "failed") {
|
|
50
|
-
const code = mapProvisioningFailureCode(status.failure_code ?? "ORCHESTRATOR_ERROR");
|
|
51
|
-
emitSessionError(input.onSessionError, createLocalSessionError({
|
|
52
|
-
code,
|
|
53
|
-
message: status.failure_message ?? "Session provisioning failed",
|
|
54
|
-
sessionId: input.jobId,
|
|
55
|
-
projectId: status.project_id,
|
|
56
|
-
buildId: status.build_id ?? undefined,
|
|
57
|
-
}));
|
|
58
|
-
return {
|
|
59
|
-
ok: false,
|
|
60
|
-
code: status.failure_code ?? "ORCHESTRATOR_ERROR",
|
|
61
|
-
message: status.failure_message ?? "Session provisioning failed",
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
await sleep(input.pollIntervalMs);
|
|
65
|
-
}
|
|
66
|
-
emitSessionError(input.onSessionError, createLocalSessionError({
|
|
67
|
-
code: "PROVISIONING_TIMEOUT",
|
|
68
|
-
message: "Session provisioning timed out",
|
|
69
|
-
sessionId: input.jobId,
|
|
70
|
-
}));
|
|
71
|
-
return {
|
|
72
|
-
ok: false,
|
|
73
|
-
code: "TIMEOUT",
|
|
74
|
-
message: "Session provisioning timed out",
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
11
|
function emitProvisionError(options, input) {
|
|
78
12
|
emitSessionError(options.onSessionError, createLocalSessionError({
|
|
79
13
|
code: mapProvisioningFailureCode(input.code),
|
|
@@ -100,11 +34,11 @@ export async function startSession(options) {
|
|
|
100
34
|
wait_for_capacity: options.waitForCapacity ?? true,
|
|
101
35
|
};
|
|
102
36
|
options.debug?.info("provision", "post_sessions", JSON.stringify(body));
|
|
103
|
-
const res = await
|
|
37
|
+
const res = await fetchSessionApi(`${apiBase}/sessions`, {
|
|
104
38
|
method: "POST",
|
|
105
39
|
headers,
|
|
106
40
|
body: JSON.stringify(body),
|
|
107
|
-
});
|
|
41
|
+
}, { debug: options.debug, label: "POST /sessions" });
|
|
108
42
|
if (res.status === 200) {
|
|
109
43
|
const sync = (await res.json());
|
|
110
44
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-provision.js","sourceRoot":"","sources":["../../src/browser/session-provision.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"session-provision.js","sourceRoot":"","sources":["../../src/browser/session-provision.ts"],"names":[],"mappings":"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"}
|
package/dist/node/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { createNodeWebRtcRuntime } from "./runtime.js";
|
|
2
2
|
export { NodeWebSocketAdapter } from "./node-websocket.js";
|
|
3
|
-
export { connectBrowserSession, connectBrowserVoiceSession, connectBrowserChatSession, connectDataSession, startSession, BrowserSessionModeType, ProvisionedRunnerModeType, VOICE_CONTROL_CHANNEL_LABEL, VOICE_SYNC_CHANNEL_LABEL, } from "../browser/browser-session.js";
|
|
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
|
+
export type { FetchSessionApiOptions, SessionApiRetryRuntime, } from "../browser/browser-session.js";
|
|
4
5
|
export type { BrowserSession, BrowserSessionMode, ConnectBrowserSessionOptions, BrowserVoiceSession, BrowserVoiceSessionOptions, SessionCredentials, SessionStatusResponse, StartSessionOptions, StartSessionResult, WebRtcConnectionStatus, WebRtcReadinessProfile, WebRtcDiagnostics, WebRtcStatsSummary, } from "../browser/browser-session.js";
|
|
5
6
|
export { collectWebRtcDiagnostics, formatWebRtcDiagnosticsLines, summarizeRtcStatsReport, } from "../browser/browser-session.js";
|
|
6
7
|
export type { WebRtcRuntime } from "../browser/webrtc-runtime.js";
|
package/dist/node/index.d.ts.map
CHANGED
|
@@ -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,sBAAsB,EACtB,yBAAyB,EACzB,2BAA2B,EAC3B,wBAAwB,GACzB,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,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"}
|
package/dist/node/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { createNodeWebRtcRuntime } from "./runtime.js";
|
|
2
2
|
export { NodeWebSocketAdapter } from "./node-websocket.js";
|
|
3
|
-
export { connectBrowserSession, connectBrowserVoiceSession, connectBrowserChatSession, connectDataSession, startSession, BrowserSessionModeType, ProvisionedRunnerModeType, VOICE_CONTROL_CHANNEL_LABEL, VOICE_SYNC_CHANNEL_LABEL, } from "../browser/browser-session.js";
|
|
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
5
|
//# sourceMappingURL=index.js.map
|
package/dist/node/index.js.map
CHANGED
|
@@ -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,sBAAsB,EACtB,yBAAyB,EACzB,2BAA2B,EAC3B,wBAAwB,GACzB,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;AAuBvC,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,+BAA+B,CAAC"}
|