@opengeni/sdk 4.2.1-canary.39593846423001 → 4.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/next.js +3 -3
- package/dist/artifacts.js +5 -5
- package/dist/browser.js +3 -3
- package/dist/chat/index.js +6 -6
- package/dist/{chunk-NWAFR5MV.js → chunk-55GBKF7P.js} +2 -2
- package/dist/{chunk-MDH4DVHY.js → chunk-72YZCZWF.js} +26 -2
- package/dist/chunk-72YZCZWF.js.map +1 -0
- package/dist/{chunk-TEGGC6O6.js → chunk-AYRVQVHK.js} +2 -2
- package/dist/{chunk-SA556DB2.js → chunk-EX75IJAN.js} +5 -5
- package/dist/{chunk-3N4DFMLW.js → chunk-G53Y7PIB.js} +5 -5
- package/dist/{chunk-3N4DFMLW.js.map → chunk-G53Y7PIB.js.map} +1 -1
- package/dist/{chunk-HXEJSFM5.js → chunk-LVH6IWCL.js} +2 -2
- package/dist/{chunk-GNHC2T6W.js → chunk-NYGAWWXV.js} +1 -1
- package/dist/chunk-NYGAWWXV.js.map +1 -0
- package/dist/{chunk-FQT3CNV2.js → chunk-OZ5TBBDP.js} +3 -3
- package/dist/{chunk-H5KERQJ6.js → chunk-TS7XHDYJ.js} +73 -6
- package/dist/chunk-TS7XHDYJ.js.map +1 -0
- package/dist/codex-realtime-controller.js +1 -1
- package/dist/core.js +4 -4
- package/dist/desktop-bridge.d.ts +280 -0
- package/dist/desktop-bridge.js +53 -0
- package/dist/desktop-bridge.js.map +1 -0
- package/dist/document-authority.js +4 -4
- package/dist/editable-artifacts.js +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +49 -67
- package/dist/index.js.map +1 -1
- package/dist/realtime.js +5 -5
- package/dist/session-proxy.js +3 -3
- package/dist/site-bridge-host.js +4 -4
- package/dist/site-browser-runtime.gen.d.ts +1 -1
- package/dist/site-document.js +1 -1
- package/dist/site-document.js.map +1 -1
- package/dist/site.js +4 -4
- package/dist/stream.d.ts +18 -2
- package/dist/types.d.ts +49 -4
- package/dist/workspace-live-stream.d.ts +8 -1
- package/package.json +7 -3
- package/src/client.ts +3 -0
- package/src/desktop-bridge.ts +323 -0
- package/src/index.ts +9 -0
- package/src/session-proxy.ts +1 -1
- package/src/site-browser-runtime.gen.ts +1 -1
- package/src/stream.ts +51 -3
- package/src/types.ts +58 -4
- package/src/workspace-live-stream.ts +24 -3
- package/dist/chunk-GNHC2T6W.js.map +0 -1
- package/dist/chunk-H5KERQJ6.js.map +0 -1
- package/dist/chunk-MDH4DVHY.js.map +0 -1
- package/dist/site-document.test.d.ts +0 -1
- /package/dist/{chunk-NWAFR5MV.js.map → chunk-55GBKF7P.js.map} +0 -0
- /package/dist/{chunk-TEGGC6O6.js.map → chunk-AYRVQVHK.js.map} +0 -0
- /package/dist/{chunk-SA556DB2.js.map → chunk-EX75IJAN.js.map} +0 -0
- /package/dist/{chunk-HXEJSFM5.js.map → chunk-LVH6IWCL.js.map} +0 -0
- /package/dist/{chunk-FQT3CNV2.js.map → chunk-OZ5TBBDP.js.map} +0 -0
package/dist/adapters/next.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createSessionProxyHandler
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-G53Y7PIB.js";
|
|
4
4
|
import "../chunk-UM4ZXXJR.js";
|
|
5
5
|
import "../chunk-QGEIL4TR.js";
|
|
6
|
-
import "../chunk-
|
|
7
|
-
import "../chunk-
|
|
6
|
+
import "../chunk-72YZCZWF.js";
|
|
7
|
+
import "../chunk-NYGAWWXV.js";
|
|
8
8
|
import "../chunk-ODKRQUWR.js";
|
|
9
9
|
|
|
10
10
|
// src/adapters/next.ts
|
package/dist/artifacts.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
OpenGeniClient
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-AYRVQVHK.js";
|
|
4
|
+
import "./chunk-LVH6IWCL.js";
|
|
5
|
+
import "./chunk-TS7XHDYJ.js";
|
|
6
6
|
import "./chunk-X5ITQVXE.js";
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-72YZCZWF.js";
|
|
8
|
+
import "./chunk-NYGAWWXV.js";
|
|
9
9
|
import "./chunk-POYRW6KT.js";
|
|
10
10
|
import "./chunk-ODKRQUWR.js";
|
|
11
11
|
export {
|
package/dist/browser.js
CHANGED
|
@@ -8,13 +8,13 @@ import {
|
|
|
8
8
|
} from "./chunk-ORYDCRFM.js";
|
|
9
9
|
import {
|
|
10
10
|
OpenGeniClient
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-TS7XHDYJ.js";
|
|
12
12
|
import "./chunk-X5ITQVXE.js";
|
|
13
|
-
import "./chunk-
|
|
13
|
+
import "./chunk-72YZCZWF.js";
|
|
14
14
|
import {
|
|
15
15
|
OPENGENI_API_CONTRACT_HEADER,
|
|
16
16
|
OPENGENI_API_CONTRACT_REVISION
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-NYGAWWXV.js";
|
|
18
18
|
import "./chunk-POYRW6KT.js";
|
|
19
19
|
import {
|
|
20
20
|
OpenGeniAllowanceExhaustedError,
|
package/dist/chat/index.js
CHANGED
|
@@ -9,9 +9,9 @@ import {
|
|
|
9
9
|
} from "../chunk-JO6THLOG.js";
|
|
10
10
|
import {
|
|
11
11
|
OpenGeniEmbeddingClient
|
|
12
|
-
} from "../chunk-
|
|
13
|
-
import "../chunk-
|
|
14
|
-
import "../chunk-
|
|
12
|
+
} from "../chunk-55GBKF7P.js";
|
|
13
|
+
import "../chunk-AYRVQVHK.js";
|
|
14
|
+
import "../chunk-LVH6IWCL.js";
|
|
15
15
|
import {
|
|
16
16
|
chatDefaults
|
|
17
17
|
} from "../chunk-UM4ZXXJR.js";
|
|
@@ -24,12 +24,12 @@ import {
|
|
|
24
24
|
humanInputPending,
|
|
25
25
|
stringValue
|
|
26
26
|
} from "../chunk-OV3POE62.js";
|
|
27
|
-
import "../chunk-
|
|
27
|
+
import "../chunk-TS7XHDYJ.js";
|
|
28
28
|
import "../chunk-X5ITQVXE.js";
|
|
29
29
|
import {
|
|
30
30
|
parseSseStream
|
|
31
|
-
} from "../chunk-
|
|
32
|
-
import "../chunk-
|
|
31
|
+
} from "../chunk-72YZCZWF.js";
|
|
32
|
+
import "../chunk-NYGAWWXV.js";
|
|
33
33
|
import "../chunk-POYRW6KT.js";
|
|
34
34
|
import {
|
|
35
35
|
OpenGeniApiError,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
OpenGeniClient
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-AYRVQVHK.js";
|
|
4
4
|
|
|
5
5
|
// src/embedding-client.ts
|
|
6
6
|
function hasStaticHeader(options, names) {
|
|
@@ -329,4 +329,4 @@ function usageQuery(query) {
|
|
|
329
329
|
export {
|
|
330
330
|
OpenGeniEmbeddingClient
|
|
331
331
|
};
|
|
332
|
-
//# sourceMappingURL=chunk-
|
|
332
|
+
//# sourceMappingURL=chunk-55GBKF7P.js.map
|
|
@@ -110,11 +110,21 @@ async function* streamSessionEvents(transport, options = {}) {
|
|
|
110
110
|
let failedAttempts = 0;
|
|
111
111
|
let delayMs = baseDelayMs;
|
|
112
112
|
let everConnected = false;
|
|
113
|
+
let attempted = false;
|
|
113
114
|
while (true) {
|
|
114
115
|
if (signal?.aborted) break;
|
|
115
116
|
options.onStateChange?.(everConnected || failedAttempts > 0 ? "reconnecting" : "connecting");
|
|
116
|
-
|
|
117
|
+
let cursorAtOpen = cursor;
|
|
117
118
|
try {
|
|
119
|
+
if (attempted && options.beforeReconnect) {
|
|
120
|
+
const resumeAfter = await runBeforeReconnect(options.beforeReconnect, cursor, signal);
|
|
121
|
+
if (signal?.aborted) return;
|
|
122
|
+
if (typeof resumeAfter === "number" && Number.isSafeInteger(resumeAfter)) {
|
|
123
|
+
cursor = Math.max(cursor, resumeAfter);
|
|
124
|
+
}
|
|
125
|
+
cursorAtOpen = cursor;
|
|
126
|
+
}
|
|
127
|
+
attempted = true;
|
|
118
128
|
const body = await transport.openStream(cursor, signal);
|
|
119
129
|
everConnected = true;
|
|
120
130
|
failedAttempts = 0;
|
|
@@ -196,6 +206,20 @@ async function runBeforeLive(beforeLive, timeoutMs, signal) {
|
|
|
196
206
|
if (signal && abortListener) signal.removeEventListener("abort", abortListener);
|
|
197
207
|
}
|
|
198
208
|
}
|
|
209
|
+
async function runBeforeReconnect(beforeReconnect, cursor, signal) {
|
|
210
|
+
if (!signal) return await beforeReconnect(cursor);
|
|
211
|
+
if (signal.aborted) throw new DOMException("Aborted", "AbortError");
|
|
212
|
+
let abortListener;
|
|
213
|
+
const aborted = new Promise((_resolve, reject) => {
|
|
214
|
+
abortListener = () => reject(new DOMException("Aborted", "AbortError"));
|
|
215
|
+
signal.addEventListener("abort", abortListener, { once: true });
|
|
216
|
+
});
|
|
217
|
+
try {
|
|
218
|
+
return await Promise.race([Promise.resolve().then(() => beforeReconnect(cursor)), aborted]);
|
|
219
|
+
} finally {
|
|
220
|
+
if (abortListener) signal.removeEventListener("abort", abortListener);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
199
223
|
function jitteredDelay(delayMs, ratio) {
|
|
200
224
|
if (delayMs <= 0 || ratio <= 0) return delayMs;
|
|
201
225
|
const boundedRatio = Math.min(ratio, 1);
|
|
@@ -319,4 +343,4 @@ export {
|
|
|
319
343
|
withStreamInactivityTimeout,
|
|
320
344
|
sessionEventStreamCoveredThrough
|
|
321
345
|
};
|
|
322
|
-
//# sourceMappingURL=chunk-
|
|
346
|
+
//# sourceMappingURL=chunk-72YZCZWF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/session-sequence.ts","../src/sse.ts","../src/stream.ts"],"sourcesContent":["/**\n * Read consistency for session projections (prompt queue, pending questions,\n * goal, lineage). The server reads the session's event sequence before the\n * projection and returns it in this header, so the projection reflects every\n * event at or below that sequence. A client that also loads the event log can\n * then re-read a projection only for an event after it, instead of after every\n * historical event it happens to see first.\n */\nexport const SESSION_SEQUENCE_HEADER = \"X-OpenGeni-Session-Sequence\";\n\nconst observed = new WeakMap<object, number>();\n\n/** @internal Record the header for one parsed response body. */\nexport function recordObservedSessionSequence(value: unknown, header: string | null): void {\n if (header === null || typeof value !== \"object\" || value === null) return;\n const sequence = Number(header);\n if (Number.isSafeInteger(sequence) && sequence >= 0) observed.set(value, sequence);\n}\n\n/** @internal Carry a recorded sequence to a value unwrapped from the response body. */\nexport function copyObservedSessionSequence(from: unknown, to: unknown): void {\n if (typeof from !== \"object\" || from === null || typeof to !== \"object\" || to === null) return;\n const sequence = observed.get(from);\n if (sequence !== undefined) observed.set(to, sequence);\n}\n\n/**\n * The session event sequence a value read from the API reflects, or\n * `undefined` when the server (or a proxy in between) did not report one.\n * Values from `getQueue`, `listHumanInputRequests`, `getGoal`/`findGoal` and\n * `getSessionLineage` carry it on current servers.\n */\nexport function observedSessionSequence(value: unknown): number | undefined {\n return typeof value === \"object\" && value !== null ? observed.get(value) : undefined;\n}\n","/**\n * Minimal incremental Server-Sent Events parser over a byte stream.\n *\n * Implements the parts of the SSE wire format Opengeni uses: `id`, `event`,\n * and `data` fields, multi-line data, comment lines, and both LF and CRLF\n * line endings. Messages without any `data` (comments, id-only blocks) are\n * not emitted.\n */\nexport type SseMessage = {\n id?: string;\n event?: string;\n data: string;\n};\n\nexport async function* parseSseStream(\n stream: ReadableStream<Uint8Array>,\n): AsyncGenerator<SseMessage, void, void> {\n const reader = stream.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n let id: string | undefined;\n let event: string | undefined;\n let dataLines: string[] | null = null;\n\n const dispatch = (): SseMessage | null => {\n const message =\n dataLines === null\n ? null\n : {\n ...(id !== undefined ? { id } : {}),\n ...(event !== undefined ? { event } : {}),\n data: dataLines.join(\"\\n\"),\n };\n id = undefined;\n event = undefined;\n dataLines = null;\n return message;\n };\n\n const handleLine = (line: string): SseMessage | null => {\n if (line === \"\") {\n return dispatch();\n }\n if (line.startsWith(\":\")) {\n return null;\n }\n const colon = line.indexOf(\":\");\n const field = colon === -1 ? line : line.slice(0, colon);\n let value = colon === -1 ? \"\" : line.slice(colon + 1);\n if (value.startsWith(\" \")) {\n value = value.slice(1);\n }\n if (field === \"data\") {\n (dataLines ??= []).push(value);\n } else if (field === \"event\") {\n event = value;\n } else if (field === \"id\") {\n id = value;\n }\n // Other fields (e.g. `retry`) are ignored; reconnect pacing is the\n // streaming layer's concern.\n return null;\n };\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n buffer += decoder.decode(value, { stream: true });\n let newline = buffer.indexOf(\"\\n\");\n while (newline !== -1) {\n let line = buffer.slice(0, newline);\n buffer = buffer.slice(newline + 1);\n if (line.endsWith(\"\\r\")) {\n line = line.slice(0, -1);\n }\n const message = handleLine(line);\n if (message) {\n yield message;\n }\n newline = buffer.indexOf(\"\\n\");\n }\n }\n // Per the SSE spec, a block is only dispatched on a blank line. Anything\n // still pending at end-of-stream came from a truncated connection and is\n // discarded — the streaming layer replays from its cursor on reconnect.\n } finally {\n // Never await cancel(): some fetch bodies settle it only once their request\n // aborts, which would deadlock the consumer's unwinding.\n void reader.cancel().catch(() => {});\n try {\n reader.releaseLock();\n } catch {\n // A pending read (older stream implementations) keeps the lock; cancel releases it.\n }\n }\n}\n","import { isAbortError, isRetryableStreamError, OpenGeniStreamError } from \"./errors\";\nimport { parseSseStream } from \"./sse\";\nimport type { SessionEvent } from \"./types\";\n\nconst SESSION_EVENT_STREAM_COVERAGE = Symbol.for(\n \"@opengeni/sdk/session-event-stream-covered-through\",\n);\n\n/**\n * Transport boundary for the streaming core. The client implements it with\n * `fetch`; unit tests script it directly.\n */\nexport type SessionEventStreamTransport = {\n /** Open the SSE stream, replaying durable events after `after` first. */\n openStream: (\n after: number,\n signal: AbortSignal | undefined,\n ) => Promise<ReadableStream<Uint8Array>>;\n /** Replay durable events by sequence (`GET .../events?after=&limit=`). */\n listEvents: (after: number, limit: number) => Promise<SessionEvent[]>;\n};\n\nexport type StreamConnectionState = \"connecting\" | \"live\" | \"reconnecting\";\n\nexport type StreamSessionEventsOptions = {\n /** Resume after this sequence number (exclusive). Defaults to 0 (full replay). */\n after?: number;\n /** Aborting ends the stream gracefully (the generator returns). */\n signal?: AbortSignal;\n /** Reconnect on transient drops. Defaults to true. */\n reconnect?: boolean;\n /** Initial reconnect backoff. Defaults to 500ms. */\n reconnectDelayMs?: number;\n /** Backoff ceiling. Defaults to 10s. */\n maxReconnectDelayMs?: number;\n /** Random backoff spread as a fraction of the delay. Defaults to 0.2. */\n reconnectJitterRatio?: number;\n /**\n * Give up after this many consecutive failed reconnect attempts (i.e. N\n * reconnects = N+1 total open-stream calls). Defaults to unlimited.\n */\n maxReconnectAttempts?: number;\n /**\n * Notify the consumer as soon as the SSE response body is open. This callback\n * is deliberately synchronous and non-blocking: use it to start projection\n * reconciliation without delaying consumption of live event bytes.\n */\n onOpen?: (() => void) | undefined;\n /** Await authoritative client reconciliation before exposing `live`. */\n beforeLive?: (() => void | Promise<void>) | undefined;\n /** Maximum reconciliation time before reconnecting. Defaults to 15s. */\n beforeLiveTimeoutMs?: number;\n /** Maximum time without any SSE bytes before reconnecting. Defaults to 45s. */\n heartbeatTimeoutMs?: number;\n onStateChange?: (state: StreamConnectionState) => void;\n /**\n * Session event streams only (other streams ignore it); opt-in. Runs before\n * every reconnect, including a retry after a failed first attempt, but not\n * before the first attempt, with the sequence the stream would resume\n * after. Resolve a larger sequence to resume after it instead: the events\n * in between are then NOT delivered, so the caller must already hold an\n * equivalent view (for example, it re-read a bounded newest window after a\n * long disconnect). Resolve nothing, or a sequence at or below the cursor,\n * to replay exactly once from the cursor. A rejection counts as a failed\n * reconnect attempt: retryable errors back off and call this again, others\n * end the stream. Aborting `signal` ends the stream without waiting for it;\n * the callback should bound its own work. Without it, reconnects keep\n * exactly-once replay.\n */\n beforeReconnect?: ((cursor: number) => number | void | Promise<number | void>) | undefined;\n};\n\n/**\n * Stream a session's events with exactly-once, in-order delivery.\n *\n * Guarantees, anchored on the per-session contiguous `sequence`:\n * - **No duplicates**: events at or below the cursor are dropped, so server\n * replay overlap and reconnect overlap never re-yield.\n * - **No gaps**: each reconnect resumes from the last seen sequence (unless\n * an opt-in `beforeReconnect` deliberately moves it forward), and a gap\n * observed inside one connection is backfilled from the durable replay\n * endpoint before the newer event is yielded (events are durable before\n * they are published live, so the backfill always finds them).\n * - **Ordered**: sequences are yielded strictly ascending.\n *\n * The generator ends when `signal` aborts, when the server closes and\n * `reconnect` is false, or with an error for non-retryable failures.\n */\nexport async function* streamSessionEvents(\n transport: SessionEventStreamTransport,\n options: StreamSessionEventsOptions = {},\n): AsyncGenerator<SessionEvent, void, void> {\n const signal = options.signal;\n const reconnect = options.reconnect ?? true;\n const baseDelayMs = options.reconnectDelayMs ?? 500;\n const maxDelayMs = options.maxReconnectDelayMs ?? 10_000;\n const jitterRatio = options.reconnectJitterRatio ?? 0.2;\n const beforeLiveTimeoutMs = options.beforeLiveTimeoutMs ?? 15_000;\n const heartbeatTimeoutMs = options.heartbeatTimeoutMs ?? 45_000;\n const maxAttempts = options.maxReconnectAttempts ?? Number.POSITIVE_INFINITY;\n let cursor = options.after ?? 0;\n let failedAttempts = 0;\n let delayMs = baseDelayMs;\n let everConnected = false;\n let attempted = false;\n\n while (true) {\n if (signal?.aborted) break;\n options.onStateChange?.(everConnected || failedAttempts > 0 ? \"reconnecting\" : \"connecting\");\n let cursorAtOpen = cursor;\n try {\n if (attempted && options.beforeReconnect) {\n const resumeAfter = await runBeforeReconnect(options.beforeReconnect, cursor, signal);\n if (signal?.aborted) return;\n if (typeof resumeAfter === \"number\" && Number.isSafeInteger(resumeAfter)) {\n cursor = Math.max(cursor, resumeAfter);\n }\n cursorAtOpen = cursor;\n }\n attempted = true;\n const body = await transport.openStream(cursor, signal);\n everConnected = true;\n failedAttempts = 0;\n delayMs = baseDelayMs;\n try {\n options.onOpen?.();\n } catch {\n // A notification observer cannot own or interrupt the event transport.\n }\n await runBeforeLive(options.beforeLive, beforeLiveTimeoutMs, signal);\n options.onStateChange?.(\"live\");\n for await (const message of parseSseStream(\n withStreamInactivityTimeout(body, heartbeatTimeoutMs, signal),\n )) {\n // Re-check after every yield resumption: an abort from the consumer\n // must not let already-buffered events keep flowing.\n if (signal?.aborted) {\n return;\n }\n const event = parseSessionEvent(message.data);\n if (!event) {\n continue;\n }\n const coveredSequence = trustedSseSequence(message.id, event.sequence);\n markSessionEventStreamCoverage(event, coveredSequence);\n if (coveredSequence <= cursor) continue;\n if (event.sequence > cursor + 1) {\n for await (const missed of backfillEvents(transport, cursor, event.sequence - 1)) {\n cursor = missed.sequence;\n yield missed;\n if (signal?.aborted) {\n return;\n }\n }\n }\n cursor = coveredSequence;\n yield event;\n }\n if (!reconnect) {\n return;\n }\n // Clean server close: reconnect immediately when the connection made\n // progress (servers legitimately cycle long SSE connections); pace\n // empty closes so a misbehaving server is not hammered in a hot loop.\n if (cursor === cursorAtOpen) {\n await sleep(jitteredDelay(baseDelayMs, jitterRatio), signal);\n }\n continue;\n } catch (error) {\n if (signal?.aborted || isAbortError(error)) {\n return;\n }\n if (!reconnect || !isRetryableStreamError(error)) {\n throw error;\n }\n failedAttempts += 1;\n if (failedAttempts > maxAttempts) {\n throw new OpenGeniStreamError(\n `event stream gave up after ${maxAttempts} consecutive failed reconnect attempts: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n }\n await sleep(jitteredDelay(delayMs, jitterRatio), signal);\n delayMs = Math.min(Math.max(delayMs * 2, baseDelayMs), maxDelayMs);\n }\n}\n\nexport async function runBeforeLive(\n beforeLive: (() => void | Promise<void>) | undefined,\n timeoutMs: number,\n signal: AbortSignal | undefined,\n): Promise<void> {\n if (!beforeLive) return;\n let timer: ReturnType<typeof setTimeout> | undefined;\n let abortListener: (() => void) | undefined;\n const timeout = new Promise<never>((_resolve, reject) => {\n timer = setTimeout(\n () => reject(new TypeError(`stream reconciliation timed out after ${timeoutMs}ms`)),\n timeoutMs,\n );\n if (signal) {\n abortListener = () => reject(new DOMException(\"Aborted\", \"AbortError\"));\n signal.addEventListener(\"abort\", abortListener, { once: true });\n }\n });\n try {\n await Promise.race([Promise.resolve().then(beforeLive), timeout]);\n } finally {\n if (timer !== undefined) clearTimeout(timer);\n if (signal && abortListener) signal.removeEventListener(\"abort\", abortListener);\n }\n}\n\n// Races the caller's reconnect hook against abort so a hung callback can never\n// hold an aborted stream open. The hook bounds its own work (no timeout here:\n// a slow but progressing catch-up must not be cut short into a full replay).\nasync function runBeforeReconnect(\n beforeReconnect: (cursor: number) => number | void | Promise<number | void>,\n cursor: number,\n signal: AbortSignal | undefined,\n): Promise<number | void> {\n if (!signal) return await beforeReconnect(cursor);\n if (signal.aborted) throw new DOMException(\"Aborted\", \"AbortError\");\n let abortListener: (() => void) | undefined;\n const aborted = new Promise<never>((_resolve, reject) => {\n abortListener = () => reject(new DOMException(\"Aborted\", \"AbortError\"));\n signal.addEventListener(\"abort\", abortListener, { once: true });\n });\n try {\n return await Promise.race([Promise.resolve().then(() => beforeReconnect(cursor)), aborted]);\n } finally {\n if (abortListener) signal.removeEventListener(\"abort\", abortListener);\n }\n}\n\nexport function jitteredDelay(delayMs: number, ratio: number): number {\n if (delayMs <= 0 || ratio <= 0) return delayMs;\n const boundedRatio = Math.min(ratio, 1);\n const spread = delayMs * boundedRatio;\n return Math.max(0, delayMs - spread + Math.random() * spread * 2);\n}\n\nexport function withStreamInactivityTimeout(\n stream: ReadableStream<Uint8Array>,\n timeoutMs: number,\n signal: AbortSignal | undefined,\n): ReadableStream<Uint8Array> {\n if (!Number.isSafeInteger(timeoutMs) || timeoutMs <= 0) {\n throw new RangeError(\"stream heartbeat timeout must be a positive safe integer\");\n }\n const reader = stream.getReader();\n return new ReadableStream<Uint8Array>({\n pull: async (controller) => {\n let timer: ReturnType<typeof setTimeout> | undefined;\n let abortListener: (() => void) | undefined;\n try {\n const result = await Promise.race([\n reader.read(),\n new Promise<never>((_resolve, reject) => {\n timer = setTimeout(\n () => reject(new TypeError(`event stream heartbeat timed out after ${timeoutMs}ms`)),\n timeoutMs,\n );\n if (signal) {\n abortListener = () => reject(new DOMException(\"Aborted\", \"AbortError\"));\n signal.addEventListener(\"abort\", abortListener, { once: true });\n }\n }),\n ]);\n if (result.done) controller.close();\n else controller.enqueue(result.value);\n } catch (error) {\n void reader.cancel(error).catch(() => {});\n controller.error(error);\n } finally {\n if (timer !== undefined) clearTimeout(timer);\n if (signal && abortListener) signal.removeEventListener(\"abort\", abortListener);\n }\n },\n cancel: (reason) => {\n // Do not wait for the underlying body: it may settle cancel() only after\n // its request aborts (see parseSseStream).\n void reader.cancel(reason).catch(() => {});\n },\n });\n}\n\n/**\n * Yield the durable events with `fromExclusive < sequence <= toInclusive`,\n * in order. Sequences are contiguous, so every one of them must exist in the\n * replay endpoint; if any is missing the function throws instead of skipping\n * it — continuing would silently break the gap-free delivery guarantee.\n */\nasync function* backfillEvents(\n transport: SessionEventStreamTransport,\n fromExclusive: number,\n toInclusive: number,\n): AsyncGenerator<SessionEvent, void, void> {\n let cursor = fromExclusive;\n while (cursor < toInclusive) {\n const page = await transport.listEvents(cursor, Math.min(500, toInclusive - cursor));\n const advancing = page\n .filter((event) => event.sequence > cursor && event.sequence <= toInclusive)\n .sort((a, b) => a.sequence - b.sequence);\n if (advancing.length === 0) {\n throw new OpenGeniStreamError(\n `event replay backfill stalled: expected sequences ${cursor + 1}..${toInclusive} but the replay endpoint returned none of them`,\n );\n }\n for (const event of advancing) {\n if (event.sequence !== cursor + 1) {\n throw new OpenGeniStreamError(\n `event replay backfill is missing sequence ${cursor + 1} (replay endpoint skipped to ${event.sequence}); refusing to deliver with a gap`,\n );\n }\n cursor = event.sequence;\n yield event;\n }\n }\n}\n\nfunction parseSessionEvent(data: string): SessionEvent | null {\n let parsed: unknown;\n try {\n parsed = JSON.parse(data);\n } catch {\n return null;\n }\n if (\n typeof parsed !== \"object\" ||\n parsed === null ||\n typeof (parsed as { sequence?: unknown }).sequence !== \"number\" ||\n typeof (parsed as { type?: unknown }).type !== \"string\" ||\n typeof (parsed as { id?: unknown }).id !== \"string\"\n ) {\n return null;\n }\n return parsed as SessionEvent;\n}\n\n/** Trusted SSE coverage attached non-enumerably to a streamed event. */\nexport function sessionEventStreamCoveredThrough(event: SessionEvent): number | null {\n const covered = (event as SessionEvent & { [SESSION_EVENT_STREAM_COVERAGE]?: unknown })[\n SESSION_EVENT_STREAM_COVERAGE\n ];\n return typeof covered === \"number\" && Number.isSafeInteger(covered) && covered >= event.sequence\n ? covered\n : null;\n}\n\nfunction trustedSseSequence(id: string | undefined, sequence: number): number {\n if (id === undefined || !/^\\d+$/.test(id)) return sequence;\n const covered = Number(id);\n return Number.isSafeInteger(covered) && covered >= sequence ? covered : sequence;\n}\n\nfunction markSessionEventStreamCoverage(event: SessionEvent, covered: number): void {\n Object.defineProperty(event, SESSION_EVENT_STREAM_COVERAGE, {\n value: covered,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n}\n\nasync function sleep(delayMs: number, signal: AbortSignal | undefined): Promise<void> {\n if (signal?.aborted || delayMs <= 0) {\n return;\n }\n await new Promise<void>((resolve) => {\n const timer = setTimeout(done, delayMs);\n function done(): void {\n clearTimeout(timer);\n signal?.removeEventListener(\"abort\", done);\n resolve();\n }\n signal?.addEventListener(\"abort\", done, { once: true });\n });\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
OpenGeniDocumentAuthorityClient
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-LVH6IWCL.js";
|
|
4
4
|
|
|
5
5
|
// src/artifact-client.ts
|
|
6
6
|
var OpenGeniClient = class extends OpenGeniDocumentAuthorityClient {
|
|
@@ -121,4 +121,4 @@ var OpenGeniClient = class extends OpenGeniDocumentAuthorityClient {
|
|
|
121
121
|
export {
|
|
122
122
|
OpenGeniClient
|
|
123
123
|
};
|
|
124
|
-
//# sourceMappingURL=chunk-
|
|
124
|
+
//# sourceMappingURL=chunk-AYRVQVHK.js.map
|
|
@@ -2419,10 +2419,6 @@ function safeError2(error) {
|
|
|
2419
2419
|
}
|
|
2420
2420
|
|
|
2421
2421
|
export {
|
|
2422
|
-
CodexRealtimeMicrophoneError,
|
|
2423
|
-
startCodexRealtimeWebrtc,
|
|
2424
|
-
acquireCodexRealtimeMicrophone,
|
|
2425
|
-
codexRealtimeMicrophoneHealthy,
|
|
2426
2422
|
CODEX_REALTIME_INITIAL_ITEMS_MAX_COUNT,
|
|
2427
2423
|
CODEX_REALTIME_INITIAL_ITEMS_MAX_TOKENS,
|
|
2428
2424
|
CODEX_REALTIME_CONTEXT_APPEND_MAX_BYTES,
|
|
@@ -2437,6 +2433,10 @@ export {
|
|
|
2437
2433
|
CODEX_REALTIME_V3_PENDING_MAX_ENTRIES,
|
|
2438
2434
|
CODEX_REALTIME_V3_PENDING_MAX_BYTES,
|
|
2439
2435
|
createCodexRealtimeV3Bridge,
|
|
2436
|
+
CodexRealtimeMicrophoneError,
|
|
2437
|
+
startCodexRealtimeWebrtc,
|
|
2438
|
+
acquireCodexRealtimeMicrophone,
|
|
2439
|
+
codexRealtimeMicrophoneHealthy,
|
|
2440
2440
|
SESSION_REALTIME_MODELS,
|
|
2441
2441
|
isSessionRealtimeModel,
|
|
2442
2442
|
projectSessionRealtimeLifecycle,
|
|
@@ -2447,4 +2447,4 @@ export {
|
|
|
2447
2447
|
hasStoredSessionRealtimeOwnerProof,
|
|
2448
2448
|
createCodexRealtimeController
|
|
2449
2449
|
};
|
|
2450
|
-
//# sourceMappingURL=chunk-
|
|
2450
|
+
//# sourceMappingURL=chunk-EX75IJAN.js.map
|
|
@@ -9,11 +9,11 @@ import {
|
|
|
9
9
|
SESSION_SEQUENCE_HEADER,
|
|
10
10
|
observedSessionSequence,
|
|
11
11
|
sessionEventStreamCoveredThrough
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-72YZCZWF.js";
|
|
13
13
|
import {
|
|
14
14
|
OPENGENI_API_CONTRACT_HEADER,
|
|
15
15
|
OPENGENI_API_CONTRACT_REVISION
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-NYGAWWXV.js";
|
|
17
17
|
import {
|
|
18
18
|
OpenGeniApiError,
|
|
19
19
|
OpenGeniSetupError
|
|
@@ -1604,8 +1604,8 @@ function workspaceLiveStream(client, workspaceId, params, request, heartbeatMs)
|
|
|
1604
1604
|
const event = next.value;
|
|
1605
1605
|
controller.enqueue(
|
|
1606
1606
|
encoder.encode(
|
|
1607
|
-
`id: ${event.sequence}
|
|
1608
|
-
event: ${event.type}
|
|
1607
|
+
`${"sequence" in event ? `id: ${event.sequence}
|
|
1608
|
+
` : ""}event: ${event.type}
|
|
1609
1609
|
data: ${JSON.stringify(event)}
|
|
1610
1610
|
|
|
1611
1611
|
`
|
|
@@ -1702,4 +1702,4 @@ export {
|
|
|
1702
1702
|
createSessionProxyHandler,
|
|
1703
1703
|
artifactViewerCapability
|
|
1704
1704
|
};
|
|
1705
|
-
//# sourceMappingURL=chunk-
|
|
1705
|
+
//# sourceMappingURL=chunk-G53Y7PIB.js.map
|