@substrat-run/kernel 0.141.0 → 0.143.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.
- package/dist/async-invocation-log.d.ts +1 -1
- package/dist/async-invocation-log.d.ts.map +1 -1
- package/dist/async-invocation-log.js +1 -1
- package/dist/async-invocation-log.js.map +1 -1
- package/dist/attachment-extractor.d.ts +0 -9
- package/dist/attachment-extractor.d.ts.map +1 -1
- package/dist/attachment-extractor.js +2 -2
- package/dist/attachment-extractor.js.map +1 -1
- package/dist/attachment-text.d.ts +0 -5
- package/dist/attachment-text.d.ts.map +1 -1
- package/dist/attachment-text.js +0 -4
- package/dist/attachment-text.js.map +1 -1
- package/dist/attribution.d.ts +0 -7
- package/dist/attribution.d.ts.map +1 -1
- package/dist/attribution.js +0 -7
- package/dist/attribution.js.map +1 -1
- package/dist/audit-outcome.d.ts +60 -2
- package/dist/audit-outcome.d.ts.map +1 -1
- package/dist/audit-outcome.js +63 -3
- package/dist/audit-outcome.js.map +1 -1
- package/dist/capability.d.ts +123 -14
- package/dist/capability.d.ts.map +1 -1
- package/dist/capability.js +266 -16
- package/dist/capability.js.map +1 -1
- package/dist/connector-calls.d.ts +3 -77
- package/dist/connector-calls.d.ts.map +1 -1
- package/dist/connector-calls.js +4 -63
- package/dist/connector-calls.js.map +1 -1
- package/dist/denial-query.d.ts +0 -14
- package/dist/denial-query.d.ts.map +1 -1
- package/dist/denial-query.js +1 -1
- package/dist/denial-query.js.map +1 -1
- package/dist/derived-handlers.d.ts +17 -0
- package/dist/derived-handlers.d.ts.map +1 -0
- package/dist/derived-handlers.js +106 -0
- package/dist/derived-handlers.js.map +1 -0
- package/dist/entity-grant-shape.d.ts +79 -7
- package/dist/entity-grant-shape.d.ts.map +1 -1
- package/dist/entity-grant-shape.js +177 -74
- package/dist/entity-grant-shape.js.map +1 -1
- package/dist/entity-grant.d.ts +0 -5
- package/dist/entity-grant.d.ts.map +1 -1
- package/dist/entity-grant.js +0 -4
- package/dist/entity-grant.js.map +1 -1
- package/dist/entity-state.d.ts +0 -17
- package/dist/entity-state.d.ts.map +1 -1
- package/dist/entity-state.js +2 -2
- package/dist/entity-state.js.map +1 -1
- package/dist/entity-trash.d.ts +2 -2
- package/dist/entity-trash.d.ts.map +1 -1
- package/dist/entity-trash.js +6 -6
- package/dist/entity-trash.js.map +1 -1
- package/dist/grant-scoped-read.d.ts +0 -2
- package/dist/grant-scoped-read.d.ts.map +1 -1
- package/dist/grant-scoped-read.js +2 -2
- package/dist/grant-scoped-read.js.map +1 -1
- package/dist/index.d.ts +58 -139
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +53 -107
- package/dist/index.js.map +1 -1
- package/dist/invocation-line.d.ts +211 -0
- package/dist/invocation-line.d.ts.map +1 -0
- package/dist/invocation-line.js +33 -0
- package/dist/invocation-line.js.map +1 -0
- package/dist/job-run.d.ts +0 -39
- package/dist/job-run.d.ts.map +1 -1
- package/dist/job-run.js +6 -6
- package/dist/job-run.js.map +1 -1
- package/dist/list-index.d.ts +0 -45
- package/dist/list-index.d.ts.map +1 -1
- package/dist/list-index.js +2 -39
- package/dist/list-index.js.map +1 -1
- package/dist/membership-executor.d.ts +2 -1
- package/dist/membership-executor.d.ts.map +1 -1
- package/dist/membership-executor.js +1 -1
- package/dist/membership-executor.js.map +1 -1
- package/dist/meters.d.ts +21 -1
- package/dist/meters.d.ts.map +1 -1
- package/dist/meters.js +0 -0
- package/dist/meters.js.map +1 -1
- package/dist/migration-digest.d.ts +0 -12
- package/dist/migration-digest.d.ts.map +1 -1
- package/dist/migration-digest.js +1 -1
- package/dist/migration-digest.js.map +1 -1
- package/dist/module-log.d.ts +5 -4
- package/dist/module-log.d.ts.map +1 -1
- package/dist/module-log.js +5 -4
- package/dist/module-log.js.map +1 -1
- package/dist/module-operations.d.ts +146 -0
- package/dist/module-operations.d.ts.map +1 -0
- package/dist/module-operations.js +174 -0
- package/dist/module-operations.js.map +1 -0
- package/dist/peer.d.ts +0 -2
- package/dist/peer.d.ts.map +1 -1
- package/dist/peer.js +0 -4
- package/dist/peer.js.map +1 -1
- package/dist/permission-checker.d.ts +23 -0
- package/dist/permission-checker.d.ts.map +1 -1
- package/dist/permission-checker.js.map +1 -1
- package/dist/permission-eval.d.ts.map +1 -1
- package/dist/permission-eval.js +77 -21
- package/dist/permission-eval.js.map +1 -1
- package/dist/platform-request-query.d.ts +6 -6
- package/dist/platform-request-query.d.ts.map +1 -1
- package/dist/platform-request-query.js +23 -7
- package/dist/platform-request-query.js.map +1 -1
- package/dist/platform-sweep.d.ts +107 -3
- package/dist/platform-sweep.d.ts.map +1 -1
- package/dist/platform-sweep.js +131 -2
- package/dist/platform-sweep.js.map +1 -1
- package/dist/refusal-query.d.ts +0 -11
- package/dist/refusal-query.d.ts.map +1 -1
- package/dist/refusal-query.js +1 -1
- package/dist/refusal-query.js.map +1 -1
- package/dist/refusals.d.ts +1 -3
- package/dist/refusals.d.ts.map +1 -1
- package/dist/refusals.js +0 -2
- package/dist/refusals.js.map +1 -1
- package/dist/row-decode.d.ts +16 -1
- package/dist/row-decode.d.ts.map +1 -1
- package/dist/row-decode.js +18 -6
- package/dist/row-decode.js.map +1 -1
- package/dist/scope-copy-ledger.d.ts +49 -2
- package/dist/scope-copy-ledger.d.ts.map +1 -1
- package/dist/scope-copy-ledger.js +44 -1
- package/dist/scope-copy-ledger.js.map +1 -1
- package/dist/scope-host.d.ts +100 -110
- package/dist/scope-host.d.ts.map +1 -1
- package/dist/scope-host.js +0 -17
- package/dist/scope-host.js.map +1 -1
- package/dist/scope-lifecycle.d.ts +0 -21
- package/dist/scope-lifecycle.d.ts.map +1 -1
- package/dist/scope-lifecycle.js +1 -1
- package/dist/scope-lifecycle.js.map +1 -1
- package/dist/scope-role-admin.d.ts +0 -6
- package/dist/scope-role-admin.d.ts.map +1 -1
- package/dist/scope-role-admin.js +1 -1
- package/dist/scope-role-admin.js.map +1 -1
- package/dist/search-index.d.ts +0 -23
- package/dist/search-index.d.ts.map +1 -1
- package/dist/search-index.js +2 -24
- package/dist/search-index.js.map +1 -1
- package/dist/spine-restore.d.ts +0 -22
- package/dist/spine-restore.d.ts.map +1 -1
- package/dist/spine-restore.js +2 -2
- package/dist/spine-restore.js.map +1 -1
- package/dist/sql-limits.d.ts +4 -0
- package/dist/sql-limits.d.ts.map +1 -1
- package/dist/sql-limits.js +4 -0
- package/dist/sql-limits.js.map +1 -1
- package/dist/storage-gauge.d.ts +125 -0
- package/dist/storage-gauge.d.ts.map +1 -0
- package/dist/storage-gauge.js +234 -0
- package/dist/storage-gauge.js.map +1 -0
- package/dist/subject-redaction.d.ts +0 -38
- package/dist/subject-redaction.d.ts.map +1 -1
- package/dist/subject-redaction.js +4 -4
- package/dist/subject-redaction.js.map +1 -1
- package/dist/system-switch-record.d.ts +0 -4
- package/dist/system-switch-record.d.ts.map +1 -1
- package/dist/system-switch-record.js +2 -2
- package/dist/system-switch-record.js.map +1 -1
- package/dist/system-switch.d.ts +0 -23
- package/dist/system-switch.d.ts.map +1 -1
- package/dist/system-switch.js +1 -1
- package/dist/system-switch.js.map +1 -1
- package/dist/table-ownership.d.ts +0 -32
- package/dist/table-ownership.d.ts.map +1 -1
- package/dist/table-ownership.js +5 -5
- package/dist/table-ownership.js.map +1 -1
- package/dist/testing.d.ts +17 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +15 -0
- package/dist/testing.js.map +1 -0
- package/dist/vertical-events.d.ts +1 -7
- package/dist/vertical-events.d.ts.map +1 -1
- package/dist/vertical-events.js +2 -10
- package/dist/vertical-events.js.map +1 -1
- package/package.json +14 -2
- package/dist/invocation-log.d.ts +0 -447
- package/dist/invocation-log.d.ts.map +0 -1
- package/dist/invocation-log.js +0 -410
- package/dist/invocation-log.js.map +0 -1
- package/dist/platform-call.d.ts +0 -45
- package/dist/platform-call.d.ts.map +0 -1
- package/dist/platform-call.js +0 -63
- package/dist/platform-call.js.map +0 -1
- package/dist/provider-error.d.ts +0 -38
- package/dist/provider-error.d.ts.map +0 -1
- package/dist/provider-error.js +0 -65
- package/dist/provider-error.js.map +0 -1
- package/dist/routed-node.d.ts +0 -87
- package/dist/routed-node.d.ts.map +0 -1
- package/dist/routed-node.js +0 -67
- package/dist/routed-node.js.map +0 -1
package/dist/search-index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-index.js","sourceRoot":"","sources":["../src/search-index.ts"],"names":[],"mappings":"AAqCA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAoD1D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AACvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAEpC;;;;;;;GAOG;AACH,MAAM,
|
|
1
|
+
{"version":3,"file":"search-index.js","sourceRoot":"","sources":["../src/search-index.ts"],"names":[],"mappings":"AAqCA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAoD1D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AACvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAEpC;;;;;;;GAOG;AACH,MAAM,eAAe,GAAoC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;AAErF,2FAA2F;AAC3F,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IACtB,OAAO;IAA5B,YAAqB,OAAe;QAClC,KAAK,CAAC,oCAAoC,OAAO,4CAA4C,CAAC,CAAC;uBAD5E,OAAO;QAE1B,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,0EAA0E;AAC1E,MAAM,OAAO,aAAc,SAAQ,KAAK;IACjB,UAAU;IAA/B,YAAqB,UAAkB;QACrC,KAAK,CACH,YAAY,UAAU,2DAA2D;YAC/E,4DAA4D,CAC/D,CAAC;0BAJiB,UAAU;QAK7B,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,KAAa,EAAU,EAAE,CAC9E,mBAAmB,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAEpD,qGAAqG;AACrG,SAAS,IAAI,CAAC,KAAa;IACzB,OAAO,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AACpF,CAAC;AAED,8EAA8E;AAC9E,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC9B,QAAgB,EAChB,WAAyD;IAEzD,IAAI,CAAC,WAAW,EAAE,MAAM;QAAE,OAAO,EAAE,CAAC;IACpC,MAAM,KAAK,GAAsB,EAAE,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,GAAG,QAAQ,iBAAiB,IAAI,CAAC,UAAU,IAAI,CAAC;QAC9D,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACb,WAAW,KAAK,yEAAyE;gBACvF,yDAAyD,CAC5D,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,WAAW,KAAK,qBAAqB,CAAC,CAAC;QACzD,CAAC;QACD,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC7D,MAAM,QAAQ,GAAG,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE,KAAK,CAAC,CAAC;QAChF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7E,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,WAAW,KAAK,uBAAuB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/E,CAAC;QACD,KAAK,CAAC,IAAI,CAAC;YACT,QAAQ;YACR,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,KAAK;YACL,QAAQ;YACR,MAAM;YACN,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,QAAQ;YACrC,UAAU,EAAE,oBAAoB,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;SAC1E,CAAC,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,cAAc,CAAC,SAA0B;IAChD,OAAO,SAAS,KAAK,WAAW;QAC9B,CAAC,CAAC,oBAAoB;QACtB,CAAC,CAAC,oCAAoC,CAAC;AAC3C,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,cAAc,CAAC,IAAqB;IAClD,MAAM,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACtD,OAAO;QACL,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,0BAA0B,CAAC,CAAC,IAAI,GAAG,CAAC;QAC3D,wBAAwB,KAAM,CAAC,IAAI,GAAG;QACtC,GAAG,KAAM,CAAC,GAAG,GAAG;QAChB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;QACnC,eAAe,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,sBAAsB;KACxE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAqB;IACtD,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;IAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,CAAC,MAAc,EAAE,KAAe,EAAiB,EAAE,CAAC,CAAC;QACnE,IAAI,EAAE,GAAG,GAAG,IAAI,MAAM,EAAE;QACxB,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;KACtB,CAAC,CAAC;IACH,OAAO;QACL;YACE,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,GAAG;YACV,GAAG,EAAE;gBACH,wBAAwB,GAAG,cAAc;gBACzC,KAAK,IAAI,GAAG;gBACZ,cAAc,IAAI,CAAC,KAAK,6BAA6B,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;gBACrF,GAAG;aACJ,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACD,OAAO,CAAC,IAAI,EAAE;YACZ,kBAAkB,GAAG,uBAAuB,IAAI,CAAC,KAAK,QAAQ;YAC9D,iBAAiB,GAAG,WAAW,IAAI,wBAAwB,OAAO,IAAI;YACtE,KAAK;SACN,CAAC;QACF,OAAO,CAAC,IAAI,EAAE;YACZ,kBAAkB,GAAG,uBAAuB,IAAI,CAAC,KAAK,QAAQ;YAC9D,iBAAiB,GAAG,IAAI,GAAG,YAAY,IAAI,iCAAiC,OAAO,IAAI;YACvF,KAAK;SACN,CAAC;QACF,OAAO,CAAC,IAAI,EAAE;YACZ,kBAAkB,GAAG,uBAAuB,IAAI,CAAC,KAAK,QAAQ;YAC9D,iBAAiB,GAAG,IAAI,GAAG,YAAY,IAAI,iCAAiC,OAAO,IAAI;YACvF,iBAAiB,GAAG,WAAW,IAAI,wBAAwB,OAAO,IAAI;YACtE,KAAK;SACN,CAAC;KACH,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAAgB,EAChB,WAAyD;IAEzD,OAAO,gBAAgB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC5D,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC;QACjC,GAAG,EAAE,cAAc,CAAC,IAAI,CAAC;KAC1B,CAAC,CAAC,CAAC;AACN,CAAC;AAED,uEAAuE;AACvE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAqB,EAAU,EAAE,CAClE,UAAU,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AAGzE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY,EAAE,SAA0B;IAC5E,MAAM,OAAO,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACvE,+EAA+E;IAC/E,oEAAoE;IACpE,MAAM,KAAK,GAAG,SAAS,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACvF,6EAA6E;IAC7E,+EAA+E;IAC/E,qCAAqC;IACrC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC;QAAE,MAAM,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACnF,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;QAC7C,4EAA4E;QAC5E,4DAA4D;QAC5D,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;IAC3E,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,WAAW,CACzB,IAAqB,EACrB,KAAa,EACb,KAAa;AACb;;;GAGG;AACH,KAAc;IAEd,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;IAC5B,OAAO;QACL,GAAG,EACD,cAAc,IAAI,CAAC,QAAQ,gBAAgB,GAAG,YAAY;YAC1D,QAAQ,GAAG,SAAS,IAAI,CAAC,KAAK,uBAAuB,GAAG,SAAS;YACjE,SAAS,GAAG,WAAW,KAAK,CAAC,CAAC,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,wBAAwB;QAC7E,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;KACvB,CAAC;AACJ,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,WAAW,CAAC,SAA6B;IACvD,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,oBAAoB,CAAC;IACzD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC;QAAE,OAAO,oBAAoB,CAAC;IAC9E,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC,CAAC;AAC3D,CAAC"}
|
package/dist/spine-restore.d.ts
CHANGED
|
@@ -52,15 +52,6 @@ export declare function isSpineTable(name: string): boolean;
|
|
|
52
52
|
export declare function assertSpineTablesBuilt(names: readonly string[], columnsOf: KernelColumnsOf): void;
|
|
53
53
|
/** A table's columns as the kernel built it here, or `undefined` when it built no such table. */
|
|
54
54
|
export type KernelColumnsOf = (name: string) => readonly string[] | undefined;
|
|
55
|
-
/**
|
|
56
|
-
* Refuse a directory dump carrying any table the directory does not build, spine or not, naming
|
|
57
|
-
* every one of them (#1912). A directory holds only the platform's own tables, so there is no
|
|
58
|
-
* vertical table whose DDL the dump could have a say in: an extra table would keep the dump's
|
|
59
|
-
* DDL, and with it whatever that declares, such as a `REFERENCES tenants` that fails the
|
|
60
|
-
* delete of a referenced row. `loadDirectoryDump` calls it first, where `assertSpineTablesBuilt`
|
|
61
|
-
* is in a scope restore, with the same `columnsOf`.
|
|
62
|
-
*/
|
|
63
|
-
export declare function assertDirectoryTablesBuilt(names: readonly string[], columnsOf: KernelColumnsOf): void;
|
|
64
55
|
/**
|
|
65
56
|
* The `INSERT` that loads one dumped table's rows, one row of positional parameters per
|
|
66
57
|
* execution, in the dump's column order: `spineRowsInsert` for a spine table, and the dump's
|
|
@@ -85,19 +76,6 @@ export declare function spineColumnAdditions(table: {
|
|
|
85
76
|
name: string;
|
|
86
77
|
columns: readonly string[];
|
|
87
78
|
}, kernelColumns: readonly string[] | undefined): string[];
|
|
88
|
-
/**
|
|
89
|
-
* The `INSERT` that loads one dumped table's rows into the table the host built: a spine table,
|
|
90
|
-
* or any directory table (#1912).
|
|
91
|
-
*
|
|
92
|
-
* `kernelColumns` is the built table's column list as the loader reads it back after
|
|
93
|
-
* `spineColumnAdditions`, or `undefined` when the host built no such table. Either refusal
|
|
94
|
-
* below is a backstop the loader's order makes unreachable, and throws `validation_failed`
|
|
95
|
-
* inside the load's transaction, so the target keeps what it held.
|
|
96
|
-
*/
|
|
97
|
-
export declare function spineRowsInsert(table: {
|
|
98
|
-
name: string;
|
|
99
|
-
columns: readonly string[];
|
|
100
|
-
}, kernelColumns: readonly string[] | undefined): string;
|
|
101
79
|
/**
|
|
102
80
|
* The naming columns a scope row from before the directory left NULL, filled with the defaults
|
|
103
81
|
* `resolveScopeRecord` applies: a ULID lowercases into a valid slug, so the placeholder is unique
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spine-restore.d.ts","sourceRoot":"","sources":["../src/spine-restore.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAIlD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,EAAE,eAAe,GAAG,IAAI,CAGjG;AAED,iGAAiG;AACjG,MAAM,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"spine-restore.d.ts","sourceRoot":"","sources":["../src/spine-restore.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAIlD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,EAAE,eAAe,GAAG,IAAI,CAGjG;AAED,iGAAiG;AACjG,MAAM,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;AA2C9E;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,EAAE,SAAS,EAAE,eAAe,GAAG,MAAM,CAEtH;AASD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,EACnD,aAAa,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GAC3C,MAAM,EAAE,CAmBV;AA4CD;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,EAAE,SAAS,MAAM,EAIvD,CAAC;AAsBF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,SAAS,CAAC,SAAS,OAAO,EAAE,CAAC,EAAE,CAAA;CAAE,EAAE,EACtG,IAAI,EAAE;IACJ,SAAS,EAAE,eAAe,CAAC;IAC3B,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,SAAS,OAAO,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;IACrE;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qGAAqG;IACrG,GAAG,EAAE,MAAM,MAAM,CAAC;CACnB,GACA,IAAI,CAWN"}
|
package/dist/spine-restore.js
CHANGED
|
@@ -72,7 +72,7 @@ export function assertSpineTablesBuilt(names, columnsOf) {
|
|
|
72
72
|
* delete of a referenced row. `loadDirectoryDump` calls it first, where `assertSpineTablesBuilt`
|
|
73
73
|
* is in a scope restore, with the same `columnsOf`.
|
|
74
74
|
*/
|
|
75
|
-
|
|
75
|
+
function assertDirectoryTablesBuilt(names, columnsOf) {
|
|
76
76
|
const missing = names.filter((n) => columnsOf(n) === undefined);
|
|
77
77
|
if (missing.length > 0) {
|
|
78
78
|
throw substratError('validation_failed', `restore refused: the dump carries table(s) this directory does not build: ${missing.join(', ')}. ` +
|
|
@@ -147,7 +147,7 @@ const ROWID_ALIASES = new Set(['rowid', 'oid', '_rowid_']);
|
|
|
147
147
|
* below is a backstop the loader's order makes unreachable, and throws `validation_failed`
|
|
148
148
|
* inside the load's transaction, so the target keeps what it held.
|
|
149
149
|
*/
|
|
150
|
-
|
|
150
|
+
function spineRowsInsert(table, kernelColumns) {
|
|
151
151
|
// `assertSpineTablesBuilt` / `assertDirectoryTablesBuilt` has refused this already, naming every such table.
|
|
152
152
|
if (kernelColumns === undefined)
|
|
153
153
|
throw unbuiltSpineTables([table.name]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spine-restore.js","sourceRoot":"","sources":["../src/spine-restore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACrG,OAAO,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAEjG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,6FAA6F;IAC7F,OAAO,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACtE,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAwB,EAAE,SAA0B;IACzF,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IACtF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC5D,CAAC;AAKD;;;;;;;GAOG;AACH,
|
|
1
|
+
{"version":3,"file":"spine-restore.js","sourceRoot":"","sources":["../src/spine-restore.ts"],"names":[],"mappings":"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"}
|
package/dist/sql-limits.d.ts
CHANGED
|
@@ -73,6 +73,10 @@ export declare const DO_SQL_LIMITS: {
|
|
|
73
73
|
/**
|
|
74
74
|
* Refuse a statement a Durable Object's SQLite would refuse for its length, its compound
|
|
75
75
|
* `SELECT` terms, or its bound parameters. Throws the DO's own message.
|
|
76
|
+
*
|
|
77
|
+
* Not in the kernel's index, but exported from this module on purpose:
|
|
78
|
+
* `tools/vitest/sql-limits.cjs` requires `dist/sql-limits.js` by file path to judge every
|
|
79
|
+
* statement a node suite prepares, so dropping this `export` would break that preload.
|
|
76
80
|
*/
|
|
77
81
|
export declare function assertWithinSqlLimits(sql: string): void;
|
|
78
82
|
/**
|
package/dist/sql-limits.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql-limits.d.ts","sourceRoot":"","sources":["../src/sql-limits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AACH,OAAO,KAAK,EAAE,SAAS,EAAY,MAAM,iBAAiB,CAAC;AAE3D,qFAAqF;AACrF,eAAO,MAAM,aAAa;IACxB,iDAAiD;aACjD,aAAa,EAAE,CAAC;IAChB,0EAA0E;aAC1E,eAAe,EAAE,GAAG;IACpB,kFAAkF;aAClF,cAAc,EAAE,MAAO;IACvB,uGAAuG;aACvG,gBAAgB,EAAE,EAAE;IACpB,0GAA0G;aAC1G,OAAO,EAAE,GAAG;CACJ,CAAC;AA8CX
|
|
1
|
+
{"version":3,"file":"sql-limits.d.ts","sourceRoot":"","sources":["../src/sql-limits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AACH,OAAO,KAAK,EAAE,SAAS,EAAY,MAAM,iBAAiB,CAAC;AAE3D,qFAAqF;AACrF,eAAO,MAAM,aAAa;IACxB,iDAAiD;aACjD,aAAa,EAAE,CAAC;IAChB,0EAA0E;aAC1E,eAAe,EAAE,GAAG;IACpB,kFAAkF;aAClF,cAAc,EAAE,MAAO;IACvB,uGAAuG;aACvG,gBAAgB,EAAE,EAAE;IACpB,0GAA0G;aAC1G,OAAO,EAAE,GAAG;CACJ,CAAC;AA8CX;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAuJvD;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,UAAW,MAAM,KAAG,MAC8C,CAAC;AAEpG,2FAA2F;AAC3F,eAAO,MAAM,mBAAmB,UAAW,MAAM,SAAS,MAAM,KAAG,MAC8B,CAAC;AAElG;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,CAW1D"}
|
package/dist/sql-limits.js
CHANGED
|
@@ -57,6 +57,10 @@ function endOfNamedParameter(sql, from) {
|
|
|
57
57
|
/**
|
|
58
58
|
* Refuse a statement a Durable Object's SQLite would refuse for its length, its compound
|
|
59
59
|
* `SELECT` terms, or its bound parameters. Throws the DO's own message.
|
|
60
|
+
*
|
|
61
|
+
* Not in the kernel's index, but exported from this module on purpose:
|
|
62
|
+
* `tools/vitest/sql-limits.cjs` requires `dist/sql-limits.js` by file path to judge every
|
|
63
|
+
* statement a node suite prepares, so dropping this `export` would break that preload.
|
|
60
64
|
*/
|
|
61
65
|
export function assertWithinSqlLimits(sql) {
|
|
62
66
|
// Cheap first: UTF-16 length is at most the byte length, so a string under
|
package/dist/sql-limits.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql-limits.js","sourceRoot":"","sources":["../src/sql-limits.ts"],"names":[],"mappings":"AA4DA,qFAAqF;AACrF,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,iDAAiD;IACjD,aAAa,EAAE,CAAC;IAChB,0EAA0E;IAC1E,eAAe,EAAE,GAAG;IACpB,kFAAkF;IAClF,cAAc,EAAE,OAAO;IACvB,uGAAuG;IACvG,gBAAgB,EAAE,EAAE;IACpB,0GAA0G;IAC1G,OAAO,EAAE,GAAG;CACJ,CAAC;AAIX,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC;AAC/B,MAAM,UAAU,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAEhE,6EAA6E;AAC7E,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,KAAa,EAAU,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAE3F,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;AACrE,uFAAuF;AACvF,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,kBAAkB,CAAC,CAAC,CAAC;AAC5H,MAAM,MAAM,GAAG,CAAC,CAAS,EAAW,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEvE;;;;;;;;;GASG;AACH,SAAS,mBAAmB,CAAC,GAAW,EAAE,IAAY;IACpD,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;IACrB,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;QAClB,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACd,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACrB,CAAC,IAAI,CAAC,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG;gBAAE,CAAC,IAAI,CAAC,CAAC;YAC9D,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG;gBAAE,CAAC,IAAI,CAAC,CAAC;YAC3B,MAAM;QACR,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAC3C,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;aAAM,CAAC;YACN,MAAM;QACR,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"sql-limits.js","sourceRoot":"","sources":["../src/sql-limits.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { type ScopeId, type ScopeStorageSample, type StorageGauge, type TenantId } from '@substrat-run/contracts';
|
|
2
|
+
import type { RedactionSql } from './subject-redaction.js';
|
|
3
|
+
/**
|
|
4
|
+
* The stored storage gauge (#1524), as statements both adapters run against their directory:
|
|
5
|
+
* the SQLite host over better-sqlite3, the hosted one inside ControlPlaneDO. Written once so
|
|
6
|
+
* the two cannot keep different histories of the same fleet.
|
|
7
|
+
*
|
|
8
|
+
* One row per (scope, UTC day): the day's LATEST reading, replaced by a later one on the
|
|
9
|
+
* same day. A day holds one number per scope, which is what a byte-day sum needs and no
|
|
10
|
+
* more, so the table grows by at most one row per scope per day, and retention
|
|
11
|
+
* (`STORAGE_GAUGE_RETENTION_MONTHS`) bounds it in time.
|
|
12
|
+
*
|
|
13
|
+
* The rows are written by the scheduled pass (`runPlatformSweep`'s storage phase), which
|
|
14
|
+
* samples only scopes an earlier phase of the same pass already woke. Nothing here reads a
|
|
15
|
+
* scope; serving a figure is a directory read.
|
|
16
|
+
*
|
|
17
|
+
* Beside the samples, `_substrat_scope_storage_attempts` keeps one row per scope: when the
|
|
18
|
+
* phase last TRIED, and the error if the read failed. It is what the phase picks due scopes
|
|
19
|
+
* by. Without it a scope whose read keeps failing would stay due and be retried on every
|
|
20
|
+
* pass, ahead of every scope that can be read, and its error would reach every pass's
|
|
21
|
+
* failure digest. With it, a failing scope is tried once a day like any other, while its last
|
|
22
|
+
* good sample stands.
|
|
23
|
+
*/
|
|
24
|
+
export declare const SCOPE_STORAGE_DDL = "\n CREATE TABLE IF NOT EXISTS _substrat_scope_storage (\n scope_id TEXT NOT NULL,\n day TEXT NOT NULL,\n tenant_id TEXT NOT NULL,\n bytes INTEGER NOT NULL,\n read_at TEXT NOT NULL,\n PRIMARY KEY (scope_id, day)\n );\n CREATE INDEX IF NOT EXISTS _substrat_scope_storage_tenant ON _substrat_scope_storage (tenant_id, day);\n CREATE INDEX IF NOT EXISTS _substrat_scope_storage_day ON _substrat_scope_storage (day);\n CREATE TABLE IF NOT EXISTS _substrat_scope_storage_attempts (\n scope_id TEXT PRIMARY KEY,\n tenant_id TEXT NOT NULL,\n attempted_at TEXT NOT NULL,\n error TEXT\n );\n";
|
|
25
|
+
/**
|
|
26
|
+
* The statuses a scope that holds a store can be in: every status but `provisioning` (no
|
|
27
|
+
* store yet) and `reaped` (its store is gone). A non-serving scope (suspended, archiving,
|
|
28
|
+
* archived) still holds its storage until reap, so it is measured and belongs on the bill.
|
|
29
|
+
*/
|
|
30
|
+
export declare const STORED_SCOPE_STATUSES: readonly ['active', 'suspended', 'archiving', 'archived'];
|
|
31
|
+
/**
|
|
32
|
+
* Whether a scope holds a store to measure (#1524): a `STORED_SCOPE_STATUSES` status, unless
|
|
33
|
+
* it was archived straight from `provisioning` (`archivedFromStatus`). That scope never held
|
|
34
|
+
* data, so it is neither read (a read would create the spine it never had) nor counted. A row
|
|
35
|
+
* archived before the column existed has a null `archivedFromStatus` and is measured, as
|
|
36
|
+
* before. `holdsStoreSql` is the same rule for the directory's SQL.
|
|
37
|
+
*/
|
|
38
|
+
export declare function holdsStore(scope: {
|
|
39
|
+
status: string;
|
|
40
|
+
archivedFromStatus?: string | null;
|
|
41
|
+
}): boolean;
|
|
42
|
+
/** `holdsStore` over a `scopes` row, with an optional table alias (`'s.'`). */
|
|
43
|
+
export declare function holdsStoreSql(alias?: string): string;
|
|
44
|
+
/** How long a day's sample is kept: thirteen months, so a year can be compared with the one before it. */
|
|
45
|
+
export declare const STORAGE_GAUGE_RETENTION_MONTHS = 13;
|
|
46
|
+
/** How many samples one `pruneScopeStorage` call deletes, by default. */
|
|
47
|
+
export declare const STORAGE_GAUGE_PRUNE_BATCH = 500;
|
|
48
|
+
/** The most history rows one `listScopeStorage` call returns, and its default. */
|
|
49
|
+
export declare const STORAGE_HISTORY_LIMIT_MAX = 10000;
|
|
50
|
+
export declare const STORAGE_HISTORY_LIMIT_DEFAULT = 1000;
|
|
51
|
+
/** What the storage phase hands `recordScopeStorage`: one attempt to read a scope's size. */
|
|
52
|
+
export interface ScopeStorageReadingInput {
|
|
53
|
+
tenantId: TenantId;
|
|
54
|
+
scopeId: ScopeId;
|
|
55
|
+
/** The size read, or null when there is none: a failed read (`error` says why), or a scope the reader declined. */
|
|
56
|
+
bytes: number | null;
|
|
57
|
+
error?: string;
|
|
58
|
+
/** When the read was made. Its UTC date is the sample's day. */
|
|
59
|
+
readAt: string;
|
|
60
|
+
}
|
|
61
|
+
/** When the phase last tried a scope (#1524), and why it failed if it did. */
|
|
62
|
+
export interface ScopeStorageAttempt {
|
|
63
|
+
tenantId: TenantId;
|
|
64
|
+
scopeId: ScopeId;
|
|
65
|
+
attemptedAt: string;
|
|
66
|
+
error: string | null;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Filter for `listScopeStorage`. `latest` returns one row per stored scope, its most
|
|
70
|
+
* recent day, and ignores `since`/`until`/`limit`: that set is bounded by the scope count,
|
|
71
|
+
* the same as `listScopes`. Otherwise it is history, ordered (scope, day), `since`/`until`
|
|
72
|
+
* inclusive UTC days, at most `limit` rows.
|
|
73
|
+
*/
|
|
74
|
+
export interface ScopeStorageFilter {
|
|
75
|
+
tenantId?: TenantId;
|
|
76
|
+
scopeId?: ScopeId;
|
|
77
|
+
latest?: boolean;
|
|
78
|
+
since?: string;
|
|
79
|
+
until?: string;
|
|
80
|
+
limit?: number;
|
|
81
|
+
}
|
|
82
|
+
/** The UTC day a reading belongs to. */
|
|
83
|
+
export declare function storageGaugeDay(readAt: string): string;
|
|
84
|
+
/**
|
|
85
|
+
* The first day retention keeps: thirteen calendar months before `nowMs`, as a UTC day. The
|
|
86
|
+
* day is clamped to the target month's last day, so the 31st of a month counts back to the
|
|
87
|
+
* 28th, 29th or 30th rather than rolling forward into the month after.
|
|
88
|
+
*/
|
|
89
|
+
export declare function storageRetentionHorizon(nowMs: number): string;
|
|
90
|
+
/**
|
|
91
|
+
* Record attempts, a statement or two each. Every row is written only for a scope the
|
|
92
|
+
* directory holds UNDER THAT TENANT and has not reaped, so a reading can never land in another
|
|
93
|
+
* tenant's figure, and a scope reaped while its read was in flight leaves no row behind.
|
|
94
|
+
*
|
|
95
|
+
* Every attempt replaces the scope's attempt row. A successful one also upserts the day's
|
|
96
|
+
* sample, which replaces an older reading of that day and never a newer one; a failed one
|
|
97
|
+
* leaves the samples alone, so the last good reading stands. Returns how many SAMPLE rows
|
|
98
|
+
* were written.
|
|
99
|
+
*/
|
|
100
|
+
export declare function recordScopeStorageRows(sql: RedactionSql, readings: readonly ScopeStorageReadingInput[]): number;
|
|
101
|
+
/** Read samples — see `ScopeStorageFilter`. Every row is parsed on the way out. */
|
|
102
|
+
export declare function listScopeStorageRows(sql: RedactionSql, filter?: ScopeStorageFilter): ScopeStorageSample[];
|
|
103
|
+
/**
|
|
104
|
+
* Every stored scope's latest attempt — what the storage phase picks due scopes by, and
|
|
105
|
+
* what a meter reading names failing scopes from. `tenantId` narrows to one tenant.
|
|
106
|
+
*/
|
|
107
|
+
export declare function listScopeStorageAttemptRows(sql: RedactionSql, tenantId?: TenantId): ScopeStorageAttempt[];
|
|
108
|
+
/** Delete at most `limit` samples older than retention, oldest first. Returns how many went. */
|
|
109
|
+
export declare function pruneScopeStorageRows(sql: RedactionSql, nowMs: number, limit: number): number;
|
|
110
|
+
/** Drop a scope's samples and attempt: its storage is gone, so its history describes nothing billable. */
|
|
111
|
+
export declare function forgetScopeStorage(sql: RedactionSql, scopeId: string): void;
|
|
112
|
+
/**
|
|
113
|
+
* Fold latest samples into one gauge. `total` is the caller's count of stored scopes
|
|
114
|
+
* (`STORED_SCOPE_STATUSES`); samples are expected to be the latest per stored scope
|
|
115
|
+
* (`listScopeStorage({ latest })`), and attempts the latest per stored scope
|
|
116
|
+
* (`listScopeStorageAttempts`).
|
|
117
|
+
*/
|
|
118
|
+
export declare function foldStorageGauge(samples: readonly {
|
|
119
|
+
bytes: number;
|
|
120
|
+
readAt: string;
|
|
121
|
+
}[], total: number, attempts?: readonly {
|
|
122
|
+
attemptedAt: string;
|
|
123
|
+
error: string | null;
|
|
124
|
+
}[]): StorageGauge;
|
|
125
|
+
//# sourceMappingURL=storage-gauge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage-gauge.d.ts","sourceRoot":"","sources":["../src/storage-gauge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import { STORAGE_EXCLUSIONS, scopeStorageSample, } from '@substrat-run/contracts';
|
|
2
|
+
import { assertRowLimit, boundedRetentionDelete } from './scope-host.js';
|
|
3
|
+
/**
|
|
4
|
+
* The stored storage gauge (#1524), as statements both adapters run against their directory:
|
|
5
|
+
* the SQLite host over better-sqlite3, the hosted one inside ControlPlaneDO. Written once so
|
|
6
|
+
* the two cannot keep different histories of the same fleet.
|
|
7
|
+
*
|
|
8
|
+
* One row per (scope, UTC day): the day's LATEST reading, replaced by a later one on the
|
|
9
|
+
* same day. A day holds one number per scope, which is what a byte-day sum needs and no
|
|
10
|
+
* more, so the table grows by at most one row per scope per day, and retention
|
|
11
|
+
* (`STORAGE_GAUGE_RETENTION_MONTHS`) bounds it in time.
|
|
12
|
+
*
|
|
13
|
+
* The rows are written by the scheduled pass (`runPlatformSweep`'s storage phase), which
|
|
14
|
+
* samples only scopes an earlier phase of the same pass already woke. Nothing here reads a
|
|
15
|
+
* scope; serving a figure is a directory read.
|
|
16
|
+
*
|
|
17
|
+
* Beside the samples, `_substrat_scope_storage_attempts` keeps one row per scope: when the
|
|
18
|
+
* phase last TRIED, and the error if the read failed. It is what the phase picks due scopes
|
|
19
|
+
* by. Without it a scope whose read keeps failing would stay due and be retried on every
|
|
20
|
+
* pass, ahead of every scope that can be read, and its error would reach every pass's
|
|
21
|
+
* failure digest. With it, a failing scope is tried once a day like any other, while its last
|
|
22
|
+
* good sample stands.
|
|
23
|
+
*/
|
|
24
|
+
export const SCOPE_STORAGE_DDL = `
|
|
25
|
+
CREATE TABLE IF NOT EXISTS _substrat_scope_storage (
|
|
26
|
+
scope_id TEXT NOT NULL,
|
|
27
|
+
day TEXT NOT NULL,
|
|
28
|
+
tenant_id TEXT NOT NULL,
|
|
29
|
+
bytes INTEGER NOT NULL,
|
|
30
|
+
read_at TEXT NOT NULL,
|
|
31
|
+
PRIMARY KEY (scope_id, day)
|
|
32
|
+
);
|
|
33
|
+
CREATE INDEX IF NOT EXISTS _substrat_scope_storage_tenant ON _substrat_scope_storage (tenant_id, day);
|
|
34
|
+
CREATE INDEX IF NOT EXISTS _substrat_scope_storage_day ON _substrat_scope_storage (day);
|
|
35
|
+
CREATE TABLE IF NOT EXISTS _substrat_scope_storage_attempts (
|
|
36
|
+
scope_id TEXT PRIMARY KEY,
|
|
37
|
+
tenant_id TEXT NOT NULL,
|
|
38
|
+
attempted_at TEXT NOT NULL,
|
|
39
|
+
error TEXT
|
|
40
|
+
);
|
|
41
|
+
`;
|
|
42
|
+
/**
|
|
43
|
+
* The statuses a scope that holds a store can be in: every status but `provisioning` (no
|
|
44
|
+
* store yet) and `reaped` (its store is gone). A non-serving scope (suspended, archiving,
|
|
45
|
+
* archived) still holds its storage until reap, so it is measured and belongs on the bill.
|
|
46
|
+
*/
|
|
47
|
+
export const STORED_SCOPE_STATUSES = ['active', 'suspended', 'archiving', 'archived'];
|
|
48
|
+
/**
|
|
49
|
+
* Whether a scope holds a store to measure (#1524): a `STORED_SCOPE_STATUSES` status, unless
|
|
50
|
+
* it was archived straight from `provisioning` (`archivedFromStatus`). That scope never held
|
|
51
|
+
* data, so it is neither read (a read would create the spine it never had) nor counted. A row
|
|
52
|
+
* archived before the column existed has a null `archivedFromStatus` and is measured, as
|
|
53
|
+
* before. `holdsStoreSql` is the same rule for the directory's SQL.
|
|
54
|
+
*/
|
|
55
|
+
export function holdsStore(scope) {
|
|
56
|
+
if (!STORED_SCOPE_STATUSES.includes(scope.status))
|
|
57
|
+
return false;
|
|
58
|
+
return !((scope.status === 'archived' || scope.status === 'archiving') && scope.archivedFromStatus === 'provisioning');
|
|
59
|
+
}
|
|
60
|
+
/** `holdsStore` over a `scopes` row, with an optional table alias (`'s.'`). */
|
|
61
|
+
export function holdsStoreSql(alias = '') {
|
|
62
|
+
return (`${alias}status IN ('active', 'suspended', 'archiving', 'archived') AND NOT ` +
|
|
63
|
+
`(${alias}status IN ('archiving', 'archived') AND ${alias}archived_from_status IS 'provisioning')`);
|
|
64
|
+
}
|
|
65
|
+
/** How long a day's sample is kept: thirteen months, so a year can be compared with the one before it. */
|
|
66
|
+
export const STORAGE_GAUGE_RETENTION_MONTHS = 13;
|
|
67
|
+
/** How many samples one `pruneScopeStorage` call deletes, by default. */
|
|
68
|
+
export const STORAGE_GAUGE_PRUNE_BATCH = 500;
|
|
69
|
+
/** The most history rows one `listScopeStorage` call returns, and its default. */
|
|
70
|
+
export const STORAGE_HISTORY_LIMIT_MAX = 10_000;
|
|
71
|
+
export const STORAGE_HISTORY_LIMIT_DEFAULT = 1_000;
|
|
72
|
+
/** The UTC day a reading belongs to. */
|
|
73
|
+
export function storageGaugeDay(readAt) {
|
|
74
|
+
return new Date(readAt).toISOString().slice(0, 10);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* The first day retention keeps: thirteen calendar months before `nowMs`, as a UTC day. The
|
|
78
|
+
* day is clamped to the target month's last day, so the 31st of a month counts back to the
|
|
79
|
+
* 28th, 29th or 30th rather than rolling forward into the month after.
|
|
80
|
+
*/
|
|
81
|
+
export function storageRetentionHorizon(nowMs) {
|
|
82
|
+
const now = new Date(nowMs);
|
|
83
|
+
const month = now.getUTCMonth() - STORAGE_GAUGE_RETENTION_MONTHS;
|
|
84
|
+
// Day 0 of the following month is the last day of the target month.
|
|
85
|
+
const lastDay = new Date(Date.UTC(now.getUTCFullYear(), month + 1, 0)).getUTCDate();
|
|
86
|
+
return new Date(Date.UTC(now.getUTCFullYear(), month, Math.min(now.getUTCDate(), lastDay))).toISOString().slice(0, 10);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Record attempts, a statement or two each. Every row is written only for a scope the
|
|
90
|
+
* directory holds UNDER THAT TENANT and has not reaped, so a reading can never land in another
|
|
91
|
+
* tenant's figure, and a scope reaped while its read was in flight leaves no row behind.
|
|
92
|
+
*
|
|
93
|
+
* Every attempt replaces the scope's attempt row. A successful one also upserts the day's
|
|
94
|
+
* sample, which replaces an older reading of that day and never a newer one; a failed one
|
|
95
|
+
* leaves the samples alone, so the last good reading stands. Returns how many SAMPLE rows
|
|
96
|
+
* were written.
|
|
97
|
+
*/
|
|
98
|
+
export function recordScopeStorageRows(sql, readings) {
|
|
99
|
+
let recorded = 0;
|
|
100
|
+
for (const r of readings) {
|
|
101
|
+
const readAt = new Date(r.readAt).toISOString();
|
|
102
|
+
const ok = r.bytes !== null && Number.isInteger(r.bytes) && r.bytes >= 0;
|
|
103
|
+
sql(`INSERT INTO _substrat_scope_storage_attempts (scope_id, tenant_id, attempted_at, error)
|
|
104
|
+
SELECT scope_id, tenant_id, ?, ? FROM scopes
|
|
105
|
+
WHERE scope_id = ? AND tenant_id = ? AND ${holdsStoreSql()}
|
|
106
|
+
ON CONFLICT (scope_id) DO UPDATE SET attempted_at = excluded.attempted_at, error = excluded.error
|
|
107
|
+
WHERE excluded.attempted_at >= _substrat_scope_storage_attempts.attempted_at`, [readAt, r.error ?? null, r.scopeId, r.tenantId]);
|
|
108
|
+
if (!ok)
|
|
109
|
+
continue;
|
|
110
|
+
recorded += sql(`INSERT INTO _substrat_scope_storage (scope_id, day, tenant_id, bytes, read_at)
|
|
111
|
+
SELECT scope_id, ?, tenant_id, ?, ? FROM scopes
|
|
112
|
+
WHERE scope_id = ? AND tenant_id = ? AND ${holdsStoreSql()}
|
|
113
|
+
ON CONFLICT (scope_id, day) DO UPDATE SET bytes = excluded.bytes, read_at = excluded.read_at
|
|
114
|
+
WHERE excluded.read_at >= _substrat_scope_storage.read_at
|
|
115
|
+
RETURNING 1`, [storageGaugeDay(readAt), r.bytes, readAt, r.scopeId, r.tenantId]).length;
|
|
116
|
+
}
|
|
117
|
+
return recorded;
|
|
118
|
+
}
|
|
119
|
+
/** Read samples — see `ScopeStorageFilter`. Every row is parsed on the way out. */
|
|
120
|
+
export function listScopeStorageRows(sql, filter = {}) {
|
|
121
|
+
const where = [holdsStoreSql('s.')];
|
|
122
|
+
const params = [];
|
|
123
|
+
if (filter.tenantId) {
|
|
124
|
+
where.push('s.tenant_id = ?');
|
|
125
|
+
params.push(filter.tenantId);
|
|
126
|
+
}
|
|
127
|
+
if (filter.scopeId) {
|
|
128
|
+
where.push('s.scope_id = ?');
|
|
129
|
+
params.push(filter.scopeId);
|
|
130
|
+
}
|
|
131
|
+
let tail = '';
|
|
132
|
+
// `latest` is joined on the scope's newest day, which the (scope_id, day) key answers with
|
|
133
|
+
// one seek per scope, so a meter read touches one sample per scope however much history
|
|
134
|
+
// retention holds, rather than reading every day and discarding all but the last.
|
|
135
|
+
let latestDay = '';
|
|
136
|
+
if (filter.latest) {
|
|
137
|
+
latestDay = ' AND g.day = (SELECT MAX(m.day) FROM _substrat_scope_storage m WHERE m.scope_id = s.scope_id)';
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
if (filter.since) {
|
|
141
|
+
where.push('g.day >= ?');
|
|
142
|
+
params.push(filter.since);
|
|
143
|
+
}
|
|
144
|
+
if (filter.until) {
|
|
145
|
+
where.push('g.day <= ?');
|
|
146
|
+
params.push(filter.until);
|
|
147
|
+
}
|
|
148
|
+
const limit = assertRowLimit('limit', filter.limit ?? STORAGE_HISTORY_LIMIT_DEFAULT);
|
|
149
|
+
tail = ' LIMIT ?';
|
|
150
|
+
params.push(Math.min(limit, STORAGE_HISTORY_LIMIT_MAX));
|
|
151
|
+
}
|
|
152
|
+
// The join to `scopes` is the belt to the reap's braces: a reaped scope's rows are
|
|
153
|
+
// deleted at reap, and any that survived are still never read.
|
|
154
|
+
const rows = sql(`SELECT g.tenant_id, g.scope_id, g.day, g.bytes, g.read_at
|
|
155
|
+
FROM scopes s
|
|
156
|
+
JOIN _substrat_scope_storage g ON g.scope_id = s.scope_id AND g.tenant_id = s.tenant_id${latestDay}
|
|
157
|
+
WHERE ${where.join(' AND ')}
|
|
158
|
+
ORDER BY g.scope_id, g.day${tail}`, params);
|
|
159
|
+
return rows.map((r) => scopeStorageSample.parse({
|
|
160
|
+
tenantId: r.tenant_id,
|
|
161
|
+
scopeId: r.scope_id,
|
|
162
|
+
day: r.day,
|
|
163
|
+
bytes: r.bytes,
|
|
164
|
+
readAt: r.read_at,
|
|
165
|
+
}));
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Every stored scope's latest attempt — what the storage phase picks due scopes by, and
|
|
169
|
+
* what a meter reading names failing scopes from. `tenantId` narrows to one tenant.
|
|
170
|
+
*/
|
|
171
|
+
export function listScopeStorageAttemptRows(sql, tenantId) {
|
|
172
|
+
const rows = sql(`SELECT a.tenant_id, a.scope_id, a.attempted_at, a.error
|
|
173
|
+
FROM _substrat_scope_storage_attempts a
|
|
174
|
+
JOIN scopes s ON s.scope_id = a.scope_id AND s.tenant_id = a.tenant_id
|
|
175
|
+
WHERE ${holdsStoreSql('s.')}${tenantId ? ' AND s.tenant_id = ?' : ''}
|
|
176
|
+
ORDER BY a.scope_id`, tenantId ? [tenantId] : []);
|
|
177
|
+
return rows.map((r) => ({
|
|
178
|
+
tenantId: r.tenant_id,
|
|
179
|
+
scopeId: r.scope_id,
|
|
180
|
+
attemptedAt: r.attempted_at,
|
|
181
|
+
error: r.error,
|
|
182
|
+
}));
|
|
183
|
+
}
|
|
184
|
+
/** Delete at most `limit` samples older than retention, oldest first. Returns how many went. */
|
|
185
|
+
export function pruneScopeStorageRows(sql, nowMs, limit) {
|
|
186
|
+
return sql(boundedRetentionDelete('_substrat_scope_storage', 'day'), [
|
|
187
|
+
storageRetentionHorizon(nowMs),
|
|
188
|
+
assertRowLimit('limit', limit),
|
|
189
|
+
]).length;
|
|
190
|
+
}
|
|
191
|
+
/** Drop a scope's samples and attempt: its storage is gone, so its history describes nothing billable. */
|
|
192
|
+
export function forgetScopeStorage(sql, scopeId) {
|
|
193
|
+
sql('DELETE FROM _substrat_scope_storage WHERE scope_id = ?', [scopeId]);
|
|
194
|
+
sql('DELETE FROM _substrat_scope_storage_attempts WHERE scope_id = ?', [scopeId]);
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Fold latest samples into one gauge. `total` is the caller's count of stored scopes
|
|
198
|
+
* (`STORED_SCOPE_STATUSES`); samples are expected to be the latest per stored scope
|
|
199
|
+
* (`listScopeStorage({ latest })`), and attempts the latest per stored scope
|
|
200
|
+
* (`listScopeStorageAttempts`).
|
|
201
|
+
*/
|
|
202
|
+
export function foldStorageGauge(samples, total, attempts = []) {
|
|
203
|
+
let failing = 0;
|
|
204
|
+
let lastFailed = null;
|
|
205
|
+
for (const a of attempts) {
|
|
206
|
+
if (a.error === null)
|
|
207
|
+
continue;
|
|
208
|
+
failing += 1;
|
|
209
|
+
if (lastFailed === null || a.attemptedAt > lastFailed)
|
|
210
|
+
lastFailed = a.attemptedAt;
|
|
211
|
+
}
|
|
212
|
+
let bytes = 0;
|
|
213
|
+
let oldest = null;
|
|
214
|
+
let newest = null;
|
|
215
|
+
for (const s of samples) {
|
|
216
|
+
bytes += s.bytes;
|
|
217
|
+
if (oldest === null || s.readAt < oldest)
|
|
218
|
+
oldest = s.readAt;
|
|
219
|
+
if (newest === null || s.readAt > newest)
|
|
220
|
+
newest = s.readAt;
|
|
221
|
+
}
|
|
222
|
+
return {
|
|
223
|
+
basis: 'scope-databases',
|
|
224
|
+
excluded: [...STORAGE_EXCLUSIONS],
|
|
225
|
+
bytes,
|
|
226
|
+
sampled: samples.length,
|
|
227
|
+
total,
|
|
228
|
+
oldestReadAt: oldest,
|
|
229
|
+
newestReadAt: newest,
|
|
230
|
+
failing,
|
|
231
|
+
lastFailedAt: lastFailed,
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=storage-gauge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage-gauge.js","sourceRoot":"","sources":["../src/storage-gauge.ts"],"names":[],"mappings":"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"}
|
|
@@ -72,28 +72,6 @@ export declare const REDACTED_INTENT_MARKER = "_substratRedacted";
|
|
|
72
72
|
* reads as corruption; this one says what happened to it and when.
|
|
73
73
|
*/
|
|
74
74
|
export declare function redactedIntentPayload(subjectId: string, at: string): string;
|
|
75
|
-
/**
|
|
76
|
-
* The note a redaction leaves on an intent that had already settled.
|
|
77
|
-
*
|
|
78
|
-
* `last_error` is overwritten rather than kept, and that is deliberate: it is free text
|
|
79
|
-
* a third party wrote about the delivery of this person's data — the surface #618 built
|
|
80
|
-
* precisely so a provider's own sentence ("…requires valid personal number field") is
|
|
81
|
-
* readable — so it is content about the subject, not envelope. An erasure that emptied
|
|
82
|
-
* `payload` and left a provider quoting the name two columns over would be the same bug
|
|
83
|
-
* this fixes, one column to the right.
|
|
84
|
-
*/
|
|
85
|
-
export declare const REDACTED_INTENT_NOTE = "redacted by subject erasure (#37) \u2014 what this intent said is gone; that it happened, and when, is not";
|
|
86
|
-
/**
|
|
87
|
-
* The note a redaction leaves on an intent that was still `pending`.
|
|
88
|
-
*
|
|
89
|
-
* A pending row is redacted like any other AND settled `failed` in the same statement,
|
|
90
|
-
* because the two halves of the alternative are both wrong: leaving it pending-and-intact
|
|
91
|
-
* keeps the name (the defect), and leaving it pending-and-redacted hands the drain a
|
|
92
|
-
* tombstone to execute. `failed` is the truthful terminal state — the delivery did not
|
|
93
|
-
* happen and now cannot — and the executor delivery behind it was already journaled as
|
|
94
|
-
* routed, so nothing re-routes the event to replace this row.
|
|
95
|
-
*/
|
|
96
|
-
export declare const CANCELLED_INTENT_NOTE = "cancelled by subject erasure (#37) \u2014 the payload was redacted before the drain reached it, so this intent never ran";
|
|
97
75
|
/** The row shape the redaction reads to decide. */
|
|
98
76
|
export interface PlatformRequestRedactionCandidate {
|
|
99
77
|
id: string;
|
|
@@ -291,22 +269,6 @@ export type RedactionSql = (sql: string, params: readonly (string | number | nul
|
|
|
291
269
|
* Returns the number of distinct runs touched.
|
|
292
270
|
*/
|
|
293
271
|
export declare function redactSubjectJobRuns(sql: RedactionSql, subjectId: string, at: string): number;
|
|
294
|
-
/**
|
|
295
|
-
* One matched step: its result becomes the tombstone, its error the note.
|
|
296
|
-
*
|
|
297
|
-
* Params: tombstone, note, run_id, step.
|
|
298
|
-
*/
|
|
299
|
-
export declare const JOB_STEP_REDACTION_SQL = "UPDATE _substrat_job_steps\n SET result = ?, last_error = ?\n WHERE run_id = ? AND step = ?";
|
|
300
|
-
/**
|
|
301
|
-
* One matched run. Every `CASE WHEN status = 'running'` reads the status as it was before
|
|
302
|
-
* this statement — SQLite evaluates each SET against the original row — which is what
|
|
303
|
-
* lets one statement pick the note and settle the status it branched on. `ended_at` is
|
|
304
|
-
* COALESCEd so a run that had already ended keeps the instant it ended.
|
|
305
|
-
*
|
|
306
|
-
* Params: payload-hit (0/1), tombstone, cursor-hit (0/1), tombstone, cancelled-note,
|
|
307
|
-
* redacted-note, at (ended_at), at (updated_at), id.
|
|
308
|
-
*/
|
|
309
|
-
export declare const JOB_RUN_REDACTION_SQL = "UPDATE _substrat_job_runs\n SET payload = CASE WHEN ? = 1 THEN ? ELSE payload END,\n cursor = CASE WHEN ? = 1 THEN ? ELSE cursor END,\n last_error = CASE WHEN status = 'running' THEN ? ELSE ? END,\n next_attempt_at = CASE WHEN status = 'running' THEN NULL ELSE next_attempt_at END,\n ended_at = COALESCE(ended_at, ?),\n updated_at = ?,\n status = CASE WHEN status = 'running' THEN 'failed' ELSE status END\n WHERE id = ?";
|
|
310
272
|
/**
|
|
311
273
|
* The note a redaction leaves where a failure's text named the subject: an ops-failure
|
|
312
274
|
* message, an issue's exemplar, a sweep record's error, or that error still queued inside a
|