@substrat-run/contracts 0.138.0 → 0.140.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 (91) hide show
  1. package/dist/connections.d.ts +131 -0
  2. package/dist/connections.d.ts.map +1 -1
  3. package/dist/connections.js +90 -1
  4. package/dist/connections.js.map +1 -1
  5. package/dist/control-plane.d.ts +366 -10
  6. package/dist/control-plane.d.ts.map +1 -1
  7. package/dist/control-plane.js +254 -11
  8. package/dist/control-plane.js.map +1 -1
  9. package/dist/deploy.d.ts +83 -3
  10. package/dist/deploy.d.ts.map +1 -1
  11. package/dist/deploy.js +109 -3
  12. package/dist/deploy.js.map +1 -1
  13. package/dist/email-intent.d.ts +106 -0
  14. package/dist/email-intent.d.ts.map +1 -0
  15. package/dist/email-intent.js +111 -0
  16. package/dist/email-intent.js.map +1 -0
  17. package/dist/entity-state.d.ts +96 -0
  18. package/dist/entity-state.d.ts.map +1 -0
  19. package/dist/entity-state.js +85 -0
  20. package/dist/entity-state.js.map +1 -0
  21. package/dist/findings.d.ts +208 -0
  22. package/dist/findings.d.ts.map +1 -0
  23. package/dist/findings.js +116 -0
  24. package/dist/findings.js.map +1 -0
  25. package/dist/ids.d.ts +13 -0
  26. package/dist/ids.d.ts.map +1 -1
  27. package/dist/ids.js +30 -0
  28. package/dist/ids.js.map +1 -1
  29. package/dist/index.d.ts +5 -0
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +5 -0
  32. package/dist/index.js.map +1 -1
  33. package/dist/introspection.d.ts +22 -0
  34. package/dist/introspection.d.ts.map +1 -1
  35. package/dist/introspection.js +1 -1
  36. package/dist/introspection.js.map +1 -1
  37. package/dist/kernel-events.d.ts.map +1 -1
  38. package/dist/kernel-events.js +12 -1
  39. package/dist/kernel-events.js.map +1 -1
  40. package/dist/manifest.d.ts +53 -0
  41. package/dist/manifest.d.ts.map +1 -1
  42. package/dist/manifest.js +40 -2
  43. package/dist/manifest.js.map +1 -1
  44. package/dist/model.d.ts +119 -0
  45. package/dist/model.d.ts.map +1 -1
  46. package/dist/model.js +147 -0
  47. package/dist/model.js.map +1 -1
  48. package/dist/operations.d.ts +117 -1
  49. package/dist/operations.d.ts.map +1 -1
  50. package/dist/operations.js +159 -1
  51. package/dist/operations.js.map +1 -1
  52. package/dist/pagination.d.ts +0 -0
  53. package/dist/pagination.d.ts.map +1 -1
  54. package/dist/pagination.js +0 -0
  55. package/dist/pagination.js.map +1 -1
  56. package/dist/peer.d.ts +34 -0
  57. package/dist/peer.d.ts.map +1 -1
  58. package/dist/peer.js +17 -2
  59. package/dist/peer.js.map +1 -1
  60. package/dist/permission.d.ts +56 -0
  61. package/dist/permission.d.ts.map +1 -1
  62. package/dist/permission.js +58 -3
  63. package/dist/permission.js.map +1 -1
  64. package/dist/registry-diff.d.ts +18 -1
  65. package/dist/registry-diff.d.ts.map +1 -1
  66. package/dist/registry-diff.js +24 -7
  67. package/dist/registry-diff.js.map +1 -1
  68. package/dist/registry.d.ts +6 -0
  69. package/dist/registry.d.ts.map +1 -1
  70. package/dist/registry.js +8 -2
  71. package/dist/registry.js.map +1 -1
  72. package/dist/relay-caller.d.ts +28 -0
  73. package/dist/relay-caller.d.ts.map +1 -0
  74. package/dist/relay-caller.js +28 -0
  75. package/dist/relay-caller.js.map +1 -0
  76. package/dist/sql-tokens.d.ts +9 -1
  77. package/dist/sql-tokens.d.ts.map +1 -1
  78. package/dist/sql-tokens.js +4 -1
  79. package/dist/sql-tokens.js.map +1 -1
  80. package/dist/subject-erasure.d.ts +109 -0
  81. package/dist/subject-erasure.d.ts.map +1 -0
  82. package/dist/subject-erasure.js +93 -0
  83. package/dist/subject-erasure.js.map +1 -0
  84. package/dist/vertical-events.d.ts +1 -0
  85. package/dist/vertical-events.d.ts.map +1 -1
  86. package/dist/vertical-events.js +6 -0
  87. package/dist/vertical-events.js.map +1 -1
  88. package/dist/wire-headers.d.ts +6 -1
  89. package/dist/wire-headers.d.ts.map +1 -1
  90. package/dist/wire-headers.js.map +1 -1
  91. package/package.json +1 -1
package/dist/model.d.ts CHANGED
@@ -23,6 +23,8 @@
23
23
  */
24
24
  import { z } from 'zod';
25
25
  import { type EmittedLifecycle, type LifecycleDef } from './lifecycle.js';
26
+ import type { EntityStateDeclaration } from './entity-state.js';
27
+ import { type SubjectErasureDeclaration } from './subject-erasure.js';
26
28
  /**
27
29
  * One entity: the table it lives in, its field schema, and its place in the
28
30
  * permission graph.
@@ -110,7 +112,55 @@ export interface EntityDef<Names extends string = string> {
110
112
  * carrying gravestones.
111
113
  */
112
114
  readonly renamedFrom?: Readonly<Record<string, string>>;
115
+ /**
116
+ * The entity can be ARCHIVED — hidden from active views, retained, and readable through
117
+ * its ordinary read authority (#119). `permission` gates `ctx.archive` and `ctx.unarchive`
118
+ * on the entity; the kernel re-checks it, so an operation cannot archive under another key.
119
+ *
120
+ * Declaring it gives the table a kernel-owned `_substrat_archived_at` column (a derived
121
+ * migration, like a search index's) and makes `ctx.page`/`ctx.search` leave archived rows
122
+ * out unless asked for them. Only a single-column-keyed entity can declare it: the verbs
123
+ * take an `EntityRef`.
124
+ */
125
+ readonly archive?: {
126
+ readonly permission: string;
127
+ };
128
+ /**
129
+ * The entity can be TRASHED — a reversible delete (#119). `permission` gates `ctx.trash`,
130
+ * `ctx.restore` and the trashed readers, and is distinct from `archive`'s on purpose:
131
+ * putting something in the bin and seeing what is in it are not the same authority as
132
+ * filing it away. Gives the table `_substrat_trashed_at`.
133
+ *
134
+ * `purgeAfterDays` adds a PURGE HORIZON (#119): an entity in the bin longer than that is
135
+ * permanently deleted by the platform's sweep, which runs the vertical's own operation that
136
+ * declares `trashed: 'purges'` for this entity — so what a delete cascades to stays the
137
+ * vertical's rule. The operation is run as the module's system principal, one entity per
138
+ * transaction. Absent, nothing is ever purged: the bin keeps what it holds until a person
139
+ * empties it. A purge removes the row the way that operation always has; the events about the
140
+ * entity stay, which is what separates it from erasure (#37).
141
+ */
142
+ readonly trash?: {
143
+ readonly permission: string;
144
+ readonly purgeAfterDays?: number;
145
+ };
146
+ /**
147
+ * How a subject erasure reaches this entity's rows (#2068) — see `subject-erasure.ts`.
148
+ *
149
+ * `subjects` names the fields whose value is a data subject id; a row is the subject's when
150
+ * any of them equals the id erased. `mode: 'blank'` (the default) blanks the `erasable`
151
+ * fields and keeps the row; `'delete'` removes the row; `{ mode: 'custom' }` says the
152
+ * module's `onSubjectErased` hook reaches it. Requires `erasable`. An entity with `erasable`
153
+ * fields and no `erasure` is unreached, and every receipt says so.
154
+ */
155
+ readonly erasure?: EntityErasureDef;
113
156
  }
157
+ /** An entity's `erasure` declaration, as authored. */
158
+ export type EntityErasureDef<F extends string = string> = {
159
+ readonly subjects: readonly F[];
160
+ readonly mode?: 'blank' | 'delete';
161
+ } | {
162
+ readonly mode: 'custom';
163
+ };
114
164
  /**
115
165
  * The entities the platform can point AT — those identified by ONE column.
116
166
  *
@@ -168,6 +218,7 @@ export declare function defineEntities<const T extends {
168
218
  key?: readonly EntityFields<T[K]>[];
169
219
  erasable?: readonly EntityFields<T[K]>[];
170
220
  outsideText?: readonly EntityFields<T[K]>[];
221
+ erasure?: EntityErasureDef<EntityFields<T[K]>>;
171
222
  renamedFrom?: Readonly<Partial<Record<EntityFields<T[K]>, string>>>;
172
223
  };
173
224
  }>(entities: T): T;
@@ -213,6 +264,20 @@ export interface EmittedEntity {
213
264
  readonly key?: readonly string[];
214
265
  readonly erasable?: readonly string[];
215
266
  readonly outsideText?: readonly string[];
267
+ /** The permission key that archives it (#119), when it can be archived. */
268
+ readonly archive?: {
269
+ readonly permission: string;
270
+ };
271
+ /** The permission key that trashes it (#119), when it can be trashed, and its purge horizon. */
272
+ readonly trash?: {
273
+ readonly permission: string;
274
+ readonly purgeAfterDays?: number;
275
+ };
276
+ /** How a subject erasure reaches it (#2068), when declared. `subjects` sorted. */
277
+ readonly erasure?: {
278
+ readonly mode: 'blank' | 'delete' | 'custom';
279
+ readonly subjects?: readonly string[];
280
+ };
216
281
  }
217
282
  export interface EmittedModel {
218
283
  /**
@@ -284,6 +349,21 @@ export declare const emittedEntity: z.ZodObject<{
284
349
  key: z.ZodOptional<z.ZodArray<z.ZodString>>;
285
350
  erasable: z.ZodOptional<z.ZodArray<z.ZodString>>;
286
351
  outsideText: z.ZodOptional<z.ZodArray<z.ZodString>>;
352
+ archive: z.ZodOptional<z.ZodObject<{
353
+ permission: z.ZodString;
354
+ }, z.core.$strip>>;
355
+ trash: z.ZodOptional<z.ZodObject<{
356
+ permission: z.ZodString;
357
+ purgeAfterDays: z.ZodOptional<z.ZodNumber>;
358
+ }, z.core.$strip>>;
359
+ erasure: z.ZodOptional<z.ZodObject<{
360
+ mode: z.ZodEnum<{
361
+ blank: "blank";
362
+ custom: "custom";
363
+ delete: "delete";
364
+ }>;
365
+ subjects: z.ZodOptional<z.ZodArray<z.ZodString>>;
366
+ }, z.core.$strip>>;
287
367
  }, z.core.$strip>;
288
368
  export declare const emittedExport: z.ZodObject<{
289
369
  schemaVersion: z.ZodNumber;
@@ -300,6 +380,21 @@ export declare const emittedModel: z.ZodObject<{
300
380
  key: z.ZodOptional<z.ZodArray<z.ZodString>>;
301
381
  erasable: z.ZodOptional<z.ZodArray<z.ZodString>>;
302
382
  outsideText: z.ZodOptional<z.ZodArray<z.ZodString>>;
383
+ archive: z.ZodOptional<z.ZodObject<{
384
+ permission: z.ZodString;
385
+ }, z.core.$strip>>;
386
+ trash: z.ZodOptional<z.ZodObject<{
387
+ permission: z.ZodString;
388
+ purgeAfterDays: z.ZodOptional<z.ZodNumber>;
389
+ }, z.core.$strip>>;
390
+ erasure: z.ZodOptional<z.ZodObject<{
391
+ mode: z.ZodEnum<{
392
+ blank: "blank";
393
+ custom: "custom";
394
+ delete: "delete";
395
+ }>;
396
+ subjects: z.ZodOptional<z.ZodArray<z.ZodString>>;
397
+ }, z.core.$strip>>;
303
398
  }, z.core.$strip>>;
304
399
  lifecycles: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
305
400
  field: z.ZodString;
@@ -503,6 +598,28 @@ export interface EnrichedSearchable {
503
598
  readonly idColumn: string;
504
599
  readonly tokenizer?: 'prefix' | 'substring';
505
600
  }
601
+ /**
602
+ * The `entityStates` manifest entries (#119), derived from each entity's own `archive` /
603
+ * `trash` — never written a second time, as `entityRelations` is derived from `parents`.
604
+ *
605
+ * Refuses a composite-keyed entity for `enrichSearchables`'s reason: the verbs take an
606
+ * `EntityRef`, which is one id, and a row keyed by three columns has none to give.
607
+ */
608
+ export declare function entityStatesOf(entities: Record<string, EntityDef>): EntityStateDeclaration[];
609
+ /**
610
+ * The `erasure` manifest block (#2068), derived from each entity's `erasable` and `erasure`.
611
+ * Undefined when no entity declares either, so a model with nothing personal in it emits a
612
+ * manifest byte-for-byte what it was before.
613
+ *
614
+ * Refuses, at emit and at manifest time alike:
615
+ * - an `erasure` on an entity with no `erasable` fields — it would reach nothing;
616
+ * - a subject column that is not a field;
617
+ * - a `blank` that would write into the primary key, or write `''` into a `key` column (a
618
+ * second blanked row would collide with the first and fail the erasure mid-way) — such an
619
+ * entity is the person's data whole, and declares `mode: 'delete'`;
620
+ * - a blank of a field that admits neither NULL nor `''`.
621
+ */
622
+ export declare function subjectErasureOf(entities: Record<string, EntityDef>): SubjectErasureDeclaration | undefined;
506
623
  export declare function manifestEntities<const T extends Record<string, EntityDef>, const M extends EntityRefs<T, M>>(entities: T, refs: M): {
507
624
  attachmentTargets: NonNullable<M['attachmentTargets']> | [];
508
625
  liveTargets: NonNullable<M['liveTargets']> | [];
@@ -511,6 +628,8 @@ export declare function manifestEntities<const T extends Record<string, EntityDe
511
628
  entityType: string;
512
629
  parentType: string;
513
630
  }[];
631
+ entityStates?: EntityStateDeclaration[];
632
+ erasure?: SubjectErasureDeclaration;
514
633
  ui: {
515
634
  entityViews: M['entityViews'];
516
635
  };
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
package/dist/model.js CHANGED
@@ -24,6 +24,8 @@
24
24
  import { z } from 'zod';
25
25
  import { emitLifecycles } from './lifecycle.js';
26
26
  import { isKernelNamespace } from './object-ref.js';
27
+ import { subjectErasureDeclaration, } from './subject-erasure.js';
28
+ import { permissionKey } from './ids.js';
27
29
  /**
28
30
  * Declare a module's entities.
29
31
  *
@@ -115,6 +117,11 @@ export const emittedEntity = z.object({
115
117
  key: z.array(z.string()).optional(),
116
118
  erasable: z.array(z.string()).optional(),
117
119
  outsideText: z.array(z.string()).optional(),
120
+ archive: z.object({ permission: z.string().min(1) }).optional(),
121
+ trash: z.object({ permission: z.string().min(1), purgeAfterDays: z.number().int().positive().optional() }).optional(),
122
+ erasure: z
123
+ .object({ mode: z.enum(['blank', 'delete', 'custom']), subjects: z.array(z.string()).optional() })
124
+ .optional(),
118
125
  });
119
126
  export const emittedExport = z.object({
120
127
  schemaVersion: z.number().int().positive(),
@@ -154,8 +161,21 @@ export function emitModel(entities, options = {}) {
154
161
  ...(e.key ? { key: [...e.key].sort() } : {}),
155
162
  ...(e.erasable ? { erasable: [...e.erasable].sort() } : {}),
156
163
  ...(e.outsideText ? { outsideText: [...e.outsideText].sort() } : {}),
164
+ ...(e.archive ? { archive: { permission: e.archive.permission } } : {}),
165
+ ...(e.trash
166
+ ? {
167
+ trash: {
168
+ permission: e.trash.permission,
169
+ ...(e.trash.purgeAfterDays !== undefined ? { purgeAfterDays: e.trash.purgeAfterDays } : {}),
170
+ },
171
+ }
172
+ : {}),
173
+ ...(e.erasure ? { erasure: emittedErasure(e.erasure) } : {}),
157
174
  };
158
175
  }
176
+ // Refused at emit too, so `lint:model --check` goes red where `manifestEntities` would.
177
+ entityStatesOf(entities);
178
+ subjectErasureOf(entities);
159
179
  const lifecycles = options.lifecycles ? emitLifecycles(options.lifecycles) : undefined;
160
180
  if (lifecycles) {
161
181
  // A machine over an entity the registry does not declare is the same class
@@ -230,7 +250,132 @@ function enrichSearchables(entities, searchables) {
230
250
  };
231
251
  });
232
252
  }
253
+ /**
254
+ * The `entityStates` manifest entries (#119), derived from each entity's own `archive` /
255
+ * `trash` — never written a second time, as `entityRelations` is derived from `parents`.
256
+ *
257
+ * Refuses a composite-keyed entity for `enrichSearchables`'s reason: the verbs take an
258
+ * `EntityRef`, which is one id, and a row keyed by three columns has none to give.
259
+ */
260
+ export function entityStatesOf(entities) {
261
+ const out = [];
262
+ for (const name of Object.keys(entities).sort()) {
263
+ const entity = entities[name];
264
+ if (!entity || (!entity.archive && !entity.trash))
265
+ continue;
266
+ const key = primaryKeyOf(name, entity);
267
+ if (key.length !== 1) {
268
+ throw new Error(`model: '${name}' is keyed by (${key.join(', ')}) and cannot be archived or trashed — ` +
269
+ 'ctx.archive and ctx.trash take one id, and a composite key has none to give');
270
+ }
271
+ const days = entity.trash?.purgeAfterDays;
272
+ if (days !== undefined && !(Number.isInteger(days) && days > 0)) {
273
+ throw new Error(`model: '${name}' declares trash.purgeAfterDays ${String(days)} — a horizon is a whole number of days, at least 1`);
274
+ }
275
+ out.push({
276
+ entityType: name,
277
+ ...(entity.archive ? { archivePermission: permissionKey.parse(entity.archive.permission) } : {}),
278
+ ...(entity.trash ? { trashPermission: permissionKey.parse(entity.trash.permission) } : {}),
279
+ ...(entity.trash?.purgeAfterDays !== undefined ? { purgeAfterDays: entity.trash.purgeAfterDays } : {}),
280
+ table: entity.table,
281
+ idColumn: key[0],
282
+ });
283
+ }
284
+ return out;
285
+ }
286
+ /** An authored `erasure`, in the artifact's one shape: the mode spelled out, subjects sorted. */
287
+ function emittedErasure(e) {
288
+ return 'subjects' in e
289
+ ? { mode: e.mode ?? 'blank', subjects: [...e.subjects].sort() }
290
+ : { mode: 'custom' };
291
+ }
292
+ /**
293
+ * What a blank writes into one erasable field (#2068): NULL when the field admits it, else the
294
+ * empty string when IT admits that, else nothing a blank can write — and the model is refused.
295
+ * Probed against the field's own schema, so the answer is the one the row's writers live by.
296
+ */
297
+ function blankFor(entity, field, schema) {
298
+ const blank = blankOf(schema);
299
+ if (blank !== undefined)
300
+ return blank;
301
+ throw new Error(`model: ${entity}.${field} is erasable, admits neither NULL nor '', and so cannot be blanked — ` +
302
+ "make it nullable, or declare `erasure: { subjects, mode: 'delete' }`");
303
+ }
304
+ /** NULL when the field admits it, else `''` when it admits that, else undefined. */
305
+ function blankOf(schema) {
306
+ if (schema.safeParse(null).success)
307
+ return null;
308
+ if (schema.safeParse('').success)
309
+ return '';
310
+ return undefined;
311
+ }
312
+ /**
313
+ * The `erasure` manifest block (#2068), derived from each entity's `erasable` and `erasure`.
314
+ * Undefined when no entity declares either, so a model with nothing personal in it emits a
315
+ * manifest byte-for-byte what it was before.
316
+ *
317
+ * Refuses, at emit and at manifest time alike:
318
+ * - an `erasure` on an entity with no `erasable` fields — it would reach nothing;
319
+ * - a subject column that is not a field;
320
+ * - a `blank` that would write into the primary key, or write `''` into a `key` column (a
321
+ * second blanked row would collide with the first and fail the erasure mid-way) — such an
322
+ * entity is the person's data whole, and declares `mode: 'delete'`;
323
+ * - a blank of a field that admits neither NULL nor `''`.
324
+ */
325
+ export function subjectErasureOf(entities) {
326
+ const out = [];
327
+ for (const name of Object.keys(entities).sort()) {
328
+ const entity = entities[name];
329
+ if (!entity)
330
+ continue;
331
+ const erasable = entity.erasable ?? [];
332
+ if (erasable.length === 0) {
333
+ if (entity.erasure) {
334
+ throw new Error(`model: ${name} declares an \`erasure\` but no \`erasable\` fields — it would reach nothing`);
335
+ }
336
+ continue;
337
+ }
338
+ const shape = entity.fields.shape;
339
+ const emitted = entity.erasure && emittedErasure(entity.erasure);
340
+ const mode = emitted?.mode ?? 'unreached';
341
+ const subjects = emitted?.subjects;
342
+ for (const col of subjects ?? []) {
343
+ if (!(col in shape))
344
+ throw new Error(`model: ${name}.erasure.subjects names '${col}', which is not a field`);
345
+ }
346
+ if (subjects?.length === 0)
347
+ throw new Error(`model: ${name}.erasure.subjects is empty — name the subject column`);
348
+ const fields = [...erasable].sort().map((f) => {
349
+ const schema = shape[f];
350
+ if (!schema)
351
+ throw new Error(`model: ${name}.erasable names '${f}', which is not a field`);
352
+ // Only a blank writes the value, so only a blank is refused for having none to write.
353
+ return { name: f, blank: mode === 'blank' ? blankFor(name, f, schema) : blankOf(schema) === null ? null : '' };
354
+ });
355
+ if (mode === 'blank') {
356
+ const pk = new Set(primaryKeyOf(name, entity));
357
+ const key = new Set(entity.key ?? []);
358
+ for (const f of fields) {
359
+ const inPk = pk.has(f.name);
360
+ if (inPk || (f.blank === '' && key.has(f.name))) {
361
+ throw new Error(`model: ${name}.${f.name} is erasable and part of the ${inPk ? 'primary key' : '`key`'}, so a ` +
362
+ "blank would collide with the next one — declare `erasure: { subjects, mode: 'delete' }`");
363
+ }
364
+ }
365
+ }
366
+ out.push({ entityType: name, table: entity.table, mode, ...(subjects ? { subjects: [...subjects] } : {}), fields });
367
+ }
368
+ if (out.length === 0)
369
+ return undefined;
370
+ const tables = [...new Set(Object.values(entities).map((e) => e.table))].sort();
371
+ return subjectErasureDeclaration.parse({ tables, entities: out });
372
+ }
233
373
  export function manifestEntities(entities, refs) {
374
+ // Absent rather than `[]` when nothing declares one, so a manifest that has no archivable
375
+ // entity is byte-for-byte what it was before #119.
376
+ const entityStates = entityStatesOf(entities);
377
+ // #2068: absent when nothing is erasable, for the same reason.
378
+ const erasure = subjectErasureOf(entities);
234
379
  return {
235
380
  attachmentTargets: (refs.attachmentTargets ?? []),
236
381
  // `[]` when undeclared, like `attachmentTargets` — and it means the same
@@ -242,6 +387,8 @@ export function manifestEntities(entities, refs) {
242
387
  // Local edges are derived from the entities' own `parents`; edges involving
243
388
  // a composed engine's entity are declared, and both sides are checked.
244
389
  entityRelations: [...entityRelationsOf(entities), ...(refs.relations ?? [])],
390
+ ...(entityStates.length ? { entityStates } : {}),
391
+ ...(erasure ? { erasure } : {}),
245
392
  ui: { entityViews: refs.entityViews },
246
393
  };
247
394
  }
package/dist/model.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAA4C,MAAM,gBAAgB,CAAC;AAC1F,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAkIpD;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAyB5B,QAAW;IACX,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,KAAwB;IACjD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACb,WAAW,IAAI,8DAA8D;gBAC3E,sEAAsE,CACzE,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAKD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,MAAiB;IAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAgC,CAAC;IAC7D,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC;IACnC,IAAI,QAAQ,EAAE,MAAM,EAAE,CAAC;QACrB,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,UAAU,IAAI,sBAAsB,GAAG,yBAAyB,CAAC,CAAC;YACpF,CAAC;QACH,CAAC;QACD,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,UAAU,IAAI,mCAAmC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3F,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,IAAI,IAAI,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,IAAI,KAAK,CACb,UAAU,IAAI,wEAAwE;QACpF,oFAAoF;QACpF,yEAAyE,CAC5E,CAAC;AACJ,CAAC;AAoED;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC/C,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACrC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;IACtC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC;CAC3C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,2FAA2F;IAC3F,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACvC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC1C,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACnC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACxC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC5C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC1C,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;CAC3C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACrC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC;IAC7C,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC,QAAQ,EAAE;IAC7D,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC,QAAQ,EAAE;CACxD,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,UAAU,SAAS,CACvB,QAAW,EACX,OAAO,GAgBH,EAAE;IAEN,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IACD,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzC,MAAM,GAAG,GAAkC,EAAE,CAAC;IAC9C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAChD,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,CAGvG,CAAC;QACF,GAAG,CAAC,IAAI,CAAC,GAAG;YACV,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,MAAM;YACN,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,0EAA0E;YAC1E,sEAAsE;YACtE,gBAAgB;YAChB,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;YACvF,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACrE,CAAC;IACJ,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvF,IAAI,UAAU,EAAE,CAAC;QACf,2EAA2E;QAC3E,4EAA4E;QAC5E,2CAA2C;QAC3C,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,uCAAuC,MAAM,mCAAmC,CAAC,CAAC;YACpG,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAkC,EAAE,CAAC;IAClD,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC1F,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,qBAAqB,CAAC,CAAC;QAC/E,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC,aAAa,EAAE,cAAc,EAAE,CAAC,CAAC,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IAC7G,CAAC;IACD,OAAO;QACL,8EAA8E;QAC9E,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,QAAQ,EAAE,GAAG;QACb,GAAG,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpD,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAW;IAEX,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;SACzB,IAAI,EAAE;SACN,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAChB,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;QACxC,IAAI,CAAC,OAAO,EAAE,MAAM;YAAE,OAAO,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;AACP,CAAC;AAwKD;;;;;;;;;GASG;AACH,SAAS,iBAAiB,CACxB,QAAmC,EACnC,WAAoB;IAEpB,MAAM,QAAQ,GAAG,CAAC,WAAW,IAAI,EAAE,CAIhC,CAAC;IACJ,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAC3B,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,CAAC,UAAU,mCAAmC,CAAC,CAAC;QACnG,CAAC;QACD,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAClD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,WAAW,IAAI,CAAC,UAAU,kBAAkB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,+BAA+B;gBACvF,yDAAyD,CAC5D,CAAC;QACJ,CAAC;QACD,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAW;YAC1B,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB,CAI9B,QAAW,EACX,IAAO;IAQP,OAAO;QACL,iBAAiB,EAAE,CAAC,IAAI,CAAC,iBAAiB,IAAI,EAAE,CAA6C;QAC7F,yEAAyE;QACzE,yEAAyE;QACzE,+CAA+C;QAC/C,WAAW,EAAE,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAuC;QAC3E,WAAW,EAAE,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC;QAC1D,+DAA+D;QAC/D,4EAA4E;QAC5E,uEAAuE;QACvE,eAAe,EAAE,CAAC,GAAG,iBAAiB,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QAC5E,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAA+B,EAAE;KAC1D,CAAC;AACJ,CAAC;AAuBD,6EAA6E;AAC7E,MAAM,CAAC,MAAM,WAAW,GAAG,gBAAgB,CAAC;AAE5C;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACpG,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,GAAG,WAAW,GAAG,OAAO,EAAE,CAAC,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
@@ -238,6 +238,18 @@ type PermissionRefCheck<O, PermKey extends string> = {
238
238
  readonly idFrom?: never;
239
239
  readonly resolved?: never;
240
240
  };
241
+ /**
242
+ * What `trashed` may say on this operation: `'admits' | 'purges'` where the leading check is
243
+ * `{ entity: E, idFrom }` and `E` declares `trash`, and nothing anywhere else.
244
+ */
245
+ type TrashedShape<O, Entities> = O extends {
246
+ permission: {
247
+ entity: infer E;
248
+ idFrom: infer F;
249
+ };
250
+ } ? E extends keyof Entities ? Entities[E] extends {
251
+ trash: object;
252
+ } ? 'admits' | (Exclude<InputKeys<O>, F> extends never ? 'purges' : never) : never : never : never;
241
253
  type OpAuthority<O, Entities, Engines, PermKey extends string> = O extends {
242
254
  narrows: unknown;
243
255
  } ? {
@@ -615,6 +627,26 @@ type OperationShape<O, Entities, Engines, PermKey extends string> = {
615
627
  * node-level: state the exception, never the rule.
616
628
  */
617
629
  readonly idempotency?: false;
630
+ /**
631
+ * This operation reaches an entity IN THE TRASH (#119). Absent — the default, and the right
632
+ * answer for nearly every operation — the HOST refuses it on a trashed entity before the
633
+ * guards and the handler run: `not_found` to a caller who holds the operation's key on the
634
+ * entity, and the same `forbidden` as on an active one to a caller who does not. So a binned
635
+ * entity is gone from everyone's point of view without each handler remembering to ask.
636
+ *
637
+ * - `'admits'` — the operation works on a trashed entity too: the restore, a read of the bin.
638
+ * - `'purges'` — the operation is the entity's PERMANENT delete. It admits a trashed entity,
639
+ * and it is the one a declared `trash.purgeAfterDays` horizon runs (`purgeSchedulesOf`).
640
+ * One per entity, and its input is the id and NOTHING else — not even an optional field, so a
641
+ * purge can only ever reach the entity it was invoked for.
642
+ *
643
+ * Only legal where the host can see the entity: a leading `permission: { entity, idFrom }`
644
+ * naming an entity that declares `trash`. Anywhere else it is a compile error, because there
645
+ * would be nothing for it to opt out of. An operation that narrows `resolved`, by `refFrom`
646
+ * or through `narrows` is not refused by the host at all, and keeps its own check
647
+ * (`trashRefusalGapsOf` names them).
648
+ */
649
+ readonly trashed?: TrashedShape<O, Entities>;
618
650
  readonly emits?: {
619
651
  /**
620
652
  * The entity the event is about — one of THIS module's entities, or one of a
@@ -706,6 +738,76 @@ export declare function operationConcurrencyOf(operations: Readonly<Record<strin
706
738
  entity: string;
707
739
  idFrom: string;
708
740
  }>;
741
+ /**
742
+ * The entity an operation addresses by id, as the host reads it (#119).
743
+ *
744
+ * `key` is the operation's DECLARED leading check, which the host evaluates itself before it
745
+ * refuses a trashed entity — so a caller without the key meets the same `forbidden` there that
746
+ * the handler would have given on an active one, and learns nothing about the bin.
747
+ */
748
+ export interface OperationTarget {
749
+ readonly entity: string;
750
+ readonly idFrom: string;
751
+ readonly key: string;
752
+ readonly trashed?: 'admits' | 'purges';
753
+ }
754
+ /**
755
+ * name → the entity each operation addresses by id, for the host (#119).
756
+ *
757
+ * Every operation whose leading check is `{ entity, idFrom }`, whether or not its entity
758
+ * declares `trash` — the host keeps the ones whose entity does. Handed over beside
759
+ * `operationInputs`, and required by the host from any module with a trashable entity, so a
760
+ * module cannot leave its binned entities reachable by forgetting the line.
761
+ */
762
+ export declare function operationTargetsOf(operations: Readonly<Record<string, object>>): Record<string, OperationTarget>;
763
+ /** How often a purge horizon's schedule runs (#119). The horizon is in days; hourly is plenty. */
764
+ export declare const PURGE_CADENCE_MINUTES = 60;
765
+ /**
766
+ * The schedules a module's purge horizons run as (#119), derived — spread into the manifest's
767
+ * `schedules` beside any the module writes:
768
+ *
769
+ * ```ts
770
+ * schedules: purgeSchedulesOf(todoOperations, todoEntities),
771
+ * ```
772
+ *
773
+ * One per entity declaring `trash.purgeAfterDays`, running the operation that declares
774
+ * `trashed: 'purges'` for it, holding exactly that operation's key. Being a schedule is what
775
+ * gives the purge everything a schedule already has: the module's system principal and its
776
+ * seated grant (rendered in `PERMISSIONS.md`), the kill switch, the lifecycle hold, the
777
+ * exclusion of preview copies, and a sweeper on a pushed deploy.
778
+ *
779
+ * Refuses a horizon with no purging operation, and a purging operation whose input needs
780
+ * more than the id — the sweep has nothing else to pass it.
781
+ */
782
+ export declare function purgeSchedulesOf(operations: Readonly<Record<string, object>>, entities: Readonly<Record<string, EntityDef>>): {
783
+ operation: string;
784
+ cadence: {
785
+ everyMinutes: number;
786
+ };
787
+ permissions: string[];
788
+ purge: {
789
+ entityType: string;
790
+ };
791
+ }[];
792
+ /**
793
+ * The operations on a trashable entity the HOST cannot refuse on a trashed one (#119), because
794
+ * their check names the entity but not the input field carrying its id — it is `resolved` in the
795
+ * handler. Each keeps its own `ctx.entityState` check. `lint:model` prints them as warnings, so
796
+ * the gap is seen when a vertical is built rather than found in review.
797
+ *
798
+ * What it cannot name, and K-45 states: an operation that reaches a trashable entity with no
799
+ * entity in its check at all — a `narrows` walk, a `refFrom` check, a node-level key.
800
+ */
801
+ export declare function trashRefusalGapsOf(operations: Readonly<Record<string, object>>, entities: Readonly<Record<string, EntityDef>>): {
802
+ operation: string;
803
+ entity: string;
804
+ }[];
805
+ /**
806
+ * Whether `schema` is a zod object that REFUSES unknown keys (`z.strictObject`, `.strict()`) —
807
+ * what a `trashed: 'purges'` operation's input must be (#119), so that the parsed input is the id
808
+ * and nothing else: a passthrough object keeps an extra field, and a default one drops it silently.
809
+ */
810
+ export declare function isStrictObjectSchema(schema: unknown): boolean;
709
811
  /**
710
812
  * The operations that opted OUT of request idempotency (#116).
711
813
  *
@@ -1021,7 +1123,21 @@ export declare function manifestOperations<const Ops extends Record<string, obje
1021
1123
  * operation is always present even with no `input`, because the platform hands
1022
1124
  * it a page whether it declared one or not.
1023
1125
  */
1024
- export declare function operationInputsOf<const Ops extends Record<string, object>>(operations: Ops): Record<string, z.ZodType>;
1126
+ export declare function operationInputsOf<const Ops extends Record<string, object>>(operations: Ops): Readonly<Record<string, z.ZodType>>;
1127
+ /**
1128
+ * What `operationInputsOf` records for each map it builds (#119): every declared operation's name
1129
+ * and the entity each addresses by id. Deep-frozen.
1130
+ */
1131
+ export interface DeclaredOperationSurface {
1132
+ readonly operations: readonly string[];
1133
+ readonly targets: Readonly<Record<string, Readonly<OperationTarget>>>;
1134
+ }
1135
+ /**
1136
+ * The declared surface an `operationInputs` map was derived from — `undefined` for any map
1137
+ * `operationInputsOf` did not itself return (a hand-built one, a copy, or one built by a second
1138
+ * copy of this package, whose record this one cannot read).
1139
+ */
1140
+ export declare function declaredSurfaceOf(operationInputs: object | undefined): DeclaredOperationSurface | undefined;
1025
1141
  /**
1026
1142
  * Where one composed-engine operation lives in THIS vertical's HTTP surface.
1027
1143
  *