@cleocode/core 2026.9.24 → 2026.9.26
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/admin/import-tasks.d.ts.map +1 -1
- package/dist/admin/import-tasks.js +5 -2
- package/dist/admin/import-tasks.js.map +1 -1
- package/dist/admin/import.d.ts.map +1 -1
- package/dist/admin/import.js +7 -2
- package/dist/admin/import.js.map +1 -1
- package/dist/audit-prune.d.ts +32 -0
- package/dist/audit-prune.d.ts.map +1 -1
- package/dist/audit-prune.js +37 -3
- package/dist/audit-prune.js.map +1 -1
- package/dist/build-provenance.json +2 -2
- package/dist/cloud/crypto.d.ts +1 -2
- package/dist/cloud/crypto.d.ts.map +1 -1
- package/dist/cloud/crypto.js +1 -11
- package/dist/cloud/crypto.js.map +1 -1
- package/dist/cloud/index.d.ts +1 -0
- package/dist/cloud/index.d.ts.map +1 -1
- package/dist/cloud/index.js +1 -0
- package/dist/cloud/index.js.map +1 -1
- package/dist/cloud/nexus-auth.d.ts +26 -1
- package/dist/cloud/nexus-auth.d.ts.map +1 -1
- package/dist/cloud/nexus-auth.js +61 -32
- package/dist/cloud/nexus-auth.js.map +1 -1
- package/dist/cloud/nexus-credentials.js +2 -2
- package/dist/cloud/nexus-credentials.js.map +1 -1
- package/dist/cloud/nexus-device.d.ts +809 -0
- package/dist/cloud/nexus-device.d.ts.map +1 -0
- package/dist/cloud/nexus-device.js +1680 -0
- package/dist/cloud/nexus-device.js.map +1 -0
- package/dist/cloud/nexus-enrol.d.ts +210 -0
- package/dist/cloud/nexus-enrol.d.ts.map +1 -0
- package/dist/cloud/nexus-enrol.js +1023 -0
- package/dist/cloud/nexus-enrol.js.map +1 -0
- package/dist/cloud/nexus-link.d.ts +3 -0
- package/dist/cloud/nexus-link.d.ts.map +1 -1
- package/dist/cloud/nexus-link.js +38 -4
- package/dist/cloud/nexus-link.js.map +1 -1
- package/dist/cloud/signing.d.ts +20 -0
- package/dist/cloud/signing.d.ts.map +1 -1
- package/dist/cloud/signing.js +14 -0
- package/dist/cloud/signing.js.map +1 -1
- package/dist/cloud/uuidv7.d.ts +9 -0
- package/dist/cloud/uuidv7.d.ts.map +1 -0
- package/dist/cloud/uuidv7.js +19 -0
- package/dist/cloud/uuidv7.js.map +1 -0
- package/dist/crypto/credentials.d.ts +61 -0
- package/dist/crypto/credentials.d.ts.map +1 -1
- package/dist/crypto/credentials.js +154 -58
- package/dist/crypto/credentials.js.map +1 -1
- package/dist/decide/bench/index.d.ts +1 -1
- package/dist/decide/bench/index.d.ts.map +1 -1
- package/dist/decide/bench/index.js +1 -1
- package/dist/decide/bench/index.js.map +1 -1
- package/dist/decide/bench/operation.d.ts +1 -1
- package/dist/decide/bench/operation.d.ts.map +1 -1
- package/dist/decide/bench/operation.js +1 -1
- package/dist/decide/bench/operation.js.map +1 -1
- package/dist/decide/bench/profiles.d.ts +50 -22
- package/dist/decide/bench/profiles.d.ts.map +1 -1
- package/dist/decide/bench/profiles.js +103 -59
- package/dist/decide/bench/profiles.js.map +1 -1
- package/dist/decide/bench/report.d.ts.map +1 -1
- package/dist/decide/bench/report.js +6 -1
- package/dist/decide/bench/report.js.map +1 -1
- package/dist/decide/bench/runner.d.ts +6 -1
- package/dist/decide/bench/runner.d.ts.map +1 -1
- package/dist/decide/bench/runner.js +1 -0
- package/dist/decide/bench/runner.js.map +1 -1
- package/dist/decide/client.d.ts.map +1 -1
- package/dist/decide/client.js +11 -5
- package/dist/decide/client.js.map +1 -1
- package/dist/decide/jev-wire.d.ts +31 -1
- package/dist/decide/jev-wire.d.ts.map +1 -1
- package/dist/decide/jev-wire.js +61 -7
- package/dist/decide/jev-wire.js.map +1 -1
- package/dist/docs/export-document.js +12907 -10622
- package/dist/docs/export-document.js.map +3 -3
- package/dist/doctor/dependency-cycles.d.ts +41 -0
- package/dist/doctor/dependency-cycles.d.ts.map +1 -0
- package/dist/doctor/dependency-cycles.js +39 -0
- package/dist/doctor/dependency-cycles.js.map +1 -0
- package/dist/doctor/index.d.ts +2 -0
- package/dist/doctor/index.d.ts.map +1 -1
- package/dist/doctor/index.js +1 -0
- package/dist/doctor/index.js.map +1 -1
- package/dist/doctor/orphan-ac-bindings.d.ts +64 -0
- package/dist/doctor/orphan-ac-bindings.d.ts.map +1 -0
- package/dist/doctor/orphan-ac-bindings.js +59 -0
- package/dist/doctor/orphan-ac-bindings.js.map +1 -0
- package/dist/doctor/projects.d.ts.map +1 -1
- package/dist/doctor/projects.js +43 -29
- package/dist/doctor/projects.js.map +1 -1
- package/dist/doctor/row-identity.d.ts +42 -0
- package/dist/doctor/row-identity.d.ts.map +1 -0
- package/dist/doctor/row-identity.js +151 -0
- package/dist/doctor/row-identity.js.map +1 -0
- package/dist/doctor/twin-collapse.d.ts +58 -2
- package/dist/doctor/twin-collapse.d.ts.map +1 -1
- package/dist/doctor/twin-collapse.js +212 -14
- package/dist/doctor/twin-collapse.js.map +1 -1
- package/dist/error-catalog.d.ts.map +1 -1
- package/dist/error-catalog.js +4 -0
- package/dist/error-catalog.js.map +1 -1
- package/dist/error-registry.d.ts.map +1 -1
- package/dist/error-registry.js +8 -0
- package/dist/error-registry.js.map +1 -1
- package/dist/lifecycle/verification/satisfies-validator.d.ts.map +1 -1
- package/dist/lifecycle/verification/satisfies-validator.js +10 -0
- package/dist/lifecycle/verification/satisfies-validator.js.map +1 -1
- package/dist/llm/plugin-facade.js +17767 -15482
- package/dist/llm/plugin-facade.js.map +3 -3
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +19 -10
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/manifest-identity.d.ts +171 -0
- package/dist/memory/manifest-identity.d.ts.map +1 -0
- package/dist/memory/manifest-identity.js +345 -0
- package/dist/memory/manifest-identity.js.map +1 -0
- package/dist/memory/mental-model-queue.d.ts +14 -4
- package/dist/memory/mental-model-queue.d.ts.map +1 -1
- package/dist/memory/mental-model-queue.js +64 -35
- package/dist/memory/mental-model-queue.js.map +1 -1
- package/dist/memory/pipeline-manifest-sqlite.d.ts +47 -5
- package/dist/memory/pipeline-manifest-sqlite.d.ts.map +1 -1
- package/dist/memory/pipeline-manifest-sqlite.js +130 -14
- package/dist/memory/pipeline-manifest-sqlite.js.map +1 -1
- package/dist/memory/retrieval/observe.d.ts.map +1 -1
- package/dist/memory/retrieval/observe.js +2 -0
- package/dist/memory/retrieval/observe.js.map +1 -1
- package/dist/memory/transcript-scanner.js +1 -1
- package/dist/nexus/deps.d.ts.map +1 -1
- package/dist/nexus/deps.js +7 -14
- package/dist/nexus/deps.js.map +1 -1
- package/dist/nexus/discover.d.ts.map +1 -1
- package/dist/nexus/discover.js +6 -9
- package/dist/nexus/discover.js.map +1 -1
- package/dist/nexus/git-state.d.ts.map +1 -1
- package/dist/nexus/git-state.js +10 -1
- package/dist/nexus/git-state.js.map +1 -1
- package/dist/nexus/projects-clean.d.ts.map +1 -1
- package/dist/nexus/projects-clean.js +22 -11
- package/dist/nexus/projects-clean.js.map +1 -1
- package/dist/nexus/projects-scan.d.ts.map +1 -1
- package/dist/nexus/projects-scan.js +8 -13
- package/dist/nexus/projects-scan.js.map +1 -1
- package/dist/nexus/query.d.ts.map +1 -1
- package/dist/nexus/query.js +4 -12
- package/dist/nexus/query.js.map +1 -1
- package/dist/nexus/registry-roots.d.ts +5 -2
- package/dist/nexus/registry-roots.d.ts.map +1 -1
- package/dist/nexus/registry-roots.js +8 -10
- package/dist/nexus/registry-roots.js.map +1 -1
- package/dist/nexus/registry.d.ts +18 -0
- package/dist/nexus/registry.d.ts.map +1 -1
- package/dist/nexus/registry.js +37 -16
- package/dist/nexus/registry.js.map +1 -1
- package/dist/nexus/workspace.d.ts.map +1 -1
- package/dist/nexus/workspace.js +54 -4
- package/dist/nexus/workspace.js.map +1 -1
- package/dist/orchestrate/lifecycle-ops.js +1 -1
- package/dist/orchestrate/lifecycle-ops.js.map +1 -1
- package/dist/orchestrate/pivot.d.ts.map +1 -1
- package/dist/orchestrate/pivot.js +4 -2
- package/dist/orchestrate/pivot.js.map +1 -1
- package/dist/orchestrate/query-ops.d.ts.map +1 -1
- package/dist/orchestrate/query-ops.js +3 -3
- package/dist/orchestrate/query-ops.js.map +1 -1
- package/dist/orchestrate/spawn-ops.js +1 -1
- package/dist/orchestrate/spawn-ops.js.map +1 -1
- package/dist/orchestrate/worktree-complete.d.ts.map +1 -1
- package/dist/orchestrate/worktree-complete.js +40 -2
- package/dist/orchestrate/worktree-complete.js.map +1 -1
- package/dist/orchestration/index.js +1 -1
- package/dist/orchestration/index.js.map +1 -1
- package/dist/orchestration/lead-rollup.d.ts.map +1 -1
- package/dist/orchestration/lead-rollup.js +3 -3
- package/dist/orchestration/lead-rollup.js.map +1 -1
- package/dist/orchestration/parallel.js +1 -1
- package/dist/orchestration/parallel.js.map +1 -1
- package/dist/orchestration/spawn-prompt.d.ts +26 -0
- package/dist/orchestration/spawn-prompt.d.ts.map +1 -1
- package/dist/orchestration/spawn-prompt.js +62 -91
- package/dist/orchestration/spawn-prompt.js.map +1 -1
- package/dist/orchestration/wave-topic.d.ts +4 -2
- package/dist/orchestration/wave-topic.d.ts.map +1 -1
- package/dist/orchestration/wave-topic.js +6 -4
- package/dist/orchestration/wave-topic.js.map +1 -1
- package/dist/orchestration/waves.d.ts +2 -1
- package/dist/orchestration/waves.d.ts.map +1 -1
- package/dist/orchestration/waves.js +4 -3
- package/dist/orchestration/waves.js.map +1 -1
- package/dist/phases/index.d.ts.map +1 -1
- package/dist/phases/index.js +4 -2
- package/dist/phases/index.js.map +1 -1
- package/dist/release/ci-evidence.d.ts +190 -0
- package/dist/release/ci-evidence.d.ts.map +1 -1
- package/dist/release/ci-evidence.js +436 -4
- package/dist/release/ci-evidence.js.map +1 -1
- package/dist/sdk/validator-ac-pull.d.ts.map +1 -1
- package/dist/sdk/validator-ac-pull.js +2 -1
- package/dist/sdk/validator-ac-pull.js.map +1 -1
- package/dist/selfimprove/fix-gen.js +12807 -10522
- package/dist/selfimprove/fix-gen.js.map +3 -3
- package/dist/sentient/cross-project-hygiene.d.ts +5 -0
- package/dist/sentient/cross-project-hygiene.d.ts.map +1 -1
- package/dist/sentient/cross-project-hygiene.js +7 -1
- package/dist/sentient/cross-project-hygiene.js.map +1 -1
- package/dist/sentient/propose-tick.d.ts.map +1 -1
- package/dist/sentient/propose-tick.js +2 -3
- package/dist/sentient/propose-tick.js.map +1 -1
- package/dist/sentient/stage-drift-tick.d.ts.map +1 -1
- package/dist/sentient/stage-drift-tick.js +2 -3
- package/dist/sentient/stage-drift-tick.js.map +1 -1
- package/dist/session/engine-ops.d.ts.map +1 -1
- package/dist/session/engine-ops.js +77 -49
- package/dist/session/engine-ops.js.map +1 -1
- package/dist/sessions/focus-state-store.d.ts +69 -23
- package/dist/sessions/focus-state-store.d.ts.map +1 -1
- package/dist/sessions/focus-state-store.js +113 -27
- package/dist/sessions/focus-state-store.js.map +1 -1
- package/dist/sessions/handoff.js +1 -1
- package/dist/sessions/handoff.js.map +1 -1
- package/dist/sessions/index.d.ts.map +1 -1
- package/dist/sessions/index.js +24 -13
- package/dist/sessions/index.js.map +1 -1
- package/dist/sessions/terminal-identity.d.ts +165 -17
- package/dist/sessions/terminal-identity.d.ts.map +1 -1
- package/dist/sessions/terminal-identity.js +341 -32
- package/dist/sessions/terminal-identity.js.map +1 -1
- package/dist/skills/manifests/research.js +2 -0
- package/dist/skills/manifests/research.js.map +1 -1
- package/dist/skills/orchestrator/startup.js +2 -2
- package/dist/skills/orchestrator/startup.js.map +1 -1
- package/dist/skills/orchestrator/validator.d.ts.map +1 -1
- package/dist/skills/orchestrator/validator.js +9 -2
- package/dist/skills/orchestrator/validator.js.map +1 -1
- package/dist/skills/validation.d.ts +4 -1
- package/dist/skills/validation.d.ts.map +1 -1
- package/dist/skills/validation.js +11 -3
- package/dist/skills/validation.js.map +1 -1
- package/dist/snapshot/index.d.ts +4 -0
- package/dist/snapshot/index.d.ts.map +1 -1
- package/dist/snapshot/index.js +50 -3
- package/dist/snapshot/index.js.map +1 -1
- package/dist/spawn/branch-lock.d.ts +111 -7
- package/dist/spawn/branch-lock.d.ts.map +1 -1
- package/dist/spawn/branch-lock.js +296 -8
- package/dist/spawn/branch-lock.js.map +1 -1
- package/dist/store/ac-binding-prune.d.ts +144 -0
- package/dist/store/ac-binding-prune.d.ts.map +1 -0
- package/dist/store/ac-binding-prune.js +293 -0
- package/dist/store/ac-binding-prune.js.map +1 -0
- package/dist/store/agent-registry-store.d.ts.map +1 -1
- package/dist/store/agent-registry-store.js +3 -2
- package/dist/store/agent-registry-store.js.map +1 -1
- package/dist/store/backup-sidecar.d.ts +85 -2
- package/dist/store/backup-sidecar.d.ts.map +1 -1
- package/dist/store/backup-sidecar.js +173 -1
- package/dist/store/backup-sidecar.js.map +1 -1
- package/dist/store/conduit-sqlite.d.ts.map +1 -1
- package/dist/store/conduit-sqlite.js +3 -2
- package/dist/store/conduit-sqlite.js.map +1 -1
- package/dist/store/credential-transfer.d.ts.map +1 -1
- package/dist/store/credential-transfer.js +3 -0
- package/dist/store/credential-transfer.js.map +1 -1
- package/dist/store/db-helpers.d.ts +32 -13
- package/dist/store/db-helpers.d.ts.map +1 -1
- package/dist/store/db-helpers.js +144 -40
- package/dist/store/db-helpers.js.map +1 -1
- package/dist/store/dependency-cycles.d.ts +164 -0
- package/dist/store/dependency-cycles.d.ts.map +1 -0
- package/dist/store/dependency-cycles.js +360 -0
- package/dist/store/dependency-cycles.js.map +1 -0
- package/dist/store/display-id-alias.d.ts +585 -0
- package/dist/store/display-id-alias.d.ts.map +1 -0
- package/dist/store/display-id-alias.js +1538 -0
- package/dist/store/display-id-alias.js.map +1 -0
- package/dist/store/dual-scope-db.d.ts.map +1 -1
- package/dist/store/dual-scope-db.js +48 -0
- package/dist/store/dual-scope-db.js.map +1 -1
- package/dist/store/exodus/migrate.d.ts.map +1 -1
- package/dist/store/exodus/migrate.js +8 -1
- package/dist/store/exodus/migrate.js.map +1 -1
- package/dist/store/exodus/reconcile.d.ts.map +1 -1
- package/dist/store/exodus/reconcile.js +7 -2
- package/dist/store/exodus/reconcile.js.map +1 -1
- package/dist/store/exodus/recovery.d.ts.map +1 -1
- package/dist/store/exodus/recovery.js +20 -1
- package/dist/store/exodus/recovery.js.map +1 -1
- package/dist/store/global-salt.d.ts +35 -0
- package/dist/store/global-salt.d.ts.map +1 -1
- package/dist/store/global-salt.js +136 -16
- package/dist/store/global-salt.js.map +1 -1
- package/dist/store/legacy-tasks-lineage.d.ts.map +1 -1
- package/dist/store/legacy-tasks-lineage.js +19 -2
- package/dist/store/legacy-tasks-lineage.js.map +1 -1
- package/dist/store/migration-sqlite.d.ts.map +1 -1
- package/dist/store/migration-sqlite.js +19 -11
- package/dist/store/migration-sqlite.js.map +1 -1
- package/dist/store/portable-bundle-scan.d.ts.map +1 -1
- package/dist/store/portable-bundle-scan.js +6 -0
- package/dist/store/portable-bundle-scan.js.map +1 -1
- package/dist/store/row-identity-flag.d.ts +26 -0
- package/dist/store/row-identity-flag.d.ts.map +1 -0
- package/dist/store/row-identity-flag.js +31 -0
- package/dist/store/row-identity-flag.js.map +1 -0
- package/dist/store/row-identity-registry.d.ts +61 -0
- package/dist/store/row-identity-registry.d.ts.map +1 -0
- package/dist/store/row-identity-registry.js +206 -0
- package/dist/store/row-identity-registry.js.map +1 -0
- package/dist/store/row-identity.d.ts +480 -0
- package/dist/store/row-identity.d.ts.map +1 -0
- package/dist/store/row-identity.js +1509 -0
- package/dist/store/row-identity.js.map +1 -0
- package/dist/store/safety-data-accessor.d.ts +5 -2
- package/dist/store/safety-data-accessor.d.ts.map +1 -1
- package/dist/store/safety-data-accessor.js +9 -2
- package/dist/store/safety-data-accessor.js.map +1 -1
- package/dist/store/schema/attachments.d.ts +1 -1
- package/dist/store/schema/audit.d.ts +4 -4
- package/dist/store/schema/background-jobs.d.ts +1 -1
- package/dist/store/schema/cleo-global/nexus.d.ts +1 -1
- package/dist/store/schema/cleo-global/skills.d.ts +2 -2
- package/dist/store/schema/cleo-project/audit.d.ts +4 -4
- package/dist/store/schema/cleo-project/docs.d.ts +1 -1
- package/dist/store/schema/cleo-project/lifecycle.d.ts +4 -4
- package/dist/store/schema/cleo-project/nexus-graph.d.ts +3 -3
- package/dist/store/schema/cleo-project/provenance-commits.d.ts +2 -2
- package/dist/store/schema/cleo-project/provenance-rest.d.ts +3 -3
- package/dist/store/schema/cleo-project/runtime.d.ts +3 -3
- package/dist/store/schema/cleo-project/tasks-core-batch2.d.ts +87 -1
- package/dist/store/schema/cleo-project/tasks-core-batch2.d.ts.map +1 -1
- package/dist/store/schema/cleo-project/tasks-core-batch2.js +35 -0
- package/dist/store/schema/cleo-project/tasks-core-batch2.js.map +1 -1
- package/dist/store/schema/cleo-project/tasks-core.d.ts +183 -7
- package/dist/store/schema/cleo-project/tasks-core.d.ts.map +1 -1
- package/dist/store/schema/cleo-project/tasks-core.js +52 -1
- package/dist/store/schema/cleo-project/tasks-core.js.map +1 -1
- package/dist/store/schema/cleo-shared/brain.d.ts +6 -6
- package/dist/store/schema/lifecycle.d.ts +4 -4
- package/dist/store/schema/manifest.d.ts +1 -1
- package/dist/store/schema/memory-schema.d.ts +5 -5
- package/dist/store/schema/nexus-schema.d.ts +3 -3
- package/dist/store/schema/provenance/releases.d.ts +1 -1
- package/dist/store/schema/skills-schema.d.ts +2 -2
- package/dist/store/schema/tasks.d.ts +6 -6
- package/dist/store/session-store.d.ts +63 -3
- package/dist/store/session-store.d.ts.map +1 -1
- package/dist/store/session-store.js +121 -8
- package/dist/store/session-store.js.map +1 -1
- package/dist/store/split-brain-import.d.ts +2 -14
- package/dist/store/split-brain-import.d.ts.map +1 -1
- package/dist/store/split-brain-import.js +40 -19
- package/dist/store/split-brain-import.js.map +1 -1
- package/dist/store/sqlite-data-accessor.d.ts +326 -2
- package/dist/store/sqlite-data-accessor.d.ts.map +1 -1
- package/dist/store/sqlite-data-accessor.js +782 -49
- package/dist/store/sqlite-data-accessor.js.map +1 -1
- package/dist/store/sync/clock-store.d.ts +67 -0
- package/dist/store/sync/clock-store.d.ts.map +1 -0
- package/dist/store/sync/clock-store.js +117 -0
- package/dist/store/sync/clock-store.js.map +1 -0
- package/dist/store/sync/flags.d.ts +51 -0
- package/dist/store/sync/flags.d.ts.map +1 -0
- package/dist/store/sync/flags.js +81 -0
- package/dist/store/sync/flags.js.map +1 -0
- package/dist/store/sync/hlc.d.ts +115 -0
- package/dist/store/sync/hlc.d.ts.map +1 -0
- package/dist/store/sync/hlc.js +172 -0
- package/dist/store/sync/hlc.js.map +1 -0
- package/dist/store/sync/index.d.ts +20 -0
- package/dist/store/sync/index.d.ts.map +1 -0
- package/dist/store/sync/index.js +20 -0
- package/dist/store/sync/index.js.map +1 -0
- package/dist/store/sync/replica-registry.d.ts +85 -0
- package/dist/store/sync/replica-registry.d.ts.map +1 -0
- package/dist/store/sync/replica-registry.js +147 -0
- package/dist/store/sync/replica-registry.js.map +1 -0
- package/dist/store/sync/replica.d.ts +181 -0
- package/dist/store/sync/replica.d.ts.map +1 -0
- package/dist/store/sync/replica.js +305 -0
- package/dist/store/sync/replica.js.map +1 -0
- package/dist/store/sync/schema.d.ts +68 -0
- package/dist/store/sync/schema.d.ts.map +1 -0
- package/dist/store/sync/schema.js +130 -0
- package/dist/store/sync/schema.js.map +1 -0
- package/dist/store/sync/skew-hold.d.ts +71 -0
- package/dist/store/sync/skew-hold.d.ts.map +1 -0
- package/dist/store/sync/skew-hold.js +89 -0
- package/dist/store/sync/skew-hold.js.map +1 -0
- package/dist/store/table-classification.d.ts +10 -8
- package/dist/store/table-classification.d.ts.map +1 -1
- package/dist/store/table-classification.js +93 -25
- package/dist/store/table-classification.js.map +1 -1
- package/dist/store/tasks-sqlite.d.ts.map +1 -1
- package/dist/store/tasks-sqlite.js +23 -3
- package/dist/store/tasks-sqlite.js.map +1 -1
- package/dist/store/twin-collapse.d.ts +113 -2
- package/dist/store/twin-collapse.d.ts.map +1 -1
- package/dist/store/twin-collapse.js +247 -19
- package/dist/store/twin-collapse.js.map +1 -1
- package/dist/store/umbrella-data-accessor.d.ts +5 -2
- package/dist/store/umbrella-data-accessor.d.ts.map +1 -1
- package/dist/store/umbrella-data-accessor.js +9 -2
- package/dist/store/umbrella-data-accessor.js.map +1 -1
- package/dist/store/validation-schemas.d.ts +241 -49
- package/dist/store/validation-schemas.d.ts.map +1 -1
- package/dist/system/health.d.ts +2 -0
- package/dist/system/health.d.ts.map +1 -1
- package/dist/system/health.js +57 -0
- package/dist/system/health.js.map +1 -1
- package/dist/system/project-health.d.ts +9 -2
- package/dist/system/project-health.d.ts.map +1 -1
- package/dist/system/project-health.js +8 -3
- package/dist/system/project-health.js.map +1 -1
- package/dist/task-work/index.d.ts.map +1 -1
- package/dist/task-work/index.js +9 -6
- package/dist/task-work/index.js.map +1 -1
- package/dist/tasks/ac-coverage-gate.d.ts.map +1 -1
- package/dist/tasks/ac-coverage-gate.js +3 -0
- package/dist/tasks/ac-coverage-gate.js.map +1 -1
- package/dist/tasks/ac-table.d.ts +35 -7
- package/dist/tasks/ac-table.d.ts.map +1 -1
- package/dist/tasks/ac-table.js +119 -14
- package/dist/tasks/ac-table.js.map +1 -1
- package/dist/tasks/add.d.ts.map +1 -1
- package/dist/tasks/add.js +48 -2
- package/dist/tasks/add.js.map +1 -1
- package/dist/tasks/analyze.d.ts.map +1 -1
- package/dist/tasks/analyze.js +3 -2
- package/dist/tasks/analyze.js.map +1 -1
- package/dist/tasks/backfill-child-projections.js +47 -6
- package/dist/tasks/backfill-child-projections.js.map +1 -1
- package/dist/tasks/complete.d.ts.map +1 -1
- package/dist/tasks/complete.js +6 -1
- package/dist/tasks/complete.js.map +1 -1
- package/dist/tasks/completion-evaluation.d.ts.map +1 -1
- package/dist/tasks/completion-evaluation.js +3 -0
- package/dist/tasks/completion-evaluation.js.map +1 -1
- package/dist/tasks/evidence.d.ts +19 -1
- package/dist/tasks/evidence.d.ts.map +1 -1
- package/dist/tasks/evidence.js +93 -21
- package/dist/tasks/evidence.js.map +1 -1
- package/dist/tasks/infer-add-params.js +1 -1
- package/dist/tasks/infer-add-params.js.map +1 -1
- package/dist/tasks/task-context.d.ts.map +1 -1
- package/dist/tasks/task-context.js +3 -1
- package/dist/tasks/task-context.js.map +1 -1
- package/dist/tasks/task-import.d.ts.map +1 -1
- package/dist/tasks/task-import.js +11 -3
- package/dist/tasks/task-import.js.map +1 -1
- package/dist/tasks/task-next.d.ts +5 -1
- package/dist/tasks/task-next.d.ts.map +1 -1
- package/dist/tasks/task-next.js +7 -2
- package/dist/tasks/task-next.js.map +1 -1
- package/dist/validation/compliance.d.ts +5 -1
- package/dist/validation/compliance.d.ts.map +1 -1
- package/dist/validation/compliance.js +24 -3
- package/dist/validation/compliance.js.map +1 -1
- package/dist/validation/engine-ops.d.ts.map +1 -1
- package/dist/validation/engine-ops.js +3 -2
- package/dist/validation/engine-ops.js.map +1 -1
- package/dist/validation/index.d.ts +1 -1
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/index.js +1 -1
- package/dist/validation/index.js.map +1 -1
- package/dist/validation/protocol-common.d.ts +47 -2
- package/dist/validation/protocol-common.d.ts.map +1 -1
- package/dist/validation/protocol-common.js +86 -21
- package/dist/validation/protocol-common.js.map +1 -1
- package/dist/workgraph/scaffold-apply.d.ts.map +1 -1
- package/dist/workgraph/scaffold-apply.js +14 -5
- package/dist/workgraph/scaffold-apply.js.map +1 -1
- package/migrations/README.md +12 -0
- package/migrations/drizzle-cleo-project/20260928120000_t12341-row-uids/migration.sql +169 -0
- package/migrations/drizzle-cleo-project/20260930160000_t12886-dependency-cycle-guard/migration.sql +76 -0
- package/migrations/drizzle-cleo-project/20260930160000_t12886-dependency-cycle-guard/revert.sql +7 -0
- package/migrations/sync-journal/20260929140000_t12342-sync-clock/migration.sql +42 -0
- package/package.json +13 -13
- package/templates/CLEO-INJECTION.md +2 -2
- package/templates/CLEO-REFERENCE.md +5 -1
package/dist/store/db-helpers.js
CHANGED
|
@@ -7,9 +7,11 @@
|
|
|
7
7
|
* @epic T4454
|
|
8
8
|
*/
|
|
9
9
|
import { ExitCode } from '@cleocode/contracts';
|
|
10
|
-
import { eq, inArray, sql } from 'drizzle-orm';
|
|
10
|
+
import { and, eq, inArray, sql } from 'drizzle-orm';
|
|
11
11
|
import { CleoError } from '../errors.js';
|
|
12
12
|
import { getLogger } from '../logger.js';
|
|
13
|
+
import { rethrowDependencyCycle } from './dependency-cycles.js';
|
|
14
|
+
import { rowUidFillEnabled } from './row-identity-flag.js';
|
|
13
15
|
import * as schema from './tasks-schema.js';
|
|
14
16
|
const log = getLogger('db-helpers');
|
|
15
17
|
/**
|
|
@@ -44,8 +46,80 @@ export async function upsertTask(db, row, archiveFields, allowOrphanParent = fal
|
|
|
44
46
|
* @throws CleoError `ID_COLLISION` when `row.id` is already stored.
|
|
45
47
|
* @task T12724
|
|
46
48
|
*/
|
|
47
|
-
export async function insertNewTask(db, row) {
|
|
48
|
-
await writeTaskRow(db, row, undefined, false, true);
|
|
49
|
+
export async function insertNewTask(db, row, identity = { origin: 'new' }) {
|
|
50
|
+
await writeTaskRow(db, { ...row, ...(await importedIdentity(db, identity, row)) }, undefined, false, true);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* An import or restore named a row this store already holds: same uid AND
|
|
54
|
+
* same birth fingerprint (possibly under another display id after a re-mint,
|
|
55
|
+
* re-keyed, or held in the identity quarantine). Writing it again would
|
|
56
|
+
* duplicate the work, so the caller skips it and reports the conflict
|
|
57
|
+
* (T12806 review).
|
|
58
|
+
*/
|
|
59
|
+
export class SameRowPresentError extends CleoError {
|
|
60
|
+
/** Where the row already is: its display id, or `held` when quarantined. */
|
|
61
|
+
presentAs;
|
|
62
|
+
constructor(taskId, presentAs) {
|
|
63
|
+
super(ExitCode.ID_COLLISION, `Task ${taskId} is already in this store (${presentAs === 'held' ? 'held for sync' : `as ${presentAs}`}): same uid and birth fingerprint; not written again`, { details: { field: 'taskId', actual: taskId, expected: presentAs } });
|
|
64
|
+
this.presentAs = presentAs;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
async function tableExists(db, table) {
|
|
68
|
+
const rows = await db.all(sql `SELECT 1 AS x FROM sqlite_master WHERE type = 'table' AND name = ${table}`);
|
|
69
|
+
return rows.length > 0;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* The identity columns of an IMPORTED task (T12341 spec §5.1, T12806), only
|
|
73
|
+
* while row uids are on (`CLEO_ROW_UID_FILL=1`; off, nothing changes):
|
|
74
|
+
*
|
|
75
|
+
* - the source's `uid` + `birth_fp`, followed through `tasks_uid_aliases`
|
|
76
|
+
* when it was re-keyed here, when no row holds it;
|
|
77
|
+
* - {@link SameRowPresentError} when a row with that uid AND fingerprint is
|
|
78
|
+
* here already (another display id, or held in the quarantine);
|
|
79
|
+
* - otherwise an explicit NULL uid for the deterministic recipe (the TEMP
|
|
80
|
+
* trigger, else the next open), from the row's own key and birth as stored.
|
|
81
|
+
* A source without a creation time is no exception (T12806 review): an
|
|
82
|
+
* unknown-birth fingerprint next to the `created_at` the import wrote would
|
|
83
|
+
* be flagged by every recompute.
|
|
84
|
+
*/
|
|
85
|
+
async function importedIdentity(db, identity, row) {
|
|
86
|
+
if (identity.origin === 'new' || !rowUidFillEnabled())
|
|
87
|
+
return {};
|
|
88
|
+
const fp = identity.birthFp ?? null;
|
|
89
|
+
const carried = identity.uid ?? null;
|
|
90
|
+
if (carried !== null && fp !== null) {
|
|
91
|
+
let uid = carried;
|
|
92
|
+
if (await tableExists(db, 'tasks_uid_aliases')) {
|
|
93
|
+
for (let hop = 0; hop < 32; hop++) {
|
|
94
|
+
const found = await db.all(sql `SELECT new_uid AS uid FROM tasks_uid_aliases
|
|
95
|
+
WHERE entity_table = 'tasks_tasks' AND old_uid = ${uid} AND old_birth_fp = ${fp}`);
|
|
96
|
+
const next = found[0];
|
|
97
|
+
if (!next)
|
|
98
|
+
break;
|
|
99
|
+
uid = next.uid;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
const [holder] = await db
|
|
103
|
+
.select({ id: schema.tasks.id, birthFp: schema.tasks.birthFp })
|
|
104
|
+
.from(schema.tasks)
|
|
105
|
+
.where(eq(schema.tasks.uid, uid))
|
|
106
|
+
.limit(1)
|
|
107
|
+
.all();
|
|
108
|
+
if (holder && holder.birthFp === fp)
|
|
109
|
+
throw new SameRowPresentError(row.id, holder.id);
|
|
110
|
+
if (await tableExists(db, 'tasks_identity_quarantine')) {
|
|
111
|
+
const [held] = await db.all(sql `SELECT 1 AS x FROM tasks_identity_quarantine
|
|
112
|
+
WHERE entity_table = 'tasks_tasks' AND uid = ${uid} AND birth_fp = ${fp}`);
|
|
113
|
+
if (held)
|
|
114
|
+
throw new SameRowPresentError(row.id, 'held');
|
|
115
|
+
}
|
|
116
|
+
if (!holder)
|
|
117
|
+
return { uid, birthFp: fp };
|
|
118
|
+
// Another row holds the uid with another fingerprint: derive instead.
|
|
119
|
+
}
|
|
120
|
+
// A source without a creation time gets the recipe from the row as stored:
|
|
121
|
+
// its identity agrees with its `created_at`, so no recompute flags it.
|
|
122
|
+
return { uid: null, birthFp: null };
|
|
49
123
|
}
|
|
50
124
|
/** The shared write behind {@link upsertTask} and {@link insertNewTask}. */
|
|
51
125
|
async function writeTaskRow(db, row, archiveFields, allowOrphanParent, insertOnly) {
|
|
@@ -151,24 +225,41 @@ export function parseLabels(labelsJson) {
|
|
|
151
225
|
}
|
|
152
226
|
}
|
|
153
227
|
/**
|
|
154
|
-
*
|
|
155
|
-
*
|
|
228
|
+
* Make the {@link schema.taskLabels} junction rows for one task exactly mirror
|
|
229
|
+
* its label set (T11356).
|
|
156
230
|
*
|
|
157
|
-
*
|
|
158
|
-
*
|
|
159
|
-
*
|
|
231
|
+
* A diff write (T12341): only labels that left the set are deleted and only
|
|
232
|
+
* new ones inserted, so a save that keeps the set writes nothing. Deleting and
|
|
233
|
+
* re-inserting a kept label would replicate as a tombstone plus a re-insert of
|
|
234
|
+
* the same row uid, which lets a stale save resurrect a label another device
|
|
235
|
+
* removed. Callers run inside the task transaction, so the read and the writes
|
|
236
|
+
* see one state. Called from {@link upsertTask} and from raw-SQL proposal
|
|
237
|
+
* inserters that bypass it.
|
|
160
238
|
*
|
|
161
239
|
* @param db - Drizzle tasks.db handle.
|
|
162
240
|
* @param taskId - The owning task id.
|
|
163
241
|
* @param labels - The full label set the junction should reflect.
|
|
164
242
|
*/
|
|
165
243
|
export async function updateTaskLabels(db, taskId, labels) {
|
|
166
|
-
|
|
167
|
-
|
|
244
|
+
const want = new Set(labels);
|
|
245
|
+
const current = new Set((await db
|
|
246
|
+
.select({ label: schema.taskLabels.label })
|
|
247
|
+
.from(schema.taskLabels)
|
|
248
|
+
.where(eq(schema.taskLabels.taskId, taskId))
|
|
249
|
+
.all()).map((row) => row.label));
|
|
250
|
+
const removed = [...current].filter((label) => !want.has(label));
|
|
251
|
+
const added = [...want].filter((label) => !current.has(label));
|
|
252
|
+
if (removed.length > 0) {
|
|
253
|
+
await db
|
|
254
|
+
.delete(schema.taskLabels)
|
|
255
|
+
.where(and(eq(schema.taskLabels.taskId, taskId), inArray(schema.taskLabels.label, removed)))
|
|
256
|
+
.run();
|
|
257
|
+
}
|
|
258
|
+
if (added.length === 0)
|
|
168
259
|
return;
|
|
169
260
|
await db
|
|
170
261
|
.insert(schema.taskLabels)
|
|
171
|
-
.values(
|
|
262
|
+
.values(added.map((label) => ({ taskId, label })))
|
|
172
263
|
.onConflictDoNothing()
|
|
173
264
|
.run();
|
|
174
265
|
}
|
|
@@ -263,26 +354,19 @@ export async function appendSessionListItem(db, sessionId, column, value) {
|
|
|
263
354
|
WHERE id = ${sessionId}`);
|
|
264
355
|
}
|
|
265
356
|
/**
|
|
266
|
-
*
|
|
267
|
-
*
|
|
357
|
+
* Make a task's dependency rows equal `depends` (optionally filtered by a set
|
|
358
|
+
* of valid IDs) with a diff write (T12341): only removed edges are deleted and
|
|
359
|
+
* only new ones inserted, so an unchanged set writes nothing and a kept edge is
|
|
360
|
+
* never deleted and re-inserted (see {@link updateTaskLabels}).
|
|
268
361
|
*/
|
|
269
362
|
export async function updateDependencies(db, taskId, depends, validIds) {
|
|
270
|
-
await db
|
|
271
|
-
for (const depId of depends) {
|
|
272
|
-
if (!validIds || validIds.has(depId)) {
|
|
273
|
-
await db
|
|
274
|
-
.insert(schema.taskDependencies)
|
|
275
|
-
.values({ taskId, dependsOn: depId })
|
|
276
|
-
.onConflictDoNothing()
|
|
277
|
-
.run();
|
|
278
|
-
}
|
|
279
|
-
}
|
|
363
|
+
await batchUpdateDependencies(db, [{ taskId, deps: depends }], validIds);
|
|
280
364
|
}
|
|
281
365
|
/**
|
|
282
|
-
* Batch-update dependencies for multiple tasks
|
|
283
|
-
*
|
|
284
|
-
*
|
|
285
|
-
*
|
|
366
|
+
* Batch-update dependencies for multiple tasks with one read and bulk writes.
|
|
367
|
+
* A diff write (T12341): one SELECT of the current edges of these tasks, then
|
|
368
|
+
* one DELETE per task for the edges that left its set, and one INSERT for all
|
|
369
|
+
* new edges. Edges kept in the set are never touched.
|
|
286
370
|
*
|
|
287
371
|
* Callers are responsible for wrapping this in a transaction if needed.
|
|
288
372
|
*/
|
|
@@ -290,23 +374,43 @@ export async function batchUpdateDependencies(db, tasks, validIds) {
|
|
|
290
374
|
if (tasks.length === 0)
|
|
291
375
|
return;
|
|
292
376
|
const allTaskIds = tasks.map((t) => t.taskId);
|
|
293
|
-
|
|
294
|
-
await db
|
|
295
|
-
.
|
|
377
|
+
const current = new Map();
|
|
378
|
+
for (const row of await db
|
|
379
|
+
.select({
|
|
380
|
+
taskId: schema.taskDependencies.taskId,
|
|
381
|
+
dependsOn: schema.taskDependencies.dependsOn,
|
|
382
|
+
})
|
|
383
|
+
.from(schema.taskDependencies)
|
|
296
384
|
.where(inArray(schema.taskDependencies.taskId, allTaskIds))
|
|
297
|
-
.
|
|
298
|
-
|
|
299
|
-
|
|
385
|
+
.all()) {
|
|
386
|
+
const set = current.get(row.taskId) ?? new Set();
|
|
387
|
+
set.add(row.dependsOn);
|
|
388
|
+
current.set(row.taskId, set);
|
|
389
|
+
}
|
|
390
|
+
const added = [];
|
|
300
391
|
for (const { taskId, deps } of tasks) {
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
392
|
+
const want = new Set(deps.filter((depId) => !validIds || validIds.has(depId)));
|
|
393
|
+
const have = current.get(taskId) ?? new Set();
|
|
394
|
+
const removed = [...have].filter((depId) => !want.has(depId));
|
|
395
|
+
if (removed.length > 0) {
|
|
396
|
+
await db
|
|
397
|
+
.delete(schema.taskDependencies)
|
|
398
|
+
.where(and(eq(schema.taskDependencies.taskId, taskId), inArray(schema.taskDependencies.dependsOn, removed)))
|
|
399
|
+
.run();
|
|
305
400
|
}
|
|
401
|
+
for (const depId of want)
|
|
402
|
+
if (!have.has(depId))
|
|
403
|
+
added.push({ taskId, dependsOn: depId });
|
|
306
404
|
}
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
405
|
+
if (added.length > 0) {
|
|
406
|
+
// T12886: the cycle-guard trigger refuses an edge that closes a cycle;
|
|
407
|
+
// rethrowDependencyCycle names the cycle for the caller.
|
|
408
|
+
try {
|
|
409
|
+
await db.insert(schema.taskDependencies).values(added).onConflictDoNothing().run();
|
|
410
|
+
}
|
|
411
|
+
catch (err) {
|
|
412
|
+
rethrowDependencyCycle(db, err, added);
|
|
413
|
+
}
|
|
310
414
|
}
|
|
311
415
|
}
|
|
312
416
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-helpers.js","sourceRoot":"","sources":["../../src/store/db-helpers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"db-helpers.js","sourceRoot":"","sources":["../../src/store/db-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dependency-cycle guard support for `tasks_task_dependencies` (T12886).
|
|
3
|
+
*
|
|
4
|
+
* The guard itself is the pair of BEFORE triggers created by the
|
|
5
|
+
* `drizzle-cleo-project/20260930160000_t12886-dependency-cycle-guard`
|
|
6
|
+
* migration: every writer, raw SQL included, is refused with
|
|
7
|
+
* {@link DEPENDENCY_CYCLE_CODE}. A trigger message must be a literal, so it
|
|
8
|
+
* cannot say WHICH cycle. This module supplies that part:
|
|
9
|
+
*
|
|
10
|
+
* - {@link rethrowDependencyCycle} turns the trigger abort into a
|
|
11
|
+
* {@link CleoError} that names the cycle (`T1 → T2 → T3 → T1`) and says
|
|
12
|
+
* how to fix it. The write chokepoints call it.
|
|
13
|
+
* - {@link detectDependencyCycles} finds cycles already stored (edges written
|
|
14
|
+
* before the guard existed) and proposes the edges to remove, for
|
|
15
|
+
* `cleo doctor dep-cycles`. It never writes.
|
|
16
|
+
*
|
|
17
|
+
* An edge `{ taskId, dependsOn }` means "taskId depends on dependsOn"; a cycle
|
|
18
|
+
* is printed in that direction, each arrow reading "depends on".
|
|
19
|
+
*
|
|
20
|
+
* @module
|
|
21
|
+
* @task T12886
|
|
22
|
+
*/
|
|
23
|
+
import type { NodeSQLiteDatabase } from 'drizzle-orm/node-sqlite';
|
|
24
|
+
import { CleoError } from '../errors.js';
|
|
25
|
+
/** Stable error code raised by the dependency-cycle triggers. */
|
|
26
|
+
export declare const DEPENDENCY_CYCLE_CODE = "E_TASK_DEPENDENCY_CYCLE";
|
|
27
|
+
/** One dependency edge: `taskId` depends on `dependsOn`. */
|
|
28
|
+
export interface DependencyEdge {
|
|
29
|
+
/** The dependent task. */
|
|
30
|
+
readonly taskId: string;
|
|
31
|
+
/** The task it waits for. */
|
|
32
|
+
readonly dependsOn: string;
|
|
33
|
+
}
|
|
34
|
+
/** A proposed repair: remove this edge. */
|
|
35
|
+
export interface DependencyCycleRepair {
|
|
36
|
+
/** The edge to remove. */
|
|
37
|
+
readonly edge: DependencyEdge;
|
|
38
|
+
/** The command that removes it. */
|
|
39
|
+
readonly command: string;
|
|
40
|
+
/** The cycle this removal breaks, in "depends on" order, first id repeated last. */
|
|
41
|
+
readonly breaks: readonly string[];
|
|
42
|
+
}
|
|
43
|
+
/** One strongly connected component of the dependency graph that contains a cycle. */
|
|
44
|
+
export interface DependencyCycleComponent {
|
|
45
|
+
/** Every task in the component, sorted. */
|
|
46
|
+
readonly tasks: readonly string[];
|
|
47
|
+
/** One cycle through the component, first id repeated last. */
|
|
48
|
+
readonly cycle: readonly string[];
|
|
49
|
+
}
|
|
50
|
+
/** Result of {@link detectDependencyCycles}. */
|
|
51
|
+
export interface DependencyCycleReport {
|
|
52
|
+
/** Edges examined. */
|
|
53
|
+
readonly edgeCount: number;
|
|
54
|
+
/** Components that contain at least one cycle (self-dependencies included). */
|
|
55
|
+
readonly components: readonly DependencyCycleComponent[];
|
|
56
|
+
/**
|
|
57
|
+
* Edges whose removal leaves the graph acyclic: the back edges of one
|
|
58
|
+
* depth-first traversal. Not guaranteed minimal (that problem is NP-hard);
|
|
59
|
+
* review before applying.
|
|
60
|
+
*/
|
|
61
|
+
readonly repairPlan: readonly DependencyCycleRepair[];
|
|
62
|
+
}
|
|
63
|
+
/** Render a cycle as `T1 → T2 → T1`. */
|
|
64
|
+
export declare function formatDependencyCycle(cycle: readonly string[]): string;
|
|
65
|
+
/**
|
|
66
|
+
* The cycle that `edge` would close over `existing`, or `null` when it closes none.
|
|
67
|
+
*
|
|
68
|
+
* @param existing - Edges already stored.
|
|
69
|
+
* @param edge - The edge being added.
|
|
70
|
+
* @returns The cycle in "depends on" order, starting and ending at `edge.taskId`.
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```ts
|
|
74
|
+
* findClosedCycle([{ taskId: 'T2', dependsOn: 'T1' }], { taskId: 'T1', dependsOn: 'T2' });
|
|
75
|
+
* // => ['T1', 'T2', 'T1']
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
export declare function findClosedCycle(existing: Iterable<DependencyEdge>, edge: DependencyEdge): string[] | null;
|
|
79
|
+
/**
|
|
80
|
+
* Build the error for an edge that closes `cycle`.
|
|
81
|
+
*
|
|
82
|
+
* @param edge - The refused edge.
|
|
83
|
+
* @param cycle - The cycle it closes, from {@link findClosedCycle}.
|
|
84
|
+
* @returns A {@link CleoError} naming the cycle, with a fix hint.
|
|
85
|
+
*/
|
|
86
|
+
export declare function dependencyCycleError(edge: DependencyEdge, cycle: readonly string[]): CleoError;
|
|
87
|
+
/**
|
|
88
|
+
* True when `err` is the dependency-cycle trigger abort. Drizzle wraps the
|
|
89
|
+
* SQLite error in a `DrizzleQueryError` whose own message is the failed SQL,
|
|
90
|
+
* so the `cause` chain is searched too.
|
|
91
|
+
*/
|
|
92
|
+
export declare function isDependencyCycleAbort(err: unknown): boolean;
|
|
93
|
+
/**
|
|
94
|
+
* Read every stored dependency edge.
|
|
95
|
+
*
|
|
96
|
+
* @param db - Drizzle handle on the project store.
|
|
97
|
+
* @returns All rows of `tasks_task_dependencies`.
|
|
98
|
+
*/
|
|
99
|
+
export declare function readDependencyEdges(db: NodeSQLiteDatabase): DependencyEdge[];
|
|
100
|
+
/**
|
|
101
|
+
* Rethrow a write error, naming the cycle when it is the cycle-guard abort.
|
|
102
|
+
*
|
|
103
|
+
* Call it from the catch of a statement that inserted `attempted`. SQLite
|
|
104
|
+
* rolls back the aborted statement, so the stored edges are the state before
|
|
105
|
+
* it; the attempted edges are replayed over them in order to find the one
|
|
106
|
+
* that closes a cycle.
|
|
107
|
+
*
|
|
108
|
+
* @param db - Drizzle handle the statement ran on.
|
|
109
|
+
* @param err - The caught error.
|
|
110
|
+
* @param attempted - The edges the statement tried to insert, in order.
|
|
111
|
+
* @returns Never; always throws.
|
|
112
|
+
*/
|
|
113
|
+
export declare function rethrowDependencyCycle(db: NodeSQLiteDatabase, err: unknown, attempted: readonly DependencyEdge[]): never;
|
|
114
|
+
/** A dependency edge left out because it would close a cycle. */
|
|
115
|
+
export interface SkippedDependencyEdge {
|
|
116
|
+
/** The edge that was not written. */
|
|
117
|
+
readonly edge: DependencyEdge;
|
|
118
|
+
/** The cycle it would have closed, first id repeated last. */
|
|
119
|
+
readonly cycle: readonly string[];
|
|
120
|
+
/** One-line explanation naming the cycle. */
|
|
121
|
+
readonly message: string;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Insert one edge (ignoring an exact duplicate); when the cycle guard refuses
|
|
125
|
+
* it, leave it out and say why instead of failing.
|
|
126
|
+
*
|
|
127
|
+
* For bulk importers that must keep a record and its other edges when one
|
|
128
|
+
* edge is refused (legacy JSON import). Any other error propagates.
|
|
129
|
+
*
|
|
130
|
+
* @param db - Drizzle handle on the project store.
|
|
131
|
+
* @param edge - The edge to insert.
|
|
132
|
+
* @returns `null` when written (or already present), else what was skipped.
|
|
133
|
+
*/
|
|
134
|
+
export declare function insertDependencyEdgeOrSkipCycle(db: NodeSQLiteDatabase, edge: DependencyEdge): SkippedDependencyEdge | null;
|
|
135
|
+
/**
|
|
136
|
+
* Split planned edges into the ones that can be written and the ones that
|
|
137
|
+
* would close a cycle, replaying them in order over `existing`. Deterministic:
|
|
138
|
+
* of two edges that close a cycle together, the LATER one is dropped. Pure.
|
|
139
|
+
*
|
|
140
|
+
* @param existing - Edges already stored in the target.
|
|
141
|
+
* @param planned - Edges to add, in plan order.
|
|
142
|
+
* @returns The dropped edges with their cycles; every other planned edge is safe.
|
|
143
|
+
*/
|
|
144
|
+
export declare function dropCycleClosingEdges(existing: readonly DependencyEdge[], planned: readonly DependencyEdge[]): SkippedDependencyEdge[];
|
|
145
|
+
/**
|
|
146
|
+
* Find every stored dependency cycle and a repair plan. Pure: never writes.
|
|
147
|
+
*
|
|
148
|
+
* Tarjan's algorithm (iterative, so a long chain cannot overflow the stack)
|
|
149
|
+
* finds the strongly connected components; any component with more than one
|
|
150
|
+
* task, or a task that depends on itself, holds a cycle. The repair plan is
|
|
151
|
+
* the back edges of a depth-first traversal, whose removal leaves the graph
|
|
152
|
+
* acyclic.
|
|
153
|
+
*
|
|
154
|
+
* @param edges - The stored edges.
|
|
155
|
+
* @returns Cyclic components and the edges to remove.
|
|
156
|
+
*
|
|
157
|
+
* @example
|
|
158
|
+
* ```ts
|
|
159
|
+
* const report = detectDependencyCycles(readDependencyEdges(db));
|
|
160
|
+
* for (const r of report.repairPlan) console.log(r.command);
|
|
161
|
+
* ```
|
|
162
|
+
*/
|
|
163
|
+
export declare function detectDependencyCycles(edges: readonly DependencyEdge[]): DependencyCycleReport;
|
|
164
|
+
//# sourceMappingURL=dependency-cycles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-cycles.d.ts","sourceRoot":"","sources":["../../src/store/dependency-cycles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,iEAAiE;AACjE,eAAO,MAAM,qBAAqB,4BAA4B,CAAC;AAE/D,4DAA4D;AAC5D,MAAM,WAAW,cAAc;IAC7B,0BAA0B;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,6BAA6B;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,2CAA2C;AAC3C,MAAM,WAAW,qBAAqB;IACpC,0BAA0B;IAC1B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,mCAAmC;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,oFAAoF;IACpF,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,sFAAsF;AACtF,MAAM,WAAW,wBAAwB;IACvC,2CAA2C;IAC3C,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,+DAA+D;IAC/D,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED,gDAAgD;AAChD,MAAM,WAAW,qBAAqB;IACpC,sBAAsB;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,+EAA+E;IAC/E,QAAQ,CAAC,UAAU,EAAE,SAAS,wBAAwB,EAAE,CAAC;IACzD;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,SAAS,qBAAqB,EAAE,CAAC;CACvD;AAED,wCAAwC;AACxC,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAEtE;AA8CD;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,EAClC,IAAI,EAAE,cAAc,GACnB,MAAM,EAAE,GAAG,IAAI,CAIjB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAoB9F;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAM5D;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,kBAAkB,GAAG,cAAc,EAAE,CAQ5E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,kBAAkB,EACtB,GAAG,EAAE,OAAO,EACZ,SAAS,EAAE,SAAS,cAAc,EAAE,GACnC,KAAK,CASP;AAED,iEAAiE;AACjE,MAAM,WAAW,qBAAqB;IACpC,qCAAqC;IACrC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,8DAA8D;IAC9D,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,6CAA6C;IAC7C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAYD;;;;;;;;;;GAUG;AACH,wBAAgB,+BAA+B,CAC7C,EAAE,EAAE,kBAAkB,EACtB,IAAI,EAAE,cAAc,GACnB,qBAAqB,GAAG,IAAI,CAS9B;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,SAAS,cAAc,EAAE,EACnC,OAAO,EAAE,SAAS,cAAc,EAAE,GACjC,qBAAqB,EAAE,CAgBzB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,SAAS,cAAc,EAAE,GAAG,qBAAqB,CAiH9F"}
|