@cleocode/core 2026.9.21 → 2026.9.23
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/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.map +1 -1
- package/dist/bootstrap.js +4 -0
- package/dist/bootstrap.js.map +1 -1
- package/dist/build-provenance.json +6 -0
- package/dist/decide/audit.d.ts +7 -1
- package/dist/decide/audit.d.ts.map +1 -1
- package/dist/decide/audit.js.map +1 -1
- package/dist/decide/client.d.ts +46 -4
- package/dist/decide/client.d.ts.map +1 -1
- package/dist/decide/client.js +328 -33
- package/dist/decide/client.js.map +1 -1
- package/dist/decide/credentials.d.ts +28 -4
- package/dist/decide/credentials.d.ts.map +1 -1
- package/dist/decide/credentials.js +50 -12
- package/dist/decide/credentials.js.map +1 -1
- package/dist/decide/index.d.ts +10 -4
- package/dist/decide/index.d.ts.map +1 -1
- package/dist/decide/index.js +10 -4
- package/dist/decide/index.js.map +1 -1
- package/dist/decide/jev-wire.d.ts +100 -8
- package/dist/decide/jev-wire.d.ts.map +1 -1
- package/dist/decide/jev-wire.js +402 -55
- package/dist/decide/jev-wire.js.map +1 -1
- package/dist/decide/operations.d.ts +97 -20
- package/dist/decide/operations.d.ts.map +1 -1
- package/dist/decide/operations.js +180 -28
- package/dist/decide/operations.js.map +1 -1
- package/dist/decide/provider-state.d.ts +89 -0
- package/dist/decide/provider-state.d.ts.map +1 -0
- package/dist/decide/provider-state.js +134 -0
- package/dist/decide/provider-state.js.map +1 -0
- package/dist/decide/provider.d.ts +26 -5
- package/dist/decide/provider.d.ts.map +1 -1
- package/dist/decide/provider.js.map +1 -1
- package/dist/decide/providers.d.ts +58 -0
- package/dist/decide/providers.d.ts.map +1 -0
- package/dist/decide/providers.js +69 -0
- package/dist/decide/providers.js.map +1 -0
- package/dist/decide/site.d.ts +2 -2
- package/dist/decide/site.d.ts.map +1 -1
- package/dist/decide/site.js +2 -0
- package/dist/decide/site.js.map +1 -1
- package/dist/decide/sites/list.d.ts +46 -0
- package/dist/decide/sites/list.d.ts.map +1 -0
- package/dist/decide/sites/list.js +206 -0
- package/dist/decide/sites/list.js.map +1 -0
- package/dist/decide/sites/registry.d.ts +130 -0
- package/dist/decide/sites/registry.d.ts.map +1 -0
- package/dist/decide/sites/registry.js +375 -0
- package/dist/decide/sites/registry.js.map +1 -0
- package/dist/decide/spend.d.ts +196 -0
- package/dist/decide/spend.d.ts.map +1 -0
- package/dist/decide/spend.js +387 -0
- package/dist/decide/spend.js.map +1 -0
- package/dist/decide/wizard.d.ts +53 -0
- package/dist/decide/wizard.d.ts.map +1 -0
- package/dist/decide/wizard.js +144 -0
- package/dist/decide/wizard.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-audit.d.ts.map +1 -1
- package/dist/docs/docs-audit.js +1 -2
- package/dist/docs/docs-audit.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 +1073 -628
- package/dist/docs/export-document.js.map +3 -3
- package/dist/doctor/knowledge.d.ts +16 -1
- package/dist/doctor/knowledge.d.ts.map +1 -1
- package/dist/doctor/knowledge.js +53 -17
- package/dist/doctor/knowledge.js.map +1 -1
- 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/gateway-client/generated/types.gen.d.ts +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/init/scaffold-workflows.d.ts.map +1 -1
- package/dist/init/scaffold-workflows.js +6 -3
- package/dist/init/scaffold-workflows.js.map +1 -1
- package/dist/init/upgrade-workflows.d.ts.map +1 -1
- package/dist/init/upgrade-workflows.js +6 -3
- package/dist/init/upgrade-workflows.js.map +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +51 -11
- 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/internal.d.ts +3 -3
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +2 -2
- package/dist/internal.js.map +1 -1
- package/dist/llm/plugin-facade.js +1184 -739
- package/dist/llm/plugin-facade.js.map +3 -3
- package/dist/memory/attention.d.ts.map +1 -1
- package/dist/memory/attention.js +2 -2
- package/dist/memory/attention.js.map +1 -1
- package/dist/memory/decision-contradiction.d.ts +3 -3
- package/dist/memory/decision-contradiction.d.ts.map +1 -1
- package/dist/memory/decision-contradiction.js +4 -3
- package/dist/memory/decision-contradiction.js.map +1 -1
- package/dist/memory/graph-memory-bridge.d.ts.map +1 -1
- package/dist/memory/graph-memory-bridge.js +2 -0
- package/dist/memory/graph-memory-bridge.js.map +1 -1
- package/dist/memory/observation-type-decision.d.ts +2 -2
- package/dist/memory/observation-type-decision.d.ts.map +1 -1
- package/dist/memory/observation-type-decision.js +3 -2
- package/dist/memory/observation-type-decision.js.map +1 -1
- package/dist/memory/pipeline-manifest-sqlite.d.ts +111 -0
- package/dist/memory/pipeline-manifest-sqlite.d.ts.map +1 -1
- package/dist/memory/pipeline-manifest-sqlite.js +230 -2
- package/dist/memory/pipeline-manifest-sqlite.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 +96 -21
- package/dist/nexus/analyze-orchestrator.js.map +1 -1
- package/dist/nexus/knowledge.d.ts.map +1 -1
- package/dist/nexus/knowledge.js +15 -4
- package/dist/nexus/knowledge.js.map +1 -1
- package/dist/nexus/migrations/M-split-graph.d.ts.map +1 -1
- package/dist/nexus/migrations/M-split-graph.js +4 -0
- package/dist/nexus/migrations/M-split-graph.js.map +1 -1
- package/dist/nexus/store.d.ts.map +1 -1
- package/dist/nexus/store.js +2 -0
- package/dist/nexus/store.js.map +1 -1
- package/dist/nexus/stored-roots.d.ts +65 -0
- package/dist/nexus/stored-roots.d.ts.map +1 -1
- package/dist/nexus/stored-roots.js +73 -0
- package/dist/nexus/stored-roots.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 +13 -8
- package/dist/orchestrate/pivot.js.map +1 -1
- package/dist/orchestrate/plan.d.ts.map +1 -1
- package/dist/orchestrate/plan.js +8 -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.map +1 -1
- package/dist/orchestrate/spawn-ops.js +5 -14
- 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/index.d.ts +1 -0
- package/dist/orchestration/index.d.ts.map +1 -1
- package/dist/orchestration/index.js +4 -3
- 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 +46 -17
- package/dist/orchestration/lead-rollup.js.map +1 -1
- package/dist/orchestration/owner-decision-readiness.d.ts +2 -2
- package/dist/orchestration/owner-decision-readiness.d.ts.map +1 -1
- package/dist/orchestration/owner-decision-readiness.js +3 -2
- package/dist/orchestration/owner-decision-readiness.js.map +1 -1
- 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/spawn-prompt.d.ts +4 -1
- package/dist/orchestration/spawn-prompt.d.ts.map +1 -1
- package/dist/orchestration/spawn-prompt.js +3 -2
- package/dist/orchestration/spawn-prompt.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/validate-spawn.d.ts.map +1 -1
- package/dist/orchestration/validate-spawn.js +2 -0
- package/dist/orchestration/validate-spawn.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/phases/index.d.ts.map +1 -1
- package/dist/phases/index.js +6 -2
- package/dist/phases/index.js.map +1 -1
- package/dist/project-scope.d.ts +34 -0
- package/dist/project-scope.d.ts.map +1 -1
- package/dist/project-scope.js +73 -0
- package/dist/project-scope.js.map +1 -1
- package/dist/release/ci-evidence.d.ts +10 -0
- package/dist/release/ci-evidence.d.ts.map +1 -1
- package/dist/release/ci-evidence.js +23 -7
- package/dist/release/ci-evidence.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 +42 -1
- package/dist/release/github-pr.js.map +1 -1
- package/dist/release/plan.d.ts.map +1 -1
- package/dist/release/plan.js +6 -3
- package/dist/release/plan.js.map +1 -1
- package/dist/release/pr-evidence.d.ts.map +1 -1
- package/dist/release/pr-evidence.js +12 -4
- package/dist/release/pr-evidence.js.map +1 -1
- package/dist/routing/capability-matrix.d.ts.map +1 -1
- package/dist/routing/capability-matrix.js +7 -0
- package/dist/routing/capability-matrix.js.map +1 -1
- package/dist/security/input-sanitization.d.ts.map +1 -1
- package/dist/security/input-sanitization.js +9 -2
- package/dist/security/input-sanitization.js.map +1 -1
- package/dist/selfimprove/fix-gen.js +1193 -748
- package/dist/selfimprove/fix-gen.js.map +3 -3
- package/dist/session/engine-ops.d.ts +6 -0
- package/dist/session/engine-ops.d.ts.map +1 -1
- package/dist/session/engine-ops.js +36 -4
- package/dist/session/engine-ops.js.map +1 -1
- package/dist/sessions/briefing.d.ts +17 -0
- package/dist/sessions/briefing.d.ts.map +1 -1
- package/dist/sessions/briefing.js +68 -68
- package/dist/sessions/briefing.js.map +1 -1
- package/dist/sessions/drift-watchdog.d.ts.map +1 -1
- package/dist/sessions/drift-watchdog.js +4 -3
- package/dist/sessions/drift-watchdog.js.map +1 -1
- package/dist/sessions/focus-state-store.d.ts +94 -1
- package/dist/sessions/focus-state-store.d.ts.map +1 -1
- package/dist/sessions/focus-state-store.js +100 -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 +1 -1
- 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/setup/config-json-merge.d.ts +28 -0
- package/dist/setup/config-json-merge.d.ts.map +1 -1
- package/dist/setup/config-json-merge.js +51 -0
- package/dist/setup/config-json-merge.js.map +1 -1
- package/dist/setup/index.d.ts +13 -10
- package/dist/setup/index.d.ts.map +1 -1
- package/dist/setup/index.js +15 -10
- package/dist/setup/index.js.map +1 -1
- package/dist/setup/sections/llm.js +1 -1
- package/dist/setup/sections/llm.js.map +1 -1
- package/dist/setup/sections/system-one.d.ts +28 -0
- package/dist/setup/sections/system-one.d.ts.map +1 -0
- package/dist/setup/sections/system-one.js +53 -0
- package/dist/setup/sections/system-one.js.map +1 -0
- package/dist/setup/wizard.d.ts +15 -1
- package/dist/setup/wizard.d.ts.map +1 -1
- package/dist/setup/wizard.js +15 -0
- package/dist/setup/wizard.js.map +1 -1
- package/dist/skills/discovery.d.ts +12 -1
- package/dist/skills/discovery.d.ts.map +1 -1
- package/dist/skills/discovery.js +27 -2
- package/dist/skills/discovery.js.map +1 -1
- package/dist/skills/orchestrator/startup.d.ts.map +1 -1
- package/dist/skills/orchestrator/startup.js +10 -5
- package/dist/skills/orchestrator/startup.js.map +1 -1
- package/dist/skills/prune-bundled.d.ts +306 -0
- package/dist/skills/prune-bundled.d.ts.map +1 -0
- package/dist/skills/prune-bundled.js +652 -0
- package/dist/skills/prune-bundled.js.map +1 -0
- package/dist/skills/types.d.ts +9 -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/branch-lock.d.ts.map +1 -1
- package/dist/spawn/branch-lock.js +26 -2
- package/dist/spawn/branch-lock.js.map +1 -1
- 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/store/agent-registry-accessor.d.ts.map +1 -1
- package/dist/store/agent-registry-accessor.js +2 -0
- package/dist/store/agent-registry-accessor.js.map +1 -1
- package/dist/store/backup-pack.js +1 -1
- package/dist/store/backup-pack.js.map +1 -1
- package/dist/store/backup.d.ts +15 -1
- package/dist/store/backup.d.ts.map +1 -1
- package/dist/store/backup.js +18 -2
- package/dist/store/backup.js.map +1 -1
- package/dist/store/conduit-sqlite.d.ts.map +1 -1
- package/dist/store/conduit-sqlite.js +3 -0
- package/dist/store/conduit-sqlite.js.map +1 -1
- package/dist/store/credential-transfer.d.ts.map +1 -1
- package/dist/store/credential-transfer.js +2 -0
- package/dist/store/credential-transfer.js.map +1 -1
- package/dist/store/cross-db-cleanup.d.ts.map +1 -1
- package/dist/store/cross-db-cleanup.js +2 -0
- package/dist/store/cross-db-cleanup.js.map +1 -1
- package/dist/store/dual-scope-db.d.ts.map +1 -1
- package/dist/store/dual-scope-db.js +13 -2
- package/dist/store/dual-scope-db.js.map +1 -1
- package/dist/store/migrate-signaldock-to-conduit.d.ts.map +1 -1
- package/dist/store/migrate-signaldock-to-conduit.js +3 -0
- package/dist/store/migrate-signaldock-to-conduit.js.map +1 -1
- package/dist/store/migration-manager.d.ts.map +1 -1
- package/dist/store/migration-manager.js +37 -3
- package/dist/store/migration-manager.js.map +1 -1
- package/dist/store/migration-sqlite.d.ts.map +1 -1
- package/dist/store/migration-sqlite.js +2 -0
- package/dist/store/migration-sqlite.js.map +1 -1
- package/dist/store/nexus-sqlite.d.ts.map +1 -1
- package/dist/store/nexus-sqlite.js +3 -0
- package/dist/store/nexus-sqlite.js.map +1 -1
- package/dist/store/open-cleo-db.d.ts.map +1 -1
- package/dist/store/open-cleo-db.js +3 -0
- package/dist/store/open-cleo-db.js.map +1 -1
- package/dist/store/portable-bundle-import.d.ts.map +1 -1
- package/dist/store/portable-bundle-import.js +2 -0
- package/dist/store/portable-bundle-import.js.map +1 -1
- package/dist/store/portable-bundle-relocate.d.ts.map +1 -1
- package/dist/store/portable-bundle-relocate.js +2 -0
- package/dist/store/portable-bundle-relocate.js.map +1 -1
- package/dist/store/portable-bundle-scan.js +1 -1
- package/dist/store/portable-bundle-scan.js.map +1 -1
- package/dist/store/ports/domain-binding.d.ts.map +1 -1
- package/dist/store/ports/domain-binding.js +5 -0
- package/dist/store/ports/domain-binding.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.map +1 -1
- package/dist/store/snapshot-gate.js +3 -0
- package/dist/store/snapshot-gate.js.map +1 -1
- package/dist/store/split-brain-import.d.ts.map +1 -1
- package/dist/store/split-brain-import.js +2 -0
- package/dist/store/split-brain-import.js.map +1 -1
- package/dist/store/sqlite-data-accessor.d.ts.map +1 -1
- package/dist/store/sqlite-data-accessor.js +19 -2
- package/dist/store/sqlite-data-accessor.js.map +1 -1
- package/dist/store/sqlite-native.d.ts.map +1 -1
- package/dist/store/sqlite-native.js +1 -0
- package/dist/store/sqlite-native.js.map +1 -1
- package/dist/store/sqlite.d.ts +14 -0
- package/dist/store/sqlite.d.ts.map +1 -1
- package/dist/store/sqlite.js +31 -4
- package/dist/store/sqlite.js.map +1 -1
- package/dist/store/twin-collapse.d.ts +46 -1
- package/dist/store/twin-collapse.d.ts.map +1 -1
- package/dist/store/twin-collapse.js +131 -5
- package/dist/store/twin-collapse.js.map +1 -1
- package/dist/store/worktree-build-guard.d.ts +191 -0
- package/dist/store/worktree-build-guard.d.ts.map +1 -0
- package/dist/store/worktree-build-guard.js +486 -0
- package/dist/store/worktree-build-guard.js.map +1 -0
- package/dist/store/worktree-isolation-guard.d.ts +27 -0
- package/dist/store/worktree-isolation-guard.d.ts.map +1 -1
- package/dist/store/worktree-isolation-guard.js +71 -3
- package/dist/store/worktree-isolation-guard.js.map +1 -1
- package/dist/store/writer-lease.d.ts.map +1 -1
- package/dist/store/writer-lease.js +2 -0
- package/dist/store/writer-lease.js.map +1 -1
- package/dist/system/backup.d.ts +6 -2
- package/dist/system/backup.d.ts.map +1 -1
- package/dist/system/backup.js +6 -3
- package/dist/system/backup.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/task-tools/index.d.ts +4 -2
- package/dist/task-tools/index.d.ts.map +1 -1
- package/dist/task-tools/index.js +3 -2
- package/dist/task-tools/index.js.map +1 -1
- package/dist/task-tools/score-task-priority.d.ts +93 -18
- package/dist/task-tools/score-task-priority.d.ts.map +1 -1
- package/dist/task-tools/score-task-priority.js +193 -81
- package/dist/task-tools/score-task-priority.js.map +1 -1
- 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/affected-packages.d.ts +62 -13
- package/dist/tasks/affected-packages.d.ts.map +1 -1
- package/dist/tasks/affected-packages.js +158 -33
- package/dist/tasks/affected-packages.js.map +1 -1
- 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 +29 -1
- package/dist/tasks/analyze.d.ts.map +1 -1
- package/dist/tasks/analyze.js +52 -36
- package/dist/tasks/analyze.js.map +1 -1
- package/dist/tasks/backfill-child-projections.d.ts.map +1 -1
- package/dist/tasks/backfill-child-projections.js +4 -1
- package/dist/tasks/backfill-child-projections.js.map +1 -1
- package/dist/tasks/change-set.d.ts +24 -0
- package/dist/tasks/change-set.d.ts.map +1 -1
- package/dist/tasks/change-set.js +143 -11
- package/dist/tasks/change-set.js.map +1 -1
- package/dist/tasks/command-line.d.ts +54 -0
- package/dist/tasks/command-line.d.ts.map +1 -0
- package/dist/tasks/command-line.js +151 -0
- package/dist/tasks/command-line.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 +49 -0
- 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 +275 -0
- package/dist/tasks/component-pr.js.map +1 -0
- package/dist/tasks/delete.d.ts.map +1 -1
- package/dist/tasks/delete.js +20 -0
- package/dist/tasks/delete.js.map +1 -1
- package/dist/tasks/done-plan.d.ts +21 -1
- package/dist/tasks/done-plan.d.ts.map +1 -1
- package/dist/tasks/done-plan.js +170 -15
- package/dist/tasks/done-plan.js.map +1 -1
- package/dist/tasks/done-record.d.ts.map +1 -1
- package/dist/tasks/done-record.js +9 -80
- package/dist/tasks/done-record.js.map +1 -1
- package/dist/tasks/duplicate-detector.d.ts +3 -3
- package/dist/tasks/duplicate-detector.d.ts.map +1 -1
- package/dist/tasks/duplicate-detector.js +4 -3
- package/dist/tasks/duplicate-detector.js.map +1 -1
- package/dist/tasks/engine-wrap-ops.d.ts +29 -0
- package/dist/tasks/engine-wrap-ops.d.ts.map +1 -1
- package/dist/tasks/engine-wrap-ops.js +40 -0
- package/dist/tasks/engine-wrap-ops.js.map +1 -1
- package/dist/tasks/engine-wrap.d.ts +1 -1
- package/dist/tasks/engine-wrap.d.ts.map +1 -1
- package/dist/tasks/engine-wrap.js +1 -1
- package/dist/tasks/engine-wrap.js.map +1 -1
- package/dist/tasks/evidence.d.ts +49 -2
- package/dist/tasks/evidence.d.ts.map +1 -1
- package/dist/tasks/evidence.js +85 -9
- package/dist/tasks/evidence.js.map +1 -1
- package/dist/tasks/gate-runner.d.ts.map +1 -1
- package/dist/tasks/gate-runner.js +48 -12
- package/dist/tasks/gate-runner.js.map +1 -1
- package/dist/tasks/index.d.ts +1 -1
- package/dist/tasks/index.d.ts.map +1 -1
- package/dist/tasks/index.js +1 -1
- package/dist/tasks/index.js.map +1 -1
- package/dist/tasks/ops.d.ts +1 -0
- package/dist/tasks/ops.d.ts.map +1 -1
- package/dist/tasks/ranking-audit.d.ts +122 -0
- package/dist/tasks/ranking-audit.d.ts.map +1 -0
- package/dist/tasks/ranking-audit.js +193 -0
- package/dist/tasks/ranking-audit.js.map +1 -0
- package/dist/tasks/task-analyze.d.ts.map +1 -1
- package/dist/tasks/task-analyze.js +19 -32
- package/dist/tasks/task-analyze.js.map +1 -1
- package/dist/tasks/task-next.d.ts +48 -2
- package/dist/tasks/task-next.d.ts.map +1 -1
- package/dist/tasks/task-next.js +84 -102
- package/dist/tasks/task-next.js.map +1 -1
- package/dist/tasks/task-ops.d.ts +1 -1
- package/dist/tasks/task-ops.d.ts.map +1 -1
- package/dist/tasks/task-ops.js +1 -1
- package/dist/tasks/task-ops.js.map +1 -1
- package/dist/tasks/tool-resolver.d.ts +7 -1
- package/dist/tasks/tool-resolver.d.ts.map +1 -1
- package/dist/tasks/tool-resolver.js +24 -10
- package/dist/tasks/tool-resolver.js.map +1 -1
- package/dist/tasks/update.d.ts +8 -2
- package/dist/tasks/update.d.ts.map +1 -1
- package/dist/tasks/update.js +28 -1
- package/dist/tasks/update.js.map +1 -1
- package/dist/telemetry/sqlite.d.ts.map +1 -1
- package/dist/telemetry/sqlite.js +2 -0
- package/dist/telemetry/sqlite.js.map +1 -1
- package/dist/validation/doctor/checks.d.ts.map +1 -1
- package/dist/validation/doctor/checks.js +2 -2
- package/dist/validation/doctor/checks.js.map +1 -1
- package/dist/validation/engine-ops.d.ts +9 -1
- package/dist/validation/engine-ops.d.ts.map +1 -1
- package/dist/validation/engine-ops.js +24 -1
- 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/package.json +14 -14
- package/schemas/config.schema.json +13 -0
- package/templates/CLEO-INJECTION.md +1 -1
- package/templates/CLEO-REFERENCE.md +5 -1
|
@@ -1,118 +1,230 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* scoreTask —
|
|
2
|
+
* scoreTask — THE task ranker (T12661, tiered per council verdict D11161 / T12691).
|
|
3
3
|
*
|
|
4
|
-
* Computes a numeric score for a task given its attributes and project context.
|
|
5
4
|
* Pure functional — no I/O, no DB access, no async.
|
|
6
5
|
*
|
|
6
|
+
* `cleo next`, the briefing's `nextTasks` and both `cleo analyze` paths rank
|
|
7
|
+
* through this module. The order is LEXICOGRAPHIC, never an additive sum:
|
|
8
|
+
*
|
|
9
|
+
* 1. **Priority band** — the owner's priority: critical > high > medium > low.
|
|
10
|
+
* 2. **Severity** — attested severity: P0 > P1 > P2 > P3 > unknown. An unset
|
|
11
|
+
* severity is `unknown`; nothing is imputed (not even for a bug).
|
|
12
|
+
* 3. **Bounded tiebreak** — computed graph facts: dependencies ready (+10),
|
|
13
|
+
* phase alignment (+20), leverage (+5 per open dependent, capped at +20),
|
|
14
|
+
* anti-starvation age (+1 per week after the first, capped at +10).
|
|
15
|
+
* 4. **createdAt** — older first (parsed and normalised to UTC).
|
|
16
|
+
* 5. **id**.
|
|
17
|
+
*
|
|
18
|
+
* Computed signals therefore never cross a band: a plain ready critical task
|
|
19
|
+
* always outranks a low-priority P0 bug carrying every bonus. The additive
|
|
20
|
+
* scorer this replaces let that bug win 115 to 110. BRAIN success/failure
|
|
21
|
+
* patterns are informational factors only; they are not part of the order.
|
|
22
|
+
*
|
|
7
23
|
* @arch SDK Tool (Category B) — pure, no side effects, contracts-typed
|
|
8
24
|
* @task T10068
|
|
25
|
+
* @task T12661
|
|
26
|
+
* @task T12691
|
|
9
27
|
* @epic T9835
|
|
10
28
|
*/
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
29
|
+
import { isReadinessDependencySatisfied } from '../tasks/dependency-check.js';
|
|
30
|
+
/** Tier 1 — owner priority band rank (higher first). */
|
|
31
|
+
export const PRIORITY_BAND = {
|
|
32
|
+
critical: 4,
|
|
33
|
+
high: 3,
|
|
34
|
+
medium: 2,
|
|
35
|
+
low: 1,
|
|
16
36
|
};
|
|
17
|
-
|
|
37
|
+
/** Tier 2 — attested severity rank (higher first); `unknown` is 0. */
|
|
38
|
+
export const SEVERITY_RANK = {
|
|
39
|
+
P0: 4,
|
|
40
|
+
P1: 3,
|
|
41
|
+
P2: 2,
|
|
42
|
+
P3: 1,
|
|
43
|
+
};
|
|
44
|
+
/** Tier 3 — bonus when every dependency is satisfied. */
|
|
45
|
+
export const DEPS_READY_SCORE = 10;
|
|
46
|
+
/** Tier 3 — bonus when the task's phase matches the current phase. */
|
|
47
|
+
export const PHASE_ALIGNMENT_SCORE = 20;
|
|
48
|
+
/** Tier 3 — bonus per open task this task unblocks. */
|
|
49
|
+
export const LEVERAGE_PER_DEPENDENT = 5;
|
|
50
|
+
/** Tier 3 — cap on the leverage bonus. */
|
|
51
|
+
export const MAX_LEVERAGE_SCORE = 20;
|
|
52
|
+
/** Tier 3 — cap on the anti-starvation age bonus (+1 per week after the first). */
|
|
53
|
+
export const MAX_AGE_SCORE = 10;
|
|
54
|
+
/** Weights that fold the key into one sortable number (tiebreak stays below 1000). */
|
|
55
|
+
const BAND_WEIGHT = 10000;
|
|
56
|
+
const SEVERITY_WEIGHT = 1000;
|
|
57
|
+
/**
|
|
58
|
+
* Parse a task timestamp to epoch milliseconds, normalised to UTC.
|
|
59
|
+
*
|
|
60
|
+
* Stores hold both ISO-8601 with a zone (`2026-09-01T10:00:00Z`) and SQLite's
|
|
61
|
+
* zone-less `YYYY-MM-DD HH:MM:SS`. `Date.parse` reads the zone-less form as
|
|
62
|
+
* LOCAL time, so the same instant scored and sorted differently by machine
|
|
63
|
+
* (T12661 review). A timestamp without a zone is taken as UTC.
|
|
64
|
+
*
|
|
65
|
+
* @param value - Timestamp text.
|
|
66
|
+
* @returns Epoch milliseconds, or `NaN` when unparseable.
|
|
67
|
+
*/
|
|
68
|
+
export function parseTimestampMs(value) {
|
|
69
|
+
if (!value)
|
|
70
|
+
return Number.NaN;
|
|
71
|
+
const text = value.trim();
|
|
72
|
+
const hasZone = /(?:[zZ]|[+-]\d{2}:?\d{2})$/.test(text);
|
|
73
|
+
if (hasZone || !/\d{2}:\d{2}/.test(text))
|
|
74
|
+
return Date.parse(text);
|
|
75
|
+
return Date.parse(`${text.replace(' ', 'T')}Z`);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Whether every dependency of a task is satisfied, under the same readiness
|
|
79
|
+
* policy as `depsReady` (cancelled work still blocks).
|
|
80
|
+
*/
|
|
18
81
|
function areDepsReady(depends, taskStatuses) {
|
|
19
82
|
if (!depends?.length)
|
|
20
83
|
return true;
|
|
21
84
|
if (!taskStatuses)
|
|
22
85
|
return false;
|
|
23
|
-
return depends.every((depId) =>
|
|
24
|
-
const status = taskStatuses.get(depId);
|
|
25
|
-
return status !== undefined && SATISFIED_STATUSES.has(status);
|
|
26
|
-
});
|
|
86
|
+
return depends.every((depId) => isReadinessDependencySatisfied(taskStatuses.get(depId)));
|
|
27
87
|
}
|
|
28
88
|
/**
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
* Scoring formula:
|
|
32
|
-
* - **Priority** (+25/+50/+75/+100 depending on level)
|
|
33
|
-
* - **Phase alignment** (+20 when task phase matches `ctx.currentPhase`)
|
|
34
|
-
* - **Dependency readiness** (+10 when all deps are done/cancelled)
|
|
35
|
-
* - **Age bonus** (+1 per week over 7 days, capped at +15)
|
|
36
|
-
* - **Brain success pattern** (+10 for first matching success pattern)
|
|
37
|
-
* - **Brain failure pattern** (-5 for first matching failure pattern)
|
|
89
|
+
* Score a single task: its lexicographic key, every factor tagged with its
|
|
90
|
+
* comparator tier, and the key folded into one number that sorts identically.
|
|
38
91
|
*
|
|
39
92
|
* @param task - Task to score
|
|
40
|
-
* @param ctx - Scoring context (phase, dep statuses, patterns)
|
|
41
|
-
* @returns Score and
|
|
93
|
+
* @param ctx - Scoring context (phase, dep statuses, leverage, `nowMs`, patterns)
|
|
94
|
+
* @returns Score, key and factors
|
|
42
95
|
*
|
|
43
96
|
* @example
|
|
44
97
|
* ```typescript
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
* { currentPhase: 'v2', taskStatuses: new Map([['T0', 'done']]) },
|
|
48
|
-
* );
|
|
49
|
-
* // result.score === 75 (priority) + 20 (phase) + 10 (deps) = 105
|
|
98
|
+
* scoreTask({ id: 'T1', title: 'Auth', priority: 'high', kind: 'bug' }, {}).key;
|
|
99
|
+
* // { band: 3, severity: 0, tiebreak: 10 } — severity unknown, deps ready
|
|
50
100
|
* ```
|
|
51
101
|
*/
|
|
52
102
|
export function scoreTask(task, ctx) {
|
|
53
103
|
const factors = [];
|
|
54
|
-
|
|
55
|
-
//
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
104
|
+
const priority = task.priority ?? 'medium';
|
|
105
|
+
// Own-property lookups only: an unvalidated value such as `toString` must
|
|
106
|
+
// fall back, never yield a prototype member (which would fold to NaN).
|
|
107
|
+
const band = Object.hasOwn(PRIORITY_BAND, priority)
|
|
108
|
+
? PRIORITY_BAND[priority]
|
|
109
|
+
: PRIORITY_BAND['medium'];
|
|
110
|
+
factors.push({
|
|
111
|
+
name: 'band',
|
|
112
|
+
delta: band * BAND_WEIGHT,
|
|
113
|
+
detail: `priority ${priority}`,
|
|
114
|
+
tier: 1,
|
|
115
|
+
});
|
|
116
|
+
const severity = task.severity && Object.hasOwn(SEVERITY_RANK, task.severity) ? SEVERITY_RANK[task.severity] : 0;
|
|
117
|
+
factors.push({
|
|
118
|
+
name: 'severity',
|
|
119
|
+
delta: severity * SEVERITY_WEIGHT,
|
|
120
|
+
detail: task.severity ?? 'unknown (not set)',
|
|
121
|
+
tier: 2,
|
|
122
|
+
});
|
|
123
|
+
let tiebreak = 0;
|
|
124
|
+
const bonus = (name, delta, detail) => {
|
|
125
|
+
tiebreak += delta;
|
|
126
|
+
factors.push({ name, delta, detail, tier: 3 });
|
|
127
|
+
};
|
|
128
|
+
if (areDepsReady(task.depends, ctx.taskStatuses)) {
|
|
129
|
+
bonus('depsReady', DEPS_READY_SCORE, 'all dependencies satisfied');
|
|
130
|
+
}
|
|
60
131
|
if (ctx.currentPhase && task.phase === ctx.currentPhase) {
|
|
61
|
-
|
|
62
|
-
factors.push({
|
|
63
|
-
name: 'phaseAlignment',
|
|
64
|
-
delta: 20,
|
|
65
|
-
detail: `matches current phase "${ctx.currentPhase}"`,
|
|
66
|
-
});
|
|
132
|
+
bonus('phaseAlignment', PHASE_ALIGNMENT_SCORE, `matches current phase "${ctx.currentPhase}"`);
|
|
67
133
|
}
|
|
68
|
-
|
|
69
|
-
if (
|
|
70
|
-
|
|
71
|
-
factors.push({ name: 'depsReady', delta: 10, detail: 'all dependencies satisfied' });
|
|
134
|
+
const dependents = ctx.leverage?.get(task.id) ?? 0;
|
|
135
|
+
if (dependents > 0) {
|
|
136
|
+
bonus('leverage', Math.min(MAX_LEVERAGE_SCORE, dependents * LEVERAGE_PER_DEPENDENT), `unblocks ${dependents} open task(s) (capped at +${MAX_LEVERAGE_SCORE})`);
|
|
72
137
|
}
|
|
73
|
-
// Age bonus
|
|
74
138
|
if (task.createdAt) {
|
|
75
139
|
const nowMs = ctx.nowMs ?? Date.now();
|
|
76
|
-
const
|
|
77
|
-
const ageDays = ageMs / (1000 * 60 * 60 * 24);
|
|
140
|
+
const ageDays = (nowMs - parseTimestampMs(task.createdAt)) / (1000 * 60 * 60 * 24);
|
|
78
141
|
if (ageDays > 7) {
|
|
79
|
-
|
|
80
|
-
score += ageBonus;
|
|
81
|
-
factors.push({
|
|
82
|
-
name: 'age',
|
|
83
|
-
delta: ageBonus,
|
|
84
|
-
detail: `${Math.floor(ageDays)} days old`,
|
|
85
|
-
});
|
|
142
|
+
bonus('age', Math.min(MAX_AGE_SCORE, Math.floor(ageDays / 7)), `anti-starvation: ${Math.floor(ageDays)} days old (capped at +${MAX_AGE_SCORE})`);
|
|
86
143
|
}
|
|
87
144
|
}
|
|
88
|
-
//
|
|
145
|
+
// BRAIN patterns: informational only — not part of the order (D11161).
|
|
89
146
|
if (ctx.successPatterns?.length || ctx.failurePatterns?.length) {
|
|
90
|
-
const
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
factors.push({
|
|
108
|
-
name: 'brainFailure',
|
|
109
|
-
delta: -5,
|
|
110
|
-
detail: `failure pattern "${fp.pattern}"`,
|
|
111
|
-
});
|
|
112
|
-
break;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
147
|
+
const matchText = [task.title, ...(task.labels ?? [])].join(' ').toLowerCase();
|
|
148
|
+
const success = ctx.successPatterns?.find((p) => matchText.includes(p.pattern.toLowerCase()));
|
|
149
|
+
if (success)
|
|
150
|
+
factors.push({
|
|
151
|
+
name: 'brainSuccess',
|
|
152
|
+
delta: 0,
|
|
153
|
+
detail: `success pattern "${success.pattern}"`,
|
|
154
|
+
tier: null,
|
|
155
|
+
});
|
|
156
|
+
const failure = ctx.failurePatterns?.find((p) => matchText.includes(p.pattern.toLowerCase()));
|
|
157
|
+
if (failure)
|
|
158
|
+
factors.push({
|
|
159
|
+
name: 'brainFailure',
|
|
160
|
+
delta: 0,
|
|
161
|
+
detail: `failure pattern "${failure.pattern}"`,
|
|
162
|
+
tier: null,
|
|
163
|
+
});
|
|
115
164
|
}
|
|
116
|
-
|
|
165
|
+
const key = { band, severity, tiebreak };
|
|
166
|
+
return { score: band * BAND_WEIGHT + severity * SEVERITY_WEIGHT + tiebreak, factors, key };
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Render one factor as an `--explain` line naming its comparator tier.
|
|
170
|
+
*
|
|
171
|
+
* @param factor - Scored factor.
|
|
172
|
+
* @returns e.g. `tier 1 band: priority high`, `tier 3 depsReady: all dependencies satisfied (+10)`,
|
|
173
|
+
* or `info brainSuccess: … (not in the order)`.
|
|
174
|
+
*/
|
|
175
|
+
export function formatScoreFactor(factor) {
|
|
176
|
+
if (factor.tier === null)
|
|
177
|
+
return `info ${factor.name}: ${factor.detail} (not in the order)`;
|
|
178
|
+
if (factor.tier === 1 || factor.tier === 2)
|
|
179
|
+
return `tier ${factor.tier} ${factor.name}: ${factor.detail}`;
|
|
180
|
+
const sign = factor.delta >= 0 ? '+' : '';
|
|
181
|
+
return `tier 3 ${factor.name}: ${factor.detail} (${sign}${factor.delta})`;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Count, for every task id, the OPEN tasks that depend on it — the leverage
|
|
185
|
+
* input of {@link scoreTask}. Done, archived and cancelled dependents are not
|
|
186
|
+
* work this task unblocks.
|
|
187
|
+
*
|
|
188
|
+
* @param tasks - Tasks with `depends` and `status`.
|
|
189
|
+
* @returns Map of task id to number of open dependents.
|
|
190
|
+
*/
|
|
191
|
+
export function computeLeverage(tasks) {
|
|
192
|
+
const leverage = new Map();
|
|
193
|
+
for (const task of tasks) {
|
|
194
|
+
if (isReadinessDependencySatisfied(task.status) || task.status === 'cancelled')
|
|
195
|
+
continue;
|
|
196
|
+
for (const dep of task.depends ?? [])
|
|
197
|
+
leverage.set(dep, (leverage.get(dep) ?? 0) + 1);
|
|
198
|
+
}
|
|
199
|
+
return leverage;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Order tasks by the tiered key: band, severity, tiebreak (all higher first),
|
|
203
|
+
* then older `createdAt` (parsed, UTC), then id — deterministic, so every
|
|
204
|
+
* ranker returns the same order for the same input.
|
|
205
|
+
*
|
|
206
|
+
* @param tasks - Candidate tasks.
|
|
207
|
+
* @param ctx - Shared scoring context.
|
|
208
|
+
* @returns Ranked tasks.
|
|
209
|
+
*/
|
|
210
|
+
export function rankTasks(tasks, ctx) {
|
|
211
|
+
// Missing or unparseable timestamps sort after every dated task.
|
|
212
|
+
const created = (task) => {
|
|
213
|
+
const ms = parseTimestampMs(task.createdAt);
|
|
214
|
+
return Number.isNaN(ms) ? Number.POSITIVE_INFINITY : ms;
|
|
215
|
+
};
|
|
216
|
+
const zero = { band: 0, severity: 0, tiebreak: 0 };
|
|
217
|
+
return tasks
|
|
218
|
+
.map((task) => ({ task, ...scoreTask(task, ctx), createdMs: created(task) }))
|
|
219
|
+
.sort((a, b) => {
|
|
220
|
+
const ka = a.key ?? zero;
|
|
221
|
+
const kb = b.key ?? zero;
|
|
222
|
+
return (kb.band - ka.band ||
|
|
223
|
+
kb.severity - ka.severity ||
|
|
224
|
+
kb.tiebreak - ka.tiebreak ||
|
|
225
|
+
(a.createdMs === b.createdMs ? 0 : a.createdMs < b.createdMs ? -1 : 1) ||
|
|
226
|
+
a.task.id.localeCompare(b.task.id));
|
|
227
|
+
})
|
|
228
|
+
.map(({ createdMs: _createdMs, ...rest }) => rest);
|
|
117
229
|
}
|
|
118
230
|
//# sourceMappingURL=score-task-priority.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"score-task-priority.js","sourceRoot":"","sources":["../../src/task-tools/score-task-priority.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"score-task-priority.js","sourceRoot":"","sources":["../../src/task-tools/score-task-priority.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import '../hooks/handlers/index.js';
|
|
8
8
|
import type { KnowledgeCoverage } from '@cleocode/contracts';
|
|
9
|
+
import { type StaleFocusPointer } from '../sessions/focus-state-store.js';
|
|
9
10
|
import type { DataAccessor } from '../store/data-accessor.js';
|
|
10
11
|
/** Result of getting current task. */
|
|
11
12
|
export interface TaskCurrentResult {
|
|
@@ -13,6 +14,11 @@ export interface TaskCurrentResult {
|
|
|
13
14
|
currentPhase: string | null;
|
|
14
15
|
sessionNote: string | null;
|
|
15
16
|
nextAction: string | null;
|
|
17
|
+
/**
|
|
18
|
+
* The focus pointer when it names a done, cancelled, archived or missing
|
|
19
|
+
* task. `currentTask` is then `null`: a finished task is never current (T12660).
|
|
20
|
+
*/
|
|
21
|
+
staleFocus?: StaleFocusPointer;
|
|
16
22
|
}
|
|
17
23
|
/** Result of starting work on a task. */
|
|
18
24
|
export interface TaskStartResult {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/task-work/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/task-work/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,qBAAqB,CAAC;AAK5E,OAAO,EAGL,KAAK,iBAAiB,EAEvB,MAAM,kCAAkC,CAAC;AAG1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAmC9D,sCAAsC;AACtC,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B;;;OAGG;IACH,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC;AAED,yCAAyC;AACzC,MAAM,WAAW,eAAe;IAC9B,4EAA4E;IAC5E,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,+BAA+B;AAC/B,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,GAAG,CAAC,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,YAAY,GACtB,OAAO,CAAC,iBAAiB,CAAC,CAiB5B;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,EACd,GAAG,CAAC,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,YAAY,GACtB,OAAO,CAAC,eAAe,CAAC,CA8E1B;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAC5B,GAAG,CAAC,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,YAAY,GACtB,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAuC1C;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,GAAG,CAAC,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,YAAY,GACtB,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAmBjC;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,uBAAiB,CAAC"}
|
package/dist/task-work/index.js
CHANGED
|
@@ -10,7 +10,7 @@ import { ExitCode } from '@cleocode/contracts';
|
|
|
10
10
|
import { CleoError } from '../errors.js';
|
|
11
11
|
import { assessKnowledgeCoverage } from '../nexus/knowledge.js';
|
|
12
12
|
import { resolveOrCwd } from '../paths.js';
|
|
13
|
-
import { readFocusState, writeFocusState } from '../sessions/focus-state-store.js';
|
|
13
|
+
import { readFocusState, readLiveFocus, writeFocusState, } from '../sessions/focus-state-store.js';
|
|
14
14
|
import { resolveSessionIdFromEnv } from '../sessions/session-id.js';
|
|
15
15
|
import { trackBackgroundOp } from '../store/background-ops.js';
|
|
16
16
|
import { getTaskAccessor } from '../store/data-accessor.js';
|
|
@@ -51,9 +51,12 @@ const PLANNING_STAGES = new Set([
|
|
|
51
51
|
*/
|
|
52
52
|
export async function currentTask(cwd, accessor) {
|
|
53
53
|
const acc = accessor ?? (await getTaskAccessor(cwd));
|
|
54
|
-
|
|
54
|
+
// T12660/T12684: the one validating focus reader — a pointer left behind by
|
|
55
|
+
// a completion (or the never-cleared legacy key) comes back stale.
|
|
56
|
+
const { state: focus, currentTask: live, staleFocus, } = await readLiveFocus(acc, resolveFocusSessionId());
|
|
55
57
|
return {
|
|
56
|
-
currentTask:
|
|
58
|
+
currentTask: live,
|
|
59
|
+
...(staleFocus ? { staleFocus } : {}),
|
|
57
60
|
currentPhase: focus?.currentPhase ?? null,
|
|
58
61
|
sessionNote: focus?.sessionNote ?? null,
|
|
59
62
|
nextAction: focus?.nextAction ?? null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/task-work/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,8BAA8B;AAC9B,OAAO,4BAA4B,CAAC;AAGpC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/task-work/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
* @task T12635
|
|
23
23
|
*/
|
|
24
24
|
import type { ResolvedToolCommand } from './tool-resolver.js';
|
|
25
|
+
import { type ReleaseSlotFn } from './tool-semaphore.js';
|
|
25
26
|
/** One workspace package. */
|
|
26
27
|
export interface WorkspacePackage {
|
|
27
28
|
/** `package.json` name. */
|
|
@@ -30,6 +31,8 @@ export interface WorkspacePackage {
|
|
|
30
31
|
dir: string;
|
|
31
32
|
/** Names of OTHER workspace packages it depends on. */
|
|
32
33
|
deps: string[];
|
|
34
|
+
/** Declares a `scripts.test`, so `{filters}`/`{packages}` runs test it. */
|
|
35
|
+
hasTestScript: boolean;
|
|
33
36
|
}
|
|
34
37
|
/** The affected set, or the reason only a full run will do. */
|
|
35
38
|
export type AffectedScope = {
|
|
@@ -65,6 +68,29 @@ export interface VitestProject {
|
|
|
65
68
|
/** Project root relative to the workspace root (`''` for the root itself). */
|
|
66
69
|
dir: string;
|
|
67
70
|
}
|
|
71
|
+
/** Vitest's resolved projects, or why they could not be resolved. */
|
|
72
|
+
export type VitestProjectsResult = {
|
|
73
|
+
ok: true;
|
|
74
|
+
projects: VitestProject[];
|
|
75
|
+
} | {
|
|
76
|
+
ok: false;
|
|
77
|
+
reason: string;
|
|
78
|
+
/** The `test` slot was busy and the caller would not wait (T12656 review). */
|
|
79
|
+
busy?: true;
|
|
80
|
+
};
|
|
81
|
+
/** The report a caller that will not wait gets while the `test` slot is held. */
|
|
82
|
+
export declare const TEST_SLOT_BUSY = "scope pending: test slot busy";
|
|
83
|
+
/** Options for {@link listVitestProjects}. */
|
|
84
|
+
export interface ListVitestProjectsOptions {
|
|
85
|
+
/** Heavy-tool slot acquisition (tests inject; defaults to the global `test` semaphore). */
|
|
86
|
+
acquireSlot?: (canonical: 'test') => Promise<ReleaseSlotFn>;
|
|
87
|
+
/**
|
|
88
|
+
* Queue for the `test` slot (true: `cleo done`, about to run tests anyway),
|
|
89
|
+
* or take it only if free now (false: `--plan`, which never waits — a held
|
|
90
|
+
* slot reports {@link TEST_SLOT_BUSY}). Default false.
|
|
91
|
+
*/
|
|
92
|
+
wait?: boolean;
|
|
93
|
+
}
|
|
68
94
|
/**
|
|
69
95
|
* Ask vitest which projects the workspace config resolves to (T12635 review).
|
|
70
96
|
*
|
|
@@ -73,17 +99,17 @@ export interface VitestProject {
|
|
|
73
99
|
* unnamed projects and every future config shape are named exactly as
|
|
74
100
|
* `--project` will match them. No config parsing happens here.
|
|
75
101
|
*
|
|
102
|
+
* The child runs asynchronously under the heavy-tool `test` semaphore (loading
|
|
103
|
+
* a workspace's configs is test tooling), and results are memoized per tree
|
|
104
|
+
* state, so `cleo done` planning and recording resolve once (T12657).
|
|
105
|
+
*
|
|
76
106
|
* @param root - Workspace root.
|
|
107
|
+
* @param opts - Slot acquisition override.
|
|
77
108
|
* @returns The projects, or the reason they could not be resolved.
|
|
78
109
|
* @task T12635
|
|
110
|
+
* @task T12657
|
|
79
111
|
*/
|
|
80
|
-
export declare function listVitestProjects(root: string):
|
|
81
|
-
ok: true;
|
|
82
|
-
projects: VitestProject[];
|
|
83
|
-
} | {
|
|
84
|
-
ok: false;
|
|
85
|
-
reason: string;
|
|
86
|
-
};
|
|
112
|
+
export declare function listVitestProjects(root: string, opts?: ListVitestProjectsOptions): Promise<VitestProjectsResult>;
|
|
87
113
|
/** Test targets for an affected run, or why only a full run is safe. */
|
|
88
114
|
export type AffectedTestTargets = {
|
|
89
115
|
ok: true;
|
|
@@ -92,6 +118,7 @@ export type AffectedTestTargets = {
|
|
|
92
118
|
} | {
|
|
93
119
|
ok: false;
|
|
94
120
|
reason: string;
|
|
121
|
+
busy?: true;
|
|
95
122
|
};
|
|
96
123
|
/**
|
|
97
124
|
* The vitest projects an affected run must select (T12635 review).
|
|
@@ -115,16 +142,32 @@ export type AffectedTestTargets = {
|
|
|
115
142
|
* @returns Project names to run and the dependents that have none, or a refusal.
|
|
116
143
|
* @task T12635
|
|
117
144
|
*/
|
|
118
|
-
export declare function affectedTestTargets(root: string, packages: readonly string[], direct: readonly string[], resolve?: (root: string) =>
|
|
145
|
+
export declare function affectedTestTargets(root: string, packages: readonly string[], direct: readonly string[], resolve?: (root: string) => Promise<VitestProjectsResult>): Promise<AffectedTestTargets>;
|
|
146
|
+
/**
|
|
147
|
+
* The packages a `{filters}`/`{packages}` run tests (T12657): a package with no
|
|
148
|
+
* `scripts.test` runs nothing. A DIRECTLY changed one refuses the affected
|
|
149
|
+
* scope; an affected dependent with none is reported in `untested`.
|
|
150
|
+
*
|
|
151
|
+
* @param root - Workspace root.
|
|
152
|
+
* @param packages - Affected package names (direct plus dependents).
|
|
153
|
+
* @param direct - The directly changed packages.
|
|
154
|
+
* @returns The packages to pass and the dependents with no test script, or a refusal.
|
|
155
|
+
* @task T12657
|
|
156
|
+
*/
|
|
157
|
+
export declare function scriptTestTargets(root: string, packages: readonly string[], direct: readonly string[]): AffectedTestTargets;
|
|
119
158
|
/**
|
|
120
159
|
* Expand a `testing.affectedCommand` template into a spawnable command.
|
|
121
160
|
* `{projects}` → `--project <name>` per package, `{filters}` → `--filter
|
|
122
161
|
* <name>` per package, `{packages}` → the names. Each expands to separate
|
|
123
|
-
* arguments
|
|
162
|
+
* arguments. The template is split with POSIX `sh` quoting and run without a
|
|
163
|
+
* shell, so shell syntax (`&&`, `|`, `$`, …) is refused rather than passed to
|
|
164
|
+
* the target as literal words, which could run a different program and
|
|
165
|
+
* false-PASS (T12718).
|
|
124
166
|
*
|
|
125
167
|
* @param template - e.g. `pnpm exec vitest run {projects}`.
|
|
126
168
|
* @param packages - Affected package names.
|
|
127
169
|
* @returns The executable and its arguments.
|
|
170
|
+
* @throws When the template uses shell syntax or has an unterminated quote.
|
|
128
171
|
* @task T12635
|
|
129
172
|
*/
|
|
130
173
|
export declare function buildAffectedTestCommand(template: string, packages: readonly string[], projects?: readonly string[]): {
|
|
@@ -133,11 +176,12 @@ export declare function buildAffectedTestCommand(template: string, packages: rea
|
|
|
133
176
|
};
|
|
134
177
|
/**
|
|
135
178
|
* Paths the tree under test changed relative to origin's default branch:
|
|
136
|
-
* committed (`merge-base(origin/<default>, HEAD)..HEAD`)
|
|
137
|
-
*
|
|
179
|
+
* committed (`merge-base(origin/<default>, HEAD)..HEAD`), uncommitted tracked
|
|
180
|
+
* edits and untracked files — the tests run on the working tree, so all matter.
|
|
138
181
|
*
|
|
139
182
|
* @param root - Execution root.
|
|
140
|
-
* @returns The paths, or null when no
|
|
183
|
+
* @returns The paths (committed, uncommitted and untracked), or null when no
|
|
184
|
+
* origin default branch exists or git fails.
|
|
141
185
|
* @task T12635
|
|
142
186
|
*/
|
|
143
187
|
export declare function changedPathsSinceDefault(root: string): string[] | null;
|
|
@@ -157,6 +201,8 @@ export type AffectedTestRun = {
|
|
|
157
201
|
/** `E_EVIDENCE_TOOL_UNAVAILABLE` when unconfigured, else `E_EVIDENCE_INSUFFICIENT`. */
|
|
158
202
|
codeName: 'E_EVIDENCE_TOOL_UNAVAILABLE' | 'E_EVIDENCE_INSUFFICIENT';
|
|
159
203
|
reason: string;
|
|
204
|
+
/** The scope is not refused, only unresolved yet: the `test` slot was busy. */
|
|
205
|
+
pending?: true;
|
|
160
206
|
};
|
|
161
207
|
/**
|
|
162
208
|
* Plan the affected-scope test run for the tree at `root` — the one path both
|
|
@@ -166,8 +212,11 @@ export type AffectedTestRun = {
|
|
|
166
212
|
*
|
|
167
213
|
* @param storeRoot - CLEO store root (project context).
|
|
168
214
|
* @param root - Execution root whose diff defines the set.
|
|
215
|
+
* @param opts - `wait`: queue for the `test` slot (`cleo done`); `--plan` does not.
|
|
169
216
|
* @returns The command and its receipt fields, or the refusal reason.
|
|
170
217
|
* @task T12635
|
|
171
218
|
*/
|
|
172
|
-
export declare function planAffectedTestRun(storeRoot: string, root: string
|
|
219
|
+
export declare function planAffectedTestRun(storeRoot: string, root: string, opts?: {
|
|
220
|
+
wait?: boolean;
|
|
221
|
+
}): Promise<AffectedTestRun>;
|
|
173
222
|
//# sourceMappingURL=affected-packages.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"affected-packages.d.ts","sourceRoot":"","sources":["../../src/tasks/affected-packages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;
|
|
1
|
+
{"version":3,"file":"affected-packages.d.ts","sourceRoot":"","sources":["../../src/tasks/affected-packages.ts"],"names":[],"mappings":"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"}
|