@rindle/api-server 0.7.12 → 0.9.0

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streams.js","sourceRoot":"","sources":["../src/streams.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rindle/api-server",
3
- "version": "0.7.12",
3
+ "version": "0.9.0",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
@@ -25,22 +25,24 @@
25
25
  "README.md"
26
26
  ],
27
27
  "dependencies": {
28
- "@rindle/client": "0.7.12",
29
- "@rindle/daemon-client": "0.7.12",
30
- "@rindle/query-compiler": "0.7.12",
31
- "@rindle/sql-client": "0.7.12"
28
+ "@rindle/client": "0.9.0",
29
+ "@rindle/daemon-client": "0.9.0",
30
+ "@rindle/query-compiler": "0.9.0",
31
+ "@rindle/sql-client": "0.9.0"
32
32
  },
33
33
  "optionalDependencies": {
34
- "@rindle/room": "0.7.12"
34
+ "@rindle/room": "0.9.0"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@types/node": "^22.10.0",
38
+ "fast-check": "^4.9.0",
38
39
  "typescript": "^5.7.0"
39
40
  },
40
41
  "scripts": {
41
42
  "build": "tsc -p tsconfig.build.json",
42
43
  "typecheck": "tsc --noEmit",
43
44
  "test": "tsc --noEmit && node --conditions=@rindle/source --test test/*.test.ts",
45
+ "test:pbt": "node --conditions=@rindle/source --test test/streams.property.test.ts",
44
46
  "test:rust-daemon": "node --conditions=@rindle/source test/session.e2e.mjs"
45
47
  }
46
48
  }
package/src/index.ts CHANGED
@@ -74,6 +74,22 @@ import {
74
74
  splitRoomDoc,
75
75
  } from "./rooms.ts";
76
76
  import type { RoomProfile, RoomScopeSpec, RoomTableSpec } from "./rooms.ts";
77
+ import {
78
+ STREAM_SSE_HEADERS,
79
+ StreamForbidden,
80
+ StreamPlane,
81
+ resolveStreamColumns,
82
+ streamFramesToSse,
83
+ streamRequestFromHttp,
84
+ } from "./streams.ts";
85
+ import type {
86
+ OpenStreamInput,
87
+ RindleStreamOptions,
88
+ StreamHandle,
89
+ StreamSubscription,
90
+ StreamTables,
91
+ SubscribeStreamInput,
92
+ } from "./streams.ts";
77
93
  // The room lease token (RINDLE-REALTIME §10.1): minted here, verified by the room SHELL against
78
94
  // its `downstream.tokenKeys` ring — the `/token` subpath is pure WebCrypto (no wasm, no shell).
79
95
  // Loaded LAZILY at the first mint: `@rindle/room` is an OPTIONAL dependency (see package.json), so
@@ -107,6 +123,40 @@ export { queryRealtimeLabel, queryResultToAst } from "./rooms.ts";
107
123
  export type { RoomProfile, RoomScopeSpec, RoomTableSpec } from "./rooms.ts";
108
124
  export type { RealtimeQueryLabel } from "@rindle/client";
109
125
 
126
+ // The LM stream plane (designs/LM-STREAM-CHECKPOINT-DESIGN.md): a model response runs on two planes
127
+ // — every delta straight to subscribers, one chunk row per coarse checkpoint to the app's tables —
128
+ // joined by one monotone `seq`. The plane itself (`StreamPlane`) stays internal; the api-server owns
129
+ // it and feeds it the backend's outside-transaction SQL surface (checkpoints are SYSTEM writes: no
130
+ // clientID, no mid, no lmid).
131
+ export {
132
+ STREAM_SSE_HEADERS,
133
+ STREAM_STATUS_STREAMING,
134
+ StreamOpenRefused,
135
+ assembleDurableText,
136
+ frameResumePoint,
137
+ spliceStreamText,
138
+ streamChunkId,
139
+ streamChunkTableDdl,
140
+ streamFramesToSse,
141
+ streamRequestFromHttp,
142
+ } from "./streams.ts";
143
+ export type {
144
+ AuthorizeStreamInput,
145
+ OpenStreamInput,
146
+ RindleStreamOptions,
147
+ StreamCheckpointPolicy,
148
+ StreamCheckpointTarget,
149
+ StreamColumns,
150
+ StreamCommit,
151
+ StreamCommitInput,
152
+ StreamFrame,
153
+ StreamHandle,
154
+ StreamStatus,
155
+ StreamSubscription,
156
+ StreamTables,
157
+ SubscribeStreamInput,
158
+ } from "./streams.ts";
159
+
110
160
  export const DEFAULT_RINDLE_API_ROUTES = {
111
161
  query: "/api/rindle/query",
112
162
  read: "/api/rindle/read",
@@ -118,6 +168,9 @@ export const DEFAULT_RINDLE_API_ROUTES = {
118
168
  roomLmids: "/api/rindle/room-lmids",
119
169
  // The DO shell's cold-boot callback (§10.1) — active only when `realtime` is configured.
120
170
  roomBoot: "/api/rindle/room-boot",
171
+ // The LM stream subscribe leg (LM-STREAM-CHECKPOINT §4) — active only when `streams` is
172
+ // configured. GET + `EventSource` is the intended shape (`Last-Event-ID` IS the resume offset).
173
+ stream: "/api/rindle/stream",
121
174
  } as const;
122
175
 
123
176
  export type MaybePromise<T> = T | PromiseLike<T>;
@@ -170,7 +223,12 @@ export interface MutationContext<User> {
170
223
  export interface ServerSql {
171
224
  /** Queue/execute one statement. A transaction-bound call commits with the surrounding mutation. */
172
225
  execute(sql: string, params?: readonly WireValue[]): Promise<void>;
173
- /** Queue/execute an ordered statement batch. An empty batch is a no-op. */
226
+ /** Queue/execute an ordered statement batch. An empty batch is a no-op. On an
227
+ * outside-transaction surface ({@link MutationScope.sql}, `backend.outsideSql`) the batch MUST
228
+ * execute as ONE atomic transaction — all statements or none. Every built-in backend does (the
229
+ * daemon's `execute-sql-txn`, the sql-client's `/v1/sql/batch`, the Postgres plugger's
230
+ * BEGIN/COMMIT); a custom backend that loops statements without a transaction silently breaks
231
+ * the stream plane's chunk+CAS and compaction invariants, which ride single `batch` calls. */
174
232
  batch(statements: readonly SqlStatement[]): Promise<void>;
175
233
  /** Run a read and return rows keyed by their column names. */
176
234
  query<Row = Record<string, unknown>>(sql: string, params?: readonly WireValue[]): Promise<Row[]>;
@@ -261,8 +319,27 @@ export interface MutationScope {
261
319
  *
262
320
  * A THROW from the body that is not a {@link BackendError} is a BUSINESS rejection: the data rolls
263
321
  * back, `lmid` advances alone, and this method throws {@link MutationRejected} (so surrounding
264
- * code can compensate). A {@link BackendError} is INFRA: it propagates (the client retries). */
265
- transact(run: (tx: ServerMutationTx) => void | Promise<void>): Promise<void>;
322
+ * code can compensate). A {@link BackendError} is INFRA: it propagates (the client retries).
323
+ *
324
+ * **The callback form RETURNS ITS BODY'S VALUE**, and only on the committed path — a rejection
325
+ * throws, so there is never a value to act on for a transaction that rolled back. That is what
326
+ * lets a post-commit effect be decided by a TRANSACTIONAL read instead of a second, racy one
327
+ * afterwards:
328
+ *
329
+ * ```ts
330
+ * const kick = await scope.transact(async (tx) => {
331
+ * const prior = await tx.row("message", { id: a.assistantMessageId });
332
+ * if (prior) return undefined; // a replayed envelope — do NOT re-fire the effect
333
+ * tx.insert("message", …);
334
+ * return { streamId: a.assistantMessageId, history: await readHistory(tx, a.chatId) };
335
+ * });
336
+ * if (kick) void startGeneration(kick); // committed, and decided against committed state
337
+ * ```
338
+ *
339
+ * A tx-form mutator cannot do this: its return value is already the logical-write channel
340
+ * ({@link ApiMutatorResult}). A post-commit effect chosen by a transactional read is exactly what
341
+ * the scoped form is for. */
342
+ transact<T>(run: (tx: ServerMutationTx) => T | Promise<T>): Promise<T>;
266
343
  transact<A, C extends MutatorCtx>(mutator: SharedMutator<A, C>, args: A, ctx: C): Promise<void>;
267
344
  }
268
345
 
@@ -534,6 +611,7 @@ export interface RindleApiRoutes {
534
611
  claimRoomEpoch: string;
535
612
  roomLmids: string;
536
613
  roomBoot: string;
614
+ stream: string;
537
615
  }
538
616
 
539
617
  /** A room-host reply the transport writes VERBATIM (`status` + JSON `body`): the
@@ -880,6 +958,11 @@ export interface RindleApiServerOptions<User> {
880
958
  * Presence activates the room flush trio AND `/room-boot`; absence keeps every room
881
959
  * endpoint 403. Takes precedence over the deprecated {@link authorizeRoom}. */
882
960
  realtime?: RindleRealtimeOptions<User>;
961
+ /** The LM stream plane (LM-STREAM-CHECKPOINT-DESIGN.md): the ONE named opt-in for streaming a
962
+ * model response live while the durable store only ever sees coarse checkpoints. Presence
963
+ * activates {@link RindleApiServer.openStream}/{@link RindleApiServer.subscribeStream} and
964
+ * `/stream`; absence keeps them 403. */
965
+ streams?: RindleStreamOptions<User>;
883
966
  /** The room write-authority gate (§5.3.1): validates the caller is a placed room —
884
967
  * the epoch-bound flush credential rides `context.request`, and what it means is
885
968
  * the app's to define. The room endpoints are DISABLED (403) until this is set:
@@ -934,9 +1017,37 @@ export interface RindleApiServerOptions<User> {
934
1017
 
935
1018
  export interface RindleApiServer<User> {
936
1019
  readonly routes: RindleApiRoutes;
937
- /** Close the SQL client created from {@link RindleApiServerOptions.database}. Injected SQL
938
- * sessions and custom backends remain caller-owned. Idempotent. */
1020
+ /** Close the SQL client created from {@link RindleApiServerOptions.database}, and drop every live
1021
+ * stream's readers and timers WITHOUT a durable write (that is {@link drainStreams}). Injected
1022
+ * SQL sessions and custom backends remain caller-owned. Idempotent. */
939
1023
  close(): void;
1024
+ /** Open an LM stream (LM-STREAM-CHECKPOINT §2): commits the durable POINTER row, then hands back
1025
+ * the producer handle. A resolved handle means the message already exists for every client's
1026
+ * query — so a subscriber that arrives before the first token has something to attach to.
1027
+ * Throws 403 unless {@link RindleApiServerOptions.streams} is configured. */
1028
+ openStream(input: OpenStreamInput<User>): Promise<StreamHandle>;
1029
+ /** Attach a reader at `from` — the same call serves a first-touch subscriber (`from: 0`), a late
1030
+ * joiner (`from` = the seq its IVM view shows), and a reconnect (`from` = `Last-Event-ID`).
1031
+ * Terminates with `end`, or with `stale`/`absent` when the client should fall back to the
1032
+ * durable plane (both are ordinary answers, never errors). */
1033
+ subscribeStream(input: SubscribeStreamInput<User>): Promise<StreamSubscription>;
1034
+ /** Parse a default `{streamId, from?}` subscribe body and run {@link subscribeStream}. For the
1035
+ * GET + `EventSource` shape, use {@link streamResponse} (or build the body with
1036
+ * `streamRequestFromHttp(request)` yourself). */
1037
+ handleStreamJson(body: unknown, context: ApiContext<User>): Promise<StreamSubscription>;
1038
+ /** The subscribe route in ONE call: parse a GET (`?streamId=…&from=…`, with `Last-Event-ID`
1039
+ * winning), authorize + subscribe, and encode the SSE response. A refusal comes back as a JSON
1040
+ * error `Response` (403 for denied or unconfigured) rather than a throw, so the route body is a
1041
+ * single expression after authentication. For custom transports, compose
1042
+ * `streamRequestFromHttp` + {@link subscribeStream} + `streamFramesToSse` instead. */
1043
+ streamResponse(
1044
+ request: { url: string; headers: { get(name: string): string | null } },
1045
+ context: ApiContext<User> & { keepAliveMs?: number },
1046
+ ): Promise<Response>;
1047
+ /** Checkpoint every live stream's outstanding tail, then seal it `interrupted`
1048
+ * (LM-STREAM-CHECKPOINT §5). Wire it to SIGTERM: without it a rolling deploy drops each
1049
+ * response's un-checkpointed tail and strands rows saying `streaming` forever. */
1050
+ drainStreams(): Promise<void>;
940
1051
  createQueryLease(input: QueryLeaseRequest<User>): Promise<QueryLeaseResponse>;
941
1052
  /** (Re-)materialize every `pinnedQueries` entry with a pinned policy. Idempotent — the daemon
942
1053
  * dedupes by canonical query, so a re-assert reuses the existing materialization. Call it at
@@ -2478,10 +2589,10 @@ class MutationScopeImpl implements MutationScope {
2478
2589
  }
2479
2590
 
2480
2591
  transact(
2481
- first: SharedMutator<any, any> | ((tx: ServerMutationTx) => void | Promise<void>),
2592
+ first: SharedMutator<any, any> | ((tx: ServerMutationTx) => unknown),
2482
2593
  args?: unknown,
2483
2594
  ctx?: MutatorCtx,
2484
- ): Promise<void> {
2595
+ ): Promise<any> {
2485
2596
  if (this.attempted) throw new Error("scope.transact may be called at most once per mutation");
2486
2597
  this.attempted = true;
2487
2598
  const promise = this.drive(first, args, ctx);
@@ -2496,17 +2607,20 @@ class MutationScopeImpl implements MutationScope {
2496
2607
  }
2497
2608
 
2498
2609
  private async drive(
2499
- first: SharedMutator<any, any> | ((tx: ServerMutationTx) => void | Promise<void>),
2610
+ first: SharedMutator<any, any> | ((tx: ServerMutationTx) => unknown),
2500
2611
  args?: unknown,
2501
2612
  ctx?: MutatorCtx,
2502
- ): Promise<void> {
2613
+ ): Promise<unknown> {
2614
+ // The callback form's return value, captured INSIDE the transaction and handed back only below,
2615
+ // after the commit is confirmed accepted — so a value can never describe work that rolled back.
2616
+ let value: unknown;
2503
2617
  // A shared (generator) mutator is driven via the isomorphic seam; a plain callback gets the raw tx.
2504
2618
  const run = isGeneratorMutator(first)
2505
2619
  ? async (tx: ServerMutationTx) => {
2506
2620
  await runSharedMutation(first as SharedMutator<unknown, MutatorCtx>, args, ctx as MutatorCtx, tx);
2507
2621
  }
2508
2622
  : async (tx: ServerMutationTx) => {
2509
- await (first as (tx: ServerMutationTx) => void | Promise<void>)(tx);
2623
+ value = await (first as (tx: ServerMutationTx) => unknown)(tx);
2510
2624
  };
2511
2625
  let outcome: MutationOutcome;
2512
2626
  try {
@@ -2518,6 +2632,7 @@ class MutationScopeImpl implements MutationScope {
2518
2632
  }
2519
2633
  this.outcome = outcome;
2520
2634
  if (!outcome.accepted) throw new MutationRejected(outcome.reason);
2635
+ return value;
2521
2636
  }
2522
2637
  }
2523
2638
 
@@ -3305,14 +3420,87 @@ export function createRindleApiServer<User = unknown>(options: RindleApiServerOp
3305
3420
  throw e;
3306
3421
  };
3307
3422
 
3423
+ // The LM stream plane (LM-STREAM-CHECKPOINT §2). Checkpoints are SYSTEM writes — no clientID, no
3424
+ // mid, no `lmid` advance (that exists to release a CLIENT's optimistic rebase point, and a
3425
+ // server-authored checkpoint has no prediction to release) — so they ride the backend's
3426
+ // outside-transaction SQL surface, whose `batch` is one transaction on every backend. CDC → IVM
3427
+ // fanout happens on any write; it never needed an envelope.
3428
+ if (opts.streams && "tables" in opts.streams.checkpoint) {
3429
+ assertStreamTables(opts.streams.checkpoint.tables, opts.schema);
3430
+ }
3431
+ const streamPlane = opts.streams
3432
+ ? new StreamPlane<User>(
3433
+ opts.streams,
3434
+ backend.outsideSql ? { dialect: backend.dialect, sql: backend.outsideSql } : undefined,
3435
+ )
3436
+ : undefined;
3437
+ const streams = (): StreamPlane<User> => {
3438
+ if (!streamPlane) throw new RindleApiError("forbidden", "streams not configured", 403);
3439
+ return streamPlane;
3440
+ };
3441
+ // The plane's own refusal, translated at the seam (it stays free of the server's error type so
3442
+ // `streams.ts` can be imported without the server — no cycle).
3443
+ const streamForbidden = (e: unknown): never => {
3444
+ if (e instanceof StreamForbidden) throw new RindleApiError("forbidden", "rindle request forbidden", 403);
3445
+ throw e;
3446
+ };
3447
+
3308
3448
  return {
3309
3449
  routes,
3310
- close: () => ownedSql?.close(),
3450
+ close: () => {
3451
+ streamPlane?.closeSync();
3452
+ ownedSql?.close();
3453
+ },
3311
3454
  createQueryLease,
3312
3455
  readQuery,
3313
3456
  assertPins,
3314
3457
  pushMutation,
3315
3458
  pushMutations,
3459
+ // `async` throughout so a misconfiguration surfaces as a REJECTION like every other refusal on
3460
+ // this interface, never as a synchronous throw the transport forgot to catch.
3461
+ openStream: async (input) => streams().open(input),
3462
+ subscribeStream: async (input) => streams().subscribe(input).catch(streamForbidden),
3463
+ drainStreams: async () => streamPlane?.drainStreams(),
3464
+ handleStreamJson: async (body, context) => {
3465
+ const msg = parseObject(body, "stream request");
3466
+ const from = msg.from === undefined ? undefined : parseNumber(msg.from, "from");
3467
+ // A non-negative INTEGER, like the GET leg's clamp: a fractional `from` would yield a replay
3468
+ // chunk whose `text.length !== seq - from`, breaking the frame invariant on the client.
3469
+ if (from !== undefined && (!Number.isInteger(from) || from < 0)) {
3470
+ throw new RindleApiError("bad-request", "invalid from", 400);
3471
+ }
3472
+ return streams()
3473
+ .subscribe({
3474
+ user: context.user,
3475
+ streamId: parseString(msg.streamId, "streamId"),
3476
+ ...(from !== undefined ? { from } : {}),
3477
+ request: context.request,
3478
+ })
3479
+ .catch(streamForbidden);
3480
+ },
3481
+ streamResponse: async (request, context) => {
3482
+ try {
3483
+ const { streamId, from } = streamRequestFromHttp(request);
3484
+ const sub = await streams()
3485
+ .subscribe({ user: context.user, streamId, from, request: context.request ?? request })
3486
+ .catch(streamForbidden);
3487
+ const sse = streamFramesToSse(
3488
+ sub,
3489
+ context.keepAliveMs !== undefined ? { keepAliveMs: context.keepAliveMs } : undefined,
3490
+ );
3491
+ return new Response(sse, { headers: STREAM_SSE_HEADERS });
3492
+ } catch (e) {
3493
+ // The route helper OWNS the transport, so refusals become responses here rather than
3494
+ // throws the route forgot to catch. The generic body never reveals stream existence.
3495
+ if (e instanceof RindleApiError) {
3496
+ return new Response(JSON.stringify({ error: e.message }), {
3497
+ status: e.status,
3498
+ headers: { "content-type": "application/json" },
3499
+ });
3500
+ }
3501
+ throw e;
3502
+ }
3503
+ },
3316
3504
  handleApplyRowChangeTxnJson: async (body, context) => {
3317
3505
  await roomGate(context);
3318
3506
  const msg = parseObject(body, "row-change txn");
@@ -3509,6 +3697,55 @@ function applyResultToTx(result: ApiMutatorResult, tx: ServerMutationTx): void {
3509
3697
  }
3510
3698
  }
3511
3699
 
3700
+ /**
3701
+ * The stream table mapping, checked LOUDLY at construction (the room-profile rule — a misconfigured
3702
+ * mapping should fail the deploy, not a 3am generation). Only checkable when a `schema` is
3703
+ * configured; without one the plane's SQL fails at the first checkpoint like any other unschema'd
3704
+ * write. The message table is the APP's, so only the three-to-five columns the plane touches are
3705
+ * asserted — never its shape.
3706
+ */
3707
+ function assertStreamTables(tables: StreamTables, schema: Schema | undefined): void {
3708
+ if (!schema) return;
3709
+ const c = resolveStreamColumns(tables.columns);
3710
+ const columnsOf = (table: string): Set<string> | undefined => {
3711
+ const meta = (schema.tables as Record<string, { columns?: Record<string, unknown> }> | undefined)?.[table];
3712
+ return meta?.columns ? new Set(Object.keys(meta.columns)) : undefined;
3713
+ };
3714
+ const check = (table: string, needed: Array<[string, string]>): void => {
3715
+ const cols = columnsOf(table);
3716
+ if (!cols) {
3717
+ throw new TypeError(
3718
+ `streams.checkpoint.tables names "${table}", which is not in the configured schema — add it (and run its ` +
3719
+ `migration; \`streamChunkTableDdl\` generates the chunk table's DDL)`,
3720
+ );
3721
+ }
3722
+ for (const [role, name] of needed) {
3723
+ if (!cols.has(name)) {
3724
+ throw new TypeError(
3725
+ `streams.checkpoint.tables: "${table}" has no column "${name}" (the ${role} column) — ` +
3726
+ `add it, or point \`columns.${role}\` at the one you have. Known columns: ${[...cols].join(", ")}`,
3727
+ );
3728
+ }
3729
+ }
3730
+ };
3731
+ check(tables.message, [
3732
+ ["key", c.key],
3733
+ ["body", c.body],
3734
+ ["status", c.status],
3735
+ ["seq", c.seq],
3736
+ // `cancel`/`error`/`host` are opt-in BY NAMING — present here only when the app asked for them.
3737
+ ...(c.cancel !== undefined ? ([["cancel", c.cancel]] as Array<[string, string]>) : []),
3738
+ ...(c.error !== undefined ? ([["error", c.error]] as Array<[string, string]>) : []),
3739
+ ...(c.host !== undefined ? ([["host", c.host]] as Array<[string, string]>) : []),
3740
+ ]);
3741
+ check(tables.chunks, [
3742
+ ["chunkKey", c.chunkKey],
3743
+ ["chunkStream", c.chunkStream],
3744
+ ["chunkSeq", c.chunkSeq],
3745
+ ["chunkText", c.chunkText],
3746
+ ]);
3747
+ }
3748
+
3512
3749
  async function assertAuthorized<T>(authorizer: Authorizer<T> | undefined, input: T): Promise<void> {
3513
3750
  if (!authorizer) return;
3514
3751
  const result = await authorizer(input);