@cleocode/core 2026.9.26 → 2026.10.2
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/build-provenance.json +2 -2
- package/dist/cloud/journal.d.ts +9 -5
- package/dist/cloud/journal.d.ts.map +1 -1
- package/dist/cloud/journal.js +29 -8
- package/dist/cloud/journal.js.map +1 -1
- package/dist/cloud/manifest-check.d.ts +140 -4
- package/dist/cloud/manifest-check.d.ts.map +1 -1
- package/dist/cloud/manifest-check.js +309 -10
- package/dist/cloud/manifest-check.js.map +1 -1
- package/dist/cloud/nexus-attach.d.ts +119 -0
- package/dist/cloud/nexus-attach.d.ts.map +1 -0
- package/dist/cloud/nexus-attach.js +267 -0
- package/dist/cloud/nexus-attach.js.map +1 -0
- package/dist/cloud/nexus-auth.d.ts +15 -3
- package/dist/cloud/nexus-auth.d.ts.map +1 -1
- package/dist/cloud/nexus-auth.js +90 -6
- package/dist/cloud/nexus-auth.js.map +1 -1
- package/dist/cloud/nexus-cloud-activity.d.ts +37 -0
- package/dist/cloud/nexus-cloud-activity.d.ts.map +1 -0
- package/dist/cloud/nexus-cloud-activity.js +79 -0
- package/dist/cloud/nexus-cloud-activity.js.map +1 -0
- package/dist/cloud/nexus-cloud-status.d.ts +132 -0
- package/dist/cloud/nexus-cloud-status.d.ts.map +1 -0
- package/dist/cloud/nexus-cloud-status.js +476 -0
- package/dist/cloud/nexus-cloud-status.js.map +1 -0
- package/dist/cloud/nexus-cloud.d.ts +179 -0
- package/dist/cloud/nexus-cloud.d.ts.map +1 -0
- package/dist/cloud/nexus-cloud.js +296 -0
- package/dist/cloud/nexus-cloud.js.map +1 -0
- package/dist/cloud/nexus-device.d.ts +32 -7
- package/dist/cloud/nexus-device.d.ts.map +1 -1
- package/dist/cloud/nexus-device.js +54 -7
- package/dist/cloud/nexus-device.js.map +1 -1
- package/dist/cloud/nexus-enrol.d.ts +35 -4
- package/dist/cloud/nexus-enrol.d.ts.map +1 -1
- package/dist/cloud/nexus-enrol.js +192 -47
- package/dist/cloud/nexus-enrol.js.map +1 -1
- package/dist/cloud/nexus-home.d.ts +74 -0
- package/dist/cloud/nexus-home.d.ts.map +1 -0
- package/dist/cloud/nexus-home.js +97 -0
- package/dist/cloud/nexus-home.js.map +1 -0
- package/dist/cloud/nexus-link.d.ts +8 -1
- package/dist/cloud/nexus-link.d.ts.map +1 -1
- package/dist/cloud/nexus-link.js +138 -11
- package/dist/cloud/nexus-link.js.map +1 -1
- package/dist/cloud/nexus-logout.d.ts +114 -0
- package/dist/cloud/nexus-logout.d.ts.map +1 -0
- package/dist/cloud/nexus-logout.js +429 -0
- package/dist/cloud/nexus-logout.js.map +1 -0
- package/dist/cloud/nexus-vault-keys.d.ts +129 -0
- package/dist/cloud/nexus-vault-keys.d.ts.map +1 -0
- package/dist/cloud/nexus-vault-keys.js +277 -0
- package/dist/cloud/nexus-vault-keys.js.map +1 -0
- package/dist/cloud/nexus-vault-state.d.ts +121 -0
- package/dist/cloud/nexus-vault-state.d.ts.map +1 -0
- package/dist/cloud/nexus-vault-state.js +274 -0
- package/dist/cloud/nexus-vault-state.js.map +1 -0
- package/dist/cloud/nexus-vault.d.ts +160 -0
- package/dist/cloud/nexus-vault.d.ts.map +1 -0
- package/dist/cloud/nexus-vault.js +1733 -0
- package/dist/cloud/nexus-vault.js.map +1 -0
- package/dist/cloud/signing.d.ts +24 -8
- package/dist/cloud/signing.d.ts.map +1 -1
- package/dist/cloud/signing.js +61 -15
- package/dist/cloud/signing.js.map +1 -1
- package/dist/docs/export-document.js +8341 -3317
- package/dist/docs/export-document.js.map +3 -3
- package/dist/doctor/migrations.d.ts +75 -0
- package/dist/doctor/migrations.d.ts.map +1 -0
- package/dist/doctor/migrations.js +136 -0
- package/dist/doctor/migrations.js.map +1 -0
- package/dist/doctor/sync-sealer.d.ts +48 -0
- package/dist/doctor/sync-sealer.d.ts.map +1 -0
- package/dist/doctor/sync-sealer.js +109 -0
- package/dist/doctor/sync-sealer.js.map +1 -0
- package/dist/doctor/sync-triggers.d.ts +53 -0
- package/dist/doctor/sync-triggers.d.ts.map +1 -0
- package/dist/doctor/sync-triggers.js +157 -0
- package/dist/doctor/sync-triggers.js.map +1 -0
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +5 -1
- package/dist/init.js.map +1 -1
- package/dist/internal.d.ts +1 -1
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +1 -1
- package/dist/internal.js.map +1 -1
- package/dist/llm/plugin-facade.js +8668 -3644
- package/dist/llm/plugin-facade.js.map +3 -3
- package/dist/nexus/projects-clean.d.ts +3 -0
- package/dist/nexus/projects-clean.d.ts.map +1 -1
- package/dist/nexus/projects-clean.js +9 -3
- package/dist/nexus/projects-clean.js.map +1 -1
- package/dist/nexus/registry-roots.d.ts +3 -1
- package/dist/nexus/registry-roots.d.ts.map +1 -1
- package/dist/nexus/registry-roots.js +5 -2
- package/dist/nexus/registry-roots.js.map +1 -1
- package/dist/nexus/registry.d.ts +8 -1
- package/dist/nexus/registry.d.ts.map +1 -1
- package/dist/nexus/registry.js +24 -10
- package/dist/nexus/registry.js.map +1 -1
- package/dist/nexus/workspace.d.ts +4 -1
- package/dist/nexus/workspace.d.ts.map +1 -1
- package/dist/nexus/workspace.js +10 -4
- package/dist/nexus/workspace.js.map +1 -1
- package/dist/orchestrate/spawn-ops.d.ts.map +1 -1
- package/dist/orchestrate/spawn-ops.js +7 -2
- package/dist/orchestrate/spawn-ops.js.map +1 -1
- package/dist/orchestrate/worker-verify.d.ts +121 -12
- package/dist/orchestrate/worker-verify.d.ts.map +1 -1
- package/dist/orchestrate/worker-verify.js +172 -21
- package/dist/orchestrate/worker-verify.js.map +1 -1
- package/dist/orchestration/spawn-prompt.d.ts.map +1 -1
- package/dist/orchestration/spawn-prompt.js +15 -9
- package/dist/orchestration/spawn-prompt.js.map +1 -1
- package/dist/release/ci-evidence.d.ts +9 -0
- package/dist/release/ci-evidence.d.ts.map +1 -1
- package/dist/release/ci-evidence.js +9 -2
- package/dist/release/ci-evidence.js.map +1 -1
- package/dist/resources/backend.d.ts +15 -3
- package/dist/resources/backend.d.ts.map +1 -1
- package/dist/resources/backend.js +7 -3
- package/dist/resources/backend.js.map +1 -1
- package/dist/resources/darwin-backend.d.ts +142 -0
- package/dist/resources/darwin-backend.d.ts.map +1 -0
- package/dist/resources/darwin-backend.js +288 -0
- package/dist/resources/darwin-backend.js.map +1 -0
- package/dist/resources/governor.d.ts +44 -1
- package/dist/resources/governor.d.ts.map +1 -1
- package/dist/resources/governor.js +100 -36
- package/dist/resources/governor.js.map +1 -1
- package/dist/resources/heavy-command.d.ts +132 -0
- package/dist/resources/heavy-command.d.ts.map +1 -0
- package/dist/resources/heavy-command.js +768 -0
- package/dist/resources/heavy-command.js.map +1 -0
- package/dist/resources/monitor.d.ts +50 -1
- package/dist/resources/monitor.d.ts.map +1 -1
- package/dist/resources/monitor.js +83 -1
- package/dist/resources/monitor.js.map +1 -1
- package/dist/resources/run-admission.d.ts +303 -0
- package/dist/resources/run-admission.d.ts.map +1 -0
- package/dist/resources/run-admission.js +648 -0
- package/dist/resources/run-admission.js.map +1 -0
- package/dist/resources/run-class.d.ts +111 -0
- package/dist/resources/run-class.d.ts.map +1 -0
- package/dist/resources/run-class.js +658 -0
- package/dist/resources/run-class.js.map +1 -0
- package/dist/resources/run-governed.d.ts +158 -0
- package/dist/resources/run-governed.d.ts.map +1 -0
- package/dist/resources/run-governed.js +406 -0
- package/dist/resources/run-governed.js.map +1 -0
- package/dist/resources/slot-holder.d.ts +267 -0
- package/dist/resources/slot-holder.d.ts.map +1 -0
- package/dist/resources/slot-holder.js +505 -0
- package/dist/resources/slot-holder.js.map +1 -0
- package/dist/resources/tool-groups.d.ts +74 -0
- package/dist/resources/tool-groups.d.ts.map +1 -0
- package/dist/resources/tool-groups.js +118 -0
- package/dist/resources/tool-groups.js.map +1 -0
- package/dist/routing/build-command-groups.d.ts.map +1 -1
- package/dist/routing/build-command-groups.js +1 -0
- package/dist/routing/build-command-groups.js.map +1 -1
- package/dist/selfimprove/fix-gen.js +8676 -3652
- package/dist/selfimprove/fix-gen.js.map +3 -3
- package/dist/sentient/cross-project-hygiene.d.ts +3 -2
- package/dist/sentient/cross-project-hygiene.d.ts.map +1 -1
- package/dist/sentient/cross-project-hygiene.js +5 -2
- package/dist/sentient/cross-project-hygiene.js.map +1 -1
- package/dist/sentient/state.d.ts +7 -0
- package/dist/sentient/state.d.ts.map +1 -1
- package/dist/sentient/state.js.map +1 -1
- package/dist/sentient/tick.d.ts +14 -2
- package/dist/sentient/tick.d.ts.map +1 -1
- package/dist/sentient/tick.js +63 -4
- package/dist/sentient/tick.js.map +1 -1
- package/dist/setup/sections/nexus-account.d.ts +8 -6
- package/dist/setup/sections/nexus-account.d.ts.map +1 -1
- package/dist/setup/sections/nexus-account.js +53 -9
- package/dist/setup/sections/nexus-account.js.map +1 -1
- package/dist/store/backup-recover.d.ts.map +1 -1
- package/dist/store/backup-recover.js +5 -0
- package/dist/store/backup-recover.js.map +1 -1
- package/dist/store/data-accessor.d.ts +1 -0
- package/dist/store/data-accessor.d.ts.map +1 -1
- package/dist/store/data-accessor.js +7 -0
- package/dist/store/data-accessor.js.map +1 -1
- package/dist/store/dual-scope-db.d.ts +23 -1
- package/dist/store/dual-scope-db.d.ts.map +1 -1
- package/dist/store/dual-scope-db.js +126 -36
- package/dist/store/dual-scope-db.js.map +1 -1
- package/dist/store/exodus/recovery.d.ts.map +1 -1
- package/dist/store/exodus/recovery.js +15 -0
- package/dist/store/exodus/recovery.js.map +1 -1
- package/dist/store/legacy-tasks-lineage.d.ts.map +1 -1
- package/dist/store/legacy-tasks-lineage.js +5 -0
- package/dist/store/legacy-tasks-lineage.js.map +1 -1
- package/dist/store/lock.d.ts +8 -1
- package/dist/store/lock.d.ts.map +1 -1
- package/dist/store/lock.js +10 -2
- package/dist/store/lock.js.map +1 -1
- package/dist/store/migration-manager.d.ts +5 -0
- package/dist/store/migration-manager.d.ts.map +1 -1
- package/dist/store/migration-manager.js +11 -0
- package/dist/store/migration-manager.js.map +1 -1
- package/dist/store/migration-runner.d.ts +158 -0
- package/dist/store/migration-runner.d.ts.map +1 -0
- package/dist/store/migration-runner.js +493 -0
- package/dist/store/migration-runner.js.map +1 -0
- package/dist/store/portable-bundle-import.d.ts +15 -1
- package/dist/store/portable-bundle-import.d.ts.map +1 -1
- package/dist/store/portable-bundle-import.js +24 -4
- package/dist/store/portable-bundle-import.js.map +1 -1
- package/dist/store/portable-bundle-relocate.d.ts +43 -0
- package/dist/store/portable-bundle-relocate.d.ts.map +1 -1
- package/dist/store/portable-bundle-relocate.js +79 -5
- package/dist/store/portable-bundle-relocate.js.map +1 -1
- package/dist/store/portable-bundle-scan.d.ts +20 -0
- package/dist/store/portable-bundle-scan.d.ts.map +1 -1
- package/dist/store/portable-bundle-scan.js +38 -3
- package/dist/store/portable-bundle-scan.js.map +1 -1
- package/dist/store/portable-bundle.d.ts +33 -0
- package/dist/store/portable-bundle.d.ts.map +1 -1
- package/dist/store/portable-bundle.js +34 -7
- package/dist/store/portable-bundle.js.map +1 -1
- package/dist/store/row-identity-registry.d.ts +137 -7
- package/dist/store/row-identity-registry.d.ts.map +1 -1
- package/dist/store/row-identity-registry.js +364 -9
- package/dist/store/row-identity-registry.js.map +1 -1
- package/dist/store/row-identity.d.ts.map +1 -1
- package/dist/store/row-identity.js +9 -10
- package/dist/store/row-identity.js.map +1 -1
- package/dist/store/sqlite-data-accessor.d.ts.map +1 -1
- package/dist/store/sqlite-data-accessor.js +10 -0
- package/dist/store/sqlite-data-accessor.js.map +1 -1
- package/dist/store/sqlite.d.ts +31 -0
- package/dist/store/sqlite.d.ts.map +1 -1
- package/dist/store/sqlite.js +5 -1
- package/dist/store/sqlite.js.map +1 -1
- package/dist/store/sync/capture.d.ts +203 -0
- package/dist/store/sync/capture.d.ts.map +1 -0
- package/dist/store/sync/capture.js +562 -0
- package/dist/store/sync/capture.js.map +1 -0
- package/dist/store/sync/clock-store.d.ts.map +1 -1
- package/dist/store/sync/clock-store.js +2 -0
- package/dist/store/sync/clock-store.js.map +1 -1
- package/dist/store/sync/fk-orphans.d.ts +133 -0
- package/dist/store/sync/fk-orphans.d.ts.map +1 -0
- package/dist/store/sync/fk-orphans.js +265 -0
- package/dist/store/sync/fk-orphans.js.map +1 -0
- package/dist/store/sync/flags.d.ts +7 -0
- package/dist/store/sync/flags.d.ts.map +1 -1
- package/dist/store/sync/flags.js +16 -0
- package/dist/store/sync/flags.js.map +1 -1
- package/dist/store/sync/hlc.d.ts.map +1 -1
- package/dist/store/sync/hlc.js +4 -0
- package/dist/store/sync/hlc.js.map +1 -1
- package/dist/store/sync/identity-fill.d.ts +45 -0
- package/dist/store/sync/identity-fill.d.ts.map +1 -0
- package/dist/store/sync/identity-fill.js +85 -0
- package/dist/store/sync/identity-fill.js.map +1 -0
- package/dist/store/sync/machinery.d.ts +27 -0
- package/dist/store/sync/machinery.d.ts.map +1 -0
- package/dist/store/sync/machinery.js +44 -0
- package/dist/store/sync/machinery.js.map +1 -0
- package/dist/store/sync/netting.d.ts +120 -0
- package/dist/store/sync/netting.d.ts.map +1 -0
- package/dist/store/sync/netting.js +336 -0
- package/dist/store/sync/netting.js.map +1 -0
- package/dist/store/sync/replica.d.ts +59 -3
- package/dist/store/sync/replica.d.ts.map +1 -1
- package/dist/store/sync/replica.js +84 -3
- package/dist/store/sync/replica.js.map +1 -1
- package/dist/store/sync/schema.d.ts +18 -3
- package/dist/store/sync/schema.d.ts.map +1 -1
- package/dist/store/sync/schema.js +27 -3
- package/dist/store/sync/schema.js.map +1 -1
- package/dist/store/sync/seal-backlog.d.ts +21 -0
- package/dist/store/sync/seal-backlog.d.ts.map +1 -0
- package/dist/store/sync/seal-backlog.js +24 -0
- package/dist/store/sync/seal-backlog.js.map +1 -0
- package/dist/store/sync/sealer-values.d.ts +34 -0
- package/dist/store/sync/sealer-values.d.ts.map +1 -0
- package/dist/store/sync/sealer-values.js +53 -0
- package/dist/store/sync/sealer-values.js.map +1 -0
- package/dist/store/sync/sealer.d.ts +145 -0
- package/dist/store/sync/sealer.d.ts.map +1 -0
- package/dist/store/sync/sealer.js +906 -0
- package/dist/store/sync/sealer.js.map +1 -0
- package/dist/store/sync/structural.d.ts +63 -0
- package/dist/store/sync/structural.d.ts.map +1 -0
- package/dist/store/sync/structural.js +180 -0
- package/dist/store/sync/structural.js.map +1 -0
- package/dist/store/sync/timestamps.d.ts +92 -0
- package/dist/store/sync/timestamps.d.ts.map +1 -0
- package/dist/store/sync/timestamps.js +228 -0
- package/dist/store/sync/timestamps.js.map +1 -0
- package/dist/store/sync/tombstones.d.ts +75 -0
- package/dist/store/sync/tombstones.d.ts.map +1 -0
- package/dist/store/sync/tombstones.js +103 -0
- package/dist/store/sync/tombstones.js.map +1 -0
- package/dist/store/sync/trigger-classes.d.ts +221 -0
- package/dist/store/sync/trigger-classes.d.ts.map +1 -0
- package/dist/store/sync/trigger-classes.js +441 -0
- package/dist/store/sync/trigger-classes.js.map +1 -0
- package/dist/store/sync/trigger-suspend-at-path.d.ts +23 -0
- package/dist/store/sync/trigger-suspend-at-path.d.ts.map +1 -0
- package/dist/store/sync/trigger-suspend-at-path.js +44 -0
- package/dist/store/sync/trigger-suspend-at-path.js.map +1 -0
- package/dist/store/sync/writer-version.d.ts +43 -0
- package/dist/store/sync/writer-version.d.ts.map +1 -0
- package/dist/store/sync/writer-version.js +90 -0
- package/dist/store/sync/writer-version.js.map +1 -0
- package/dist/store/table-classification.d.ts.map +1 -1
- package/dist/store/table-classification.js +102 -0
- package/dist/store/table-classification.js.map +1 -1
- package/dist/store/trigger-suspend-schema.d.ts +44 -0
- package/dist/store/trigger-suspend-schema.d.ts.map +1 -0
- package/dist/store/trigger-suspend-schema.js +25 -0
- package/dist/store/trigger-suspend-schema.js.map +1 -0
- package/dist/store/vault-manifest.d.ts +365 -0
- package/dist/store/vault-manifest.d.ts.map +1 -0
- package/dist/store/vault-manifest.js +812 -0
- package/dist/store/vault-manifest.js.map +1 -0
- package/dist/store/writer-lease.d.ts +31 -0
- package/dist/store/writer-lease.d.ts.map +1 -1
- package/dist/store/writer-lease.js +65 -2
- package/dist/store/writer-lease.js.map +1 -1
- package/dist/system/health.d.ts.map +1 -1
- package/dist/system/health.js +21 -0
- package/dist/system/health.js.map +1 -1
- package/dist/system/project-health.d.ts.map +1 -1
- package/dist/system/project-health.js +3 -1
- package/dist/system/project-health.js.map +1 -1
- package/dist/tasks/affected-packages.d.ts +58 -0
- package/dist/tasks/affected-packages.d.ts.map +1 -1
- package/dist/tasks/affected-packages.js +75 -6
- package/dist/tasks/affected-packages.js.map +1 -1
- package/dist/tasks/affected-scope.d.ts +150 -23
- package/dist/tasks/affected-scope.d.ts.map +1 -1
- package/dist/tasks/affected-scope.js +320 -32
- package/dist/tasks/affected-scope.js.map +1 -1
- package/dist/tasks/change-set.d.ts +96 -0
- package/dist/tasks/change-set.d.ts.map +1 -1
- package/dist/tasks/change-set.js +169 -4
- package/dist/tasks/change-set.js.map +1 -1
- package/dist/tasks/complete-ci.d.ts +115 -0
- package/dist/tasks/complete-ci.d.ts.map +1 -0
- package/dist/tasks/complete-ci.js +171 -0
- package/dist/tasks/complete-ci.js.map +1 -0
- package/dist/tasks/complete.d.ts.map +1 -1
- package/dist/tasks/complete.js +50 -17
- package/dist/tasks/complete.js.map +1 -1
- package/dist/tasks/compute-task-view.d.ts.map +1 -1
- package/dist/tasks/compute-task-view.js +7 -0
- package/dist/tasks/compute-task-view.js.map +1 -1
- package/dist/tasks/done-plan.d.ts.map +1 -1
- package/dist/tasks/done-plan.js +51 -30
- package/dist/tasks/done-plan.js.map +1 -1
- package/dist/tasks/done-record.d.ts +6 -0
- package/dist/tasks/done-record.d.ts.map +1 -1
- package/dist/tasks/done-record.js +9 -3
- package/dist/tasks/done-record.js.map +1 -1
- package/dist/tasks/evidence.d.ts +3 -2
- package/dist/tasks/evidence.d.ts.map +1 -1
- package/dist/tasks/evidence.js +143 -12
- package/dist/tasks/evidence.js.map +1 -1
- package/dist/tasks/gate-notes.d.ts +22 -0
- package/dist/tasks/gate-notes.d.ts.map +1 -0
- package/dist/tasks/gate-notes.js +33 -0
- package/dist/tasks/gate-notes.js.map +1 -0
- package/dist/tasks/index.d.ts +2 -1
- package/dist/tasks/index.d.ts.map +1 -1
- package/dist/tasks/index.js +2 -1
- package/dist/tasks/index.js.map +1 -1
- package/dist/tasks/test-run-binding.d.ts +117 -0
- package/dist/tasks/test-run-binding.d.ts.map +1 -0
- package/dist/tasks/test-run-binding.js +365 -0
- package/dist/tasks/test-run-binding.js.map +1 -0
- package/dist/tasks/tool-cache-env.d.ts +123 -0
- package/dist/tasks/tool-cache-env.d.ts.map +1 -0
- package/dist/tasks/tool-cache-env.js +287 -0
- package/dist/tasks/tool-cache-env.js.map +1 -0
- package/dist/tasks/tool-cache-failed-first.d.ts +155 -0
- package/dist/tasks/tool-cache-failed-first.d.ts.map +1 -0
- package/dist/tasks/tool-cache-failed-first.js +285 -0
- package/dist/tasks/tool-cache-failed-first.js.map +1 -0
- package/dist/tasks/tool-cache.d.ts +375 -55
- package/dist/tasks/tool-cache.d.ts.map +1 -1
- package/dist/tasks/tool-cache.js +912 -303
- package/dist/tasks/tool-cache.js.map +1 -1
- package/dist/tasks/tool-resolver.d.ts +4 -3
- package/dist/tasks/tool-resolver.d.ts.map +1 -1
- package/dist/tasks/tool-resolver.js +15 -4
- package/dist/tasks/tool-resolver.js.map +1 -1
- package/dist/tasks/tool-semaphore.d.ts +67 -7
- package/dist/tasks/tool-semaphore.d.ts.map +1 -1
- package/dist/tasks/tool-semaphore.js +134 -56
- package/dist/tasks/tool-semaphore.js.map +1 -1
- package/dist/upgrade.d.ts.map +1 -1
- package/dist/upgrade.js +4 -0
- package/dist/upgrade.js.map +1 -1
- package/dist/validation/engine-ops.d.ts +6 -0
- package/dist/validation/engine-ops.d.ts.map +1 -1
- package/dist/validation/engine-ops.js +8 -0
- package/dist/validation/engine-ops.js.map +1 -1
- package/migrations/drizzle-cleo-project/20260930170000_t12819-trigger-suspend-clause/migration.sql +367 -0
- package/migrations/sync-journal/20260930120000_t12343-capture/migration.sql +47 -0
- package/migrations/sync-journal/20261001170000_t12984-sealer/migration.sql +101 -0
- package/package.json +13 -13
- package/templates/CLEO-INJECTION.md +5 -5
- package/templates/CLEO-REFERENCE.md +8 -4
|
@@ -2,21 +2,45 @@
|
|
|
2
2
|
* `nexus-account` setup wizard section: optionally sign in to a Cleo Nexus
|
|
3
3
|
* account.
|
|
4
4
|
*
|
|
5
|
-
* Runs the SAME engine as `cleo login nexus
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* Runs the SAME engine as `cleo login nexus`: device enrolment by default,
|
|
6
|
+
* or {@link loginToNexus} with `CLEO_NEXUS_DEVICE=0` (both drive the shared
|
|
7
|
+
* RFC 8628 device-code runner); only the I/O differs: the verification URL
|
|
8
|
+
* and user code go through {@link WizardIO.info}.
|
|
8
9
|
*
|
|
9
10
|
* - Optional: skipping it leaves CLEO fully functional offline.
|
|
10
|
-
* - Idempotent: `isConfigured()` is `true` once a
|
|
11
|
-
*
|
|
11
|
+
* - Idempotent: `isConfigured()` is `true` once a device credential (or,
|
|
12
|
+
* with `CLEO_NEXUS_DEVICE=0`, a session) is stored for the default API
|
|
13
|
+
* origin, so a re-run skips it unless `--reset`.
|
|
12
14
|
* - Non-interactive runs skip it: the device-code grant needs a person to
|
|
13
15
|
* approve the code in a browser.
|
|
14
16
|
*
|
|
15
17
|
* @task T12712
|
|
16
18
|
* @epic T12322
|
|
17
19
|
*/
|
|
18
|
-
import { loginToNexus, resolveNexusApiUrl } from '../../cloud/nexus-auth.js';
|
|
19
|
-
import { FileNexusTokenStore } from '../../cloud/nexus-credentials.js';
|
|
20
|
+
import { loginToNexus, resolveNexusApiUrl, } from '../../cloud/nexus-auth.js';
|
|
21
|
+
import { FileNexusTokenStore, nexusOriginKey } from '../../cloud/nexus-credentials.js';
|
|
22
|
+
import { isNexusDeviceEnabled, NexusDeviceStore, SealedNexusDevice, } from '../../cloud/nexus-device.js';
|
|
23
|
+
/**
|
|
24
|
+
* The login `cleo login nexus` runs: device enrolment, unless
|
|
25
|
+
* `CLEO_NEXUS_DEVICE=0` keeps the 9.24 session login (T12904).
|
|
26
|
+
*
|
|
27
|
+
* @param opts - Device-code hooks and test overrides.
|
|
28
|
+
* @returns The secret-free login result.
|
|
29
|
+
*/
|
|
30
|
+
async function defaultLogin(opts = {}) {
|
|
31
|
+
if (!isNexusDeviceEnabled())
|
|
32
|
+
return loginToNexus(opts);
|
|
33
|
+
const { loginToNexusDevice } = await import('../../cloud/nexus-enrol.js');
|
|
34
|
+
return loginToNexusDevice({
|
|
35
|
+
...(opts.apiUrl !== undefined ? { apiUrl: opts.apiUrl } : {}),
|
|
36
|
+
...(opts.fetch ? { fetch: opts.fetch } : {}),
|
|
37
|
+
...(opts.store ? { store: opts.store } : {}),
|
|
38
|
+
...(opts.onCode ? { onCode: opts.onCode } : {}),
|
|
39
|
+
...(opts.onPending ? { onPending: opts.onPending } : {}),
|
|
40
|
+
...(opts.signal ? { signal: opts.signal } : {}),
|
|
41
|
+
...(opts.sleep ? { pollSleep: opts.sleep } : {}),
|
|
42
|
+
});
|
|
43
|
+
}
|
|
20
44
|
/**
|
|
21
45
|
* Build the `nexus-account` section runner.
|
|
22
46
|
*
|
|
@@ -24,14 +48,34 @@ import { FileNexusTokenStore } from '../../cloud/nexus-credentials.js';
|
|
|
24
48
|
* @returns A {@link WizardSectionRunner}.
|
|
25
49
|
*/
|
|
26
50
|
export function createNexusAccountSection(deps = {}) {
|
|
27
|
-
const login = deps.login ??
|
|
51
|
+
const login = deps.login ?? defaultLogin;
|
|
28
52
|
return {
|
|
29
53
|
section: 'nexus-account',
|
|
30
54
|
title: 'Cleo Nexus account (optional)',
|
|
31
55
|
optional: true,
|
|
32
56
|
async isConfigured() {
|
|
57
|
+
let apiUrl;
|
|
58
|
+
try {
|
|
59
|
+
apiUrl = resolveNexusApiUrl();
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
// A stored device credential counts whatever CLEO_NEXUS_DEVICE says. An
|
|
65
|
+
// unreadable device store never hides a valid 9.24 session (review N3).
|
|
66
|
+
try {
|
|
67
|
+
const origin = nexusOriginKey(apiUrl);
|
|
68
|
+
for (const d of await new NexusDeviceStore().list()) {
|
|
69
|
+
if (d instanceof SealedNexusDevice && d.origin === origin && d.currentBearer()) {
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
/* fall through to the session check */
|
|
76
|
+
}
|
|
33
77
|
try {
|
|
34
|
-
return (await new FileNexusTokenStore().get(
|
|
78
|
+
return (await new FileNexusTokenStore().get(apiUrl)) !== null;
|
|
35
79
|
}
|
|
36
80
|
catch {
|
|
37
81
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nexus-account.js","sourceRoot":"","sources":["../../../src/setup/sections/nexus-account.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"nexus-account.js","sourceRoot":"","sources":["../../../src/setup/sections/nexus-account.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backup-recover.d.ts","sourceRoot":"","sources":["../../src/store/backup-recover.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAIH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAEvE,OAAO,EAIL,KAAK,cAAc,EAIpB,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"backup-recover.d.ts","sourceRoot":"","sources":["../../src/store/backup-recover.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAIH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAEvE,OAAO,EAIL,KAAK,cAAc,EAIpB,MAAM,2BAA2B,CAAC;AA2BnC;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wFAAwF;IACxF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4FAA4F;IAC5F,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mGAAmG;IACnG,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wDAAwD;IACxD,MAAM,EAAE,cAAc,CAAC;IACvB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,oFAAoF;IACpF,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,wDAAwD;IACxD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,0DAA0D;IAC1D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;OAKG;gBACS,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM;CAO1E;AA2FD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,GAAG,mBAAmB,CA0GhF"}
|
|
@@ -29,6 +29,7 @@ import { copyFileSync, existsSync } from 'node:fs';
|
|
|
29
29
|
import { basename, dirname, join } from 'node:path';
|
|
30
30
|
import { CleoError } from '../errors.js';
|
|
31
31
|
import { collectSnapshotCandidatesForRole, probeSnapshot, quarantineCorruptDb, recoverMalformedDb, resolveRoleBackupDirs, resolveRoleDbPath, } from './recover-malformed-db.js';
|
|
32
|
+
import { ensureTriggerSuspendTableAtPath } from './sync/trigger-suspend-at-path.js';
|
|
32
33
|
import { assertOwnerStoreRewriteConfirmed, E_WT_STORE_REWRITE_CONFIRM_REQUIRED, E_WT_STORE_REWRITE_REFUSED, } from './worktree-isolation-guard.js';
|
|
33
34
|
/**
|
|
34
35
|
* Error thrown when the recovery pre-conditions cannot be satisfied.
|
|
@@ -323,6 +324,10 @@ function runPinnedRestore(args) {
|
|
|
323
324
|
}, 'CLEO DB pinned recovery failed: copy from snapshot to live path threw');
|
|
324
325
|
throw new BackupRecoverError(`Could not copy snapshot to live path for role "${args.role}": ${err instanceof Error ? err.message : String(err)}`, 1, 'E_COPY_FAILED');
|
|
325
326
|
}
|
|
327
|
+
// T12819: a restored project store gets cleo_trigger_suspend before any
|
|
328
|
+
// other build can open it (the owned triggers read it).
|
|
329
|
+
if (basename(args.corruptPath) === 'cleo.db')
|
|
330
|
+
ensureTriggerSuspendTableAtPath(args.corruptPath);
|
|
326
331
|
// Final verification — probe via the shared helper.
|
|
327
332
|
const finalProbe = probeSnapshot(args.corruptPath);
|
|
328
333
|
if (!finalProbe.ok) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backup-recover.js","sourceRoot":"","sources":["../../src/store/backup-recover.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"backup-recover.js","sourceRoot":"","sources":["../../src/store/backup-recover.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,6 +40,7 @@ export declare function assertTestEnv(dbPath: string): void;
|
|
|
40
40
|
* const store = await createDataAccessor('/projects/example');
|
|
41
41
|
* const task = await store.loadSingleTask('T001');
|
|
42
42
|
* ```
|
|
43
|
+
* @throws {CleoError} `NOT_FOUND` when `cwd` is a cloud vault placeholder, raw or resolved (T13021).
|
|
43
44
|
* @task T9054 — engine parameter dropped; CLEO is SQLite-only (ADR-006).
|
|
44
45
|
*/
|
|
45
46
|
export declare function createDataAccessor(cwd?: string): Promise<import('@cleocode/contracts').DataAccessor>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-accessor.d.ts","sourceRoot":"","sources":["../../src/store/data-accessor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,YAAY,EACV,aAAa,EACb,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CA+BlD;AAED
|
|
1
|
+
{"version":3,"file":"data-accessor.d.ts","sourceRoot":"","sources":["../../src/store/data-accessor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,YAAY,EACV,aAAa,EACb,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CA+BlD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,OAAO,qBAAqB,EAAE,YAAY,CAAC,CAmBrD;AAED;;;;;;;;;GASG;AAEH,wBAAsB,eAAe,CACnC,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,OAAO,qBAAqB,EAAE,YAAY,CAAC,CAErD;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,OAAO,qBAAqB,EAAE,YAAY,CAAC,CAErD;AAMD;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,mBAAmB,EAAE,QAAQ,CAAC,CAG/F"}
|
|
@@ -66,13 +66,20 @@ export function assertTestEnv(dbPath) {
|
|
|
66
66
|
* const store = await createDataAccessor('/projects/example');
|
|
67
67
|
* const task = await store.loadSingleTask('T001');
|
|
68
68
|
* ```
|
|
69
|
+
* @throws {CleoError} `NOT_FOUND` when `cwd` is a cloud vault placeholder, raw or resolved (T13021).
|
|
69
70
|
* @task T9054 — engine parameter dropped; CLEO is SQLite-only (ADR-006).
|
|
70
71
|
*/
|
|
71
72
|
export async function createDataAccessor(cwd) {
|
|
73
|
+
// The default project and the inherited scope are captured before the first await.
|
|
72
74
|
const root = resolve(cwd ?? getProjectRoot());
|
|
73
75
|
const inherited = worktreeScope.getStore();
|
|
74
76
|
const captured = inherited ? { ...inherited } : undefined;
|
|
75
77
|
captured?.execution?.assertActive();
|
|
78
|
+
// T13021: a cloud vault placeholder (another machine's project), as given or
|
|
79
|
+
// resolved, never becomes a root here; refused before any store is opened.
|
|
80
|
+
const { assertNotVaultRemotePath } = await import('./dual-scope-db.js');
|
|
81
|
+
assertNotVaultRemotePath(cwd);
|
|
82
|
+
assertNotVaultRemotePath(root);
|
|
76
83
|
const { createSqliteDataAccessor, captureTaskAccessorScope, bindTaskAccessorScope } = await import('./sqlite-data-accessor.js');
|
|
77
84
|
const scope = captureTaskAccessorScope(root, captured);
|
|
78
85
|
return worktreeScope.run(scope, async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-accessor.js","sourceRoot":"","sources":["../../src/store/data-accessor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAkBpE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC/C,IAAI,QAAQ,KAAK,GAAG;QAAE,OAAO;IAE7B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACtD,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;QACrB,wCAAwC;QACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,kEAAkE,MAAM,IAAI,CAC7E,CAAC;QACF,OAAO;IACT,CAAC;IAED,sFAAsF;IACtF,wEAAwE;IACxE,+EAA+E;IAC/E,MAAM,SAAS,GACb,MAAM,KAAK,UAAU;QACrB,eAAe,CAAC,MAAM,CAAC;QACvB,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACzB,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;QACzB,yCAAyC;QACzC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAE5B,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,qFAAqF,MAAM,KAAK;YAC9F,sGAAsG;YACtG,qBAAqB,CACxB,CAAC;IACJ,CAAC;AACH,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"data-accessor.js","sourceRoot":"","sources":["../../src/store/data-accessor.ts"],"names":[],"mappings":"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"}
|
|
@@ -206,15 +206,27 @@ export declare class ExodusAbortWriteUnsafeError extends Error {
|
|
|
206
206
|
* @public
|
|
207
207
|
*/
|
|
208
208
|
export declare function assertWriteDurable(handle: DualScopeDbHandle): void;
|
|
209
|
+
/**
|
|
210
|
+
* Refuse a cloud vault placeholder as a project directory (T13006, T13021):
|
|
211
|
+
* it names a project that lives on another machine, so resolving it (raw, or
|
|
212
|
+
* already resolved against a working directory) would open or create a store
|
|
213
|
+
* under the caller's directory.
|
|
214
|
+
*
|
|
215
|
+
* @param cwd - A project directory, as given or resolved.
|
|
216
|
+
* @throws {CleoError} `NOT_FOUND` for a placeholder.
|
|
217
|
+
*/
|
|
218
|
+
export declare function assertNotVaultRemotePath(cwd: string | undefined): void;
|
|
209
219
|
/**
|
|
210
220
|
* Resolve the absolute path to the dual-scope `cleo.db` for the given scope.
|
|
211
221
|
*
|
|
212
|
-
* - `project`: `resolveCleoDir(cwd)` + `'cleo.db'` (falls under `<root>/.cleo/`)
|
|
222
|
+
* - `project`: `resolveCleoDir(cwd)` + `'cleo.db'` (falls under `<root>/.cleo/`); a cloud
|
|
223
|
+
* vault placeholder `cwd` (a project on another machine) is refused with `E_NOT_FOUND`
|
|
213
224
|
* - `global`: `getCleoHome()` + `'cleo.db'` (falls under XDG data home `/cleo/`).
|
|
214
225
|
* @param scope - Project or global storage ownership.
|
|
215
226
|
* @param cwd - Explicit project root when resolving project storage.
|
|
216
227
|
* @param capturedGlobalHome - Previously captured global home, independent of later environment changes.
|
|
217
228
|
* @returns Canonical consolidated store path.
|
|
229
|
+
* @throws {CleoError} `NOT_FOUND` when `cwd` is a cloud vault placeholder (T13006).
|
|
218
230
|
* @remarks Omitting the captured home preserves ambient global routing. A project
|
|
219
231
|
* resolution never uses the global home override. Capture ownership before awaiting.
|
|
220
232
|
* @example
|
|
@@ -251,6 +263,16 @@ export declare function resolveDualScopeDbPath(scope: DualScope, cwd?: string, c
|
|
|
251
263
|
*/
|
|
252
264
|
export declare function openDualScopeDb(scope: 'project', cwd?: string, options?: OpenDualScopeAtPathOptions): Promise<DualScopeDbHandle<'project'>>;
|
|
253
265
|
export declare function openDualScopeDb(scope: 'global', cwd?: string, options?: OpenDualScopeAtPathOptions): Promise<DualScopeDbHandle<'global'>>;
|
|
266
|
+
/**
|
|
267
|
+
* Assert a chokepoint handle has `foreign_keys = 1`, at open, after the
|
|
268
|
+
* schema pass; never per transaction (NEW-6, T12786). Every chokepoint
|
|
269
|
+
* handle is ON: `applyPerfPragmas` sets it outside vitest, and `node:sqlite`
|
|
270
|
+
* opens with foreign keys enabled when the pragma is skipped (vitest), so a
|
|
271
|
+
* test runs on the same mode production does.
|
|
272
|
+
*
|
|
273
|
+
* @throws {ForeignKeysNotRestoredError} `E_STORE_FK_OFF` when it is off.
|
|
274
|
+
*/
|
|
275
|
+
export declare function assertHandleForeignKeys(nativeDb: DatabaseSync): void;
|
|
254
276
|
/**
|
|
255
277
|
* Open (or re-use) a consolidated dual-scope `cleo.db` at an EXPLICIT path,
|
|
256
278
|
* bypassing the scope→path resolver.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dual-scope-db.d.ts","sourceRoot":"","sources":["../../src/store/dual-scope-db.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"dual-scope-db.d.ts","sourceRoot":"","sources":["../../src/store/dual-scope-db.ts"],"names":[],"mappings":"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"}
|
|
@@ -52,17 +52,24 @@
|
|
|
52
52
|
import { existsSync, mkdirSync } from 'node:fs';
|
|
53
53
|
import { createRequire } from 'node:module';
|
|
54
54
|
import { dirname, join, resolve } from 'node:path';
|
|
55
|
+
import { ExitCode } from '@cleocode/contracts';
|
|
56
|
+
import { isVaultRemotePath } from '@cleocode/paths';
|
|
57
|
+
import { CleoError } from '../errors.js';
|
|
55
58
|
import { getLogger } from '../logger.js';
|
|
56
59
|
import { getCleoHome, resolveCleoDir } from '../paths.js';
|
|
57
60
|
import { worktreeScope } from '../project-scope.js';
|
|
58
61
|
import { observeOperation } from './background-ops.js';
|
|
59
62
|
import { getRecordedExodusAbort } from './exodus/abort-events.js';
|
|
60
|
-
import {
|
|
63
|
+
import { ForeignKeysNotRestoredError, migrateBracketed } from './migration-runner.js';
|
|
61
64
|
import { assertStoreNotRelocated } from './relocated-store-guard.js';
|
|
62
65
|
import { resolveConsolidatedJournalSiblings, resolveCorePackageMigrationsFolder, } from './resolve-migrations-folder.js';
|
|
63
|
-
import { healRowIdentitySchema, missingRowIdentitySchema,
|
|
66
|
+
import { healRowIdentitySchema, missingRowIdentitySchema, ROW_IDENTITY } from './row-identity.js';
|
|
64
67
|
import { rowUidFillEnabled } from './row-identity-flag.js';
|
|
65
68
|
import { applyPerfPragmas } from './sqlite-pragmas.js';
|
|
69
|
+
import { captureBracketHooks, syncCaptureOpenPass } from './sync/capture.js';
|
|
70
|
+
import { prepareRowIdentityUnderCapture } from './sync/identity-fill.js';
|
|
71
|
+
import { ensureTriggerSuspendTable, verifyOwnedTriggers } from './sync/trigger-classes.js';
|
|
72
|
+
import { assertWriterVersion } from './sync/writer-version.js';
|
|
66
73
|
import { explainSchemaWriteDenial, installSchemaWriteGuard } from './worktree-build-guard.js';
|
|
67
74
|
import { assertStorePathIsNotWorktreeResident } from './worktree-isolation-guard.js';
|
|
68
75
|
import { makeWriterLeaseIdentity, registerDbIdentity, resolveDbIdentity, withColdOpenLease, withWriterLease, } from './writer-lease.js';
|
|
@@ -192,15 +199,34 @@ function cacheKey(scope, dbPath) {
|
|
|
192
199
|
return `${scope}::${dbPath}`;
|
|
193
200
|
}
|
|
194
201
|
// ── Path resolution ──────────────────────────────────────────────────────────
|
|
202
|
+
/**
|
|
203
|
+
* Refuse a cloud vault placeholder as a project directory (T13006, T13021):
|
|
204
|
+
* it names a project that lives on another machine, so resolving it (raw, or
|
|
205
|
+
* already resolved against a working directory) would open or create a store
|
|
206
|
+
* under the caller's directory.
|
|
207
|
+
*
|
|
208
|
+
* @param cwd - A project directory, as given or resolved.
|
|
209
|
+
* @throws {CleoError} `NOT_FOUND` for a placeholder.
|
|
210
|
+
*/
|
|
211
|
+
export function assertNotVaultRemotePath(cwd) {
|
|
212
|
+
if (!isVaultRemotePath(cwd))
|
|
213
|
+
return;
|
|
214
|
+
// @sync-invariant none:local-only a placeholder path names no location on this machine; it gates a local store open, never a synced write
|
|
215
|
+
throw new CleoError(ExitCode.NOT_FOUND, `'${cwd}' is a cloud vault placeholder for a project that lives on another machine, not a path; it has no store here`, {
|
|
216
|
+
fix: 'restore the project onto this machine with `cleo cloud restore --project <id> --into <dir>`',
|
|
217
|
+
});
|
|
218
|
+
}
|
|
195
219
|
/**
|
|
196
220
|
* Resolve the absolute path to the dual-scope `cleo.db` for the given scope.
|
|
197
221
|
*
|
|
198
|
-
* - `project`: `resolveCleoDir(cwd)` + `'cleo.db'` (falls under `<root>/.cleo/`)
|
|
222
|
+
* - `project`: `resolveCleoDir(cwd)` + `'cleo.db'` (falls under `<root>/.cleo/`); a cloud
|
|
223
|
+
* vault placeholder `cwd` (a project on another machine) is refused with `E_NOT_FOUND`
|
|
199
224
|
* - `global`: `getCleoHome()` + `'cleo.db'` (falls under XDG data home `/cleo/`).
|
|
200
225
|
* @param scope - Project or global storage ownership.
|
|
201
226
|
* @param cwd - Explicit project root when resolving project storage.
|
|
202
227
|
* @param capturedGlobalHome - Previously captured global home, independent of later environment changes.
|
|
203
228
|
* @returns Canonical consolidated store path.
|
|
229
|
+
* @throws {CleoError} `NOT_FOUND` when `cwd` is a cloud vault placeholder (T13006).
|
|
204
230
|
* @remarks Omitting the captured home preserves ambient global routing. A project
|
|
205
231
|
* resolution never uses the global home override. Capture ownership before awaiting.
|
|
206
232
|
* @example
|
|
@@ -210,6 +236,7 @@ function cacheKey(scope, dbPath) {
|
|
|
210
236
|
*/
|
|
211
237
|
export function resolveDualScopeDbPath(scope, cwd, capturedGlobalHome) {
|
|
212
238
|
if (scope === 'project') {
|
|
239
|
+
assertNotVaultRemotePath(cwd);
|
|
213
240
|
return join(resolveCleoDir(cwd), 'cleo.db');
|
|
214
241
|
}
|
|
215
242
|
return join(capturedGlobalHome ?? getCleoHome(), 'cleo.db');
|
|
@@ -320,6 +347,89 @@ export async function openDualScopeDb(scope, cwd, options) {
|
|
|
320
347
|
}, open)
|
|
321
348
|
: open();
|
|
322
349
|
}
|
|
350
|
+
/**
|
|
351
|
+
* Assert a chokepoint handle has `foreign_keys = 1`, at open, after the
|
|
352
|
+
* schema pass; never per transaction (NEW-6, T12786). Every chokepoint
|
|
353
|
+
* handle is ON: `applyPerfPragmas` sets it outside vitest, and `node:sqlite`
|
|
354
|
+
* opens with foreign keys enabled when the pragma is skipped (vitest), so a
|
|
355
|
+
* test runs on the same mode production does.
|
|
356
|
+
*
|
|
357
|
+
* @throws {ForeignKeysNotRestoredError} `E_STORE_FK_OFF` when it is off.
|
|
358
|
+
*/
|
|
359
|
+
export function assertHandleForeignKeys(nativeDb) {
|
|
360
|
+
const expected = 1;
|
|
361
|
+
const actual = Number(nativeDb.prepare('PRAGMA foreign_keys').get().foreign_keys);
|
|
362
|
+
// @sync-invariant none:local-only store-open FK mode assert on this handle; no synced row is written
|
|
363
|
+
if (actual !== expected)
|
|
364
|
+
throw new ForeignKeysNotRestoredError(expected, actual);
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* The cold-open schema pass of a consolidated store, under the cold-open
|
|
368
|
+
* lease (journal spec §2.3a, §3.5 Rule 4; T12796, T12809, T12819):
|
|
369
|
+
*
|
|
370
|
+
* 1. **Step 0 (project):** `cleo_trigger_suspend` exists and is empty, BEFORE
|
|
371
|
+
* migrations. The owned guard and side-effect triggers read it, so a store
|
|
372
|
+
* without it cannot write tasks, sessions or acceptance criteria, and any
|
|
373
|
+
* `ALTER … RENAME` fails.
|
|
374
|
+
* 2. `reconcileJournal` and every pending migration, one bracket per file,
|
|
375
|
+
* with the journal drizzle's `migrateSync` would write
|
|
376
|
+
* ({@link migrateBracketed}).
|
|
377
|
+
* 3. **Identity heal (T12878):** missing row-identity DDL is recreated, before
|
|
378
|
+
* any trigger is verified or capture installed.
|
|
379
|
+
* 4. **Owned triggers (project):** each owned trigger's live text is
|
|
380
|
+
* compared with its owned DDL and repaired when it is missing or differs
|
|
381
|
+
* (an older build, or a table rebuild, can leave one without its clause).
|
|
382
|
+
*/
|
|
383
|
+
async function migrateScopeSchema(scope, nativeDb,
|
|
384
|
+
// biome-ignore lint/suspicious/noExplicitAny: dual-scope handle is untyped at construction
|
|
385
|
+
db, migrationsFolder, log, execution) {
|
|
386
|
+
execution?.assertActive();
|
|
387
|
+
// S2 ruling (c): before any write, refuse a store that requires a newer
|
|
388
|
+
// writer (sync capture on under a newer build).
|
|
389
|
+
assertWriterVersion(nativeDb);
|
|
390
|
+
if (scope === 'project') {
|
|
391
|
+
const step0 = ensureTriggerSuspendTable(nativeDb);
|
|
392
|
+
if (step0.created)
|
|
393
|
+
log.warn({ scope }, 'cleo_trigger_suspend was missing; recreated before migrations (T12819)');
|
|
394
|
+
if (step0.cleared > 0) {
|
|
395
|
+
log.error({ scope, rows: step0.cleared }, 'cleo_trigger_suspend held committed suspension rows; cleared (T12819)');
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
execution?.assertActive();
|
|
399
|
+
migrateBracketed(db, nativeDb, migrationsFolder, existenceTable(scope), `dual-scope-db[${scope}]`, resolveConsolidatedJournalSiblings(migrationsSetName(scope)), captureBracketHooks(nativeDb, scope));
|
|
400
|
+
// NEW-6: the handle leaves the schema pass in its configured FK mode.
|
|
401
|
+
assertHandleForeignKeys(nativeDb);
|
|
402
|
+
execution?.assertActive();
|
|
403
|
+
// T12878 heal, inside the schema pass (journal S2 order: runner -> heal ->
|
|
404
|
+
// owned triggers -> capture). DDL only: identity tables, the graveyard
|
|
405
|
+
// trigger, early-table and uid columns, indexes. Healing here, before the
|
|
406
|
+
// capture triggers are installed, keeps the heal (and its receipt) out of
|
|
407
|
+
// the change journal and lets verifyOwnedTriggers see the healed shape.
|
|
408
|
+
// The chokepoint writers (the heal receipt) load lazily and only when there
|
|
409
|
+
// is work (see identityWorkOnOpen): a static import closes the store import
|
|
410
|
+
// cycle through sqlite.js, and loading them on every open re-entered it.
|
|
411
|
+
if (identityWorkOnOpen(nativeDb, scope)) {
|
|
412
|
+
await import('./sqlite-data-accessor.js');
|
|
413
|
+
healRowIdentitySchema(nativeDb, scope);
|
|
414
|
+
}
|
|
415
|
+
execution?.assertActive();
|
|
416
|
+
if (scope === 'project') {
|
|
417
|
+
const findings = verifyOwnedTriggers(nativeDb, { repair: true });
|
|
418
|
+
if (findings.length > 0) {
|
|
419
|
+
log.warn({ scope, findings }, 'owned triggers repaired from their owned DDL (T12819)');
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
// T12343 (S2): capture triggers match the persisted sync.capture flag;
|
|
423
|
+
// with the flag off and no trigger present this only reads.
|
|
424
|
+
const capture = syncCaptureOpenPass(nativeDb, scope);
|
|
425
|
+
if (capture.capture === 'on' &&
|
|
426
|
+
capture.report.installed.length + capture.report.replaced.length > 0) {
|
|
427
|
+
log.info({ scope, report: capture.report }, 'capture triggers installed (T12343)');
|
|
428
|
+
}
|
|
429
|
+
else if (capture.capture === 'off' && capture.dropped.length > 0) {
|
|
430
|
+
log.info({ scope, dropped: capture.dropped }, 'capture triggers dropped: sync.capture is off (T12343)');
|
|
431
|
+
}
|
|
432
|
+
}
|
|
323
433
|
/**
|
|
324
434
|
* Whether this open has row-identity work: the fill (flag on), or identity
|
|
325
435
|
* schema to heal (T12878). A scope with nothing declared has none.
|
|
@@ -378,27 +488,17 @@ async function openDedicatedDualScopeDb(scope, dbPath, log, execution) {
|
|
|
378
488
|
// even when two dedicated opens of a fresh file are concurrent.
|
|
379
489
|
const handle = await withColdOpenLease(scope, nativeDb, async () => {
|
|
380
490
|
execution?.assertActive();
|
|
381
|
-
|
|
382
|
-
execution?.assertActive();
|
|
383
|
-
migrateWithRetry(db, migrationsFolder, nativeDb, existenceTable(scope), `dual-scope-db[${scope}]`);
|
|
491
|
+
await migrateScopeSchema(scope, nativeDb, db, migrationsFolder, log, execution);
|
|
384
492
|
// T12341: fill row uids (opt-in). No per-connection uid triggers:
|
|
385
493
|
// dedicated handles run the exodus copy, whose effect inspection
|
|
386
494
|
// refuses a trigger that calls an opaque function; the next open fills
|
|
387
|
-
// its rows. The
|
|
495
|
+
// its rows. The identity schema was healed in the schema pass; the
|
|
496
|
+
// writers were loaded there when the fill is on.
|
|
388
497
|
execution?.assertActive();
|
|
389
|
-
|
|
390
|
-
// (DDL only); filling values stays opt-in.
|
|
391
|
-
// The chokepoint writers (the heal receipt, the fill) load lazily.
|
|
392
|
-
// The writers load only when there is work: the fill (flag on) or a
|
|
393
|
-
// schema to heal. A healthy store with the flag off, or a scope with
|
|
394
|
-
// nothing declared (the global store), never loads them, as before
|
|
395
|
-
// T12878; loading them on every open re-entered the store module graph.
|
|
396
|
-
if (identityWorkOnOpen(nativeDb, scope)) {
|
|
498
|
+
if (rowUidFillEnabled() && ROW_IDENTITY[scope].length > 0) {
|
|
397
499
|
await import('./sqlite-data-accessor.js');
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
prepareRowIdentity(nativeDb, scope, { triggers: false });
|
|
401
|
-
}
|
|
500
|
+
// Uncaptured under sync capture, with its tables marked suspect.
|
|
501
|
+
prepareRowIdentityUnderCapture(nativeDb, scope, { triggers: false });
|
|
402
502
|
}
|
|
403
503
|
execution?.assertActive();
|
|
404
504
|
log.debug({ scope, dbPath }, 'DEDICATED dual-scope cleo.db ready (T11782 FIX D)');
|
|
@@ -610,7 +710,7 @@ exodusCwd, options) {
|
|
|
610
710
|
// primitives resolve it from the exact handle binding (T12042), no
|
|
611
711
|
// longer from a process-global active-scope registry.
|
|
612
712
|
//
|
|
613
|
-
// The lease wraps ONLY reconcileJournal +
|
|
713
|
+
// The lease wraps ONLY the schema pass (reconcileJournal + migrations) — the precise write-
|
|
614
714
|
// txn that races in T5158. The exodus-on-open hook runs AFTER the lease releases
|
|
615
715
|
// (below): it owns its OWN single-flight lock + dedicated migrate connections,
|
|
616
716
|
// and `runExodusMigrate` CLOSES + re-opens the scope handles, which would
|
|
@@ -624,27 +724,17 @@ exodusCwd, options) {
|
|
|
624
724
|
// OOM root cause: each lineage previously deleted the others' rows so the shared
|
|
625
725
|
// journal never converged).
|
|
626
726
|
execution?.assertActive();
|
|
627
|
-
|
|
628
|
-
//
|
|
629
|
-
execution
|
|
630
|
-
migrateWithRetry(db, migrationsFolder, nativeDb, existenceTable(scope), `dual-scope-db[${scope}]`);
|
|
727
|
+
// The schema pass also heals the identity schema (T12878), on every
|
|
728
|
+
// open, flag or not, before capture is installed.
|
|
729
|
+
await migrateScopeSchema(scope, nativeDb, db, migrationsFolder, log, execution);
|
|
631
730
|
// T12341 (opt-in, CLEO_ROW_UID_FILL=1): fill every NULL row uid
|
|
632
731
|
// deterministically, inside this lease so two processes never fill at
|
|
633
732
|
// once, and arm this connection's uid triggers. Never throws.
|
|
634
733
|
execution?.assertActive();
|
|
635
|
-
|
|
636
|
-
// only: tables, graveyard trigger, early-table columns, uid columns
|
|
637
|
-
// and indexes). A store whose uid migration was journaled without
|
|
638
|
-
// running (9.25 on live cleocode) gets it here. Never throws.
|
|
639
|
-
// The chokepoint writers (the heal receipt, the fill) load lazily: a
|
|
640
|
-
// static import would close the store import cycle through sqlite.js.
|
|
641
|
-
// The writers load only when there is work (see identityWorkOnOpen).
|
|
642
|
-
if (identityWorkOnOpen(nativeDb, scope)) {
|
|
734
|
+
if (rowUidFillEnabled() && ROW_IDENTITY[scope].length > 0) {
|
|
643
735
|
await import('./sqlite-data-accessor.js');
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
prepareRowIdentity(nativeDb, scope);
|
|
647
|
-
}
|
|
736
|
+
// A derived rewrite: uncaptured, its tables marked suspect (S2).
|
|
737
|
+
prepareRowIdentityUnderCapture(nativeDb, scope);
|
|
648
738
|
}
|
|
649
739
|
execution?.assertActive();
|
|
650
740
|
log.debug({ scope, dbPath: normalizedPath }, 'dual-scope cleo.db ready');
|