@cleocode/core 2026.9.20 → 2026.9.22
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/adapters/discovery.d.ts.map +1 -1
- package/dist/adapters/discovery.js +3 -10
- package/dist/adapters/discovery.js.map +1 -1
- package/dist/adrs/link-pipeline.js +2 -2
- package/dist/adrs/link-pipeline.js.map +1 -1
- package/dist/adrs/parse.js +3 -3
- package/dist/adrs/parse.js.map +1 -1
- package/dist/agents/invoke-meta-agent.d.ts.map +1 -1
- package/dist/agents/invoke-meta-agent.js +8 -4
- package/dist/agents/invoke-meta-agent.js.map +1 -1
- package/dist/agents/scaffold.d.ts.map +1 -1
- package/dist/agents/scaffold.js +0 -1
- package/dist/agents/scaffold.js.map +1 -1
- package/dist/bootstrap.d.ts +5 -1
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +45 -21
- package/dist/bootstrap.js.map +1 -1
- package/dist/cloud/crypto.d.ts +47 -0
- package/dist/cloud/crypto.d.ts.map +1 -0
- package/dist/cloud/crypto.js +223 -0
- package/dist/cloud/crypto.js.map +1 -0
- package/dist/cloud/http.d.ts +52 -0
- package/dist/cloud/http.d.ts.map +1 -0
- package/dist/cloud/http.js +98 -0
- package/dist/cloud/http.js.map +1 -0
- package/dist/cloud/index.d.ts +19 -0
- package/dist/cloud/index.d.ts.map +1 -0
- package/dist/cloud/index.js +19 -0
- package/dist/cloud/index.js.map +1 -0
- package/dist/cloud/journal.d.ts +169 -0
- package/dist/cloud/journal.d.ts.map +1 -0
- package/dist/cloud/journal.js +428 -0
- package/dist/cloud/journal.js.map +1 -0
- package/dist/cloud/keys.d.ts +213 -0
- package/dist/cloud/keys.d.ts.map +1 -0
- package/dist/cloud/keys.js +362 -0
- package/dist/cloud/keys.js.map +1 -0
- package/dist/cloud/manifest-check.d.ts +36 -0
- package/dist/cloud/manifest-check.d.ts.map +1 -0
- package/dist/cloud/manifest-check.js +70 -0
- package/dist/cloud/manifest-check.js.map +1 -0
- package/dist/cloud/projects.d.ts +13 -0
- package/dist/cloud/projects.d.ts.map +1 -0
- package/dist/cloud/projects.js +11 -0
- package/dist/cloud/projects.js.map +1 -0
- package/dist/cloud/signing.d.ts +105 -0
- package/dist/cloud/signing.d.ts.map +1 -0
- package/dist/cloud/signing.js +117 -0
- package/dist/cloud/signing.js.map +1 -0
- package/dist/cloud/streams.d.ts +6 -0
- package/dist/cloud/streams.d.ts.map +1 -0
- package/dist/cloud/streams.js +5 -0
- package/dist/cloud/streams.js.map +1 -0
- package/dist/decide/audit.d.ts +131 -0
- package/dist/decide/audit.d.ts.map +1 -0
- package/dist/decide/audit.js +98 -0
- package/dist/decide/audit.js.map +1 -0
- package/dist/decide/budget.d.ts +91 -0
- package/dist/decide/budget.d.ts.map +1 -0
- package/dist/decide/budget.js +194 -0
- package/dist/decide/budget.js.map +1 -0
- package/dist/decide/cache.d.ts +49 -0
- package/dist/decide/cache.d.ts.map +1 -0
- package/dist/decide/cache.js +87 -0
- package/dist/decide/cache.js.map +1 -0
- package/dist/decide/client.d.ts +103 -0
- package/dist/decide/client.d.ts.map +1 -0
- package/dist/decide/client.js +262 -0
- package/dist/decide/client.js.map +1 -0
- package/dist/decide/credentials.d.ts +159 -0
- package/dist/decide/credentials.d.ts.map +1 -0
- package/dist/decide/credentials.js +383 -0
- package/dist/decide/credentials.js.map +1 -0
- package/dist/decide/index.d.ts +18 -0
- package/dist/decide/index.d.ts.map +1 -0
- package/dist/decide/index.js +18 -0
- package/dist/decide/index.js.map +1 -0
- package/dist/decide/jev-wire.d.ts +155 -0
- package/dist/decide/jev-wire.d.ts.map +1 -0
- package/dist/decide/jev-wire.js +420 -0
- package/dist/decide/jev-wire.js.map +1 -0
- package/dist/decide/operations.d.ts +152 -0
- package/dist/decide/operations.d.ts.map +1 -0
- package/dist/decide/operations.js +199 -0
- package/dist/decide/operations.js.map +1 -0
- package/dist/decide/provider.d.ts +90 -0
- package/dist/decide/provider.d.ts.map +1 -0
- package/dist/decide/provider.js +43 -0
- package/dist/decide/provider.js.map +1 -0
- package/dist/decide/site.d.ts +148 -0
- package/dist/decide/site.d.ts.map +1 -0
- package/dist/decide/site.js +181 -0
- package/dist/decide/site.js.map +1 -0
- package/dist/decide/transport.d.ts +67 -0
- package/dist/decide/transport.d.ts.map +1 -0
- package/dist/decide/transport.js +350 -0
- package/dist/decide/transport.js.map +1 -0
- package/dist/dispatch/mutate-projection.d.ts.map +1 -1
- package/dist/dispatch/mutate-projection.js +5 -0
- package/dist/dispatch/mutate-projection.js.map +1 -1
- package/dist/docs/docs-update.d.ts.map +1 -1
- package/dist/docs/docs-update.js +25 -9
- package/dist/docs/docs-update.js.map +1 -1
- package/dist/docs/export-document.js +5963 -2406
- package/dist/docs/export-document.js.map +3 -3
- package/dist/docs/index.d.ts +2 -2
- package/dist/docs/index.d.ts.map +1 -1
- package/dist/docs/index.js +1 -1
- package/dist/docs/index.js.map +1 -1
- package/dist/docs/projection.d.ts.map +1 -1
- package/dist/docs/projection.js +2 -3
- package/dist/docs/projection.js.map +1 -1
- package/dist/docs/publish-pr.d.ts +69 -1
- package/dist/docs/publish-pr.d.ts.map +1 -1
- package/dist/docs/publish-pr.js +112 -10
- package/dist/docs/publish-pr.js.map +1 -1
- package/dist/doctor/db-substrate.d.ts +13 -8
- package/dist/doctor/db-substrate.d.ts.map +1 -1
- package/dist/doctor/db-substrate.js +39 -26
- package/dist/doctor/db-substrate.js.map +1 -1
- package/dist/doctor/index.d.ts +2 -0
- package/dist/doctor/index.d.ts.map +1 -1
- package/dist/doctor/index.js +1 -0
- package/dist/doctor/index.js.map +1 -1
- package/dist/doctor/knowledge.d.ts +16 -1
- package/dist/doctor/knowledge.d.ts.map +1 -1
- package/dist/doctor/knowledge.js +58 -32
- package/dist/doctor/knowledge.js.map +1 -1
- package/dist/doctor/nexus-schema-residency.d.ts +1 -1
- package/dist/doctor/nexus-schema-residency.d.ts.map +1 -1
- package/dist/doctor/nexus-schema-residency.js +3 -0
- package/dist/doctor/nexus-schema-residency.js.map +1 -1
- package/dist/doctor/project-identity.d.ts +44 -1
- package/dist/doctor/project-identity.d.ts.map +1 -1
- package/dist/doctor/project-identity.js +237 -10
- package/dist/doctor/project-identity.js.map +1 -1
- package/dist/doctor/projects.d.ts +170 -0
- package/dist/doctor/projects.d.ts.map +1 -0
- package/dist/doctor/projects.js +1075 -0
- package/dist/doctor/projects.js.map +1 -0
- package/dist/doctor/twin-collapse.d.ts +97 -0
- package/dist/doctor/twin-collapse.d.ts.map +1 -0
- package/dist/doctor/twin-collapse.js +168 -0
- package/dist/doctor/twin-collapse.js.map +1 -0
- package/dist/doctor/worktree-orphans.d.ts.map +1 -1
- package/dist/doctor/worktree-orphans.js +13 -29
- package/dist/doctor/worktree-orphans.js.map +1 -1
- package/dist/doctor/worktree-stores.d.ts +128 -0
- package/dist/doctor/worktree-stores.d.ts.map +1 -0
- package/dist/doctor/worktree-stores.js +374 -0
- package/dist/doctor/worktree-stores.js.map +1 -0
- package/dist/engine/engine-ops.d.ts +36 -6
- package/dist/engine/engine-ops.d.ts.map +1 -1
- package/dist/engine/engine-ops.js +115 -14
- package/dist/engine/engine-ops.js.map +1 -1
- package/dist/error-catalog.d.ts.map +1 -1
- package/dist/error-catalog.js +21 -0
- package/dist/error-catalog.js.map +1 -1
- package/dist/error-registry.d.ts.map +1 -1
- package/dist/error-registry.js +40 -0
- package/dist/error-registry.js.map +1 -1
- package/dist/gateway-client/generated/types.gen.d.ts +1 -1
- package/dist/gc/cleanup.d.ts.map +1 -1
- package/dist/gc/cleanup.js +32 -19
- package/dist/gc/cleanup.js.map +1 -1
- package/dist/git/bounded-git.d.ts +170 -0
- package/dist/git/bounded-git.d.ts.map +1 -0
- package/dist/git/bounded-git.js +371 -0
- package/dist/git/bounded-git.js.map +1 -0
- package/dist/git/work-tree.d.ts +20 -0
- package/dist/git/work-tree.d.ts.map +1 -1
- package/dist/git/work-tree.js +20 -2
- package/dist/git/work-tree.js.map +1 -1
- package/dist/hooks/handlers/session-hooks.d.ts +11 -26
- package/dist/hooks/handlers/session-hooks.d.ts.map +1 -1
- package/dist/hooks/handlers/session-hooks.js +18 -47
- package/dist/hooks/handlers/session-hooks.js.map +1 -1
- package/dist/hooks/payload-schemas.d.ts +2 -2
- package/dist/index.d.ts +8 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/init/engine-ops.d.ts.map +1 -1
- package/dist/init/engine-ops.js +23 -1
- package/dist/init/engine-ops.js.map +1 -1
- package/dist/init.d.ts +158 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +578 -53
- package/dist/init.js.map +1 -1
- package/dist/inject/index.d.ts.map +1 -1
- package/dist/inject/index.js +8 -3
- package/dist/inject/index.js.map +1 -1
- package/dist/injection.d.ts +55 -0
- package/dist/injection.d.ts.map +1 -1
- package/dist/injection.js +102 -6
- package/dist/injection.js.map +1 -1
- package/dist/internal.d.ts +11 -7
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +9 -5
- package/dist/internal.js.map +1 -1
- package/dist/issue/diagnostics.d.ts.map +1 -1
- package/dist/issue/diagnostics.js +2 -1
- package/dist/issue/diagnostics.js.map +1 -1
- package/dist/lib/concurrency.d.ts +25 -0
- package/dist/lib/concurrency.d.ts.map +1 -0
- package/dist/lib/concurrency.js +43 -0
- package/dist/lib/concurrency.js.map +1 -0
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +1 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lifecycle/engine-ops.d.ts.map +1 -1
- package/dist/lifecycle/engine-ops.js +4 -2
- package/dist/lifecycle/engine-ops.js.map +1 -1
- package/dist/lifecycle/stage-guidance.d.ts +5 -0
- package/dist/lifecycle/stage-guidance.d.ts.map +1 -1
- package/dist/lifecycle/stage-guidance.js +14 -4
- package/dist/lifecycle/stage-guidance.js.map +1 -1
- package/dist/llm/catalog-cache.d.ts +3 -2
- package/dist/llm/catalog-cache.d.ts.map +1 -1
- package/dist/llm/catalog-cache.js +5 -5
- package/dist/llm/catalog-cache.js.map +1 -1
- package/dist/llm/credentials.d.ts +4 -4
- package/dist/llm/credentials.js +6 -6
- package/dist/llm/credentials.js.map +1 -1
- package/dist/llm/plugin-facade.js +4400 -1801
- package/dist/llm/plugin-facade.js.map +3 -3
- package/dist/llm/stable-device-id.d.ts.map +1 -1
- package/dist/llm/stable-device-id.js +3 -5
- package/dist/llm/stable-device-id.js.map +1 -1
- package/dist/memory/attention.js +31 -31
- package/dist/memory/attention.js.map +1 -1
- package/dist/memory/decision-contradiction.d.ts +152 -0
- package/dist/memory/decision-contradiction.d.ts.map +1 -0
- package/dist/memory/decision-contradiction.js +273 -0
- package/dist/memory/decision-contradiction.js.map +1 -0
- package/dist/memory/decisions.d.ts +42 -11
- package/dist/memory/decisions.d.ts.map +1 -1
- package/dist/memory/decisions.js +153 -56
- package/dist/memory/decisions.js.map +1 -1
- package/dist/memory/dialectic-evaluator.d.ts +7 -0
- package/dist/memory/dialectic-evaluator.d.ts.map +1 -1
- package/dist/memory/dialectic-evaluator.js +23 -8
- package/dist/memory/dialectic-evaluator.js.map +1 -1
- package/dist/memory/dispatch-trace-format.d.ts +39 -0
- package/dist/memory/dispatch-trace-format.d.ts.map +1 -0
- package/dist/memory/dispatch-trace-format.js +54 -0
- package/dist/memory/dispatch-trace-format.js.map +1 -0
- package/dist/memory/dispatch-trace.d.ts.map +1 -1
- package/dist/memory/dispatch-trace.js +1 -27
- package/dist/memory/dispatch-trace.js.map +1 -1
- package/dist/memory/engine-compat.d.ts +2 -0
- package/dist/memory/engine-compat.d.ts.map +1 -1
- package/dist/memory/engine-compat.js +1 -0
- package/dist/memory/engine-compat.js.map +1 -1
- package/dist/memory/import-from-provider.js +3 -3
- package/dist/memory/import-from-provider.js.map +1 -1
- package/dist/memory/learnings.d.ts +2 -2
- package/dist/memory/observation-type-decision.d.ts +96 -0
- package/dist/memory/observation-type-decision.d.ts.map +1 -0
- package/dist/memory/observation-type-decision.js +218 -0
- package/dist/memory/observation-type-decision.js.map +1 -0
- package/dist/memory/redaction.js +2 -0
- package/dist/memory/redaction.js.map +1 -1
- package/dist/memory/retrieval/build-retrieval-bundle.d.ts +9 -2
- package/dist/memory/retrieval/build-retrieval-bundle.d.ts.map +1 -1
- package/dist/memory/retrieval/build-retrieval-bundle.js +42 -11
- package/dist/memory/retrieval/build-retrieval-bundle.js.map +1 -1
- package/dist/memory/retrieval/get-current-session-id.d.ts +5 -0
- package/dist/memory/retrieval/get-current-session-id.d.ts.map +1 -1
- package/dist/memory/retrieval/get-current-session-id.js +7 -2
- package/dist/memory/retrieval/get-current-session-id.js.map +1 -1
- package/dist/memory/retrieval/observe.d.ts.map +1 -1
- package/dist/memory/retrieval/observe.js +30 -29
- package/dist/memory/retrieval/observe.js.map +1 -1
- package/dist/nexus/analyze-orchestrator.d.ts +38 -0
- package/dist/nexus/analyze-orchestrator.d.ts.map +1 -1
- package/dist/nexus/analyze-orchestrator.js +136 -48
- package/dist/nexus/analyze-orchestrator.js.map +1 -1
- package/dist/nexus/assessment-projection.d.ts +76 -0
- package/dist/nexus/assessment-projection.d.ts.map +1 -0
- package/dist/nexus/assessment-projection.js +143 -0
- package/dist/nexus/assessment-projection.js.map +1 -0
- package/dist/nexus/assessment-store.d.ts +14 -2
- package/dist/nexus/assessment-store.d.ts.map +1 -1
- package/dist/nexus/assessment-store.js +21 -3
- package/dist/nexus/assessment-store.js.map +1 -1
- package/dist/nexus/checkout-nonce.d.ts +48 -0
- package/dist/nexus/checkout-nonce.d.ts.map +1 -0
- package/dist/nexus/checkout-nonce.js +84 -0
- package/dist/nexus/checkout-nonce.js.map +1 -0
- package/dist/nexus/devices.d.ts +93 -0
- package/dist/nexus/devices.d.ts.map +1 -0
- package/dist/nexus/devices.js +141 -0
- package/dist/nexus/devices.js.map +1 -0
- package/dist/nexus/freshness.d.ts.map +1 -1
- package/dist/nexus/freshness.js +25 -6
- package/dist/nexus/freshness.js.map +1 -1
- package/dist/nexus/git-state.d.ts +225 -0
- package/dist/nexus/git-state.d.ts.map +1 -0
- package/dist/nexus/git-state.js +677 -0
- package/dist/nexus/git-state.js.map +1 -0
- package/dist/nexus/graph-manifest.d.ts +20 -4
- package/dist/nexus/graph-manifest.d.ts.map +1 -1
- package/dist/nexus/graph-manifest.js +40 -5
- package/dist/nexus/graph-manifest.js.map +1 -1
- package/dist/nexus/identity.d.ts +68 -23
- package/dist/nexus/identity.d.ts.map +1 -1
- package/dist/nexus/identity.js +99 -22
- package/dist/nexus/identity.js.map +1 -1
- package/dist/nexus/index.d.ts +5 -2
- package/dist/nexus/index.d.ts.map +1 -1
- package/dist/nexus/index.js +10 -4
- package/dist/nexus/index.js.map +1 -1
- package/dist/nexus/knowledge.d.ts +5 -0
- package/dist/nexus/knowledge.d.ts.map +1 -1
- package/dist/nexus/knowledge.js +40 -5
- package/dist/nexus/knowledge.js.map +1 -1
- package/dist/nexus/legacy-alias.d.ts +60 -0
- package/dist/nexus/legacy-alias.d.ts.map +1 -0
- package/dist/nexus/legacy-alias.js +68 -0
- package/dist/nexus/legacy-alias.js.map +1 -0
- package/dist/nexus/migrate-json-to-sqlite.js +2 -2
- 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/path-map.d.ts +264 -20
- package/dist/nexus/path-map.d.ts.map +1 -1
- package/dist/nexus/path-map.js +580 -44
- package/dist/nexus/path-map.js.map +1 -1
- package/dist/nexus/projects-clean.d.ts +9 -1
- package/dist/nexus/projects-clean.d.ts.map +1 -1
- package/dist/nexus/projects-clean.js +126 -14
- package/dist/nexus/projects-clean.js.map +1 -1
- package/dist/nexus/projects-scan.d.ts +56 -1
- package/dist/nexus/projects-scan.d.ts.map +1 -1
- package/dist/nexus/projects-scan.js +144 -3
- package/dist/nexus/projects-scan.js.map +1 -1
- package/dist/nexus/registry-hygiene.d.ts +18 -2
- package/dist/nexus/registry-hygiene.d.ts.map +1 -1
- package/dist/nexus/registry-hygiene.js +37 -11
- package/dist/nexus/registry-hygiene.js.map +1 -1
- package/dist/nexus/registry-roots.d.ts +47 -0
- package/dist/nexus/registry-roots.d.ts.map +1 -0
- package/dist/nexus/registry-roots.js +79 -0
- package/dist/nexus/registry-roots.js.map +1 -0
- package/dist/nexus/registry.d.ts +50 -9
- package/dist/nexus/registry.d.ts.map +1 -1
- package/dist/nexus/registry.js +311 -156
- package/dist/nexus/registry.js.map +1 -1
- package/dist/nexus/stored-roots.d.ts +171 -0
- package/dist/nexus/stored-roots.d.ts.map +1 -0
- package/dist/nexus/stored-roots.js +253 -0
- package/dist/nexus/stored-roots.js.map +1 -0
- package/dist/nexus/transfer.d.ts.map +1 -1
- package/dist/nexus/transfer.js +3 -0
- package/dist/nexus/transfer.js.map +1 -1
- package/dist/nexus/user-profile-hygiene.d.ts +168 -0
- package/dist/nexus/user-profile-hygiene.d.ts.map +1 -0
- package/dist/nexus/user-profile-hygiene.js +305 -0
- package/dist/nexus/user-profile-hygiene.js.map +1 -0
- package/dist/nexus/user-profile.d.ts +53 -2
- package/dist/nexus/user-profile.d.ts.map +1 -1
- package/dist/nexus/user-profile.js +106 -4
- package/dist/nexus/user-profile.js.map +1 -1
- package/dist/orchestrate/lifecycle-ops.d.ts.map +1 -1
- package/dist/orchestrate/lifecycle-ops.js +4 -1
- package/dist/orchestrate/lifecycle-ops.js.map +1 -1
- package/dist/orchestrate/pivot.d.ts.map +1 -1
- package/dist/orchestrate/pivot.js +5 -1
- package/dist/orchestrate/pivot.js.map +1 -1
- package/dist/orchestrate/plan.d.ts.map +1 -1
- package/dist/orchestrate/plan.js +5 -2
- package/dist/orchestrate/plan.js.map +1 -1
- package/dist/orchestrate/query-ops.d.ts +7 -2
- package/dist/orchestrate/query-ops.d.ts.map +1 -1
- package/dist/orchestrate/query-ops.js +17 -6
- package/dist/orchestrate/query-ops.js.map +1 -1
- package/dist/orchestrate/spawn-ops.d.ts +12 -0
- package/dist/orchestrate/spawn-ops.d.ts.map +1 -1
- package/dist/orchestrate/spawn-ops.js +157 -71
- package/dist/orchestrate/spawn-ops.js.map +1 -1
- package/dist/orchestration/bootstrap.d.ts.map +1 -1
- package/dist/orchestration/bootstrap.js +4 -2
- package/dist/orchestration/bootstrap.js.map +1 -1
- package/dist/orchestration/classify-readiness.d.ts +37 -1
- package/dist/orchestration/classify-readiness.d.ts.map +1 -1
- package/dist/orchestration/classify-readiness.js +48 -19
- package/dist/orchestration/classify-readiness.js.map +1 -1
- package/dist/orchestration/index.d.ts +4 -2
- package/dist/orchestration/index.d.ts.map +1 -1
- package/dist/orchestration/index.js +6 -4
- package/dist/orchestration/index.js.map +1 -1
- package/dist/orchestration/lead-rollup.d.ts +8 -5
- package/dist/orchestration/lead-rollup.d.ts.map +1 -1
- package/dist/orchestration/lead-rollup.js +32 -15
- package/dist/orchestration/lead-rollup.js.map +1 -1
- package/dist/orchestration/owner-decision-readiness.d.ts +88 -0
- package/dist/orchestration/owner-decision-readiness.d.ts.map +1 -0
- package/dist/orchestration/owner-decision-readiness.js +152 -0
- package/dist/orchestration/owner-decision-readiness.js.map +1 -0
- package/dist/orchestration/parallel.d.ts.map +1 -1
- package/dist/orchestration/parallel.js +10 -17
- package/dist/orchestration/parallel.js.map +1 -1
- package/dist/orchestration/psyche-memory-budget.d.ts +105 -0
- package/dist/orchestration/psyche-memory-budget.d.ts.map +1 -0
- package/dist/orchestration/psyche-memory-budget.js +383 -0
- package/dist/orchestration/psyche-memory-budget.js.map +1 -0
- package/dist/orchestration/spawn-prompt.d.ts +16 -2
- package/dist/orchestration/spawn-prompt.d.ts.map +1 -1
- package/dist/orchestration/spawn-prompt.js +144 -181
- package/dist/orchestration/spawn-prompt.js.map +1 -1
- package/dist/orchestration/spawn.d.ts +7 -0
- package/dist/orchestration/spawn.d.ts.map +1 -1
- package/dist/orchestration/spawn.js +1 -0
- package/dist/orchestration/spawn.js.map +1 -1
- package/dist/orchestration/status.d.ts +8 -3
- package/dist/orchestration/status.d.ts.map +1 -1
- package/dist/orchestration/status.js +9 -6
- package/dist/orchestration/status.js.map +1 -1
- package/dist/orchestration/wave-topic.d.ts +54 -0
- package/dist/orchestration/wave-topic.d.ts.map +1 -0
- package/dist/orchestration/wave-topic.js +68 -0
- package/dist/orchestration/wave-topic.js.map +1 -0
- package/dist/orchestration/waves.d.ts +47 -8
- package/dist/orchestration/waves.d.ts.map +1 -1
- package/dist/orchestration/waves.js +152 -43
- package/dist/orchestration/waves.js.map +1 -1
- package/dist/paths.d.ts +24 -8
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +135 -71
- package/dist/paths.js.map +1 -1
- package/dist/phases/index.d.ts.map +1 -1
- package/dist/phases/index.js +6 -2
- package/dist/phases/index.js.map +1 -1
- package/dist/platform.d.ts +6 -1
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +8 -19
- package/dist/platform.js.map +1 -1
- package/dist/project-info.d.ts +18 -0
- package/dist/project-info.d.ts.map +1 -1
- package/dist/project-info.js +29 -1
- package/dist/project-info.js.map +1 -1
- package/dist/project-lifecycle.d.ts +91 -32
- package/dist/project-lifecycle.d.ts.map +1 -1
- package/dist/project-lifecycle.js +639 -75
- package/dist/project-lifecycle.js.map +1 -1
- package/dist/project-scope.d.ts +104 -4
- package/dist/project-scope.d.ts.map +1 -1
- package/dist/project-scope.js +263 -13
- package/dist/project-scope.js.map +1 -1
- package/dist/project-tombstone.d.ts +111 -0
- package/dist/project-tombstone.d.ts.map +1 -0
- package/dist/project-tombstone.js +220 -0
- package/dist/project-tombstone.js.map +1 -0
- package/dist/release/artifacts.d.ts.map +1 -1
- package/dist/release/artifacts.js +14 -9
- package/dist/release/artifacts.js.map +1 -1
- package/dist/release/ci-evidence.d.ts +233 -0
- package/dist/release/ci-evidence.d.ts.map +1 -0
- package/dist/release/ci-evidence.js +668 -0
- package/dist/release/ci-evidence.js.map +1 -0
- package/dist/release/engine-ops.d.ts.map +1 -1
- package/dist/release/engine-ops.js +3 -3
- package/dist/release/engine-ops.js.map +1 -1
- package/dist/release/github-pr.d.ts +30 -0
- package/dist/release/github-pr.d.ts.map +1 -1
- package/dist/release/github-pr.js +40 -0
- package/dist/release/github-pr.js.map +1 -1
- package/dist/release/plan.d.ts.map +1 -1
- package/dist/release/plan.js +11 -7
- package/dist/release/plan.js.map +1 -1
- package/dist/release/pr-evidence.d.ts +38 -0
- package/dist/release/pr-evidence.d.ts.map +1 -1
- package/dist/release/pr-evidence.js +79 -15
- package/dist/release/pr-evidence.js.map +1 -1
- package/dist/release/reconcile.d.ts.map +1 -1
- package/dist/release/reconcile.js +3 -2
- package/dist/release/reconcile.js.map +1 -1
- package/dist/release/release-manifest.d.ts +2 -1
- package/dist/release/release-manifest.d.ts.map +1 -1
- package/dist/release/release-manifest.js +6 -5
- package/dist/release/release-manifest.js.map +1 -1
- package/dist/render/nexus/graph/index.d.ts +4 -0
- package/dist/render/nexus/graph/index.d.ts.map +1 -1
- package/dist/render/nexus/graph/index.js +57 -0
- package/dist/render/nexus/graph/index.js.map +1 -1
- package/dist/resources/spawn-wrapper.d.ts +8 -1
- package/dist/resources/spawn-wrapper.d.ts.map +1 -1
- package/dist/resources/spawn-wrapper.js +42 -5
- package/dist/resources/spawn-wrapper.js.map +1 -1
- package/dist/routing/build-command-groups.d.ts.map +1 -1
- package/dist/routing/build-command-groups.js +1 -0
- package/dist/routing/build-command-groups.js.map +1 -1
- package/dist/sagas/index.d.ts +1 -1
- package/dist/sagas/index.d.ts.map +1 -1
- package/dist/sagas/index.js +1 -1
- package/dist/sagas/index.js.map +1 -1
- package/dist/sagas/reconcile.d.ts +24 -4
- package/dist/sagas/reconcile.d.ts.map +1 -1
- package/dist/sagas/reconcile.js +226 -100
- package/dist/sagas/reconcile.js.map +1 -1
- package/dist/scaffold/ensure-config.d.ts.map +1 -1
- package/dist/scaffold/ensure-config.js +31 -1
- package/dist/scaffold/ensure-config.js.map +1 -1
- package/dist/scaffold/project-identity.d.ts +2 -8
- package/dist/scaffold/project-identity.d.ts.map +1 -1
- package/dist/scaffold/project-identity.js +5 -21
- package/dist/scaffold/project-identity.js.map +1 -1
- package/dist/security/input-sanitization.d.ts +9 -1
- package/dist/security/input-sanitization.d.ts.map +1 -1
- package/dist/security/input-sanitization.js +20 -3
- package/dist/security/input-sanitization.js.map +1 -1
- package/dist/selfimprove/fix-gen.js +4409 -1810
- package/dist/selfimprove/fix-gen.js.map +3 -3
- package/dist/sentient/propose-tick.d.ts.map +1 -1
- package/dist/sentient/propose-tick.js +4 -2
- package/dist/sentient/propose-tick.js.map +1 -1
- package/dist/sequence/index.d.ts.map +1 -1
- package/dist/sequence/index.js +6 -23
- package/dist/sequence/index.js.map +1 -1
- package/dist/session/engine-ops.d.ts +15 -0
- package/dist/session/engine-ops.d.ts.map +1 -1
- package/dist/session/engine-ops.js +146 -22
- package/dist/session/engine-ops.js.map +1 -1
- package/dist/sessions/assumptions.d.ts.map +1 -1
- package/dist/sessions/assumptions.js +7 -4
- package/dist/sessions/assumptions.js.map +1 -1
- package/dist/sessions/briefing.d.ts +23 -0
- package/dist/sessions/briefing.d.ts.map +1 -1
- package/dist/sessions/briefing.js +59 -9
- package/dist/sessions/briefing.js.map +1 -1
- package/dist/sessions/decisions.d.ts +38 -3
- package/dist/sessions/decisions.d.ts.map +1 -1
- package/dist/sessions/decisions.js +235 -21
- package/dist/sessions/decisions.js.map +1 -1
- package/dist/sessions/drift-watchdog.d.ts.map +1 -1
- package/dist/sessions/drift-watchdog.js +8 -5
- package/dist/sessions/drift-watchdog.js.map +1 -1
- package/dist/sessions/focus-state-store.d.ts +89 -1
- package/dist/sessions/focus-state-store.d.ts.map +1 -1
- package/dist/sessions/focus-state-store.js +97 -1
- package/dist/sessions/focus-state-store.js.map +1 -1
- package/dist/sessions/index.d.ts +2 -2
- package/dist/sessions/index.d.ts.map +1 -1
- package/dist/sessions/index.js +34 -5
- 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 -3
- package/dist/sessions/session-drift.js.map +1 -1
- package/dist/sessions/session-end-snapshot-entry.d.ts +26 -0
- package/dist/sessions/session-end-snapshot-entry.d.ts.map +1 -0
- package/dist/sessions/session-end-snapshot-entry.js +59 -0
- package/dist/sessions/session-end-snapshot-entry.js.map +1 -0
- package/dist/sessions/session-end-snapshot.d.ts +114 -0
- package/dist/sessions/session-end-snapshot.d.ts.map +1 -0
- package/dist/sessions/session-end-snapshot.js +446 -0
- package/dist/sessions/session-end-snapshot.js.map +1 -0
- package/dist/sessions/session-manifest-mirror.d.ts.map +1 -1
- package/dist/sessions/session-manifest-mirror.js +10 -17
- package/dist/sessions/session-manifest-mirror.js.map +1 -1
- package/dist/sessions/session-switch.d.ts.map +1 -1
- package/dist/sessions/session-switch.js +5 -3
- package/dist/sessions/session-switch.js.map +1 -1
- package/dist/sessions/snapshot.d.ts.map +1 -1
- package/dist/sessions/snapshot.js +5 -4
- package/dist/sessions/snapshot.js.map +1 -1
- package/dist/sessions/terminal-identity.d.ts +169 -0
- package/dist/sessions/terminal-identity.d.ts.map +1 -0
- package/dist/sessions/terminal-identity.js +273 -0
- package/dist/sessions/terminal-identity.js.map +1 -0
- package/dist/setup/sections/verification.d.ts +1 -1
- package/dist/setup/sections/verification.d.ts.map +1 -1
- package/dist/setup/sections/verification.js +11 -15
- package/dist/setup/sections/verification.js.map +1 -1
- package/dist/skills/discovery.d.ts +20 -3
- package/dist/skills/discovery.d.ts.map +1 -1
- package/dist/skills/discovery.js +41 -4
- package/dist/skills/discovery.js.map +1 -1
- package/dist/skills/dispatch.d.ts +5 -2
- package/dist/skills/dispatch.d.ts.map +1 -1
- package/dist/skills/dispatch.js +5 -2
- package/dist/skills/dispatch.js.map +1 -1
- package/dist/skills/doctor.d.ts.map +1 -1
- package/dist/skills/doctor.js +5 -1
- package/dist/skills/doctor.js.map +1 -1
- package/dist/skills/federated-search.js +2 -2
- package/dist/skills/federated-search.js.map +1 -1
- package/dist/skills/index.d.ts +3 -3
- package/dist/skills/index.d.ts.map +1 -1
- package/dist/skills/index.js +1 -1
- package/dist/skills/index.js.map +1 -1
- package/dist/skills/migration.d.ts +5 -5
- package/dist/skills/migration.d.ts.map +1 -1
- package/dist/skills/migration.js +7 -9
- package/dist/skills/migration.js.map +1 -1
- package/dist/skills/orchestrator/startup.d.ts.map +1 -1
- package/dist/skills/orchestrator/startup.js +14 -7
- package/dist/skills/orchestrator/startup.js.map +1 -1
- package/dist/skills/prune-bundled.d.ts +267 -0
- package/dist/skills/prune-bundled.d.ts.map +1 -0
- package/dist/skills/prune-bundled.js +536 -0
- package/dist/skills/prune-bundled.js.map +1 -0
- package/dist/skills/skill-paths.d.ts +30 -3
- package/dist/skills/skill-paths.d.ts.map +1 -1
- package/dist/skills/skill-paths.js +28 -9
- package/dist/skills/skill-paths.js.map +1 -1
- package/dist/skills/skill-root.d.ts +60 -11
- package/dist/skills/skill-root.d.ts.map +1 -1
- package/dist/skills/skill-root.js +100 -14
- package/dist/skills/skill-root.js.map +1 -1
- package/dist/skills/skills-guard.js +5 -5
- package/dist/skills/skills-guard.js.map +1 -1
- package/dist/skills/types.d.ts +32 -1
- package/dist/skills/types.d.ts.map +1 -1
- package/dist/skills/types.js +17 -34
- package/dist/skills/types.js.map +1 -1
- package/dist/spawn/agent-identity.d.ts +51 -2
- package/dist/spawn/agent-identity.d.ts.map +1 -1
- package/dist/spawn/agent-identity.js +89 -26
- package/dist/spawn/agent-identity.js.map +1 -1
- package/dist/spawn/branch-lock.d.ts.map +1 -1
- package/dist/spawn/branch-lock.js +80 -79
- package/dist/spawn/branch-lock.js.map +1 -1
- package/dist/spawn/index.d.ts +2 -2
- 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/spawn/worktree-lock-holder.d.ts +37 -0
- package/dist/spawn/worktree-lock-holder.d.ts.map +1 -0
- package/dist/spawn/worktree-lock-holder.js +41 -0
- package/dist/spawn/worktree-lock-holder.js.map +1 -0
- package/dist/stats/index.d.ts.map +1 -1
- package/dist/stats/index.js +4 -2
- package/dist/stats/index.js.map +1 -1
- package/dist/sticky/convert.d.ts.map +1 -1
- package/dist/sticky/convert.js +16 -4
- package/dist/sticky/convert.js.map +1 -1
- package/dist/store/attachment-store.d.ts +14 -0
- package/dist/store/attachment-store.d.ts.map +1 -1
- package/dist/store/attachment-store.js +11 -1
- package/dist/store/attachment-store.js.map +1 -1
- package/dist/store/backup-inspect.d.ts +7 -3
- package/dist/store/backup-inspect.d.ts.map +1 -1
- package/dist/store/backup-inspect.js +18 -7
- package/dist/store/backup-inspect.js.map +1 -1
- package/dist/store/backup-sidecar.d.ts +60 -0
- package/dist/store/backup-sidecar.d.ts.map +1 -0
- package/dist/store/backup-sidecar.js +96 -0
- package/dist/store/backup-sidecar.js.map +1 -0
- 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 +6 -6
- package/dist/store/data-accessor.js.map +1 -1
- package/dist/store/data-safety-central.d.ts +13 -4
- package/dist/store/data-safety-central.d.ts.map +1 -1
- package/dist/store/data-safety-central.js +31 -4
- package/dist/store/data-safety-central.js.map +1 -1
- package/dist/store/dual-scope-db.d.ts.map +1 -1
- package/dist/store/dual-scope-db.js +10 -0
- package/dist/store/dual-scope-db.js.map +1 -1
- package/dist/store/exodus/__fixtures__/representative-fixture.d.ts.map +1 -1
- package/dist/store/exodus/__fixtures__/representative-fixture.js +4 -0
- package/dist/store/exodus/__fixtures__/representative-fixture.js.map +1 -1
- package/dist/store/exodus/migrate.js +1 -1
- package/dist/store/exodus/migrate.js.map +1 -1
- package/dist/store/exodus/reconcile.js +1 -1
- package/dist/store/exodus/reconcile.js.map +1 -1
- package/dist/store/exodus/runtime-targets.d.ts +4 -3
- package/dist/store/exodus/runtime-targets.d.ts.map +1 -1
- package/dist/store/exodus/runtime-targets.js +4 -3
- package/dist/store/exodus/runtime-targets.js.map +1 -1
- package/dist/store/import-logging.d.ts.map +1 -1
- package/dist/store/import-logging.js +5 -4
- package/dist/store/import-logging.js.map +1 -1
- package/dist/store/legacy-tasks-lineage.d.ts.map +1 -1
- package/dist/store/legacy-tasks-lineage.js +2 -7
- package/dist/store/legacy-tasks-lineage.js.map +1 -1
- package/dist/store/lock.d.ts +1 -0
- package/dist/store/lock.d.ts.map +1 -1
- package/dist/store/lock.js +1 -0
- package/dist/store/lock.js.map +1 -1
- package/dist/store/memory-accessor.d.ts +8 -3
- package/dist/store/memory-accessor.d.ts.map +1 -1
- package/dist/store/memory-accessor.js +29 -13
- package/dist/store/memory-accessor.js.map +1 -1
- package/dist/store/memory-sqlite.d.ts.map +1 -1
- package/dist/store/memory-sqlite.js +5 -0
- package/dist/store/memory-sqlite.js.map +1 -1
- package/dist/store/open-cleo-db.d.ts.map +1 -1
- package/dist/store/open-cleo-db.js +11 -6
- package/dist/store/open-cleo-db.js.map +1 -1
- package/dist/store/portable-bundle-relocate.d.ts +13 -8
- package/dist/store/portable-bundle-relocate.d.ts.map +1 -1
- package/dist/store/portable-bundle-relocate.js +75 -31
- package/dist/store/portable-bundle-relocate.js.map +1 -1
- package/dist/store/portable-bundle-scan.d.ts.map +1 -1
- package/dist/store/portable-bundle-scan.js +2 -1
- 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 +7 -3
- package/dist/store/portable-bundle.js.map +1 -1
- package/dist/store/pre-repair-snapshot.d.ts +77 -0
- package/dist/store/pre-repair-snapshot.d.ts.map +1 -0
- package/dist/store/pre-repair-snapshot.js +122 -0
- package/dist/store/pre-repair-snapshot.js.map +1 -0
- package/dist/store/regenerators.d.ts +2 -1
- package/dist/store/regenerators.d.ts.map +1 -1
- package/dist/store/regenerators.js +17 -3
- package/dist/store/regenerators.js.map +1 -1
- package/dist/store/relocated-store-guard.d.ts +71 -0
- package/dist/store/relocated-store-guard.d.ts.map +1 -0
- package/dist/store/relocated-store-guard.js +138 -0
- package/dist/store/relocated-store-guard.js.map +1 -0
- package/dist/store/safety-data-accessor.d.ts +2 -2
- package/dist/store/safety-data-accessor.d.ts.map +1 -1
- package/dist/store/safety-data-accessor.js +2 -2
- package/dist/store/safety-data-accessor.js.map +1 -1
- package/dist/store/schema/attachments.d.ts +2 -2
- package/dist/store/schema/audit.d.ts +5 -5
- package/dist/store/schema/background-jobs.d.ts +1 -1
- package/dist/store/schema/cleo-global/models-catalog.d.ts +1 -1
- package/dist/store/schema/cleo-global/nexus.d.ts +686 -0
- package/dist/store/schema/cleo-global/nexus.d.ts.map +1 -1
- package/dist/store/schema/cleo-global/nexus.js +175 -7
- 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 +5 -5
- package/dist/store/schema/cleo-project/docs.d.ts +3 -3
- package/dist/store/schema/cleo-project/lifecycle.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/tasks-core-batch2.d.ts +1 -1
- package/dist/store/schema/cleo-project/tasks-core.d.ts +6 -6
- package/dist/store/schema/cleo-shared/brain.d.ts +26 -26
- package/dist/store/schema/lifecycle.d.ts +3 -3
- package/dist/store/schema/manifest.d.ts +1 -1
- package/dist/store/schema/memory-schema.d.ts +26 -26
- package/dist/store/schema/nexus-schema.d.ts +696 -2
- package/dist/store/schema/nexus-schema.d.ts.map +1 -1
- package/dist/store/schema/nexus-schema.js +175 -19
- 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 +5 -5
- package/dist/store/session-binding-schema.d.ts +132 -0
- package/dist/store/session-binding-schema.d.ts.map +1 -0
- package/dist/store/session-binding-schema.js +53 -0
- package/dist/store/session-binding-schema.js.map +1 -0
- package/dist/store/session-store.d.ts +262 -4
- package/dist/store/session-store.d.ts.map +1 -1
- package/dist/store/session-store.js +486 -26
- package/dist/store/session-store.js.map +1 -1
- package/dist/store/skills-db.d.ts +17 -0
- package/dist/store/skills-db.d.ts.map +1 -1
- package/dist/store/skills-db.js +30 -0
- package/dist/store/skills-db.js.map +1 -1
- package/dist/store/snapshot-gate.d.ts +239 -0
- package/dist/store/snapshot-gate.d.ts.map +1 -0
- package/dist/store/snapshot-gate.js +401 -0
- package/dist/store/snapshot-gate.js.map +1 -0
- package/dist/store/split-brain-import.js +2 -2
- package/dist/store/split-brain-import.js.map +1 -1
- package/dist/store/sqlite-backup.d.ts +55 -13
- package/dist/store/sqlite-backup.d.ts.map +1 -1
- package/dist/store/sqlite-backup.js +414 -106
- package/dist/store/sqlite-backup.js.map +1 -1
- package/dist/store/sqlite-data-accessor.d.ts +15 -0
- package/dist/store/sqlite-data-accessor.d.ts.map +1 -1
- package/dist/store/sqlite-data-accessor.js +73 -4
- package/dist/store/sqlite-data-accessor.js.map +1 -1
- package/dist/store/sqlite.d.ts +15 -1
- package/dist/store/sqlite.d.ts.map +1 -1
- package/dist/store/sqlite.js +75 -5
- package/dist/store/sqlite.js.map +1 -1
- package/dist/store/store-write-guard.d.ts +28 -0
- package/dist/store/store-write-guard.d.ts.map +1 -0
- package/dist/store/store-write-guard.js +50 -0
- package/dist/store/store-write-guard.js.map +1 -0
- package/dist/store/table-classification.d.ts +143 -0
- package/dist/store/table-classification.d.ts.map +1 -0
- package/dist/store/table-classification.js +1866 -0
- package/dist/store/table-classification.js.map +1 -0
- package/dist/store/task-version.d.ts +72 -0
- package/dist/store/task-version.d.ts.map +1 -0
- package/dist/store/task-version.js +93 -0
- package/dist/store/task-version.js.map +1 -0
- package/dist/store/tasks-schema.d.ts +1 -0
- package/dist/store/tasks-schema.d.ts.map +1 -1
- package/dist/store/tasks-schema.js +13 -0
- package/dist/store/tasks-schema.js.map +1 -1
- package/dist/store/tasks-sqlite.d.ts +10 -3
- package/dist/store/tasks-sqlite.d.ts.map +1 -1
- package/dist/store/tasks-sqlite.js +12 -3
- package/dist/store/tasks-sqlite.js.map +1 -1
- package/dist/store/twin-collapse.d.ts +320 -0
- package/dist/store/twin-collapse.d.ts.map +1 -0
- package/dist/store/twin-collapse.js +931 -0
- package/dist/store/twin-collapse.js.map +1 -0
- package/dist/store/umbrella-data-accessor.d.ts +2 -2
- package/dist/store/umbrella-data-accessor.d.ts.map +1 -1
- package/dist/store/umbrella-data-accessor.js +2 -2
- package/dist/store/umbrella-data-accessor.js.map +1 -1
- package/dist/store/validation-schemas.d.ts +63 -63
- package/dist/store/worktree-isolation-guard.d.ts +46 -24
- package/dist/store/worktree-isolation-guard.d.ts.map +1 -1
- package/dist/store/worktree-isolation-guard.js +71 -50
- package/dist/store/worktree-isolation-guard.js.map +1 -1
- package/dist/system/backup.d.ts.map +1 -1
- package/dist/system/backup.js +3 -67
- package/dist/system/backup.js.map +1 -1
- package/dist/system/cleo-link.d.ts +163 -0
- package/dist/system/cleo-link.d.ts.map +1 -0
- package/dist/system/cleo-link.js +246 -0
- package/dist/system/cleo-link.js.map +1 -0
- package/dist/system/dependencies.d.ts.map +1 -1
- package/dist/system/dependencies.js +3 -6
- package/dist/system/dependencies.js.map +1 -1
- package/dist/system/global-delivery.d.ts +205 -0
- package/dist/system/global-delivery.d.ts.map +1 -0
- package/dist/system/global-delivery.js +320 -0
- package/dist/system/global-delivery.js.map +1 -0
- package/dist/system/health.d.ts.map +1 -1
- package/dist/system/health.js +29 -6
- package/dist/system/health.js.map +1 -1
- package/dist/system/inject-generate.d.ts.map +1 -1
- package/dist/system/inject-generate.js +4 -4
- package/dist/system/inject-generate.js.map +1 -1
- package/dist/system/project-health.d.ts.map +1 -1
- package/dist/system/project-health.js +1 -20
- package/dist/system/project-health.js.map +1 -1
- package/dist/system/runtime.d.ts.map +1 -1
- package/dist/system/runtime.js +2 -12
- package/dist/system/runtime.js.map +1 -1
- package/dist/system/safestop.d.ts.map +1 -1
- package/dist/system/safestop.js +5 -2
- package/dist/system/safestop.js.map +1 -1
- package/dist/system/skill-fixtures.d.ts +200 -0
- package/dist/system/skill-fixtures.d.ts.map +1 -0
- package/dist/system/skill-fixtures.js +331 -0
- package/dist/system/skill-fixtures.js.map +1 -0
- package/dist/task-work/index.d.ts +6 -0
- package/dist/task-work/index.d.ts.map +1 -1
- package/dist/task-work/index.js +6 -3
- package/dist/task-work/index.js.map +1 -1
- package/dist/tasks/add.d.ts.map +1 -1
- package/dist/tasks/add.js +4 -2
- package/dist/tasks/add.js.map +1 -1
- package/dist/tasks/affected-packages.d.ts +218 -0
- package/dist/tasks/affected-packages.d.ts.map +1 -0
- package/dist/tasks/affected-packages.js +496 -0
- package/dist/tasks/affected-packages.js.map +1 -0
- package/dist/tasks/affected-scope.d.ts +59 -0
- package/dist/tasks/affected-scope.d.ts.map +1 -0
- package/dist/tasks/affected-scope.js +81 -0
- package/dist/tasks/affected-scope.js.map +1 -0
- package/dist/tasks/analyze.d.ts.map +1 -1
- package/dist/tasks/analyze.js +7 -2
- package/dist/tasks/analyze.js.map +1 -1
- package/dist/tasks/change-set.d.ts +175 -0
- package/dist/tasks/change-set.d.ts.map +1 -0
- package/dist/tasks/change-set.js +753 -0
- package/dist/tasks/change-set.js.map +1 -0
- package/dist/tasks/complete.d.ts +10 -0
- package/dist/tasks/complete.d.ts.map +1 -1
- package/dist/tasks/complete.js +59 -5
- package/dist/tasks/complete.js.map +1 -1
- package/dist/tasks/component-pr.d.ts +106 -0
- package/dist/tasks/component-pr.d.ts.map +1 -0
- package/dist/tasks/component-pr.js +190 -0
- package/dist/tasks/component-pr.js.map +1 -0
- package/dist/tasks/done-plan.d.ts +123 -0
- package/dist/tasks/done-plan.d.ts.map +1 -0
- package/dist/tasks/done-plan.js +696 -0
- package/dist/tasks/done-plan.js.map +1 -0
- package/dist/tasks/done-record.d.ts +127 -0
- package/dist/tasks/done-record.d.ts.map +1 -0
- package/dist/tasks/done-record.js +302 -0
- package/dist/tasks/done-record.js.map +1 -0
- package/dist/tasks/duplicate-detector.d.ts +68 -11
- package/dist/tasks/duplicate-detector.d.ts.map +1 -1
- package/dist/tasks/duplicate-detector.js +314 -58
- package/dist/tasks/duplicate-detector.js.map +1 -1
- package/dist/tasks/evidence-paths.d.ts +78 -0
- package/dist/tasks/evidence-paths.d.ts.map +1 -0
- package/dist/tasks/evidence-paths.js +150 -0
- package/dist/tasks/evidence-paths.js.map +1 -0
- package/dist/tasks/evidence.d.ts +101 -1
- package/dist/tasks/evidence.d.ts.map +1 -1
- package/dist/tasks/evidence.js +278 -31
- package/dist/tasks/evidence.js.map +1 -1
- package/dist/tasks/gate-preview.d.ts +5 -0
- package/dist/tasks/gate-preview.d.ts.map +1 -1
- package/dist/tasks/gate-preview.js +25 -21
- package/dist/tasks/gate-preview.js.map +1 -1
- package/dist/tasks/gate-result-cache.d.ts +205 -0
- package/dist/tasks/gate-result-cache.d.ts.map +1 -0
- package/dist/tasks/gate-result-cache.js +285 -0
- package/dist/tasks/gate-result-cache.js.map +1 -0
- package/dist/tasks/gate-runner.d.ts +126 -3
- package/dist/tasks/gate-runner.d.ts.map +1 -1
- package/dist/tasks/gate-runner.js +483 -28
- package/dist/tasks/gate-runner.js.map +1 -1
- package/dist/tasks/session-scope.d.ts +3 -1
- package/dist/tasks/session-scope.d.ts.map +1 -1
- package/dist/tasks/session-scope.js +18 -3
- package/dist/tasks/session-scope.js.map +1 -1
- package/dist/tasks/task-next.d.ts +4 -0
- package/dist/tasks/task-next.d.ts.map +1 -1
- package/dist/tasks/task-next.js +32 -28
- package/dist/tasks/task-next.js.map +1 -1
- package/dist/tasks/tool-resolver.d.ts +23 -6
- package/dist/tasks/tool-resolver.d.ts.map +1 -1
- package/dist/tasks/tool-resolver.js +146 -8
- package/dist/tasks/tool-resolver.js.map +1 -1
- package/dist/tasks/tool-vacuity.d.ts +71 -0
- package/dist/tasks/tool-vacuity.d.ts.map +1 -0
- package/dist/tasks/tool-vacuity.js +334 -0
- package/dist/tasks/tool-vacuity.js.map +1 -0
- package/dist/tasks/update.d.ts +8 -0
- package/dist/tasks/update.d.ts.map +1 -1
- package/dist/tasks/update.js +159 -78
- package/dist/tasks/update.js.map +1 -1
- package/dist/upgrade.d.ts.map +1 -1
- package/dist/upgrade.js +18 -2
- package/dist/upgrade.js.map +1 -1
- package/dist/validation/doctor/checks.d.ts +20 -2
- package/dist/validation/doctor/checks.d.ts.map +1 -1
- package/dist/validation/doctor/checks.js +64 -4
- package/dist/validation/doctor/checks.js.map +1 -1
- package/dist/validation/doctor/index.d.ts +1 -1
- package/dist/validation/doctor/index.d.ts.map +1 -1
- package/dist/validation/doctor/index.js +1 -1
- package/dist/validation/doctor/index.js.map +1 -1
- package/dist/validation/doctor/utils.d.ts.map +1 -1
- package/dist/validation/doctor/utils.js +7 -2
- package/dist/validation/doctor/utils.js.map +1 -1
- package/dist/validation/engine-ops.d.ts +24 -1
- package/dist/validation/engine-ops.d.ts.map +1 -1
- package/dist/validation/engine-ops.js +272 -98
- package/dist/validation/engine-ops.js.map +1 -1
- package/dist/validation/validate-ops.d.ts.map +1 -1
- package/dist/validation/validate-ops.js +9 -3
- package/dist/validation/validate-ops.js.map +1 -1
- package/dist/worktree/worktree-adopt.d.ts.map +1 -1
- package/dist/worktree/worktree-adopt.js +5 -2
- package/dist/worktree/worktree-adopt.js.map +1 -1
- package/migrations/drizzle-cleo-global/20260927000000_t12469-project-locations/migration.sql +121 -0
- package/migrations/drizzle-cleo-global/20260927010000_t12543-user-profile-project-scope/migration.sql +23 -0
- package/migrations/drizzle-cleo-global/20260928010000_t12470-location-candidates/migration.sql +72 -0
- package/migrations/drizzle-cleo-global/20260928020000_t12510-nexus-devices/migration.sql +34 -0
- package/migrations/drizzle-cleo-global/20260928030000_t12511-project-git-state/migration.sql +62 -0
- package/migrations/drizzle-cleo-project/20260927000000_t12499-session-terminal-bindings/migration.sql +34 -0
- package/migrations/drizzle-cleo-project/20260928000000_t12500-binding-provider-flag/migration.sql +15 -0
- package/package.json +23 -13
- package/schemas/config.schema.json +54 -0
- package/schemas/project-context.schema.json +51 -3
- package/schemas/project-info.schema.json +28 -1
- package/templates/CLEO-INJECTION.md +40 -332
- package/templates/CLEO-REFERENCE.md +303 -0
- package/templates/workflows/README.md +36 -14
|
@@ -0,0 +1,536 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prune bundled skills that CLEO no longer installs — quarantining only what
|
|
3
|
+
* CLEO provably wrote (T12678).
|
|
4
|
+
*
|
|
5
|
+
* `initCoreSkills` installs every `@cleocode/skills` manifest entry declared
|
|
6
|
+
* `metadata.install: harness` but never removed anything, so a skill later
|
|
7
|
+
* declared `internal` (ct-grade) or retired (ct-docs-lookup, …) stayed in
|
|
8
|
+
* every harness.
|
|
9
|
+
*
|
|
10
|
+
* ## Ownership — never inferred
|
|
11
|
+
*
|
|
12
|
+
* The canonical skills root (`resolveSkillsRoot()`) is shared: CAAMP
|
|
13
|
+
* installs every user skill there too, so "it is in the root" or "a harness
|
|
14
|
+
* link points into the root" proves only that CAAMP put it there. The ONLY
|
|
15
|
+
* proof CLEO accepts is its own **bundled-install ledger**
|
|
16
|
+
* (`<skillsRoot>/.cleo-bundled.json`), written by `initCoreSkills` at install
|
|
17
|
+
* time with a SHA-256 for every file it wrote. A skill is quarantined only
|
|
18
|
+
* when:
|
|
19
|
+
*
|
|
20
|
+
* - it is a prune candidate (a non-harness manifest entry, or listed in the
|
|
21
|
+
* manifest's `retiredSkills`);
|
|
22
|
+
* - the ledger records it;
|
|
23
|
+
* - its CAAMP lock entry, if any, has source `library:<name>`, and its
|
|
24
|
+
* skills.db row, if any, is `canonical` — anything else means a user
|
|
25
|
+
* installed it;
|
|
26
|
+
* - the files on disk still hash exactly to what the ledger recorded (a
|
|
27
|
+
* user-edited copy is kept).
|
|
28
|
+
*
|
|
29
|
+
* A harness symlink is taken only when it points exactly at that skill's
|
|
30
|
+
* canonical path; a harness copy only when it hashes to the ledger. Skills
|
|
31
|
+
* installed before the ledger existed have no record and are reported, not
|
|
32
|
+
* pruned.
|
|
33
|
+
*
|
|
34
|
+
* ## Reversible
|
|
35
|
+
*
|
|
36
|
+
* Nothing is deleted. Owned paths are moved into
|
|
37
|
+
* `<cleoHome>/skills-quarantine/<id>/` with a `quarantine.json` describing
|
|
38
|
+
* every move, the lock entry removed and the skills.db state changed;
|
|
39
|
+
* {@link restoreQuarantine} puts all of it back.
|
|
40
|
+
*
|
|
41
|
+
* @task T12678
|
|
42
|
+
*/
|
|
43
|
+
import { createHash, randomBytes } from 'node:crypto';
|
|
44
|
+
import { existsSync, lstatSync, readdirSync, readFileSync, readlinkSync, realpathSync, } from 'node:fs';
|
|
45
|
+
import { appendFile, cp, mkdir, rename, rm, writeFile } from 'node:fs/promises';
|
|
46
|
+
import { dirname, isAbsolute, join, resolve } from 'node:path';
|
|
47
|
+
/** File under the canonical skills root recording what CLEO installed. */
|
|
48
|
+
export const BUNDLED_LEDGER_FILE = '.cleo-bundled.json';
|
|
49
|
+
/** Directory name, beside the skills root, holding quarantined skills. */
|
|
50
|
+
export const QUARANTINE_DIR = 'skills-quarantine';
|
|
51
|
+
/**
|
|
52
|
+
* Names the bundled manifest says must not be installed to harnesses.
|
|
53
|
+
*
|
|
54
|
+
* @param manifest - Parsed `skills/manifest.json`.
|
|
55
|
+
* @returns Sorted unique candidate names.
|
|
56
|
+
*/
|
|
57
|
+
export function pruneCandidates(manifest) {
|
|
58
|
+
const names = new Set();
|
|
59
|
+
for (const s of manifest.skills ?? []) {
|
|
60
|
+
if (typeof s.name === 'string' && s.install !== 'harness')
|
|
61
|
+
names.add(s.name);
|
|
62
|
+
}
|
|
63
|
+
for (const n of manifest.retiredSkills ?? [])
|
|
64
|
+
names.add(n);
|
|
65
|
+
return [...names].sort();
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* SHA-256 of every file under `dir` (relative POSIX paths), skipping
|
|
69
|
+
* `__pycache__`. Empty when `dir` is missing.
|
|
70
|
+
*
|
|
71
|
+
* @param dir - Directory to hash.
|
|
72
|
+
* @returns Relative path → hex digest.
|
|
73
|
+
*/
|
|
74
|
+
export function hashTree(dir) {
|
|
75
|
+
const out = {};
|
|
76
|
+
const walk = (abs, rel) => {
|
|
77
|
+
for (const e of readdirSync(abs, { withFileTypes: true })) {
|
|
78
|
+
if (e.name === '__pycache__')
|
|
79
|
+
continue;
|
|
80
|
+
const childAbs = join(abs, e.name);
|
|
81
|
+
const childRel = rel ? `${rel}/${e.name}` : e.name;
|
|
82
|
+
if (e.isDirectory())
|
|
83
|
+
walk(childAbs, childRel);
|
|
84
|
+
else if (e.isFile()) {
|
|
85
|
+
out[childRel] = createHash('sha256').update(readFileSync(childAbs)).digest('hex');
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
try {
|
|
90
|
+
walk(dir, '');
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return {};
|
|
94
|
+
}
|
|
95
|
+
return out;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Whether a directory still holds exactly the files the ledger recorded.
|
|
99
|
+
*
|
|
100
|
+
* @param dir - Directory on disk.
|
|
101
|
+
* @param files - Ledger file hashes.
|
|
102
|
+
* @returns `true` on an exact match (same paths, same bytes).
|
|
103
|
+
*/
|
|
104
|
+
function matchesLedger(dir, files) {
|
|
105
|
+
const actual = hashTree(dir);
|
|
106
|
+
const want = Object.keys(files).sort();
|
|
107
|
+
const have = Object.keys(actual).sort();
|
|
108
|
+
if (want.length === 0 || want.join('\n') !== have.join('\n'))
|
|
109
|
+
return false;
|
|
110
|
+
return want.every((f) => actual[f] === files[f]);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Read the bundled-install ledger; an absent, unreadable or older-format
|
|
114
|
+
* ledger yields an empty one (nothing is then provably CLEO's).
|
|
115
|
+
*
|
|
116
|
+
* @param skillsRoot - Canonical skills root.
|
|
117
|
+
* @returns The ledger.
|
|
118
|
+
*/
|
|
119
|
+
export function readBundledLedger(skillsRoot) {
|
|
120
|
+
try {
|
|
121
|
+
const data = JSON.parse(readFileSync(join(skillsRoot, BUNDLED_LEDGER_FILE), 'utf-8'));
|
|
122
|
+
if (data.version === 2 && data.skills && typeof data.skills === 'object') {
|
|
123
|
+
const kept = Array.isArray(data.kept)
|
|
124
|
+
? data.kept.filter((n) => typeof n === 'string')
|
|
125
|
+
: [];
|
|
126
|
+
return { version: 2, skills: data.skills, ...(kept.length > 0 ? { kept } : {}) };
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
// absent or unreadable
|
|
131
|
+
}
|
|
132
|
+
return { version: 2, skills: {} };
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Write the ledger.
|
|
136
|
+
*
|
|
137
|
+
* @param skillsRoot - Canonical skills root.
|
|
138
|
+
* @param ledger - Ledger to write.
|
|
139
|
+
*/
|
|
140
|
+
async function writeLedger(skillsRoot, ledger) {
|
|
141
|
+
await mkdir(skillsRoot, { recursive: true });
|
|
142
|
+
await writeFile(join(skillsRoot, BUNDLED_LEDGER_FILE), `${JSON.stringify(ledger, null, 2)}\n`);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Record the skills CLEO just installed from the bundle, hashing the files
|
|
146
|
+
* it wrote into each canonical copy.
|
|
147
|
+
*
|
|
148
|
+
* @param skillsRoot - Canonical skills root.
|
|
149
|
+
* @param names - Skills installed by this run.
|
|
150
|
+
*/
|
|
151
|
+
export async function recordBundledInstalls(skillsRoot, names) {
|
|
152
|
+
const ledger = readBundledLedger(skillsRoot);
|
|
153
|
+
const now = new Date().toISOString();
|
|
154
|
+
for (const name of names) {
|
|
155
|
+
const files = hashTree(join(skillsRoot, name));
|
|
156
|
+
if (Object.keys(files).length > 0)
|
|
157
|
+
ledger.skills[name] = { installedAt: now, files };
|
|
158
|
+
}
|
|
159
|
+
await writeLedger(skillsRoot, ledger);
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Where a symlink points, even when the target is gone.
|
|
163
|
+
*
|
|
164
|
+
* @param linkPath - Symlink path.
|
|
165
|
+
* @returns Absolute target.
|
|
166
|
+
*/
|
|
167
|
+
function linkTarget(linkPath) {
|
|
168
|
+
const raw = readlinkSync(linkPath);
|
|
169
|
+
return isAbsolute(raw) ? raw : resolve(dirname(linkPath), raw);
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Real path when it exists, otherwise the resolved path.
|
|
173
|
+
*
|
|
174
|
+
* @param p - Path.
|
|
175
|
+
* @returns Canonical path for equality checks.
|
|
176
|
+
*/
|
|
177
|
+
function realOrResolved(p) {
|
|
178
|
+
try {
|
|
179
|
+
return realpathSync(p);
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
return resolve(p);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Whether anything (including a dangling symlink) exists at `p`.
|
|
187
|
+
*
|
|
188
|
+
* @param p - Path.
|
|
189
|
+
* @returns `true` when lstat succeeds.
|
|
190
|
+
*/
|
|
191
|
+
function exists(p) {
|
|
192
|
+
try {
|
|
193
|
+
lstatSync(p);
|
|
194
|
+
return true;
|
|
195
|
+
}
|
|
196
|
+
catch {
|
|
197
|
+
return false;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Move a path, falling back to copy + remove across devices.
|
|
202
|
+
*
|
|
203
|
+
* @param from - Source.
|
|
204
|
+
* @param to - Destination (must not exist).
|
|
205
|
+
*/
|
|
206
|
+
async function movePath(from, to) {
|
|
207
|
+
await mkdir(dirname(to), { recursive: true });
|
|
208
|
+
try {
|
|
209
|
+
await rename(from, to);
|
|
210
|
+
}
|
|
211
|
+
catch (err) {
|
|
212
|
+
if (err.code !== 'EXDEV')
|
|
213
|
+
throw err;
|
|
214
|
+
await cp(from, to, { recursive: true, verbatimSymlinks: true });
|
|
215
|
+
await rm(from, { recursive: true, force: true });
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Quarantine harness entries and canonical copies of skills CLEO no longer
|
|
220
|
+
* installs, where the ledger proves CLEO wrote them and they are unmodified.
|
|
221
|
+
* See the module doc.
|
|
222
|
+
*
|
|
223
|
+
* @param opts - Paths, registry, dry-run flag.
|
|
224
|
+
* @returns The receipt.
|
|
225
|
+
*/
|
|
226
|
+
export async function pruneBundledSkills(opts) {
|
|
227
|
+
const dryRun = opts.dryRun === true;
|
|
228
|
+
const manifest = JSON.parse(readFileSync(join(opts.bundledSkillsDir, 'manifest.json'), 'utf-8'));
|
|
229
|
+
const candidates = pruneCandidates(manifest);
|
|
230
|
+
const ledger = readBundledLedger(opts.skillsRoot);
|
|
231
|
+
const providerDirs = [...new Set(opts.providerSkillDirs)];
|
|
232
|
+
const actions = [];
|
|
233
|
+
const errors = [];
|
|
234
|
+
const at = new Date().toISOString();
|
|
235
|
+
const id = `${at.replace(/[:.]/g, '-')}-${randomBytes(3).toString('hex')}`;
|
|
236
|
+
const qroot = join(opts.quarantineRoot ?? join(dirname(opts.skillsRoot), QUARANTINE_DIR), id);
|
|
237
|
+
const record = { id, at, moves: [], lockEntries: [], rows: [] };
|
|
238
|
+
const keep = (name, path, reason) => {
|
|
239
|
+
actions.push({ name, path, action: 'kept', reason });
|
|
240
|
+
};
|
|
241
|
+
/**
|
|
242
|
+
* Write quarantine.json. Called BEFORE each change it describes, so a crash
|
|
243
|
+
* mid-run never leaves a moved path, removed lock entry or archived row
|
|
244
|
+
* without a record; restore skips a recorded move that never happened.
|
|
245
|
+
*/
|
|
246
|
+
const persist = async () => {
|
|
247
|
+
await mkdir(qroot, { recursive: true });
|
|
248
|
+
await writeFile(join(qroot, 'quarantine.json'), `${JSON.stringify(record, null, 2)}\n`);
|
|
249
|
+
};
|
|
250
|
+
const take = async (name, path, reason) => {
|
|
251
|
+
if (dryRun) {
|
|
252
|
+
actions.push({ name, path, action: 'would-quarantine', reason });
|
|
253
|
+
return true;
|
|
254
|
+
}
|
|
255
|
+
const to = join(qroot, 'files', String(record.moves.length), name);
|
|
256
|
+
record.moves.push({ name, from: path, to });
|
|
257
|
+
try {
|
|
258
|
+
await persist();
|
|
259
|
+
await movePath(path, to);
|
|
260
|
+
actions.push({ name, path, action: 'quarantined', reason });
|
|
261
|
+
return true;
|
|
262
|
+
}
|
|
263
|
+
catch (err) {
|
|
264
|
+
record.moves.pop();
|
|
265
|
+
await persist().catch(() => undefined);
|
|
266
|
+
errors.push(`${path}: ${err instanceof Error ? err.message : String(err)}`);
|
|
267
|
+
return false;
|
|
268
|
+
}
|
|
269
|
+
};
|
|
270
|
+
const keptByUser = new Set(ledger.kept ?? []);
|
|
271
|
+
for (const name of candidates) {
|
|
272
|
+
const canonical = join(opts.skillsRoot, name);
|
|
273
|
+
const harness = providerDirs.map((d) => join(d, name)).filter(exists);
|
|
274
|
+
const present = [...(existsSync(canonical) ? [canonical] : []), ...harness];
|
|
275
|
+
if (present.length === 0)
|
|
276
|
+
continue;
|
|
277
|
+
if (keptByUser.has(name)) {
|
|
278
|
+
for (const p of present)
|
|
279
|
+
keep(name, p, 'restored from quarantine by the user');
|
|
280
|
+
continue;
|
|
281
|
+
}
|
|
282
|
+
const entry = ledger.skills[name];
|
|
283
|
+
if (!entry) {
|
|
284
|
+
for (const p of present) {
|
|
285
|
+
keep(name, p, 'no bundled-install ledger record (installed before the ledger, or by the user)');
|
|
286
|
+
}
|
|
287
|
+
continue;
|
|
288
|
+
}
|
|
289
|
+
const lock = await opts.registry.lockEntry(name);
|
|
290
|
+
if (lock && lock.source !== `library:${name}`) {
|
|
291
|
+
for (const p of present)
|
|
292
|
+
keep(name, p, `CAAMP lock says it was installed from ${lock.source}`);
|
|
293
|
+
continue;
|
|
294
|
+
}
|
|
295
|
+
const row = await opts.registry.skillRow(name);
|
|
296
|
+
if (row && row.sourceType !== 'canonical') {
|
|
297
|
+
for (const p of present)
|
|
298
|
+
keep(name, p, `skills.db records a ${row.sourceType} install`);
|
|
299
|
+
continue;
|
|
300
|
+
}
|
|
301
|
+
const canonicalReal = realOrResolved(canonical);
|
|
302
|
+
const canonicalOwned = existsSync(canonical) && matchesLedger(canonical, entry.files);
|
|
303
|
+
if (existsSync(canonical) && !canonicalOwned) {
|
|
304
|
+
keep(name, canonical, 'modified since CLEO installed it (hashes differ from the ledger)');
|
|
305
|
+
}
|
|
306
|
+
for (const p of harness) {
|
|
307
|
+
if (lstatSync(p).isSymbolicLink()) {
|
|
308
|
+
const target = realOrResolved(linkTarget(p));
|
|
309
|
+
const pointsAtCanonical = target === canonicalReal || target === resolve(canonical);
|
|
310
|
+
if (pointsAtCanonical && (canonicalOwned || !existsSync(canonical))) {
|
|
311
|
+
await take(name, p, 'CLEO link to its unmodified canonical copy');
|
|
312
|
+
}
|
|
313
|
+
else {
|
|
314
|
+
keep(name, p, pointsAtCanonical
|
|
315
|
+
? 'links to a modified canonical copy'
|
|
316
|
+
: `links elsewhere (${target})`);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
else if (realOrResolved(p) === canonicalReal) {
|
|
320
|
+
// The canonical copy reached through a linked harness dir — handled below.
|
|
321
|
+
}
|
|
322
|
+
else if (matchesLedger(p, entry.files)) {
|
|
323
|
+
await take(name, p, 'copy identical to what CLEO installed');
|
|
324
|
+
}
|
|
325
|
+
else {
|
|
326
|
+
keep(name, p, 'directory differs from what CLEO installed');
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
if (!canonicalOwned)
|
|
330
|
+
continue;
|
|
331
|
+
const moved = await take(name, canonical, 'unmodified CLEO install (ledger hashes match)');
|
|
332
|
+
if (!moved || dryRun)
|
|
333
|
+
continue;
|
|
334
|
+
delete ledger.skills[name];
|
|
335
|
+
await writeLedger(opts.skillsRoot, ledger);
|
|
336
|
+
if (lock) {
|
|
337
|
+
record.lockEntries.push({ name, entry: lock });
|
|
338
|
+
await persist();
|
|
339
|
+
await opts.registry.removeLockEntry(name);
|
|
340
|
+
}
|
|
341
|
+
if (row) {
|
|
342
|
+
record.rows.push({ name, priorState: row.lifecycleState });
|
|
343
|
+
await persist();
|
|
344
|
+
await opts.registry.setLifecycleState(name, 'archived', canonical);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
const movedAny = record.moves.length > 0;
|
|
348
|
+
const receipt = {
|
|
349
|
+
at,
|
|
350
|
+
dryRun,
|
|
351
|
+
candidates,
|
|
352
|
+
actions,
|
|
353
|
+
quarantineId: movedAny ? id : null,
|
|
354
|
+
errors,
|
|
355
|
+
};
|
|
356
|
+
if (movedAny && opts.receiptPath) {
|
|
357
|
+
await mkdir(dirname(opts.receiptPath), { recursive: true });
|
|
358
|
+
await appendFile(opts.receiptPath, `${JSON.stringify(receipt)}\n`);
|
|
359
|
+
}
|
|
360
|
+
return receipt;
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* List quarantine ids, newest first.
|
|
364
|
+
*
|
|
365
|
+
* @param quarantineRoot - Quarantine root.
|
|
366
|
+
* @returns Ids that carry a `quarantine.json`.
|
|
367
|
+
*/
|
|
368
|
+
export function listQuarantines(quarantineRoot) {
|
|
369
|
+
if (!existsSync(quarantineRoot))
|
|
370
|
+
return [];
|
|
371
|
+
return readdirSync(quarantineRoot)
|
|
372
|
+
.filter((d) => existsSync(join(quarantineRoot, d, 'quarantine.json')))
|
|
373
|
+
.sort()
|
|
374
|
+
.reverse();
|
|
375
|
+
}
|
|
376
|
+
/**
|
|
377
|
+
* Put back everything one quarantine run moved: files and links, CAAMP lock
|
|
378
|
+
* entries and skills.db lifecycle states. A skill whose path is occupied again
|
|
379
|
+
* (the user reinstalled it) is reported as a conflict, and its lock entry and
|
|
380
|
+
* row are left alone. Every cleanly restored skill joins the ledger's `kept`
|
|
381
|
+
* list, so later prunes leave it in place.
|
|
382
|
+
*
|
|
383
|
+
* @param opts - Quarantine root and id, skills root, registry.
|
|
384
|
+
* @returns What was restored and what could not be (destination occupied).
|
|
385
|
+
*/
|
|
386
|
+
export async function restoreQuarantine(opts) {
|
|
387
|
+
const dir = join(opts.quarantineRoot, opts.id);
|
|
388
|
+
const record = JSON.parse(readFileSync(join(dir, 'quarantine.json'), 'utf-8'));
|
|
389
|
+
const restored = [];
|
|
390
|
+
const conflicts = [];
|
|
391
|
+
const conflicted = new Set();
|
|
392
|
+
for (const m of [...record.moves].reverse()) {
|
|
393
|
+
// Recorded before the move; a crash in between means it never happened.
|
|
394
|
+
if (!exists(m.to))
|
|
395
|
+
continue;
|
|
396
|
+
if (exists(m.from)) {
|
|
397
|
+
conflicts.push(m.from);
|
|
398
|
+
conflicted.add(m.name);
|
|
399
|
+
continue;
|
|
400
|
+
}
|
|
401
|
+
await movePath(m.to, m.from);
|
|
402
|
+
restored.push(m.from);
|
|
403
|
+
}
|
|
404
|
+
// A conflict means the user reinstalled the skill since the prune; its
|
|
405
|
+
// lock entry and skills.db row now describe that install, so leave them.
|
|
406
|
+
for (const l of record.lockEntries) {
|
|
407
|
+
if (!conflicted.has(l.name))
|
|
408
|
+
await opts.registry.restoreLockEntry(l.name, l.entry);
|
|
409
|
+
}
|
|
410
|
+
for (const r of record.rows) {
|
|
411
|
+
if (conflicted.has(r.name))
|
|
412
|
+
continue;
|
|
413
|
+
const prior = r.priorState === 'stale' || r.priorState === 'archived' ? r.priorState : 'active';
|
|
414
|
+
await opts.registry.setLifecycleState(r.name, prior);
|
|
415
|
+
}
|
|
416
|
+
// Restoring is the user choosing to keep the skill: mark it kept rather
|
|
417
|
+
// than re-recording CLEO ownership, or the next prune would take it again.
|
|
418
|
+
const ledger = readBundledLedger(opts.skillsRoot);
|
|
419
|
+
const kept = new Set(ledger.kept ?? []);
|
|
420
|
+
for (const name of new Set(record.moves.map((m) => m.name))) {
|
|
421
|
+
if (conflicted.has(name))
|
|
422
|
+
continue;
|
|
423
|
+
kept.add(name);
|
|
424
|
+
delete ledger.skills[name];
|
|
425
|
+
}
|
|
426
|
+
ledger.kept = [...kept].sort();
|
|
427
|
+
await writeLedger(opts.skillsRoot, ledger);
|
|
428
|
+
if (conflicts.length === 0)
|
|
429
|
+
await rm(dir, { recursive: true, force: true });
|
|
430
|
+
return { restored, conflicts };
|
|
431
|
+
}
|
|
432
|
+
/**
|
|
433
|
+
* The real registry: CAAMP's lock file and CLEO's skills.db.
|
|
434
|
+
*
|
|
435
|
+
* @returns A {@link PruneRegistry}.
|
|
436
|
+
*/
|
|
437
|
+
export async function defaultPruneRegistry() {
|
|
438
|
+
const caamp = await import('@cleocode/caamp');
|
|
439
|
+
const db = await import('../store/skills-db.js');
|
|
440
|
+
return {
|
|
441
|
+
async lockEntry(name) {
|
|
442
|
+
const e = (await caamp.getTrackedSkills())[name];
|
|
443
|
+
return e ? { ...e } : null;
|
|
444
|
+
},
|
|
445
|
+
async removeLockEntry(name) {
|
|
446
|
+
await caamp.removeSkillFromLock(name);
|
|
447
|
+
},
|
|
448
|
+
async restoreLockEntry(name, entry) {
|
|
449
|
+
await caamp.recordSkillInstall(name, typeof entry['scopedName'] === 'string' ? entry['scopedName'] : name, entry.source, entry['sourceType'], Array.isArray(entry['agents']) ? entry['agents'].filter((a) => typeof a === 'string') : [], typeof entry['canonicalPath'] === 'string' ? entry['canonicalPath'] : '', entry['isGlobal'] !== false, typeof entry['projectDir'] === 'string' ? entry['projectDir'] : undefined, typeof entry['version'] === 'string' ? entry['version'] : undefined);
|
|
450
|
+
},
|
|
451
|
+
async skillRow(name) {
|
|
452
|
+
try {
|
|
453
|
+
const row = await db.getSkillRow(name);
|
|
454
|
+
return row ? { sourceType: row.sourceType, lifecycleState: row.lifecycleState } : null;
|
|
455
|
+
}
|
|
456
|
+
catch {
|
|
457
|
+
return null;
|
|
458
|
+
}
|
|
459
|
+
},
|
|
460
|
+
async setLifecycleState(name, state, from) {
|
|
461
|
+
await db.setSkillLifecycleState(name, state, from);
|
|
462
|
+
},
|
|
463
|
+
};
|
|
464
|
+
}
|
|
465
|
+
/**
|
|
466
|
+
* Real paths for the installed CLEO: bundle dir, canonical root, harness
|
|
467
|
+
* dirs, quarantine root.
|
|
468
|
+
*
|
|
469
|
+
* @returns Resolved context, or `null` when the bundled skills are missing.
|
|
470
|
+
*/
|
|
471
|
+
async function realPruneContext() {
|
|
472
|
+
const { getInstalledProviders, resolveProviderSkillsDirs } = await import('@cleocode/caamp');
|
|
473
|
+
const { resolveBundledSkillsDir, resolveSkillsRoot } = await import('./skill-root.js');
|
|
474
|
+
const bundledSkillsDir = resolveBundledSkillsDir();
|
|
475
|
+
if (!bundledSkillsDir)
|
|
476
|
+
return null;
|
|
477
|
+
const skillsRoot = resolveSkillsRoot();
|
|
478
|
+
return {
|
|
479
|
+
bundledSkillsDir,
|
|
480
|
+
skillsRoot,
|
|
481
|
+
providerSkillDirs: getInstalledProviders().flatMap((p) => resolveProviderSkillsDirs(p, 'global')),
|
|
482
|
+
quarantineRoot: join(dirname(skillsRoot), QUARANTINE_DIR),
|
|
483
|
+
};
|
|
484
|
+
}
|
|
485
|
+
/**
|
|
486
|
+
* Run the bundled-skill prune against this machine (`cleo skills doctor
|
|
487
|
+
* prune`).
|
|
488
|
+
*
|
|
489
|
+
* @param opts - `dryRun` reports without moving anything.
|
|
490
|
+
* @returns The receipt, or `null` when the bundled skills cannot be found.
|
|
491
|
+
*/
|
|
492
|
+
export async function runBundledSkillPrune(opts) {
|
|
493
|
+
const ctx = await realPruneContext();
|
|
494
|
+
if (!ctx)
|
|
495
|
+
return null;
|
|
496
|
+
return pruneBundledSkills({
|
|
497
|
+
...ctx,
|
|
498
|
+
registry: await defaultPruneRegistry(),
|
|
499
|
+
dryRun: opts.dryRun === true,
|
|
500
|
+
receiptPath: join(ctx.skillsRoot, '.prune-receipts.jsonl'),
|
|
501
|
+
});
|
|
502
|
+
}
|
|
503
|
+
/**
|
|
504
|
+
* List quarantines, or restore one (`cleo skills doctor restore [id]`).
|
|
505
|
+
*
|
|
506
|
+
* @param id - Quarantine id; omit to list.
|
|
507
|
+
* @returns The ids, or the restore outcome.
|
|
508
|
+
*/
|
|
509
|
+
export async function restoreBundledSkillQuarantine(id) {
|
|
510
|
+
const { resolveSkillsRoot } = await import('./skill-root.js');
|
|
511
|
+
const skillsRoot = resolveSkillsRoot();
|
|
512
|
+
const quarantineRoot = join(dirname(skillsRoot), QUARANTINE_DIR);
|
|
513
|
+
if (!id)
|
|
514
|
+
return { quarantines: listQuarantines(quarantineRoot) };
|
|
515
|
+
return restoreQuarantine({
|
|
516
|
+
quarantineRoot,
|
|
517
|
+
id,
|
|
518
|
+
skillsRoot,
|
|
519
|
+
registry: await defaultPruneRegistry(),
|
|
520
|
+
});
|
|
521
|
+
}
|
|
522
|
+
/**
|
|
523
|
+
* Dry-run the prune `initCoreSkills` would perform against the real bundle,
|
|
524
|
+
* canonical root, harnesses and registries.
|
|
525
|
+
*
|
|
526
|
+
* @returns One line per path that would be quarantined or kept.
|
|
527
|
+
*/
|
|
528
|
+
export async function previewBundledSkillPrune() {
|
|
529
|
+
const receipt = await runBundledSkillPrune({ dryRun: true });
|
|
530
|
+
if (!receipt)
|
|
531
|
+
return [];
|
|
532
|
+
return receipt.actions.map((a) => a.action === 'would-quarantine'
|
|
533
|
+
? `skills: would quarantine ${a.path} (${a.reason})`
|
|
534
|
+
: `skills: would keep ${a.path} (${a.reason})`);
|
|
535
|
+
}
|
|
536
|
+
//# sourceMappingURL=prune-bundled.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prune-bundled.js","sourceRoot":"","sources":["../../src/skills/prune-bundled.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,18 @@ export interface SkillSearchPath {
|
|
|
21
21
|
path: string;
|
|
22
22
|
origin: 'override' | 'caamp' | 'embedded';
|
|
23
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* A resolved skill directory and where it came from. `bundled` means the
|
|
26
|
+
* skill is not installed anywhere and was read from `@cleocode/skills`.
|
|
27
|
+
*
|
|
28
|
+
* @task T12646
|
|
29
|
+
*/
|
|
30
|
+
export interface ResolvedSkillLocation {
|
|
31
|
+
/** Real path of the skill directory. */
|
|
32
|
+
path: string;
|
|
33
|
+
/** Search-path origin, or `bundled` for the package fallback. */
|
|
34
|
+
origin: SkillSearchPath['origin'] | 'bundled';
|
|
35
|
+
}
|
|
24
36
|
/**
|
|
25
37
|
* Get ordered skill search paths based on configuration.
|
|
26
38
|
*
|
|
@@ -37,11 +49,26 @@ export interface SkillSearchPath {
|
|
|
37
49
|
*/
|
|
38
50
|
export declare function getSkillSearchPaths(projectRoot?: string): SkillSearchPath[];
|
|
39
51
|
/**
|
|
40
|
-
* Resolve a skill directory containing SKILL.md.
|
|
41
|
-
* Searches all paths from getSkillSearchPaths() in priority order
|
|
42
|
-
*
|
|
52
|
+
* Resolve a skill directory containing SKILL.md, with its origin.
|
|
53
|
+
* Searches all paths from getSkillSearchPaths() in priority order; first
|
|
54
|
+
* match wins.
|
|
55
|
+
*
|
|
56
|
+
* When no search path holds the skill and `CLEO_SKILL_SOURCE` is `auto` (the
|
|
57
|
+
* default), falls back to the copy bundled in `@cleocode/skills` with origin
|
|
58
|
+
* `bundled`, so a spawn prompt can read a protocol it names even when install
|
|
59
|
+
* selection left it out of the data dir. `caamp` and `embedded` never fall
|
|
60
|
+
* back (T12646).
|
|
61
|
+
*
|
|
62
|
+
* @task T4552
|
|
63
|
+
* @task T12646
|
|
64
|
+
*/
|
|
65
|
+
export declare function resolveSkillLocation(skillName: string, projectRoot?: string): ResolvedSkillLocation | null;
|
|
66
|
+
/**
|
|
67
|
+
* Resolve a skill directory containing SKILL.md — the path of
|
|
68
|
+
* {@link resolveSkillLocation}, including its bundled fallback.
|
|
43
69
|
*
|
|
44
70
|
* @task T4552
|
|
71
|
+
* @task T12646
|
|
45
72
|
*/
|
|
46
73
|
export declare function resolveSkillPath(skillName: string, projectRoot?: string): string | null;
|
|
47
74
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-paths.d.ts","sourceRoot":"","sources":["../../src/skills/skill-paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;
|
|
1
|
+
{"version":3,"file":"skill-paths.d.ts","sourceRoot":"","sources":["../../src/skills/skill-paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAWH,wDAAwD;AACxD,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,OAAO,GAAG,cAAc,GAAG,aAAa,CAAC;AAEpF,yBAAyB;AACzB,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;AAE5D,yCAAyC;AACzC,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,GAAG,OAAO,GAAG,UAAU,CAAC;CAC3C;AAED;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;CAC/C;AA+CD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,eAAe,EAAE,CAyC3E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,GACnB,qBAAqB,GAAG,IAAI,CAW9B;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEvF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA2B7F;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAW3F;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CA2CjG"}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
import { existsSync, lstatSync, readlinkSync, realpathSync } from 'node:fs';
|
|
16
16
|
import { delimiter, join, resolve } from 'node:path';
|
|
17
17
|
import { resolveOrCwd } from '../paths.js';
|
|
18
|
-
import { resolveSkillsRoot } from './skill-root.js';
|
|
18
|
+
import { bundledSkillFallbackEnabled, resolveBundledSkillDir, resolveSkillsRoot, } from './skill-root.js';
|
|
19
19
|
/**
|
|
20
20
|
* Get the canonical skill install root.
|
|
21
21
|
*
|
|
@@ -111,21 +111,40 @@ export function getSkillSearchPaths(projectRoot) {
|
|
|
111
111
|
return paths;
|
|
112
112
|
}
|
|
113
113
|
/**
|
|
114
|
-
* Resolve a skill directory containing SKILL.md.
|
|
115
|
-
* Searches all paths from getSkillSearchPaths() in priority order
|
|
116
|
-
*
|
|
114
|
+
* Resolve a skill directory containing SKILL.md, with its origin.
|
|
115
|
+
* Searches all paths from getSkillSearchPaths() in priority order; first
|
|
116
|
+
* match wins.
|
|
117
|
+
*
|
|
118
|
+
* When no search path holds the skill and `CLEO_SKILL_SOURCE` is `auto` (the
|
|
119
|
+
* default), falls back to the copy bundled in `@cleocode/skills` with origin
|
|
120
|
+
* `bundled`, so a spawn prompt can read a protocol it names even when install
|
|
121
|
+
* selection left it out of the data dir. `caamp` and `embedded` never fall
|
|
122
|
+
* back (T12646).
|
|
117
123
|
*
|
|
118
124
|
* @task T4552
|
|
125
|
+
* @task T12646
|
|
119
126
|
*/
|
|
120
|
-
export function
|
|
121
|
-
const
|
|
122
|
-
for (const { path: searchPath } of searchPaths) {
|
|
127
|
+
export function resolveSkillLocation(skillName, projectRoot) {
|
|
128
|
+
for (const { path: searchPath, origin } of getSkillSearchPaths(projectRoot)) {
|
|
123
129
|
const candidate = join(searchPath, skillName);
|
|
124
130
|
if (existsSync(join(candidate, 'SKILL.md'))) {
|
|
125
|
-
return safeRealpath(candidate);
|
|
131
|
+
return { path: safeRealpath(candidate), origin };
|
|
126
132
|
}
|
|
127
133
|
}
|
|
128
|
-
|
|
134
|
+
if (!bundledSkillFallbackEnabled())
|
|
135
|
+
return null;
|
|
136
|
+
const bundled = resolveBundledSkillDir(skillName);
|
|
137
|
+
return bundled === null ? null : { path: safeRealpath(bundled), origin: 'bundled' };
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Resolve a skill directory containing SKILL.md — the path of
|
|
141
|
+
* {@link resolveSkillLocation}, including its bundled fallback.
|
|
142
|
+
*
|
|
143
|
+
* @task T4552
|
|
144
|
+
* @task T12646
|
|
145
|
+
*/
|
|
146
|
+
export function resolveSkillPath(skillName, projectRoot) {
|
|
147
|
+
return resolveSkillLocation(skillName, projectRoot)?.path ?? null;
|
|
129
148
|
}
|
|
130
149
|
/**
|
|
131
150
|
* Resolve a protocol .md file.
|