@substrat-run/kernel 0.118.0 → 0.120.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 (43) hide show
  1. package/dist/capability.d.ts +22 -1
  2. package/dist/capability.d.ts.map +1 -1
  3. package/dist/capability.js +20 -0
  4. package/dist/capability.js.map +1 -1
  5. package/dist/connector-calls.d.ts +205 -0
  6. package/dist/connector-calls.d.ts.map +1 -0
  7. package/dist/connector-calls.js +192 -0
  8. package/dist/connector-calls.js.map +1 -0
  9. package/dist/idempotency.d.ts +7 -1
  10. package/dist/idempotency.d.ts.map +1 -1
  11. package/dist/idempotency.js +8 -2
  12. package/dist/idempotency.js.map +1 -1
  13. package/dist/index.d.ts +11 -6
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +6 -3
  16. package/dist/index.js.map +1 -1
  17. package/dist/peer.d.ts +132 -0
  18. package/dist/peer.d.ts.map +1 -0
  19. package/dist/peer.js +177 -0
  20. package/dist/peer.js.map +1 -0
  21. package/dist/permission-checker.d.ts +1 -1
  22. package/dist/permission-checker.d.ts.map +1 -1
  23. package/dist/permission-checker.js +4 -1
  24. package/dist/permission-checker.js.map +1 -1
  25. package/dist/platform-sweep.d.ts +116 -1
  26. package/dist/platform-sweep.d.ts.map +1 -1
  27. package/dist/platform-sweep.js +209 -0
  28. package/dist/platform-sweep.js.map +1 -1
  29. package/dist/scope-host.d.ts +233 -10
  30. package/dist/scope-host.d.ts.map +1 -1
  31. package/dist/scope-host.js.map +1 -1
  32. package/dist/system-switch.d.ts +38 -0
  33. package/dist/system-switch.d.ts.map +1 -1
  34. package/dist/system-switch.js +50 -3
  35. package/dist/system-switch.js.map +1 -1
  36. package/dist/timeline.d.ts.map +1 -1
  37. package/dist/timeline.js +30 -3
  38. package/dist/timeline.js.map +1 -1
  39. package/dist/vertical-events.d.ts +162 -0
  40. package/dist/vertical-events.d.ts.map +1 -0
  41. package/dist/vertical-events.js +348 -0
  42. package/dist/vertical-events.js.map +1 -0
  43. package/package.json +2 -2
@@ -61,7 +61,15 @@ export const SYSTEM_SWITCH_OFF_PREDICATE = `EXISTS (SELECT 1 FROM _substrat_tupl
61
61
  * Object caps its patterns (#1655); an exact prefix compare is neither.
62
62
  */
63
63
  export function systemScheduleState(db, moduleId, now) {
64
- const subject = subjectOf(moduleId);
64
+ return subjectGrantState(db, subjectOf(moduleId), now);
65
+ }
66
+ /**
67
+ * The same gate for ANY switched subject (#1706) — `system:<module>` above, `vertical:<slug>`
68
+ * for a peer. One statement, one spelling: the peer switch's status read must not be able to
69
+ * disagree with the schedule switch's about what "off" and "ungranted" mean, and the surest
70
+ * way to hold that is for there to be one predicate rather than two that look alike.
71
+ */
72
+ export function subjectGrantState(db, subject, now) {
65
73
  const row = db.all(`SELECT
66
74
  ${SYSTEM_SWITCH_OFF_PREDICATE} AS off,
67
75
  EXISTS (SELECT 1 FROM _substrat_tuples
@@ -71,9 +79,31 @@ export function systemScheduleState(db, moduleId, now) {
71
79
  return 'off';
72
80
  return Number(row?.granted) === 1 ? 'on' : 'ungranted';
73
81
  }
82
+ /**
83
+ * Every module this scope holds or has ever held system authority for, and where each
84
+ * stands (#1674) — the per-scope status read (`GET .../system-grants`). One SELECT
85
+ * enumerating the `system:<moduleId>` subjects this scope's storage has a live `granted:`
86
+ * tuple or OFF marker for (a module with neither has never run here, and has nothing to
87
+ * report — not even `ungranted`), then `systemScheduleState` per one: the SAME predicate
88
+ * `runDueSchedules` gates on, so the read and the runner cannot disagree.
89
+ */
90
+ export function systemGrantsStatus(db, now) {
91
+ const rows = db.all(`SELECT DISTINCT subject FROM _substrat_tuples
92
+ WHERE substr(subject, 1, 7) = 'system:'
93
+ AND (substr(relation, 1, 8) = 'granted:' OR relation = '${SYSTEM_SWITCH_OFF_RELATION}')
94
+ ORDER BY subject`);
95
+ return rows.map((row) => {
96
+ const moduleId = row.subject.slice('system:'.length);
97
+ return { moduleId, schedules: systemScheduleState(db, moduleId, now) };
98
+ });
99
+ }
74
100
  /** Is this module switched off on the scope `db` is? What `grantToSystem` refuses on. */
75
101
  export function systemSwitchedOff(db, moduleId) {
76
- const row = db.all(`SELECT ${SYSTEM_SWITCH_OFF_PREDICATE} AS off`, subjectOf(moduleId))[0];
102
+ return subjectSwitchedOff(db, subjectOf(moduleId));
103
+ }
104
+ /** Is this subject's OFF marker live on the scope `db` is? Any subject — see `switchSubjectGrants`. */
105
+ export function subjectSwitchedOff(db, subject) {
106
+ const row = db.all(`SELECT ${SYSTEM_SWITCH_OFF_PREDICATE} AS off`, subject)[0];
77
107
  return Number(row?.off) === 1;
78
108
  }
79
109
  /** The refusal `grantToSystem` throws while the switch is off — one wording, both adapters. */
@@ -98,7 +128,24 @@ export function systemSwitchedOffMessage(moduleId, scopeId) {
98
128
  * Run it inside one transaction; the reads and writes here are meant to be one unit.
99
129
  */
100
130
  export function switchSystemSchedules(db, input) {
101
- const subject = subjectOf(input.moduleId);
131
+ return switchSubjectGrants(db, {
132
+ subject: subjectOf(input.moduleId),
133
+ scopeId: input.scopeId,
134
+ to: input.to,
135
+ at: input.at,
136
+ });
137
+ }
138
+ /**
139
+ * The switch itself, for ANY non-person subject's scope-level grants — `switchSystemSchedules`
140
+ * for a schedule (`system:<module>`), and the peer kill switch for another vertical
141
+ * (`vertical:<slug>`, #1706). One body, so the two levers cannot disagree about what OFF
142
+ * tombstones, what ON gives back, or when a call held nothing. Everything said above
143
+ * `switchSystemSchedules` holds for every subject: the marker is `SYSTEM_SWITCH_OFF_RELATION`,
144
+ * and `seatScopeTuple`'s predicate is already bound per subject, so a marker blocks the seat
145
+ * for exactly the subject it names.
146
+ */
147
+ export function switchSubjectGrants(db, input) {
148
+ const subject = input.subject;
102
149
  const object = `scope:${input.scopeId}`;
103
150
  const grants = db.all(`SELECT relation, revoked_at FROM _substrat_tuples
104
151
  WHERE subject = ? AND object = ? AND substr(relation, 1, 8) = 'granted:'
@@ -1 +1 @@
1
- {"version":3,"file":"system-switch.js","sourceRoot":"","sources":["../src/system-switch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"system-switch.js","sourceRoot":"","sources":["../src/system-switch.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../src/timeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,WAAW,EAEhB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EAMf,KAAK,QAAQ,EACb,KAAK,IAAI,EACT,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACtB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,SAAS,EAAY,MAAM,iBAAiB,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAEH,oFAAoF;AACpF,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;CACxC;AAmID;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,SAAS,EACjB,IAAI,CAAC,EAAE,QAAQ,GACd,IAAI,CAAC,aAAa,CAAC,CAKrB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,SAAS,EACjB,IAAI,CAAC,EAAE,QAAQ,GACd,IAAI,CAAC,YAAY,CAAC,CAKpB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,OAAO,EAChB,QAAQ,SAAK,GACZ,UAAU,CA+CZ;AAkDD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,OAAO,EAChB,QAAQ,SAAK,GACZ,WAAW,CAoFb;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,cAAc,EACnB,YAAY,EAAE,MAAM,EACpB,KAAK,SAAM,GACV,gBAAgB,CAOlB;AA+DD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CA4BhH;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,eAAe,GAAG,gBAAgB,CAqEzF"}
1
+ {"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../src/timeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,SAAS,EACd,KAAK,OAAO,EAEZ,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,WAAW,EAEhB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EAMf,KAAK,QAAQ,EACb,KAAK,IAAI,EACT,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACtB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,SAAS,EAAY,MAAM,iBAAiB,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAEH,oFAAoF;AACpF,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;CACxC;AAmID;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,SAAS,EACjB,IAAI,CAAC,EAAE,QAAQ,GACd,IAAI,CAAC,aAAa,CAAC,CAKrB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,SAAS,EACjB,IAAI,CAAC,EAAE,QAAQ,GACd,IAAI,CAAC,YAAY,CAAC,CAKpB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,OAAO,EAChB,QAAQ,SAAK,GACZ,UAAU,CAiEZ;AAkDD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,OAAO,EAChB,QAAQ,SAAK,GACZ,WAAW,CAoFb;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,cAAc,EACnB,YAAY,EAAE,MAAM,EACpB,KAAK,SAAM,GACV,gBAAgB,CAOlB;AA+DD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAwChH;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,eAAe,GAAG,gBAAgB,CAqEzF"}
package/dist/timeline.js CHANGED
@@ -184,6 +184,21 @@ export function walkEventCause(ctx, eventId, maxDepth = 25) {
184
184
  const rows = ctx.sql.query(`SELECT ${HISTORY_COLUMNS} FROM _substrat_outbox WHERE id = ? LIMIT 1`, [next]);
185
185
  const row = rows[0];
186
186
  if (row === undefined) {
187
+ // #1705: not in the outbox, but RECEIVED: the cause is another vertical's exported
188
+ // event. The trail leaves this scope rather than breaking, so the walk says where it
189
+ // went and does not raise the integrity alarm that 'missing' is.
190
+ const imported = ctx.sql.query('SELECT source_vertical, source_scope_id FROM _substrat_imports WHERE event_id = ? LIMIT 1', [next])[0];
191
+ if (imported !== undefined) {
192
+ return {
193
+ chain,
194
+ terminal: 'imported',
195
+ imported: {
196
+ eventId: next,
197
+ vertical: imported.source_vertical,
198
+ scopeId: imported.source_scope_id,
199
+ },
200
+ };
201
+ }
187
202
  // The FIRST id missing means the caller named an event this scope does not
188
203
  // hold; a later one means the spine lost a row it should still have. Both are
189
204
  // 'missing' — the view says the trail cannot be followed further, and does not
@@ -427,12 +442,24 @@ export function readDeadLetters(ctx, page) {
427
442
  params.push(event, event, consumer);
428
443
  }
429
444
  params.push(limit);
445
+ // #1705: a delivery's event is in this scope's outbox, OR it was received from another
446
+ // vertical and its envelope is in `_substrat_imports`. An import that gave up, or one the
447
+ // producer withheld, is a dead letter this scope's operator must see, so the read takes
448
+ // both. Two LEFT JOINs rather than a UNION: each seeks its table's key, where a UNION ALL
449
+ // subquery in a join could be materialized over the whole outbox. An imported event
450
+ // carries no invocation of this scope, so that column reads null.
430
451
  const rows = ctx.sql.query(`SELECT d.event_id, d.consumer_module, d.delivered_at, d.error, d.attempts,
431
452
  d.invocation_id AS attempt_invocation_id,
432
- o.type, o.occurred_at, o.entity_type, o.entity_id, o.invocation_id
453
+ COALESCE(o.type, i.type) AS type,
454
+ COALESCE(o.occurred_at, i.occurred_at) AS occurred_at,
455
+ COALESCE(o.entity_type, i.entity_type) AS entity_type,
456
+ COALESCE(o.entity_id, i.entity_id) AS entity_id,
457
+ o.invocation_id
433
458
  FROM _substrat_deliveries d
434
- JOIN _substrat_outbox o ON o.id = d.event_id
435
- WHERE d.error IS NOT NULL AND d.next_attempt_at IS NULL${after}
459
+ LEFT JOIN _substrat_outbox o ON o.id = d.event_id
460
+ LEFT JOIN _substrat_imports i ON i.event_id = d.event_id
461
+ WHERE d.error IS NOT NULL AND d.next_attempt_at IS NULL
462
+ AND (o.id IS NOT NULL OR i.event_id IS NOT NULL)${after}
436
463
  ORDER BY d.event_id DESC, d.consumer_module DESC
437
464
  LIMIT ?`, params);
438
465
  const entries = rows.map(deadLetterOf);
@@ -1 +1 @@
1
- {"version":3,"file":"timeline.js","sourceRoot":"","sources":["../src/timeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"timeline.js","sourceRoot":"","sources":["../src/timeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * Cross-vertical event delivery (#1705): the half both adapters share.
3
+ *
4
+ * A vertical exports an event type by declaring it (`events.exports`), and another vertical of
5
+ * the same tenant imports it by declaring `events.consumes: [{ from, … }]`. Nothing is written
6
+ * when an exported event commits. The producer's outbox is retained and is already the durable
7
+ * record, so an export is a READ over it, and a consumer's progress is a watermark the consumer
8
+ * keeps. Each platform sweep pass then:
9
+ *
10
+ * 1. asks the consumer scope for its watermark on this producer (`IMPORT_CURSORS_SQL`);
11
+ * 2. reads the producer's outbox after it, in the producer's own scope, through its own
12
+ * running `exports` (`exportReadQuery` + `planExportBatch`);
13
+ * 3. hands the batch to the consumer, which journals each event and runs its handlers,
14
+ * then moves the watermark in the same store (`IMPORT_CURSOR_ADVANCE_SQL`).
15
+ *
16
+ * The tables here are the consumer's half of that, and they hold NO payload. The event's only
17
+ * copy stays in the producer's outbox, where a subject erasure already reaches. An imported
18
+ * payload would be one more resting copy for the erasure to find, and #1600 and #1632 were
19
+ * each about a copy it had missed. What the consumer keeps is the envelope. That is enough to
20
+ * dedupe, to show a dead letter, and to resolve a `caused_by` that points across the edge.
21
+ *
22
+ * Shared from here for `CAPABILITY_DDL`'s reason: the self-host builds these tables and
23
+ * production builds them, and one definition is what keeps the two identical.
24
+ * `lint:spine-ddl` holds each adapter to including it.
25
+ */
26
+ import { type EventExport, type ModuleManifest, type ExportedBatch, type WantedEvent, type WithheldEvent } from '@substrat-run/contracts';
27
+ import { type OutboxEnvelopeRow } from './outbox-event.js';
28
+ import type { ImportHandler } from './scope-host.js';
29
+ export declare const VERTICAL_EVENTS_DDL = "\n -- #1705: every event this scope has received from another vertical. The envelope only, and\n -- never the payload. The producer's outbox keeps the one copy, where erasure already reaches.\n CREATE TABLE IF NOT EXISTS _substrat_imports (\n -- The PRODUCER's event id. A ULID the producer's host minted, so it is unique across\n -- every source this scope imports from, and it is the dedupe key: a batch delivered\n -- twice finds its events here and its handlers' journal rows in _substrat_deliveries.\n event_id TEXT PRIMARY KEY,\n source_scope_id TEXT NOT NULL,\n source_vertical TEXT NOT NULL,\n type TEXT NOT NULL,\n schema_version INTEGER NOT NULL,\n occurred_at TEXT NOT NULL,\n entity_type TEXT NOT NULL,\n entity_id TEXT NOT NULL,\n -- How many vertical boundaries this event's cause chain has crossed, this one included.\n -- An export read in THIS scope counts from here when one of its own events was caused by\n -- an import, which is how a loop between two verticals is stopped.\n hops INTEGER NOT NULL,\n -- NULL: released, and handed to this scope's handlers. Otherwise the producer's reason\n -- for NOT releasing it ('pii', 'version', 'cascade', 'undecodable'). Such a row was\n -- named but never carried.\n withheld TEXT,\n imported_at TEXT NOT NULL\n );\n -- #1705: how far this scope has read each producer. Written in the same store as the\n -- handlers' writes, so a restore of this scope rewinds the watermark with the data and the\n -- producer re-delivers what the restore undid. A watermark the platform held instead would\n -- skip it.\n CREATE TABLE IF NOT EXISTS _substrat_import_cursors (\n source_scope_id TEXT PRIMARY KEY,\n source_vertical TEXT NOT NULL,\n -- The id of the last producer row the reads walked (released or withheld). NULL is not\n -- stored: a producer with no row here has never been read, which the absence says.\n cursor TEXT NOT NULL,\n updated_at TEXT NOT NULL\n );\n -- #1705: the export read, on the PRODUCER side. It asks for a few types after a watermark,\n -- in id order. Without this index SQLite walks the primary key from the watermark forward and\n -- steps over every row of every other type. A consumer that is caught up would then pay, on\n -- every pass, for all the unexported activity since the last exported event. With it, the read\n -- seeks each type's range and costs what it returns.\n CREATE INDEX IF NOT EXISTS _substrat_outbox_type_id ON _substrat_outbox (type, id);\n";
30
+ /**
31
+ * The producer-side read: rows of the given types after the watermark, oldest first.
32
+ *
33
+ * `types` is already the intersection of what the consumer wants and what this scope exports.
34
+ * The caller computes it from its own registered manifests, never from the request alone, so
35
+ * nothing here can widen what leaves.
36
+ */
37
+ export declare function exportReadQuery(types: readonly string[], after: string | null, limit: number): {
38
+ sql: string;
39
+ params: unknown[];
40
+ };
41
+ /**
42
+ * How many vertical boundaries the cause chain of an outbox row with this `caused_by` has
43
+ * already crossed. The answer is the `hops` of the NEAREST import in its chain, or no row when
44
+ * the chain never crossed one.
45
+ *
46
+ * Walks `caused_by` backwards through this scope's outbox. The chain ends at an import, which
47
+ * is in `_substrat_imports` and not in the outbox, or at an event nothing caused. Bounded at 64
48
+ * steps: a chain that long inside ONE scope has already been cut many times by the per-call
49
+ * cascade cap. Past the bound, the row counts as having crossed nothing. That under-counts, and
50
+ * it is stated rather than hidden. It can only let a loop run for more passes than the cap
51
+ * intends. It cannot release an event that should not cross.
52
+ */
53
+ export declare const EXPORT_HOPS_SQL = "\n WITH RECURSIVE chain(id, depth) AS (\n SELECT ?, 0\n UNION ALL\n SELECT o.caused_by, c.depth + 1\n FROM chain c JOIN _substrat_outbox o ON o.id = c.id\n WHERE o.caused_by IS NOT NULL AND c.depth < 64\n )\n SELECT i.hops AS hops FROM chain c JOIN _substrat_imports i ON i.event_id = c.id\n ORDER BY c.depth LIMIT 1\n";
54
+ /** A stored outbox row, as the export read sees it: the envelope, plus the cause column. */
55
+ export type ExportRow = OutboxEnvelopeRow & {
56
+ caused_by?: string | null;
57
+ };
58
+ /**
59
+ * The producer-side decision, over rows already read: what is released, what is withheld and
60
+ * why, and the watermark the consumer should hold afterwards.
61
+ *
62
+ * Pure, so both adapters make the same decision about the same rows. Authority is NOT decided
63
+ * here. The adapter checks the consumer's principal before it reads anything, and a missing
64
+ * key pauses the edge without walking a row. Every reason this function withholds for is
65
+ * fixed at write time (the classification, the version, the cause chain, the stored text),
66
+ * so stepping the watermark past a withheld row can never lose an event that a later pass
67
+ * would have released.
68
+ */
69
+ export declare function planExportBatch(input: {
70
+ rows: readonly ExportRow[];
71
+ /** What the consumer declares it takes, by type. */
72
+ wanted: ReadonlyMap<string, number>;
73
+ /** How many boundaries a row's cause chain already crossed (0 = none). */
74
+ hopsBefore: (row: ExportRow) => number;
75
+ after: string | null;
76
+ limit: number;
77
+ hopCap?: number;
78
+ }): Pick<ExportedBatch, 'events' | 'withheld' | 'next' | 'more'>;
79
+ /**
80
+ * The read plan for one request: which types to read, which keys the consumer must hold for
81
+ * them, and what it asked for that this scope does not export.
82
+ *
83
+ * `exports` is THIS scope's running declaration, the union over its registered modules. A
84
+ * wanted type absent from it is reported and never read. That is the producer's own code
85
+ * deciding what leaves, whatever the platform asked for.
86
+ */
87
+ export declare function exportReadPlan(exports: ReadonlyMap<string, EventExport>, wants: readonly WantedEvent[]): {
88
+ types: string[];
89
+ keys: string[];
90
+ wanted: Map<string, number>;
91
+ unexported: WantedEvent[];
92
+ };
93
+ /** Every (type → export) the given manifests declare. The caller's registration refuses conflicts. */
94
+ export declare function exportsOf(manifests: readonly {
95
+ events: {
96
+ exports?: readonly EventExport[];
97
+ };
98
+ }[]): Map<string, EventExport>;
99
+ /** The consumer's watermark per producer, oldest source first. */
100
+ export declare const IMPORT_CURSORS_SQL = "SELECT source_scope_id, source_vertical, cursor, updated_at FROM _substrat_import_cursors ORDER BY source_scope_id";
101
+ /** One producer's watermark, for the compare-and-set a batch is applied under. */
102
+ export declare const IMPORT_CURSOR_OF_SQL = "SELECT cursor FROM _substrat_import_cursors WHERE source_scope_id = ?";
103
+ /**
104
+ * Move one producer's watermark. Params: (source_scope_id, source_vertical, cursor, updated_at).
105
+ *
106
+ * Only ever forward. ULIDs sort by time, and a batch's `next` is the last id its read walked,
107
+ * so a smaller value can only come from a pass that read less than one already applied. The
108
+ * batch's own compare-and-set normally refuses that pass before it gets here, and this is the
109
+ * second line.
110
+ */
111
+ export declare const IMPORT_CURSOR_ADVANCE_SQL = "\n INSERT INTO _substrat_import_cursors (source_scope_id, source_vertical, cursor, updated_at)\n VALUES (?, ?, ?, ?)\n ON CONFLICT (source_scope_id) DO UPDATE SET\n source_vertical = excluded.source_vertical,\n cursor = excluded.cursor,\n updated_at = excluded.updated_at\n WHERE excluded.cursor > _substrat_import_cursors.cursor\n";
112
+ /**
113
+ * Journal one received (or withheld) event's envelope. Params in column order. Ignored on a
114
+ * repeat: the first journaling is the fact, and a redelivered batch must not move
115
+ * `imported_at` forward or rewrite what was withheld and why.
116
+ */
117
+ export declare const IMPORT_RECORD_SQL = "\n INSERT OR IGNORE INTO _substrat_imports\n (event_id, source_scope_id, source_vertical, type, schema_version, occurred_at,\n entity_type, entity_id, hops, withheld, imported_at)\n VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n";
118
+ /** The note a withheld event's dead letter carries at the consumer. Names the reason, never the content. */
119
+ export declare function withheldNote(reason: WithheldEvent['reason'], vertical: string): string;
120
+ /** One registered import handler: which module, from which vertical, for which (type, version). */
121
+ export interface RegisteredImport {
122
+ moduleId: string;
123
+ from: string;
124
+ type: string;
125
+ schemaVersion: number;
126
+ handler: ImportHandler;
127
+ }
128
+ /**
129
+ * A host's cross-vertical declarations (#1705), accumulated module by module. It is held by
130
+ * every place that registers modules (the pure host, the Cloudflare coordinator and the
131
+ * scope DO), so the three refuse the same wiring with the same words.
132
+ *
133
+ * What it refuses, and why each would otherwise be silent:
134
+ * - **An import handler for a (source, type) the manifest does not declare `from` it.** It
135
+ * would run for events nobody reviewed the module receiving, because the declaration is
136
+ * what the permission diff shows.
137
+ * - **A declared import with no handler.** The edge would be read, the events journaled and
138
+ * the watermark moved, and nothing would ever run: a delivery that reports success and
139
+ * does nothing. (A LOCAL consume without a handler stays allowed, as it always was.)
140
+ * - **Two modules importing one (source, type) at different versions**, or **exporting one
141
+ * type under different versions or keys**. The edge asks for one version and gates on one
142
+ * key, and which module won would depend on registration order.
143
+ */
144
+ export declare class CrossVerticalRegistry {
145
+ private readonly exportsByType;
146
+ private readonly importVersion;
147
+ private readonly registered;
148
+ register(manifest: Pick<ModuleManifest, 'id' | 'events'>, handlers: Record<string, Record<string, ImportHandler>> | undefined): void;
149
+ /** type → export, over every registered module: what this deployment releases. */
150
+ exports(): Map<string, EventExport>;
151
+ /** What this deployment imports, one row per (source, type), sorted. */
152
+ consumes(): {
153
+ from: string;
154
+ type: string;
155
+ schemaVersion: number;
156
+ }[];
157
+ /** The handlers for one (source, type), in registration order. */
158
+ handlersFor(from: string, type: string): RegisteredImport[];
159
+ /** Every module that imports anything from `from`: who a withheld event's dead letter is filed under. */
160
+ modulesImporting(from: string, type: string): string[];
161
+ }
162
+ //# sourceMappingURL=vertical-events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vertical-events.d.ts","sourceRoot":"","sources":["../src/vertical-events.ts"],"names":[],"mappings":"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"}