@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
|
@@ -7,10 +7,20 @@
|
|
|
7
7
|
* decouples the hot path (agent execution) from I/O latency.
|
|
8
8
|
*
|
|
9
9
|
* The queue is drained to brain.db either:
|
|
10
|
-
* 1.
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
10
|
+
* 1. Promptly — every `enqueue` schedules a drain on the next macrotask
|
|
11
|
+
* (`setImmediate`, NOT unref'd), so observations enqueued in the same tick
|
|
12
|
+
* are written as one batch and the caller's promise always settles (T12817).
|
|
13
|
+
* 2. Periodically — every {@link FLUSH_INTERVAL_MS} milliseconds via a timer
|
|
14
|
+
* (backstop; unref'd).
|
|
15
|
+
* 3. On high watermark — when the queue exceeds {@link FLUSH_WATERMARK} entries.
|
|
16
|
+
* 4. On process exit — SIGINT, SIGTERM, and 'exit' hooks perform a best-effort
|
|
17
|
+
* flush.
|
|
18
|
+
*
|
|
19
|
+
* T12817: before the prompt drain existed, the ONLY drain a one-shot process
|
|
20
|
+
* could reach was the unref'd 5 s timer. `enqueue()` returned a promise that
|
|
21
|
+
* only that timer could settle, so an awaited `cleo memory observe --agent X`
|
|
22
|
+
* left the event loop empty: Node exited 0 with zero bytes on stdout and the
|
|
23
|
+
* `'exit'` hook's async drain never ran — the observation was silently lost.
|
|
14
24
|
*
|
|
15
25
|
* Observations without an `agent` field continue to use the existing synchronous
|
|
16
26
|
* path in observeBrain() and are never routed here.
|
|
@@ -45,12 +55,18 @@ const MENTAL_MODEL_TYPES = new Set([
|
|
|
45
55
|
// ---------------------------------------------------------------------------
|
|
46
56
|
/** In-memory queue of pending mental-model observations. */
|
|
47
57
|
const _queue = [];
|
|
48
|
-
/** Whether a flush is currently in progress (prevents re-entrant flushes). */
|
|
49
|
-
let _flushing = false;
|
|
50
58
|
/** Whether process-exit hooks have been registered. */
|
|
51
59
|
let _hooksRegistered = false;
|
|
52
60
|
/** Handle for the periodic flush timer (undefined = no active timer). */
|
|
53
61
|
let _timer;
|
|
62
|
+
/** Handle for the pending prompt drain (undefined = none scheduled). T12817 */
|
|
63
|
+
let _immediate;
|
|
64
|
+
/**
|
|
65
|
+
* Tail of the serialized drain chain. Every drain runs after the previous one
|
|
66
|
+
* settles, so entries enqueued while a drain is in flight are picked up by the
|
|
67
|
+
* next link instead of waiting for the unref'd timer. T12817
|
|
68
|
+
*/
|
|
69
|
+
let _drainTail = Promise.resolve();
|
|
54
70
|
/**
|
|
55
71
|
* Drain the queue synchronously where possible, or fall back to async writes.
|
|
56
72
|
* Returns when all observations in the current batch have been persisted.
|
|
@@ -76,6 +92,33 @@ async function drainQueue() {
|
|
|
76
92
|
}
|
|
77
93
|
return count;
|
|
78
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* Run {@link drainQueue} after every earlier drain has settled.
|
|
97
|
+
*
|
|
98
|
+
* @returns The number of observations this drain persisted.
|
|
99
|
+
*/
|
|
100
|
+
function serialDrain() {
|
|
101
|
+
const next = _drainTail.then(() => drainQueue());
|
|
102
|
+
_drainTail = next.catch(() => undefined);
|
|
103
|
+
return next;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Schedule a prompt drain on the next macrotask (T12817).
|
|
107
|
+
*
|
|
108
|
+
* The handle is deliberately NOT unref'd: an enqueued observation is pending
|
|
109
|
+
* I/O the process owes its caller, so it must keep the event loop alive until
|
|
110
|
+
* written. Entries enqueued in the same tick share one drain.
|
|
111
|
+
*/
|
|
112
|
+
function schedulePromptDrain() {
|
|
113
|
+
if (_immediate !== undefined)
|
|
114
|
+
return;
|
|
115
|
+
_immediate = setImmediate(() => {
|
|
116
|
+
_immediate = undefined;
|
|
117
|
+
serialDrain().catch(() => {
|
|
118
|
+
/* per-entry errors already rejected their callers */
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
}
|
|
79
122
|
/**
|
|
80
123
|
* Best-effort synchronous exit flush.
|
|
81
124
|
* Used in 'exit' event handler where async I/O is not guaranteed.
|
|
@@ -137,15 +180,8 @@ function ensureTimer() {
|
|
|
137
180
|
_timer = setInterval(() => {
|
|
138
181
|
if (_queue.length === 0)
|
|
139
182
|
return;
|
|
140
|
-
|
|
141
|
-
return;
|
|
142
|
-
_flushing = true;
|
|
143
|
-
drainQueue()
|
|
144
|
-
.catch(() => {
|
|
183
|
+
serialDrain().catch(() => {
|
|
145
184
|
/* best-effort */
|
|
146
|
-
})
|
|
147
|
-
.finally(() => {
|
|
148
|
-
_flushing = false;
|
|
149
185
|
});
|
|
150
186
|
}, FLUSH_INTERVAL_MS);
|
|
151
187
|
// Unref so the timer doesn't prevent process exit when queue is idle
|
|
@@ -168,31 +204,20 @@ export const mentalModelQueue = {
|
|
|
168
204
|
ensureTimer();
|
|
169
205
|
return new Promise((resolve, reject) => {
|
|
170
206
|
_queue.push({ projectRoot, params, resolve, reject });
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
drainQueue()
|
|
175
|
-
.catch(() => {
|
|
207
|
+
if (_queue.length >= FLUSH_WATERMARK) {
|
|
208
|
+
// High-watermark flush
|
|
209
|
+
serialDrain().catch(() => {
|
|
176
210
|
/* best-effort */
|
|
177
|
-
})
|
|
178
|
-
.finally(() => {
|
|
179
|
-
_flushing = false;
|
|
180
211
|
});
|
|
181
212
|
}
|
|
213
|
+
else {
|
|
214
|
+
// T12817: guarantee the caller's promise settles in a one-shot process.
|
|
215
|
+
schedulePromptDrain();
|
|
216
|
+
}
|
|
182
217
|
});
|
|
183
218
|
},
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
// Wait for the current flush to settle then flush again
|
|
187
|
-
await new Promise((r) => setTimeout(r, 50));
|
|
188
|
-
}
|
|
189
|
-
_flushing = true;
|
|
190
|
-
try {
|
|
191
|
-
return await drainQueue();
|
|
192
|
-
}
|
|
193
|
-
finally {
|
|
194
|
-
_flushing = false;
|
|
195
|
-
}
|
|
219
|
+
flush() {
|
|
220
|
+
return serialDrain();
|
|
196
221
|
},
|
|
197
222
|
size() {
|
|
198
223
|
return _queue.length;
|
|
@@ -216,13 +241,17 @@ export function _resetMentalModelQueueForTests() {
|
|
|
216
241
|
clearInterval(_timer);
|
|
217
242
|
_timer = undefined;
|
|
218
243
|
}
|
|
244
|
+
if (_immediate !== undefined) {
|
|
245
|
+
clearImmediate(_immediate);
|
|
246
|
+
_immediate = undefined;
|
|
247
|
+
}
|
|
248
|
+
_drainTail = Promise.resolve();
|
|
219
249
|
// Reject all pending observations so test assertions can proceed.
|
|
220
250
|
const pending = _queue.splice(0, _queue.length);
|
|
221
251
|
const cancelErr = new Error('[test teardown] mental-model queue reset');
|
|
222
252
|
for (const entry of pending) {
|
|
223
253
|
entry.reject(cancelErr);
|
|
224
254
|
}
|
|
225
|
-
_flushing = false;
|
|
226
255
|
_hooksRegistered = false;
|
|
227
256
|
}
|
|
228
257
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mental-model-queue.js","sourceRoot":"","sources":["../../src/memory/mental-model-queue.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"mental-model-queue.js","sourceRoot":"","sources":["../../src/memory/mental-model-queue.ts"],"names":[],"mappings":"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"}
|
|
@@ -66,7 +66,7 @@ export declare function storePattern(projectRoot: string, params: StorePatternPa
|
|
|
66
66
|
id: string;
|
|
67
67
|
qualityScore: number | null;
|
|
68
68
|
updatedAt: string | null;
|
|
69
|
-
memoryTier: "
|
|
69
|
+
memoryTier: "medium" | "short" | "long" | null;
|
|
70
70
|
memoryType: "semantic" | "episodic" | "procedural" | null;
|
|
71
71
|
verified: boolean;
|
|
72
72
|
validAt: string;
|
|
@@ -85,7 +85,7 @@ export declare function storePattern(projectRoot: string, params: StorePatternPa
|
|
|
85
85
|
context: string;
|
|
86
86
|
frequency: number;
|
|
87
87
|
successRate: number | null;
|
|
88
|
-
impact: "
|
|
88
|
+
impact: "low" | "medium" | "high" | null;
|
|
89
89
|
antiPattern: string | null;
|
|
90
90
|
mitigation: string | null;
|
|
91
91
|
examplesJson: string | null;
|
|
@@ -130,7 +130,7 @@ export declare function searchPatterns(projectRoot: string, params?: SearchPatte
|
|
|
130
130
|
id: string;
|
|
131
131
|
qualityScore: number | null;
|
|
132
132
|
updatedAt: string | null;
|
|
133
|
-
memoryTier: "
|
|
133
|
+
memoryTier: "medium" | "short" | "long" | null;
|
|
134
134
|
memoryType: "semantic" | "episodic" | "procedural" | null;
|
|
135
135
|
verified: boolean;
|
|
136
136
|
validAt: string;
|
|
@@ -149,7 +149,7 @@ export declare function searchPatterns(projectRoot: string, params?: SearchPatte
|
|
|
149
149
|
context: string;
|
|
150
150
|
frequency: number;
|
|
151
151
|
successRate: number | null;
|
|
152
|
-
impact: "
|
|
152
|
+
impact: "low" | "medium" | "high" | null;
|
|
153
153
|
antiPattern: string | null;
|
|
154
154
|
mitigation: string | null;
|
|
155
155
|
examplesJson: string | null;
|
|
@@ -16,6 +16,7 @@ import { docsPipelineManifest as pipelineManifest } from '../store/schema/cleo-p
|
|
|
16
16
|
declare function getBinding(cwd?: string): Promise<import("../db/index.js").DomainBinding<import("drizzle-orm/node-sqlite/driver").NodeSQLiteDatabase<import("drizzle-orm").EmptyRelations>, import("../store/dual-scope-db.js").ProjectStore>>;
|
|
17
17
|
import type { ContradictionDetail, ExtendedManifestEntry, ResearchFilter, SupersededDetail } from './index.js';
|
|
18
18
|
import { filterManifestEntries } from './manifest-filter.js';
|
|
19
|
+
import { type ManifestIdentityIssue } from './manifest-identity.js';
|
|
19
20
|
export type ManifestEntry = ExtendedManifestEntry;
|
|
20
21
|
export type { ContradictionDetail, ResearchFilter, SupersededDetail };
|
|
21
22
|
export { filterManifestEntries };
|
|
@@ -84,6 +85,26 @@ export declare function readManifestEntriesSkippingMalformed(projectRoot?: strin
|
|
|
84
85
|
* @task T12686
|
|
85
86
|
*/
|
|
86
87
|
export declare function listMalformedManifestRows(projectRoot?: string): Promise<MalformedManifestRow[]>;
|
|
88
|
+
/** A stored manifest row whose id, linked task ids or file reference fails T12829 validation. */
|
|
89
|
+
export interface ManifestIdentityProblemRow {
|
|
90
|
+
/** Manifest entry id, truncated to 120 characters for display. */
|
|
91
|
+
entryId: string;
|
|
92
|
+
/** Tables holding the row (`docs_pipeline_manifest`, legacy `pipeline_manifest`). */
|
|
93
|
+
tables: string[];
|
|
94
|
+
/** The problems: `E_VALIDATION` (malformed or unsafe) or `E_NOT_FOUND` (linked task missing). */
|
|
95
|
+
issues: ManifestIdentityIssue[];
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* List every stored manifest row (archived included) whose entry id, linked
|
|
99
|
+
* task ids or file reference would be rejected by append today, and every
|
|
100
|
+
* well-formed linked task id that names no task. Read-only: the rows predate
|
|
101
|
+
* T12829 validation and are reported, never rewritten.
|
|
102
|
+
*
|
|
103
|
+
* @param projectRoot - Project root.
|
|
104
|
+
* @returns The offending rows, each with its problems.
|
|
105
|
+
* @task T12829
|
|
106
|
+
*/
|
|
107
|
+
export declare function listManifestIdentityProblems(projectRoot?: string): Promise<ManifestIdentityProblemRow[]>;
|
|
87
108
|
/** One row a repair rewrote: its metadata before and after. */
|
|
88
109
|
export interface ManifestRepairChange {
|
|
89
110
|
entryId: string;
|
|
@@ -182,8 +203,22 @@ export declare function pipelineManifestPending(epicId?: string, projectRoot?: s
|
|
|
182
203
|
export declare function pipelineManifestStats(epicId?: string, projectRoot?: string): Promise<EngineResult>;
|
|
183
204
|
/** pipeline.manifest.read - Read manifest entries with optional filter */
|
|
184
205
|
export declare function pipelineManifestRead(filter?: ResearchFilter, projectRoot?: string): Promise<EngineResult>;
|
|
185
|
-
/**
|
|
186
|
-
export
|
|
206
|
+
/** Options for {@link pipelineManifestAppend}. */
|
|
207
|
+
export interface PipelineManifestAppendOptions {
|
|
208
|
+
/**
|
|
209
|
+
* Reject an entry whose linked task ids name no task in the project store
|
|
210
|
+
* (`E_NOT_FOUND`). The CLI/dispatch path sets it; direct SDK callers that
|
|
211
|
+
* record manifests for tasks held elsewhere may leave it off. Format checks
|
|
212
|
+
* on the id, linked task ids and file reference always run (T12829).
|
|
213
|
+
*/
|
|
214
|
+
requireExistingTasks?: boolean;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Append to canonical manifest storage after checking both histories for
|
|
218
|
+
* unresolved identities. The entry id, linked task ids and file reference are
|
|
219
|
+
* validated first (T12829): no input can name a path outside the project.
|
|
220
|
+
*/
|
|
221
|
+
export declare function pipelineManifestAppend(entry: ExtendedManifestEntry, projectRoot?: string, options?: PipelineManifestAppendOptions): Promise<EngineResult>;
|
|
187
222
|
/** pipeline.manifest.archive - Archive old manifest entries by date */
|
|
188
223
|
export declare function pipelineManifestArchive(beforeDate: string, projectRoot?: string): Promise<EngineResult>;
|
|
189
224
|
/** pipeline.manifest.compact - Dedup by contentHash (keep newest by createdAt) */
|
|
@@ -245,13 +280,20 @@ export declare function filterEntries(entries: ExtendedManifestEntry[], filter:
|
|
|
245
280
|
export declare function distillManifestEntry(_entryId: string, _projectRoot?: string): Promise<EngineResult>;
|
|
246
281
|
/**
|
|
247
282
|
* Migrate existing .cleo/MANIFEST.jsonl entries into the pipeline_manifest table.
|
|
248
|
-
* Skips entries that already exist (by id).
|
|
249
|
-
*
|
|
283
|
+
* Skips entries that already exist (by id). Entries whose id, linked task ids
|
|
284
|
+
* or file reference fail the T12829 identity checks are skipped, not inserted,
|
|
285
|
+
* and listed in `invalid`. Renames MANIFEST.jsonl to MANIFEST.jsonl.migrated
|
|
286
|
+
* when done.
|
|
250
287
|
*
|
|
251
|
-
* @returns Count of migrated and skipped entries
|
|
288
|
+
* @returns Count of migrated and skipped entries (skipped includes invalid ones),
|
|
289
|
+
* and every entry refused for an identity problem.
|
|
252
290
|
*/
|
|
253
291
|
export declare function migrateManifestJsonlToSqlite(projectRoot?: string): Promise<{
|
|
254
292
|
migrated: number;
|
|
255
293
|
skipped: number;
|
|
294
|
+
invalid: Array<{
|
|
295
|
+
entryId: string;
|
|
296
|
+
issues: ManifestIdentityIssue[];
|
|
297
|
+
}>;
|
|
256
298
|
}>;
|
|
257
299
|
//# sourceMappingURL=pipeline-manifest-sqlite.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline-manifest-sqlite.d.ts","sourceRoot":"","sources":["../../src/memory/pipeline-manifest-sqlite.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAItF,OAAO,EAAsB,KAAK,YAAY,EAAqB,MAAM,qBAAqB,CAAC;AAE/F,OAAO,EAAE,oBAAoB,IAAI,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAOhG,iBAAe,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,wMAIrC;AAID,OAAO,KAAK,EACV,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"pipeline-manifest-sqlite.d.ts","sourceRoot":"","sources":["../../src/memory/pipeline-manifest-sqlite.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAItF,OAAO,EAAsB,KAAK,YAAY,EAAqB,MAAM,qBAAqB,CAAC;AAE/F,OAAO,EAAE,oBAAoB,IAAI,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAOhG,iBAAe,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,wMAIrC;AAID,OAAO,KAAK,EACV,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAEL,KAAK,qBAAqB,EAI3B,MAAM,wBAAwB,CAAC;AAGhC,MAAM,MAAM,aAAa,GAAG,qBAAqB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,gBAAgB,EAAE,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,CAAC;AAEjC,UAAU,0BAA2B,SAAQ,cAAc;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA0HD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,aAAa,CAAC,OAAO,gBAAgB,CAAC,YAAY,CAAC,EACzD,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GACvD,OAAO,CAAC,MAAM,CAAC,CA2CjB;AAiED,8DAA8D;AAC9D,MAAM,WAAW,oBAAoB;IACnC,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,qFAAqF;IACrF,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,kGAAkG;IAClG,MAAM,EAAE,cAAc,GAAG,gBAAgB,CAAC;IAC1C,2EAA2E;IAC3E,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,qFAAqF;AACrF,eAAO,MAAM,2BAA2B,uCAAuC,CAAC;AAEhF,+EAA+E;AAC/E,eAAO,MAAM,0BAA0B,+CAA+C,CAAC;AA4CvF;;;;;;;;;;GAUG;AACH,wBAAsB,oCAAoC,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACxF,OAAO,EAAE,KAAK,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC9D,SAAS,EAAE,oBAAoB,EAAE,CAAC;CACnC,CAAC,CASD;AAED;;;;;;;GAOG;AACH,wBAAsB,yBAAyB,CAC7C,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAEjC;AAED,iGAAiG;AACjG,MAAM,WAAW,0BAA0B;IACzC,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAC;IAChB,qFAAqF;IACrF,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,iGAAiG;IACjG,MAAM,EAAE,qBAAqB,EAAE,CAAC;CACjC;AAED;;;;;;;;;GASG;AACH,wBAAsB,4BAA4B,CAChD,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,0BAA0B,EAAE,CAAC,CA+CvC;AAED,+DAA+D;AAC/D,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,8EAA8E;AAC9E,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,0BAA0B,CAAC;IACjC,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC;;;;OAIG;IACH,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAAC;CACpC;AAED,wEAAwE;AACxE,MAAM,WAAW,kBAAkB;IACjC,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,+EAA+E;IAC/E,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAyBD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,2BAA2B,CAC/C,WAAW,CAAC,EAAE,MAAM,EACpB,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CA8ChC;AAED;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,kBAAkB,CAAC,CAU7B;AAiID;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,CAAC,CAmHvB;AAED,kEAAkE;AAClE,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,0BAA0B,EAClC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,CAAC,CA4BvB;AAED,6FAA6F;AAC7F,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACjD,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,CAAC,CAwEvB;AAED,6DAA6D;AAC7D,wBAAsB,uBAAuB,CAC3C,MAAM,CAAC,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,CAAC,CAoCvB;AAED,oDAAoD;AACpD,wBAAsB,qBAAqB,CACzC,MAAM,CAAC,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,CAAC,CA2CvB;AAED,0EAA0E;AAC1E,wBAAsB,oBAAoB,CACxC,MAAM,CAAC,EAAE,cAAc,EACvB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,CAAC,CAiBvB;AAED,kDAAkD;AAClD,MAAM,WAAW,6BAA6B;IAC5C;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAmBD;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,qBAAqB,EAC5B,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,GAAE,6BAAkC,GAC1C,OAAO,CAAC,YAAY,CAAC,CA4EvB;AAED,uEAAuE;AACvE,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,CAAC,CAuCvB;AAED,kFAAkF;AAClF,wBAAsB,uBAAuB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAqCzF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,CAAC,CAgHvB;AAED,2GAA2G;AAC3G,wBAAsB,8BAA8B,CAClD,WAAW,CAAC,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1B,OAAO,CAAC,YAAY,CAAC;IAAE,cAAc,EAAE,mBAAmB,EAAE,CAAA;CAAE,CAAC,CAAC,CA2ElE;AAED,2FAA2F;AAC3F,wBAAsB,0BAA0B,CAC9C,WAAW,CAAC,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1B,OAAO,CAAC,YAAY,CAAC;IAAE,UAAU,EAAE,gBAAgB,EAAE,CAAA;CAAE,CAAC,CAAC,CAyC3D;AAED,6DAA6D;AAC7D,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,CAAC,CAkDvB;AAMD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAE/D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,qBAAqB,EAAE,EAChC,MAAM,EAAE,cAAc,GACrB,qBAAqB,EAAE,CAEzB;AAMD;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,YAAY,CAAC,CAEvB;AAMD;;;;;;;;;GASG;AACH,wBAAsB,4BAA4B,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAChF,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,qBAAqB,EAAE,CAAA;KAAE,CAAC,CAAC;CACtE,CAAC,CAqED"}
|
|
@@ -32,6 +32,7 @@ async function getBinding(cwd) {
|
|
|
32
32
|
import { createPage } from '../pagination.js';
|
|
33
33
|
import { getProjectRoot, resolveCleoDir } from '../paths.js';
|
|
34
34
|
import { filterManifestEntries } from './manifest-filter.js';
|
|
35
|
+
import { findMissingLinkedTasks, manifestEntryIdProblem, manifestIdentityIssues, readContainedFile, } from './manifest-identity.js';
|
|
35
36
|
export { filterManifestEntries };
|
|
36
37
|
function normalizeLimit(limit) {
|
|
37
38
|
return typeof limit === 'number' && limit > 0 ? limit : undefined;
|
|
@@ -324,6 +325,54 @@ export async function readManifestEntriesSkippingMalformed(projectRoot) {
|
|
|
324
325
|
export async function listMalformedManifestRows(projectRoot) {
|
|
325
326
|
return (await readRows(projectRoot, true)).flatMap((row) => metadataProblem(row) ?? []);
|
|
326
327
|
}
|
|
328
|
+
/**
|
|
329
|
+
* List every stored manifest row (archived included) whose entry id, linked
|
|
330
|
+
* task ids or file reference would be rejected by append today, and every
|
|
331
|
+
* well-formed linked task id that names no task. Read-only: the rows predate
|
|
332
|
+
* T12829 validation and are reported, never rewritten.
|
|
333
|
+
*
|
|
334
|
+
* @param projectRoot - Project root.
|
|
335
|
+
* @returns The offending rows, each with its problems.
|
|
336
|
+
* @task T12829
|
|
337
|
+
*/
|
|
338
|
+
export async function listManifestIdentityProblems(projectRoot) {
|
|
339
|
+
const scope = manifestScope(projectRoot);
|
|
340
|
+
const checked = (await readRows(scope.worktreeRoot, true)).map((row) => {
|
|
341
|
+
// A row with unreadable metadata is `listMalformedManifestRows`' finding;
|
|
342
|
+
// here it falls back to the columns.
|
|
343
|
+
const meta = metadataProblem(row) === null ? readRowMetadata(row) : undefined;
|
|
344
|
+
const linkedTasks = meta?.linked_tasks ?? (row.taskId ? [row.taskId] : []);
|
|
345
|
+
const file = meta?.file ?? row.sourceFile ?? undefined;
|
|
346
|
+
return {
|
|
347
|
+
row,
|
|
348
|
+
linkedTasks,
|
|
349
|
+
issues: manifestIdentityIssues({ id: row.id, linked_tasks: linkedTasks, file }, scope.worktreeRoot),
|
|
350
|
+
};
|
|
351
|
+
});
|
|
352
|
+
const missing = new Set(await worktreeScope.run(scope, () => findMissingLinkedTasks(checked.flatMap((c) => c.linkedTasks), scope.worktreeRoot)));
|
|
353
|
+
return checked.flatMap(({ row, linkedTasks, issues }) => {
|
|
354
|
+
const all = [
|
|
355
|
+
...issues,
|
|
356
|
+
...linkedTasks
|
|
357
|
+
.filter((id) => missing.has(id))
|
|
358
|
+
.map((id) => ({
|
|
359
|
+
field: 'linked_tasks',
|
|
360
|
+
code: 'E_NOT_FOUND',
|
|
361
|
+
value: id,
|
|
362
|
+
message: 'no such task in this project',
|
|
363
|
+
})),
|
|
364
|
+
];
|
|
365
|
+
if (all.length === 0)
|
|
366
|
+
return [];
|
|
367
|
+
return [
|
|
368
|
+
{
|
|
369
|
+
entryId: row.id.length <= 120 ? row.id : `${row.id.slice(0, 120)}… (${row.id.length} chars)`,
|
|
370
|
+
tables: [...row.provenance.tables],
|
|
371
|
+
issues: all,
|
|
372
|
+
},
|
|
373
|
+
];
|
|
374
|
+
});
|
|
375
|
+
}
|
|
327
376
|
/**
|
|
328
377
|
* Rewrite one malformed metadata document so it conforms, keeping every byte:
|
|
329
378
|
* an offending field moves under `_malformed.<field>`; an unparseable or
|
|
@@ -561,6 +610,19 @@ export async function pipelineManifestShow(researchId, projectRoot) {
|
|
|
561
610
|
error: { code: 'E_INVALID_INPUT', message: 'researchId is required' },
|
|
562
611
|
};
|
|
563
612
|
}
|
|
613
|
+
// T12829: a malformed id can never have been stored by append; refuse it
|
|
614
|
+
// before it reaches the store or any path.
|
|
615
|
+
const idProblem = manifestEntryIdProblem(researchId);
|
|
616
|
+
if (idProblem) {
|
|
617
|
+
return {
|
|
618
|
+
success: false,
|
|
619
|
+
error: {
|
|
620
|
+
code: 'E_VALIDATION',
|
|
621
|
+
message: `Invalid manifest entry id: ${idProblem}`,
|
|
622
|
+
details: { field: 'id', length: researchId.length },
|
|
623
|
+
},
|
|
624
|
+
};
|
|
625
|
+
}
|
|
564
626
|
try {
|
|
565
627
|
const scope = manifestScope(projectRoot);
|
|
566
628
|
const rows = await readRows(scope.worktreeRoot, true, researchId);
|
|
@@ -625,13 +687,20 @@ export async function pipelineManifestShow(researchId, projectRoot) {
|
|
|
625
687
|
});
|
|
626
688
|
}
|
|
627
689
|
else if (entry.file) {
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
690
|
+
// T12829: never read a file reference that escapes the project (or
|
|
691
|
+
// whose name the filesystem cannot hold) — rows stored before append
|
|
692
|
+
// validated `file` may carry one. The read resolves real paths, so an
|
|
693
|
+
// in-project symlink pointing outside the project is refused too.
|
|
694
|
+
const read = readContainedFile(scope.worktreeRoot, entry.file);
|
|
695
|
+
if (read.status === 'unsafe') {
|
|
696
|
+
throw new EngineResultError({
|
|
697
|
+
code: 'E_MANIFEST_FILE_UNSAFE',
|
|
698
|
+
message: `Manifest '${researchId}' has an unsafe file reference (${read.reason}); it was not read. Run \`cleo doctor manifest-rows\` to list such rows.`,
|
|
699
|
+
details: { entryId: researchId, field: 'file' },
|
|
700
|
+
});
|
|
634
701
|
}
|
|
702
|
+
if (read.status === 'ok')
|
|
703
|
+
fileContent = read.content;
|
|
635
704
|
}
|
|
636
705
|
return {
|
|
637
706
|
success: true,
|
|
@@ -812,8 +881,28 @@ export async function pipelineManifestRead(filter, projectRoot) {
|
|
|
812
881
|
return manifestFailure('E_MANIFEST_READ', error instanceof Error ? error : new Error(String(error)));
|
|
813
882
|
}
|
|
814
883
|
}
|
|
815
|
-
/**
|
|
816
|
-
|
|
884
|
+
/**
|
|
885
|
+
* Build the failure for identity problems, preferring `E_VALIDATION` over
|
|
886
|
+
* `E_NOT_FOUND` so a malformed value is reported before a missing task.
|
|
887
|
+
*/
|
|
888
|
+
function identityFailure(issues) {
|
|
889
|
+
const code = issues.some((i) => i.code === 'E_VALIDATION') ? 'E_VALIDATION' : 'E_NOT_FOUND';
|
|
890
|
+
const shown = issues.filter((i) => i.code === code);
|
|
891
|
+
return {
|
|
892
|
+
success: false,
|
|
893
|
+
error: {
|
|
894
|
+
code,
|
|
895
|
+
message: `Invalid manifest entry: ${shown.map((i) => `${i.field} '${i.value}': ${i.message}`).join('; ')}`,
|
|
896
|
+
details: { field: shown[0]?.field, issues },
|
|
897
|
+
},
|
|
898
|
+
};
|
|
899
|
+
}
|
|
900
|
+
/**
|
|
901
|
+
* Append to canonical manifest storage after checking both histories for
|
|
902
|
+
* unresolved identities. The entry id, linked task ids and file reference are
|
|
903
|
+
* validated first (T12829): no input can name a path outside the project.
|
|
904
|
+
*/
|
|
905
|
+
export async function pipelineManifestAppend(entry, projectRoot, options = {}) {
|
|
817
906
|
if (!entry) {
|
|
818
907
|
return { success: false, error: { code: 'E_INVALID_INPUT', message: 'entry is required' } };
|
|
819
908
|
}
|
|
@@ -843,6 +932,21 @@ export async function pipelineManifestAppend(entry, projectRoot) {
|
|
|
843
932
|
},
|
|
844
933
|
};
|
|
845
934
|
}
|
|
935
|
+
const scope = manifestScope(projectRoot);
|
|
936
|
+
const issues = manifestIdentityIssues(entry, scope.worktreeRoot);
|
|
937
|
+
if (issues.length > 0)
|
|
938
|
+
return identityFailure(issues);
|
|
939
|
+
if (options.requireExistingTasks === true && (entry.linked_tasks?.length ?? 0) > 0) {
|
|
940
|
+
const missing = await worktreeScope.run(scope, () => findMissingLinkedTasks(entry.linked_tasks ?? [], scope.worktreeRoot));
|
|
941
|
+
if (missing.length > 0) {
|
|
942
|
+
return identityFailure(missing.map((id) => ({
|
|
943
|
+
field: 'linked_tasks',
|
|
944
|
+
code: 'E_NOT_FOUND',
|
|
945
|
+
value: id,
|
|
946
|
+
message: 'no such task in this project',
|
|
947
|
+
})));
|
|
948
|
+
}
|
|
949
|
+
}
|
|
846
950
|
try {
|
|
847
951
|
const binding = await getBinding(projectRoot);
|
|
848
952
|
const row = entryToRow(entry);
|
|
@@ -1247,16 +1351,19 @@ export async function distillManifestEntry(_entryId, _projectRoot) {
|
|
|
1247
1351
|
// ============================================================================
|
|
1248
1352
|
/**
|
|
1249
1353
|
* Migrate existing .cleo/MANIFEST.jsonl entries into the pipeline_manifest table.
|
|
1250
|
-
* Skips entries that already exist (by id).
|
|
1251
|
-
*
|
|
1354
|
+
* Skips entries that already exist (by id). Entries whose id, linked task ids
|
|
1355
|
+
* or file reference fail the T12829 identity checks are skipped, not inserted,
|
|
1356
|
+
* and listed in `invalid`. Renames MANIFEST.jsonl to MANIFEST.jsonl.migrated
|
|
1357
|
+
* when done.
|
|
1252
1358
|
*
|
|
1253
|
-
* @returns Count of migrated and skipped entries
|
|
1359
|
+
* @returns Count of migrated and skipped entries (skipped includes invalid ones),
|
|
1360
|
+
* and every entry refused for an identity problem.
|
|
1254
1361
|
*/
|
|
1255
1362
|
export async function migrateManifestJsonlToSqlite(projectRoot) {
|
|
1256
1363
|
const root = manifestScope(projectRoot).worktreeRoot;
|
|
1257
1364
|
const manifestPath = join(resolveCleoDir(root), 'MANIFEST.jsonl');
|
|
1258
1365
|
if (!existsSync(manifestPath)) {
|
|
1259
|
-
return { migrated: 0, skipped: 0 };
|
|
1366
|
+
return { migrated: 0, skipped: 0, invalid: [] };
|
|
1260
1367
|
}
|
|
1261
1368
|
const content = readFileSync(manifestPath, 'utf-8');
|
|
1262
1369
|
const lines = content.split('\n');
|
|
@@ -1273,17 +1380,26 @@ export async function migrateManifestJsonlToSqlite(projectRoot) {
|
|
|
1273
1380
|
}
|
|
1274
1381
|
}
|
|
1275
1382
|
if (entries.length === 0) {
|
|
1276
|
-
return { migrated: 0, skipped: 0 };
|
|
1383
|
+
return { migrated: 0, skipped: 0, invalid: [] };
|
|
1277
1384
|
}
|
|
1278
1385
|
const binding = await getBinding(projectRoot);
|
|
1279
1386
|
const db = binding.db;
|
|
1280
1387
|
let migrated = 0;
|
|
1281
1388
|
let skipped = 0;
|
|
1389
|
+
const invalid = [];
|
|
1282
1390
|
for (const entry of entries) {
|
|
1283
1391
|
if (!entry.id) {
|
|
1284
1392
|
skipped++;
|
|
1285
1393
|
continue;
|
|
1286
1394
|
}
|
|
1395
|
+
// T12829: never import an identity append would refuse (bad id, bad
|
|
1396
|
+
// linked task id, or a file reference that escapes the project).
|
|
1397
|
+
const issues = manifestIdentityIssues(entry, root);
|
|
1398
|
+
if (issues.length > 0) {
|
|
1399
|
+
invalid.push({ entryId: String(entry.id).slice(0, 120), issues });
|
|
1400
|
+
skipped++;
|
|
1401
|
+
continue;
|
|
1402
|
+
}
|
|
1287
1403
|
const inserted = db.transaction(() => {
|
|
1288
1404
|
const existing = readStoredRows(binding, true, entry.id);
|
|
1289
1405
|
requireModernRows(existing);
|
|
@@ -1304,6 +1420,6 @@ export async function migrateManifestJsonlToSqlite(projectRoot) {
|
|
|
1304
1420
|
catch {
|
|
1305
1421
|
// Non-fatal — file may already be renamed or locked
|
|
1306
1422
|
}
|
|
1307
|
-
return { migrated, skipped };
|
|
1423
|
+
return { migrated, skipped, invalid };
|
|
1308
1424
|
}
|
|
1309
1425
|
//# sourceMappingURL=pipeline-manifest-sqlite.js.map
|