@claudexor/daemon 4.8.1 → 5.0.1
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/command-list-projection.d.ts +1 -1
- package/dist/command-list-projection.d.ts.map +1 -1
- package/dist/command-list-projection.js +2 -3
- package/dist/command-list-projection.js.map +1 -1
- package/dist/daemon-health.d.ts +30 -0
- package/dist/daemon-health.d.ts.map +1 -1
- package/dist/deferred-messages.d.ts.map +1 -1
- package/dist/deferred-messages.js +1 -2
- package/dist/deferred-messages.js.map +1 -1
- package/dist/delivery-command.d.ts.map +1 -1
- package/dist/delivery-command.js +3 -1
- package/dist/delivery-command.js.map +1 -1
- package/dist/enqueue-command.d.ts.map +1 -1
- package/dist/enqueue-command.js +0 -2
- package/dist/enqueue-command.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/job-record.d.ts.map +1 -1
- package/dist/job-record.js +4 -16
- package/dist/job-record.js.map +1 -1
- package/dist/quota-poll-lanes.d.ts +3 -3
- package/dist/quota-poll-lanes.d.ts.map +1 -1
- package/dist/quota-poll-lanes.js.map +1 -1
- package/dist/quota-refresh-batches.d.ts +7 -6
- package/dist/quota-refresh-batches.d.ts.map +1 -1
- package/dist/quota-refresh-batches.js +6 -3
- package/dist/quota-refresh-batches.js.map +1 -1
- package/dist/quota-refresh-demand.d.ts.map +1 -1
- package/dist/quota-refresh-demand.js +3 -2
- package/dist/quota-refresh-demand.js.map +1 -1
- package/dist/quota-registry-replay.d.ts.map +1 -1
- package/dist/quota-registry-replay.js +10 -3
- package/dist/quota-registry-replay.js.map +1 -1
- package/dist/quota-registry-support.d.ts +14 -6
- package/dist/quota-registry-support.d.ts.map +1 -1
- package/dist/quota-registry-support.js +32 -10
- package/dist/quota-registry-support.js.map +1 -1
- package/dist/quota-registry.d.ts +71 -7
- package/dist/quota-registry.d.ts.map +1 -1
- package/dist/quota-registry.js +15 -15
- package/dist/quota-registry.js.map +1 -1
- package/dist/quota-resource-demand.d.ts +1 -1
- package/dist/quota-resource-demand.d.ts.map +1 -1
- package/dist/quota-resource-demand.js +2 -1
- package/dist/quota-resource-demand.js.map +1 -1
- package/dist/quota-resources.d.ts +11 -6
- package/dist/quota-resources.d.ts.map +1 -1
- package/dist/quota-resources.js +10 -5
- package/dist/quota-resources.js.map +1 -1
- package/dist/run-observation.d.ts.map +1 -1
- package/dist/run-observation.js +6 -4
- package/dist/run-observation.js.map +1 -1
- package/dist/store/command-prune.d.ts.map +1 -1
- package/dist/store/command-prune.js +6 -3
- package/dist/store/command-prune.js.map +1 -1
- package/dist/store/command-queries.d.ts.map +1 -1
- package/dist/store/command-queries.js +9 -11
- package/dist/store/command-queries.js.map +1 -1
- package/dist/store/command-rows.d.ts +1 -0
- package/dist/store/command-rows.d.ts.map +1 -1
- package/dist/store/command-rows.js +5 -2
- package/dist/store/command-rows.js.map +1 -1
- package/dist/store/cursors.d.ts +37 -1
- package/dist/store/cursors.d.ts.map +1 -1
- package/dist/store/cursors.js +64 -13
- package/dist/store/cursors.js.map +1 -1
- package/dist/store/deferred-messages.d.ts.map +1 -1
- package/dist/store/deferred-messages.js +1 -3
- package/dist/store/deferred-messages.js.map +1 -1
- package/dist/store/engine-state-recovery.d.ts +2 -2
- package/dist/store/engine-state-recovery.d.ts.map +1 -1
- package/dist/store/engine-state-recovery.js.map +1 -1
- package/dist/store/interactions.d.ts.map +1 -1
- package/dist/store/interactions.js +12 -1
- package/dist/store/interactions.js.map +1 -1
- package/dist/store/mutation.d.ts +5 -0
- package/dist/store/mutation.d.ts.map +1 -1
- package/dist/store/mutation.js +13 -0
- package/dist/store/mutation.js.map +1 -1
- package/dist/store/observation-notices.d.ts +14 -0
- package/dist/store/observation-notices.d.ts.map +1 -0
- package/dist/store/observation-notices.js +25 -0
- package/dist/store/observation-notices.js.map +1 -0
- package/dist/store/project-router.d.ts +6 -0
- package/dist/store/project-router.d.ts.map +1 -1
- package/dist/store/project-router.js +3 -0
- package/dist/store/project-router.js.map +1 -1
- package/dist/store/projects.d.ts +15 -1
- package/dist/store/projects.d.ts.map +1 -1
- package/dist/store/projects.js +83 -26
- package/dist/store/projects.js.map +1 -1
- package/dist/store/publish-blob.d.ts.map +1 -1
- package/dist/store/publish-blob.js +3 -10
- package/dist/store/publish-blob.js.map +1 -1
- package/dist/store/purge-files.d.ts +13 -1
- package/dist/store/purge-files.d.ts.map +1 -1
- package/dist/store/purge-files.js +26 -2
- package/dist/store/purge-files.js.map +1 -1
- package/dist/store/resource-rows.d.ts +0 -2
- package/dist/store/resource-rows.d.ts.map +1 -1
- package/dist/store/resource-rows.js +0 -9
- package/dist/store/resource-rows.js.map +1 -1
- package/dist/store/resources.d.ts.map +1 -1
- package/dist/store/resources.js +2 -6
- package/dist/store/resources.js.map +1 -1
- package/dist/store/retention-changes.d.ts.map +1 -1
- package/dist/store/retention-changes.js +4 -2
- package/dist/store/retention-changes.js.map +1 -1
- package/dist/store/retention-generations.d.ts +5 -0
- package/dist/store/retention-generations.d.ts.map +1 -1
- package/dist/store/retention-generations.js +13 -2
- package/dist/store/retention-generations.js.map +1 -1
- package/dist/store/retention-references.d.ts +2 -1
- package/dist/store/retention-references.d.ts.map +1 -1
- package/dist/store/retention-references.js +1 -0
- package/dist/store/retention-references.js.map +1 -1
- package/dist/store/schema.d.ts +2 -5
- package/dist/store/schema.d.ts.map +1 -1
- package/dist/store/schema.js +30 -9
- package/dist/store/schema.js.map +1 -1
- package/dist/store/sql-daemon-services.d.ts +2 -8
- package/dist/store/sql-daemon-services.d.ts.map +1 -1
- package/dist/store/sql-daemon-services.js +2 -2
- package/dist/store/sql-daemon-services.js.map +1 -1
- package/dist/store/sql-recovery.d.ts +2 -8
- package/dist/store/sql-recovery.d.ts.map +1 -1
- package/dist/store/sql-recovery.js +3 -3
- package/dist/store/sql-recovery.js.map +1 -1
- package/dist/store/store.d.ts +2 -0
- package/dist/store/store.d.ts.map +1 -1
- package/dist/store/store.js +2 -0
- package/dist/store/store.js.map +1 -1
- package/dist/store/thread-prompt-read.d.ts +4 -2
- package/dist/store/thread-prompt-read.d.ts.map +1 -1
- package/dist/store/thread-prompt-read.js +4 -2
- package/dist/store/thread-prompt-read.js.map +1 -1
- package/dist/store/threads.d.ts.map +1 -1
- package/dist/store/threads.js +3 -3
- package/dist/store/threads.js.map +1 -1
- package/dist/store/upload-imports.d.ts.map +1 -1
- package/dist/store/upload-imports.js +2 -4
- package/dist/store/upload-imports.js.map +1 -1
- package/dist/store/uploads.d.ts.map +1 -1
- package/dist/store/uploads.js +2 -4
- package/dist/store/uploads.js.map +1 -1
- package/dist/store-contracts.d.ts +6 -2
- package/dist/store-contracts.d.ts.map +1 -1
- package/dist/terminal-authority.d.ts +1 -1
- package/package.json +5 -5
package/dist/store/resources.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { Attachment, ControlResource, ModelPayloadRef, } from "@claudexor/schema";
|
|
2
|
-
import { sensitiveResourcePolicy } from "@claudexor/util";
|
|
3
2
|
import { deleteUnownedInlineInTx, sha256Hex } from "./blob-files.js";
|
|
4
3
|
import { runMutation } from "./mutation.js";
|
|
5
4
|
import { PublishBlob } from "./publish-blob.js";
|
|
6
|
-
import {
|
|
5
|
+
import { assertModelRef, assertResourceId, payloadRef, putResourceInTx, readResourceRow, readUploadRow, resourceError, resourceSha, purposeMismatch, verifiedResourceBytes, } from "./resource-rows.js";
|
|
7
6
|
import { SqlUploadImports } from "./upload-imports.js";
|
|
8
7
|
import { SqlUploads } from "./uploads.js";
|
|
9
8
|
/** Resource metadata and replay live in the one engine DB; only immutable bytes are files. */
|
|
@@ -47,10 +46,7 @@ export class SqlResourceStore {
|
|
|
47
46
|
if (resource.purpose === "model")
|
|
48
47
|
throw purposeMismatch();
|
|
49
48
|
const path = this.blobs.filePath(resourceSha(resource));
|
|
50
|
-
|
|
51
|
-
if (sensitiveResourcePolicy.classifyPath(resource.name).sensitive)
|
|
52
|
-
throw sensitiveResourceError();
|
|
53
|
-
assertContentAllowed(resource, bytes);
|
|
49
|
+
verifiedResourceBytes(resource, path);
|
|
54
50
|
return Attachment.parse({
|
|
55
51
|
resource_id: resource.resourceId,
|
|
56
52
|
kind: resource.kind,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/store/resources.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,eAAe,EACf,eAAe,GAEhB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/store/resources.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,eAAe,EACf,eAAe,GAEhB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAa,uBAAuB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,eAAe,EACf,aAAa,EACb,aAAa,EACb,WAAW,EACX,eAAe,EACf,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,8FAA8F;AAC9F,MAAM,OAAO,gBAAgB;IAOR,KAAK;IACL,KAAK;IAEL,GAAG;IATL,OAAO,CAAa;IACpB,SAAS,CAAc;IACvB,OAAO,CAAmB;IAC1B,OAAO,GAAG,IAAI,GAAG,EAAiB,CAAC;IAEpD,YACmB,KAAkB,EAClB,KAAgB,EACjC,WAAwB,EACP,GAAG,GAA2B,OAAO,CAAC,IAAI;qBAH1C,KAAK;qBACL,KAAK;mBAEL,GAAG;QAEpB,IAAI,CAAC,OAAO,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,SAAS,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CACjF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CACjB,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,CAAC,GAAY,EAAE,GAAW;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC;IACD,MAAM,CAAC,EAAU;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IACD,KAAK,CAAC,EAAU,EAAE,MAAiC;QACjD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IACD,MAAM,CAAC,EAAU;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IACD,QAAQ,CAAC,EAAU,EAAE,cAAkC,EAAE,GAAW;QAClE,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC;IAC1D,CAAC;IACD,YAAY,CAAC,GAAY,EAAE,GAAW;QACpC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,CAAC,IAAyC;QAC/C,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE;YACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC3C,IAAI,QAAQ,CAAC,OAAO,KAAK,OAAO;gBAAE,MAAM,eAAe,EAAE,CAAC;YAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;YACxD,qBAAqB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACtC,OAAO,UAAU,CAAC,KAAK,CAAC;gBACtB,WAAW,EAAE,QAAQ,CAAC,UAAU;gBAChC,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,UAAU,EAAE,QAAQ,CAAC,SAAS;gBAC9B,IAAI;aACL,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,CAAC,GAAoB;QAC5B,MAAM,GAAG,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC/C,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,qBAAqB,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrF,CAAC;IACD,YAAY,CAAC,KAAiB;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YACjC,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE,mBAAmB;YACzB,SAAS,EAAE,KAAK,CAAC,UAAU;SAC5B,CAAC,CAAC;QACH,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC9C,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,YAAY;gBAC3D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACxC,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IACD,YAAY,CAAC,GAAoB;QAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAChC,CAAC;IAED,2FAA2F;IAC3F,WAAW,CAAC,GAAoB,EAAE,SAAiB;QACjD,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED,kBAAkB;QAChB,OACE,IAAI,CAAC,KAAK;aACP,OAAO,CAAC,+EAA+E,CAAC;aACxF,GAAG,EACP,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACZ,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC3F,OAAO,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC;QACpE,CAAC,CAAC,CAAC;IACL,CAAC;IACD,mBAAmB;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACvC,CAAC;IACD,oBAAoB,CAAC,IAA8B;QACjD,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,uGAAuG;IACvG,KAAK,CAAC,YAAY;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI;YAAE,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC;IAEO,OAAO,CAAC,GAAoB,EAAE,KAA6B,EAAE,SAAkB;QACrF,MAAM,GAAG,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,UAAU,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;YAAE,OAAO;QACxE,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAClC,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE;YAC7B,eAAe,CAAC,EAAE,EAAE;gBAClB,GAAG,GAAG;gBACN,KAAK;gBACL,UAAU,EAAE,SAAS,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;gBAC/C,SAAS,EAAE,SAAS,IAAI,GAAG,CAAC,SAAS;aACtC,CAAC,CAAC;YACH,uBAAuB,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YACjC,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,CAAC;IACO,QAAQ,CAAC,EAAU;QACzB,gBAAgB,CAAC,EAAE,CAAC,CAAC;QACrB,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,UAAU,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;YAC7D,MAAM,aAAa,CAAC,qBAAqB,EAAE,EAAE,EAAE,GAAG,EAAE,oBAAoB,CAAC,CAAC;QAC5E,IAAI,GAAG,CAAC,KAAK,KAAK,YAAY;YAC5B,MAAM,aAAa,CAAC,8BAA8B,EAAE,GAAG,EAAE,sBAAsB,CAAC,CAAC;QACnF,OAAO,GAAG,CAAC,QAAQ,CAAC;IACtB,CAAC;IACO,KAAK,CAAC,IAAsB;QAClC,MAAM,OAAO,GAAG,IAAI;aACjB,IAAI,CACH,GAAG,EAAE,CAAC,SAAS,EACf,CAAC,KAAc,EAAE,EAAE;YACjB,IAAI,CAAC,GAAG,CACN,qCAAqC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC9F,CAAC;QACJ,CAAC,CACF;aACA,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retention-changes.d.ts","sourceRoot":"","sources":["../../src/store/retention-changes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAK9C,QAAA,MAAM,OAAO;aACX,MAAM,YAAG,IAAI,EAAE,OAAO,EAAE,MAAM;aAC9B,IAAI,YAAG,IAAI,EAAE,WAAW,EAAE,MAAM;aAChC,OAAO,YAAG,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM;aACjD,OAAO,YACL,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,SAAS,EACT,OAAO,EACP,aAAa,EACb,eAAe,EACf,YAAY;aAEd,WAAW,YAAG,IAAI,EAAE,QAAQ,EAAE,OAAO;aACrC,gBAAgB,YAAG,IAAI,EAAE,KAAK,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,OAAO;aACjF,OAAO,YAAG,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa;aACtD,SAAS,YAAG,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY;aAChD,IAAI,YAAG,QAAQ,EAAE,MAAM,EAAE,QAAQ;CACzB,CAAC;AACX,KAAK,KAAK,GAAG,MAAM,OAAO,OAAO,CAAC;AAClC,KAAK,MAAM,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"retention-changes.d.ts","sourceRoot":"","sources":["../../src/store/retention-changes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAK9C,QAAA,MAAM,OAAO;aACX,MAAM,YAAG,IAAI,EAAE,OAAO,EAAE,MAAM;aAC9B,IAAI,YAAG,IAAI,EAAE,WAAW,EAAE,MAAM;aAChC,OAAO,YAAG,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM;aACjD,OAAO,YACL,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,SAAS,EACT,OAAO,EACP,aAAa,EACb,eAAe,EACf,YAAY;aAEd,WAAW,YAAG,IAAI,EAAE,QAAQ,EAAE,OAAO;aACrC,gBAAgB,YAAG,IAAI,EAAE,KAAK,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,OAAO;aACjF,OAAO,YAAG,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa;aACtD,SAAS,YAAG,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY;aAChD,IAAI,YAAG,QAAQ,EAAE,MAAM,EAAE,QAAQ;CACzB,CAAC;AACX,KAAK,KAAK,GAAG,MAAM,OAAO,OAAO,CAAC;AAClC,KAAK,MAAM,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAwC9D;kFACkF;AAClF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW;IAoBzC,OAAO,OAAO,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,WAAW,WAAW;IASlE,OAAO,OAAO,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;IAQtC,KAAK;EAMR"}
|
|
@@ -28,8 +28,10 @@ function observe(store, listener) {
|
|
|
28
28
|
if (!listeners) {
|
|
29
29
|
const targets = new Set();
|
|
30
30
|
store.db.function("disk_retention_changed", (table, id, operation) => {
|
|
31
|
+
// Node 24.15 truncates TEXT at NUL; interaction keys must arrive as bytes.
|
|
32
|
+
const decodedId = Buffer.from(id).toString("utf8");
|
|
31
33
|
for (const target of targets)
|
|
32
|
-
target({ table: table, id:
|
|
34
|
+
target({ table: table, id: decodedId, operation: String(operation) });
|
|
33
35
|
return null;
|
|
34
36
|
});
|
|
35
37
|
for (const [table, fields] of Object.entries(columns)) {
|
|
@@ -45,7 +47,7 @@ function observe(store, listener) {
|
|
|
45
47
|
const rows = operation === "UPDATE" ? ["OLD", "NEW"] : [operation === "DELETE" ? "OLD" : "NEW"];
|
|
46
48
|
store.exec(`CREATE TEMP TRIGGER disk_retention_${table}_${operation}
|
|
47
49
|
AFTER ${operation} ON main.${table} ${changed} BEGIN
|
|
48
|
-
${rows.map((row) => `SELECT disk_retention_changed('${table}'
|
|
50
|
+
${rows.map((row) => `SELECT disk_retention_changed('${table}',CAST(${row}.${key} AS BLOB),'${operation}');`).join("\n")}
|
|
49
51
|
END`);
|
|
50
52
|
}
|
|
51
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retention-changes.js","sourceRoot":"","sources":["../../src/store/retention-changes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGxE,6EAA6E;AAC7E,6EAA6E;AAC7E,kEAAkE;AAClE,MAAM,OAAO,GAAG;IACd,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC;IAC/B,IAAI,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC;IACjC,OAAO,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,CAAC;IAClD,OAAO,EAAE;QACP,IAAI;QACJ,MAAM;QACN,QAAQ;QACR,SAAS;QACT,OAAO;QACP,aAAa;QACb,eAAe;QACf,YAAY;KACb;IACD,WAAW,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC;IACtC,gBAAgB,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,OAAO,CAAC;IAClF,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC;IACvD,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC;IACjD,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;CAC1B,CAAC;AAIX,MAAM,SAAS,GAAG,IAAI,OAAO,EAA8B,CAAC;AAE5D,SAAS,OAAO,CAAC,KAAkB,EAAE,QAAkB;IACrD,IAAI,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACrC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,IAAI,GAAG,EAAY,CAAC;QACpC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,wBAAwB,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE;YACnE,KAAK,MAAM,MAAM,IAAI,OAAO;gBAC1B,MAAM,CAAC,EAAE,KAAK,EAAE,KAAc,EAAE,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"retention-changes.js","sourceRoot":"","sources":["../../src/store/retention-changes.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,11 @@ export declare function retentionGenerations(store: EngineStore): {
|
|
|
8
8
|
archivedProjectRoots: Set<string>;
|
|
9
9
|
protectedProjectRoots: Set<string>;
|
|
10
10
|
errors: string[];
|
|
11
|
+
holds: {
|
|
12
|
+
class: "anchor_references_unreadable" | "cleanup_suppressed" | "missing_partition" | "namespace_unreadable" | "native_home_veto" | "recovery_pending" | "references_changed" | "unbound_active_registration";
|
|
13
|
+
count: number;
|
|
14
|
+
example: string;
|
|
15
|
+
}[];
|
|
11
16
|
blocked: string | undefined;
|
|
12
17
|
};
|
|
13
18
|
//# sourceMappingURL=retention-generations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retention-generations.d.ts","sourceRoot":"","sources":["../../src/store/retention-generations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"retention-generations.d.ts","sourceRoot":"","sources":["../../src/store/retention-generations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG9C;;yDAEyD;AACzD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW;oBAmB9B,MAAM;;;;;;;;;;;EAmE9B"}
|
|
@@ -31,6 +31,7 @@ export function retentionGenerations(store) {
|
|
|
31
31
|
.map((row) => row.root));
|
|
32
32
|
const protectedProjectRoots = new Set();
|
|
33
33
|
const errors = [];
|
|
34
|
+
const holds = [];
|
|
34
35
|
let blocked;
|
|
35
36
|
for (const row of rows) {
|
|
36
37
|
if (retained(row.id) || retired(row))
|
|
@@ -39,14 +40,23 @@ export function retentionGenerations(store) {
|
|
|
39
40
|
// Scope roots do not bound dependencies: a continuation may name any namespace.
|
|
40
41
|
blocked ??= reason;
|
|
41
42
|
errors.push(`all namespaces kept: ${reason}`);
|
|
43
|
+
holds.push({ class: "recovery_pending", count: 1, example: reason });
|
|
42
44
|
}
|
|
45
|
+
const bindingHolds = new Set();
|
|
43
46
|
for (const row of store
|
|
44
47
|
.prepare(`SELECT p.root,p.current_pid FROM project p
|
|
45
48
|
JOIN partition g ON g.id=p.pid LEFT JOIN partition q ON q.id=p.current_pid
|
|
46
|
-
WHERE g.status IN ('ready','archived') AND
|
|
49
|
+
WHERE g.status IN ('ready','archived') AND
|
|
50
|
+
((p.current_pid IS NOT NULL AND q.id IS NULL) OR
|
|
51
|
+
(p.status='active' AND p.current_pid IS NULL))`)
|
|
47
52
|
.all()) {
|
|
53
|
+
const reason = row.current_pid === null ? "unbound_active_registration" : "missing_partition";
|
|
54
|
+
const holdKey = `${reason}\0${row.root}`;
|
|
55
|
+
if (!bindingHolds.has(holdKey))
|
|
56
|
+
holds.push({ class: reason, count: 1, example: row.root });
|
|
57
|
+
bindingHolds.add(holdKey);
|
|
48
58
|
protectedProjectRoots.add(row.root);
|
|
49
|
-
errors.push(`namespace ${row.root} kept:
|
|
59
|
+
errors.push(`namespace ${row.root} kept: ${reason} (${row.current_pid ?? "NULL"})`);
|
|
50
60
|
}
|
|
51
61
|
return {
|
|
52
62
|
retained,
|
|
@@ -54,6 +64,7 @@ export function retentionGenerations(store) {
|
|
|
54
64
|
archivedProjectRoots,
|
|
55
65
|
protectedProjectRoots,
|
|
56
66
|
errors,
|
|
67
|
+
holds,
|
|
57
68
|
blocked,
|
|
58
69
|
};
|
|
59
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retention-generations.js","sourceRoot":"","sources":["../../src/store/retention-generations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"retention-generations.js","sourceRoot":"","sources":["../../src/store/retention-generations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Thread } from "@claudexor/schema";
|
|
1
|
+
import { Thread, type GcHold } from "@claudexor/schema";
|
|
2
2
|
import type { EngineStore } from "./store.js";
|
|
3
3
|
export interface DiskRetentionReferences {
|
|
4
4
|
/** Legacy exact inventory witness; current retirement rechecks changed owners. */
|
|
@@ -19,6 +19,7 @@ export interface DiskRetentionReferences {
|
|
|
19
19
|
/** Recovery holds are receipt facts; completed quarantine is not a hold. */
|
|
20
20
|
blocked?: string;
|
|
21
21
|
errors?: string[];
|
|
22
|
+
holds?: GcHold[];
|
|
22
23
|
projectRoots: string[];
|
|
23
24
|
/** Retained active/archived registrations; thread root names alone are not ownership. */
|
|
24
25
|
registeredProjectRoots: Set<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retention-references.d.ts","sourceRoot":"","sources":["../../src/store/retention-references.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"retention-references.d.ts","sourceRoot":"","sources":["../../src/store/retention-references.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAU9C,MAAM,WAAW,uBAAuB;IACtC,kFAAkF;IAClF,SAAS,EAAE,MAAM,OAAO,CAAC;IACzB,qFAAqF;IACrF,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC;IACxB,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC;IAC9B,iFAAiF;IACjF,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9C,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACzC,oBAAoB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC3C,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC;IAClC,kFAAkF;IAClF,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IACnB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,yFAAyF;IACzF,sBAAsB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,6EAA6E;IAC7E,oBAAoB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnC,qBAAqB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnC,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACzC,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACvE;AAED;gFACgF;AAChF,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,WAAW,EAClB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,EAAE,CAAC,CA8CnB;AAED;wFACwF;AACxF,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,WAAW,EAClB,eAAe,GAAE,WAAW,CAAC,MAAM,CAAa,EAChD,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,uBAAuB,CAAC,CAiHlC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retention-references.js","sourceRoot":"","sources":["../../src/store/retention-references.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"retention-references.js","sourceRoot":"","sources":["../../src/store/retention-references.ts"],"names":[],"mappings":"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"}
|
package/dist/store/schema.d.ts
CHANGED
|
@@ -2,10 +2,7 @@ import type { DatabaseSync } from "node:sqlite";
|
|
|
2
2
|
/** `PRAGMA application_id` of every engine store ("CXEN"). */
|
|
3
3
|
export declare const ENGINE_APPLICATION_ID = 1129858382;
|
|
4
4
|
/** `PRAGMA user_version`: the one schema this engine creates and serves. */
|
|
5
|
-
export declare const ENGINE_SCHEMA_VERSION =
|
|
6
|
-
/** Shared with the group query so SQLite can prove partial-index eligibility.
|
|
7
|
-
* CASE guards extraction even for legal non-JSON summary bytes. */
|
|
8
|
-
export declare const TASK_GROUP_PRESENT_SQL = "CASE WHEN json_valid(CAST(summary AS TEXT))\n THEN json_extract(CAST(summary AS TEXT),'$.params.taskGroupId') END IS NOT NULL";
|
|
5
|
+
export declare const ENGINE_SCHEMA_VERSION = 6;
|
|
9
6
|
/** Version 5: guard both the expression key and partial predicate against non-JSON bodies.
|
|
10
7
|
* Acceptance is mutable query policy, not index membership. */
|
|
11
8
|
export declare const PLAN_ANSWER_RUN_SQL = "CASE WHEN json_valid(CAST(body AS TEXT))\n THEN json_extract(CAST(body AS TEXT),'$.answers_plan_run_id') END";
|
|
@@ -18,7 +15,7 @@ export declare const PLAN_ANSWER_PRESENT_SQL = "CASE WHEN json_valid(CAST(body A
|
|
|
18
15
|
* history. `pid` is the surrogate of one partition generation and the only
|
|
19
16
|
* partition key a row carries.
|
|
20
17
|
*/
|
|
21
|
-
export declare const ENGINE_SCHEMA_SQL = "\nCREATE TABLE meta(key TEXT PRIMARY KEY, value TEXT NOT NULL) STRICT;\nCREATE TABLE partition(id INTEGER PRIMARY KEY, name TEXT NOT NULL, epoch TEXT NOT NULL, status TEXT NOT NULL,\n next_seq INTEGER NOT NULL, project_id TEXT, created_at TEXT NOT NULL, UNIQUE(name, epoch)) STRICT;\nCREATE TABLE event(pid INTEGER NOT NULL, seq INTEGER NOT NULL, time TEXT NOT NULL, type TEXT NOT NULL,\n payload BLOB NOT NULL, payload_sha TEXT, slot_key TEXT, group_key TEXT, PRIMARY KEY(pid, seq)) WITHOUT ROWID, STRICT;\nCREATE INDEX event_type ON event(pid, type, seq);\nCREATE INDEX event_slot ON event(pid, slot_key) WHERE slot_key IS NOT NULL;\nCREATE INDEX event_group ON event(pid, group_key) WHERE group_key IS NOT NULL;\nCREATE INDEX event_payload ON event(payload_sha) WHERE payload_sha IS NOT NULL;\nCREATE INDEX event_command_age ON event(time,pid,seq) WHERE type IN ('command.accepted','command.updated');\nCREATE TABLE blob(sha256 TEXT PRIMARY KEY, size INTEGER NOT NULL, inline BLOB) STRICT;\nCREATE TABLE command(id TEXT PRIMARY KEY, pid INTEGER NOT NULL, operation TEXT NOT NULL, state TEXT NOT NULL, client_id TEXT,\n run_id TEXT, task_id TEXT, run_dir TEXT, thread_id TEXT, turn_id TEXT, delegated_from TEXT, continue_from TEXT, scope_root TEXT,\n created_at TEXT NOT NULL, started_at TEXT, finished_at TEXT, summary BLOB NOT NULL, params_sha TEXT NOT NULL, result_sha TEXT,\n error BLOB, last_event_seq INTEGER, response_state TEXT, response_expires_at TEXT, request_resource_id TEXT, response_resource_id TEXT,\n kind TEXT NOT NULL, live INTEGER NOT NULL DEFAULT 1, needs_decision INTEGER NOT NULL DEFAULT 0) STRICT;\nCREATE INDEX command_run ON command(run_id);\nCREATE INDEX command_partition ON command(pid);\nCREATE INDEX command_active ON command(state, pid) WHERE live = 1 AND state IN ('queued','running');\nCREATE INDEX command_thread ON command(thread_id, state);\nCREATE INDEX command_turn ON command(turn_id, created_at);\nCREATE INDEX command_request_resource ON command(request_resource_id) WHERE request_resource_id IS NOT NULL;\nCREATE INDEX command_response_resource ON command(response_resource_id) WHERE response_resource_id IS NOT NULL;\nCREATE INDEX command_parent ON command(delegated_from);\nCREATE INDEX command_continue ON command(continue_from);\nCREATE INDEX command_list ON command(created_at DESC, id DESC) WHERE live = 1 AND kind = 'product';\nCREATE INDEX command_list_state ON command(state, created_at DESC, id DESC) WHERE live = 1 AND kind = 'product';\nCREATE INDEX command_terminal ON command(created_at, id)\n WHERE live = 1 AND kind IN ('product','delivery','maintenance') AND finished_at IS NOT NULL;\nCREATE INDEX command_prunable ON command(created_at, id)\n WHERE live = 1 AND kind IN ('product','delivery','maintenance') AND finished_at IS NOT NULL AND needs_decision = 0;\nCREATE INDEX command_expiry ON command(response_state, response_expires_at) WHERE kind = 'model';\nCREATE INDEX command_maintenance_harness ON command(json_extract(CAST(summary AS TEXT),'$.params.harness'),created_at)\n WHERE live=1 AND kind='maintenance';\nCREATE INDEX command_params ON command(params_sha);\nCREATE INDEX command_result ON command(result_sha) WHERE result_sha IS NOT NULL;\nCREATE TABLE run_terminal(run_id TEXT PRIMARY KEY, pid INTEGER NOT NULL, event BLOB NOT NULL) STRICT;\nCREATE TABLE effect_obligation(kind TEXT NOT NULL, key TEXT NOT NULL, pid INTEGER NOT NULL, created_at TEXT NOT NULL, payload BLOB NOT NULL,\n state TEXT NOT NULL DEFAULT 'pending', materialized_g INTEGER, PRIMARY KEY(kind, key)) WITHOUT ROWID, STRICT;\nCREATE TABLE idempotency(owner TEXT NOT NULL, pid INTEGER NOT NULL, key_digest TEXT NOT NULL, operation TEXT NOT NULL,\n request_digest TEXT NOT NULL, target_id TEXT NOT NULL, result BLOB, created_at TEXT NOT NULL,\n PRIMARY KEY(owner, pid, key_digest)) WITHOUT ROWID, STRICT;\nCREATE INDEX idempotency_target ON idempotency(target_id);\nCREATE TABLE thread(id TEXT PRIMARY KEY, pid INTEGER NOT NULL, state TEXT NOT NULL, updated_at TEXT NOT NULL,\n head_revision INTEGER NOT NULL DEFAULT 0, body BLOB NOT NULL) STRICT;\nCREATE INDEX thread_list ON thread(pid, state, updated_at DESC);\nCREATE TABLE turn(id TEXT PRIMARY KEY, pid INTEGER NOT NULL, thread_id TEXT NOT NULL, ordinal INTEGER NOT NULL, run_id TEXT,\n created_at TEXT NOT NULL, prompt_sha TEXT NOT NULL, body BLOB NOT NULL) STRICT;\nCREATE UNIQUE INDEX turn_thread ON turn(thread_id, ordinal);\nCREATE UNIQUE INDEX turn_run ON turn(run_id) WHERE run_id IS NOT NULL;\nCREATE INDEX turn_prompt ON turn(prompt_sha);\nCREATE TABLE session(id TEXT PRIMARY KEY, thread_id TEXT NOT NULL, harness_id TEXT NOT NULL, profile_id TEXT NOT NULL DEFAULT '', pid INTEGER NOT NULL,\n insertion_ordinal INTEGER NOT NULL DEFAULT 0, body BLOB NOT NULL) WITHOUT ROWID, STRICT;\nCREATE INDEX session_lane ON session(thread_id, harness_id, profile_id);\nCREATE INDEX session_order ON session(thread_id, insertion_ordinal);\nCREATE INDEX session_partition ON session(pid, insertion_ordinal);\nCREATE TABLE lane_checkpoint(thread_id TEXT NOT NULL, harness_id TEXT NOT NULL, profile_id TEXT NOT NULL DEFAULT '', pid INTEGER NOT NULL,\n insertion_ordinal INTEGER NOT NULL DEFAULT 0, turn_id TEXT NOT NULL, body BLOB NOT NULL, PRIMARY KEY(thread_id, harness_id, profile_id)) WITHOUT ROWID, STRICT;\nCREATE INDEX lane_checkpoint_order ON lane_checkpoint(thread_id, insertion_ordinal);\nCREATE INDEX lane_checkpoint_partition ON lane_checkpoint(pid, insertion_ordinal);\nCREATE TABLE interaction(id TEXT PRIMARY KEY, pid INTEGER NOT NULL, run_id TEXT NOT NULL, state TEXT NOT NULL,\n request BLOB NOT NULL, resolution BLOB) STRICT;\nCREATE INDEX interaction_pending ON interaction(run_id) WHERE state = 'pending';\nCREATE INDEX interaction_run ON interaction(run_id);\nCREATE INDEX interaction_partition_pending ON interaction(pid,run_id) WHERE state = 'pending';\nCREATE TABLE operator_decision(run_id TEXT PRIMARY KEY, pid INTEGER NOT NULL, body BLOB NOT NULL) STRICT;\nCREATE TABLE project(id TEXT PRIMARY KEY, pid INTEGER NOT NULL, root TEXT NOT NULL, status TEXT NOT NULL,\n current_pid INTEGER, creation_key_digest TEXT, created_at TEXT NOT NULL, updated_at TEXT NOT NULL, body BLOB NOT NULL) STRICT;\nCREATE UNIQUE INDEX project_root_active ON project(pid, root) WHERE status = 'active';\nCREATE INDEX project_current_pid ON project(current_pid) WHERE status = 'active';\nCREATE TABLE pruned_root(root TEXT PRIMARY KEY) STRICT;\nCREATE TABLE resource(id TEXT PRIMARY KEY, purpose TEXT, kind TEXT NOT NULL, sha256 TEXT NOT NULL, size_bytes INTEGER NOT NULL,\n state TEXT NOT NULL, created_at TEXT NOT NULL, expires_at TEXT, released_at TEXT, body BLOB NOT NULL) STRICT;\nCREATE INDEX resource_sha ON resource(sha256);\nCREATE INDEX resource_expiry ON resource(state, expires_at);\nCREATE TABLE upload(id TEXT PRIMARY KEY, state TEXT NOT NULL, received_bytes INTEGER NOT NULL, expected_bytes INTEGER,\n finalize_sha TEXT, body BLOB NOT NULL) STRICT;\nCREATE INDEX upload_finalize ON upload(finalize_sha) WHERE finalize_sha IS NOT NULL;\nCREATE TABLE import_partition(name TEXT PRIMARY KEY, status TEXT NOT NULL, pid INTEGER, epoch TEXT, next_seq INTEGER,\n previous_frame_hash TEXT, source_size INTEGER, source_mtime TEXT, fingerprint TEXT, records INTEGER, digest TEXT, problem TEXT) STRICT;\nCREATE TABLE unclassified(pid INTEGER NOT NULL, seq INTEGER NOT NULL, type TEXT NOT NULL, reason TEXT NOT NULL, payload BLOB NOT NULL,\n PRIMARY KEY(pid, seq)) WITHOUT ROWID, STRICT;\n\nCREATE TABLE account_last_service(harness_id TEXT NOT NULL, profile_id TEXT NOT NULL, requested_model_key TEXT NOT NULL,\n binding_digest TEXT NOT NULL, service_seq INTEGER NOT NULL, observed_at TEXT NOT NULL, run_id TEXT NOT NULL,\n attempt_id TEXT NOT NULL, try_index INTEGER NOT NULL,\n PRIMARY KEY(harness_id, profile_id, requested_model_key, binding_digest)) WITHOUT ROWID, STRICT;\n\nCREATE
|
|
18
|
+
export declare const ENGINE_SCHEMA_SQL = "\nCREATE TABLE meta(key TEXT PRIMARY KEY, value TEXT NOT NULL) STRICT;\nCREATE TABLE partition(id INTEGER PRIMARY KEY, name TEXT NOT NULL, epoch TEXT NOT NULL, status TEXT NOT NULL,\n next_seq INTEGER NOT NULL, project_id TEXT, created_at TEXT NOT NULL, UNIQUE(name, epoch)) STRICT;\nCREATE TABLE event(pid INTEGER NOT NULL, seq INTEGER NOT NULL, time TEXT NOT NULL, type TEXT NOT NULL,\n payload BLOB NOT NULL, payload_sha TEXT, slot_key TEXT, group_key TEXT, PRIMARY KEY(pid, seq)) WITHOUT ROWID, STRICT;\nCREATE INDEX event_type ON event(pid, type, seq);\nCREATE INDEX event_slot ON event(pid, slot_key) WHERE slot_key IS NOT NULL;\nCREATE INDEX event_group ON event(pid, group_key) WHERE group_key IS NOT NULL;\nCREATE INDEX event_payload ON event(payload_sha) WHERE payload_sha IS NOT NULL;\nCREATE INDEX event_command_age ON event(time,pid,seq) WHERE type IN ('command.accepted','command.updated');\nCREATE TABLE blob(sha256 TEXT PRIMARY KEY, size INTEGER NOT NULL, inline BLOB) STRICT;\nCREATE TABLE command(id TEXT PRIMARY KEY, pid INTEGER NOT NULL, operation TEXT NOT NULL, state TEXT NOT NULL, client_id TEXT,\n run_id TEXT, task_id TEXT, run_dir TEXT, thread_id TEXT, turn_id TEXT, delegated_from TEXT, continue_from TEXT, scope_root TEXT,\n created_at TEXT NOT NULL, started_at TEXT, finished_at TEXT, summary BLOB NOT NULL, params_sha TEXT NOT NULL, result_sha TEXT,\n error BLOB, last_event_seq INTEGER, response_state TEXT, response_expires_at TEXT, request_resource_id TEXT, response_resource_id TEXT,\n kind TEXT NOT NULL, live INTEGER NOT NULL DEFAULT 1, needs_decision INTEGER NOT NULL DEFAULT 0, task_group_id TEXT) STRICT;\nCREATE INDEX command_run ON command(run_id);\nCREATE INDEX command_partition ON command(pid);\nCREATE INDEX command_active ON command(state, pid) WHERE live = 1 AND state IN ('queued','running');\nCREATE INDEX command_thread ON command(thread_id, state);\nCREATE INDEX command_turn ON command(turn_id, created_at);\nCREATE INDEX command_request_resource ON command(request_resource_id) WHERE request_resource_id IS NOT NULL;\nCREATE INDEX command_response_resource ON command(response_resource_id) WHERE response_resource_id IS NOT NULL;\nCREATE INDEX command_parent ON command(delegated_from);\nCREATE INDEX command_continue ON command(continue_from);\nCREATE INDEX command_list ON command(created_at DESC, id DESC) WHERE live = 1 AND kind = 'product';\nCREATE INDEX command_list_state ON command(state, created_at DESC, id DESC) WHERE live = 1 AND kind = 'product';\nCREATE INDEX command_terminal ON command(created_at, id)\n WHERE live = 1 AND kind IN ('product','delivery','maintenance') AND finished_at IS NOT NULL;\nCREATE INDEX command_prunable ON command(created_at, id)\n WHERE live = 1 AND kind IN ('product','delivery','maintenance') AND finished_at IS NOT NULL AND needs_decision = 0;\nCREATE INDEX command_expiry ON command(response_state, response_expires_at) WHERE kind = 'model';\nCREATE INDEX command_maintenance_harness ON command(json_extract(CAST(summary AS TEXT),'$.params.harness'),created_at)\n WHERE live=1 AND kind='maintenance';\nCREATE INDEX command_params ON command(params_sha);\nCREATE INDEX command_result ON command(result_sha) WHERE result_sha IS NOT NULL;\nCREATE TABLE run_terminal(run_id TEXT PRIMARY KEY, pid INTEGER NOT NULL, event BLOB NOT NULL) STRICT;\nCREATE TABLE effect_obligation(kind TEXT NOT NULL, key TEXT NOT NULL, pid INTEGER NOT NULL, created_at TEXT NOT NULL, payload BLOB NOT NULL,\n state TEXT NOT NULL DEFAULT 'pending', materialized_g INTEGER, PRIMARY KEY(kind, key)) WITHOUT ROWID, STRICT;\nCREATE TABLE idempotency(owner TEXT NOT NULL, pid INTEGER NOT NULL, key_digest TEXT NOT NULL, operation TEXT NOT NULL,\n request_digest TEXT NOT NULL, target_id TEXT NOT NULL, result BLOB, created_at TEXT NOT NULL,\n PRIMARY KEY(owner, pid, key_digest)) WITHOUT ROWID, STRICT;\nCREATE INDEX idempotency_target ON idempotency(target_id);\nCREATE TABLE thread(id TEXT PRIMARY KEY, pid INTEGER NOT NULL, state TEXT NOT NULL, updated_at TEXT NOT NULL,\n head_revision INTEGER NOT NULL DEFAULT 0, body BLOB NOT NULL) STRICT;\nCREATE INDEX thread_list ON thread(pid, state, updated_at DESC);\nCREATE TABLE turn(id TEXT PRIMARY KEY, pid INTEGER NOT NULL, thread_id TEXT NOT NULL, ordinal INTEGER NOT NULL, run_id TEXT,\n created_at TEXT NOT NULL, prompt_sha TEXT NOT NULL, body BLOB NOT NULL) STRICT;\nCREATE UNIQUE INDEX turn_thread ON turn(thread_id, ordinal);\nCREATE UNIQUE INDEX turn_run ON turn(run_id) WHERE run_id IS NOT NULL;\nCREATE INDEX turn_prompt ON turn(prompt_sha);\nCREATE TABLE session(id TEXT PRIMARY KEY, thread_id TEXT NOT NULL, harness_id TEXT NOT NULL, profile_id TEXT NOT NULL DEFAULT '', pid INTEGER NOT NULL,\n insertion_ordinal INTEGER NOT NULL DEFAULT 0, body BLOB NOT NULL) WITHOUT ROWID, STRICT;\nCREATE INDEX session_lane ON session(thread_id, harness_id, profile_id);\nCREATE INDEX session_order ON session(thread_id, insertion_ordinal);\nCREATE INDEX session_partition ON session(pid, insertion_ordinal);\nCREATE TABLE lane_checkpoint(thread_id TEXT NOT NULL, harness_id TEXT NOT NULL, profile_id TEXT NOT NULL DEFAULT '', pid INTEGER NOT NULL,\n insertion_ordinal INTEGER NOT NULL DEFAULT 0, turn_id TEXT NOT NULL, body BLOB NOT NULL, PRIMARY KEY(thread_id, harness_id, profile_id)) WITHOUT ROWID, STRICT;\nCREATE INDEX lane_checkpoint_order ON lane_checkpoint(thread_id, insertion_ordinal);\nCREATE INDEX lane_checkpoint_partition ON lane_checkpoint(pid, insertion_ordinal);\nCREATE TABLE interaction(id TEXT PRIMARY KEY, pid INTEGER NOT NULL, run_id TEXT NOT NULL, state TEXT NOT NULL,\n request BLOB NOT NULL, resolution BLOB) STRICT;\nCREATE INDEX interaction_pending ON interaction(run_id) WHERE state = 'pending';\nCREATE INDEX interaction_run ON interaction(run_id);\nCREATE INDEX interaction_partition_pending ON interaction(pid,run_id) WHERE state = 'pending';\nCREATE TABLE operator_decision(run_id TEXT PRIMARY KEY, pid INTEGER NOT NULL, body BLOB NOT NULL) STRICT;\nCREATE TABLE project(id TEXT PRIMARY KEY, pid INTEGER NOT NULL, root TEXT NOT NULL, status TEXT NOT NULL,\n current_pid INTEGER, creation_key_digest TEXT, created_at TEXT NOT NULL, updated_at TEXT NOT NULL, body BLOB NOT NULL) STRICT;\nCREATE UNIQUE INDEX project_root_active ON project(pid, root) WHERE status = 'active';\nCREATE INDEX project_current_pid ON project(current_pid) WHERE status = 'active';\nCREATE TABLE pruned_root(root TEXT PRIMARY KEY) STRICT;\nCREATE TABLE resource(id TEXT PRIMARY KEY, purpose TEXT, kind TEXT NOT NULL, sha256 TEXT NOT NULL, size_bytes INTEGER NOT NULL,\n state TEXT NOT NULL, created_at TEXT NOT NULL, expires_at TEXT, released_at TEXT, body BLOB NOT NULL) STRICT;\nCREATE INDEX resource_sha ON resource(sha256);\nCREATE INDEX resource_expiry ON resource(state, expires_at);\nCREATE TABLE upload(id TEXT PRIMARY KEY, state TEXT NOT NULL, received_bytes INTEGER NOT NULL, expected_bytes INTEGER,\n finalize_sha TEXT, body BLOB NOT NULL) STRICT;\nCREATE INDEX upload_finalize ON upload(finalize_sha) WHERE finalize_sha IS NOT NULL;\nCREATE TABLE import_partition(name TEXT PRIMARY KEY, status TEXT NOT NULL, pid INTEGER, epoch TEXT, next_seq INTEGER,\n previous_frame_hash TEXT, source_size INTEGER, source_mtime TEXT, fingerprint TEXT, records INTEGER, digest TEXT, problem TEXT) STRICT;\nCREATE TABLE unclassified(pid INTEGER NOT NULL, seq INTEGER NOT NULL, type TEXT NOT NULL, reason TEXT NOT NULL, payload BLOB NOT NULL,\n PRIMARY KEY(pid, seq)) WITHOUT ROWID, STRICT;\n\nCREATE TABLE account_last_service(harness_id TEXT NOT NULL, profile_id TEXT NOT NULL, requested_model_key TEXT NOT NULL,\n binding_digest TEXT NOT NULL, service_seq INTEGER NOT NULL, observed_at TEXT NOT NULL, run_id TEXT NOT NULL,\n attempt_id TEXT NOT NULL, try_index INTEGER NOT NULL,\n PRIMARY KEY(harness_id, profile_id, requested_model_key, binding_digest)) WITHOUT ROWID, STRICT;\n\nCREATE TABLE deferred_message(id TEXT PRIMARY KEY, pid INTEGER NOT NULL, predecessor_job_id TEXT NOT NULL,\n revision INTEGER NOT NULL, state TEXT NOT NULL CHECK(state IN ('waiting','held','dispatched','cleared')),\n body_sha TEXT, hold BLOB, successor_job_id TEXT, dispatched_revision INTEGER, created_at TEXT NOT NULL) STRICT;\nCREATE UNIQUE INDEX deferred_message_slot ON deferred_message(pid,predecessor_job_id) WHERE state IN ('waiting','held');\nCREATE INDEX deferred_message_predecessor ON deferred_message(predecessor_job_id);\nCREATE INDEX deferred_message_successor ON deferred_message(successor_job_id) WHERE successor_job_id IS NOT NULL;\nCREATE INDEX deferred_message_body ON deferred_message(body_sha) WHERE body_sha IS NOT NULL;\n\nCREATE INDEX turn_plan_answer ON turn(thread_id,CASE WHEN json_valid(CAST(body AS TEXT))\n THEN json_extract(CAST(body AS TEXT),'$.answers_plan_run_id') END,ordinal)\n WHERE CASE WHEN json_valid(CAST(body AS TEXT))\n THEN json_extract(CAST(body AS TEXT),'$.answers_plan_run_id') END IS NOT NULL;\n\nCREATE INDEX command_task_group ON command(task_group_id,created_at DESC,id DESC)\n WHERE live=1 AND kind='product' AND task_group_id IS NOT NULL;\nCREATE INDEX command_task_group_state ON command(task_group_id,state,created_at DESC,id DESC)\n WHERE live=1 AND kind='product' AND task_group_id IS NOT NULL;\n";
|
|
22
19
|
/** Every table the DDL creates, in creation order (for tests and the importer seam). */
|
|
23
20
|
export declare const ENGINE_TABLES: readonly string[];
|
|
24
21
|
export interface SchemaIdentity {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/store/schema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,8DAA8D;AAC9D,eAAO,MAAM,qBAAqB,aAAa,CAAC;AAChD,4EAA4E;AAC5E,eAAO,MAAM,qBAAqB,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/store/schema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,8DAA8D;AAC9D,eAAO,MAAM,qBAAqB,aAAa,CAAC;AAChD,4EAA4E;AAC5E,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAyCvC;+DAC+D;AAC/D,eAAO,MAAM,mBAAmB,kHACoC,CAAC;AACrE,eAAO,MAAM,uBAAuB,8HAAuC,CAAC;AA4B5E;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,kpSAmF2E,CAAC;AAE1G,wFAAwF;AACxF,eAAO,MAAM,aAAa,EAAE,SAAS,MAAM,EAE1C,CAAC;AAgBF,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,oGAAoG;IACpG,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,YAAY,GAAG,cAAc,CAYnE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAqB9F;AAED,uFAAuF;AACvF,wBAAgB,YAAY,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,GAAE,MAAM,IAAuB,GAAG,IAAI,CAkCvF"}
|
package/dist/store/schema.js
CHANGED
|
@@ -3,7 +3,7 @@ import { StoreSchemaUnsupportedError } from "./errors.js";
|
|
|
3
3
|
/** `PRAGMA application_id` of every engine store ("CXEN"). */
|
|
4
4
|
export const ENGINE_APPLICATION_ID = 0x4358454e;
|
|
5
5
|
/** `PRAGMA user_version`: the one schema this engine creates and serves. */
|
|
6
|
-
export const ENGINE_SCHEMA_VERSION =
|
|
6
|
+
export const ENGINE_SCHEMA_VERSION = 6;
|
|
7
7
|
/** Version 4: one reserved editable next message; accepted params stay immutable. */
|
|
8
8
|
const DEFERRED_MESSAGE_SQL = `
|
|
9
9
|
CREATE TABLE deferred_message(id TEXT PRIMARY KEY, pid INTEGER NOT NULL, predecessor_job_id TEXT NOT NULL,
|
|
@@ -28,11 +28,11 @@ CREATE TABLE account_last_service(harness_id TEXT NOT NULL, profile_id TEXT NOT
|
|
|
28
28
|
attempt_id TEXT NOT NULL, try_index INTEGER NOT NULL,
|
|
29
29
|
PRIMARY KEY(harness_id, profile_id, requested_model_key, binding_digest)) WITHOUT ROWID, STRICT;
|
|
30
30
|
`;
|
|
31
|
-
/**
|
|
32
|
-
|
|
33
|
-
export const TASK_GROUP_PRESENT_SQL = `CASE WHEN json_valid(CAST(summary AS TEXT))
|
|
31
|
+
/** CASE guards extraction even for legal non-JSON summary bytes. */
|
|
32
|
+
const TASK_GROUP_PRESENT_SQL = `CASE WHEN json_valid(CAST(summary AS TEXT))
|
|
34
33
|
THEN json_extract(CAST(summary AS TEXT),'$.params.taskGroupId') END IS NOT NULL`;
|
|
35
|
-
/** Version 3
|
|
34
|
+
/** Version 3 indexed tagged accepted summaries. Kept as the historical 2→3 step;
|
|
35
|
+
* version 6 moves membership into a column. */
|
|
36
36
|
const TASK_GROUP_INDEX_SQL = `
|
|
37
37
|
CREATE INDEX command_task_group ON command(json_extract(CAST(summary AS TEXT),'$.params.taskGroupId'),created_at DESC,id DESC)
|
|
38
38
|
WHERE live=1 AND kind='product' AND json_valid(CAST(summary AS TEXT)) AND ${TASK_GROUP_PRESENT_SQL};
|
|
@@ -48,6 +48,26 @@ const PLAN_ANSWER_INDEX_SQL = `
|
|
|
48
48
|
CREATE INDEX turn_plan_answer ON turn(thread_id,${PLAN_ANSWER_RUN_SQL},ordinal)
|
|
49
49
|
WHERE ${PLAN_ANSWER_PRESENT_SQL};
|
|
50
50
|
`;
|
|
51
|
+
/** Canonical (lower-case) membership of tagged product commands. */
|
|
52
|
+
const TASK_GROUP_COLUMN_INDEX_SQL = `
|
|
53
|
+
CREATE INDEX command_task_group ON command(task_group_id,created_at DESC,id DESC)
|
|
54
|
+
WHERE live=1 AND kind='product' AND task_group_id IS NOT NULL;
|
|
55
|
+
CREATE INDEX command_task_group_state ON command(task_group_id,state,created_at DESC,id DESC)
|
|
56
|
+
WHERE live=1 AND kind='product' AND task_group_id IS NOT NULL;
|
|
57
|
+
`;
|
|
58
|
+
/** Version 6: membership becomes a typed column. Accepted summaries keep the
|
|
59
|
+
* caller's spelling; live rows are found through the version-3 index, archived
|
|
60
|
+
* rows by a guarded scan, since restoring a generation makes them live again. */
|
|
61
|
+
const TASK_GROUP_COLUMN_SQL = `
|
|
62
|
+
ALTER TABLE command ADD COLUMN task_group_id TEXT;
|
|
63
|
+
UPDATE command INDEXED BY command_task_group
|
|
64
|
+
SET task_group_id = lower(json_extract(CAST(summary AS TEXT),'$.params.taskGroupId'))
|
|
65
|
+
WHERE live=1 AND kind='product' AND json_valid(CAST(summary AS TEXT)) AND ${TASK_GROUP_PRESENT_SQL};
|
|
66
|
+
UPDATE command SET task_group_id = lower(json_extract(CAST(summary AS TEXT),'$.params.taskGroupId'))
|
|
67
|
+
WHERE live=0 AND kind='product' AND json_valid(CAST(summary AS TEXT)) AND ${TASK_GROUP_PRESENT_SQL};
|
|
68
|
+
DROP INDEX command_task_group;
|
|
69
|
+
DROP INDEX command_task_group_state;
|
|
70
|
+
${TASK_GROUP_COLUMN_INDEX_SQL}`;
|
|
51
71
|
/**
|
|
52
72
|
* SYNTHESIS_R5 §5 with R5_AMENDMENTS A1 (`command.kind`/`live` replace
|
|
53
73
|
* `retention_exempt`; obligation `state`/`materialized_g`). STRICT everywhere; WITHOUT ROWID where the
|
|
@@ -72,7 +92,7 @@ CREATE TABLE command(id TEXT PRIMARY KEY, pid INTEGER NOT NULL, operation TEXT N
|
|
|
72
92
|
run_id TEXT, task_id TEXT, run_dir TEXT, thread_id TEXT, turn_id TEXT, delegated_from TEXT, continue_from TEXT, scope_root TEXT,
|
|
73
93
|
created_at TEXT NOT NULL, started_at TEXT, finished_at TEXT, summary BLOB NOT NULL, params_sha TEXT NOT NULL, result_sha TEXT,
|
|
74
94
|
error BLOB, last_event_seq INTEGER, response_state TEXT, response_expires_at TEXT, request_resource_id TEXT, response_resource_id TEXT,
|
|
75
|
-
kind TEXT NOT NULL, live INTEGER NOT NULL DEFAULT 1, needs_decision INTEGER NOT NULL DEFAULT 0) STRICT;
|
|
95
|
+
kind TEXT NOT NULL, live INTEGER NOT NULL DEFAULT 1, needs_decision INTEGER NOT NULL DEFAULT 0, task_group_id TEXT) STRICT;
|
|
76
96
|
CREATE INDEX command_run ON command(run_id);
|
|
77
97
|
CREATE INDEX command_partition ON command(pid);
|
|
78
98
|
CREATE INDEX command_active ON command(state, pid) WHERE live = 1 AND state IN ('queued','running');
|
|
@@ -139,20 +159,21 @@ CREATE TABLE import_partition(name TEXT PRIMARY KEY, status TEXT NOT NULL, pid I
|
|
|
139
159
|
previous_frame_hash TEXT, source_size INTEGER, source_mtime TEXT, fingerprint TEXT, records INTEGER, digest TEXT, problem TEXT) STRICT;
|
|
140
160
|
CREATE TABLE unclassified(pid INTEGER NOT NULL, seq INTEGER NOT NULL, type TEXT NOT NULL, reason TEXT NOT NULL, payload BLOB NOT NULL,
|
|
141
161
|
PRIMARY KEY(pid, seq)) WITHOUT ROWID, STRICT;
|
|
142
|
-
${ACCOUNT_LAST_SERVICE_SQL}${
|
|
162
|
+
${ACCOUNT_LAST_SERVICE_SQL}${DEFERRED_MESSAGE_SQL}${PLAN_ANSWER_INDEX_SQL}${TASK_GROUP_COLUMN_INDEX_SQL}`;
|
|
143
163
|
/** Every table the DDL creates, in creation order (for tests and the importer seam). */
|
|
144
164
|
export const ENGINE_TABLES = Object.freeze([...ENGINE_SCHEMA_SQL.matchAll(/CREATE TABLE (\w+)\(/g)].map((match) => match[1]));
|
|
145
165
|
/**
|
|
146
166
|
* Migrations from an older `user_version` to the current one, keyed by the
|
|
147
167
|
* version they start from; a stored version with no entry here (older without
|
|
148
|
-
* a path, or newer than this engine) is refused.
|
|
149
|
-
*
|
|
168
|
+
* a path, or newer than this engine) is refused. An older engine refuses the
|
|
169
|
+
* upgraded file as newer, so every step is one-way.
|
|
150
170
|
*/
|
|
151
171
|
const SCHEMA_MIGRATIONS = new Map([
|
|
152
172
|
[1, (db) => db.exec(ACCOUNT_LAST_SERVICE_SQL)],
|
|
153
173
|
[2, (db) => db.exec(TASK_GROUP_INDEX_SQL)],
|
|
154
174
|
[3, (db) => db.exec(DEFERRED_MESSAGE_SQL)],
|
|
155
175
|
[4, (db) => db.exec(PLAN_ANSWER_INDEX_SQL)],
|
|
176
|
+
[5, (db) => db.exec(TASK_GROUP_COLUMN_SQL)],
|
|
156
177
|
]);
|
|
157
178
|
export function readSchemaIdentity(db) {
|
|
158
179
|
const scalar = (sql) => {
|
package/dist/store/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/store/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAE1D,8DAA8D;AAC9D,MAAM,CAAC,MAAM,qBAAqB,GAAG,UAAU,CAAC;AAChD,4EAA4E;AAC5E,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAEvC,qFAAqF;AACrF,MAAM,oBAAoB,GAAG;;;;;;;;CAQ5B,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,wBAAwB,GAAG;;;;;CAKhC,CAAC;AAEF;
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/store/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ import type { QuotaSubjectUniverse } from "../quota-registry.js";
|
|
|
7
7
|
import { BlobFiles } from "./blob-files.js";
|
|
8
8
|
import { SqlCommandPruner } from "./command-prune.js";
|
|
9
9
|
import type { SqlEventLedger } from "./event-store.js";
|
|
10
|
+
import { type JournalEventPageRequest } from "./cursors.js";
|
|
10
11
|
import { MaintenanceController, type MaintenanceControllerOptions } from "./maintenance.js";
|
|
11
12
|
import { Obligations } from "./obligations.js";
|
|
12
13
|
import { SqlProjectStore } from "./projects.js";
|
|
@@ -55,14 +56,7 @@ export declare function createSqlDaemonServices(store: EngineStore, options: Sql
|
|
|
55
56
|
* drains setup and changes the registry generation. Publish both owners
|
|
56
57
|
* together only after the new quota projection validates. */
|
|
57
58
|
rebindGlobal: () => void;
|
|
58
|
-
journalEvents: (partition: string,
|
|
59
|
-
schemaVersion: 1;
|
|
60
|
-
cursor: string;
|
|
61
|
-
partition: string;
|
|
62
|
-
type: string;
|
|
63
|
-
observedAt: string;
|
|
64
|
-
payload?: unknown;
|
|
65
|
-
}[];
|
|
59
|
+
journalEvents: (partition: string, request?: JournalEventPageRequest) => import("./cursors.js").JournalEventPage;
|
|
66
60
|
recoverAfterStartup(): Promise<import("./obligations.js").ObligationCompletionReceipt>;
|
|
67
61
|
/** Caller closes transports/runners first, then this graph, then its store. */
|
|
68
62
|
close(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql-daemon-services.d.ts","sourceRoot":"","sources":["../../src/store/sql-daemon-services.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"sql-daemon-services.d.ts","sourceRoot":"","sources":["../../src/store/sql-daemon-services.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAwB,KAAK,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAGlF,OAAO,EAAE,qBAAqB,EAAE,KAAK,4BAA4B,EAAE,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAyB,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC/F,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,gBAAgB,CAAC;IAC7B,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,UAAU,CAAC,EAAE,SAAS,CAAC,cAAc,GAAG,oBAAoB,CAAC,EAAE,CAAC;IAChE,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC,WAAW,CAAC,EAAE,IAAI,CAAC,4BAA4B,EAAE,OAAO,CAAC,CAAC;CAC3D;AAED;;gFAEgF;AAChF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;IAwEzF;;iEAE6D;;+BAElC,MAAM,YAAY,uBAAuB;;IA+BpE,+EAA+E;;EAelF"}
|
|
@@ -4,7 +4,7 @@ import { LiveInputRegistry } from "../live-input.js";
|
|
|
4
4
|
import { QuotaRegistry } from "../quota-registry.js";
|
|
5
5
|
import { BlobFiles } from "./blob-files.js";
|
|
6
6
|
import { SqlCommandPruner } from "./command-prune.js";
|
|
7
|
-
import {
|
|
7
|
+
import { readJournalEventPage } from "./cursors.js";
|
|
8
8
|
import { isServedPid } from "./generations.js";
|
|
9
9
|
import { SqlInteractionStore } from "./interactions.js";
|
|
10
10
|
import { MaintenanceController } from "./maintenance.js";
|
|
@@ -94,7 +94,7 @@ export function createSqlDaemonServices(store, options) {
|
|
|
94
94
|
* drains setup and changes the registry generation. Publish both owners
|
|
95
95
|
* together only after the new quota projection validates. */
|
|
96
96
|
rebindGlobal,
|
|
97
|
-
journalEvents: (partition,
|
|
97
|
+
journalEvents: (partition, request) => readJournalEventPage(store, partition, request, blobs),
|
|
98
98
|
async recoverAfterStartup() {
|
|
99
99
|
const effects = await obligations.completeOpen();
|
|
100
100
|
// Only generations with unfinished work need recovery. No reconstruction
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql-daemon-services.js","sourceRoot":"","sources":["../../src/store/sql-daemon-services.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAIrD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"sql-daemon-services.js","sourceRoot":"","sources":["../../src/store/sql-daemon-services.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { ControlJournalQuarantineReceipt, ControlJournalValidation, type Control
|
|
|
2
2
|
import { type JournalQuarantineRequest } from "../journal-recovery-operation.js";
|
|
3
3
|
import type { PartitionControlPort } from "../store-contracts.js";
|
|
4
4
|
import type { BlobFiles } from "./blob-files.js";
|
|
5
|
+
import { type JournalEventPageRequest } from "./cursors.js";
|
|
5
6
|
import { StoreError } from "./errors.js";
|
|
6
7
|
import type { MaintenanceController } from "./maintenance.js";
|
|
7
8
|
import { type PartitionGeneration } from "./partitions.js";
|
|
@@ -28,14 +29,7 @@ export declare class SqlPartitionRecovery implements PartitionControlPort {
|
|
|
28
29
|
constructor(store: EngineStore, blobs: BlobFiles, maintenance: Pick<MaintenanceController, "integrityCheck" | "exportTo">, partition: string, options: SqlRecoveryOptions);
|
|
29
30
|
inspect(): ControlJournalInspection;
|
|
30
31
|
validate(): Promise<ControlJournalValidation>;
|
|
31
|
-
events(
|
|
32
|
-
schemaVersion: 1;
|
|
33
|
-
cursor: string;
|
|
34
|
-
partition: string;
|
|
35
|
-
type: string;
|
|
36
|
-
observedAt: string;
|
|
37
|
-
payload?: unknown;
|
|
38
|
-
}[];
|
|
32
|
+
events(request?: JournalEventPageRequest): import("./cursors.js").JournalEventPage;
|
|
39
33
|
exportRecovery(): Promise<{
|
|
40
34
|
schemaVersion: 1;
|
|
41
35
|
exportId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql-recovery.d.ts","sourceRoot":"","sources":["../../src/store/sql-recovery.ts"],"names":[],"mappings":"AACA,OAAO,EACL,+BAA+B,EAC/B,wBAAwB,EACxB,KAAK,wBAAwB,EAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAKL,KAAK,wBAAwB,EAC9B,MAAM,kCAAkC,CAAC;AAE1C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"sql-recovery.d.ts","sourceRoot":"","sources":["../../src/store/sql-recovery.ts"],"names":[],"mappings":"AACA,OAAO,EACL,+BAA+B,EAC/B,wBAAwB,EACxB,KAAK,wBAAwB,EAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAKL,KAAK,wBAAwB,EAC9B,MAAM,kCAAkC,CAAC;AAE1C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAwB,KAAK,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAE9D,OAAO,EAAiB,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAS9C;kFACkF;AAClF,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,UAAU,EAAE,mBAAmB,GAAG,IAAI,CAAC;CACjD;AACD,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,UAAU,EAAE,mBAAmB,GAAG,SAAS,qBAAqB,EAAE,CAAC;IAC/E,aAAa,CAAC,CACZ,OAAO,EAAE,+BAA+B,EACxC,QAAQ,EAAE,mBAAmB,EAC7B,OAAO,EAAE,mBAAmB,GAC3B,IAAI,CAAC;IACR,oBAAoB,CAAC,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAAC;CAClD;AAED;0EAC0E;AAC1E,qBAAa,oBAAqB,YAAW,oBAAoB;IAE7D,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAL1B,YACmB,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,IAAI,CAAC,qBAAqB,EAAE,gBAAgB,GAAG,UAAU,CAAC,EAC/E,SAAS,EAAE,MAAM,EACT,OAAO,EAAE,kBAAkB,EAC1C;IAEJ,OAAO,IAAI,wBAAwB,CAQlC;IAEK,QAAQ,IAAI,OAAO,CAAC,wBAAwB,CAAC,CAmDlD;IAED,MAAM,CAAC,OAAO,CAAC,EAAE,uBAAuB,2CAIvC;IAED,cAAc;;;;;;;;OAIb;IAED,mBAAmB,CAAC,KAAK,EAAE,wBAAwB;;;;;;;;;;;;;;;MAelD;IAED,uBAAuB,CAAC,KAAK,EAAE,wBAAwB,GAAG,+BAA+B,CA2BxF;IAED,OAAO,CAAC,MAAM;IAwDd,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,kBAAkB;CAU3B"}
|
|
@@ -2,7 +2,7 @@ import { randomUUID } from "node:crypto";
|
|
|
2
2
|
import { ControlJournalQuarantineReceipt, ControlJournalValidation, } from "@claudexor/schema";
|
|
3
3
|
import { conflict, quarantineRequestDigest, typedError, validateRequest, } from "../journal-recovery-operation.js";
|
|
4
4
|
import { sha256 } from "../journal-recovery-files.js";
|
|
5
|
-
import {
|
|
5
|
+
import { readJournalEventPage } from "./cursors.js";
|
|
6
6
|
import { StoreError } from "./errors.js";
|
|
7
7
|
import { quarantineGeneration, setGenerationStatusInTx } from "./generations.js";
|
|
8
8
|
import { runMutation } from "./mutation.js";
|
|
@@ -71,10 +71,10 @@ export class SqlPartitionRecovery {
|
|
|
71
71
|
runMutation(this.store, (tx) => setGenerationStatusInTx(tx, generation.pid, "recovery_required"));
|
|
72
72
|
return ControlJournalValidation.parse({ ...this.inspect(), projectionStatus: statuses });
|
|
73
73
|
}
|
|
74
|
-
events(
|
|
74
|
+
events(request) {
|
|
75
75
|
this.assertPhysicalHealthy();
|
|
76
76
|
assertPartitionReadable(this.store, recoveryGeneration(this.store, this.partition));
|
|
77
|
-
return
|
|
77
|
+
return readJournalEventPage(this.store, this.partition, request, this.blobs);
|
|
78
78
|
}
|
|
79
79
|
exportRecovery() {
|
|
80
80
|
this.assertPhysicalHealthy();
|