@cleocode/core 2026.9.23 → 2026.9.25
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 +35 -6
- package/dist/admin/import-tasks.js.map +1 -1
- package/dist/admin/import.d.ts.map +1 -1
- package/dist/admin/import.js +25 -6
- 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/http.d.ts +8 -0
- package/dist/cloud/http.d.ts.map +1 -1
- package/dist/cloud/http.js +8 -1
- package/dist/cloud/http.js.map +1 -1
- package/dist/cloud/index.d.ts +6 -1
- package/dist/cloud/index.d.ts.map +1 -1
- package/dist/cloud/index.js +6 -1
- package/dist/cloud/index.js.map +1 -1
- package/dist/cloud/nexus-auth.d.ts +169 -0
- package/dist/cloud/nexus-auth.d.ts.map +1 -0
- package/dist/cloud/nexus-auth.js +372 -0
- package/dist/cloud/nexus-auth.js.map +1 -0
- package/dist/cloud/nexus-credentials.d.ts +188 -0
- package/dist/cloud/nexus-credentials.d.ts.map +1 -0
- package/dist/cloud/nexus-credentials.js +323 -0
- package/dist/cloud/nexus-credentials.js.map +1 -0
- package/dist/cloud/nexus-link.d.ts +85 -0
- package/dist/cloud/nexus-link.d.ts.map +1 -0
- package/dist/cloud/nexus-link.js +226 -0
- package/dist/cloud/nexus-link.js.map +1 -0
- package/dist/cloud/presence.d.ts +88 -0
- package/dist/cloud/presence.d.ts.map +1 -0
- package/dist/cloud/presence.js +137 -0
- package/dist/cloud/presence.js.map +1 -0
- package/dist/cloud/projects.d.ts +3 -1
- package/dist/cloud/projects.d.ts.map +1 -1
- package/dist/cloud/projects.js +4 -2
- package/dist/cloud/projects.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 +14 -4
- package/dist/crypto/credentials.d.ts.map +1 -1
- package/dist/crypto/credentials.js +15 -1
- package/dist/crypto/credentials.js.map +1 -1
- package/dist/decide/bench/dataset.d.ts +125 -0
- package/dist/decide/bench/dataset.d.ts.map +1 -0
- package/dist/decide/bench/dataset.js +457 -0
- package/dist/decide/bench/dataset.js.map +1 -0
- package/dist/decide/bench/index.d.ts +23 -0
- package/dist/decide/bench/index.d.ts.map +1 -0
- package/dist/decide/bench/index.js +23 -0
- package/dist/decide/bench/index.js.map +1 -0
- package/dist/decide/bench/metrics.d.ts +55 -0
- package/dist/decide/bench/metrics.d.ts.map +1 -0
- package/dist/decide/bench/metrics.js +100 -0
- package/dist/decide/bench/metrics.js.map +1 -0
- package/dist/decide/bench/operation.d.ts +119 -0
- package/dist/decide/bench/operation.d.ts.map +1 -0
- package/dist/decide/bench/operation.js +171 -0
- package/dist/decide/bench/operation.js.map +1 -0
- package/dist/decide/bench/profiles.d.ts +102 -0
- package/dist/decide/bench/profiles.d.ts.map +1 -0
- package/dist/decide/bench/profiles.js +175 -0
- package/dist/decide/bench/profiles.js.map +1 -0
- package/dist/decide/bench/questions.d.ts +40 -0
- package/dist/decide/bench/questions.d.ts.map +1 -0
- package/dist/decide/bench/questions.js +107 -0
- package/dist/decide/bench/questions.js.map +1 -0
- package/dist/decide/bench/report.d.ts +21 -0
- package/dist/decide/bench/report.d.ts.map +1 -0
- package/dist/decide/bench/report.js +125 -0
- package/dist/decide/bench/report.js.map +1 -0
- package/dist/decide/bench/runner.d.ts +208 -0
- package/dist/decide/bench/runner.d.ts.map +1 -0
- package/dist/decide/bench/runner.js +336 -0
- package/dist/decide/bench/runner.js.map +1 -0
- package/dist/decide/bench/source.d.ts +21 -0
- package/dist/decide/bench/source.d.ts.map +1 -0
- package/dist/decide/bench/source.js +67 -0
- package/dist/decide/bench/source.js.map +1 -0
- package/dist/decide/bench/spot-check.d.ts +117 -0
- package/dist/decide/bench/spot-check.d.ts.map +1 -0
- package/dist/decide/bench/spot-check.js +221 -0
- package/dist/decide/bench/spot-check.js.map +1 -0
- package/dist/decide/bench/stats.d.ts +57 -0
- package/dist/decide/bench/stats.d.ts.map +1 -0
- package/dist/decide/bench/stats.js +82 -0
- package/dist/decide/bench/stats.js.map +1 -0
- package/dist/decide/bench/types.d.ts +216 -0
- package/dist/decide/bench/types.d.ts.map +1 -0
- package/dist/decide/bench/types.js +104 -0
- package/dist/decide/bench/types.js.map +1 -0
- package/dist/decide/client.d.ts +35 -1
- package/dist/decide/client.d.ts.map +1 -1
- package/dist/decide/client.js +135 -35
- package/dist/decide/client.js.map +1 -1
- package/dist/decide/credentials.d.ts +177 -17
- package/dist/decide/credentials.d.ts.map +1 -1
- package/dist/decide/credentials.js +505 -41
- package/dist/decide/credentials.js.map +1 -1
- package/dist/decide/index.d.ts +8 -8
- package/dist/decide/index.d.ts.map +1 -1
- package/dist/decide/index.js +8 -8
- package/dist/decide/index.js.map +1 -1
- package/dist/decide/jev-wire.d.ts +55 -19
- package/dist/decide/jev-wire.d.ts.map +1 -1
- package/dist/decide/jev-wire.js +116 -37
- package/dist/decide/jev-wire.js.map +1 -1
- package/dist/decide/operations.d.ts +63 -12
- package/dist/decide/operations.d.ts.map +1 -1
- package/dist/decide/operations.js +116 -58
- package/dist/decide/operations.js.map +1 -1
- package/dist/decide/provider-state.d.ts +85 -12
- package/dist/decide/provider-state.d.ts.map +1 -1
- package/dist/decide/provider-state.js +154 -21
- package/dist/decide/provider-state.js.map +1 -1
- package/dist/decide/provider.d.ts +5 -0
- package/dist/decide/provider.d.ts.map +1 -1
- package/dist/decide/provider.js.map +1 -1
- package/dist/decide/providers.d.ts +15 -2
- package/dist/decide/providers.d.ts.map +1 -1
- package/dist/decide/providers.js +22 -6
- package/dist/decide/providers.js.map +1 -1
- package/dist/decide/sites/registry.d.ts +22 -0
- package/dist/decide/sites/registry.d.ts.map +1 -1
- package/dist/decide/sites/registry.js +23 -0
- package/dist/decide/sites/registry.js.map +1 -1
- package/dist/decide/wizard.d.ts +12 -4
- package/dist/decide/wizard.d.ts.map +1 -1
- package/dist/decide/wizard.js +79 -26
- package/dist/decide/wizard.js.map +1 -1
- package/dist/dispatch/mvi-projection.d.ts +15 -2
- package/dist/dispatch/mvi-projection.d.ts.map +1 -1
- package/dist/dispatch/mvi-projection.js +73 -12
- package/dist/dispatch/mvi-projection.js.map +1 -1
- package/dist/docs/adr-allocator.d.ts +2 -2
- package/dist/docs/adr-allocator.d.ts.map +1 -1
- package/dist/docs/adr-allocator.js +17 -4
- package/dist/docs/adr-allocator.js.map +1 -1
- package/dist/docs/blob-consolidation.js +1 -1
- package/dist/docs/blob-consolidation.js.map +1 -1
- package/dist/docs/display-alias.d.ts +1 -1
- package/dist/docs/display-alias.d.ts.map +1 -1
- package/dist/docs/display-alias.js +7 -4
- package/dist/docs/display-alias.js.map +1 -1
- package/dist/docs/docs-inconsistency-detector.js +1 -1
- package/dist/docs/docs-inconsistency-detector.js.map +1 -1
- package/dist/docs/docs-update.d.ts.map +1 -1
- package/dist/docs/docs-update.js +6 -1
- package/dist/docs/docs-update.js.map +1 -1
- package/dist/docs/export-document.js +18058 -14538
- package/dist/docs/export-document.js.map +3 -3
- package/dist/docs/numbering.js +1 -1
- package/dist/docs/numbering.js.map +1 -1
- package/dist/docs/supersede.d.ts.map +1 -1
- package/dist/docs/supersede.js +6 -3
- package/dist/docs/supersede.js.map +1 -1
- package/dist/docs/version-ssot.js +1 -1
- package/dist/docs/version-ssot.js.map +1 -1
- package/dist/doctor/db-substrate.d.ts.map +1 -1
- package/dist/doctor/db-substrate.js +39 -24
- package/dist/doctor/db-substrate.js.map +1 -1
- package/dist/doctor/knowledge-summary.d.ts +10 -3
- package/dist/doctor/knowledge-summary.d.ts.map +1 -1
- package/dist/doctor/knowledge-summary.js +10 -3
- package/dist/doctor/knowledge-summary.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/project-identity.d.ts +128 -37
- package/dist/doctor/project-identity.d.ts.map +1 -1
- package/dist/doctor/project-identity.js +476 -63
- package/dist/doctor/project-identity.js.map +1 -1
- 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 +31 -0
- package/dist/doctor/row-identity.d.ts.map +1 -0
- package/dist/doctor/row-identity.js +93 -0
- package/dist/doctor/row-identity.js.map +1 -0
- package/dist/doctor/twin-collapse.d.ts +108 -2
- package/dist/doctor/twin-collapse.d.ts.map +1 -1
- package/dist/doctor/twin-collapse.js +309 -7
- package/dist/doctor/twin-collapse.js.map +1 -1
- package/dist/error-catalog.js +2 -2
- package/dist/error-catalog.js.map +1 -1
- package/dist/error-registry.js +1 -1
- package/dist/error-registry.js.map +1 -1
- package/dist/gateway-client/generated/types.gen.d.ts +22 -2
- package/dist/gateway-client/generated/types.gen.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +20 -11
- package/dist/init.js.map +1 -1
- package/dist/inject/index.d.ts.map +1 -1
- package/dist/inject/index.js +2 -3
- package/dist/inject/index.js.map +1 -1
- package/dist/internal.d.ts +5 -4
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +6 -4
- package/dist/internal.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/credential-remove-entry.d.ts +59 -0
- package/dist/llm/credential-remove-entry.d.ts.map +1 -0
- package/dist/llm/credential-remove-entry.js +101 -0
- package/dist/llm/credential-remove-entry.js.map +1 -0
- package/dist/llm/oauth/device-code.d.ts +26 -6
- package/dist/llm/oauth/device-code.d.ts.map +1 -1
- package/dist/llm/oauth/device-code.js +44 -12
- package/dist/llm/oauth/device-code.js.map +1 -1
- package/dist/llm/plugin-facade.js +18202 -14682
- package/dist/llm/plugin-facade.js.map +3 -3
- package/dist/memory/attention.d.ts.map +1 -1
- package/dist/memory/attention.js +5 -3
- package/dist/memory/attention.js.map +1 -1
- package/dist/memory/decisions.d.ts +48 -3
- package/dist/memory/decisions.d.ts.map +1 -1
- package/dist/memory/decisions.js +98 -14
- package/dist/memory/decisions.js.map +1 -1
- 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/learnings.d.ts +6 -6
- 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/patterns.d.ts +4 -4
- 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/migration/manual/T10165-backfill-adr-index.d.ts.map +1 -1
- package/dist/migration/manual/T10165-backfill-adr-index.js +5 -1
- package/dist/migration/manual/T10165-backfill-adr-index.js.map +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/fleet-status.d.ts +83 -0
- package/dist/nexus/fleet-status.d.ts.map +1 -0
- package/dist/nexus/fleet-status.js +414 -0
- package/dist/nexus/fleet-status.js.map +1 -0
- package/dist/nexus/git-state.d.ts +15 -0
- package/dist/nexus/git-state.d.ts.map +1 -1
- package/dist/nexus/git-state.js +77 -3
- package/dist/nexus/git-state.js.map +1 -1
- package/dist/nexus/identity.d.ts.map +1 -1
- package/dist/nexus/identity.js +4 -0
- package/dist/nexus/identity.js.map +1 -1
- package/dist/nexus/index.d.ts +4 -1
- package/dist/nexus/index.d.ts.map +1 -1
- package/dist/nexus/index.js +7 -1
- package/dist/nexus/index.js.map +1 -1
- package/dist/nexus/migrate-json-to-sqlite.d.ts +3 -2
- package/dist/nexus/migrate-json-to-sqlite.d.ts.map +1 -1
- package/dist/nexus/migrate-json-to-sqlite.js +9 -17
- package/dist/nexus/migrate-json-to-sqlite.js.map +1 -1
- package/dist/nexus/ops.d.ts +1 -0
- package/dist/nexus/ops.d.ts.map +1 -1
- package/dist/nexus/project-activity.d.ts +104 -0
- package/dist/nexus/project-activity.d.ts.map +1 -0
- package/dist/nexus/project-activity.js +150 -0
- package/dist/nexus/project-activity.js.map +1 -0
- 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 +2 -2
- package/dist/nexus/query.d.ts.map +1 -1
- package/dist/nexus/query.js +8 -31
- package/dist/nexus/query.js.map +1 -1
- package/dist/nexus/registry-errors.d.ts +61 -0
- package/dist/nexus/registry-errors.d.ts.map +1 -0
- package/dist/nexus/registry-errors.js +85 -0
- package/dist/nexus/registry-errors.js.map +1 -0
- 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 +48 -5
- package/dist/nexus/registry.d.ts.map +1 -1
- package/dist/nexus/registry.js +151 -85
- package/dist/nexus/registry.js.map +1 -1
- package/dist/orchestrate/pivot.d.ts +4 -0
- package/dist/orchestrate/pivot.d.ts.map +1 -1
- package/dist/orchestrate/pivot.js +75 -12
- package/dist/orchestrate/pivot.js.map +1 -1
- package/dist/orchestrate/query-ops.d.ts.map +1 -1
- package/dist/orchestrate/query-ops.js +29 -27
- package/dist/orchestrate/query-ops.js.map +1 -1
- package/dist/orchestrate/spawn-ops.d.ts.map +1 -1
- package/dist/orchestrate/spawn-ops.js +29 -3
- 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/bootstrap.d.ts.map +1 -1
- package/dist/orchestration/bootstrap.js +20 -14
- package/dist/orchestration/bootstrap.js.map +1 -1
- package/dist/orchestration/index.d.ts +15 -1
- package/dist/orchestration/index.d.ts.map +1 -1
- package/dist/orchestration/index.js +25 -6
- package/dist/orchestration/index.js.map +1 -1
- package/dist/orchestration/lead-rollup.d.ts +7 -1
- package/dist/orchestration/lead-rollup.d.ts.map +1 -1
- package/dist/orchestration/lead-rollup.js +6 -3
- package/dist/orchestration/lead-rollup.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 +63 -92
- package/dist/orchestration/spawn-prompt.js.map +1 -1
- package/dist/orchestration/waves.d.ts +21 -10
- package/dist/orchestration/waves.d.ts.map +1 -1
- package/dist/orchestration/waves.js +38 -35
- package/dist/orchestration/waves.js.map +1 -1
- package/dist/paths.d.ts +9 -2
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +30 -13
- package/dist/paths.js.map +1 -1
- package/dist/phases/index.d.ts +1 -1
- package/dist/phases/index.d.ts.map +1 -1
- package/dist/phases/index.js +3 -4
- package/dist/phases/index.js.map +1 -1
- package/dist/project-info.d.ts +40 -3
- package/dist/project-info.d.ts.map +1 -1
- package/dist/project-info.js +74 -6
- package/dist/project-info.js.map +1 -1
- package/dist/project-lifecycle.d.ts +28 -7
- package/dist/project-lifecycle.d.ts.map +1 -1
- package/dist/project-lifecycle.js +114 -47
- package/dist/project-lifecycle.js.map +1 -1
- package/dist/project-scope.d.ts +70 -3
- package/dist/project-scope.d.ts.map +1 -1
- package/dist/project-scope.js +154 -15
- package/dist/project-scope.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/release/open.d.ts +12 -2
- package/dist/release/open.d.ts.map +1 -1
- package/dist/release/open.js +32 -3
- package/dist/release/open.js.map +1 -1
- package/dist/release/preflight-skip.d.ts +73 -0
- package/dist/release/preflight-skip.d.ts.map +1 -0
- package/dist/release/preflight-skip.js +254 -0
- package/dist/release/preflight-skip.js.map +1 -0
- package/dist/render/decide/index.d.ts +51 -0
- package/dist/render/decide/index.d.ts.map +1 -0
- package/dist/render/decide/index.js +289 -0
- package/dist/render/decide/index.js.map +1 -0
- package/dist/render/index.d.ts +1 -0
- package/dist/render/index.d.ts.map +1 -1
- package/dist/render/index.js +1 -0
- package/dist/render/index.js.map +1 -1
- package/dist/render/nexus/graph/index.d.ts +5 -0
- package/dist/render/nexus/graph/index.d.ts.map +1 -1
- package/dist/render/nexus/graph/index.js +53 -0
- package/dist/render/nexus/graph/index.js.map +1 -1
- package/dist/scaffold/ensure-config.d.ts +14 -6
- package/dist/scaffold/ensure-config.d.ts.map +1 -1
- package/dist/scaffold/ensure-config.js +39 -17
- package/dist/scaffold/ensure-config.js.map +1 -1
- package/dist/scaffold/project-identity.d.ts +115 -23
- package/dist/scaffold/project-identity.d.ts.map +1 -1
- package/dist/scaffold/project-identity.js +196 -44
- package/dist/scaffold/project-identity.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 +18221 -14701
- package/dist/selfimprove/fix-gen.js.map +3 -3
- package/dist/sentient/cross-project-hygiene.d.ts +17 -6
- package/dist/sentient/cross-project-hygiene.d.ts.map +1 -1
- package/dist/sentient/cross-project-hygiene.js +22 -11
- 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 +13 -4
- package/dist/session/engine-ops.d.ts.map +1 -1
- package/dist/session/engine-ops.js +38 -45
- package/dist/session/engine-ops.js.map +1 -1
- package/dist/sessions/briefing.d.ts +7 -3
- package/dist/sessions/briefing.d.ts.map +1 -1
- package/dist/sessions/briefing.js +10 -10
- package/dist/sessions/briefing.js.map +1 -1
- package/dist/sessions/drift-watchdog.d.ts.map +1 -1
- package/dist/sessions/drift-watchdog.js +11 -19
- package/dist/sessions/drift-watchdog.js.map +1 -1
- package/dist/sessions/focus-state-store.d.ts +103 -26
- package/dist/sessions/focus-state-store.d.ts.map +1 -1
- package/dist/sessions/focus-state-store.js +166 -37
- package/dist/sessions/focus-state-store.js.map +1 -1
- package/dist/sessions/handoff.d.ts.map +1 -1
- package/dist/sessions/handoff.js +9 -18
- package/dist/sessions/handoff.js.map +1 -1
- package/dist/sessions/index.d.ts +4 -2
- package/dist/sessions/index.d.ts.map +1 -1
- package/dist/sessions/index.js +35 -6
- package/dist/sessions/index.js.map +1 -1
- package/dist/sessions/session-drift.d.ts.map +1 -1
- package/dist/sessions/session-drift.js +4 -2
- package/dist/sessions/session-drift.js.map +1 -1
- package/dist/sessions/session-view.d.ts +8 -1
- package/dist/sessions/session-view.d.ts.map +1 -1
- package/dist/sessions/session-view.js +9 -2
- package/dist/sessions/session-view.js.map +1 -1
- package/dist/setup/config-json-merge.d.ts.map +1 -1
- package/dist/setup/config-json-merge.js +1 -0
- package/dist/setup/config-json-merge.js.map +1 -1
- package/dist/setup/index.d.ts +4 -2
- package/dist/setup/index.d.ts.map +1 -1
- package/dist/setup/index.js +6 -2
- package/dist/setup/index.js.map +1 -1
- package/dist/setup/sections/nexus-account.d.ts +32 -0
- package/dist/setup/sections/nexus-account.d.ts.map +1 -0
- package/dist/setup/sections/nexus-account.js +64 -0
- package/dist/setup/sections/nexus-account.js.map +1 -0
- package/dist/setup/wizard.d.ts +1 -1
- package/dist/setup/wizard.d.ts.map +1 -1
- package/dist/setup/wizard.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.d.ts.map +1 -1
- package/dist/skills/orchestrator/startup.js +18 -31
- 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.map +1 -1
- package/dist/snapshot/index.js +60 -53
- package/dist/snapshot/index.js.map +1 -1
- package/dist/spawn/agent-identity.d.ts +33 -1
- package/dist/spawn/agent-identity.d.ts.map +1 -1
- package/dist/spawn/agent-identity.js +53 -1
- package/dist/spawn/agent-identity.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/spawn/index.d.ts +1 -1
- package/dist/spawn/index.d.ts.map +1 -1
- package/dist/spawn/index.js +1 -1
- package/dist/spawn/index.js.map +1 -1
- package/dist/stats/index.d.ts.map +1 -1
- package/dist/stats/index.js +3 -4
- package/dist/stats/index.js.map +1 -1
- package/dist/status/index.d.ts +12 -3
- package/dist/status/index.d.ts.map +1 -1
- package/dist/status/index.js +47 -5
- package/dist/status/index.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/attachment-repair.d.ts.map +1 -1
- package/dist/store/attachment-repair.js +42 -3
- package/dist/store/attachment-repair.js.map +1 -1
- package/dist/store/attachment-store.d.ts.map +1 -1
- package/dist/store/attachment-store.js +30 -46
- package/dist/store/attachment-store.js.map +1 -1
- package/dist/store/backup-recover-brain.d.ts +4 -0
- package/dist/store/backup-recover-brain.d.ts.map +1 -1
- package/dist/store/backup-recover-brain.js +2 -0
- package/dist/store/backup-recover-brain.js.map +1 -1
- package/dist/store/backup-recover.d.ts +9 -0
- package/dist/store/backup-recover.d.ts.map +1 -1
- package/dist/store/backup-recover.js +28 -1
- package/dist/store/backup-recover.js.map +1 -1
- package/dist/store/backup-sidecar.d.ts +115 -2
- package/dist/store/backup-sidecar.d.ts.map +1 -1
- package/dist/store/backup-sidecar.js +263 -3
- package/dist/store/backup-sidecar.js.map +1 -1
- package/dist/store/blob-keep.d.ts +135 -0
- package/dist/store/blob-keep.d.ts.map +1 -0
- package/dist/store/blob-keep.js +283 -0
- package/dist/store/blob-keep.js.map +1 -0
- 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/converters.d.ts.map +1 -1
- package/dist/store/converters.js +11 -0
- package/dist/store/converters.js.map +1 -1
- package/dist/store/credential-transfer.d.ts +37 -5
- package/dist/store/credential-transfer.d.ts.map +1 -1
- package/dist/store/credential-transfer.js +76 -18
- package/dist/store/credential-transfer.js.map +1 -1
- package/dist/store/data-accessor.d.ts +1 -1
- package/dist/store/data-accessor.d.ts.map +1 -1
- package/dist/store/data-accessor.js.map +1 -1
- package/dist/store/db-helpers.d.ts +35 -11
- package/dist/store/db-helpers.d.ts.map +1 -1
- package/dist/store/db-helpers.js +107 -38
- package/dist/store/db-helpers.js.map +1 -1
- package/dist/store/display-id-alias.d.ts +529 -0
- package/dist/store/display-id-alias.d.ts.map +1 -0
- package/dist/store/display-id-alias.js +1063 -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 +21 -0
- package/dist/store/dual-scope-db.js.map +1 -1
- package/dist/store/exodus/on-open.d.ts.map +1 -1
- package/dist/store/exodus/on-open.js +35 -0
- package/dist/store/exodus/on-open.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/exodus/runtime-targets.d.ts +3 -3
- package/dist/store/exodus/runtime-targets.js +3 -3
- package/dist/store/import-remap.d.ts +12 -1
- package/dist/store/import-remap.d.ts.map +1 -1
- package/dist/store/import-remap.js +14 -0
- package/dist/store/import-remap.js.map +1 -1
- package/dist/store/legacy-tasks-lineage.d.ts +3 -1
- package/dist/store/legacy-tasks-lineage.d.ts.map +1 -1
- package/dist/store/legacy-tasks-lineage.js +22 -3
- package/dist/store/legacy-tasks-lineage.js.map +1 -1
- package/dist/store/memory-accessor.js +1 -1
- package/dist/store/memory-accessor.js.map +1 -1
- package/dist/store/migration-manager.d.ts +61 -0
- package/dist/store/migration-manager.d.ts.map +1 -1
- package/dist/store/migration-manager.js +102 -4
- package/dist/store/migration-manager.js.map +1 -1
- package/dist/store/nexus-validation-schemas.d.ts +64 -0
- package/dist/store/nexus-validation-schemas.d.ts.map +1 -1
- package/dist/store/portable-bundle-import.d.ts +8 -0
- package/dist/store/portable-bundle-import.d.ts.map +1 -1
- package/dist/store/portable-bundle-import.js +10 -0
- package/dist/store/portable-bundle-import.js.map +1 -1
- package/dist/store/portable-bundle-scan.d.ts.map +1 -1
- package/dist/store/portable-bundle-scan.js +1 -0
- package/dist/store/portable-bundle-scan.js.map +1 -1
- package/dist/store/portable-bundle.d.ts.map +1 -1
- package/dist/store/portable-bundle.js +15 -14
- package/dist/store/portable-bundle.js.map +1 -1
- package/dist/store/pre-repair-snapshot.d.ts +4 -1
- package/dist/store/pre-repair-snapshot.d.ts.map +1 -1
- package/dist/store/pre-repair-snapshot.js +5 -1
- package/dist/store/pre-repair-snapshot.js.map +1 -1
- package/dist/store/regenerators.d.ts +4 -2
- package/dist/store/regenerators.d.ts.map +1 -1
- package/dist/store/regenerators.js +7 -3
- package/dist/store/regenerators.js.map +1 -1
- package/dist/store/repair-malformed-dbs.d.ts +4 -0
- package/dist/store/repair-malformed-dbs.d.ts.map +1 -1
- package/dist/store/repair-malformed-dbs.js +3 -0
- package/dist/store/repair-malformed-dbs.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 +198 -0
- package/dist/store/row-identity-registry.js.map +1 -0
- package/dist/store/row-identity.d.ts +390 -0
- package/dist/store/row-identity.d.ts.map +1 -0
- package/dist/store/row-identity.js +1240 -0
- package/dist/store/row-identity.js.map +1 -0
- package/dist/store/safety-data-accessor.d.ts +10 -3
- package/dist/store/safety-data-accessor.d.ts.map +1 -1
- package/dist/store/safety-data-accessor.js +15 -4
- 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 +49 -1
- package/dist/store/schema/cleo-global/nexus.d.ts.map +1 -1
- package/dist/store/schema/cleo-global/nexus.js +17 -0
- package/dist/store/schema/cleo-global/nexus.js.map +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 +17 -1
- package/dist/store/schema/cleo-project/docs.d.ts.map +1 -1
- package/dist/store/schema/cleo-project/docs.js +10 -0
- package/dist/store/schema/cleo-project/docs.js.map +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 +263 -7
- package/dist/store/schema/cleo-project/tasks-core.d.ts.map +1 -1
- package/dist/store/schema/cleo-project/tasks-core.js +77 -2
- package/dist/store/schema/cleo-project/tasks-core.js.map +1 -1
- package/dist/store/schema/cleo-shared/brain.d.ts +7 -7
- 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 +6 -6
- package/dist/store/schema/nexus-schema.d.ts +51 -3
- package/dist/store/schema/nexus-schema.d.ts.map +1 -1
- package/dist/store/schema/nexus-schema.js +28 -7
- package/dist/store/schema/nexus-schema.js.map +1 -1
- 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 +65 -0
- package/dist/store/session-store.d.ts.map +1 -1
- package/dist/store/session-store.js +108 -7
- 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 +4 -19
- package/dist/store/split-brain-import.js.map +1 -1
- package/dist/store/sqlite-data-accessor.d.ts +279 -2
- package/dist/store/sqlite-data-accessor.d.ts.map +1 -1
- package/dist/store/sqlite-data-accessor.js +789 -91
- package/dist/store/sqlite-data-accessor.js.map +1 -1
- package/dist/store/sqlite.d.ts +15 -3
- package/dist/store/sqlite.d.ts.map +1 -1
- package/dist/store/sqlite.js +52 -20
- package/dist/store/sqlite.js.map +1 -1
- package/dist/store/store-write-guard.d.ts +9 -3
- package/dist/store/store-write-guard.d.ts.map +1 -1
- package/dist/store/store-write-guard.js +25 -4
- package/dist/store/store-write-guard.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 +11 -9
- package/dist/store/table-classification.d.ts.map +1 -1
- package/dist/store/table-classification.js +127 -33
- package/dist/store/table-classification.js.map +1 -1
- package/dist/store/task-claim.d.ts +144 -0
- package/dist/store/task-claim.d.ts.map +1 -0
- package/dist/store/task-claim.js +195 -0
- package/dist/store/task-claim.js.map +1 -0
- package/dist/store/task-version.d.ts +43 -5
- package/dist/store/task-version.d.ts.map +1 -1
- package/dist/store/task-version.js +113 -17
- package/dist/store/task-version.js.map +1 -1
- package/dist/store/tasks-schema.d.ts +2 -0
- package/dist/store/tasks-schema.d.ts.map +1 -1
- package/dist/store/tasks-schema.js +1 -0
- package/dist/store/tasks-schema.js.map +1 -1
- package/dist/store/tasks-sqlite.d.ts.map +1 -1
- package/dist/store/tasks-sqlite.js +10 -2
- package/dist/store/tasks-sqlite.js.map +1 -1
- package/dist/store/twin-collapse.d.ts +450 -22
- package/dist/store/twin-collapse.d.ts.map +1 -1
- package/dist/store/twin-collapse.js +1552 -49
- package/dist/store/twin-collapse.js.map +1 -1
- package/dist/store/umbrella-data-accessor.d.ts +10 -3
- package/dist/store/umbrella-data-accessor.d.ts.map +1 -1
- package/dist/store/umbrella-data-accessor.js +14 -4
- package/dist/store/umbrella-data-accessor.js.map +1 -1
- package/dist/store/validation-schemas.d.ts +402 -50
- package/dist/store/validation-schemas.d.ts.map +1 -1
- package/dist/store/with-retry.d.ts +36 -0
- package/dist/store/with-retry.d.ts.map +1 -1
- package/dist/store/with-retry.js +51 -0
- package/dist/store/with-retry.js.map +1 -1
- package/dist/store/worktree-build-guard.d.ts +13 -4
- package/dist/store/worktree-build-guard.d.ts.map +1 -1
- package/dist/store/worktree-build-guard.js +21 -10
- package/dist/store/worktree-build-guard.js.map +1 -1
- package/dist/store/worktree-isolation-guard.d.ts +121 -10
- package/dist/store/worktree-isolation-guard.d.ts.map +1 -1
- package/dist/store/worktree-isolation-guard.js +155 -34
- package/dist/store/worktree-isolation-guard.js.map +1 -1
- package/dist/system/backup.d.ts +7 -0
- package/dist/system/backup.d.ts.map +1 -1
- package/dist/system/backup.js +5 -0
- package/dist/system/backup.js.map +1 -1
- package/dist/system/health.d.ts.map +1 -1
- package/dist/system/health.js +6 -1
- package/dist/system/health.js.map +1 -1
- package/dist/system/inject-generate.d.ts.map +1 -1
- package/dist/system/inject-generate.js +23 -10
- package/dist/system/inject-generate.js.map +1 -1
- package/dist/system/project-health.d.ts +17 -2
- package/dist/system/project-health.d.ts.map +1 -1
- package/dist/system/project-health.js +19 -6
- package/dist/system/project-health.js.map +1 -1
- package/dist/task-tools/index.d.ts +1 -1
- package/dist/task-tools/index.d.ts.map +1 -1
- package/dist/task-tools/index.js +1 -1
- package/dist/task-tools/index.js.map +1 -1
- package/dist/task-tools/score-task-priority.d.ts +38 -0
- package/dist/task-tools/score-task-priority.d.ts.map +1 -1
- package/dist/task-tools/score-task-priority.js +51 -0
- package/dist/task-tools/score-task-priority.js.map +1 -1
- package/dist/task-work/claims.d.ts +215 -0
- package/dist/task-work/claims.d.ts.map +1 -0
- package/dist/task-work/claims.js +272 -0
- package/dist/task-work/claims.js.map +1 -0
- package/dist/task-work/index.d.ts +47 -3
- package/dist/task-work/index.d.ts.map +1 -1
- package/dist/task-work/index.js +74 -41
- 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 +51 -4
- package/dist/tasks/add.js.map +1 -1
- package/dist/tasks/analyze.d.ts.map +1 -1
- package/dist/tasks/analyze.js +3 -4
- 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/change-set.d.ts +5 -0
- package/dist/tasks/change-set.d.ts.map +1 -1
- package/dist/tasks/change-set.js +59 -3
- package/dist/tasks/change-set.js.map +1 -1
- package/dist/tasks/complete.d.ts +16 -0
- package/dist/tasks/complete.d.ts.map +1 -1
- package/dist/tasks/complete.js +33 -8
- 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/component-pr.d.ts +162 -1
- package/dist/tasks/component-pr.d.ts.map +1 -1
- package/dist/tasks/component-pr.js +560 -59
- package/dist/tasks/component-pr.js.map +1 -1
- package/dist/tasks/done-record.d.ts +14 -1
- package/dist/tasks/done-record.d.ts.map +1 -1
- package/dist/tasks/done-record.js +37 -0
- package/dist/tasks/done-record.js.map +1 -1
- package/dist/tasks/duplicate-detector.d.ts +20 -1
- package/dist/tasks/duplicate-detector.d.ts.map +1 -1
- package/dist/tasks/duplicate-detector.js +10 -2
- package/dist/tasks/duplicate-detector.js.map +1 -1
- package/dist/tasks/engine-wrap-ops.d.ts +19 -10
- package/dist/tasks/engine-wrap-ops.d.ts.map +1 -1
- package/dist/tasks/engine-wrap-ops.js +38 -10
- package/dist/tasks/engine-wrap-ops.js.map +1 -1
- package/dist/tasks/evidence.d.ts.map +1 -1
- package/dist/tasks/evidence.js +14 -3
- package/dist/tasks/evidence.js.map +1 -1
- package/dist/tasks/graph-ops.d.ts +9 -2
- package/dist/tasks/graph-ops.d.ts.map +1 -1
- package/dist/tasks/graph-ops.js +24 -32
- package/dist/tasks/graph-ops.js.map +1 -1
- package/dist/tasks/plan.d.ts.map +1 -1
- package/dist/tasks/plan.js +16 -60
- package/dist/tasks/plan.js.map +1 -1
- package/dist/tasks/task-context.d.ts.map +1 -1
- package/dist/tasks/task-context.js +13 -0
- 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 +21 -12
- package/dist/tasks/task-import.js.map +1 -1
- package/dist/tasks/task-next.d.ts +25 -2
- package/dist/tasks/task-next.d.ts.map +1 -1
- package/dist/tasks/task-next.js +32 -13
- package/dist/tasks/task-next.js.map +1 -1
- package/dist/tasks/update.d.ts.map +1 -1
- package/dist/tasks/update.js +7 -5
- package/dist/tasks/update.js.map +1 -1
- package/dist/upgrade.d.ts +1 -1
- package/dist/upgrade.d.ts.map +1 -1
- package/dist/upgrade.js +48 -9
- package/dist/upgrade.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/doctor/checks.d.ts +20 -6
- package/dist/validation/doctor/checks.d.ts.map +1 -1
- package/dist/validation/doctor/checks.js +51 -8
- package/dist/validation/doctor/checks.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/validation/validate-ops.d.ts.map +1 -1
- package/dist/validation/validate-ops.js +2 -3
- package/dist/validation/validate-ops.js.map +1 -1
- package/migrations/README.md +12 -0
- package/migrations/drizzle-cleo-global/20260929010000_t12512-registry-probed-opened/migration.sql +35 -0
- package/migrations/drizzle-cleo-global/20260929020000_t12721-git-state-head-committed-at/migration.sql +25 -0
- package/migrations/drizzle-cleo-project/20260928120000_t12341-row-uids/migration.sql +169 -0
- package/migrations/drizzle-cleo-project/20260929000000_t12535-docs-attachments-union-shape/migration.sql +21 -0
- package/migrations/drizzle-cleo-project/20260929120000_t12502-task-claim-leases/migration.sql +77 -0
- package/migrations/drizzle-cleo-project/20260929130000_t12736-claim-lease-iso-repair/migration.sql +37 -0
- package/migrations/sync-journal/20260929140000_t12342-sync-clock/migration.sql +42 -0
- package/package.json +23 -13
- package/schemas/project-info.schema.json +10 -4
- package/templates/CLEO-INJECTION.md +1 -1
- package/templates/CLEO-REFERENCE.md +7 -3
- package/templates/cleo-gitignore +11 -0
- package/templates/workflows/release-prepare.yml.tmpl +156 -10
package/dist/status/index.d.ts
CHANGED
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Implements the data layer for `cleo status`: aggregates identity,
|
|
5
5
|
* credentials, config-tier state, session, harness, and sentient-daemon
|
|
6
|
-
* state into a single typed envelope without
|
|
7
|
-
*
|
|
6
|
+
* state into a single typed envelope without credential seeding. The only
|
|
7
|
+
* network call is the Cleo Nexus session check, made only when a Nexus token
|
|
8
|
+
* is stored and bounded by a short timeout (T12712). Read-only; safe to
|
|
9
|
+
* invoke on every CLI tick.
|
|
8
10
|
*
|
|
9
11
|
* Spec: `docs/plans/E-CONFIG-AUTH-UNIFY.md` §3.3.6 (`CleoStatus` interface)
|
|
10
12
|
* and §5.3 T-E3-4 (acceptance criteria).
|
|
@@ -17,6 +19,7 @@
|
|
|
17
19
|
* @epic T9402 (E-CONFIG-AUTH-UNIFY E3)
|
|
18
20
|
* @task T9423 (T-E3-4)
|
|
19
21
|
*/
|
|
22
|
+
import type { NexusAccountStatus } from '@cleocode/contracts';
|
|
20
23
|
import type { SeederSourceId } from '../llm/credential-seeders/index.js';
|
|
21
24
|
import type { StoredAuthType } from '../llm/credentials-store.js';
|
|
22
25
|
import type { ModelTransport } from '../llm/types-config.js';
|
|
@@ -88,13 +91,19 @@ export interface CleoStatus {
|
|
|
88
91
|
lastTickAt: number | null;
|
|
89
92
|
killSwitchActive: boolean;
|
|
90
93
|
};
|
|
94
|
+
/**
|
|
95
|
+
* Cleo Nexus account sessions: one row per stored API origin, or one
|
|
96
|
+
* "not signed in" row. A 401 from the API reads as `expired` (T12712).
|
|
97
|
+
*/
|
|
98
|
+
nexusAccount: NexusAccountStatus[];
|
|
91
99
|
}
|
|
92
100
|
/**
|
|
93
101
|
* Aggregate the full {@link CleoStatus} snapshot.
|
|
94
102
|
*
|
|
95
103
|
* Reads identity, credentials, config-tier state, session, harness, and
|
|
96
104
|
* sentient-daemon state in parallel and folds them into one envelope. No
|
|
97
|
-
*
|
|
105
|
+
* credential seeding (the pool's `list()` is pure-read); the only network
|
|
106
|
+
* call is the bounded Nexus session check, made only when a token is stored.
|
|
98
107
|
* Sub-blocks degrade independently — a broken session store does not
|
|
99
108
|
* suppress the credentials block, etc.
|
|
100
109
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/status/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/status/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAI9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAoB,MAAM,6BAA6B,CAAC;AACpF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAU7D;;;;;;;;GAQG;AACH,MAAM,WAAW,qBAAqB;IACpC,kDAAkD;IAClD,QAAQ,EAAE,cAAc,CAAC;IACzB,uEAAuE;IACvE,MAAM,EAAE,cAAc,GAAG,MAAM,CAAC;IAChC,4IAA4I;IAC5I,aAAa,EAAE,OAAO,CAAC;IACvB,iCAAiC;IACjC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,8EAA8E;IAC9E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qEAAqE;IACrE,UAAU,CAAC,EAAE,IAAI,GAAG,WAAW,GAAG,SAAS,CAAC;IAC5C,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,uGAAuG;IACvG,QAAQ,EAAE;QACR,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,QAAQ,EAAE,OAAO,CAAC;QAClB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;KAC7B,CAAC;IACF,0FAA0F;IAC1F,WAAW,EAAE,qBAAqB,EAAE,CAAC;IACrC,0EAA0E;IAC1E,MAAM,EAAE;QACN,gBAAgB,EAAE,MAAM,CAAC;QACzB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;QACjC,gBAAgB,EAAE,MAAM,CAAC;QACzB,yBAAyB,EAAE,OAAO,CAAC;QACnC,eAAe,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC;IACF,8BAA8B;IAC9B,OAAO,EAAE;QACP,MAAM,EAAE,OAAO,CAAC;QAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B,CAAC;IACF,oEAAoE;IACpE,OAAO,EAAE;QACP,MAAM,EAAE,IAAI,GAAG,aAAa,GAAG,SAAS,CAAC;QACzC,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IACF,gCAAgC;IAChC,MAAM,EAAE;QACN,OAAO,EAAE,OAAO,CAAC;QACjB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,gBAAgB,EAAE,OAAO,CAAC;KAC3B,CAAC;IACF;;;OAGG;IACH,YAAY,EAAE,kBAAkB,EAAE,CAAC;CACpC;AAuVD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC,CAwBzD"}
|
package/dist/status/index.js
CHANGED
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Implements the data layer for `cleo status`: aggregates identity,
|
|
5
5
|
* credentials, config-tier state, session, harness, and sentient-daemon
|
|
6
|
-
* state into a single typed envelope without
|
|
7
|
-
*
|
|
6
|
+
* state into a single typed envelope without credential seeding. The only
|
|
7
|
+
* network call is the Cleo Nexus session check, made only when a Nexus token
|
|
8
|
+
* is stored and bounded by a short timeout (T12712). Read-only; safe to
|
|
9
|
+
* invoke on every CLI tick.
|
|
8
10
|
*
|
|
9
11
|
* Spec: `docs/plans/E-CONFIG-AUTH-UNIFY.md` §3.3.6 (`CleoStatus` interface)
|
|
10
12
|
* and §5.3 T-E3-4 (acceptance criteria).
|
|
@@ -18,6 +20,7 @@
|
|
|
18
20
|
* @task T9423 (T-E3-4)
|
|
19
21
|
*/
|
|
20
22
|
import { existsSync } from 'node:fs';
|
|
23
|
+
import { getNexusAccountStatus } from '../cloud/nexus-auth.js';
|
|
21
24
|
import { getCleoIdentityPath } from '../identity/cleo-identity.js';
|
|
22
25
|
import { getCredentialPool } from '../llm/credential-pool.js';
|
|
23
26
|
import { getConfigPath, getGlobalConfigPath, getProjectRoot } from '../paths.js';
|
|
@@ -286,13 +289,34 @@ async function buildSessionBlock(projectRoot) {
|
|
|
286
289
|
return {
|
|
287
290
|
active: true,
|
|
288
291
|
sessionId: active.id,
|
|
289
|
-
focusedTask:
|
|
292
|
+
focusedTask: await readCallerFocus(projectRoot),
|
|
290
293
|
};
|
|
291
294
|
}
|
|
292
295
|
catch {
|
|
293
296
|
return { active: false, sessionId: null, focusedTask: null };
|
|
294
297
|
}
|
|
295
298
|
}
|
|
299
|
+
/**
|
|
300
|
+
* The caller's live focused task (T12501): THE focus-key rule plus the
|
|
301
|
+
* done-task filter. Never the session row's `taskWork`, which is set at
|
|
302
|
+
* start/spawn, never updated, and skips the filter (T12684). `null` when the
|
|
303
|
+
* focus cannot be read.
|
|
304
|
+
*
|
|
305
|
+
* @internal
|
|
306
|
+
*/
|
|
307
|
+
async function readCallerFocus(projectRoot) {
|
|
308
|
+
try {
|
|
309
|
+
const [{ getTaskAccessor }, { readLiveFocus, resolveFocusSessionId }] = await Promise.all([
|
|
310
|
+
import('../store/data-accessor.js'),
|
|
311
|
+
import('../sessions/focus-state-store.js'),
|
|
312
|
+
]);
|
|
313
|
+
const acc = await getTaskAccessor(projectRoot);
|
|
314
|
+
return (await readLiveFocus(acc, await resolveFocusSessionId(projectRoot))).currentTask;
|
|
315
|
+
}
|
|
316
|
+
catch {
|
|
317
|
+
return null;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
296
320
|
/**
|
|
297
321
|
* Build the {@link CleoStatus.daemon} block from the sentient daemon API.
|
|
298
322
|
* `lastTickAt` is normalised from the daemon's ISO-8601 timestamp to epoch
|
|
@@ -315,6 +339,21 @@ async function buildDaemonBlock(projectRoot) {
|
|
|
315
339
|
return { running: false, pid: null, lastTickAt: null, killSwitchActive: false };
|
|
316
340
|
}
|
|
317
341
|
}
|
|
342
|
+
/**
|
|
343
|
+
* Build the {@link CleoStatus.nexusAccount} block. Checks stored sessions live
|
|
344
|
+
* (bounded by `NEXUS_STATUS_TIMEOUT_MS`); with no stored token it makes no
|
|
345
|
+
* network call. Never throws.
|
|
346
|
+
*
|
|
347
|
+
* @internal
|
|
348
|
+
*/
|
|
349
|
+
async function buildNexusAccountBlock() {
|
|
350
|
+
try {
|
|
351
|
+
return await getNexusAccountStatus();
|
|
352
|
+
}
|
|
353
|
+
catch {
|
|
354
|
+
return [];
|
|
355
|
+
}
|
|
356
|
+
}
|
|
318
357
|
// ---------------------------------------------------------------------------
|
|
319
358
|
// Public entry point
|
|
320
359
|
// ---------------------------------------------------------------------------
|
|
@@ -323,7 +362,8 @@ async function buildDaemonBlock(projectRoot) {
|
|
|
323
362
|
*
|
|
324
363
|
* Reads identity, credentials, config-tier state, session, harness, and
|
|
325
364
|
* sentient-daemon state in parallel and folds them into one envelope. No
|
|
326
|
-
*
|
|
365
|
+
* credential seeding (the pool's `list()` is pure-read); the only network
|
|
366
|
+
* call is the bounded Nexus session check, made only when a token is stored.
|
|
327
367
|
* Sub-blocks degrade independently — a broken session store does not
|
|
328
368
|
* suppress the credentials block, etc.
|
|
329
369
|
*
|
|
@@ -349,13 +389,14 @@ async function buildDaemonBlock(projectRoot) {
|
|
|
349
389
|
*/
|
|
350
390
|
export async function getCleoStatus() {
|
|
351
391
|
const projectRoot = getProjectRoot();
|
|
352
|
-
const [identity, credentials, config, session, harness, daemon] = await Promise.all([
|
|
392
|
+
const [identity, credentials, config, session, harness, daemon, nexusAccount] = await Promise.all([
|
|
353
393
|
buildIdentityBlock(projectRoot),
|
|
354
394
|
buildCredentialsBlock(),
|
|
355
395
|
buildConfigBlock(projectRoot),
|
|
356
396
|
buildSessionBlock(projectRoot),
|
|
357
397
|
detectHarness(),
|
|
358
398
|
buildDaemonBlock(projectRoot),
|
|
399
|
+
buildNexusAccountBlock(),
|
|
359
400
|
]);
|
|
360
401
|
return {
|
|
361
402
|
identity,
|
|
@@ -364,6 +405,7 @@ export async function getCleoStatus() {
|
|
|
364
405
|
session,
|
|
365
406
|
harness,
|
|
366
407
|
daemon,
|
|
408
|
+
nexusAccount,
|
|
367
409
|
};
|
|
368
410
|
}
|
|
369
411
|
//# sourceMappingURL=index.js.map
|
package/dist/status/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/status/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/status/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Evidence ↔ AC binding pruning — the single write path that removes
|
|
3
|
+
* `tasks_evidence_ac_bindings` rows (T12790).
|
|
4
|
+
*
|
|
5
|
+
* ## Why this exists
|
|
6
|
+
*
|
|
7
|
+
* The consolidated project schema (`drizzle-cleo-project/20260531000001`)
|
|
8
|
+
* declares NO foreign key from `tasks_evidence_ac_bindings.ac_id` to
|
|
9
|
+
* `tasks_task_acceptance_criteria.id`. The legacy table's `ON DELETE CASCADE`
|
|
10
|
+
* did not survive consolidation, so every AC row that left the store —
|
|
11
|
+
* through an AC edit ({@link import('../tasks/ac-table.js').applyAcPlan}) or a
|
|
12
|
+
* hard task delete (the AC rows cascade from `tasks_tasks`) — left its
|
|
13
|
+
* bindings dangling. Adding the FK back would need a table rebuild, so the
|
|
14
|
+
* accessor deletes the bindings explicitly instead, in the same transaction
|
|
15
|
+
* that removes the AC rows.
|
|
16
|
+
*
|
|
17
|
+
* ## History is kept in the audit log, not in the bindings table
|
|
18
|
+
*
|
|
19
|
+
* One reader depends on historical bindings: alias-drift detection in
|
|
20
|
+
* `satisfies-validator.ts` (ADR-079-r2 §3) compares an alias atom's current
|
|
21
|
+
* AC against the AC a previous `satisfies` binding recorded. A binding for a
|
|
22
|
+
* removed AC is meaningless to the coverage gate, but it is exactly the
|
|
23
|
+
* record that says "alias AC2 used to mean X". So before a binding is
|
|
24
|
+
* deleted, its full row is written to `tasks_audit_log` under
|
|
25
|
+
* {@link AC_BINDINGS_PRUNED_ACTION}, keyed by the task that owned the AC, and
|
|
26
|
+
* the drift detector reads those rows as well as the live table.
|
|
27
|
+
*
|
|
28
|
+
* Every function takes the drizzle handle of an ALREADY-OPEN accessor
|
|
29
|
+
* transaction; none of them opens or commits one.
|
|
30
|
+
*
|
|
31
|
+
* @task T12790
|
|
32
|
+
* @adr ADR-079-r2
|
|
33
|
+
*/
|
|
34
|
+
import type { AcBindingRow } from '@cleocode/contracts';
|
|
35
|
+
import type { getDb } from './sqlite.js';
|
|
36
|
+
/** Drizzle handle for the project tasks store. */
|
|
37
|
+
type TasksDb = Awaited<ReturnType<typeof getDb>>;
|
|
38
|
+
/** `tasks_audit_log.action` recorded for every batch of pruned bindings. */
|
|
39
|
+
export declare const AC_BINDINGS_PRUNED_ACTION = "ac.bindings.pruned";
|
|
40
|
+
/**
|
|
41
|
+
* Why a batch of bindings was pruned.
|
|
42
|
+
*
|
|
43
|
+
* - `ac-removed` — the AC rows left the task's set in an AC edit.
|
|
44
|
+
* - `task-removed` — the owning task was hard-deleted (its AC rows cascade).
|
|
45
|
+
* - `orphan-repair` — `cleo doctor ac-bindings --fix` removed rows whose AC
|
|
46
|
+
* was already gone before T12790.
|
|
47
|
+
*/
|
|
48
|
+
export type AcBindingPruneReason = 'ac-removed' | 'task-removed' | 'orphan-repair';
|
|
49
|
+
/** `details` payload of a {@link AC_BINDINGS_PRUNED_ACTION} audit row. */
|
|
50
|
+
export interface AcBindingsPrunedDetails {
|
|
51
|
+
/** Why the bindings were removed. */
|
|
52
|
+
readonly reason: AcBindingPruneReason;
|
|
53
|
+
/** The AC ids whose bindings were removed. */
|
|
54
|
+
readonly acIds: readonly string[];
|
|
55
|
+
/** The removed binding rows, verbatim. */
|
|
56
|
+
readonly bindings: readonly AcBindingRow[];
|
|
57
|
+
}
|
|
58
|
+
/** Owner key used when an orphan's owning task cannot be inferred. */
|
|
59
|
+
export declare const UNKNOWN_BINDING_OWNER = "unknown";
|
|
60
|
+
/**
|
|
61
|
+
* Generate a task audit log row id in the `log-<epoch>-<rand>` shape.
|
|
62
|
+
*
|
|
63
|
+
* Shared by the task accessor's `appendLog` and the binding prune below, so
|
|
64
|
+
* both write ids of one shape.
|
|
65
|
+
*
|
|
66
|
+
* @task T4837 · T12790
|
|
67
|
+
*/
|
|
68
|
+
export declare function generateAuditLogId(): string;
|
|
69
|
+
/**
|
|
70
|
+
* Delete every binding whose `ac_id` is in `acIds`, recording them first in
|
|
71
|
+
* the audit log under `ownerTaskId` (the task that owned those ACs).
|
|
72
|
+
*
|
|
73
|
+
* Call it in the same transaction that removes the AC rows, BEFORE or AFTER
|
|
74
|
+
* the AC delete — the bindings table has no FK, so order does not matter.
|
|
75
|
+
*
|
|
76
|
+
* @param db - drizzle handle of the open accessor transaction
|
|
77
|
+
* @param ownerTaskId - task that owned the removed ACs
|
|
78
|
+
* @param acIds - AC ids leaving the store
|
|
79
|
+
* @param reason - why they are leaving
|
|
80
|
+
* @returns number of bindings removed
|
|
81
|
+
*
|
|
82
|
+
* @task T12790
|
|
83
|
+
*/
|
|
84
|
+
export declare function pruneAcBindingsForAcIds(db: TasksDb, ownerTaskId: string, acIds: readonly string[], reason: AcBindingPruneReason, keepBindingsForUids?: readonly string[]): Promise<number>;
|
|
85
|
+
/**
|
|
86
|
+
* Delete the bindings of every AC `taskId` owns — the hard task-delete path
|
|
87
|
+
* (the AC rows go by `ON DELETE CASCADE` from `tasks_tasks`) and the
|
|
88
|
+
* delete-every-AC-row path.
|
|
89
|
+
*
|
|
90
|
+
* @param db - drizzle handle of the open accessor transaction
|
|
91
|
+
* @param taskId - task whose AC rows are all leaving
|
|
92
|
+
* @param reason - `task-removed` (default) or `ac-removed`
|
|
93
|
+
* @returns number of bindings removed
|
|
94
|
+
*
|
|
95
|
+
* @task T12790
|
|
96
|
+
*/
|
|
97
|
+
export declare function pruneAcBindingsForTask(db: TasksDb, taskId: string, reason?: AcBindingPruneReason): Promise<number>;
|
|
98
|
+
/**
|
|
99
|
+
* Read every binding whose `ac_id` names no row of
|
|
100
|
+
* `tasks_task_acceptance_criteria`. Read-only.
|
|
101
|
+
*
|
|
102
|
+
* @param db - drizzle handle for the project tasks store
|
|
103
|
+
* @returns the dangling bindings, oldest first
|
|
104
|
+
*
|
|
105
|
+
* @task T12790
|
|
106
|
+
*/
|
|
107
|
+
export declare function selectOrphanAcBindings(db: TasksDb): Promise<AcBindingRow[]>;
|
|
108
|
+
/**
|
|
109
|
+
* Infer the task that owned an orphan binding's AC.
|
|
110
|
+
*
|
|
111
|
+
* Only `satisfies:<source>-><target>#<ac>` atom ids name it (the target owns
|
|
112
|
+
* the AC). Every other atom shape yields {@link UNKNOWN_BINDING_OWNER}.
|
|
113
|
+
*
|
|
114
|
+
* @param binding - an orphan binding
|
|
115
|
+
* @returns owning task id, or `'unknown'`
|
|
116
|
+
*
|
|
117
|
+
* @task T12790
|
|
118
|
+
*/
|
|
119
|
+
export declare function inferBindingOwnerTask(binding: AcBindingRow): string;
|
|
120
|
+
/**
|
|
121
|
+
* Remove every orphan binding, one audit row per inferred owning task.
|
|
122
|
+
*
|
|
123
|
+
* @param db - drizzle handle of the open accessor transaction
|
|
124
|
+
* @returns the removed bindings
|
|
125
|
+
*
|
|
126
|
+
* @task T12790
|
|
127
|
+
*/
|
|
128
|
+
export declare function pruneOrphanAcBindings(db: TasksDb): Promise<AcBindingRow[]>;
|
|
129
|
+
/**
|
|
130
|
+
* Read the bindings that were pruned from ACs owned by `ownerTaskId`, from
|
|
131
|
+
* their {@link AC_BINDINGS_PRUNED_ACTION} audit rows. Read-only.
|
|
132
|
+
*
|
|
133
|
+
* This is where binding history lives once the rows leave
|
|
134
|
+
* `tasks_evidence_ac_bindings`; alias-drift detection reads it.
|
|
135
|
+
*
|
|
136
|
+
* @param db - drizzle handle for the project tasks store
|
|
137
|
+
* @param ownerTaskId - task that owned the pruned ACs
|
|
138
|
+
* @returns the pruned binding rows (malformed audit payloads are skipped)
|
|
139
|
+
*
|
|
140
|
+
* @task T12790
|
|
141
|
+
*/
|
|
142
|
+
export declare function selectPrunedAcBindings(db: TasksDb, ownerTaskId: string): Promise<AcBindingRow[]>;
|
|
143
|
+
export {};
|
|
144
|
+
//# sourceMappingURL=ac-binding-prune.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ac-binding-prune.d.ts","sourceRoot":"","sources":["../../src/store/ac-binding-prune.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGzC,kDAAkD;AAClD,KAAK,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC;AAEjD,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,uBAAuB,CAAC;AAE9D;;;;;;;GAOG;AACH,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG,cAAc,GAAG,eAAe,CAAC;AAEnF,0EAA0E;AAC1E,MAAM,WAAW,uBAAuB;IACtC,qCAAqC;IACrC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,0CAA0C;IAC1C,QAAQ,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;CAC5C;AAED,sEAAsE;AACtE,eAAO,MAAM,qBAAqB,YAAY,CAAC;AA2B/C;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAI3C;AA2CD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,uBAAuB,CAC3C,EAAE,EAAE,OAAO,EACX,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,MAAM,EAAE,oBAAoB,EAC5B,mBAAmB,GAAE,SAAS,MAAM,EAAO,GAC1C,OAAO,CAAC,MAAM,CAAC,CA+CjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,sBAAsB,CAC1C,EAAE,EAAE,OAAO,EACX,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,oBAAqC,GAC5C,OAAO,CAAC,MAAM,CAAC,CAYjB;AAED;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CA2BjF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAGnE;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAahF;AAiBD;;;;;;;;;;;;GAYG;AACH,wBAAsB,sBAAsB,CAC1C,EAAE,EAAE,OAAO,EACX,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,EAAE,CAAC,CAyBzB"}
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Evidence ↔ AC binding pruning — the single write path that removes
|
|
3
|
+
* `tasks_evidence_ac_bindings` rows (T12790).
|
|
4
|
+
*
|
|
5
|
+
* ## Why this exists
|
|
6
|
+
*
|
|
7
|
+
* The consolidated project schema (`drizzle-cleo-project/20260531000001`)
|
|
8
|
+
* declares NO foreign key from `tasks_evidence_ac_bindings.ac_id` to
|
|
9
|
+
* `tasks_task_acceptance_criteria.id`. The legacy table's `ON DELETE CASCADE`
|
|
10
|
+
* did not survive consolidation, so every AC row that left the store —
|
|
11
|
+
* through an AC edit ({@link import('../tasks/ac-table.js').applyAcPlan}) or a
|
|
12
|
+
* hard task delete (the AC rows cascade from `tasks_tasks`) — left its
|
|
13
|
+
* bindings dangling. Adding the FK back would need a table rebuild, so the
|
|
14
|
+
* accessor deletes the bindings explicitly instead, in the same transaction
|
|
15
|
+
* that removes the AC rows.
|
|
16
|
+
*
|
|
17
|
+
* ## History is kept in the audit log, not in the bindings table
|
|
18
|
+
*
|
|
19
|
+
* One reader depends on historical bindings: alias-drift detection in
|
|
20
|
+
* `satisfies-validator.ts` (ADR-079-r2 §3) compares an alias atom's current
|
|
21
|
+
* AC against the AC a previous `satisfies` binding recorded. A binding for a
|
|
22
|
+
* removed AC is meaningless to the coverage gate, but it is exactly the
|
|
23
|
+
* record that says "alias AC2 used to mean X". So before a binding is
|
|
24
|
+
* deleted, its full row is written to `tasks_audit_log` under
|
|
25
|
+
* {@link AC_BINDINGS_PRUNED_ACTION}, keyed by the task that owned the AC, and
|
|
26
|
+
* the drift detector reads those rows as well as the live table.
|
|
27
|
+
*
|
|
28
|
+
* Every function takes the drizzle handle of an ALREADY-OPEN accessor
|
|
29
|
+
* transaction; none of them opens or commits one.
|
|
30
|
+
*
|
|
31
|
+
* @task T12790
|
|
32
|
+
* @adr ADR-079-r2
|
|
33
|
+
*/
|
|
34
|
+
import { and, eq, inArray, isNotNull, isNull, notInArray, or } from 'drizzle-orm';
|
|
35
|
+
import { tasksAuditLog } from './schema/cleo-project/audit.js';
|
|
36
|
+
import * as schema from './tasks-schema.js';
|
|
37
|
+
/** `tasks_audit_log.action` recorded for every batch of pruned bindings. */
|
|
38
|
+
export const AC_BINDINGS_PRUNED_ACTION = 'ac.bindings.pruned';
|
|
39
|
+
/** Owner key used when an orphan's owning task cannot be inferred. */
|
|
40
|
+
export const UNKNOWN_BINDING_OWNER = 'unknown';
|
|
41
|
+
/** Map a selected drizzle row to the contracts shape. */
|
|
42
|
+
function toBindingRow(r) {
|
|
43
|
+
return {
|
|
44
|
+
id: r.id,
|
|
45
|
+
evidenceAtomId: r.evidenceAtomId,
|
|
46
|
+
acId: r.acId,
|
|
47
|
+
bindingType: r.bindingType,
|
|
48
|
+
createdAt: r.createdAt,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
const BINDING_COLUMNS = {
|
|
52
|
+
id: schema.evidenceAcBindings.id,
|
|
53
|
+
evidenceAtomId: schema.evidenceAcBindings.evidenceAtomId,
|
|
54
|
+
acId: schema.evidenceAcBindings.acId,
|
|
55
|
+
bindingType: schema.evidenceAcBindings.bindingType,
|
|
56
|
+
createdAt: schema.evidenceAcBindings.createdAt,
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Generate a task audit log row id in the `log-<epoch>-<rand>` shape.
|
|
60
|
+
*
|
|
61
|
+
* Shared by the task accessor's `appendLog` and the binding prune below, so
|
|
62
|
+
* both write ids of one shape.
|
|
63
|
+
*
|
|
64
|
+
* @task T4837 · T12790
|
|
65
|
+
*/
|
|
66
|
+
export function generateAuditLogId() {
|
|
67
|
+
const epoch = Math.floor(Date.now() / 1000);
|
|
68
|
+
const rand = Math.random().toString(36).slice(2, 8);
|
|
69
|
+
return `log-${epoch}-${rand}`;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Record `bindings` in the audit log, then delete them — one audit row for
|
|
73
|
+
* the batch. No-op when `bindings` is empty.
|
|
74
|
+
*/
|
|
75
|
+
async function archiveAndDelete(db, ownerTaskId, reason, bindings) {
|
|
76
|
+
if (bindings.length === 0)
|
|
77
|
+
return;
|
|
78
|
+
const details = {
|
|
79
|
+
reason,
|
|
80
|
+
acIds: [...new Set(bindings.map((b) => b.acId))],
|
|
81
|
+
bindings,
|
|
82
|
+
};
|
|
83
|
+
await db
|
|
84
|
+
.insert(tasksAuditLog)
|
|
85
|
+
.values({
|
|
86
|
+
id: generateAuditLogId(),
|
|
87
|
+
timestamp: new Date().toISOString(),
|
|
88
|
+
action: AC_BINDINGS_PRUNED_ACTION,
|
|
89
|
+
taskId: ownerTaskId,
|
|
90
|
+
actor: 'system',
|
|
91
|
+
detailsJson: JSON.stringify(details),
|
|
92
|
+
beforeJson: null,
|
|
93
|
+
afterJson: null,
|
|
94
|
+
sessionId: null,
|
|
95
|
+
})
|
|
96
|
+
.run();
|
|
97
|
+
await db
|
|
98
|
+
.delete(schema.evidenceAcBindings)
|
|
99
|
+
.where(inArray(schema.evidenceAcBindings.id, bindings.map((b) => b.id)))
|
|
100
|
+
.run();
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Delete every binding whose `ac_id` is in `acIds`, recording them first in
|
|
104
|
+
* the audit log under `ownerTaskId` (the task that owned those ACs).
|
|
105
|
+
*
|
|
106
|
+
* Call it in the same transaction that removes the AC rows, BEFORE or AFTER
|
|
107
|
+
* the AC delete — the bindings table has no FK, so order does not matter.
|
|
108
|
+
*
|
|
109
|
+
* @param db - drizzle handle of the open accessor transaction
|
|
110
|
+
* @param ownerTaskId - task that owned the removed ACs
|
|
111
|
+
* @param acIds - AC ids leaving the store
|
|
112
|
+
* @param reason - why they are leaving
|
|
113
|
+
* @returns number of bindings removed
|
|
114
|
+
*
|
|
115
|
+
* @task T12790
|
|
116
|
+
*/
|
|
117
|
+
export async function pruneAcBindingsForAcIds(db, ownerTaskId, acIds, reason, keepBindingsForUids = []) {
|
|
118
|
+
if (acIds.length === 0)
|
|
119
|
+
return 0;
|
|
120
|
+
// T12341: a binding follows its criterion's uid (`ac_uid`) across edits.
|
|
121
|
+
// - The removed rows are read for THIS task only: AC ids derive from display
|
|
122
|
+
// ids, so one id can have named another task's criterion (T12799).
|
|
123
|
+
// - A binding that records a uid goes when that uid is one of the removed
|
|
124
|
+
// rows' and the same write does not carry it onto a new row (an edit keeps
|
|
125
|
+
// its evidence, stale until re-verified); a binding naming another
|
|
126
|
+
// criterion's uid stays, even when its recorded ac_id matches.
|
|
127
|
+
// - A binding without a uid (written before the fill) goes by its ac_id,
|
|
128
|
+
// unless that id's criterion carries its uid onto a new row.
|
|
129
|
+
const owned = await db
|
|
130
|
+
.select({ id: schema.taskAcceptanceCriteria.id, uid: schema.taskAcceptanceCriteria.uid })
|
|
131
|
+
.from(schema.taskAcceptanceCriteria)
|
|
132
|
+
.where(and(eq(schema.taskAcceptanceCriteria.taskId, ownerTaskId), inArray(schema.taskAcceptanceCriteria.id, acIds)))
|
|
133
|
+
.all();
|
|
134
|
+
const uidOfId = new Map(owned.map((r) => [r.id, r.uid]));
|
|
135
|
+
const uids = new Set(owned.map((r) => r.uid).filter((u) => u !== null));
|
|
136
|
+
const keep = new Set(keepBindingsForUids);
|
|
137
|
+
const rows = await db
|
|
138
|
+
.select({ ...BINDING_COLUMNS, acUid: schema.evidenceAcBindings.acUid })
|
|
139
|
+
.from(schema.evidenceAcBindings)
|
|
140
|
+
.where(uids.size > 0
|
|
141
|
+
? or(inArray(schema.evidenceAcBindings.acId, acIds), inArray(schema.evidenceAcBindings.acUid, [...uids]))
|
|
142
|
+
: inArray(schema.evidenceAcBindings.acId, acIds))
|
|
143
|
+
.all();
|
|
144
|
+
const removed = new Set(acIds);
|
|
145
|
+
const bindings = rows
|
|
146
|
+
.filter((r) => {
|
|
147
|
+
if (r.acUid !== null)
|
|
148
|
+
return uids.has(r.acUid) && !keep.has(r.acUid);
|
|
149
|
+
if (!removed.has(r.acId))
|
|
150
|
+
return false;
|
|
151
|
+
const carried = uidOfId.get(r.acId);
|
|
152
|
+
return !(carried && keep.has(carried));
|
|
153
|
+
})
|
|
154
|
+
.map(toBindingRow);
|
|
155
|
+
await archiveAndDelete(db, ownerTaskId, reason, bindings);
|
|
156
|
+
return bindings.length;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Delete the bindings of every AC `taskId` owns — the hard task-delete path
|
|
160
|
+
* (the AC rows go by `ON DELETE CASCADE` from `tasks_tasks`) and the
|
|
161
|
+
* delete-every-AC-row path.
|
|
162
|
+
*
|
|
163
|
+
* @param db - drizzle handle of the open accessor transaction
|
|
164
|
+
* @param taskId - task whose AC rows are all leaving
|
|
165
|
+
* @param reason - `task-removed` (default) or `ac-removed`
|
|
166
|
+
* @returns number of bindings removed
|
|
167
|
+
*
|
|
168
|
+
* @task T12790
|
|
169
|
+
*/
|
|
170
|
+
export async function pruneAcBindingsForTask(db, taskId, reason = 'task-removed') {
|
|
171
|
+
const acRows = await db
|
|
172
|
+
.select({ id: schema.taskAcceptanceCriteria.id })
|
|
173
|
+
.from(schema.taskAcceptanceCriteria)
|
|
174
|
+
.where(eq(schema.taskAcceptanceCriteria.taskId, taskId))
|
|
175
|
+
.all();
|
|
176
|
+
return pruneAcBindingsForAcIds(db, taskId, acRows.map((r) => r.id), reason);
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Read every binding whose `ac_id` names no row of
|
|
180
|
+
* `tasks_task_acceptance_criteria`. Read-only.
|
|
181
|
+
*
|
|
182
|
+
* @param db - drizzle handle for the project tasks store
|
|
183
|
+
* @returns the dangling bindings, oldest first
|
|
184
|
+
*
|
|
185
|
+
* @task T12790
|
|
186
|
+
*/
|
|
187
|
+
export async function selectOrphanAcBindings(db) {
|
|
188
|
+
const rows = await db
|
|
189
|
+
.select(BINDING_COLUMNS)
|
|
190
|
+
.from(schema.evidenceAcBindings)
|
|
191
|
+
.where(and(notInArray(schema.evidenceAcBindings.acId, db.select({ id: schema.taskAcceptanceCriteria.id }).from(schema.taskAcceptanceCriteria)),
|
|
192
|
+
// T12341: a binding recorded under an older id of a criterion that
|
|
193
|
+
// still exists (same `ac_uid`) is stale evidence, not an orphan.
|
|
194
|
+
or(isNull(schema.evidenceAcBindings.acUid), notInArray(schema.evidenceAcBindings.acUid, db
|
|
195
|
+
.select({ uid: schema.taskAcceptanceCriteria.uid })
|
|
196
|
+
.from(schema.taskAcceptanceCriteria)
|
|
197
|
+
.where(isNotNull(schema.taskAcceptanceCriteria.uid))))))
|
|
198
|
+
.orderBy(schema.evidenceAcBindings.createdAt, schema.evidenceAcBindings.id)
|
|
199
|
+
.all();
|
|
200
|
+
return rows.map(toBindingRow);
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Infer the task that owned an orphan binding's AC.
|
|
204
|
+
*
|
|
205
|
+
* Only `satisfies:<source>-><target>#<ac>` atom ids name it (the target owns
|
|
206
|
+
* the AC). Every other atom shape yields {@link UNKNOWN_BINDING_OWNER}.
|
|
207
|
+
*
|
|
208
|
+
* @param binding - an orphan binding
|
|
209
|
+
* @returns owning task id, or `'unknown'`
|
|
210
|
+
*
|
|
211
|
+
* @task T12790
|
|
212
|
+
*/
|
|
213
|
+
export function inferBindingOwnerTask(binding) {
|
|
214
|
+
const match = /^satisfies:[^>]*->([^#]+)#/.exec(binding.evidenceAtomId);
|
|
215
|
+
return match?.[1] ?? UNKNOWN_BINDING_OWNER;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Remove every orphan binding, one audit row per inferred owning task.
|
|
219
|
+
*
|
|
220
|
+
* @param db - drizzle handle of the open accessor transaction
|
|
221
|
+
* @returns the removed bindings
|
|
222
|
+
*
|
|
223
|
+
* @task T12790
|
|
224
|
+
*/
|
|
225
|
+
export async function pruneOrphanAcBindings(db) {
|
|
226
|
+
const orphans = await selectOrphanAcBindings(db);
|
|
227
|
+
const byOwner = new Map();
|
|
228
|
+
for (const row of orphans) {
|
|
229
|
+
const owner = inferBindingOwnerTask(row);
|
|
230
|
+
const group = byOwner.get(owner);
|
|
231
|
+
if (group)
|
|
232
|
+
group.push(row);
|
|
233
|
+
else
|
|
234
|
+
byOwner.set(owner, [row]);
|
|
235
|
+
}
|
|
236
|
+
for (const [owner, group] of byOwner) {
|
|
237
|
+
await archiveAndDelete(db, owner, 'orphan-repair', group);
|
|
238
|
+
}
|
|
239
|
+
return orphans;
|
|
240
|
+
}
|
|
241
|
+
/** Narrow a parsed JSON value to an {@link AcBindingRow}. */
|
|
242
|
+
function isBindingRow(value) {
|
|
243
|
+
if (value === null)
|
|
244
|
+
return false;
|
|
245
|
+
const row = value;
|
|
246
|
+
return (typeof row.id === 'string' &&
|
|
247
|
+
typeof row.evidenceAtomId === 'string' &&
|
|
248
|
+
typeof row.acId === 'string' &&
|
|
249
|
+
(row.bindingType === 'direct' ||
|
|
250
|
+
row.bindingType === 'satisfies' ||
|
|
251
|
+
row.bindingType === 'coverage') &&
|
|
252
|
+
typeof row.createdAt === 'string');
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Read the bindings that were pruned from ACs owned by `ownerTaskId`, from
|
|
256
|
+
* their {@link AC_BINDINGS_PRUNED_ACTION} audit rows. Read-only.
|
|
257
|
+
*
|
|
258
|
+
* This is where binding history lives once the rows leave
|
|
259
|
+
* `tasks_evidence_ac_bindings`; alias-drift detection reads it.
|
|
260
|
+
*
|
|
261
|
+
* @param db - drizzle handle for the project tasks store
|
|
262
|
+
* @param ownerTaskId - task that owned the pruned ACs
|
|
263
|
+
* @returns the pruned binding rows (malformed audit payloads are skipped)
|
|
264
|
+
*
|
|
265
|
+
* @task T12790
|
|
266
|
+
*/
|
|
267
|
+
export async function selectPrunedAcBindings(db, ownerTaskId) {
|
|
268
|
+
const rows = await db
|
|
269
|
+
.select({ detailsJson: tasksAuditLog.detailsJson })
|
|
270
|
+
.from(tasksAuditLog)
|
|
271
|
+
.where(and(eq(tasksAuditLog.action, AC_BINDINGS_PRUNED_ACTION), eq(tasksAuditLog.taskId, ownerTaskId)))
|
|
272
|
+
.all();
|
|
273
|
+
const out = [];
|
|
274
|
+
for (const row of rows) {
|
|
275
|
+
if (typeof row.detailsJson !== 'string')
|
|
276
|
+
continue;
|
|
277
|
+
let parsed;
|
|
278
|
+
try {
|
|
279
|
+
parsed = JSON.parse(row.detailsJson);
|
|
280
|
+
}
|
|
281
|
+
catch {
|
|
282
|
+
continue;
|
|
283
|
+
}
|
|
284
|
+
const bindings = parsed?.bindings;
|
|
285
|
+
if (!Array.isArray(bindings))
|
|
286
|
+
continue;
|
|
287
|
+
for (const b of bindings)
|
|
288
|
+
if (isBindingRow(b))
|
|
289
|
+
out.push(b);
|
|
290
|
+
}
|
|
291
|
+
return out;
|
|
292
|
+
}
|
|
293
|
+
//# sourceMappingURL=ac-binding-prune.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ac-binding-prune.js","sourceRoot":"","sources":["../../src/store/ac-binding-prune.ts"],"names":[],"mappings":"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"}
|