@openparachute/surface-client
Advanced tools
| /** | ||
| * Live-query WebSocket transport — the **WS-only** client side of vault's | ||
| * `GET /vault/<name>/api/subscribe` (an `Upgrade: websocket` request selects the | ||
| * WebSocket binding). It sits behind the `startWsSubscription` seam that | ||
| * `VaultClient.subscribe()` drives; `createLiveList`, the reconcilers, and | ||
| * notes-ui all sit above it and are transport-agnostic. | ||
| * | ||
| * Phase 2 of the SSE → Hibernatable-WebSockets migration (team-vault | ||
| * `Decisions/2026-07-04-live-query-ws-hibernation`; wire contract | ||
| * `parachute-cloud/workers/vault/docs/live-query-ws.md`). A held-open SSE stream | ||
| * pins the per-vault Cloudflare Durable Object awake and bills duration; a | ||
| * Hibernatable WebSocket lets an idle-but-open socket evict the DO → ~$0 idle. | ||
| * | ||
| * ## Live is an augmentation; polling is the floor (the degradation model) | ||
| * | ||
| * There is **no SSE fallback** — SSE is being retired, so the client never | ||
| * speaks it. Instead the model is two-state: **WebSocket-or-polling**. The | ||
| * consumer (notes-ui via `createLiveList` → react-query) always has a polling | ||
| * cadence underneath; a live subscription is a *fresher-than-polling* | ||
| * augmentation on top. So when WS can't be established — an old server without | ||
| * the binding, a network that blocks WebSockets, or a drop mid-session — the | ||
| * transport does NOT surface a terminal error or hang. It stays in a non-`live` | ||
| * status (so the consumer keeps polling) and runs a **capped-backoff reconnect | ||
| * in the background**, re-establishing the live augmentation the moment WS | ||
| * becomes reachable again (server upgraded / network recovered). Only genuinely | ||
| * unrecoverable conditions (a protocol bug, a scope denial, or exhausted auth) | ||
| * stop the reconnect loop — and even those just leave the consumer on polling. | ||
| * | ||
| * ## WS wire contract (the load-bearing invariant) | ||
| * | ||
| * The inner payloads are **byte-identical to what the SSE binding emitted** in | ||
| * its `data:` bodies; the event name folds into a `type` discriminator and the | ||
| * snapshot is chunked: | ||
| * | ||
| * - `{"type":"snapshot","notes":[…],"done":<bool>}` — chunked; accumulate | ||
| * `notes` across frames until `done:true`, then emit ONE `onSnapshot` | ||
| * (replaces the set — self-correcting-reconnect semantics). | ||
| * - `{"type":"upsert","note":{…}}` / `{"type":"remove","id":"…"}` — same | ||
| * shape/guards the consumer already expects. | ||
| * | ||
| * ## Auth handshake (first-message, not header) | ||
| * | ||
| * Browsers can't set headers on a WebSocket, so auth is the FIRST frame | ||
| * (`{"type":"auth","token":"…"}`, sent on `open`); the token is re-sent on the | ||
| * OPEN socket when it rotates (no reconnect, no re-snapshot). Close codes | ||
| * (application range, visible to JS): 4400 protocol → terminal, 4401 | ||
| * unauthorized → refresh-once-then-reconnect, 4403 forbidden → terminal, 4408 | ||
| * auth-timeout → reconnect. | ||
| * | ||
| * ## Liveness | ||
| * | ||
| * The client sends the literal string `"ping"` every ~30s and expects a | ||
| * `"pong"` (the DO's no-wake auto-response) — or any other server frame — | ||
| * within ~10s, else it terminates the socket and reconnects (fresh snapshot; | ||
| * the no-replay self-healing is preserved). | ||
| */ | ||
| import type { SubscribeHandlers, SubscribeOptions, SubscribeTransport } from "./subscribe.js"; | ||
| /** | ||
| * Run the live subscription over a WebSocket, degrading to the consumer's | ||
| * polling floor (never SSE) when WS is unavailable — see the module header. | ||
| * Drop-in shape for the consumer seam: `(transport, handlers, opts) => | ||
| * unsubscribe`. `onSnapshot` / `onUpsert` / `onRemove` dispatch, capped | ||
| * backoff, and one-refresh-per-auth-failure-streak match what the consumer | ||
| * expects. | ||
| */ | ||
| export declare function startWsSubscription(transport: SubscribeTransport, handlers: SubscribeHandlers, opts?: SubscribeOptions): () => void; | ||
| //# sourceMappingURL=ws-transport.d.ts.map |
| {"version":3,"file":"ws-transport.d.ts","sourceRoot":"","sources":["../src/ws-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAGnB,MAAM,gBAAgB,CAAC;AA4CxB;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,kBAAkB,EAC7B,QAAQ,EAAE,iBAAiB,EAC3B,IAAI,GAAE,gBAAqB,GAC1B,MAAM,IAAI,CAgWZ"} |
| /** | ||
| * Live-query WebSocket transport — the **WS-only** client side of vault's | ||
| * `GET /vault/<name>/api/subscribe` (an `Upgrade: websocket` request selects the | ||
| * WebSocket binding). It sits behind the `startWsSubscription` seam that | ||
| * `VaultClient.subscribe()` drives; `createLiveList`, the reconcilers, and | ||
| * notes-ui all sit above it and are transport-agnostic. | ||
| * | ||
| * Phase 2 of the SSE → Hibernatable-WebSockets migration (team-vault | ||
| * `Decisions/2026-07-04-live-query-ws-hibernation`; wire contract | ||
| * `parachute-cloud/workers/vault/docs/live-query-ws.md`). A held-open SSE stream | ||
| * pins the per-vault Cloudflare Durable Object awake and bills duration; a | ||
| * Hibernatable WebSocket lets an idle-but-open socket evict the DO → ~$0 idle. | ||
| * | ||
| * ## Live is an augmentation; polling is the floor (the degradation model) | ||
| * | ||
| * There is **no SSE fallback** — SSE is being retired, so the client never | ||
| * speaks it. Instead the model is two-state: **WebSocket-or-polling**. The | ||
| * consumer (notes-ui via `createLiveList` → react-query) always has a polling | ||
| * cadence underneath; a live subscription is a *fresher-than-polling* | ||
| * augmentation on top. So when WS can't be established — an old server without | ||
| * the binding, a network that blocks WebSockets, or a drop mid-session — the | ||
| * transport does NOT surface a terminal error or hang. It stays in a non-`live` | ||
| * status (so the consumer keeps polling) and runs a **capped-backoff reconnect | ||
| * in the background**, re-establishing the live augmentation the moment WS | ||
| * becomes reachable again (server upgraded / network recovered). Only genuinely | ||
| * unrecoverable conditions (a protocol bug, a scope denial, or exhausted auth) | ||
| * stop the reconnect loop — and even those just leave the consumer on polling. | ||
| * | ||
| * ## WS wire contract (the load-bearing invariant) | ||
| * | ||
| * The inner payloads are **byte-identical to what the SSE binding emitted** in | ||
| * its `data:` bodies; the event name folds into a `type` discriminator and the | ||
| * snapshot is chunked: | ||
| * | ||
| * - `{"type":"snapshot","notes":[…],"done":<bool>}` — chunked; accumulate | ||
| * `notes` across frames until `done:true`, then emit ONE `onSnapshot` | ||
| * (replaces the set — self-correcting-reconnect semantics). | ||
| * - `{"type":"upsert","note":{…}}` / `{"type":"remove","id":"…"}` — same | ||
| * shape/guards the consumer already expects. | ||
| * | ||
| * ## Auth handshake (first-message, not header) | ||
| * | ||
| * Browsers can't set headers on a WebSocket, so auth is the FIRST frame | ||
| * (`{"type":"auth","token":"…"}`, sent on `open`); the token is re-sent on the | ||
| * OPEN socket when it rotates (no reconnect, no re-snapshot). Close codes | ||
| * (application range, visible to JS): 4400 protocol → terminal, 4401 | ||
| * unauthorized → refresh-once-then-reconnect, 4403 forbidden → terminal, 4408 | ||
| * auth-timeout → reconnect. | ||
| * | ||
| * ## Liveness | ||
| * | ||
| * The client sends the literal string `"ping"` every ~30s and expects a | ||
| * `"pong"` (the DO's no-wake auto-response) — or any other server frame — | ||
| * within ~10s, else it terminates the socket and reconnects (fresh snapshot; | ||
| * the no-replay self-healing is preserved). | ||
| */ | ||
| import { VaultAuthError, VaultPermissionError, VaultUnreachableError } from "./vault-client.js"; | ||
| const DEFAULT_INITIAL_BACKOFF_MS = 1_000; | ||
| const DEFAULT_MAX_BACKOFF_MS = 30_000; | ||
| const DEFAULT_PING_INTERVAL_MS = 30_000; | ||
| const DEFAULT_PONG_TIMEOUT_MS = 10_000; | ||
| /** WebSocket `readyState` OPEN (avoid depending on a static on the ctor/fake). */ | ||
| const WS_OPEN = 1; | ||
| function resolveWsCtor(transport) { | ||
| if (transport.webSocketImpl) | ||
| return transport.webSocketImpl; | ||
| // The DOM `WebSocket` isn't structurally `WebSocketLike` under strict | ||
| // function types (its event params are the concrete DOM event types), so | ||
| // route it through `unknown` — we only ever construct it + read `ev.data`. | ||
| const g = globalThis.WebSocket; | ||
| return typeof g === "function" ? g : undefined; | ||
| } | ||
| /** Map an `http(s)://` subscribe URL to its `ws(s)://` equivalent. */ | ||
| function toWsUrl(httpUrl) { | ||
| if (/^https:/i.test(httpUrl)) | ||
| return `wss:${httpUrl.slice("https:".length)}`; | ||
| if (/^http:/i.test(httpUrl)) | ||
| return `ws:${httpUrl.slice("http:".length)}`; | ||
| return httpUrl; // already ws/wss (or relative — let the ctor decide) | ||
| } | ||
| function isRecord(v) { | ||
| return typeof v === "object" && v !== null; | ||
| } | ||
| /** | ||
| * Run the live subscription over a WebSocket, degrading to the consumer's | ||
| * polling floor (never SSE) when WS is unavailable — see the module header. | ||
| * Drop-in shape for the consumer seam: `(transport, handlers, opts) => | ||
| * unsubscribe`. `onSnapshot` / `onUpsert` / `onRemove` dispatch, capped | ||
| * backoff, and one-refresh-per-auth-failure-streak match what the consumer | ||
| * expects. | ||
| */ | ||
| export function startWsSubscription(transport, handlers, opts = {}) { | ||
| const initialBackoffMs = opts.initialBackoffMs ?? DEFAULT_INITIAL_BACKOFF_MS; | ||
| const maxBackoffMs = opts.maxBackoffMs ?? DEFAULT_MAX_BACKOFF_MS; | ||
| const pingIntervalMs = opts.pingIntervalMs ?? DEFAULT_PING_INTERVAL_MS; | ||
| const pongTimeoutMs = opts.pongTimeoutMs ?? DEFAULT_PONG_TIMEOUT_MS; | ||
| const controller = new AbortController(); | ||
| let closed = false; | ||
| /** The socket for the in-flight attempt (so `close()` can tear it down). */ | ||
| let activeSocket = null; | ||
| const emitStatus = (s) => { | ||
| try { | ||
| handlers.onStatus?.(s); | ||
| } | ||
| catch { | ||
| // A throwing status handler must not kill the loop. | ||
| } | ||
| }; | ||
| const backoff = (attempt) => Math.min(initialBackoffMs * 2 ** attempt, maxBackoffMs); | ||
| /** Idempotent terminal close — the ONLY place "closed" is emitted. */ | ||
| const close = () => { | ||
| if (closed) | ||
| return; | ||
| closed = true; | ||
| controller.abort(); | ||
| try { | ||
| activeSocket?.close(); | ||
| } | ||
| catch { | ||
| // socket already closing / closed | ||
| } | ||
| emitStatus("closed"); | ||
| }; | ||
| if (opts.signal) { | ||
| if (opts.signal.aborted) { | ||
| close(); | ||
| return close; | ||
| } | ||
| opts.signal.addEventListener("abort", close, { once: true }); | ||
| } | ||
| const wsCtor = resolveWsCtor(transport); | ||
| if (!wsCtor) { | ||
| // No WebSocket in this runtime → the live augmentation can't run. Signal | ||
| // "live unavailable" (terminal, non-error) so the consumer stays on its | ||
| // polling floor. Not a hang, not an error UI. | ||
| handlers.onError?.(new VaultUnreachableError("subscribe: WebSocket unavailable — live disabled, polling only", 0)); | ||
| close(); | ||
| return close; | ||
| } | ||
| /** Abortable sleep — resolves early (without throwing) on close/abort. */ | ||
| const sleep = (ms) => new Promise((resolve) => { | ||
| const timer = setTimeout(() => { | ||
| controller.signal.removeEventListener("abort", onAbort); | ||
| resolve(); | ||
| }, ms); | ||
| const onAbort = () => { | ||
| clearTimeout(timer); | ||
| resolve(); | ||
| }; | ||
| controller.signal.addEventListener("abort", onAbort, { once: true }); | ||
| }); | ||
| /** One WebSocket connection; resolves when it closes / errors / is aborted. */ | ||
| const runOneConnection = (token) => new Promise((resolve) => { | ||
| let opened = false; | ||
| let gotMessage = false; | ||
| let settled = false; | ||
| let sessionToken = token; // the token last sent in an `auth` message | ||
| let pingTimer = null; | ||
| let pongTimer = null; | ||
| // Snapshot chunk accumulator (reset per connection — a snapshot is sent | ||
| // once per authenticated (re)connect). | ||
| let snapshotAcc = []; | ||
| let snapshotOpen = false; | ||
| let ws; | ||
| try { | ||
| ws = new wsCtor(toWsUrl(transport.url)); | ||
| } | ||
| catch { | ||
| // Constructor threw (bad URL / no WS support) → handshake failure. | ||
| resolve({ opened: false, gotMessage: false, closeCode: null }); | ||
| return; | ||
| } | ||
| activeSocket = ws; | ||
| const clearTimers = () => { | ||
| if (pingTimer) { | ||
| clearInterval(pingTimer); | ||
| pingTimer = null; | ||
| } | ||
| if (pongTimer) { | ||
| clearTimeout(pongTimer); | ||
| pongTimer = null; | ||
| } | ||
| }; | ||
| const settle = (r) => { | ||
| if (settled) | ||
| return; | ||
| settled = true; | ||
| clearTimers(); | ||
| controller.signal.removeEventListener("abort", onAbort); | ||
| if (activeSocket === ws) | ||
| activeSocket = null; | ||
| resolve(r); | ||
| }; | ||
| function onAbort() { | ||
| try { | ||
| ws.close(); | ||
| } | ||
| catch { | ||
| // already closing | ||
| } | ||
| settle({ opened, gotMessage, closeCode: null }); | ||
| } | ||
| controller.signal.addEventListener("abort", onAbort, { once: true }); | ||
| /** Any server frame proves liveness — clear the pending pong deadline. */ | ||
| const markActivity = () => { | ||
| if (pongTimer) { | ||
| clearTimeout(pongTimer); | ||
| pongTimer = null; | ||
| } | ||
| }; | ||
| const armPong = () => { | ||
| if (pongTimer) | ||
| clearTimeout(pongTimer); | ||
| pongTimer = setTimeout(() => { | ||
| // No liveness response in time → the socket is wedged. Close it; the | ||
| // reconnect re-snapshots (preserving the no-replay self-healing). | ||
| try { | ||
| ws.close(); | ||
| } | ||
| catch { | ||
| // ignore | ||
| } | ||
| settle({ opened, gotMessage, closeCode: null }); | ||
| }, pongTimeoutMs); | ||
| }; | ||
| const onPingTick = async () => { | ||
| if (closed || ws.readyState !== WS_OPEN) | ||
| return; | ||
| // Re-auth on the OPEN socket if the token rotated (no reconnect, no | ||
| // re-snapshot) — keeps hours-long sockets authed across ~15-min JWTs. | ||
| try { | ||
| const tok = await transport.resolveToken(); | ||
| if (!closed && tok !== sessionToken && ws.readyState === WS_OPEN) { | ||
| ws.send(JSON.stringify({ type: "auth", token: tok })); | ||
| sessionToken = tok; | ||
| } | ||
| } | ||
| catch { | ||
| // token resolution hiccup — still probe liveness below | ||
| } | ||
| if (closed || ws.readyState !== WS_OPEN) | ||
| return; | ||
| try { | ||
| ws.send("ping"); | ||
| } | ||
| catch { | ||
| return; | ||
| } | ||
| armPong(); | ||
| }; | ||
| /** Route one parsed server message — guards match the consumer contract. */ | ||
| const dispatch = (raw) => { | ||
| let parsed; | ||
| try { | ||
| parsed = typeof raw === "string" ? JSON.parse(raw) : JSON.parse(String(raw)); | ||
| } | ||
| catch (err) { | ||
| // One malformed frame must not kill a healthy socket. | ||
| handlers.onError?.(err); | ||
| return; | ||
| } | ||
| const body = isRecord(parsed) ? parsed : {}; | ||
| const type = body.type; | ||
| if (type === "snapshot") { | ||
| const notes = Array.isArray(body.notes) ? body.notes : []; | ||
| snapshotAcc = snapshotOpen ? snapshotAcc.concat(notes) : notes.slice(); | ||
| snapshotOpen = true; | ||
| // `done` is always present per the contract; treat a missing flag as | ||
| // a complete (non-chunked) snapshot rather than buffering forever. | ||
| if (body.done === true || body.done === undefined) { | ||
| handlers.onSnapshot(snapshotAcc); | ||
| snapshotAcc = []; | ||
| snapshotOpen = false; | ||
| } | ||
| } | ||
| else if (type === "upsert") { | ||
| if (body.note && typeof body.note === "object") | ||
| handlers.onUpsert(body.note); | ||
| } | ||
| else if (type === "remove") { | ||
| if (typeof body.id === "string") | ||
| handlers.onRemove(body.id); | ||
| } | ||
| // Unknown type: ignored (forward compatibility). | ||
| }; | ||
| ws.onopen = () => { | ||
| opened = true; | ||
| try { | ||
| ws.send(JSON.stringify({ type: "auth", token: sessionToken })); | ||
| } | ||
| catch { | ||
| // send-on-open failed — the close/error handler drives recovery | ||
| } | ||
| pingTimer = setInterval(() => { | ||
| void onPingTick(); | ||
| }, pingIntervalMs); | ||
| }; | ||
| ws.onmessage = (ev) => { | ||
| const data = isRecord(ev) ? ev.data : undefined; | ||
| markActivity(); | ||
| // A `pong` is liveness only — it must NOT count as "auth succeeded". | ||
| // Check it BEFORE the open flip so the "open only after a real (post- | ||
| // auth) data frame" invariant holds regardless of ping cadence (a pong | ||
| // can precede the snapshot when pingInterval < the server's auth | ||
| // deadline — not at the 30s/10s defaults, but possible in tests). | ||
| if (typeof data === "string" && data === "pong") | ||
| return; // liveness ack | ||
| if (!gotMessage) { | ||
| // First real frame confirms auth passed + the socket works. This is | ||
| // the analog of the old SSE "open" (auth already validated by then). | ||
| gotMessage = true; | ||
| emitStatus("open"); | ||
| } | ||
| dispatch(data); | ||
| }; | ||
| ws.onerror = () => { | ||
| // An error is almost always followed by close (which settles). Don't | ||
| // settle here — let onclose carry the code. | ||
| }; | ||
| ws.onclose = (ev) => { | ||
| const code = isRecord(ev) && typeof ev.code === "number" ? ev.code : null; | ||
| const reason = isRecord(ev) && typeof ev.reason === "string" && ev.reason ? ev.reason : undefined; | ||
| settle(reason !== undefined | ||
| ? { opened, gotMessage, closeCode: code, reason } | ||
| : { opened, gotMessage, closeCode: code }); | ||
| }; | ||
| }); | ||
| void (async () => { | ||
| let attempt = 0; // backoff exponent; reset on a working session | ||
| let firstConnect = true; | ||
| let refreshedThisStreak = false; | ||
| while (!closed) { | ||
| emitStatus(firstConnect ? "connecting" : "reconnecting"); | ||
| firstConnect = false; | ||
| let token; | ||
| try { | ||
| token = await transport.resolveToken(); | ||
| } | ||
| catch (err) { | ||
| if (closed) | ||
| return; | ||
| const message = err instanceof Error ? err.message : String(err); | ||
| handlers.onError?.(new VaultUnreachableError(`subscribe ws token resolution failed: ${message}`, 0)); | ||
| await sleep(backoff(attempt)); | ||
| attempt++; | ||
| continue; | ||
| } | ||
| const result = await runOneConnection(token); | ||
| if (closed) | ||
| return; | ||
| const code = result.closeCode; | ||
| // ---- Terminal conditions (a reconnect can't heal them) ---- | ||
| // Even these degrade gracefully: the consumer just stays on its polling | ||
| // floor; we only stop the background reconnect because retrying is futile. | ||
| // 4400 protocol error (mirrors the old SSE 400=terminal). | ||
| if (code === 4400) { | ||
| handlers.onError?.(new Error(`subscribe ws rejected (4400 protocol error)${result.reason ? `: ${result.reason}` : ""}`)); | ||
| close(); | ||
| return; | ||
| } | ||
| // 4403 forbidden — scope mismatch / a re-auth that would widen scope. | ||
| // Refresh can't grant more scope → terminal (VaultPermissionError). | ||
| if (code === 4403) { | ||
| handlers.onError?.(new VaultPermissionError(`subscribe ws forbidden (4403)`, result.reason ? { body: result.reason } : {})); | ||
| close(); | ||
| return; | ||
| } | ||
| // 4401 unauthorized (expired / revoked) — refresh once per auth-failure | ||
| // streak, then reconnect; exhausted → terminal. | ||
| if (code === 4401) { | ||
| if (!refreshedThisStreak && transport.refreshToken) { | ||
| let fresh = null; | ||
| try { | ||
| fresh = await transport.refreshToken(); | ||
| } | ||
| catch { | ||
| fresh = null; | ||
| } | ||
| if (fresh !== null && !closed) { | ||
| refreshedThisStreak = true; | ||
| continue; // immediate reconnect with the fresh token | ||
| } | ||
| } | ||
| handlers.onError?.(new VaultAuthError(`subscribe ws rejected (4401)`, 401, result.reason ? { body: result.reason } : {})); | ||
| close(); | ||
| return; | ||
| } | ||
| // ---- Non-terminal: transient → capped-backoff reconnect FOREVER ---- | ||
| // This IS the graceful-degradation path. Handshake failure (an old server | ||
| // without the WS binding, or a network that blocks WebSockets), a network | ||
| // error, 4408 auth-timeout, 1006/1011, a clean drop, our ping-timeout, or | ||
| // an opened-but-silent socket all land here. The subscription stays | ||
| // non-`live` (the consumer keeps polling) while we keep probing, so live | ||
| // re-establishes the moment WS is reachable again. | ||
| refreshedThisStreak = false; | ||
| if (result.gotMessage) { | ||
| // A working session dropped → reconnect fast; the fresh snapshot | ||
| // reconciles anything missed. | ||
| attempt = 0; | ||
| } | ||
| else if (!result.opened) { | ||
| // Never even upgraded — the common "WS not available here" case. | ||
| // Observational only (the consumer keeps polling); backoff grows to the | ||
| // ceiling so a permanently-SSE-only server is probed at most ~every 30s. | ||
| handlers.onError?.(new VaultUnreachableError(`subscribe ws: connection did not open (live unavailable — polling)`, 0)); | ||
| } | ||
| await sleep(backoff(attempt)); | ||
| attempt++; | ||
| } | ||
| })(); | ||
| return close; | ||
| } | ||
| //# sourceMappingURL=ws-transport.js.map |
| {"version":3,"file":"ws-transport.js","sourceRoot":"","sources":["../src/ws-transport.ts"],"names":[],"mappings":"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"} |
+45
-0
| # Changelog | ||
| ## [0.3.4] - 2026-07-05 | ||
| ### Changed — live-query is now WebSocket-only (no SSE; the fallback is polling) | ||
| Phase 2 of the SSE → Hibernatable-WebSockets migration (team-vault | ||
| `Decisions/2026-07-04-live-query-ws-hibernation`; wire contract | ||
| `parachute-cloud/workers/vault/docs/live-query-ws.md`). A held-open SSE stream | ||
| pins the per-vault Cloudflare Durable Object awake and bills duration; a | ||
| Hibernatable WebSocket lets an idle-but-open socket evict the DO → ~$0 idle. | ||
| **SSE is being retired, so the client no longer speaks it** — the model is | ||
| two-state: **WebSocket-or-polling**, where polling (the consumer's react-query | ||
| cadence) is the floor and a live socket is a fresher-than-polling augmentation | ||
| on top. | ||
| - **`VaultClient.subscribe()` is WebSocket-only** (`ws-transport.ts`). The | ||
| previous fetch-stream SSE transport (`startSubscription` / `parseSSEStream`) | ||
| is removed. `createLiveList`, the reconcilers, and consumers (notes-ui) are | ||
| untouched — they sit above the transport seam. | ||
| - **Graceful degradation to polling (never an error, never a hang).** When WS | ||
| can't be established — an old server without the binding, a WS-blocked | ||
| network, or a drop — the subscription stays in a non-`live` status (so the | ||
| consumer keeps polling) and runs a **capped-backoff reconnect in the | ||
| background**, re-establishing the live augmentation the moment WS is reachable | ||
| again. A runtime with no `WebSocket` signals "live unavailable" once and the | ||
| consumer polls. Only a protocol bug (4400), a scope denial (4403), or | ||
| exhausted auth stop the reconnect loop — and even those just leave the | ||
| consumer on polling. | ||
| - **First-message auth handshake.** Browsers can't set headers on a WebSocket, | ||
| so auth is the first frame (`{"type":"auth","token":"…"}`); the token is | ||
| re-sent on the OPEN socket when it rotates (no reconnect, no re-snapshot). | ||
| - **Wire parity.** Payloads are byte-identical to what the SSE `data:` bodies | ||
| carried (`upsert` / `remove`); the snapshot is chunked and accumulated until | ||
| `done:true`, then emitted as the single `onSnapshot` the consumer expects. | ||
| - **Liveness.** Client-driven raw `"ping"` every ~30s, expecting `"pong"` (the | ||
| DO's no-wake auto-response) or any frame within ~10s, else the socket is | ||
| terminated and reconnected (fresh snapshot — the no-replay self-healing is | ||
| preserved). | ||
| - **Close-code map:** 4400 protocol → terminal; 4401 unauthorized → | ||
| refresh-once-then-reconnect; 4403 forbidden → terminal | ||
| (`VaultPermissionError`); 4408 auth-timeout → reconnect. | ||
| BREAKING (pre-1.0, live-query API only): the `parseSSEStream`, | ||
| `startSubscription`, and `SSEEvent` exports are gone; `VaultClient.subscribe`'s | ||
| consumer surface (`onSnapshot`/`onUpsert`/`onRemove`/`onStatus`) is unchanged. | ||
| ## [0.3.3-rc.1] - 2026-06-24 | ||
@@ -4,0 +49,0 @@ |
+4
-3
@@ -35,5 +35,6 @@ /** | ||
| export { buildNotesQuery, isNotesQuery, toNotesSearchParams, type MetadataFilter, type MetadataOps, type MetadataScalar, type NotesDateFilter, type NotesQuery, type NotesQueryInput, type RawNotesQuery, } from "./notes-query.js"; | ||
| export { parseSSEStream, startSubscription, assertSubscribableQuery, type SSEEvent, type SubscribeHandlers, type SubscribeOptions, type SubscribeStatus, type SubscribeTransport, } from "./subscribe.js"; | ||
| export { assertSubscribableQuery, type SubscribeHandlers, type SubscribeOptions, type SubscribeStatus, type SubscribeTransport, type WebSocketLike, type WebSocketCtor, } from "./subscribe.js"; | ||
| export { startWsSubscription } from "./ws-transport.js"; | ||
| export { createLiveList, reconcileUpsert, reconcileRemove, isSubscribableParams, toLiveListStatus, type LiveList, type LiveListClient, type LiveListState, type LiveListStatus, type CreateLiveListOptions, } from "./live-list.js"; | ||
| export type { TagExpandMode, VaultInfo, Note, NoteSummary, NoteLink, NoteAttachment, TagSummary, TagFieldSchema, TagRecord, TagUpsertPayload, UpdateNotePayload, CreateNotePayload, NoteLinkAddPayload, NoteLinkRemovePayload, FindPathResult, StorageUploadResult, UploadProgress, ReachabilitySignal, } from "./vault-types.js"; | ||
| export type { TagExpandMode, TranscriptionCapability, VaultInfo, Note, NoteSummary, NoteLink, NoteAttachment, TagSummary, TagFieldSchema, TagRecord, TagUpsertPayload, UpdateNotePayload, CreateNotePayload, NoteLinkAddPayload, NoteLinkRemovePayload, FindPathResult, StorageUploadResult, UploadProgress, ReachabilitySignal, } from "./vault-types.js"; | ||
| export { loadToken, saveToken, clearToken, clearAllTokensForApp, storedFromTokenResponse, tokenKey, TOKEN_KEY_PREFIX, type TokenStorageOpts, } from "./token-storage.js"; | ||
@@ -59,3 +60,3 @@ export { reloadAfterServiceWorkerUpdate, SW_RELOAD_FALLBACK_MS, __resetReloadArmedForTests, type ReloadAfterSWUpdateOpts, } from "./sw-reload.js"; | ||
| */ | ||
| export declare const APP_CLIENT_VERSION = "0.3.3"; | ||
| export declare const APP_CLIENT_VERSION = "0.3.4"; | ||
| //# sourceMappingURL=index.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAMH,OAAO,EACL,kBAAkB,EAClB,KAAK,sBAAsB,EAC3B,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,eAAe,GACrB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,GACtB,MAAM,YAAY,CAAC;AAIpB,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,mBAAmB,GACpB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAG7F,OAAO,EACL,WAAW,EACX,UAAU,EACV,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,EAChB,KAAK,kBAAkB,GACxB,MAAM,mBAAmB,CAAC;AAK3B,OAAO,EACL,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,aAAa,GACnB,MAAM,kBAAkB,CAAC;AAK1B,OAAO,EACL,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,gBAAgB,CAAC;AAKxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAOxD,OAAO,EACL,cAAc,EACd,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,gBAAgB,EAChB,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,qBAAqB,GAC3B,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EACV,aAAa,EACb,uBAAuB,EACvB,SAAS,EACT,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,cAAc,EACd,UAAU,EACV,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,SAAS,EACT,SAAS,EACT,UAAU,EACV,oBAAoB,EACpB,uBAAuB,EACvB,QAAQ,EACR,gBAAgB,EAChB,KAAK,gBAAgB,GACtB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,8BAA8B,EAC9B,qBAAqB,EACrB,0BAA0B,EAC1B,KAAK,uBAAuB,GAC7B,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAOlE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGlF,YAAY,EACV,UAAU,EACV,2BAA2B,EAC3B,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,WAAW,EACX,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAEpB;;;;;;;GAOG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAKtD;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,UAAyB,CAAC"} |
+9
-4
@@ -47,5 +47,10 @@ /** | ||
| export { buildNotesQuery, isNotesQuery, toNotesSearchParams, } from "./notes-query.js"; | ||
| // Live-query SSE subscription — `VaultClient.subscribe()` is the consumer | ||
| // API; the parser + loop primitives are exported for advanced/raw use. | ||
| export { parseSSEStream, startSubscription, assertSubscribableQuery, } from "./subscribe.js"; | ||
| // Live-query subscription contract — `VaultClient.subscribe()` is the consumer | ||
| // API. The transport is WebSocket-only; these are the shared types + the | ||
| // client-side query guard. | ||
| export { assertSubscribableQuery, } from "./subscribe.js"; | ||
| // Live-query WebSocket transport — the WS-only subscription loop behind | ||
| // `VaultClient.subscribe`. When WS is unavailable it degrades to the consumer's | ||
| // polling floor (never SSE). Exported for advanced/raw use. | ||
| export { startWsSubscription } from "./ws-transport.js"; | ||
| // Live-list — framework-light reconciler over `VaultClient.subscribe()`. | ||
@@ -67,3 +72,3 @@ // `createLiveList` maintains an ordered note list from the snapshot + delta | ||
| // regex-parsing the DOM themselves. See | ||
| // `parachute-patterns/patterns/runtime-tenancy-contract.md`. | ||
| // `../../../docs/contracts/runtime-tenancy-contract.md`. | ||
| export { getMountBase, getTenantId, getHubOrigin, getVaultUrl } from "./mount.js"; | ||
@@ -70,0 +75,0 @@ /** |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,sEAAsE;AACtE,wEAAwE;AACxE,6EAA6E;AAC7E,uCAAuC;AACvC,OAAO,EACL,kBAAkB,GAQnB,MAAM,2BAA2B,CAAC;AAEnC,qDAAqD;AACrD,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,GAOpB,MAAM,YAAY,CAAC;AAEpB,uEAAuE;AACvE,4CAA4C;AAC5C,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,mBAAmB,GACpB,MAAM,WAAW,CAAC;AAEnB,wEAAwE;AACxE,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAA2B,MAAM,gBAAgB,CAAC;AAE7F,yCAAyC;AACzC,OAAO,EACL,WAAW,EACX,UAAU,EACV,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,GAEjB,MAAM,mBAAmB,CAAC;AAE3B,wEAAwE;AACxE,4EAA4E;AAC5E,oDAAoD;AACpD,OAAO,EACL,eAAe,EACf,YAAY,EACZ,mBAAmB,GAQpB,MAAM,kBAAkB,CAAC;AAE1B,0EAA0E;AAC1E,uEAAuE;AACvE,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,uBAAuB,GAMxB,MAAM,gBAAgB,CAAC;AAExB,yEAAyE;AACzE,4EAA4E;AAC5E,8EAA8E;AAC9E,4EAA4E;AAC5E,8EAA8E;AAC9E,OAAO,EACL,cAAc,EACd,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,gBAAgB,GAMjB,MAAM,gBAAgB,CAAC;AAwBxB,qBAAqB;AACrB,OAAO,EACL,SAAS,EACT,SAAS,EACT,UAAU,EACV,oBAAoB,EACpB,uBAAuB,EACvB,QAAQ,EACR,gBAAgB,GAEjB,MAAM,oBAAoB,CAAC;AAE5B,gDAAgD;AAChD,OAAO,EACL,8BAA8B,EAC9B,qBAAqB,EACrB,0BAA0B,GAE3B,MAAM,gBAAgB,CAAC;AAExB,qEAAqE;AACrE,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElE,4EAA4E;AAC5E,wEAAwE;AACxE,wEAAwE;AACxE,wCAAwC;AACxC,6DAA6D;AAC7D,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAclF;;;;;;;GAOG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,gFAAgF;AAChF,2EAA2E;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,sBAAsB,CAAC"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,sEAAsE;AACtE,wEAAwE;AACxE,6EAA6E;AAC7E,uCAAuC;AACvC,OAAO,EACL,kBAAkB,GAQnB,MAAM,2BAA2B,CAAC;AAEnC,qDAAqD;AACrD,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,GAOpB,MAAM,YAAY,CAAC;AAEpB,uEAAuE;AACvE,4CAA4C;AAC5C,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,mBAAmB,GACpB,MAAM,WAAW,CAAC;AAEnB,wEAAwE;AACxE,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAA2B,MAAM,gBAAgB,CAAC;AAE7F,yCAAyC;AACzC,OAAO,EACL,WAAW,EACX,UAAU,EACV,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,GAEjB,MAAM,mBAAmB,CAAC;AAE3B,wEAAwE;AACxE,4EAA4E;AAC5E,oDAAoD;AACpD,OAAO,EACL,eAAe,EACf,YAAY,EACZ,mBAAmB,GAQpB,MAAM,kBAAkB,CAAC;AAE1B,+EAA+E;AAC/E,yEAAyE;AACzE,2BAA2B;AAC3B,OAAO,EACL,uBAAuB,GAOxB,MAAM,gBAAgB,CAAC;AAExB,wEAAwE;AACxE,gFAAgF;AAChF,4DAA4D;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,yEAAyE;AACzE,4EAA4E;AAC5E,8EAA8E;AAC9E,4EAA4E;AAC5E,8EAA8E;AAC9E,OAAO,EACL,cAAc,EACd,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,gBAAgB,GAMjB,MAAM,gBAAgB,CAAC;AAyBxB,qBAAqB;AACrB,OAAO,EACL,SAAS,EACT,SAAS,EACT,UAAU,EACV,oBAAoB,EACpB,uBAAuB,EACvB,QAAQ,EACR,gBAAgB,GAEjB,MAAM,oBAAoB,CAAC;AAE5B,gDAAgD;AAChD,OAAO,EACL,8BAA8B,EAC9B,qBAAqB,EACrB,0BAA0B,GAE3B,MAAM,gBAAgB,CAAC;AAExB,qEAAqE;AACrE,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElE,4EAA4E;AAC5E,wEAAwE;AACxE,wEAAwE;AACxE,wCAAwC;AACxC,yDAAyD;AACzD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAclF;;;;;;;GAOG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,gFAAgF;AAChF,2EAA2E;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,sBAAsB,CAAC"} |
+1
-1
@@ -6,3 +6,3 @@ /** | ||
| * injects into every served `index.html` (see | ||
| * `parachute-patterns/patterns/runtime-tenancy-contract.md` and the | ||
| * `../../../docs/contracts/runtime-tenancy-contract.md` and the | ||
| * producer-side reference at | ||
@@ -9,0 +9,0 @@ * `parachute-surface/packages/app-host/src/tenancy-injection.ts`). Apps that |
+1
-1
@@ -6,3 +6,3 @@ /** | ||
| * injects into every served `index.html` (see | ||
| * `parachute-patterns/patterns/runtime-tenancy-contract.md` and the | ||
| * `../../../docs/contracts/runtime-tenancy-contract.md` and the | ||
| * producer-side reference at | ||
@@ -9,0 +9,0 @@ * `parachute-surface/packages/app-host/src/tenancy-injection.ts`). Apps that |
+68
-81
| /** | ||
| * Live-query SSE subscription — the client side of vault's | ||
| * `GET /vault/<name>/api/subscribe` (vault design | ||
| * `2026-06-08-live-query-sse.md`). Upstreamed from my-vault-ui's | ||
| * `src/vault/sse.ts` (which carried the literal comment "to be upstreamed | ||
| * as VaultClient.subscribe()"), redesigned around fetch-stream transport. | ||
| * Live-query subscription contract — the shared types + query guard for | ||
| * vault's `GET /vault/<name>/api/subscribe`. The **transport is WebSocket-only** | ||
| * ({@link ./ws-transport.ts}); `VaultClient.subscribe()` is the consumer API. | ||
| * | ||
| * The server sends one `snapshot` event (the currently-matching note set), | ||
| * then `upsert` / `remove` events as notes change, plus `:` comment | ||
| * keepalives every ~25s. The same query grammar as `GET /api/notes` | ||
| * applies, minus the shapes that can't be evaluated live (`search`, | ||
| * `near`, `cursor` — vault rejects them with 400; we reject them | ||
| * client-side before opening a stream). | ||
| * The server sends one `snapshot` (the currently-matching note set), then | ||
| * `upsert` / `remove` messages as notes change. The same query grammar as | ||
| * `GET /api/notes` applies, minus the shapes that can't be evaluated live | ||
| * (`search`, `near`, `cursor` — vault rejects them with 400; we reject them | ||
| * client-side, see {@link assertSubscribableQuery}). | ||
| * | ||
| * **Why fetch-stream, not EventSource.** `EventSource` cannot set request | ||
| * headers, which forces the bearer into a `?key=` query param — a token in | ||
| * proxy logs, browser history, and Referer headers. That was flagged as the | ||
| * design trap when this was upstreamed. We instead `fetch()` the stream | ||
| * with `Authorization: Bearer <token>` and parse the SSE wire format off | ||
| * the response `ReadableStream` ourselves ({@link parseSSEStream}). Bonus: | ||
| * fetch works identically in Bun/Node server contexts (no `EventSource` | ||
| * global needed), which matters because surface-host's `ScopedVaultClient` | ||
| * runs this server-side. | ||
| * **Live is an augmentation; polling is the floor.** There is no SSE fallback — | ||
| * SSE is being retired and the client never speaks it. When WS is unavailable | ||
| * the live subscription degrades to the consumer's polling cadence rather than | ||
| * erroring; see the `ws-transport.ts` header for the degradation model. | ||
| * | ||
| * **Reconnection model (self-correcting).** Vault's MVP has no | ||
| * `Last-Event-ID` replay: on reconnect the client simply re-subscribes and | ||
| * receives a **fresh snapshot**, which replaces the consumer's whole set — | ||
| * any events missed while disconnected are reconciled by the snapshot, so | ||
| * a dropped connection can never leave the consumer permanently stale. | ||
| * Reconnects use capped exponential backoff | ||
| * ({@link SubscribeOptions.initialBackoffMs} / `maxBackoffMs`). | ||
| * | ||
| * **Auth.** The token is resolved per connection attempt via the client's | ||
| * token resolution (static token or `tokenProvider`). A 401/403 on connect | ||
| * (including reconnect-after-token-expiry — the common case for ~15-min hub | ||
| * JWTs) drives the client's refresh-on-401 seam (`onAuthError`) once, then | ||
| * resubscribes with the fresh token. If refresh isn't possible (or the | ||
| * refreshed token is rejected too), the subscription terminates: | ||
| * `onError(VaultAuthError)` then `onStatus("closed")`. | ||
| * **Reconnection is self-correcting.** Vault has no event replay: a reconnect | ||
| * re-delivers a fresh snapshot that replaces the consumer's whole set, so a | ||
| * dropped connection can never leave the consumer permanently stale. Reconnects | ||
| * use capped exponential backoff ({@link SubscribeOptions.initialBackoffMs} / | ||
| * `maxBackoffMs`). | ||
| */ | ||
| import type { Note } from "./vault-types.js"; | ||
| /** A single parsed SSE event (named event + joined data payload). */ | ||
| export interface SSEEvent { | ||
| /** The `event:` field; `"message"` when the server didn't name one. */ | ||
| event: string; | ||
| /** The `data:` payload — multi-line `data:` fields joined with `\n`. */ | ||
| data: string; | ||
| } | ||
| /** Lifecycle signal for a live subscription. */ | ||
@@ -53,5 +28,5 @@ export type SubscribeStatus = | ||
| "connecting" | ||
| /** Stream is open; snapshot has been (or is about to be) delivered. */ | ||
| /** Socket is open + authed; snapshot has been (or is about to be) delivered. */ | ||
| | "open" | ||
| /** Stream dropped; a reconnect attempt is scheduled / in flight. */ | ||
| /** Connection dropped; a reconnect attempt is scheduled / in flight. */ | ||
| | "reconnecting" | ||
@@ -76,5 +51,7 @@ /** Terminal: unsubscribed, aborted, or an unrecoverable error. */ | ||
| * Invoked on every error the subscription encounters — transient | ||
| * (network drop, 5xx; reconnection continues) and terminal alike. A | ||
| * terminal error is always followed by `onStatus("closed")`; without | ||
| * that, the subscription is still retrying. | ||
| * (connection drop, WS unavailable; reconnection continues) and terminal | ||
| * alike. A terminal error is always followed by `onStatus("closed")`; | ||
| * without that, the subscription is still retrying. Observational only — | ||
| * a live-transport error must never become the consumer's data-error state | ||
| * (that would make live worse than polling). | ||
| */ | ||
@@ -92,26 +69,17 @@ onError?: (err: unknown) => void; | ||
| maxBackoffMs?: number; | ||
| /** | ||
| * Interval between client-driven liveness pings (the literal `"ping"` | ||
| * frame). Default 30000. | ||
| */ | ||
| pingIntervalMs?: number; | ||
| /** | ||
| * How long to wait for a `"pong"` (or any other server frame) after a ping | ||
| * before treating the socket as dead and reconnecting. Default 10000. | ||
| */ | ||
| pongTimeoutMs?: number; | ||
| } | ||
| /** | ||
| * Parse the SSE wire format off a `ReadableStream<Uint8Array>` (the | ||
| * response body of a `text/event-stream` fetch). Yields one | ||
| * {@link SSEEvent} per dispatched event. Implements the parts of the | ||
| * WHATWG SSE grammar the vault emits, faithfully: | ||
| * | ||
| * - `event:` names the next dispatch; resets after each dispatch. | ||
| * - `data:` lines accumulate; multi-line data joins with `\n`. | ||
| * - A blank line dispatches. Per spec, an event with an EMPTY data | ||
| * buffer is dropped (this is how `event:`-only frames behave). | ||
| * - Lines starting with `:` are comments (vault's keepalive) — ignored. | ||
| * - `id:` / `retry:` fields are tolerated and ignored (vault doesn't | ||
| * send them; reconnection here is snapshot-based, not cursor-based). | ||
| * - CRLF / CR line endings are normalized. | ||
| * | ||
| * Exported for direct use/testing; `VaultClient.subscribe()` is the | ||
| * consumer-facing API. | ||
| */ | ||
| export declare function parseSSEStream(stream: ReadableStream<Uint8Array>): AsyncGenerator<SSEEvent, void, undefined>; | ||
| /** | ||
| * Query shapes vault's `/api/subscribe` rejects with 400 — checked | ||
| * client-side so a bad subscription throws synchronously instead of | ||
| * opening a doomed stream. Mirrors `parachute-vault/src/subscribe.ts`: | ||
| * opening a doomed connection. Mirrors `parachute-vault/src/subscribe.ts`: | ||
| * `search` (FTS) and `near` (graph BFS) can't be evaluated against a | ||
@@ -122,3 +90,23 @@ * single changed note; `cursor` (paging) is meaningless for a live set. | ||
| /** | ||
| * Transport seam between `VaultClient` and the subscription loop. Keeps | ||
| * The minimal WebSocket surface the WS transport (`ws-transport.ts`) drives. | ||
| * Typed structurally (rather than as the DOM `WebSocket`) so a test fake is | ||
| * trivial and so the transport works under any runtime that ships a | ||
| * WHATWG-shaped WebSocket global (browser, Bun, Node ≥ 22). Event params are | ||
| * `any` on purpose — the DOM `WebSocket` is then structurally assignable to | ||
| * this without a strict-function-types clash, and the transport reads only | ||
| * `ev.data` / `ev.code` / `ev.reason` defensively. | ||
| */ | ||
| export interface WebSocketLike { | ||
| readonly readyState: number; | ||
| send(data: string): void; | ||
| close(code?: number, reason?: string): void; | ||
| onopen: ((ev: any) => void) | null; | ||
| onmessage: ((ev: any) => void) | null; | ||
| onerror: ((ev: any) => void) | null; | ||
| onclose: ((ev: any) => void) | null; | ||
| } | ||
| /** Constructor for a {@link WebSocketLike} (the global `WebSocket`, or a fake). */ | ||
| export type WebSocketCtor = new (url: string) => WebSocketLike; | ||
| /** | ||
| * Transport seam between `VaultClient` and the WS subscription loop. Keeps | ||
| * the loop independently testable and keeps token custody inside the | ||
@@ -129,21 +117,20 @@ * client — the loop sees a resolver + refresh callback, never a stored | ||
| export interface SubscribeTransport { | ||
| /** Fully-built subscribe URL (`<vaultUrl>/api/subscribe?<query>`). */ | ||
| /** Fully-built subscribe URL (`<vaultUrl>/api/subscribe?<query>`, http(s)). */ | ||
| url: string; | ||
| /** Resolve the bearer for the next connection attempt. */ | ||
| /** Resolve the bearer for the next connection attempt / re-auth. */ | ||
| resolveToken: () => Promise<string>; | ||
| /** | ||
| * The client's refresh-on-401 seam. Returns a fresh token (the loop | ||
| * resubscribes with it) or null when refresh isn't possible (the loop | ||
| * terminates with `VaultAuthError`). Absent = no refresh path. | ||
| * The client's refresh-on-auth-failure seam. Returns a fresh token (the loop | ||
| * re-auths / reconnects with it) or null when refresh isn't possible (the | ||
| * loop terminates with `VaultAuthError`). Absent = no refresh path. | ||
| */ | ||
| refreshToken?: (() => Promise<string | null>) | undefined; | ||
| fetchImpl: typeof fetch; | ||
| /** | ||
| * WebSocket constructor used to open the live socket. Defaults to the | ||
| * runtime's global `WebSocket` when omitted; when neither is available the | ||
| * subscription signals "live unavailable" (the consumer keeps polling). | ||
| * Injected in tests. | ||
| */ | ||
| webSocketImpl?: WebSocketCtor | undefined; | ||
| } | ||
| /** | ||
| * Run the subscription loop: connect → deliver events → reconnect with | ||
| * capped exponential backoff. Returns the unsubscribe function. See the | ||
| * module header for the full lifecycle contract; `VaultClient.subscribe()` | ||
| * is the consumer-facing wrapper. | ||
| */ | ||
| export declare function startSubscription(transport: SubscribeTransport, handlers: SubscribeHandlers, opts?: SubscribeOptions): () => void; | ||
| //# sourceMappingURL=subscribe.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"subscribe.d.ts","sourceRoot":"","sources":["../src/subscribe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE7C,qEAAqE;AACrE,MAAM,WAAW,QAAQ;IACvB,uEAAuE;IACvE,KAAK,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;CACd;AAED,gDAAgD;AAChD,MAAM,MAAM,eAAe;AACzB,6CAA6C;AAC3C,YAAY;AACd,uEAAuE;GACrE,MAAM;AACR,oEAAoE;GAClE,cAAc;AAChB,kEAAkE;GAChE,QAAQ,CAAC;AAEb,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,UAAU,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IACpC,yDAAyD;IACzD,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAC/B;;;OAGG;IACH,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IACjC,sDAAsD;IACtD,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;CAC9C;AAED,MAAM,WAAW,gBAAgB;IAC/B,6EAA6E;IAC7E,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,4CAA4C;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAKD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAuB,cAAc,CACnC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACjC,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,CAqD3C;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAkBrE;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,sEAAsE;IACtE,GAAG,EAAE,MAAM,CAAC;IACZ,0DAA0D;IAC1D,YAAY,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACpC;;;;OAIG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IAC1D,SAAS,EAAE,OAAO,KAAK,CAAC;CACzB;AAMD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,kBAAkB,EAC7B,QAAQ,EAAE,iBAAiB,EAC3B,IAAI,GAAE,gBAAqB,GAC1B,MAAM,IAAI,CA2KZ"} | ||
| {"version":3,"file":"subscribe.d.ts","sourceRoot":"","sources":["../src/subscribe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE7C,gDAAgD;AAChD,MAAM,MAAM,eAAe;AACzB,6CAA6C;AAC3C,YAAY;AACd,gFAAgF;GAC9E,MAAM;AACR,wEAAwE;GACtE,cAAc;AAChB,kEAAkE;GAChE,QAAQ,CAAC;AAEb,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,UAAU,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IACpC,yDAAyD;IACzD,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAC/B;;;OAGG;IACH,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IACjC,sDAAsD;IACtD,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;CAC9C;AAED,MAAM,WAAW,gBAAgB;IAC/B,6EAA6E;IAC7E,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,4CAA4C;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAkBrE;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5C,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IAEnC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IAEtC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IAEpC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;CACrC;AAED,mFAAmF;AACnF,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,EAAE,MAAM,KAAK,aAAa,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,+EAA+E;IAC/E,GAAG,EAAE,MAAM,CAAC;IACZ,oEAAoE;IACpE,YAAY,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACpC;;;;OAIG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IAC1D;;;;;OAKG;IACH,aAAa,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;CAC3C"} |
+18
-292
| /** | ||
| * Live-query SSE subscription — the client side of vault's | ||
| * `GET /vault/<name>/api/subscribe` (vault design | ||
| * `2026-06-08-live-query-sse.md`). Upstreamed from my-vault-ui's | ||
| * `src/vault/sse.ts` (which carried the literal comment "to be upstreamed | ||
| * as VaultClient.subscribe()"), redesigned around fetch-stream transport. | ||
| * Live-query subscription contract — the shared types + query guard for | ||
| * vault's `GET /vault/<name>/api/subscribe`. The **transport is WebSocket-only** | ||
| * ({@link ./ws-transport.ts}); `VaultClient.subscribe()` is the consumer API. | ||
| * | ||
| * The server sends one `snapshot` event (the currently-matching note set), | ||
| * then `upsert` / `remove` events as notes change, plus `:` comment | ||
| * keepalives every ~25s. The same query grammar as `GET /api/notes` | ||
| * applies, minus the shapes that can't be evaluated live (`search`, | ||
| * `near`, `cursor` — vault rejects them with 400; we reject them | ||
| * client-side before opening a stream). | ||
| * The server sends one `snapshot` (the currently-matching note set), then | ||
| * `upsert` / `remove` messages as notes change. The same query grammar as | ||
| * `GET /api/notes` applies, minus the shapes that can't be evaluated live | ||
| * (`search`, `near`, `cursor` — vault rejects them with 400; we reject them | ||
| * client-side, see {@link assertSubscribableQuery}). | ||
| * | ||
| * **Why fetch-stream, not EventSource.** `EventSource` cannot set request | ||
| * headers, which forces the bearer into a `?key=` query param — a token in | ||
| * proxy logs, browser history, and Referer headers. That was flagged as the | ||
| * design trap when this was upstreamed. We instead `fetch()` the stream | ||
| * with `Authorization: Bearer <token>` and parse the SSE wire format off | ||
| * the response `ReadableStream` ourselves ({@link parseSSEStream}). Bonus: | ||
| * fetch works identically in Bun/Node server contexts (no `EventSource` | ||
| * global needed), which matters because surface-host's `ScopedVaultClient` | ||
| * runs this server-side. | ||
| * **Live is an augmentation; polling is the floor.** There is no SSE fallback — | ||
| * SSE is being retired and the client never speaks it. When WS is unavailable | ||
| * the live subscription degrades to the consumer's polling cadence rather than | ||
| * erroring; see the `ws-transport.ts` header for the degradation model. | ||
| * | ||
| * **Reconnection model (self-correcting).** Vault's MVP has no | ||
| * `Last-Event-ID` replay: on reconnect the client simply re-subscribes and | ||
| * receives a **fresh snapshot**, which replaces the consumer's whole set — | ||
| * any events missed while disconnected are reconciled by the snapshot, so | ||
| * a dropped connection can never leave the consumer permanently stale. | ||
| * Reconnects use capped exponential backoff | ||
| * ({@link SubscribeOptions.initialBackoffMs} / `maxBackoffMs`). | ||
| * | ||
| * **Auth.** The token is resolved per connection attempt via the client's | ||
| * token resolution (static token or `tokenProvider`). A 401/403 on connect | ||
| * (including reconnect-after-token-expiry — the common case for ~15-min hub | ||
| * JWTs) drives the client's refresh-on-401 seam (`onAuthError`) once, then | ||
| * resubscribes with the fresh token. If refresh isn't possible (or the | ||
| * refreshed token is rejected too), the subscription terminates: | ||
| * `onError(VaultAuthError)` then `onStatus("closed")`. | ||
| * **Reconnection is self-correcting.** Vault has no event replay: a reconnect | ||
| * re-delivers a fresh snapshot that replaces the consumer's whole set, so a | ||
| * dropped connection can never leave the consumer permanently stale. Reconnects | ||
| * use capped exponential backoff ({@link SubscribeOptions.initialBackoffMs} / | ||
| * `maxBackoffMs`). | ||
| */ | ||
| import { VaultAuthError, VaultPermissionError, VaultServerError, VaultUnreachableError } from "./vault-client.js"; | ||
| const DEFAULT_INITIAL_BACKOFF_MS = 1_000; | ||
| const DEFAULT_MAX_BACKOFF_MS = 30_000; | ||
| /** | ||
| * Parse the SSE wire format off a `ReadableStream<Uint8Array>` (the | ||
| * response body of a `text/event-stream` fetch). Yields one | ||
| * {@link SSEEvent} per dispatched event. Implements the parts of the | ||
| * WHATWG SSE grammar the vault emits, faithfully: | ||
| * | ||
| * - `event:` names the next dispatch; resets after each dispatch. | ||
| * - `data:` lines accumulate; multi-line data joins with `\n`. | ||
| * - A blank line dispatches. Per spec, an event with an EMPTY data | ||
| * buffer is dropped (this is how `event:`-only frames behave). | ||
| * - Lines starting with `:` are comments (vault's keepalive) — ignored. | ||
| * - `id:` / `retry:` fields are tolerated and ignored (vault doesn't | ||
| * send them; reconnection here is snapshot-based, not cursor-based). | ||
| * - CRLF / CR line endings are normalized. | ||
| * | ||
| * Exported for direct use/testing; `VaultClient.subscribe()` is the | ||
| * consumer-facing API. | ||
| */ | ||
| export async function* parseSSEStream(stream) { | ||
| const reader = stream.getReader(); | ||
| const decoder = new TextDecoder(); | ||
| let buffer = ""; | ||
| let eventName = ""; | ||
| let dataLines = []; | ||
| const takeEvent = () => { | ||
| // Spec: empty data buffer → reset the event name, dispatch nothing. | ||
| if (dataLines.length === 0) { | ||
| eventName = ""; | ||
| return null; | ||
| } | ||
| const ev = { event: eventName || "message", data: dataLines.join("\n") }; | ||
| eventName = ""; | ||
| dataLines = []; | ||
| return ev; | ||
| }; | ||
| const handleLine = (line) => { | ||
| if (line === "") | ||
| return takeEvent(); | ||
| if (line.startsWith(":")) | ||
| return null; // comment / keepalive | ||
| const colon = line.indexOf(":"); | ||
| const field = colon === -1 ? line : line.slice(0, colon); | ||
| let value = colon === -1 ? "" : line.slice(colon + 1); | ||
| if (value.startsWith(" ")) | ||
| value = value.slice(1); | ||
| if (field === "event") | ||
| eventName = value; | ||
| else if (field === "data") | ||
| dataLines.push(value); | ||
| // id / retry / unknown fields: ignored. | ||
| return null; | ||
| }; | ||
| try { | ||
| while (true) { | ||
| const { done, value } = await reader.read(); | ||
| if (done) | ||
| break; | ||
| buffer += decoder.decode(value, { stream: true }); | ||
| // Normalize CRLF/CR → LF once per chunk, then emit complete lines. | ||
| buffer = buffer.replace(/\r\n/g, "\n").replace(/\r/g, "\n"); | ||
| let nl = buffer.indexOf("\n"); | ||
| while (nl !== -1) { | ||
| const line = buffer.slice(0, nl); | ||
| buffer = buffer.slice(nl + 1); | ||
| const ev = handleLine(line); | ||
| if (ev) | ||
| yield ev; | ||
| nl = buffer.indexOf("\n"); | ||
| } | ||
| } | ||
| // Stream ended; a trailing un-terminated line or un-dispatched event is | ||
| // dropped per spec (no final blank line = no dispatch). | ||
| } | ||
| finally { | ||
| reader.releaseLock(); | ||
| } | ||
| } | ||
| /** | ||
| * Query shapes vault's `/api/subscribe` rejects with 400 — checked | ||
| * client-side so a bad subscription throws synchronously instead of | ||
| * opening a doomed stream. Mirrors `parachute-vault/src/subscribe.ts`: | ||
| * opening a doomed connection. Mirrors `parachute-vault/src/subscribe.ts`: | ||
| * `search` (FTS) and `near` (graph BFS) can't be evaluated against a | ||
@@ -141,178 +43,2 @@ * single changed note; `cursor` (paging) is meaningless for a live set. | ||
| } | ||
| function isAbortError(err) { | ||
| return err instanceof DOMException && err.name === "AbortError"; | ||
| } | ||
| /** | ||
| * Run the subscription loop: connect → deliver events → reconnect with | ||
| * capped exponential backoff. Returns the unsubscribe function. See the | ||
| * module header for the full lifecycle contract; `VaultClient.subscribe()` | ||
| * is the consumer-facing wrapper. | ||
| */ | ||
| export function startSubscription(transport, handlers, opts = {}) { | ||
| const initialBackoffMs = opts.initialBackoffMs ?? DEFAULT_INITIAL_BACKOFF_MS; | ||
| const maxBackoffMs = opts.maxBackoffMs ?? DEFAULT_MAX_BACKOFF_MS; | ||
| const controller = new AbortController(); | ||
| let closed = false; | ||
| const emitStatus = (s) => { | ||
| try { | ||
| handlers.onStatus?.(s); | ||
| } | ||
| catch { | ||
| // A throwing status handler must not kill the loop. | ||
| } | ||
| }; | ||
| /** Idempotent terminal close — the ONLY place "closed" is emitted. */ | ||
| const close = () => { | ||
| if (closed) | ||
| return; | ||
| closed = true; | ||
| controller.abort(); | ||
| emitStatus("closed"); | ||
| }; | ||
| if (opts.signal) { | ||
| if (opts.signal.aborted) { | ||
| // Already aborted: never open a connection. Emit the terminal status | ||
| // for consistency with a post-open abort. | ||
| close(); | ||
| return close; | ||
| } | ||
| opts.signal.addEventListener("abort", close, { once: true }); | ||
| } | ||
| /** Abortable sleep — resolves early (without throwing) on unsubscribe. */ | ||
| const sleep = (ms) => new Promise((resolve) => { | ||
| const timer = setTimeout(() => { | ||
| controller.signal.removeEventListener("abort", onAbort); | ||
| resolve(); | ||
| }, ms); | ||
| const onAbort = () => { | ||
| clearTimeout(timer); | ||
| resolve(); | ||
| }; | ||
| controller.signal.addEventListener("abort", onAbort, { once: true }); | ||
| }); | ||
| const dispatch = (ev) => { | ||
| let parsed; | ||
| try { | ||
| parsed = JSON.parse(ev.data); | ||
| } | ||
| catch (err) { | ||
| // One malformed frame must not kill a healthy stream. | ||
| handlers.onError?.(err); | ||
| return; | ||
| } | ||
| const body = (parsed ?? {}); | ||
| if (ev.event === "snapshot") { | ||
| handlers.onSnapshot(Array.isArray(body.notes) ? body.notes : []); | ||
| } | ||
| else if (ev.event === "upsert") { | ||
| if (body.note && typeof body.note === "object") | ||
| handlers.onUpsert(body.note); | ||
| } | ||
| else if (ev.event === "remove") { | ||
| if (typeof body.id === "string") | ||
| handlers.onRemove(body.id); | ||
| } | ||
| // Unknown event names: ignored (forward compatibility). | ||
| }; | ||
| void (async () => { | ||
| let attempt = 0; // backoff exponent; reset on every successful open | ||
| let firstConnect = true; | ||
| // One refresh per consecutive-auth-failure streak: a 401 right after a | ||
| // successful refresh means the fresh token is ALSO rejected — terminate | ||
| // instead of spinning refresh→401→refresh forever. | ||
| let refreshedThisStreak = false; | ||
| while (!closed) { | ||
| emitStatus(firstConnect ? "connecting" : "reconnecting"); | ||
| firstConnect = false; | ||
| let res; | ||
| try { | ||
| const token = await transport.resolveToken(); | ||
| res = await transport.fetchImpl(transport.url, { | ||
| headers: { | ||
| Authorization: `Bearer ${token}`, | ||
| Accept: "text/event-stream", | ||
| }, | ||
| signal: controller.signal, | ||
| }); | ||
| } | ||
| catch (err) { | ||
| if (closed || isAbortError(err)) | ||
| return; | ||
| const message = err instanceof Error ? err.message : String(err); | ||
| handlers.onError?.(new VaultUnreachableError(`subscribe connect failed: ${message}`, 0)); | ||
| await sleep(Math.min(initialBackoffMs * 2 ** attempt, maxBackoffMs)); | ||
| attempt++; | ||
| continue; | ||
| } | ||
| if (res.status === 401 || res.status === 403) { | ||
| const bodyText = await res.text().catch(() => ""); | ||
| if (!refreshedThisStreak && transport.refreshToken) { | ||
| let fresh = null; | ||
| try { | ||
| fresh = await transport.refreshToken(); | ||
| } | ||
| catch { | ||
| fresh = null; | ||
| } | ||
| if (fresh !== null && !closed) { | ||
| refreshedThisStreak = true; | ||
| continue; // resubscribe immediately with the fresh token | ||
| } | ||
| } | ||
| // Unrecoverable: no refresh path, refresh failed, or the refreshed | ||
| // token was rejected too. | ||
| handlers.onError?.(res.status === 403 | ||
| ? new VaultPermissionError(`subscribe rejected (403)`, bodyText ? { body: bodyText } : {}) | ||
| : new VaultAuthError(`subscribe rejected (401)`, 401, bodyText ? { body: bodyText } : {})); | ||
| close(); | ||
| return; | ||
| } | ||
| if (res.status === 400) { | ||
| // Invalid/unsupported query — retrying can't heal it. | ||
| const bodyText = await res.text().catch(() => ""); | ||
| handlers.onError?.(new Error(`subscribe rejected (400): ${bodyText}`)); | ||
| close(); | ||
| return; | ||
| } | ||
| if (!res.ok || !res.body) { | ||
| // 5xx / 503-cap / bodyless response — transient; back off and retry. | ||
| // A non-auth response also ends any 401 streak: the next 401 gets a | ||
| // fresh refresh attempt. Deliberate consequence: 401→5xx→401 spends | ||
| // TWO refreshes — one per streak — because the intervening 5xx | ||
| // proves the second 401 is not "the refreshed token was rejected | ||
| // too"; the guard only caps refreshes per CONSECUTIVE auth-failure | ||
| // streak, which is what prevents a refresh→401→refresh spin. | ||
| refreshedThisStreak = false; | ||
| const bodyText = await res.text().catch(() => ""); | ||
| handlers.onError?.(new VaultServerError(`subscribe → ${res.status}`, res.status, bodyText || undefined)); | ||
| await sleep(Math.min(initialBackoffMs * 2 ** attempt, maxBackoffMs)); | ||
| attempt++; | ||
| continue; | ||
| } | ||
| // ---- Stream open ---- | ||
| attempt = 0; | ||
| refreshedThisStreak = false; | ||
| emitStatus("open"); | ||
| try { | ||
| for await (const ev of parseSSEStream(res.body)) { | ||
| if (closed) | ||
| return; | ||
| dispatch(ev); | ||
| } | ||
| // Server closed the stream — treat as transient; the reconnect's | ||
| // fresh snapshot reconciles anything missed. | ||
| } | ||
| catch (err) { | ||
| if (closed || isAbortError(err)) | ||
| return; | ||
| handlers.onError?.(err); | ||
| } | ||
| if (closed) | ||
| return; | ||
| await sleep(Math.min(initialBackoffMs * 2 ** attempt, maxBackoffMs)); | ||
| attempt++; | ||
| } | ||
| })(); | ||
| return close; | ||
| } | ||
| //# sourceMappingURL=subscribe.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"subscribe.js","sourceRoot":"","sources":["../src/subscribe.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"subscribe.js","sourceRoot":"","sources":["../src/subscribe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AA6DH;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAuB;IAC7D,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,SAAS,CACjB,iHAAiH,CAClH,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAChC,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,SAAS,CACjB,+HAA+H,CAChI,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,SAAS,CACjB,2HAA2H,CAC5H,CAAC;IACJ,CAAC;AACH,CAAC"} |
+2
-1
@@ -12,3 +12,4 @@ /** | ||
| * OAuth scope strings are whitespace-separated lists per RFC 6749 §3.3. | ||
| * The vocabulary follows `parachute-patterns/oauth-scopes.md` — | ||
| * The vocabulary follows the hub's oauth-scopes contract | ||
| * (https://github.com/ParachuteComputer/parachute-hub/blob/main/docs/contracts/oauth-scopes.md) — | ||
| * `<service>:<verb>` (`vault:read vault:write`). Type stays open: the | ||
@@ -15,0 +16,0 @@ * parser is liberal; unknown scopes pass through. |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAEhC;;;GAGG;AACH,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB,EAAE,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,wBAAwB,EAAE,MAAM,EAAE,CAAC;IACnC,gCAAgC,EAAE,MAAM,EAAE,CAAC;IAC3C,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,qCAAqC,EAAE,MAAM,EAAE,CAAC;IAChD,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAAC;CAChD;AAED,wEAAwE;AACxE,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,QAAQ,CAAC;IACrB,KAAK,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,UAAU,CAAC;IAClB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wEAAwE;AACxE,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,UAAU,CAAC;IAClB;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB"} | ||
| {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAEhC;;;GAGG;AACH,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB,EAAE,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,wBAAwB,EAAE,MAAM,EAAE,CAAC;IACnC,gCAAgC,EAAE,MAAM,EAAE,CAAC;IAC3C,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,qCAAqC,EAAE,MAAM,EAAE,CAAC;IAChD,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAAC;CAChD;AAED,wEAAwE;AACxE,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,QAAQ,CAAC;IACrB,KAAK,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,UAAU,CAAC;IAClB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wEAAwE;AACxE,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,UAAU,CAAC;IAClB;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB"} |
+31
-15
@@ -41,3 +41,3 @@ /** | ||
| import { type NotesQueryInput } from "./notes-query.js"; | ||
| import { type SubscribeHandlers, type SubscribeOptions } from "./subscribe.js"; | ||
| import { type SubscribeHandlers, type SubscribeOptions, type WebSocketCtor } from "./subscribe.js"; | ||
| import type { CreateNotePayload, FindPathResult, Note, NoteAttachment, ReachabilitySignal, StorageUploadResult, TagRecord, TagSummary, TagUpsertPayload, UpdateNotePayload, UploadProgress, VaultInfo } from "./vault-types.js"; | ||
@@ -210,2 +210,9 @@ /** | ||
| onReachability?: (signal: ReachabilitySignal, reason?: string) => void; | ||
| /** | ||
| * WebSocket constructor for {@link VaultClient.subscribe}'s live transport. | ||
| * Defaults to the runtime global `WebSocket`; when neither exists the | ||
| * subscription signals "live unavailable" and the consumer keeps polling. | ||
| * Primarily a test seam. | ||
| */ | ||
| webSocketImpl?: WebSocketCtor; | ||
| } | ||
@@ -228,2 +235,3 @@ export declare class VaultClient { | ||
| private readonly onReachability?; | ||
| private readonly webSocketImpl?; | ||
| constructor(opts: VaultClientOptions); | ||
@@ -336,8 +344,15 @@ /** | ||
| /** | ||
| * Live-query subscription over vault's `GET /api/subscribe` SSE endpoint | ||
| * (vault's live-query SSE design, 2026-06-08). Delivers one | ||
| * `onSnapshot(notes)` — the complete matching set — then `onUpsert(note)` / | ||
| * `onRemove(id)` as notes enter/change/leave the set. Returns the | ||
| * unsubscribe function. | ||
| * Live-query subscription over vault's `GET /api/subscribe` endpoint. | ||
| * Delivers one `onSnapshot(notes)` — the complete matching set — then | ||
| * `onUpsert(note)` / `onRemove(id)` as notes enter/change/leave the set. | ||
| * Returns the unsubscribe function. | ||
| * | ||
| * - **Transport is WebSocket-only** (`ws-transport.ts`). A Hibernatable | ||
| * WebSocket lets an idle-but-open socket evict the cloud vault DO → ~$0 | ||
| * idle. There is **no SSE fallback** — SSE is being retired; when WS is | ||
| * unavailable (an old server without the binding, a WS-blocked network, or | ||
| * a drop) the subscription degrades to the consumer's **polling floor** | ||
| * (`isLive` stays false, no error UI, no hang) while a capped-backoff | ||
| * reconnect keeps trying in the background and re-establishes live the | ||
| * moment WS is reachable again. | ||
| * - **Query grammar** is the same as `queryNotes` (same server-side | ||
@@ -347,6 +362,7 @@ * parser), except `search`, `near`, and `cursor` are not | ||
| * vault would 400). | ||
| * - **Transport is fetch-stream, not EventSource** — the bearer rides | ||
| * the `Authorization` header instead of a `?key=` query param | ||
| * (no token in proxy logs / browser history), and the method works | ||
| * server-side (Bun/Node) where `EventSource` may not exist. | ||
| * - **Auth rides a first-message handshake, never a `?key=` query param** — | ||
| * browsers can't header-auth a socket, so the client sends | ||
| * `{type:"auth",token}` as the first frame and re-auths on the open socket | ||
| * when the token rotates (no reconnect, no re-snapshot). No token in proxy | ||
| * logs. | ||
| * - **Reconnects are self-correcting**: vault has no event replay, so a | ||
@@ -357,7 +373,7 @@ * reconnect re-delivers a *fresh snapshot* that replaces the | ||
| * {@link SubscribeOptions}). | ||
| * - **Auth expiry**: a 401/403 on (re)connect drives the client's | ||
| * `onAuthError` refresh seam once, then resubscribes with the fresh | ||
| * token (also rotated into the client). Unrecoverable auth → the | ||
| * subscription terminates with `onError(VaultAuthError)` + | ||
| * `onStatus("closed")`. | ||
| * - **Auth expiry**: a WS close 4401 (expired/revoked) drives the client's | ||
| * `onAuthError` refresh seam once, then reconnects with the fresh token | ||
| * (also rotated into the client). Unrecoverable auth → the subscription | ||
| * terminates with `onError(VaultAuthError)` + `onStatus("closed")` (and the | ||
| * consumer falls back to polling). | ||
| * | ||
@@ -364,0 +380,0 @@ * @example |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"vault-client.d.ts","sourceRoot":"","sources":["../src/vault-client.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"vault-client.d.ts","sourceRoot":"","sources":["../src/vault-client.ts"],"names":[],"mappings":"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"} |
+33
-20
@@ -41,3 +41,4 @@ /** | ||
| import { toNotesSearchParams } from "./notes-query.js"; | ||
| import { assertSubscribableQuery, startSubscription, } from "./subscribe.js"; | ||
| import { assertSubscribableQuery, } from "./subscribe.js"; | ||
| import { startWsSubscription } from "./ws-transport.js"; | ||
| /** | ||
@@ -188,2 +189,3 @@ * Common base class for every `VaultClient` error. | ||
| onReachability; | ||
| webSocketImpl; | ||
| constructor(opts) { | ||
@@ -213,2 +215,4 @@ if (opts.accessToken === undefined && opts.tokenProvider === undefined) { | ||
| this.onReachability = opts.onReachability; | ||
| if (opts.webSocketImpl !== undefined) | ||
| this.webSocketImpl = opts.webSocketImpl; | ||
| } | ||
@@ -514,8 +518,15 @@ /** | ||
| /** | ||
| * Live-query subscription over vault's `GET /api/subscribe` SSE endpoint | ||
| * (vault's live-query SSE design, 2026-06-08). Delivers one | ||
| * `onSnapshot(notes)` — the complete matching set — then `onUpsert(note)` / | ||
| * `onRemove(id)` as notes enter/change/leave the set. Returns the | ||
| * unsubscribe function. | ||
| * Live-query subscription over vault's `GET /api/subscribe` endpoint. | ||
| * Delivers one `onSnapshot(notes)` — the complete matching set — then | ||
| * `onUpsert(note)` / `onRemove(id)` as notes enter/change/leave the set. | ||
| * Returns the unsubscribe function. | ||
| * | ||
| * - **Transport is WebSocket-only** (`ws-transport.ts`). A Hibernatable | ||
| * WebSocket lets an idle-but-open socket evict the cloud vault DO → ~$0 | ||
| * idle. There is **no SSE fallback** — SSE is being retired; when WS is | ||
| * unavailable (an old server without the binding, a WS-blocked network, or | ||
| * a drop) the subscription degrades to the consumer's **polling floor** | ||
| * (`isLive` stays false, no error UI, no hang) while a capped-backoff | ||
| * reconnect keeps trying in the background and re-establishes live the | ||
| * moment WS is reachable again. | ||
| * - **Query grammar** is the same as `queryNotes` (same server-side | ||
@@ -525,6 +536,7 @@ * parser), except `search`, `near`, and `cursor` are not | ||
| * vault would 400). | ||
| * - **Transport is fetch-stream, not EventSource** — the bearer rides | ||
| * the `Authorization` header instead of a `?key=` query param | ||
| * (no token in proxy logs / browser history), and the method works | ||
| * server-side (Bun/Node) where `EventSource` may not exist. | ||
| * - **Auth rides a first-message handshake, never a `?key=` query param** — | ||
| * browsers can't header-auth a socket, so the client sends | ||
| * `{type:"auth",token}` as the first frame and re-auths on the open socket | ||
| * when the token rotates (no reconnect, no re-snapshot). No token in proxy | ||
| * logs. | ||
| * - **Reconnects are self-correcting**: vault has no event replay, so a | ||
@@ -535,7 +547,7 @@ * reconnect re-delivers a *fresh snapshot* that replaces the | ||
| * {@link SubscribeOptions}). | ||
| * - **Auth expiry**: a 401/403 on (re)connect drives the client's | ||
| * `onAuthError` refresh seam once, then resubscribes with the fresh | ||
| * token (also rotated into the client). Unrecoverable auth → the | ||
| * subscription terminates with `onError(VaultAuthError)` + | ||
| * `onStatus("closed")`. | ||
| * - **Auth expiry**: a WS close 4401 (expired/revoked) drives the client's | ||
| * `onAuthError` refresh seam once, then reconnects with the fresh token | ||
| * (also rotated into the client). Unrecoverable auth → the subscription | ||
| * terminates with `onError(VaultAuthError)` + `onStatus("closed")` (and the | ||
| * consumer falls back to polling). | ||
| * | ||
@@ -560,7 +572,7 @@ * @example | ||
| const s = qs.toString(); | ||
| return startSubscription({ | ||
| const transport = { | ||
| url: `${this.baseUrl}/api/subscribe${s ? `?${s}` : ""}`, | ||
| resolveToken: () => this.resolveToken(), | ||
| // Reuse the request path's refresh-on-401 seam; rotate the cached | ||
| // token the same way `requestWithRetry` does on a successful refresh. | ||
| // Reuse the request path's refresh-on-auth-failure seam; rotate the | ||
| // cached token the same way `requestWithRetry` does on a refresh. | ||
| refreshToken: this.onAuthError | ||
@@ -574,4 +586,5 @@ ? async () => { | ||
| : undefined, | ||
| fetchImpl: this.fetchImpl, | ||
| }, handlers, opts); | ||
| webSocketImpl: this.webSocketImpl, | ||
| }; | ||
| return startWsSubscription(transport, handlers, opts); | ||
| } | ||
@@ -578,0 +591,0 @@ async getNote(id, opts = {}) { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"vault-client.js","sourceRoot":"","sources":["../src/vault-client.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"vault-client.js","sourceRoot":"","sources":["../src/vault-client.ts"],"names":[],"mappings":"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"} |
@@ -18,5 +18,32 @@ /** | ||
| export type TagExpandMode = "subtypes" | "namespace" | "both" | "exact"; | ||
| /** | ||
| * Voice-transcription capability flag — whether the vault can actually | ||
| * transcribe audio, which is what a surface gates its mic affordance on. | ||
| * Distinct from the `auto_transcribe` POLICY toggle in vault config. | ||
| * | ||
| * Where each door serves it (they differ — verified 2026-07-03): | ||
| * - self-host vault: `GET /vault/<name>/api/vault` → | ||
| * `{ enabled, provider? }` (parachute-vault vault#529, | ||
| * `src/transcription/capability.ts`) | ||
| * - cloud vault: the BARE landing `GET /vault/<name>` → | ||
| * `{ enabled, minutes_remaining }` (parachute-cloud cloud#56, | ||
| * `workers/vault/src/vault-do.ts`); cloud's `/api/vault` does NOT | ||
| * carry it. | ||
| * | ||
| * Absent everywhere = an older vault that predates the flag — treat as | ||
| * "undeclared", not "disabled". | ||
| */ | ||
| export interface TranscriptionCapability { | ||
| /** True when the vault can transcribe (provider configured/plan entitled). */ | ||
| enabled: boolean; | ||
| /** Self-host: the active provider's name (e.g. "scribe-http"). Omitted when disabled. */ | ||
| provider?: string; | ||
| /** Cloud: monthly voice-minutes remaining on the plan meter (0 when disabled). */ | ||
| minutes_remaining?: number; | ||
| } | ||
| export interface VaultInfo { | ||
| name: string; | ||
| description: string; | ||
| /** Present on self-host vaults ≥ vault#529; absent on older vaults and on cloud's `/api/vault`. */ | ||
| transcription?: TranscriptionCapability; | ||
| stats?: { | ||
@@ -23,0 +50,0 @@ noteCount: number; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"vault-types.d.ts","sourceRoot":"","sources":["../src/vault-types.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"vault-types.d.ts","sourceRoot":"","sources":["../src/vault-types.ts"],"names":[],"mappings":"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"} |
@@ -1,2 +0,2 @@ | ||
| export declare const SURFACE_CLIENT_VERSION = "0.3.3"; | ||
| export declare const SURFACE_CLIENT_VERSION = "0.3.4"; | ||
| //# sourceMappingURL=version.d.ts.map |
+1
-1
| // AUTO-GENERATED by scripts/gen-version.ts — do not edit by hand. | ||
| // Source of truth: package.json "version". Regenerated on every build | ||
| // (prebuild). See #57 — keeps SURFACE_CLIENT_VERSION from drifting. | ||
| export const SURFACE_CLIENT_VERSION = "0.3.3"; | ||
| export const SURFACE_CLIENT_VERSION = "0.3.4"; | ||
| //# sourceMappingURL=version.js.map |
+1
-1
| { | ||
| "name": "@openparachute/surface-client", | ||
| "version": "0.3.3", | ||
| "version": "0.3.4", | ||
| "description": "Shared browser-side library for Parachute apps \u2014 OAuth (PKCE + DCR), vault REST client, token storage, service-worker reload helper, vault-id + runtime tenancy helpers.", | ||
@@ -5,0 +5,0 @@ "license": "AGPL-3.0", |
483122
4.38%72
5.88%6347
4.17%12
-7.69%