@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
|
@@ -21,8 +21,7 @@ import { appendFileSync, mkdirSync } from 'node:fs';
|
|
|
21
21
|
import { dirname, isAbsolute, join, normalize, relative, sep } from 'node:path';
|
|
22
22
|
import { getCleoHome } from '@cleocode/paths';
|
|
23
23
|
import { getTaskAccessor } from '../store/data-accessor.js';
|
|
24
|
-
import {
|
|
25
|
-
import { readLiveFocus } from './focus-state-store.js';
|
|
24
|
+
import { readLiveFocus, resolveFocusSessionId } from './focus-state-store.js';
|
|
26
25
|
// ---------------------------------------------------------------------------
|
|
27
26
|
// Constants
|
|
28
27
|
// ---------------------------------------------------------------------------
|
|
@@ -88,16 +87,6 @@ function normalizeForCompare(path, projectRoot) {
|
|
|
88
87
|
p = p.slice(2);
|
|
89
88
|
return p;
|
|
90
89
|
}
|
|
91
|
-
/**
|
|
92
|
-
* Resolve the active-task ID for the given session, falling back to the
|
|
93
|
-
* accessor's `focus_state.currentTask` (matching `getContextDrift`'s
|
|
94
|
-
* behaviour) when the session has no task currently bound.
|
|
95
|
-
*/
|
|
96
|
-
function resolveActiveTaskId(session, focusTask) {
|
|
97
|
-
if (session?.taskWork?.taskId)
|
|
98
|
-
return session.taskWork.taskId;
|
|
99
|
-
return focusTask;
|
|
100
|
-
}
|
|
101
90
|
/**
|
|
102
91
|
* Return the audit-log path for the requested scope.
|
|
103
92
|
* - `local` → `<projectRoot>/.cleo/audit/session-drift.jsonl`
|
|
@@ -163,10 +152,13 @@ export async function detectSessionDrift(opts) {
|
|
|
163
152
|
// current task, not whichever session last touched the DB.
|
|
164
153
|
// T12500: BOUND session only — the report is written to an audit log, so an
|
|
165
154
|
// unbound caller records `sessionId: null` rather than a guessed session.
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
155
|
+
// T12501: THE focus-key rule — the same bound tiers, resolved once.
|
|
156
|
+
const sessionId = await resolveFocusSessionId(projectRoot);
|
|
157
|
+
// T12684: drift is watched only for a task still being worked. T12501: the
|
|
158
|
+
// live focus only — the session row's `taskWork` is set at start/spawn,
|
|
159
|
+
// never updated, and skips the done-task filter.
|
|
160
|
+
const focus = await readLiveFocus(accessor, sessionId);
|
|
161
|
+
const activeTaskId = focus.currentTask;
|
|
170
162
|
// Always read the modified-files set so a no-task report still reflects
|
|
171
163
|
// ground truth (callers display these even when there is no focus).
|
|
172
164
|
const modifiedRaw = await listChangedFiles(projectRoot);
|
|
@@ -174,7 +166,7 @@ export async function detectSessionDrift(opts) {
|
|
|
174
166
|
// No active task → no scope to diff against → no drift by definition.
|
|
175
167
|
if (!activeTaskId) {
|
|
176
168
|
return {
|
|
177
|
-
sessionId
|
|
169
|
+
sessionId,
|
|
178
170
|
activeTaskId: null,
|
|
179
171
|
declaredFiles: [],
|
|
180
172
|
modifiedFiles,
|
|
@@ -213,7 +205,7 @@ export async function detectSessionDrift(opts) {
|
|
|
213
205
|
const auditPath = auditPathOverride ?? resolveDriftAuditPath(projectRoot, auditScope);
|
|
214
206
|
const entry = {
|
|
215
207
|
timestamp: new Date().toISOString(),
|
|
216
|
-
sessionId
|
|
208
|
+
sessionId,
|
|
217
209
|
activeTaskId,
|
|
218
210
|
declaredFiles,
|
|
219
211
|
modifiedFiles,
|
|
@@ -224,7 +216,7 @@ export async function detectSessionDrift(opts) {
|
|
|
224
216
|
appendDriftAudit(auditPath, entry);
|
|
225
217
|
}
|
|
226
218
|
return {
|
|
227
|
-
sessionId
|
|
219
|
+
sessionId,
|
|
228
220
|
activeTaskId,
|
|
229
221
|
declaredFiles,
|
|
230
222
|
modifiedFiles,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drift-watchdog.js","sourceRoot":"","sources":["../../src/sessions/drift-watchdog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAEhF,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"drift-watchdog.js","sourceRoot":"","sources":["../../src/sessions/drift-watchdog.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,13 +5,14 @@
|
|
|
5
5
|
* nextAction, …). Historically it lived under ONE global meta key
|
|
6
6
|
* (`focus_state`) shared by every agent — so two concurrent agents writing
|
|
7
7
|
* their current task clobbered each other. This module keys it per resolved
|
|
8
|
-
* session id (`focus_state:<sessionId>`)
|
|
9
|
-
*
|
|
8
|
+
* session id (`focus_state:<sessionId>`). The legacy global key remains the
|
|
9
|
+
* focus of an UNBOUND caller only (T12501).
|
|
10
10
|
*
|
|
11
11
|
* Single source of truth: every read/write callsite across engine-ops,
|
|
12
12
|
* briefing, drift-watchdog, session-drift, session-switch, and orchestrate/pivot
|
|
13
|
-
* routes through {@link readFocusState} / {@link writeFocusState}
|
|
14
|
-
*
|
|
13
|
+
* routes through {@link readFocusState} / {@link writeFocusState}, and every
|
|
14
|
+
* caller picks its session through {@link resolveFocusSessionId}, so the
|
|
15
|
+
* keying is never duplicated (T12501).
|
|
15
16
|
*
|
|
16
17
|
* @task T11345
|
|
17
18
|
* @epic T11284
|
|
@@ -20,10 +21,17 @@ import type { TaskWorkState } from '@cleocode/contracts';
|
|
|
20
21
|
/**
|
|
21
22
|
* The legacy global focus_state meta key, shared by all agents before T11345.
|
|
22
23
|
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
24
|
+
* UNBOUND CALLERS ONLY (T12501): it is the focus of a caller that is bound to
|
|
25
|
+
* no session — {@link resolveFocusSessionId} returned `null`. A caller bound
|
|
26
|
+
* to a session never reads or writes it: its focus lives only under
|
|
27
|
+
* `focus_state:<sessionId>`. The exceptions only ever CLEAR its pointer: a
|
|
28
|
+
* bound session with no key yet adopts a live legacy pointer once on upgrade
|
|
29
|
+
* ({@link readFocusState}), a bound `cleo stop` releases it
|
|
30
|
+
* ({@link releaseLegacyPointer}), and {@link clearFocusForFinishedTask} clears
|
|
31
|
+
* a pointer to a finished task wherever it is.
|
|
25
32
|
*
|
|
26
33
|
* @task T11345
|
|
34
|
+
* @task T12501
|
|
27
35
|
*/
|
|
28
36
|
export declare const LEGACY_FOCUS_STATE_KEY: "focus_state";
|
|
29
37
|
/**
|
|
@@ -47,11 +55,40 @@ export interface FocusStateMetaAccessor {
|
|
|
47
55
|
}) => Promise<T>): Promise<T>;
|
|
48
56
|
}
|
|
49
57
|
/**
|
|
50
|
-
*
|
|
58
|
+
* THE focus-key rule (T12501): the session whose focus key the CALLER reads
|
|
59
|
+
* and writes. Every focus reader and writer — start, stop, pivot, complete's
|
|
60
|
+
* clear, `cleo current`, session status, briefing, inject, bootstrap, stats,
|
|
61
|
+
* validation, attention and orchestrator startup — resolves through this one
|
|
62
|
+
* function, so a write and the read that follows it can never land on
|
|
63
|
+
* different keys.
|
|
64
|
+
*
|
|
65
|
+
* It is the mutation resolver (`resolveBoundSessionId` in `store/session-store.ts`): the daemon
|
|
66
|
+
* connection handle, then an env-named session whose row exists, then the
|
|
67
|
+
* session this terminal started or resumed. It never guesses the newest
|
|
68
|
+
* active row — from an unbound terminal that is another agent's session, and
|
|
69
|
+
* its focus is not this caller's.
|
|
70
|
+
*
|
|
71
|
+
* `null` means the caller is bound to no session (or the session store
|
|
72
|
+
* cannot be opened); {@link focusStateKey} then maps it to the legacy global
|
|
73
|
+
* key (unbound callers only).
|
|
74
|
+
*
|
|
75
|
+
* @param cwd - Project root for session resolution.
|
|
76
|
+
* @returns The bound session id, or `null` when the caller is unbound.
|
|
77
|
+
* @example
|
|
78
|
+
* ```ts
|
|
79
|
+
* const focus = await readLiveFocus(acc, await resolveFocusSessionId(projectRoot));
|
|
80
|
+
* ```
|
|
81
|
+
* @task T12501
|
|
82
|
+
*/
|
|
83
|
+
export declare function resolveFocusSessionId(cwd?: string): Promise<string | null>;
|
|
84
|
+
/**
|
|
85
|
+
* Compute the focus_state meta key for a session id from
|
|
86
|
+
* {@link resolveFocusSessionId} (or an explicitly named session).
|
|
51
87
|
*
|
|
52
88
|
* - A non-empty session id → the per-session key `focus_state:<sessionId>`.
|
|
53
|
-
* - `null` / `undefined` (
|
|
54
|
-
*
|
|
89
|
+
* - `null` / `undefined` (the caller is bound to no session) → the legacy
|
|
90
|
+
* global key, {@link LEGACY_FOCUS_STATE_KEY}. Only an unbound caller lands
|
|
91
|
+
* here (T12501).
|
|
55
92
|
*
|
|
56
93
|
* @param sessionId - Resolved session id, or `null` when none.
|
|
57
94
|
* @returns The meta key to read/write.
|
|
@@ -59,31 +96,69 @@ export interface FocusStateMetaAccessor {
|
|
|
59
96
|
*/
|
|
60
97
|
export declare function focusStateKey(sessionId: string | null | undefined): string;
|
|
61
98
|
/**
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
* the
|
|
65
|
-
*
|
|
99
|
+
* The focus session id for a caller already resolved by the read resolver
|
|
100
|
+
* (`resolveSessionForRead`): its own session when bound, `null` when the row
|
|
101
|
+
* is only the newest active one. Equal to {@link resolveFocusSessionId} — the
|
|
102
|
+
* read resolver tries the same bound tiers first — so a surface that needs
|
|
103
|
+
* both the session row and the focus key resolves once (T12501).
|
|
104
|
+
*
|
|
105
|
+
* @param read - The read resolution: the session and its `unbound` label.
|
|
106
|
+
* @returns The bound session id, or `null` for an unbound caller.
|
|
107
|
+
* @example
|
|
108
|
+
* ```ts
|
|
109
|
+
* const read = await resolveSessionForRead(root);
|
|
110
|
+
* const focus = await readLiveFocus(acc, focusSessionIdFromRead(read));
|
|
111
|
+
* ```
|
|
112
|
+
* @task T12501
|
|
113
|
+
*/
|
|
114
|
+
export declare function focusSessionIdFromRead(read: {
|
|
115
|
+
readonly session: {
|
|
116
|
+
readonly id: string;
|
|
117
|
+
} | null;
|
|
118
|
+
readonly unbound: boolean;
|
|
119
|
+
}): string | null;
|
|
120
|
+
/**
|
|
121
|
+
* Read the RAW focus_state blob for a session id — for read-modify-write
|
|
122
|
+
* only. Anything that reports or acts on the current task reads
|
|
123
|
+
* {@link readLiveFocus}, which never returns a finished task (T12684).
|
|
66
124
|
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
125
|
+
* Reads {@link focusStateKey}. The legacy global key is an unbound caller's
|
|
126
|
+
* focus, never read as a bound session's — except once, on upgrade: when the
|
|
127
|
+
* session's key is ABSENT (not merely `currentTask: null`) and the legacy key
|
|
128
|
+
* holds a live pointer, the session adopts it and the legacy pointer is
|
|
129
|
+
* cleared, so no second session can adopt it too (T12501).
|
|
71
130
|
*
|
|
72
131
|
* @param accessor - Metadata accessor.
|
|
73
|
-
* @param sessionId -
|
|
74
|
-
*
|
|
132
|
+
* @param sessionId - Session id from {@link resolveFocusSessionId}, or `null`
|
|
133
|
+
* for an unbound caller (the legacy key).
|
|
134
|
+
* @returns The focus_state blob, or `null` when there is none.
|
|
75
135
|
* @task T11345
|
|
136
|
+
* @task T12501
|
|
76
137
|
*/
|
|
77
138
|
export declare function readFocusState(accessor: FocusStateMetaAccessor, sessionId: string | null | undefined): Promise<TaskWorkState | null>;
|
|
78
139
|
/**
|
|
79
|
-
*
|
|
140
|
+
* Clear the legacy global pointer when it names `taskId` — for a BOUND
|
|
141
|
+
* caller's `cleo stop`, so a pre-upgrade pointer to the task it stopped is not
|
|
142
|
+
* left behind for unbound callers (T12501). Compare-and-set on the pointer.
|
|
143
|
+
*
|
|
144
|
+
* @param accessor - Metadata accessor.
|
|
145
|
+
* @param taskId - The task being stopped.
|
|
146
|
+
* @returns `true` when the legacy pointer was cleared.
|
|
147
|
+
* @task T12501
|
|
148
|
+
*/
|
|
149
|
+
export declare function releaseLegacyPointer(accessor: FocusStateMetaAccessor, taskId: string): Promise<boolean>;
|
|
150
|
+
/**
|
|
151
|
+
* Write the focus_state blob for a session id.
|
|
80
152
|
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
153
|
+
* A bound session writes only its own key, so concurrent sessions never
|
|
154
|
+
* clobber each other; only an unbound caller (`sessionId` null) writes the
|
|
155
|
+
* legacy key. (A bound session touches the legacy key only to clear a pointer:
|
|
156
|
+
* adoption on upgrade, {@link releaseLegacyPointer} and
|
|
157
|
+
* {@link clearFocusForFinishedTask}.) (T12501)
|
|
84
158
|
*
|
|
85
159
|
* @param accessor - Metadata accessor.
|
|
86
|
-
* @param sessionId -
|
|
160
|
+
* @param sessionId - Session id from {@link resolveFocusSessionId}, or `null`
|
|
161
|
+
* for an unbound caller (the legacy key).
|
|
87
162
|
* @param value - The focus_state blob to persist.
|
|
88
163
|
* @task T11345
|
|
89
164
|
*/
|
|
@@ -98,7 +173,8 @@ export declare function writeFocusState(accessor: FocusStateMetaAccessor, sessio
|
|
|
98
173
|
*
|
|
99
174
|
* @param accessor - Metadata accessor.
|
|
100
175
|
* @param sessionIds - Session ids whose scoped key may hold the pointer
|
|
101
|
-
* (the
|
|
176
|
+
* (the caller's {@link resolveFocusSessionId}); duplicates and nulls are
|
|
177
|
+
* ignored.
|
|
102
178
|
* @param taskId - The completed task.
|
|
103
179
|
* @returns The meta keys that were cleared (empty when none pointed at it).
|
|
104
180
|
* @task T12660
|
|
@@ -160,7 +236,8 @@ export interface LiveFocus {
|
|
|
160
236
|
* read reports it stale.
|
|
161
237
|
*
|
|
162
238
|
* @param accessor - Metadata accessor with a live task lookup.
|
|
163
|
-
* @param sessionId -
|
|
239
|
+
* @param sessionId - Session id from {@link resolveFocusSessionId}, or `null`
|
|
240
|
+
* for an unbound caller (the legacy key).
|
|
164
241
|
* @param known - Tasks the caller already loaded (e.g. the briefing's task
|
|
165
242
|
* map): a pointer found there skips the extra lookup (T12698). A pointer
|
|
166
243
|
* absent from it (archived tasks are not listed) is still looked up.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus-state-store.d.ts","sourceRoot":"","sources":["../../src/sessions/focus-state-store.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"focus-state-store.d.ts","sourceRoot":"","sources":["../../src/sessions/focus-state-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,13 +5,14 @@
|
|
|
5
5
|
* nextAction, …). Historically it lived under ONE global meta key
|
|
6
6
|
* (`focus_state`) shared by every agent — so two concurrent agents writing
|
|
7
7
|
* their current task clobbered each other. This module keys it per resolved
|
|
8
|
-
* session id (`focus_state:<sessionId>`)
|
|
9
|
-
*
|
|
8
|
+
* session id (`focus_state:<sessionId>`). The legacy global key remains the
|
|
9
|
+
* focus of an UNBOUND caller only (T12501).
|
|
10
10
|
*
|
|
11
11
|
* Single source of truth: every read/write callsite across engine-ops,
|
|
12
12
|
* briefing, drift-watchdog, session-drift, session-switch, and orchestrate/pivot
|
|
13
|
-
* routes through {@link readFocusState} / {@link writeFocusState}
|
|
14
|
-
*
|
|
13
|
+
* routes through {@link readFocusState} / {@link writeFocusState}, and every
|
|
14
|
+
* caller picks its session through {@link resolveFocusSessionId}, so the
|
|
15
|
+
* keying is never duplicated (T12501).
|
|
15
16
|
*
|
|
16
17
|
* @task T11345
|
|
17
18
|
* @epic T11284
|
|
@@ -20,18 +21,65 @@ import { TERMINAL_TASK_STATUSES } from '@cleocode/contracts';
|
|
|
20
21
|
/**
|
|
21
22
|
* The legacy global focus_state meta key, shared by all agents before T11345.
|
|
22
23
|
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
24
|
+
* UNBOUND CALLERS ONLY (T12501): it is the focus of a caller that is bound to
|
|
25
|
+
* no session — {@link resolveFocusSessionId} returned `null`. A caller bound
|
|
26
|
+
* to a session never reads or writes it: its focus lives only under
|
|
27
|
+
* `focus_state:<sessionId>`. The exceptions only ever CLEAR its pointer: a
|
|
28
|
+
* bound session with no key yet adopts a live legacy pointer once on upgrade
|
|
29
|
+
* ({@link readFocusState}), a bound `cleo stop` releases it
|
|
30
|
+
* ({@link releaseLegacyPointer}), and {@link clearFocusForFinishedTask} clears
|
|
31
|
+
* a pointer to a finished task wherever it is.
|
|
25
32
|
*
|
|
26
33
|
* @task T11345
|
|
34
|
+
* @task T12501
|
|
27
35
|
*/
|
|
28
36
|
export const LEGACY_FOCUS_STATE_KEY = 'focus_state';
|
|
29
37
|
/**
|
|
30
|
-
*
|
|
38
|
+
* THE focus-key rule (T12501): the session whose focus key the CALLER reads
|
|
39
|
+
* and writes. Every focus reader and writer — start, stop, pivot, complete's
|
|
40
|
+
* clear, `cleo current`, session status, briefing, inject, bootstrap, stats,
|
|
41
|
+
* validation, attention and orchestrator startup — resolves through this one
|
|
42
|
+
* function, so a write and the read that follows it can never land on
|
|
43
|
+
* different keys.
|
|
44
|
+
*
|
|
45
|
+
* It is the mutation resolver (`resolveBoundSessionId` in `store/session-store.ts`): the daemon
|
|
46
|
+
* connection handle, then an env-named session whose row exists, then the
|
|
47
|
+
* session this terminal started or resumed. It never guesses the newest
|
|
48
|
+
* active row — from an unbound terminal that is another agent's session, and
|
|
49
|
+
* its focus is not this caller's.
|
|
50
|
+
*
|
|
51
|
+
* `null` means the caller is bound to no session (or the session store
|
|
52
|
+
* cannot be opened); {@link focusStateKey} then maps it to the legacy global
|
|
53
|
+
* key (unbound callers only).
|
|
54
|
+
*
|
|
55
|
+
* @param cwd - Project root for session resolution.
|
|
56
|
+
* @returns The bound session id, or `null` when the caller is unbound.
|
|
57
|
+
* @example
|
|
58
|
+
* ```ts
|
|
59
|
+
* const focus = await readLiveFocus(acc, await resolveFocusSessionId(projectRoot));
|
|
60
|
+
* ```
|
|
61
|
+
* @task T12501
|
|
62
|
+
*/
|
|
63
|
+
export async function resolveFocusSessionId(cwd) {
|
|
64
|
+
// Dynamic: the store module is heavy and this module is imported widely.
|
|
65
|
+
const { resolveBoundSessionId } = await import('../store/session-store.js');
|
|
66
|
+
try {
|
|
67
|
+
return await resolveBoundSessionId(cwd);
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
// No readable session store means no session can be bound: the caller is
|
|
71
|
+
// unbound, exactly as before any session existed.
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Compute the focus_state meta key for a session id from
|
|
77
|
+
* {@link resolveFocusSessionId} (or an explicitly named session).
|
|
31
78
|
*
|
|
32
79
|
* - A non-empty session id → the per-session key `focus_state:<sessionId>`.
|
|
33
|
-
* - `null` / `undefined` (
|
|
34
|
-
*
|
|
80
|
+
* - `null` / `undefined` (the caller is bound to no session) → the legacy
|
|
81
|
+
* global key, {@link LEGACY_FOCUS_STATE_KEY}. Only an unbound caller lands
|
|
82
|
+
* here (T12501).
|
|
35
83
|
*
|
|
36
84
|
* @param sessionId - Resolved session id, or `null` when none.
|
|
37
85
|
* @returns The meta key to read/write.
|
|
@@ -41,43 +89,122 @@ export function focusStateKey(sessionId) {
|
|
|
41
89
|
return sessionId ? `${LEGACY_FOCUS_STATE_KEY}:${sessionId}` : LEGACY_FOCUS_STATE_KEY;
|
|
42
90
|
}
|
|
43
91
|
/**
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
* the
|
|
47
|
-
*
|
|
92
|
+
* The focus session id for a caller already resolved by the read resolver
|
|
93
|
+
* (`resolveSessionForRead`): its own session when bound, `null` when the row
|
|
94
|
+
* is only the newest active one. Equal to {@link resolveFocusSessionId} — the
|
|
95
|
+
* read resolver tries the same bound tiers first — so a surface that needs
|
|
96
|
+
* both the session row and the focus key resolves once (T12501).
|
|
97
|
+
*
|
|
98
|
+
* @param read - The read resolution: the session and its `unbound` label.
|
|
99
|
+
* @returns The bound session id, or `null` for an unbound caller.
|
|
100
|
+
* @example
|
|
101
|
+
* ```ts
|
|
102
|
+
* const read = await resolveSessionForRead(root);
|
|
103
|
+
* const focus = await readLiveFocus(acc, focusSessionIdFromRead(read));
|
|
104
|
+
* ```
|
|
105
|
+
* @task T12501
|
|
106
|
+
*/
|
|
107
|
+
export function focusSessionIdFromRead(read) {
|
|
108
|
+
return read.unbound ? null : (read.session?.id ?? null);
|
|
109
|
+
}
|
|
110
|
+
/** Whether the accessor can look a task up (a {@link LiveFocusAccessor}). */
|
|
111
|
+
function hasTaskLookup(accessor) {
|
|
112
|
+
return 'loadSingleTask' in accessor;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Upgrade path (T12501): a bound session with no focus key yet adopts the
|
|
116
|
+
* pre-upgrade focus held in the legacy global key — once.
|
|
48
117
|
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
118
|
+
* Only a live pointer is adopted (a done, cancelled, archived or missing task
|
|
119
|
+
* is not). The blob is copied to the session key and the legacy pointer is
|
|
120
|
+
* cleared with a compare-and-set on that pointer, inside one transaction when
|
|
121
|
+
* the store offers one, so exactly one bound session can adopt it.
|
|
122
|
+
*
|
|
123
|
+
* @returns The adopted (or concurrently written) blob, or `null`.
|
|
124
|
+
*/
|
|
125
|
+
async function adoptLegacyFocus(accessor, sessionId) {
|
|
126
|
+
if (!hasTaskLookup(accessor))
|
|
127
|
+
return null;
|
|
128
|
+
const legacy = await accessor.getMetaValue(LEGACY_FOCUS_STATE_KEY);
|
|
129
|
+
const pointer = legacy?.currentTask ?? null;
|
|
130
|
+
if (!pointer)
|
|
131
|
+
return null;
|
|
132
|
+
if (staleFocusPointer(pointer, (await accessor.loadSingleTask(pointer))?.status))
|
|
133
|
+
return null;
|
|
134
|
+
const key = focusStateKey(sessionId);
|
|
135
|
+
const adopt = async (set) => {
|
|
136
|
+
const own = await accessor.getMetaValue(key);
|
|
137
|
+
if (own)
|
|
138
|
+
return own; // written meanwhile — the session's own focus wins
|
|
139
|
+
const now = await accessor.getMetaValue(LEGACY_FOCUS_STATE_KEY);
|
|
140
|
+
if (!now || now.currentTask !== pointer)
|
|
141
|
+
return null; // another session adopted it
|
|
142
|
+
await set(key, now);
|
|
143
|
+
await set(LEGACY_FOCUS_STATE_KEY, { ...now, currentTask: null });
|
|
144
|
+
return now;
|
|
145
|
+
};
|
|
146
|
+
return accessor.transaction
|
|
147
|
+
? accessor.transaction((tx) => adopt((k, v) => tx.setMetaValue(k, v)))
|
|
148
|
+
: adopt((k, v) => accessor.setMetaValue(k, v));
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Read the RAW focus_state blob for a session id — for read-modify-write
|
|
152
|
+
* only. Anything that reports or acts on the current task reads
|
|
153
|
+
* {@link readLiveFocus}, which never returns a finished task (T12684).
|
|
154
|
+
*
|
|
155
|
+
* Reads {@link focusStateKey}. The legacy global key is an unbound caller's
|
|
156
|
+
* focus, never read as a bound session's — except once, on upgrade: when the
|
|
157
|
+
* session's key is ABSENT (not merely `currentTask: null`) and the legacy key
|
|
158
|
+
* holds a live pointer, the session adopts it and the legacy pointer is
|
|
159
|
+
* cleared, so no second session can adopt it too (T12501).
|
|
53
160
|
*
|
|
54
161
|
* @param accessor - Metadata accessor.
|
|
55
|
-
* @param sessionId -
|
|
56
|
-
*
|
|
162
|
+
* @param sessionId - Session id from {@link resolveFocusSessionId}, or `null`
|
|
163
|
+
* for an unbound caller (the legacy key).
|
|
164
|
+
* @returns The focus_state blob, or `null` when there is none.
|
|
57
165
|
* @task T11345
|
|
166
|
+
* @task T12501
|
|
58
167
|
*/
|
|
59
168
|
export async function readFocusState(accessor, sessionId) {
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
169
|
+
const own = await accessor.getMetaValue(focusStateKey(sessionId));
|
|
170
|
+
if (own || !sessionId)
|
|
171
|
+
return own;
|
|
172
|
+
return adoptLegacyFocus(accessor, sessionId);
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Clear the legacy global pointer when it names `taskId` — for a BOUND
|
|
176
|
+
* caller's `cleo stop`, so a pre-upgrade pointer to the task it stopped is not
|
|
177
|
+
* left behind for unbound callers (T12501). Compare-and-set on the pointer.
|
|
178
|
+
*
|
|
179
|
+
* @param accessor - Metadata accessor.
|
|
180
|
+
* @param taskId - The task being stopped.
|
|
181
|
+
* @returns `true` when the legacy pointer was cleared.
|
|
182
|
+
* @task T12501
|
|
183
|
+
*/
|
|
184
|
+
export async function releaseLegacyPointer(accessor, taskId) {
|
|
185
|
+
const clear = async (set) => {
|
|
186
|
+
const legacy = await accessor.getMetaValue(LEGACY_FOCUS_STATE_KEY);
|
|
187
|
+
if (legacy?.currentTask !== taskId)
|
|
188
|
+
return false;
|
|
189
|
+
await set(LEGACY_FOCUS_STATE_KEY, { ...legacy, currentTask: null });
|
|
190
|
+
return true;
|
|
191
|
+
};
|
|
192
|
+
return accessor.transaction
|
|
193
|
+
? accessor.transaction((tx) => clear((k, v) => tx.setMetaValue(k, v)))
|
|
194
|
+
: clear((k, v) => accessor.setMetaValue(k, v));
|
|
71
195
|
}
|
|
72
196
|
/**
|
|
73
|
-
* Write the focus_state blob for a
|
|
197
|
+
* Write the focus_state blob for a session id.
|
|
74
198
|
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
*
|
|
199
|
+
* A bound session writes only its own key, so concurrent sessions never
|
|
200
|
+
* clobber each other; only an unbound caller (`sessionId` null) writes the
|
|
201
|
+
* legacy key. (A bound session touches the legacy key only to clear a pointer:
|
|
202
|
+
* adoption on upgrade, {@link releaseLegacyPointer} and
|
|
203
|
+
* {@link clearFocusForFinishedTask}.) (T12501)
|
|
78
204
|
*
|
|
79
205
|
* @param accessor - Metadata accessor.
|
|
80
|
-
* @param sessionId -
|
|
206
|
+
* @param sessionId - Session id from {@link resolveFocusSessionId}, or `null`
|
|
207
|
+
* for an unbound caller (the legacy key).
|
|
81
208
|
* @param value - The focus_state blob to persist.
|
|
82
209
|
* @task T11345
|
|
83
210
|
*/
|
|
@@ -94,7 +221,8 @@ export async function writeFocusState(accessor, sessionId, value) {
|
|
|
94
221
|
*
|
|
95
222
|
* @param accessor - Metadata accessor.
|
|
96
223
|
* @param sessionIds - Session ids whose scoped key may hold the pointer
|
|
97
|
-
* (the
|
|
224
|
+
* (the caller's {@link resolveFocusSessionId}); duplicates and nulls are
|
|
225
|
+
* ignored.
|
|
98
226
|
* @param taskId - The completed task.
|
|
99
227
|
* @returns The meta keys that were cleared (empty when none pointed at it).
|
|
100
228
|
* @task T12660
|
|
@@ -164,7 +292,8 @@ export function staleFocusWarning(stale, next) {
|
|
|
164
292
|
* read reports it stale.
|
|
165
293
|
*
|
|
166
294
|
* @param accessor - Metadata accessor with a live task lookup.
|
|
167
|
-
* @param sessionId -
|
|
295
|
+
* @param sessionId - Session id from {@link resolveFocusSessionId}, or `null`
|
|
296
|
+
* for an unbound caller (the legacy key).
|
|
168
297
|
* @param known - Tasks the caller already loaded (e.g. the briefing's task
|
|
169
298
|
* map): a pointer found there skips the extra lookup (T12698). A pointer
|
|
170
299
|
* absent from it (archived tasks are not listed) is still looked up.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus-state-store.js","sourceRoot":"","sources":["../../src/sessions/focus-state-store.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"focus-state-store.js","sourceRoot":"","sources":["../../src/sessions/focus-state-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handoff.d.ts","sourceRoot":"","sources":["../../src/sessions/handoff.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,EACV,iBAAiB,
|
|
1
|
+
{"version":3,"file":"handoff.d.ts","sourceRoot":"","sources":["../../src/sessions/handoff.ts"],"names":[],"mappings":"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"}
|