@substrat-run/kernel 0.138.0 → 0.139.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 (69) hide show
  1. package/dist/attachment-extractor.d.ts +9 -1
  2. package/dist/attachment-extractor.d.ts.map +1 -1
  3. package/dist/attachment-extractor.js +21 -1
  4. package/dist/attachment-extractor.js.map +1 -1
  5. package/dist/attachment-text.d.ts +64 -0
  6. package/dist/attachment-text.d.ts.map +1 -1
  7. package/dist/attachment-text.js +87 -16
  8. package/dist/attachment-text.js.map +1 -1
  9. package/dist/attribution.d.ts +36 -3
  10. package/dist/attribution.d.ts.map +1 -1
  11. package/dist/attribution.js +21 -8
  12. package/dist/attribution.js.map +1 -1
  13. package/dist/entity-state-reads.d.ts +43 -0
  14. package/dist/entity-state-reads.d.ts.map +1 -0
  15. package/dist/entity-state-reads.js +135 -0
  16. package/dist/entity-state-reads.js.map +1 -0
  17. package/dist/entity-state.d.ts +177 -0
  18. package/dist/entity-state.d.ts.map +1 -0
  19. package/dist/entity-state.js +345 -0
  20. package/dist/entity-state.js.map +1 -0
  21. package/dist/findings.d.ts +143 -0
  22. package/dist/findings.d.ts.map +1 -0
  23. package/dist/findings.js +463 -0
  24. package/dist/findings.js.map +1 -0
  25. package/dist/index.d.ts +13 -7
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +10 -6
  28. package/dist/index.js.map +1 -1
  29. package/dist/list-index.d.ts +25 -3
  30. package/dist/list-index.d.ts.map +1 -1
  31. package/dist/list-index.js +70 -26
  32. package/dist/list-index.js.map +1 -1
  33. package/dist/membership-executor.d.ts +17 -5
  34. package/dist/membership-executor.d.ts.map +1 -1
  35. package/dist/membership-executor.js +26 -11
  36. package/dist/membership-executor.js.map +1 -1
  37. package/dist/module-migrations.d.ts +6 -3
  38. package/dist/module-migrations.d.ts.map +1 -1
  39. package/dist/module-migrations.js +12 -5
  40. package/dist/module-migrations.js.map +1 -1
  41. package/dist/permission-eval.d.ts +41 -0
  42. package/dist/permission-eval.d.ts.map +1 -1
  43. package/dist/permission-eval.js +53 -0
  44. package/dist/permission-eval.js.map +1 -1
  45. package/dist/platform-sweep.d.ts +7 -1
  46. package/dist/platform-sweep.d.ts.map +1 -1
  47. package/dist/platform-sweep.js +12 -0
  48. package/dist/platform-sweep.js.map +1 -1
  49. package/dist/scope-host.d.ts +187 -11
  50. package/dist/scope-host.d.ts.map +1 -1
  51. package/dist/scope-host.js +10 -2
  52. package/dist/scope-host.js.map +1 -1
  53. package/dist/scope-role-admin.d.ts +68 -0
  54. package/dist/scope-role-admin.d.ts.map +1 -0
  55. package/dist/scope-role-admin.js +80 -0
  56. package/dist/scope-role-admin.js.map +1 -0
  57. package/dist/search-index.d.ts +13 -1
  58. package/dist/search-index.d.ts.map +1 -1
  59. package/dist/search-index.js +9 -16
  60. package/dist/search-index.js.map +1 -1
  61. package/dist/spine-guard.d.ts +64 -2
  62. package/dist/spine-guard.d.ts.map +1 -1
  63. package/dist/spine-guard.js +345 -10
  64. package/dist/spine-guard.js.map +1 -1
  65. package/dist/sql-identifier.d.ts +12 -0
  66. package/dist/sql-identifier.d.ts.map +1 -0
  67. package/dist/sql-identifier.js +17 -0
  68. package/dist/sql-identifier.js.map +1 -0
  69. package/package.json +2 -2
@@ -0,0 +1,463 @@
1
+ import { FINDING_RULE_MAX_DAYS, findingEntry, findingRuleEntry, opsFailureFingerprint, substratError, } from '@substrat-run/contracts';
2
+ import { ulid } from './ulid.js';
3
+ import { assertRowLimit, boundedRetentionDelete, ISSUE_RETENTION_DAYS } from './scope-host.js';
4
+ /**
5
+ * How long a finding outlives its last occurrence — the issue store's window, since a Recurring
6
+ * finding is the tenant's projection of an issue and should be recognisable for as long.
7
+ */
8
+ export const FINDING_RETENTION_DAYS = ISSUE_RETENTION_DAYS;
9
+ /**
10
+ * The findings store (#1748), as statements both adapters run against their directory — the
11
+ * SQLite host over better-sqlite3, the hosted one inside ControlPlaneDO — so the lifecycle is
12
+ * written once. `sql` is the row-returning executor subject erasure already uses.
13
+ *
14
+ * Detection is ON WRITE: the call that records an ops failure or a sweep run also observes the
15
+ * finding it implies, so there is no cron and no scan. Per occurrence that is one indexed rule
16
+ * lookup and one primary-key upsert, over evidence that is already bounded upstream.
17
+ */
18
+ export const FINDINGS_DDL = `
19
+ CREATE TABLE IF NOT EXISTS _substrat_findings (
20
+ id TEXT PRIMARY KEY,
21
+ tenant_id TEXT NOT NULL,
22
+ kind TEXT NOT NULL,
23
+ subject TEXT NOT NULL,
24
+ status TEXT NOT NULL,
25
+ regressed INTEGER NOT NULL DEFAULT 0,
26
+ severity TEXT NOT NULL,
27
+ title TEXT NOT NULL,
28
+ operation TEXT,
29
+ codes TEXT NOT NULL DEFAULT '[]',
30
+ vertical TEXT,
31
+ scope_id TEXT,
32
+ seen_count INTEGER NOT NULL,
33
+ first_seen TEXT NOT NULL,
34
+ last_seen TEXT NOT NULL,
35
+ last_version TEXT,
36
+ resolved_version TEXT,
37
+ resolved_at TEXT,
38
+ resolution TEXT,
39
+ acknowledged_at TEXT,
40
+ rule_id TEXT,
41
+ evidence TEXT NOT NULL,
42
+ likely_cause TEXT,
43
+ UNIQUE (tenant_id, kind, subject)
44
+ );
45
+ CREATE INDEX IF NOT EXISTS _substrat_findings_tenant_seen ON _substrat_findings (tenant_id, last_seen);
46
+ CREATE INDEX IF NOT EXISTS _substrat_findings_seen ON _substrat_findings (last_seen);
47
+ CREATE INDEX IF NOT EXISTS _substrat_findings_quiet ON _substrat_findings (last_seen) WHERE status IN ('open', 'acked');
48
+ CREATE TABLE IF NOT EXISTS _substrat_finding_rules (
49
+ id TEXT PRIMARY KEY,
50
+ tenant_id TEXT NOT NULL,
51
+ kind TEXT,
52
+ operation TEXT,
53
+ code TEXT,
54
+ subject TEXT,
55
+ expires_at TEXT NOT NULL,
56
+ reason TEXT NOT NULL,
57
+ created_by TEXT NOT NULL,
58
+ created_at TEXT NOT NULL
59
+ );
60
+ CREATE INDEX IF NOT EXISTS _substrat_finding_rules_tenant ON _substrat_finding_rules (tenant_id, expires_at);
61
+ CREATE INDEX IF NOT EXISTS _substrat_finding_rules_expiry ON _substrat_finding_rules (expires_at);
62
+ `;
63
+ /**
64
+ * The Recurring source: a tenant's own ops failure, keyed on the same fingerprint as the fleet
65
+ * issue. A failure with no tenant is the platform's own and stays in the staff issue store.
66
+ */
67
+ export function findingOfOpsFailure(f) {
68
+ if (!f.tenantId)
69
+ return null;
70
+ const fingerprint = opsFailureFingerprint(f);
71
+ return {
72
+ tenantId: f.tenantId,
73
+ kind: 'recurring',
74
+ subject: fingerprint,
75
+ severity: 'warning',
76
+ title: `${f.operation} fails${f.stage ? ` at ${f.stage}` : ''}${f.code ? ` (${f.code})` : ''}`,
77
+ operation: f.operation,
78
+ code: f.code ?? null,
79
+ vertical: f.vertical ?? null,
80
+ scopeId: f.scopeId ?? null,
81
+ version: f.version ?? null,
82
+ evidence: { source: 'ops-failures', fingerprint },
83
+ };
84
+ }
85
+ /**
86
+ * The Invariant and Drift sources: a scheduled run that failed (expected 0 failed runs,
87
+ * observed N) and a freshness expectation judged stale. Every other sweep row implies nothing.
88
+ */
89
+ export function findingOfSweepRun(r) {
90
+ if (!r.tenantId || r.outcome !== 'failed')
91
+ return null;
92
+ const base = {
93
+ tenantId: r.tenantId,
94
+ subject: r.unit,
95
+ code: null,
96
+ vertical: r.vertical ?? null,
97
+ scopeId: r.scopeId ?? null,
98
+ version: r.version ?? null,
99
+ };
100
+ if (r.kind === 'schedule') {
101
+ return {
102
+ ...base,
103
+ kind: 'invariant',
104
+ severity: 'critical',
105
+ title: `Scheduled ${r.operation ?? r.unit} failed`,
106
+ operation: r.operation ?? null,
107
+ evidence: { source: 'sweep-runs', kind: 'schedule', unit: r.unit },
108
+ };
109
+ }
110
+ if (r.kind === 'freshness') {
111
+ return {
112
+ ...base,
113
+ kind: 'drift',
114
+ severity: 'warning',
115
+ title: `${r.eventType ?? r.unit} has gone stale`,
116
+ operation: null,
117
+ evidence: { source: 'sweep-runs', kind: 'freshness', unit: r.unit },
118
+ };
119
+ }
120
+ return null;
121
+ }
122
+ const FINDING_COLUMNS = 'id, tenant_id, kind, subject, status, regressed, severity, title, operation, codes, vertical, scope_id, ' +
123
+ 'seen_count, first_seen, last_seen, last_version, resolved_version, resolved_at, resolution, acknowledged_at, ' +
124
+ 'rule_id, evidence, likely_cause';
125
+ const RULE_COLUMNS = 'id, tenant_id, kind, operation, code, subject, expires_at, reason, created_by, created_at';
126
+ function findingOf(r) {
127
+ return findingEntry.parse({
128
+ id: r.id,
129
+ tenantId: r.tenant_id,
130
+ kind: r.kind,
131
+ subject: r.subject,
132
+ status: r.status,
133
+ regressed: r.regressed === 1,
134
+ severity: r.severity,
135
+ title: r.title,
136
+ operation: r.operation,
137
+ codes: JSON.parse(r.codes),
138
+ vertical: r.vertical,
139
+ scopeId: r.scope_id,
140
+ count: r.seen_count,
141
+ firstSeen: r.first_seen,
142
+ lastSeen: r.last_seen,
143
+ lastVersion: r.last_version,
144
+ resolvedVersion: r.resolved_version,
145
+ resolvedAt: r.resolved_at,
146
+ resolution: r.resolution,
147
+ acknowledgedAt: r.acknowledged_at,
148
+ ruleId: r.rule_id,
149
+ evidence: JSON.parse(r.evidence),
150
+ likelyCause: r.likely_cause === null ? null : JSON.parse(r.likely_cause),
151
+ });
152
+ }
153
+ function ruleOf(r) {
154
+ return findingRuleEntry.parse({
155
+ id: r.id,
156
+ tenantId: r.tenant_id,
157
+ kind: r.kind,
158
+ operation: r.operation,
159
+ code: r.code,
160
+ subject: r.subject,
161
+ expiresAt: r.expires_at,
162
+ reason: r.reason,
163
+ createdBy: r.created_by,
164
+ createdAt: r.created_at,
165
+ });
166
+ }
167
+ /**
168
+ * The unexpired rule covering this occurrence, if any. A rule field left NULL matches anything;
169
+ * a set one must equal the occurrence's — and `= NULL` is never true, so a rule naming an
170
+ * operation never covers a finding that has none.
171
+ */
172
+ function activeRule(sql, o, at) {
173
+ const row = sql(`SELECT id FROM _substrat_finding_rules
174
+ WHERE tenant_id = ? AND expires_at > ?
175
+ AND (kind IS NULL OR kind = ?)
176
+ AND (operation IS NULL OR operation = ?)
177
+ AND (code IS NULL OR code = ?)
178
+ AND (subject IS NULL OR subject = ?)
179
+ ORDER BY expires_at DESC, id LIMIT 1`, [o.tenantId, at, o.kind, o.operation, o.code, o.subject])[0];
180
+ return row?.id ?? null;
181
+ }
182
+ const MAX_CODES = 5;
183
+ /**
184
+ * Record one occurrence on its finding, opening it if new. The transitions, in order:
185
+ * - an unexpired rule covers it → `suppressed` (counted all the same: suppressing hides the
186
+ * finding, never the evidence);
187
+ * - it was `resolved` → `open`, `regressed`, and its likely cause is worked out afresh from
188
+ * THIS regression: the version it came back under, when that is not the one it was resolved
189
+ * under, and none otherwise — never a cause left over from an earlier cycle;
190
+ * - it was `suppressed` and no rule covers it any longer → `open`;
191
+ * - otherwise the status stands (`acked` stays acked: somebody is already on it).
192
+ */
193
+ export function observeFinding(sql, o, at) {
194
+ const ruleId = activeRule(sql, o, at);
195
+ const existing = sql(`SELECT id, status, regressed, codes, resolved_version, likely_cause
196
+ FROM _substrat_findings WHERE tenant_id = ? AND kind = ? AND subject = ?`, [o.tenantId, o.kind, o.subject])[0];
197
+ if (!existing) {
198
+ sql(`INSERT INTO _substrat_findings (${FINDING_COLUMNS})
199
+ VALUES (?, ?, ?, ?, ?, 0, ?, ?, ?, ?, ?, ?, 1, ?, ?, ?, NULL, NULL, NULL, NULL, ?, ?, NULL)`, [
200
+ ulid(),
201
+ o.tenantId,
202
+ o.kind,
203
+ o.subject,
204
+ ruleId ? 'suppressed' : 'open',
205
+ o.severity,
206
+ o.title,
207
+ o.operation,
208
+ JSON.stringify(o.code ? [o.code] : []),
209
+ o.vertical,
210
+ o.scopeId,
211
+ at,
212
+ at,
213
+ o.version,
214
+ ruleId,
215
+ JSON.stringify(o.evidence),
216
+ ]);
217
+ return;
218
+ }
219
+ let status = existing.status;
220
+ let regressed = existing.regressed;
221
+ let likelyCause = existing.likely_cause;
222
+ if (ruleId) {
223
+ status = 'suppressed';
224
+ }
225
+ else if (status === 'resolved') {
226
+ status = 'open';
227
+ regressed = 1;
228
+ likelyCause = null;
229
+ if (o.version !== null && o.version !== existing.resolved_version) {
230
+ const cause = {
231
+ kind: 'deploy',
232
+ version: o.version,
233
+ reason: existing.resolved_version
234
+ ? `resolved under ${existing.resolved_version}, seen again under ${o.version}`
235
+ : `seen again under ${o.version} after it was resolved`,
236
+ };
237
+ likelyCause = JSON.stringify(cause);
238
+ }
239
+ }
240
+ else if (status === 'suppressed') {
241
+ status = 'open';
242
+ }
243
+ const codes = JSON.parse(existing.codes);
244
+ const nextCodes = o.code ? [o.code, ...codes.filter((c) => c !== o.code)].slice(0, MAX_CODES) : codes;
245
+ sql(`UPDATE _substrat_findings SET
246
+ status = ?, regressed = ?, rule_id = ?, likely_cause = ?, codes = ?,
247
+ seen_count = seen_count + 1, last_seen = ?,
248
+ last_version = COALESCE(?, last_version), vertical = COALESCE(?, vertical), scope_id = COALESCE(?, scope_id)
249
+ WHERE id = ?`, [
250
+ status,
251
+ regressed,
252
+ status === 'suppressed' ? ruleId : null,
253
+ likelyCause,
254
+ JSON.stringify(nextCodes),
255
+ at,
256
+ o.version,
257
+ o.vertical,
258
+ o.scopeId,
259
+ existing.id,
260
+ ]);
261
+ }
262
+ /**
263
+ * Findings, most recently seen first. No cursor, like the issue read it projects: the
264
+ * cardinality is the number of distinct shapes a tenant has, and `limit` bounds it.
265
+ */
266
+ export function listFindings(sql, filter = {}) {
267
+ const where = [];
268
+ const params = [];
269
+ if (filter.tenantId !== undefined) {
270
+ where.push('tenant_id = ?');
271
+ params.push(filter.tenantId);
272
+ }
273
+ if (filter.status !== undefined) {
274
+ where.push('status = ?');
275
+ params.push(filter.status);
276
+ }
277
+ if (filter.kind !== undefined) {
278
+ where.push('kind = ?');
279
+ params.push(filter.kind);
280
+ }
281
+ params.push(assertRowLimit('limit', filter.limit ?? 100));
282
+ const rows = sql(`SELECT ${FINDING_COLUMNS} FROM _substrat_findings` +
283
+ (where.length ? ` WHERE ${where.join(' AND ')}` : '') +
284
+ ' ORDER BY last_seen DESC, id LIMIT ?', params);
285
+ return rows.map(findingOf);
286
+ }
287
+ /**
288
+ * A person's verdict: acknowledge, resolve, or reopen. Keyed on (tenant, id), so a tenant can
289
+ * never move another tenant's finding by guessing its id. Reopening a suppressed finding lifts
290
+ * it out of its rule for now; the next occurrence the rule still covers suppresses it again —
291
+ * revoking the rule is what ends a suppression.
292
+ */
293
+ export function setFindingStatus(sql, tenantId, id, status, at, audit) {
294
+ const existing = sql(`SELECT ${FINDING_COLUMNS} FROM _substrat_findings WHERE tenant_id = ? AND id = ?`, [
295
+ tenantId,
296
+ id,
297
+ ])[0];
298
+ if (!existing)
299
+ return undefined;
300
+ const resolved = status === 'resolved';
301
+ const [after] = sql(`UPDATE _substrat_findings SET status = ?, rule_id = NULL, regressed = ?, resolved_at = ?,
302
+ resolved_version = ?, resolution = ?, acknowledged_at = ?, likely_cause = ?
303
+ WHERE id = ? RETURNING ${FINDING_COLUMNS}`, [
304
+ status,
305
+ resolved ? 0 : existing.regressed,
306
+ resolved ? at : existing.resolved_at,
307
+ resolved ? existing.last_version : existing.resolved_version,
308
+ resolved ? 'verdict' : existing.resolution,
309
+ status === 'acked' ? at : status === 'open' ? null : existing.acknowledged_at,
310
+ // A resolve closes the cycle its cause explained; the next regression names its own.
311
+ resolved ? null : existing.likely_cause,
312
+ id,
313
+ ]);
314
+ const change = { before: findingOf(existing), after: findingOf(after) };
315
+ audit({
316
+ action: 'setFindingStatus',
317
+ target: { tenantId, vertical: change.after.vertical },
318
+ before: { id, status: change.before.status },
319
+ after: { id, status: change.after.status },
320
+ });
321
+ return change;
322
+ }
323
+ /**
324
+ * A rule expires in the future and within `FINDING_RULE_MAX_DAYS` of `at`. A host whose store
325
+ * sits behind an RPC hop calls `createFindingRule` as a replied method, so this keeps its code.
326
+ */
327
+ function assertFindingRuleExpiry(expiresAt, at) {
328
+ if (!(expiresAt > at))
329
+ throw substratError('validation_failed', 'a suppress rule must expire in the future');
330
+ const ceiling = new Date(Date.parse(at) + FINDING_RULE_MAX_DAYS * 86_400_000).toISOString();
331
+ if (expiresAt > ceiling) {
332
+ throw substratError('validation_failed', `a suppress rule lasts at most ${FINDING_RULE_MAX_DAYS} days`);
333
+ }
334
+ }
335
+ /**
336
+ * Create a suppress rule and apply it to the findings it covers now: each one not already
337
+ * resolved becomes `suppressed` under it. Returns the rule and the ids it suppressed, for the
338
+ * caller's audit row. The input is parsed by the caller (`findingRuleInput`); the expiry is
339
+ * held here (`assertFindingRuleExpiry`), against the same `at` every other write in the call uses.
340
+ */
341
+ export function createFindingRule(sql, tenantId, input, createdBy, at, audit) {
342
+ assertFindingRuleExpiry(input.expiresAt, at);
343
+ const id = ulid();
344
+ const [rule] = sql(`INSERT INTO _substrat_finding_rules (${RULE_COLUMNS}) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
345
+ RETURNING ${RULE_COLUMNS}`, [
346
+ id,
347
+ tenantId,
348
+ input.kind ?? null,
349
+ input.operation ?? null,
350
+ input.code ?? null,
351
+ input.subject ?? null,
352
+ input.expiresAt,
353
+ input.reason,
354
+ createdBy,
355
+ at,
356
+ ]);
357
+ const covered = sql(`UPDATE _substrat_findings SET status = 'suppressed', rule_id = ?
358
+ WHERE tenant_id = ? AND status IN ('open', 'acked', 'suppressed')
359
+ AND (? IS NULL OR kind = ?)
360
+ AND (? IS NULL OR operation = ?)
361
+ AND (? IS NULL OR EXISTS (SELECT 1 FROM json_each(codes) WHERE value = ?))
362
+ AND (? IS NULL OR subject = ?)
363
+ RETURNING id`, [
364
+ id,
365
+ tenantId,
366
+ input.kind ?? null,
367
+ input.kind ?? null,
368
+ input.operation ?? null,
369
+ input.operation ?? null,
370
+ input.code ?? null,
371
+ input.code ?? null,
372
+ input.subject ?? null,
373
+ input.subject ?? null,
374
+ ]);
375
+ const created = { rule: ruleOf(rule), suppressed: covered.map((c) => c.id) };
376
+ audit({
377
+ action: 'createFindingRule',
378
+ target: { tenantId, vertical: null },
379
+ before: null,
380
+ after: { rule: created.rule, suppressed: covered.length },
381
+ });
382
+ return created;
383
+ }
384
+ /**
385
+ * End a rule now. Its findings stay suppressed until their next occurrence, which then opens
386
+ * them — the same thing an expiry does, brought forward.
387
+ */
388
+ export function revokeFindingRule(sql, tenantId, ruleId, at, audit) {
389
+ const existing = sql(`SELECT ${RULE_COLUMNS} FROM _substrat_finding_rules WHERE tenant_id = ? AND id = ?`, [
390
+ tenantId,
391
+ ruleId,
392
+ ])[0];
393
+ if (!existing)
394
+ return undefined;
395
+ // An already-expired rule keeps its expiry: revoking it changes nothing.
396
+ const expiresAt = existing.expires_at > at ? at : existing.expires_at;
397
+ sql('UPDATE _substrat_finding_rules SET expires_at = ? WHERE id = ?', [expiresAt, ruleId]);
398
+ const change = { before: ruleOf(existing), after: ruleOf({ ...existing, expires_at: expiresAt }) };
399
+ audit({
400
+ action: 'revokeFindingRule',
401
+ target: { tenantId, vertical: null },
402
+ before: { id: ruleId, expiresAt: change.before.expiresAt },
403
+ after: { id: ruleId, expiresAt: change.after.expiresAt },
404
+ });
405
+ return change;
406
+ }
407
+ /** A tenant's rules, newest first; `activeAt` keeps only those unexpired at that instant. */
408
+ export function listFindingRules(sql, tenantId, activeAt, limit = 100) {
409
+ const where = [];
410
+ const params = [];
411
+ if (tenantId !== undefined) {
412
+ where.push('tenant_id = ?');
413
+ params.push(tenantId);
414
+ }
415
+ if (activeAt !== undefined) {
416
+ where.push('expires_at > ?');
417
+ params.push(activeAt);
418
+ }
419
+ params.push(assertRowLimit('limit', limit));
420
+ return sql(`SELECT ${RULE_COLUMNS} FROM _substrat_finding_rules` +
421
+ (where.length ? ` WHERE ${where.join(' AND ')}` : '') +
422
+ ' ORDER BY created_at DESC, id DESC LIMIT ?', params).map(ruleOf);
423
+ }
424
+ /**
425
+ * The findings retention pass, bounded by `limit` per step, oldest first. Run in ONE unit with
426
+ * `audit`, which the adapter points at its own admin-log write, so a stale resolution never
427
+ * lands without its row.
428
+ *
429
+ * An `open` or `acked` finding is never deleted for going quiet: deleting it would take it out
430
+ * of the inbox of whoever was watching it with nothing said. One quiet for the whole
431
+ * `FINDING_RETENTION_DAYS` is RESOLVED as `stale` instead, and audited. A `resolved` or
432
+ * `suppressed` finding is deleted once both its last occurrence and its last resolve are past
433
+ * the horizon — so a stale-resolved finding stays readable for one more window. An expired rule
434
+ * is deleted once its expiry is past the horizon; the admin log keeps its story.
435
+ */
436
+ export function pruneFindings(sql, nowMs, limit, audit) {
437
+ assertRowLimit('limit', limit);
438
+ const now = new Date(nowMs).toISOString();
439
+ const horizon = new Date(nowMs - FINDING_RETENTION_DAYS * 86_400_000).toISOString();
440
+ const quiet = sql(`SELECT id, tenant_id, vertical, status FROM _substrat_findings
441
+ WHERE last_seen < ? AND status IN ('open', 'acked') ORDER BY last_seen LIMIT ?`, [horizon, limit]);
442
+ if (quiet.length > 0) {
443
+ sql(`UPDATE _substrat_findings SET status = 'resolved', resolution = 'stale', resolved_at = ?,
444
+ resolved_version = last_version, regressed = 0, likely_cause = NULL
445
+ WHERE id IN (SELECT value FROM json_each(?))`, [now, JSON.stringify(quiet.map((q) => q.id))]);
446
+ }
447
+ for (const q of quiet) {
448
+ audit({
449
+ action: 'resolveStaleFinding',
450
+ target: { tenantId: q.tenant_id, vertical: q.vertical },
451
+ before: { id: q.id, status: q.status },
452
+ after: { id: q.id, status: 'resolved', resolution: 'stale' },
453
+ });
454
+ }
455
+ const deleted = sql(`DELETE FROM _substrat_findings WHERE rowid IN (
456
+ SELECT rowid FROM _substrat_findings
457
+ WHERE last_seen < ? AND status IN ('resolved', 'suppressed')
458
+ AND (resolved_at IS NULL OR resolved_at < ?)
459
+ ORDER BY last_seen LIMIT ?) RETURNING 1`, [horizon, horizon, limit]).length;
460
+ const rulesDeleted = sql(boundedRetentionDelete('_substrat_finding_rules', 'expires_at'), [horizon, limit]).length;
461
+ return { deleted, staled: quiet.length, rulesDeleted };
462
+ }
463
+ //# sourceMappingURL=findings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findings.js","sourceRoot":"","sources":["../src/findings.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,GAad,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE/F;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,oBAAoB,CAAC;AAE3D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4C3B,CAAC;AAiBF;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,CAQnC;IACC,IAAI,CAAC,CAAC,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC7B,MAAM,WAAW,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC7C,OAAO;QACL,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,SAAS;QACnB,KAAK,EAAE,GAAG,CAAC,CAAC,SAAS,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC9F,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI;QACpB,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,IAAI;QAC5B,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI;QAC1B,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI;QAC1B,QAAQ,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE;KAClD,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,CAUjC;IACC,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACvD,MAAM,IAAI,GAAG;QACX,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,OAAO,EAAE,CAAC,CAAC,IAAI;QACf,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,IAAI;QAC5B,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI;QAC1B,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI;KAC3B,CAAC;IACF,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC1B,OAAO;YACL,GAAG,IAAI;YACP,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE,UAAU;YACpB,KAAK,EAAE,aAAa,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,SAAS;YAClD,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI;YAC9B,QAAQ,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;SACnE,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC3B,OAAO;YACL,GAAG,IAAI;YACP,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,SAAS;YACnB,KAAK,EAAE,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,iBAAiB;YAChD,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;SACpE,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAyCD,MAAM,eAAe,GACnB,0GAA0G;IAC1G,+GAA+G;IAC/G,iCAAiC,CAAC;AACpC,MAAM,YAAY,GAAG,2FAA2F,CAAC;AAEjH,SAAS,SAAS,CAAC,CAAa;IAC9B,OAAO,YAAY,CAAC,KAAK,CAAC;QACxB,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,QAAQ,EAAE,CAAC,CAAC,SAAS;QACrB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,SAAS,EAAE,CAAC,CAAC,SAAS,KAAK,CAAC;QAC5B,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAY;QACrC,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,OAAO,EAAE,CAAC,CAAC,QAAQ;QACnB,KAAK,EAAE,CAAC,CAAC,UAAU;QACnB,SAAS,EAAE,CAAC,CAAC,UAAU;QACvB,QAAQ,EAAE,CAAC,CAAC,SAAS;QACrB,WAAW,EAAE,CAAC,CAAC,YAAY;QAC3B,eAAe,EAAE,CAAC,CAAC,gBAAgB;QACnC,UAAU,EAAE,CAAC,CAAC,WAAW;QACzB,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,cAAc,EAAE,CAAC,CAAC,eAAe;QACjC,MAAM,EAAE,CAAC,CAAC,OAAO;QACjB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAY;QAC3C,WAAW,EAAE,CAAC,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAa;KACtF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,MAAM,CAAC,CAAU;IACxB,OAAO,gBAAgB,CAAC,KAAK,CAAC;QAC5B,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,QAAQ,EAAE,CAAC,CAAC,SAAS;QACrB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,SAAS,EAAE,CAAC,CAAC,UAAU;QACvB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,SAAS,EAAE,CAAC,CAAC,UAAU;QACvB,SAAS,EAAE,CAAC,CAAC,UAAU;KACxB,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,SAAS,UAAU,CACjB,GAAiB,EACjB,CAAqG,EACrG,EAAU;IAEV,MAAM,GAAG,GAAG,GAAG,CACb;;;;;;2CAMuC,EACvC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CACzD,CAAC,CAAC,CAA+B,CAAC;IACnC,OAAO,GAAG,EAAE,EAAE,IAAI,IAAI,CAAC;AACzB,CAAC;AAED,MAAM,SAAS,GAAG,CAAC,CAAC;AAEpB;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,GAAiB,EAAE,CAAqB,EAAE,EAAU;IACjF,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,GAAG,CAClB;gFAC4E,EAC5E,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAChC,CAAC,CAAC,CAAgH,CAAC;IACpH,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,GAAG,CACD,mCAAmC,eAAe;mGAC2C,EAC7F;YACE,IAAI,EAAE;YACN,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,OAAO;YACT,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM;YAC9B,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,SAAS;YACX,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACtC,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,OAAO;YACT,EAAE;YACF,EAAE;YACF,CAAC,CAAC,OAAO;YACT,MAAM;YACN,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;SAC3B,CACF,CAAC;QACF,OAAO;IACT,CAAC;IACD,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAuB,CAAC;IAC9C,IAAI,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;IACnC,IAAI,WAAW,GAAG,QAAQ,CAAC,YAAY,CAAC;IACxC,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,GAAG,YAAY,CAAC;IACxB,CAAC;SAAM,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QACjC,MAAM,GAAG,MAAM,CAAC;QAChB,SAAS,GAAG,CAAC,CAAC;QACd,WAAW,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,gBAAgB,EAAE,CAAC;YAClE,MAAM,KAAK,GAAuB;gBAChC,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,MAAM,EAAE,QAAQ,CAAC,gBAAgB;oBAC/B,CAAC,CAAC,kBAAkB,QAAQ,CAAC,gBAAgB,sBAAsB,CAAC,CAAC,OAAO,EAAE;oBAC9E,CAAC,CAAC,oBAAoB,CAAC,CAAC,OAAO,wBAAwB;aAC1D,CAAC;YACF,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;SAAM,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;QACnC,MAAM,GAAG,MAAM,CAAC;IAClB,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAa,CAAC;IACrD,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACtG,GAAG,CACD;;;;kBAIc,EACd;QACE,MAAM;QACN,SAAS;QACT,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;QACvC,WAAW;QACX,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;QACzB,EAAE;QACF,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,OAAO;QACT,QAAQ,CAAC,EAAE;KACZ,CACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,GAAiB,EAAE,MAAM,GAAkB,EAAE;IACxE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAG,GAAG,CACd,UAAU,eAAe,0BAA0B;QACjD,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,sCAAsC,EACxC,MAAM,CACS,CAAC;IAClB,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC7B,CAAC;AAmBD;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,GAAiB,EACjB,QAAkB,EAClB,EAAU,EACV,MAA0B,EAC1B,EAAU,EACV,KAAkC;IAElC,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,eAAe,yDAAyD,EAAE;QACvG,QAAQ;QACR,EAAE;KACH,CAAC,CAAC,CAAC,CAA2B,CAAC;IAChC,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChC,MAAM,QAAQ,GAAG,MAAM,KAAK,UAAU,CAAC;IACvC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CACjB;;8BAE0B,eAAe,EAAE,EAC3C;QACE,MAAM;QACN,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS;QACjC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW;QACpC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB;QAC5D,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU;QAC1C,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe;QAC7E,qFAAqF;QACrF,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY;QACvC,EAAE;KACH,CACc,CAAC;IAClB,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,KAAM,CAAC,EAAE,CAAC;IACzE,KAAK,CAAC;QACJ,MAAM,EAAE,kBAAkB;QAC1B,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE;QACrD,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;QAC5C,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;KAC3C,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,SAAS,uBAAuB,CAAC,SAAiB,EAAE,EAAU;IAC5D,IAAI,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC;QAAE,MAAM,aAAa,CAAC,mBAAmB,EAAE,2CAA2C,CAAC,CAAC;IAC7G,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,qBAAqB,GAAG,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5F,IAAI,SAAS,GAAG,OAAO,EAAE,CAAC;QACxB,MAAM,aAAa,CAAC,mBAAmB,EAAE,iCAAiC,qBAAqB,OAAO,CAAC,CAAC;IAC1G,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,GAAiB,EACjB,QAAkB,EAClB,KAAuB,EACvB,SAAiB,EACjB,EAAU,EACV,KAAkC;IAElC,uBAAuB,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC7C,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;IAClB,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAChB,wCAAwC,YAAY;iBACvC,YAAY,EAAE,EAC3B;QACE,EAAE;QACF,QAAQ;QACR,KAAK,CAAC,IAAI,IAAI,IAAI;QAClB,KAAK,CAAC,SAAS,IAAI,IAAI;QACvB,KAAK,CAAC,IAAI,IAAI,IAAI;QAClB,KAAK,CAAC,OAAO,IAAI,IAAI;QACrB,KAAK,CAAC,SAAS;QACf,KAAK,CAAC,MAAM;QACZ,SAAS;QACT,EAAE;KACH,CACW,CAAC;IACf,MAAM,OAAO,GAAG,GAAG,CACjB;;;;;;mBAMe,EACf;QACE,EAAE;QACF,QAAQ;QACR,KAAK,CAAC,IAAI,IAAI,IAAI;QAClB,KAAK,CAAC,IAAI,IAAI,IAAI;QAClB,KAAK,CAAC,SAAS,IAAI,IAAI;QACvB,KAAK,CAAC,SAAS,IAAI,IAAI;QACvB,KAAK,CAAC,IAAI,IAAI,IAAI;QAClB,KAAK,CAAC,IAAI,IAAI,IAAI;QAClB,KAAK,CAAC,OAAO,IAAI,IAAI;QACrB,KAAK,CAAC,OAAO,IAAI,IAAI;KACtB,CACkB,CAAC;IACtB,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,IAAK,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAC9E,KAAK,CAAC;QACJ,MAAM,EAAE,mBAAmB;QAC3B,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;QACpC,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE;KAC1D,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,GAAiB,EACjB,QAAkB,EAClB,MAAc,EACd,EAAU,EACV,KAAkC;IAElC,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,YAAY,8DAA8D,EAAE;QACzG,QAAQ;QACR,MAAM;KACP,CAAC,CAAC,CAAC,CAAwB,CAAC;IAC7B,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChC,yEAAyE;IACzE,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;IACtE,GAAG,CAAC,gEAAgE,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3F,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,GAAG,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;IACnG,KAAK,CAAC;QACJ,MAAM,EAAE,mBAAmB;QAC3B,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;QACpC,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE;QAC1D,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE;KACzD,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,gBAAgB,CAC9B,GAAiB,EACjB,QAA8B,EAC9B,QAAiB,EACjB,KAAK,GAAG,GAAG;IAEX,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxB,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5C,OACE,GAAG,CACD,UAAU,YAAY,+BAA+B;QACnD,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,4CAA4C,EAC9C,MAAM,CAET,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAChB,CAAC;AAYD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAC3B,GAAiB,EACjB,KAAa,EACb,KAAa,EACb,KAAkC;IAElC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,GAAG,sBAAsB,GAAG,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;IACpF,MAAM,KAAK,GAAG,GAAG,CACf;qFACiF,EACjF,CAAC,OAAO,EAAE,KAAK,CAAC,CACiD,CAAC;IACpE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,GAAG,CACD;;oDAE8C,EAC9C,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAC9C,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,KAAK,CAAC;YACJ,MAAM,EAAE,qBAAqB;YAC7B,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,SAAqB,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE;YACnE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAuB,EAAE;YACvD,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE;SAC7D,CAAC,CAAC;IACL,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,CACjB;;;;gDAI4C,EAC5C,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAC1B,CAAC,MAAM,CAAC;IACT,MAAM,YAAY,GAAG,GAAG,CAAC,sBAAsB,CAAC,yBAAyB,EAAE,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IACnH,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC;AACzD,CAAC"}
package/dist/index.d.ts CHANGED
@@ -36,28 +36,32 @@ export type { ResolvedScopeRecord } from './scope-record.js';
36
36
  export { assertAllowed, denyAllChecker, PermissionDenied, UNSAFE_allowAllChecker, } from './permission-checker.js';
37
37
  export { actorOf, asPrincipal, isUnknownRoleError, unknownRoleError } from './permission-checker.js';
38
38
  export type { PermissionChecker } from './permission-checker.js';
39
- export { ancestorsWithin, createTupleEvaluator, reachesWithin, tenantCoverage } from './permission-eval.js';
39
+ export { ancestorsWithin, createTupleEvaluator, joinedMembershipExpiry, liveOrgMembership, memberAddedAudit, orgChangeBound, reachesWithin, tenantCoverage, } from './permission-eval.js';
40
40
  export type { PermissionTupleReader, TenantDirectoryReader, PermissionTupleRow, ScopeTupleReader, } from './permission-eval.js';
41
41
  export { CAPABILITY_COLUMNS, CAPABILITY_DDL, CAPABILITY_EXCHANGE_OPERATION, CAPABILITY_SESSION_PRUNE_BATCH, WITHHELD_SECRET, assertNoSecret, capabilityAttachmentWriteRefused, capabilityByIdQuery, capabilityExchangeable, capabilityGrantOf, capabilityListQuery, capabilityLive, capabilityRecordOf, capabilityTokenHash, carriesSecret, checkBecomeInput, createCapabilityVerbs, exchangeCapability, guardSecrets, mintBecomeCapability, mintCapabilitySecret, mintCapabilitySessionToken, persistedText, readCapabilities, readCapabilityPage, plausibleSessionToken, plausibleCapabilitySecret, redactSecrets, redactSecretText, resolveCapabilitySession, revokeCapabilityAsPlatform, } from './capability.js';
42
42
  export type { CapabilityGrantView, CapabilityRow, CapabilityVerbDeps, CapabilityVerbs, } from './capability.js';
43
43
  export { createEntityEdgeVerbs } from './entity-edges.js';
44
44
  export type { EntityEdgeDeps, EntityEdgeVerbs } from './entity-edges.js';
45
+ export { addStatePlans, createEntityStateVerbs, entityStateMigrations, entityStatePlans, entityStateTriggerDdl, assertEntityStateIntact, ENTITY_STATE_MOVES_DDL, ENTITY_STATE_MOVES_TABLE, statefulTablesOf, entityStateWhere, stateColumnsOf, } from './entity-state.js';
46
+ export type { EntityStateDeps, EntityStatePlan, EntityStateVerbs, StateColumns } from './entity-state.js';
47
+ export { TRASH_SCAN_BUDGET, createTrashedReads, searchStateWhere, uncheckedView } from './entity-state-reads.js';
48
+ export type { TrashedReadDeps, TrashedReads } from './entity-state-reads.js';
45
49
  export { createAtomic } from './sub-transaction.js';
46
50
  export type { RunSub, AtomicMarks } from './sub-transaction.js';
47
51
  export { DEFAULT_SEARCH_LIMIT, MAX_SEARCH_LIMIT, MIN_SEARCH_TERM, NotSearchable, SEARCH_INDEX_PREFIX, SearchTermTooShort, isSearchIndexTable, searchIndexDdl, searchIndexMigrations, searchIndexPlans, searchLimit, searchMatchExpression, searchPlansByEntityType, searchQuery, } from './search-index.js';
48
52
  export type { SearchHit, SearchIndexPlan, SearchOptions, SearchTokenizer, SearchableDeclaration, } from './search-index.js';
49
- export { ATTACHMENT_SEARCH_OWNER_MAX, ATTACHMENT_SEARCH_OWNERS_SQL, ATTACHMENT_SEARCH_SQL, ATTACHMENT_SEARCH_TOO_MANY_OWNERS, ATTACHMENT_TEXT_DDL, ATTACHMENT_TEXT_JOB, ATTACHMENT_TEXT_MODULE, assertJobRegistrable, attachmentRecordOfRow, attachmentTextJob, enqueueAttachmentText, isAttachmentTextRun, readAttachmentText, reconcileAttachmentText, recordAttachmentText, searchAttachments, } from './attachment-text.js';
50
- export type { AttachmentRowShape, AttachmentSearchGate, AttachmentTextSource, AttachmentTextState, AttachmentTextStatus, } from './attachment-text.js';
51
- export { DEFAULT_ATTACHMENT_TEXT_BOUNDS, EXTRACTION_STRIDE, assertAttachmentExtractors, assertAttachmentTextBounds, chooseAttachmentExtractor, inputBoundRefusal, isPositiveIntegerBound, mediaTypeOf, normalizeExtractedText, runAttachmentExtractor, truncateUtf8, } from './attachment-extractor.js';
53
+ export { ATTACHMENT_SEARCH_OWNER_MAX, ATTACHMENT_SEARCH_OWNERS_SQL, ATTACHMENT_SEARCH_SQL, ATTACHMENT_SEARCH_TOO_MANY_OWNERS, ATTACHMENT_TEXT_BACKFILL_BATCH, ATTACHMENT_TEXT_BACKFILL_JOB, ATTACHMENT_TEXT_DDL, ATTACHMENT_TEXT_JOB, ATTACHMENT_TEXT_MODULE, assertJobRegistrable, attachmentRecordOfRow, attachmentTextBackfillJob, attachmentTextJob, enqueueAttachmentText, kernelJobFor, isAttachmentTextRun, queueAttachmentTextBackfill, readAttachmentText, reconcileAttachmentText, recordAttachmentText, searchAttachments, startAttachmentTextBackfill, } from './attachment-text.js';
54
+ export type { AttachmentRowShape, AttachmentTextBackfillBatch, KernelJobHandlers, AttachmentSearchGate, AttachmentTextSource, AttachmentTextState, AttachmentTextStatus, } from './attachment-text.js';
55
+ export { DEFAULT_ATTACHMENT_TEXT_BOUNDS, EXTRACTION_STRIDE, assertAttachmentExtractors, assertAttachmentTextBounds, chooseAttachmentExtractor, inputBoundRefusal, isPositiveIntegerBound, mediaTypeOf, normalizeExtractedText, resolveAttachmentTextBounds, runAttachmentExtractor, truncateUtf8, } from './attachment-extractor.js';
52
56
  export type { AttachmentExtractor, AttachmentExtractorInput, AttachmentExtractorResult, AttachmentTextBounds, ExtractionOutcome, ExtractionSignal, } from './attachment-extractor.js';
53
- export { CursorMismatch, FilterNotDeclared, LIST_INDEX_PREFIX, NotListable, SortNotDeclared, cursorOf, isListIndexName, listIndexColumns, listIndexDdl, listIndexMigrations, listIndexPlans, listPlansByEntityType, listQuery, splitCursor, } from './list-index.js';
57
+ export { CursorMismatch, FilterNotDeclared, LIST_INDEX_PREFIX, NotListable, SortNotDeclared, cursorOf, isListIndexName, listIndexColumns, listIndexDdl, listIndexMigrations, listIndexPlans, stateListIndexNames, listPlansByEntityType, listQuery, splitCursor, } from './list-index.js';
54
58
  export type { ComposedListQuery, ListDeclaration, ListIndexPlan, ListQueryParams, } from './list-index.js';
55
59
  export { moduleMigrations } from './module-migrations.js';
56
60
  export { frozenClock, manualClock } from './clock.js';
57
61
  export type { ManualClock } from './clock.js';
58
62
  export { createUlid, ulid, ulidCeiling, ulidFloor, ulidTime, type UlidMint } from './ulid.js';
59
63
  export { assertReadOnlyQuery } from './read-only-sql.js';
60
- export { assertNoSpineReference, assertNoSpineWrite, guardSpine } from './spine-guard.js';
64
+ export { assertNoReservedColumnWrite, assertNoSpineReference, assertNoSpineWrite, assertNoStatefulDdl, changesSchema, guardSpine } from './spine-guard.js';
61
65
  export { DO_SQL_LIMITS, tooManyResultColumns, tooManyTableColumns, assertWithinSqlLimits, guardSqlLimits, } from './sql-limits.js';
62
66
  export { assertPermissionKey } from './check-key.js';
63
67
  export { assertModuleEnqueueableKind } from './platform-kinds.js';
@@ -86,7 +90,9 @@ export { PLATFORM_REQUEST_COLUMNS, platformRequestHistoryQuery, platformRequestO
86
90
  export type { PlatformRequestRawRow } from './platform-request-query.js';
87
91
  export { CANCELLED_INTENT_NOTE, CANCELLED_JOB_NOTE, DELIVERY_ERROR_REDACTION_SQL, intentPayloadCarriesSubject, JOB_RUN_REDACTION_SQL, JOB_STEP_REDACTION_SQL, PLATFORM_REQUEST_REDACTION_SQL, platformRequestRedactionParams, platformRequestRedactionQuery, REDACTED_DELIVERY_NOTE, REDACTED_INTENT_MARKER, REDACTED_INTENT_NOTE, REDACTED_JOB_NOTE, redactedIntentPayload, redactSubjectJobRuns, REDACTED_FAILURE_NOTE, redactSubjectScopeText, ISSUE_EXEMPLAR_OWNER_BACKFILL_SQL, issueExemplarOwner, redactSubjectDirectoryText, platformIntentFailureMessage, intentIdOfFailureMessage, } from './subject-redaction.js';
88
92
  export type { LegacySubjectRedactionCounts, PlatformRequestRedactionCandidate, RedactionSql, SubjectRedactionCounts, SubjectTextTarget, IssueExemplarOwner, } from './subject-redaction.js';
93
+ export { FINDINGS_DDL, FINDING_RETENTION_DAYS, createFindingRule, findingOfOpsFailure, findingOfSweepRun, pruneFindings, listFindingRules, listFindings, observeFinding, revokeFindingRule, setFindingStatus, type FindingPruneReport, type FindingAudit, type FindingChange, type FindingObservation, } from './findings.js';
89
94
  export { effectiveRoleGrantQuery, seatScopeTuple } from './scope-tuple-seat.js';
95
+ export { applyScopeRoleChange, changeScopeRole, combineCoverage, revokeScopeRoles, scopeRoleHolders, type Atomically, type RoleBound, type ScopeRoleHolder } from './scope-role-admin.js';
90
96
  export { repointScopeGrants, type RepointSource } from './scope-repoint.js';
91
97
  export { COPY_ORIGIN_DDL, capabilitiesForLoad, clearCopyMarker, emittedHere, isCopyLoad, IS_COPY_SQL, MARK_COPY_ORIGIN_SQL, markCopyOrigin, settleCopiedWork } from './scope-copy.js';
92
98
  export { isLifecycleWrite, lifecycleAfterLoad, lifecycleReceipt, lifecycleRefusal, readLifecycle, settleLifecycleAfterLoad, SCOPE_LIFECYCLE_KEY, WRITE_LIFECYCLE_SQL, writeLifecycle } from './scope-lifecycle.js';
@@ -173,7 +179,7 @@ invocationLevelOf,
173
179
  /** @deprecated Import from `@substrat-run/contracts` (#1978); this kernel export goes in a later release. */
174
180
  type InvocationLevel, } from '@substrat-run/contracts/invocation-record';
175
181
  export { VERTICAL_EVENTS_DDL, EXPORT_HOPS_SQL, emptyImportResult, IMPORT_CURSORS_SQL, IMPORT_CURSOR_OF_SQL, IMPORT_CURSOR_ADVANCE_SQL, IMPORT_RECORD_SQL, OUTBOX_MARK_SQL, emittedSinceQuery, emittedReportOf, moveImportCursor, importCursorSourceOf, exportedSinceQuery, exportReadQuery, exportReadPlan, exportsOf, planExportBatch, withheldNote, CrossVerticalRegistry, type ExportRow, type RegisteredImport, } from './vertical-events.js';
176
- export { attributedHost } from './attribution.js';
182
+ export { attributedHost, attributedView, type ConsumerDelivery, type HostAttribution } from './attribution.js';
177
183
  export { isDeliveryRefusal, refuseDelivery, refusalJournalText, REFUSAL_JOURNAL_PREFIX, type DeliveryRefusal, } from './delivery-refusal.js';
178
184
  export { MEMBER_ADD_REQUESTED, MEMBER_REMOVE_REQUESTED, MEMBERSHIP_EXECUTOR_ID, MEMBERSHIP_REMOVAL_SKEW_MS, membershipEntity, membershipRemoveExecutorId, memberRemoveRequestedPayload, registerMembershipExecutor, type MemberRemoveRequestedPayload, type MembershipExecutorOptions, } from './membership-executor.js';
179
185
  export { membershipFencesBackfillSql, MEMBERSHIP_FENCES_DDL, MEMBERSHIP_FENCES_TABLE, MEMBERSHIP_FENCE_SINCE_SQL, RAISE_MEMBERSHIP_FENCE_SQL, membershipFencesTableExists, } from './membership-fence.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}