@substrat-run/kernel 0.120.0 → 0.122.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.
Files changed (45) hide show
  1. package/dist/index.d.ts +11 -5
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +8 -4
  4. package/dist/index.js.map +1 -1
  5. package/dist/list-index.d.ts.map +1 -1
  6. package/dist/list-index.js +5 -2
  7. package/dist/list-index.js.map +1 -1
  8. package/dist/module-migrations.d.ts +26 -0
  9. package/dist/module-migrations.d.ts.map +1 -0
  10. package/dist/module-migrations.js +21 -0
  11. package/dist/module-migrations.js.map +1 -0
  12. package/dist/platform-call.d.ts +20 -0
  13. package/dist/platform-call.d.ts.map +1 -1
  14. package/dist/platform-call.js +24 -0
  15. package/dist/platform-call.js.map +1 -1
  16. package/dist/platform-sweep.d.ts +216 -4
  17. package/dist/platform-sweep.d.ts.map +1 -1
  18. package/dist/platform-sweep.js +648 -45
  19. package/dist/platform-sweep.js.map +1 -1
  20. package/dist/scope-host.d.ts +148 -5
  21. package/dist/scope-host.d.ts.map +1 -1
  22. package/dist/scope-host.js.map +1 -1
  23. package/dist/sql-limits.d.ts +70 -0
  24. package/dist/sql-limits.d.ts.map +1 -0
  25. package/dist/sql-limits.js +197 -0
  26. package/dist/sql-limits.js.map +1 -0
  27. package/dist/system-switch-record.d.ts +158 -0
  28. package/dist/system-switch-record.d.ts.map +1 -0
  29. package/dist/system-switch-record.js +227 -0
  30. package/dist/system-switch-record.js.map +1 -0
  31. package/dist/system-switch.d.ts +2 -2
  32. package/dist/system-switch.d.ts.map +1 -1
  33. package/dist/ulid.d.ts +6 -0
  34. package/dist/ulid.d.ts.map +1 -1
  35. package/dist/ulid.js +21 -7
  36. package/dist/ulid.js.map +1 -1
  37. package/dist/version-migrations.d.ts +108 -0
  38. package/dist/version-migrations.d.ts.map +1 -0
  39. package/dist/version-migrations.js +187 -0
  40. package/dist/version-migrations.js.map +1 -0
  41. package/dist/vertical-events.d.ts +96 -2
  42. package/dist/vertical-events.d.ts.map +1 -1
  43. package/dist/vertical-events.js +239 -4
  44. package/dist/vertical-events.js.map +1 -1
  45. package/package.json +2 -2
@@ -23,8 +23,9 @@
23
23
  * production builds them, and one definition is what keeps the two identical.
24
24
  * `lint:spine-ddl` holds each adapter to including it.
25
25
  */
26
- import { EXPORT_HOP_CAP, } from '@substrat-run/contracts';
26
+ import { EXPORT_HOP_CAP, substratError, } from '@substrat-run/contracts';
27
27
  import { domainEventOf } from './outbox-event.js';
28
+ import { ulidCeiling } from './ulid.js';
28
29
  export const VERTICAL_EVENTS_DDL = `
29
30
  -- #1705: every event this scope has received from another vertical. The envelope only, and
30
31
  -- never the payload. The producer's outbox keeps the one copy, where erasure already reaches.
@@ -68,6 +69,30 @@ export const VERTICAL_EVENTS_DDL = `
68
69
  -- every pass, for all the unexported activity since the last exported event. With it, the read
69
70
  -- seeks each type's range and costs what it returns.
70
71
  CREATE INDEX IF NOT EXISTS _substrat_outbox_type_id ON _substrat_outbox (type, id);
72
+ -- #1705 PR 3: what a REPLAY moved out of the live journal. A replay re-delivers events this
73
+ -- scope already took, and the live tables are also the dedupe (a row in _substrat_deliveries
74
+ -- means "do not run this handler again"). So the rows for the replayed range leave them. They
75
+ -- are moved here rather than dropped, because they are the record that a handler ran on an
76
+ -- event, when, and what it reported: evidence the spine keeps. One row per moved row, the
77
+ -- whole row as JSON under the replay that moved it. Nothing reads this to deliver.
78
+ -- ERASURE: today no erasure path touches imported copies, because only piiClass 'none' crosses
79
+ -- and the delivery-error rewrite (#1632) reaches only this scope's OWN outbox events. If a
80
+ -- consumer-side erasure of imported copies is ever added, it must reach \`row\` here too (a
81
+ -- moved delivery row's \`error\` is a handler's own sentence), or the history keeps what the
82
+ -- live tables gave up. Follow-up: #1757.
83
+ CREATE TABLE IF NOT EXISTS _substrat_import_replays (
84
+ -- The act (a ULID). The admin log's row for the replay carries the same id.
85
+ replay_id TEXT NOT NULL,
86
+ replayed_at TEXT NOT NULL,
87
+ source_scope_id TEXT NOT NULL,
88
+ -- 'journal': a _substrat_imports row. 'delivery': a _substrat_deliveries row.
89
+ kind TEXT NOT NULL,
90
+ event_id TEXT NOT NULL,
91
+ -- The handler's module on a 'delivery' row, and '' on a 'journal' row.
92
+ consumer_module TEXT NOT NULL,
93
+ row TEXT NOT NULL,
94
+ PRIMARY KEY (replay_id, kind, event_id, consumer_module)
95
+ );
71
96
  `;
72
97
  /**
73
98
  * The producer-side read: rows of the given types after the watermark, oldest first.
@@ -79,12 +104,17 @@ export const VERTICAL_EVENTS_DDL = `
79
104
  export function exportReadQuery(types, after, limit) {
80
105
  if (types.length === 0)
81
106
  throw new Error('exportReadQuery: no types to read');
82
- const placeholders = types.map(() => '?').join(', ');
107
+ // The types travel as ONE bound JSON array (#1776): a Durable Object binds at most 100
108
+ // parameters, and nothing caps how many event types a manifest exports. The plan depends on
109
+ // there being no table statistics: with none, this seeks `_substrat_outbox_type_id` as the
110
+ // old `IN (?, …)` did. After an ANALYZE, SQLite walks the primary key with a bloom filter
111
+ // instead. The platform runs neither ANALYZE nor `PRAGMA optimize`, but a module's `ctx.sql` can
112
+ // (#1787). Whoever adds one should recheck this plan (`adapter-cloudflare/test/do-sql-limits.test.ts` pins it).
83
113
  return {
84
- sql: `SELECT * FROM _substrat_outbox WHERE type IN (${placeholders})` +
114
+ sql: 'SELECT * FROM _substrat_outbox WHERE type IN (SELECT value FROM json_each(?))' +
85
115
  (after === null ? '' : ' AND id > ?') +
86
116
  ' ORDER BY id LIMIT ?',
87
- params: [...types, ...(after === null ? [] : [after]), limit],
117
+ params: [JSON.stringify(types), ...(after === null ? [] : [after]), limit],
88
118
  };
89
119
  }
90
120
  /**
@@ -216,6 +246,32 @@ export function exportsOf(manifests) {
216
246
  out.set(e.type, e);
217
247
  return out;
218
248
  }
249
+ /**
250
+ * The outbox's insertion mark (#1705 PR 2): the kick's "before", taken ahead of an invoke.
251
+ *
252
+ * `rowid`, not the event id. A ULID minted in the same millisecond as the newest row can sort
253
+ * BELOW it, so "ids above the newest id" can miss an event this invoke wrote. SQLite assigns a
254
+ * new row `max(rowid) + 1` while the newest row is still there. No code path deletes outbox rows
255
+ * inside an invoke: the only removals are a restore and a wipe, and they replace the whole table
256
+ * outside any invocation. So every row the invoke and its consumers add sits above the mark. If
257
+ * that ever stopped being true, the effect is bounded: an exported event would miss its kick and
258
+ * wait for the sweep, and no event would be lost or sent twice.
259
+ */
260
+ export const OUTBOX_MARK_SQL = 'SELECT COALESCE(MAX(rowid), 0) AS mark FROM _substrat_outbox';
261
+ /**
262
+ * How many rows of the exported `types` were added after `mark` (#1705 PR 2). This is the
263
+ * count `ScopeStubOptions.onExportedEvents` reports. A seek on the rowid, so it walks only
264
+ * what the invoke added. Callers skip it entirely when the deployment exports nothing.
265
+ */
266
+ export function exportedSinceQuery(types, mark) {
267
+ if (types.length === 0)
268
+ throw new Error('exportedSinceQuery: no types to count');
269
+ return {
270
+ // One bound JSON array, on `exportReadQuery`'s reasoning (#1776).
271
+ sql: 'SELECT COUNT(*) AS n FROM _substrat_outbox WHERE rowid > ? AND type IN (SELECT value FROM json_each(?))',
272
+ params: [mark, JSON.stringify(types)],
273
+ };
274
+ }
219
275
  /** The consumer's watermark per producer, oldest source first. */
220
276
  export const IMPORT_CURSORS_SQL = 'SELECT source_scope_id, source_vertical, cursor, updated_at FROM _substrat_import_cursors ORDER BY source_scope_id';
221
277
  /** One producer's watermark, for the compare-and-set a batch is applied under. */
@@ -248,6 +304,178 @@ export const IMPORT_RECORD_SQL = `
248
304
  entity_type, entity_id, hops, withheld, imported_at)
249
305
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
250
306
  `;
307
+ // -- the replay lever (#1705 PR 3) -----------------------------------------------------------
308
+ /**
309
+ * The producer end of the edge a lever moves, resolved by the sweep's own rule (#1705 PR 3).
310
+ *
311
+ * Both ends must be their tenant's one primary instance, exactly as `sweepEdge` requires. A
312
+ * watermark on any other pair is one no pass reads, so a move there would report success and
313
+ * change nothing. `resolve` is the directory's `resolveVerticalInstance`, and it takes the
314
+ * CONSUMER's tenant, so a producer in another tenant is not found rather than moved.
315
+ */
316
+ export async function importCursorSourceOf(resolve, consumer, from) {
317
+ if (consumer.vertical === null) {
318
+ throw substratError('precondition_failed', `scope ${consumer.scopeId} runs no vertical, so it imports nothing`);
319
+ }
320
+ if (from === consumer.vertical) {
321
+ throw substratError('precondition_failed', `'${from}' is this scope's own vertical — an edge names ANOTHER vertical`);
322
+ }
323
+ const [self, producer] = await Promise.all([resolve(consumer.tenantId, consumer.vertical), resolve(consumer.tenantId, from)]);
324
+ if (self.outcome !== 'resolved' || self.instance.scopeId !== consumer.scopeId) {
325
+ throw substratError('precondition_failed', `scope ${consumer.scopeId} is not its tenant's one primary instance of '${consumer.vertical}' — ` +
326
+ `a fork, a preview or a second install is no end of an edge`);
327
+ }
328
+ if (producer.outcome !== 'resolved') {
329
+ throw substratError(producer.outcome === 'not-installed' ? 'not_found' : 'precondition_failed', producer.outcome === 'not-installed'
330
+ ? `'${from}' is not installed in this tenant`
331
+ : `this tenant has more than one primary instance of '${from}' — the edge waits until one is chosen`);
332
+ }
333
+ return { vertical: from, scopeId: producer.instance.scopeId };
334
+ }
335
+ /**
336
+ * Copy the replayed range's delivery rows into `_substrat_import_replays`. Params: replay id,
337
+ * replayed at, source scope, after ('' = the whole history).
338
+ *
339
+ * The rows are the import handlers' own. An imported event is never in this scope's outbox,
340
+ * so no in-scope consumer ever journals one, and joining through `_substrat_imports` on the
341
+ * source names exactly this edge's rows.
342
+ */
343
+ const ARCHIVE_DELIVERIES_SQL = `
344
+ INSERT INTO _substrat_import_replays
345
+ (replay_id, replayed_at, source_scope_id, kind, event_id, consumer_module, row)
346
+ SELECT ?, ?, i.source_scope_id, 'delivery', d.event_id, d.consumer_module,
347
+ json_object('delivered_at', d.delivered_at, 'error', d.error, 'attempts', d.attempts,
348
+ 'next_attempt_at', d.next_attempt_at, 'invocation_id', d.invocation_id)
349
+ FROM _substrat_deliveries d
350
+ JOIN _substrat_imports i ON i.event_id = d.event_id
351
+ WHERE i.source_scope_id = ? AND i.event_id > ?
352
+ `;
353
+ /**
354
+ * What one replay moved aside, by kind: a seek on the table's key prefix over the rows just
355
+ * written. Counted from the rows rather than from a write's change count, because a Durable
356
+ * Object's `rowsWritten` counts index writes too, and the two adapters would then disagree.
357
+ */
358
+ const REPLAY_ARCHIVED_SQL = 'SELECT kind, COUNT(*) AS n FROM _substrat_import_replays WHERE replay_id = ? GROUP BY kind';
359
+ /** Copy the replayed range's journal rows. Params as `ARCHIVE_DELIVERIES_SQL`. */
360
+ const ARCHIVE_JOURNAL_SQL = `
361
+ INSERT INTO _substrat_import_replays
362
+ (replay_id, replayed_at, source_scope_id, kind, event_id, consumer_module, row)
363
+ SELECT ?, ?, source_scope_id, 'journal', event_id, '',
364
+ json_object('source_vertical', source_vertical, 'type', type, 'schema_version', schema_version,
365
+ 'occurred_at', occurred_at, 'entity_type', entity_type, 'entity_id', entity_id,
366
+ 'hops', hops, 'withheld', withheld, 'imported_at', imported_at)
367
+ FROM _substrat_imports
368
+ WHERE source_scope_id = ? AND event_id > ?
369
+ `;
370
+ /** Then clear them from the live tables. Deliveries first: their predicate reads the journal. */
371
+ const CLEAR_DELIVERIES_SQL = `
372
+ DELETE FROM _substrat_deliveries
373
+ WHERE event_id IN (SELECT event_id FROM _substrat_imports WHERE source_scope_id = ? AND event_id > ?)
374
+ `;
375
+ const CLEAR_JOURNAL_SQL = 'DELETE FROM _substrat_imports WHERE source_scope_id = ? AND event_id > ?';
376
+ /**
377
+ * Set a watermark to any value, backwards included. `IMPORT_CURSOR_ADVANCE_SQL` can only move
378
+ * it forward, and that is the delivery path's guard. The lever is the one writer allowed past it.
379
+ */
380
+ const CURSOR_SET_SQL = `
381
+ INSERT INTO _substrat_import_cursors (source_scope_id, source_vertical, cursor, updated_at)
382
+ VALUES (?, ?, ?, ?)
383
+ ON CONFLICT (source_scope_id) DO UPDATE SET
384
+ source_vertical = excluded.source_vertical,
385
+ cursor = excluded.cursor,
386
+ updated_at = excluded.updated_at
387
+ `;
388
+ /** "Never read": the absence of a row, which is how a new edge already reads. */
389
+ const CURSOR_CLEAR_SQL = 'DELETE FROM _substrat_import_cursors WHERE source_scope_id = ?';
390
+ /**
391
+ * Move one edge's watermark (#1705 PR 3). The adapter supplies the store (as the switches'
392
+ * `SwitchSql`), the transaction, the queue, the clock and the act's id. Run on the scope's own
393
+ * queue, so a pass delivering on the same edge can never interleave with the move. Everything the move decides is decided here, once, for
394
+ * both adapters.
395
+ *
396
+ * Why a bare rewind is not a replay. Three guards stand between an event and a second run of
397
+ * its handler, and a replay must pass each one on purpose:
398
+ *
399
+ * 1. `IMPORT_CURSOR_ADVANCE_SQL` moves the watermark forward only. The lever sets it here.
400
+ * 2. `_substrat_deliveries` holds a row per (event, module) that ran, and the delivery path
401
+ * skips any pair it finds. Rewound but not cleared, every replayed event would come back
402
+ * as a `duplicate` and nothing would run.
403
+ * 3. `_substrat_imports` is `INSERT OR IGNORE`. Left in place, an event first withheld for its
404
+ * version would stay recorded as withheld after the consumer's upgrade released it.
405
+ *
406
+ * So a replay moves the range's rows in (2) and (3) into `_substrat_import_replays` under
407
+ * `replayId`, then clears them, then sets the watermark. The evidence stays, and the live tables
408
+ * take the events again. Two things are true between the move and the redelivery, and are
409
+ * stated rather than hidden: a cause walk through a moved event's id ends at `missing`, and an
410
+ * export read in this scope counts fewer hops for a chain through it. Both heal when the next
411
+ * pass redelivers. The undercount only loosens the loop bound (the hop cap bounds loops, and
412
+ * authorizes nothing), so a loop may run a round longer; no event crosses that exports, grants
413
+ * and the PII rule would not already release.
414
+ *
415
+ * Refused, with the reason a person reads:
416
+ * - a replay whose `after` is AHEAD of the watermark (that is a skip), or a skip whose `through`
417
+ * is BEHIND it (that is a replay). The acknowledgement names one direction, and it must be
418
+ * the direction that moves;
419
+ * - a skip past now, which would pass over events not yet written while the edge read as
420
+ * caught up;
421
+ * - a replay on an edge that has delivered nothing yet: there is nothing to run again.
422
+ */
423
+ export function moveImportCursor(sql, input) {
424
+ const { move, source } = input;
425
+ if (!input.imports.some((i) => i.from === source.vertical)) {
426
+ throw substratError('precondition_failed', `this scope's code imports nothing from '${source.vertical}' — there is no edge to move; ` +
427
+ `a watermark set now would decide where a later import's backfill starts`);
428
+ }
429
+ const at = new Date(input.now).toISOString();
430
+ const previous = sql.all(IMPORT_CURSOR_OF_SQL, source.scopeId)[0]?.cursor ?? null;
431
+ const moved = (cursor, archived) => ({
432
+ replayId: input.replayId,
433
+ mode: move.mode,
434
+ source: source,
435
+ previous: previous,
436
+ cursor: cursor,
437
+ archived,
438
+ });
439
+ if (move.mode === 'skip') {
440
+ // "Now" is every millisecond BEFORE this one, for an explicit target as for 'now'. An event
441
+ // minted in the skip's own millisecond may commit just after it, and a watermark at this
442
+ // millisecond's ceiling would pass over it silently. On the boundary the edge delivers rather
443
+ // than drops: at least once, never lost. One bound for both, so a person who types the ceiling
444
+ // in gets exactly what 'now' gives.
445
+ const ceiling = ulidCeiling(input.now - 1);
446
+ const through = move.through === 'now' ? ceiling : move.through;
447
+ // Not into the future: a watermark past now would pass over every event yet to be written,
448
+ // silently, and the edge would then read as caught up. "Now" is as far as a skip reaches.
449
+ if (through > ceiling) {
450
+ throw substratError('precondition_failed', `a skip reaches at most now, and ${through} is in the future — it would pass over events not yet written`);
451
+ }
452
+ if (previous !== null && through < previous) {
453
+ throw substratError('precondition_failed', `a skip moves the watermark forward, and ${through} is behind it (${previous}) — ` +
454
+ `to deliver events again, replay (mode 'replay')`);
455
+ }
456
+ sql.run(CURSOR_SET_SQL, source.scopeId, source.vertical, through, at);
457
+ return moved(through, { journal: 0, deliveries: 0 });
458
+ }
459
+ if (previous === null) {
460
+ throw substratError('precondition_failed', `this scope has taken nothing from '${source.vertical}' yet — there is nothing to replay; ` +
461
+ `the next pass delivers the whole exported history`);
462
+ }
463
+ if (move.after !== null && move.after > previous) {
464
+ throw substratError('precondition_failed', `a replay moves the watermark back, and ${move.after} is ahead of it (${previous}) — ` +
465
+ `to pass over events, skip (mode 'skip')`);
466
+ }
467
+ const floor = move.after ?? '';
468
+ sql.run(ARCHIVE_DELIVERIES_SQL, input.replayId, at, source.scopeId, floor);
469
+ sql.run(ARCHIVE_JOURNAL_SQL, input.replayId, at, source.scopeId, floor);
470
+ const counts = new Map(sql.all(REPLAY_ARCHIVED_SQL, input.replayId).map((r) => [r.kind, Number(r.n)]));
471
+ sql.run(CLEAR_DELIVERIES_SQL, source.scopeId, floor);
472
+ sql.run(CLEAR_JOURNAL_SQL, source.scopeId, floor);
473
+ if (move.after === null)
474
+ sql.run(CURSOR_CLEAR_SQL, source.scopeId);
475
+ else
476
+ sql.run(CURSOR_SET_SQL, source.scopeId, source.vertical, move.after, at);
477
+ return moved(move.after, { journal: counts.get('journal') ?? 0, deliveries: counts.get('delivery') ?? 0 });
478
+ }
251
479
  /** The note a withheld event's dead letter carries at the consumer. Names the reason, never the content. */
252
480
  export function withheldNote(reason, vertical) {
253
481
  const why = {
@@ -278,6 +506,8 @@ export class CrossVerticalRegistry {
278
506
  exportsByType = new Map();
279
507
  importVersion = new Map();
280
508
  registered = [];
509
+ /** `exportTypes()`, kept current by `register`: an invoke reads it, and must not rebuild a map to. */
510
+ exportTypeList = [];
281
511
  register(manifest, handlers) {
282
512
  const declared = new Map();
283
513
  for (const c of manifest.events.consumes)
@@ -317,6 +547,7 @@ export class CrossVerticalRegistry {
317
547
  if (!this.exportsByType.has(e.type))
318
548
  this.exportsByType.set(e.type, { ...e, declaredBy: manifest.id });
319
549
  }
550
+ this.exportTypeList = [...this.exportsByType.keys()];
320
551
  for (const [key, decl] of declared) {
321
552
  if (!this.importVersion.has(key))
322
553
  this.importVersion.set(key, { schemaVersion: decl.schemaVersion, declaredBy: manifest.id });
@@ -327,6 +558,10 @@ export class CrossVerticalRegistry {
327
558
  exports() {
328
559
  return new Map([...this.exportsByType].map(([t, { declaredBy: _, ...e }]) => [t, e]));
329
560
  }
561
+ /** The exported type names (#1705 PR 2), for the per-invoke kick count. Empty: exports nothing. */
562
+ exportTypes() {
563
+ return this.exportTypeList;
564
+ }
330
565
  /** What this deployment imports, one row per (source, type), sorted. */
331
566
  consumes() {
332
567
  return [...this.importVersion.entries()]
@@ -1 +1 @@
1
- {"version":3,"file":"vertical-events.js","sourceRoot":"","sources":["../src/vertical-events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vertical-events.js","sourceRoot":"","sources":["../src/vertical-events.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@substrat-run/kernel",
3
- "version": "0.120.0",
3
+ "version": "0.122.0",
4
4
  "description": "Substrat kernel contracts and services — pure TypeScript, no platform imports (D-14)",
5
5
  "license": "AGPL-3.0-only",
6
6
  "repository": {
@@ -22,7 +22,7 @@
22
22
  "dist"
23
23
  ],
24
24
  "dependencies": {
25
- "@substrat-run/contracts": "^0.120.0"
25
+ "@substrat-run/contracts": "^0.122.0"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@types/node": "^22.0.0",