@cleocode/core 2026.9.8 → 2026.9.10
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/audit/reconstruct.d.ts +13 -43
- package/dist/audit/reconstruct.d.ts.map +1 -1
- package/dist/audit/reconstruct.js +295 -290
- package/dist/audit/reconstruct.js.map +1 -1
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +8 -2
- package/dist/bootstrap.js.map +1 -1
- package/dist/compliance/protocol-rules.d.ts.map +1 -1
- package/dist/compliance/protocol-rules.js +3 -1
- package/dist/compliance/protocol-rules.js.map +1 -1
- package/dist/dispatch/mutate-projection.d.ts.map +1 -1
- package/dist/dispatch/mutate-projection.js +12 -0
- package/dist/dispatch/mutate-projection.js.map +1 -1
- package/dist/dispatch/mvi-projection.d.ts +29 -6
- package/dist/dispatch/mvi-projection.d.ts.map +1 -1
- package/dist/dispatch/mvi-projection.js +109 -139
- package/dist/dispatch/mvi-projection.js.map +1 -1
- package/dist/docs/docs-read-model.d.ts +3 -2
- package/dist/docs/docs-read-model.d.ts.map +1 -1
- package/dist/docs/docs-read-model.js +4 -3
- package/dist/docs/docs-read-model.js.map +1 -1
- package/dist/docs/export-document.js +5129 -2297
- package/dist/docs/export-document.js.map +3 -3
- package/dist/docs/projection.d.ts +67 -0
- package/dist/docs/projection.d.ts.map +1 -0
- package/dist/docs/projection.js +370 -0
- package/dist/docs/projection.js.map +1 -0
- package/dist/doctor/acceptance-drift.d.ts +6 -2
- package/dist/doctor/acceptance-drift.d.ts.map +1 -1
- package/dist/doctor/acceptance-drift.js +43 -5
- package/dist/doctor/acceptance-drift.js.map +1 -1
- package/dist/doctor/knowledge-summary.d.ts +41 -0
- package/dist/doctor/knowledge-summary.d.ts.map +1 -0
- package/dist/doctor/knowledge-summary.js +81 -0
- package/dist/doctor/knowledge-summary.js.map +1 -0
- package/dist/doctor/knowledge.d.ts +192 -0
- package/dist/doctor/knowledge.d.ts.map +1 -0
- package/dist/doctor/knowledge.js +1864 -0
- package/dist/doctor/knowledge.js.map +1 -0
- package/dist/git/work-tree.d.ts +169 -0
- package/dist/git/work-tree.d.ts.map +1 -0
- package/dist/git/work-tree.js +341 -0
- package/dist/git/work-tree.js.map +1 -0
- package/dist/hooks/handlers/task-hooks.d.ts +8 -5
- package/dist/hooks/handlers/task-hooks.d.ts.map +1 -1
- package/dist/hooks/handlers/task-hooks.js +15 -60
- package/dist/hooks/handlers/task-hooks.js.map +1 -1
- package/dist/identity/cleo-identity.d.ts +13 -0
- package/dist/identity/cleo-identity.d.ts.map +1 -1
- package/dist/identity/cleo-identity.js +20 -6
- package/dist/identity/cleo-identity.js.map +1 -1
- package/dist/injection.d.ts.map +1 -1
- package/dist/injection.js +29 -13
- package/dist/injection.js.map +1 -1
- package/dist/internal.d.ts +3 -0
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +4 -0
- package/dist/internal.js.map +1 -1
- package/dist/lifecycle/verification/satisfies-validator.d.ts.map +1 -1
- package/dist/lifecycle/verification/satisfies-validator.js +124 -120
- package/dist/lifecycle/verification/satisfies-validator.js.map +1 -1
- package/dist/llm/plugin-facade.js +4047 -1726
- package/dist/llm/plugin-facade.js.map +3 -3
- package/dist/memory/brain-backfill.d.ts +27 -12
- package/dist/memory/brain-backfill.d.ts.map +1 -1
- package/dist/memory/brain-backfill.js +325 -134
- package/dist/memory/brain-backfill.js.map +1 -1
- package/dist/memory/brain-doctor.d.ts +21 -0
- package/dist/memory/brain-doctor.d.ts.map +1 -1
- package/dist/memory/brain-doctor.js +111 -53
- package/dist/memory/brain-doctor.js.map +1 -1
- package/dist/memory/brain-links.d.ts.map +1 -1
- package/dist/memory/brain-links.js +31 -4
- package/dist/memory/brain-links.js.map +1 -1
- package/dist/memory/brain-reasoning.d.ts.map +1 -1
- package/dist/memory/brain-reasoning.js +28 -2
- package/dist/memory/brain-reasoning.js.map +1 -1
- package/dist/memory/brain-reconciler.d.ts +14 -19
- package/dist/memory/brain-reconciler.d.ts.map +1 -1
- package/dist/memory/brain-reconciler.js +70 -97
- package/dist/memory/brain-reconciler.js.map +1 -1
- package/dist/memory/brain-search.d.ts +2 -0
- package/dist/memory/brain-search.d.ts.map +1 -1
- package/dist/memory/brain-search.js +59 -29
- package/dist/memory/brain-search.js.map +1 -1
- package/dist/memory/brain-similarity.d.ts.map +1 -1
- package/dist/memory/brain-similarity.js +5 -4
- package/dist/memory/brain-similarity.js.map +1 -1
- package/dist/memory/brain-stub-prune.d.ts +31 -9
- package/dist/memory/brain-stub-prune.d.ts.map +1 -1
- package/dist/memory/brain-stub-prune.js +65 -18
- package/dist/memory/brain-stub-prune.js.map +1 -1
- package/dist/memory/brain-writer-handlers.d.ts +10 -1
- package/dist/memory/brain-writer-handlers.d.ts.map +1 -1
- package/dist/memory/brain-writer-handlers.js +23 -3
- package/dist/memory/brain-writer-handlers.js.map +1 -1
- package/dist/memory/brain-writer-thread.d.ts +11 -1
- package/dist/memory/brain-writer-thread.d.ts.map +1 -1
- package/dist/memory/brain-writer-thread.js +87 -20
- package/dist/memory/brain-writer-thread.js.map +1 -1
- package/dist/memory/brain-writer-worker.js +8 -1
- package/dist/memory/brain-writer-worker.js.map +1 -1
- package/dist/memory/decision-cross-link.d.ts +39 -0
- package/dist/memory/decision-cross-link.d.ts.map +1 -1
- package/dist/memory/decision-cross-link.js +316 -0
- package/dist/memory/decision-cross-link.js.map +1 -1
- package/dist/memory/decisions.d.ts +4 -1
- package/dist/memory/decisions.d.ts.map +1 -1
- package/dist/memory/decisions.js +7 -24
- package/dist/memory/decisions.js.map +1 -1
- package/dist/memory/dispatch-trace.d.ts +12 -5
- package/dist/memory/dispatch-trace.d.ts.map +1 -1
- package/dist/memory/dispatch-trace.js +17 -7
- package/dist/memory/dispatch-trace.js.map +1 -1
- package/dist/memory/eligibility.d.ts +51 -0
- package/dist/memory/eligibility.d.ts.map +1 -0
- package/dist/memory/eligibility.js +77 -0
- package/dist/memory/eligibility.js.map +1 -0
- 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 +10 -0
- package/dist/memory/engine-compat.js.map +1 -1
- package/dist/memory/extraction-gate.d.ts +21 -7
- package/dist/memory/extraction-gate.d.ts.map +1 -1
- package/dist/memory/extraction-gate.js +178 -216
- package/dist/memory/extraction-gate.js.map +1 -1
- package/dist/memory/graph-auto-populate.d.ts +38 -5
- package/dist/memory/graph-auto-populate.d.ts.map +1 -1
- package/dist/memory/graph-auto-populate.js +182 -60
- package/dist/memory/graph-auto-populate.js.map +1 -1
- package/dist/memory/graph-memory-bridge.d.ts +14 -1
- package/dist/memory/graph-memory-bridge.d.ts.map +1 -1
- package/dist/memory/graph-memory-bridge.js +66 -28
- package/dist/memory/graph-memory-bridge.js.map +1 -1
- package/dist/memory/index.d.ts +1 -19
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +1 -50
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/learnings.d.ts.map +1 -1
- package/dist/memory/learnings.js +2 -23
- package/dist/memory/learnings.js.map +1 -1
- package/dist/memory/manifest-filter.d.ts +21 -0
- package/dist/memory/manifest-filter.d.ts.map +1 -0
- package/dist/memory/manifest-filter.js +51 -0
- package/dist/memory/manifest-filter.js.map +1 -0
- package/dist/memory/manifest-ingestion.d.ts +28 -30
- package/dist/memory/manifest-ingestion.d.ts.map +1 -1
- package/dist/memory/manifest-ingestion.js +104 -235
- package/dist/memory/manifest-ingestion.js.map +1 -1
- package/dist/memory/observer-reflector.d.ts +2 -0
- package/dist/memory/observer-reflector.d.ts.map +1 -1
- package/dist/memory/observer-reflector.js +6 -49
- package/dist/memory/observer-reflector.js.map +1 -1
- package/dist/memory/patterns.d.ts +10 -0
- package/dist/memory/patterns.d.ts.map +1 -1
- package/dist/memory/patterns.js +25 -33
- package/dist/memory/patterns.js.map +1 -1
- package/dist/memory/pipeline-manifest-sqlite.d.ts +72 -9
- package/dist/memory/pipeline-manifest-sqlite.d.ts.map +1 -1
- package/dist/memory/pipeline-manifest-sqlite.js +508 -412
- package/dist/memory/pipeline-manifest-sqlite.js.map +1 -1
- package/dist/memory/retrieval/build-retrieval-bundle.d.ts.map +1 -1
- package/dist/memory/retrieval/build-retrieval-bundle.js +16 -15
- package/dist/memory/retrieval/build-retrieval-bundle.js.map +1 -1
- package/dist/memory/retrieval/fetch.d.ts +7 -0
- package/dist/memory/retrieval/fetch.d.ts.map +1 -1
- package/dist/memory/retrieval/fetch.js +14 -11
- package/dist/memory/retrieval/fetch.js.map +1 -1
- package/dist/memory/retrieval/observe.d.ts +7 -1
- package/dist/memory/retrieval/observe.d.ts.map +1 -1
- package/dist/memory/retrieval/observe.js +58 -4
- package/dist/memory/retrieval/observe.js.map +1 -1
- package/dist/memory/retrieval/search.d.ts +14 -1
- package/dist/memory/retrieval/search.d.ts.map +1 -1
- package/dist/memory/retrieval/search.js +133 -69
- package/dist/memory/retrieval/search.js.map +1 -1
- package/dist/memory/retrieval/telemetry.d.ts +31 -0
- package/dist/memory/retrieval/telemetry.d.ts.map +1 -0
- package/dist/memory/retrieval/telemetry.js +53 -0
- package/dist/memory/retrieval/telemetry.js.map +1 -0
- package/dist/nexus/analyze-orchestrator.d.ts +41 -9
- package/dist/nexus/analyze-orchestrator.d.ts.map +1 -1
- package/dist/nexus/analyze-orchestrator.js +257 -58
- package/dist/nexus/analyze-orchestrator.js.map +1 -1
- package/dist/nexus/api-contracts.d.ts +2 -6
- package/dist/nexus/api-contracts.d.ts.map +1 -1
- package/dist/nexus/api-contracts.js +11 -2
- package/dist/nexus/api-contracts.js.map +1 -1
- package/dist/nexus/context.d.ts.map +1 -1
- package/dist/nexus/context.js +14 -37
- package/dist/nexus/context.js.map +1 -1
- package/dist/nexus/diff.d.ts.map +1 -1
- package/dist/nexus/diff.js +2 -1
- package/dist/nexus/diff.js.map +1 -1
- package/dist/nexus/identity.d.ts +29 -3
- package/dist/nexus/identity.d.ts.map +1 -1
- package/dist/nexus/identity.js +63 -12
- package/dist/nexus/identity.js.map +1 -1
- package/dist/nexus/impact.d.ts +21 -19
- package/dist/nexus/impact.d.ts.map +1 -1
- package/dist/nexus/impact.js +96 -192
- package/dist/nexus/impact.js.map +1 -1
- package/dist/nexus/knowledge.d.ts +80 -0
- package/dist/nexus/knowledge.d.ts.map +1 -0
- package/dist/nexus/knowledge.js +786 -0
- package/dist/nexus/knowledge.js.map +1 -0
- package/dist/nexus/living-brain.d.ts +8 -5
- package/dist/nexus/living-brain.d.ts.map +1 -1
- package/dist/nexus/living-brain.js +252 -188
- package/dist/nexus/living-brain.js.map +1 -1
- package/dist/nexus/registry.d.ts +11 -2
- package/dist/nexus/registry.d.ts.map +1 -1
- package/dist/nexus/registry.js +144 -128
- package/dist/nexus/registry.js.map +1 -1
- package/dist/nexus/source-roots.d.ts +16 -0
- package/dist/nexus/source-roots.d.ts.map +1 -0
- package/dist/nexus/source-roots.js +174 -0
- package/dist/nexus/source-roots.js.map +1 -0
- package/dist/nexus/task-evidence.d.ts +22 -0
- package/dist/nexus/task-evidence.d.ts.map +1 -0
- package/dist/nexus/task-evidence.js +210 -0
- package/dist/nexus/task-evidence.js.map +1 -0
- package/dist/nexus/tasks-bridge.d.ts +14 -7
- package/dist/nexus/tasks-bridge.d.ts.map +1 -1
- package/dist/nexus/tasks-bridge.js +81 -40
- package/dist/nexus/tasks-bridge.js.map +1 -1
- package/dist/orchestrate/lifecycle-ops.d.ts.map +1 -1
- package/dist/orchestrate/lifecycle-ops.js +170 -120
- package/dist/orchestrate/lifecycle-ops.js.map +1 -1
- package/dist/orchestrate/query-ops.d.ts +6 -7
- package/dist/orchestrate/query-ops.d.ts.map +1 -1
- package/dist/orchestrate/query-ops.js +509 -532
- package/dist/orchestrate/query-ops.js.map +1 -1
- package/dist/orchestration/bootstrap.d.ts +15 -1
- package/dist/orchestration/bootstrap.d.ts.map +1 -1
- package/dist/orchestration/bootstrap.js +21 -10
- package/dist/orchestration/bootstrap.js.map +1 -1
- package/dist/orchestration/index.d.ts +35 -3
- package/dist/orchestration/index.d.ts.map +1 -1
- package/dist/orchestration/index.js +64 -35
- package/dist/orchestration/index.js.map +1 -1
- package/dist/orchestration/lead-rollup.d.ts +24 -1
- package/dist/orchestration/lead-rollup.d.ts.map +1 -1
- package/dist/orchestration/lead-rollup.js +31 -11
- package/dist/orchestration/lead-rollup.js.map +1 -1
- package/dist/orchestration/spawn-prompt.d.ts.map +1 -1
- package/dist/orchestration/spawn-prompt.js +25 -45
- package/dist/orchestration/spawn-prompt.js.map +1 -1
- package/dist/orchestration/unblock.d.ts +15 -1
- package/dist/orchestration/unblock.d.ts.map +1 -1
- package/dist/orchestration/unblock.js +23 -12
- package/dist/orchestration/unblock.js.map +1 -1
- package/dist/orchestration/validate-spawn.d.ts.map +1 -1
- package/dist/orchestration/validate-spawn.js +3 -3
- package/dist/orchestration/validate-spawn.js.map +1 -1
- package/dist/orchestration/waves.d.ts +29 -13
- package/dist/orchestration/waves.d.ts.map +1 -1
- package/dist/orchestration/waves.js +43 -55
- package/dist/orchestration/waves.js.map +1 -1
- package/dist/paths.d.ts +17 -163
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +145 -496
- package/dist/paths.js.map +1 -1
- package/dist/project-info.d.ts +2 -11
- package/dist/project-info.d.ts.map +1 -1
- package/dist/project-info.js +3 -31
- package/dist/project-info.js.map +1 -1
- package/dist/project-scope.d.ts +239 -0
- package/dist/project-scope.d.ts.map +1 -0
- package/dist/project-scope.js +473 -0
- package/dist/project-scope.js.map +1 -0
- package/dist/release/pr-evidence.d.ts +23 -4
- package/dist/release/pr-evidence.d.ts.map +1 -1
- package/dist/release/pr-evidence.js +65 -9
- package/dist/release/pr-evidence.js.map +1 -1
- package/dist/render/nexus/graph/index.d.ts.map +1 -1
- package/dist/render/nexus/graph/index.js +4 -2
- package/dist/render/nexus/graph/index.js.map +1 -1
- package/dist/render/orchestration/audit-reconstruct.d.ts +11 -0
- package/dist/render/orchestration/audit-reconstruct.d.ts.map +1 -1
- package/dist/render/orchestration/audit-reconstruct.js +21 -6
- package/dist/render/orchestration/audit-reconstruct.js.map +1 -1
- package/dist/render/tasks/show.js +2 -1
- package/dist/render/tasks/show.js.map +1 -1
- package/dist/resources/spawn-wrapper.d.ts +82 -14
- package/dist/resources/spawn-wrapper.d.ts.map +1 -1
- package/dist/resources/spawn-wrapper.js +585 -27
- package/dist/resources/spawn-wrapper.js.map +1 -1
- package/dist/selfimprove/fix-gen.js +4055 -1734
- package/dist/selfimprove/fix-gen.js.map +3 -3
- package/dist/sequence/index.d.ts.map +1 -1
- package/dist/sequence/index.js +76 -68
- package/dist/sequence/index.js.map +1 -1
- package/dist/session/canon-lint.d.ts +24 -3
- package/dist/session/canon-lint.d.ts.map +1 -1
- package/dist/session/canon-lint.js +72 -31
- package/dist/session/canon-lint.js.map +1 -1
- package/dist/session/engine-ops.d.ts +1 -4
- package/dist/session/engine-ops.d.ts.map +1 -1
- package/dist/session/engine-ops.js +42 -6
- package/dist/session/engine-ops.js.map +1 -1
- package/dist/sessions/briefing.d.ts +11 -1
- package/dist/sessions/briefing.d.ts.map +1 -1
- package/dist/sessions/briefing.js +76 -8
- package/dist/sessions/briefing.js.map +1 -1
- package/dist/sessions/handoff.d.ts +3 -1
- package/dist/sessions/handoff.d.ts.map +1 -1
- package/dist/sessions/handoff.js +2 -0
- package/dist/sessions/handoff.js.map +1 -1
- package/dist/shutdown-deadline.d.ts +24 -33
- package/dist/shutdown-deadline.d.ts.map +1 -1
- package/dist/shutdown-deadline.js +71 -14
- package/dist/shutdown-deadline.js.map +1 -1
- package/dist/shutdown.d.ts +21 -10
- package/dist/shutdown.d.ts.map +1 -1
- package/dist/shutdown.js +89 -42
- package/dist/shutdown.js.map +1 -1
- package/dist/skills/index.d.ts +1 -1
- 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/orchestrator/validator.d.ts +87 -20
- package/dist/skills/orchestrator/validator.d.ts.map +1 -1
- package/dist/skills/orchestrator/validator.js +330 -241
- package/dist/skills/orchestrator/validator.js.map +1 -1
- package/dist/store/agent-resolver.d.ts.map +1 -1
- package/dist/store/agent-resolver.js +16 -9
- package/dist/store/agent-resolver.js.map +1 -1
- package/dist/store/attachment-store.d.ts +4 -1
- package/dist/store/attachment-store.d.ts.map +1 -1
- package/dist/store/attachment-store.js +20 -3
- package/dist/store/attachment-store.js.map +1 -1
- package/dist/store/background-jobs.d.ts +426 -105
- package/dist/store/background-jobs.d.ts.map +1 -1
- package/dist/store/background-jobs.js +1208 -252
- package/dist/store/background-jobs.js.map +1 -1
- package/dist/store/background-ops.d.ts +145 -8
- package/dist/store/background-ops.d.ts.map +1 -1
- package/dist/store/background-ops.js +459 -15
- package/dist/store/background-ops.js.map +1 -1
- package/dist/store/backup-inspect.d.ts +48 -4
- package/dist/store/backup-inspect.d.ts.map +1 -1
- package/dist/store/backup-inspect.js +384 -4
- package/dist/store/backup-inspect.js.map +1 -1
- package/dist/store/converters.d.ts.map +1 -1
- package/dist/store/converters.js +19 -2
- package/dist/store/converters.js.map +1 -1
- package/dist/store/data-accessor.d.ts +9 -1
- package/dist/store/data-accessor.d.ts.map +1 -1
- package/dist/store/data-accessor.js +22 -5
- package/dist/store/data-accessor.js.map +1 -1
- package/dist/store/data-safety-central.d.ts.map +1 -1
- package/dist/store/data-safety-central.js +272 -232
- package/dist/store/data-safety-central.js.map +1 -1
- package/dist/store/db-helpers.d.ts +19 -3
- package/dist/store/db-helpers.d.ts.map +1 -1
- package/dist/store/db-helpers.js +42 -58
- package/dist/store/db-helpers.js.map +1 -1
- package/dist/store/dual-scope-db.d.ts +63 -4
- package/dist/store/dual-scope-db.d.ts.map +1 -1
- package/dist/store/dual-scope-db.js +166 -19
- package/dist/store/dual-scope-db.js.map +1 -1
- package/dist/store/exodus/archive.d.ts +21 -7
- package/dist/store/exodus/archive.d.ts.map +1 -1
- package/dist/store/exodus/archive.js +60 -18
- package/dist/store/exodus/archive.js.map +1 -1
- package/dist/store/exodus/migrate.d.ts.map +1 -1
- package/dist/store/exodus/migrate.js +27 -23
- package/dist/store/exodus/migrate.js.map +1 -1
- package/dist/store/exodus/on-open.d.ts +16 -27
- package/dist/store/exodus/on-open.d.ts.map +1 -1
- package/dist/store/exodus/on-open.js +121 -169
- package/dist/store/exodus/on-open.js.map +1 -1
- package/dist/store/exodus/recovery.d.ts +90 -0
- package/dist/store/exodus/recovery.d.ts.map +1 -0
- package/dist/store/exodus/recovery.js +434 -0
- package/dist/store/exodus/recovery.js.map +1 -0
- package/dist/store/exodus/types.d.ts +15 -0
- package/dist/store/exodus/types.d.ts.map +1 -1
- package/dist/store/memory-accessor.d.ts +52 -3
- package/dist/store/memory-accessor.d.ts.map +1 -1
- package/dist/store/memory-accessor.js +122 -7
- package/dist/store/memory-accessor.js.map +1 -1
- package/dist/store/nexus-sqlite.d.ts +24 -6
- package/dist/store/nexus-sqlite.d.ts.map +1 -1
- package/dist/store/nexus-sqlite.js +39 -20
- package/dist/store/nexus-sqlite.js.map +1 -1
- package/dist/store/ports/domain-binding.d.ts.map +1 -1
- package/dist/store/ports/domain-binding.js +27 -5
- package/dist/store/ports/domain-binding.js.map +1 -1
- package/dist/store/schema/background-jobs.d.ts +181 -2
- package/dist/store/schema/background-jobs.d.ts.map +1 -1
- package/dist/store/schema/background-jobs.js +27 -3
- package/dist/store/schema/background-jobs.js.map +1 -1
- package/dist/store/schema/cleo-global/skills.d.ts +2 -2
- package/dist/store/schema/cleo-project/lifecycle.d.ts +2 -2
- package/dist/store/schema/cleo-project/runtime.d.ts +1 -1
- package/dist/store/schema/cleo-project/tasks-core.d.ts +1 -1
- package/dist/store/schema/lifecycle.d.ts +2 -2
- package/dist/store/schema/skills-schema.d.ts +2 -2
- package/dist/store/schema/tasks.d.ts +1 -1
- package/dist/store/session-store.d.ts +3 -1
- package/dist/store/session-store.d.ts.map +1 -1
- package/dist/store/session-store.js +252 -207
- package/dist/store/session-store.js.map +1 -1
- package/dist/store/sqlite-data-accessor.d.ts +39 -4
- package/dist/store/sqlite-data-accessor.d.ts.map +1 -1
- package/dist/store/sqlite-data-accessor.js +689 -527
- package/dist/store/sqlite-data-accessor.js.map +1 -1
- package/dist/store/tasks-sqlite.d.ts +3 -1
- package/dist/store/tasks-sqlite.d.ts.map +1 -1
- package/dist/store/tasks-sqlite.js +309 -279
- package/dist/store/tasks-sqlite.js.map +1 -1
- package/dist/store/validation-schemas.d.ts +8 -8
- package/dist/store/writer-lease.d.ts +80 -8
- package/dist/store/writer-lease.d.ts.map +1 -1
- package/dist/store/writer-lease.js +503 -134
- package/dist/store/writer-lease.js.map +1 -1
- package/dist/system/audit.d.ts +2 -1
- package/dist/system/audit.d.ts.map +1 -1
- package/dist/system/audit.js +118 -71
- package/dist/system/audit.js.map +1 -1
- package/dist/system/backup.d.ts.map +1 -1
- package/dist/system/backup.js +5 -5
- package/dist/system/backup.js.map +1 -1
- package/dist/system/inject-generate.js +1 -1
- package/dist/task-work/index.d.ts +3 -0
- package/dist/task-work/index.d.ts.map +1 -1
- package/dist/task-work/index.js +34 -37
- package/dist/task-work/index.js.map +1 -1
- package/dist/tasks/ac-coverage-gate.d.ts.map +1 -1
- package/dist/tasks/ac-coverage-gate.js +4 -0
- package/dist/tasks/ac-coverage-gate.js.map +1 -1
- package/dist/tasks/ac-immutability.d.ts +7 -4
- package/dist/tasks/ac-immutability.d.ts.map +1 -1
- package/dist/tasks/ac-immutability.js +19 -17
- package/dist/tasks/ac-immutability.js.map +1 -1
- package/dist/tasks/ac-table.d.ts +5 -5
- package/dist/tasks/ac-table.d.ts.map +1 -1
- package/dist/tasks/ac-table.js +26 -12
- package/dist/tasks/ac-table.js.map +1 -1
- package/dist/tasks/acceptance-input.d.ts +52 -0
- package/dist/tasks/acceptance-input.d.ts.map +1 -0
- package/dist/tasks/acceptance-input.js +259 -0
- package/dist/tasks/acceptance-input.js.map +1 -0
- package/dist/tasks/add.d.ts +67 -29
- package/dist/tasks/add.d.ts.map +1 -1
- package/dist/tasks/add.js +255 -97
- package/dist/tasks/add.js.map +1 -1
- package/dist/tasks/complete.d.ts +16 -1
- package/dist/tasks/complete.d.ts.map +1 -1
- package/dist/tasks/complete.js +152 -55
- package/dist/tasks/complete.js.map +1 -1
- package/dist/tasks/decompose.d.ts +103 -0
- package/dist/tasks/decompose.d.ts.map +1 -0
- package/dist/tasks/decompose.js +224 -0
- package/dist/tasks/decompose.js.map +1 -0
- package/dist/tasks/delete.d.ts +5 -8
- package/dist/tasks/delete.d.ts.map +1 -1
- package/dist/tasks/delete.js +4 -3
- package/dist/tasks/delete.js.map +1 -1
- package/dist/tasks/dependency-check.d.ts +59 -0
- package/dist/tasks/dependency-check.d.ts.map +1 -1
- package/dist/tasks/dependency-check.js +73 -0
- package/dist/tasks/dependency-check.js.map +1 -1
- package/dist/tasks/deps-ready.d.ts +13 -1
- package/dist/tasks/deps-ready.d.ts.map +1 -1
- package/dist/tasks/deps-ready.js +16 -5
- package/dist/tasks/deps-ready.js.map +1 -1
- package/dist/tasks/engine-converters.d.ts +7 -0
- package/dist/tasks/engine-converters.d.ts.map +1 -1
- package/dist/tasks/engine-converters.js +8 -1
- package/dist/tasks/engine-converters.js.map +1 -1
- package/dist/tasks/evidence.d.ts +88 -27
- package/dist/tasks/evidence.d.ts.map +1 -1
- package/dist/tasks/evidence.js +344 -43
- package/dist/tasks/evidence.js.map +1 -1
- package/dist/tasks/find.d.ts +16 -12
- package/dist/tasks/find.d.ts.map +1 -1
- package/dist/tasks/find.js +107 -93
- package/dist/tasks/find.js.map +1 -1
- package/dist/tasks/gate-preview.d.ts +73 -0
- package/dist/tasks/gate-preview.d.ts.map +1 -0
- package/dist/tasks/gate-preview.js +119 -0
- package/dist/tasks/gate-preview.js.map +1 -0
- package/dist/tasks/gate-runner.d.ts +88 -14
- package/dist/tasks/gate-runner.d.ts.map +1 -1
- package/dist/tasks/gate-runner.js +719 -250
- package/dist/tasks/gate-runner.js.map +1 -1
- package/dist/tasks/hierarchy-policy.d.ts +8 -0
- package/dist/tasks/hierarchy-policy.d.ts.map +1 -1
- package/dist/tasks/hierarchy-policy.js +9 -2
- package/dist/tasks/hierarchy-policy.js.map +1 -1
- package/dist/tasks/hierarchy.d.ts +67 -1
- package/dist/tasks/hierarchy.d.ts.map +1 -1
- package/dist/tasks/hierarchy.js +81 -1
- package/dist/tasks/hierarchy.js.map +1 -1
- package/dist/tasks/index.d.ts +3 -0
- package/dist/tasks/index.d.ts.map +1 -1
- package/dist/tasks/index.js +3 -0
- package/dist/tasks/index.js.map +1 -1
- package/dist/tasks/infer-add-params.d.ts +1 -20
- package/dist/tasks/infer-add-params.d.ts.map +1 -1
- package/dist/tasks/infer-add-params.js +2 -203
- package/dist/tasks/infer-add-params.js.map +1 -1
- package/dist/tasks/list.d.ts +7 -2
- package/dist/tasks/list.d.ts.map +1 -1
- package/dist/tasks/list.js +24 -36
- package/dist/tasks/list.js.map +1 -1
- package/dist/tasks/ops.d.ts +6 -61
- package/dist/tasks/ops.d.ts.map +1 -1
- package/dist/tasks/ops.js +5 -53
- package/dist/tasks/ops.js.map +1 -1
- package/dist/tasks/plan.d.ts +15 -1
- package/dist/tasks/plan.d.ts.map +1 -1
- package/dist/tasks/plan.js +23 -25
- package/dist/tasks/plan.js.map +1 -1
- package/dist/tasks/population.d.ts +46 -0
- package/dist/tasks/population.d.ts.map +1 -0
- package/dist/tasks/population.js +88 -0
- package/dist/tasks/population.js.map +1 -0
- package/dist/tasks/reconcile-scope.d.ts +157 -0
- package/dist/tasks/reconcile-scope.d.ts.map +1 -0
- package/dist/tasks/reconcile-scope.js +242 -0
- package/dist/tasks/reconcile-scope.js.map +1 -0
- package/dist/tasks/req.d.ts +51 -12
- package/dist/tasks/req.d.ts.map +1 -1
- package/dist/tasks/req.js +125 -69
- package/dist/tasks/req.js.map +1 -1
- package/dist/tasks/session-scope.d.ts +6 -31
- package/dist/tasks/session-scope.d.ts.map +1 -1
- package/dist/tasks/session-scope.js +3 -17
- package/dist/tasks/session-scope.js.map +1 -1
- package/dist/tasks/severity-attestation.d.ts +39 -10
- package/dist/tasks/severity-attestation.d.ts.map +1 -1
- package/dist/tasks/severity-attestation.js +75 -36
- package/dist/tasks/severity-attestation.js.map +1 -1
- package/dist/tasks/task-next.d.ts +5 -0
- package/dist/tasks/task-next.d.ts.map +1 -1
- package/dist/tasks/task-next.js +10 -9
- package/dist/tasks/task-next.js.map +1 -1
- package/dist/tasks/task-reparent.d.ts.map +1 -1
- package/dist/tasks/task-reparent.js +3 -13
- package/dist/tasks/task-reparent.js.map +1 -1
- package/dist/tasks/update.d.ts +20 -43
- package/dist/tasks/update.d.ts.map +1 -1
- package/dist/tasks/update.js +64 -49
- package/dist/tasks/update.js.map +1 -1
- package/dist/validation/engine-ops.d.ts +17 -1
- package/dist/validation/engine-ops.d.ts.map +1 -1
- package/dist/validation/engine-ops.js +149 -11
- package/dist/validation/engine-ops.js.map +1 -1
- package/dist/workgraph/reparent-preflight.d.ts +1 -1
- package/dist/workgraph/reparent-preflight.d.ts.map +1 -1
- package/dist/workgraph/reparent-preflight.js +6 -1
- package/dist/workgraph/reparent-preflight.js.map +1 -1
- package/dist/workgraph/scaffold-apply.d.ts.map +1 -1
- package/dist/workgraph/scaffold-apply.js +81 -76
- package/dist/workgraph/scaffold-apply.js.map +1 -1
- package/dist/workgraph/structure-validation.d.ts +1 -1
- package/dist/workgraph/structure-validation.d.ts.map +1 -1
- package/dist/workgraph/structure-validation.js +6 -1
- package/dist/workgraph/structure-validation.js.map +1 -1
- package/migrations/drizzle-tasks/20260919180000_t12263-job-ownership-fences/migration.sql +34 -0
- package/migrations/drizzle-tasks/20260919184500_t12265-durable-pending-proposals/migration.sql +4 -0
- package/package.json +18 -13
- package/schemas/config.schema.json +2 -2
- package/schemas/project-context.schema.json +12 -0
- package/templates/CLEO-INJECTION.md +114 -101
|
@@ -17,7 +17,7 @@ export interface Wave {
|
|
|
17
17
|
* Enriched task reference within a wave.
|
|
18
18
|
*
|
|
19
19
|
* Carries all fields needed by the wave renderer so callers do not need a
|
|
20
|
-
* secondary lookup. `blockedBy` lists
|
|
20
|
+
* secondary lookup. `blockedBy` lists dependencies that do not satisfy spawn readiness;
|
|
21
21
|
* `ready` is `true` when the task is immediately actionable.
|
|
22
22
|
*/
|
|
23
23
|
export interface EnrichedWaveTask extends TaskRef {
|
|
@@ -30,9 +30,9 @@ export interface EnrichedWaveTask extends TaskRef {
|
|
|
30
30
|
*/
|
|
31
31
|
depends: string[];
|
|
32
32
|
/**
|
|
33
|
-
*
|
|
33
|
+
* Dependency IDs that are currently blocking this task from spawning.
|
|
34
34
|
*
|
|
35
|
-
*
|
|
35
|
+
* Only `'done'` and `'archived'` satisfy dependencies; missing records block.
|
|
36
36
|
*/
|
|
37
37
|
blockedBy: string[];
|
|
38
38
|
/**
|
|
@@ -75,19 +75,28 @@ export interface EnrichedWave {
|
|
|
75
75
|
/**
|
|
76
76
|
* Compute execution waves using topological sort.
|
|
77
77
|
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
78
|
+
* @remarks
|
|
79
|
+
* Only done or archived dependencies satisfy readiness. Earlier planned waves
|
|
80
|
+
* establish ordering, not evidence that their tasks have already completed.
|
|
81
|
+
* Missing or unfinished dependencies outside the selected population remain
|
|
82
|
+
* unresolved and are retained in the final pending wave. Terminal tasks are
|
|
83
|
+
* excluded from scheduling; cancelled dependencies still block their dependants.
|
|
82
84
|
*
|
|
83
|
-
* @param tasks -
|
|
84
|
-
* @
|
|
85
|
+
* @param tasks - Selected tasks to partition into dependency waves.
|
|
86
|
+
* @param dependencyLookup - Loaded dependency population, including external tasks.
|
|
87
|
+
* @returns Ordered planned waves, with unresolved work retained as pending.
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* ```ts
|
|
91
|
+
* const waves = computeWaves(tasks, projectTaskMap);
|
|
92
|
+
* ```
|
|
85
93
|
*/
|
|
86
|
-
export declare function computeWaves(tasks: Task[]): Wave[];
|
|
94
|
+
export declare function computeWaves(tasks: Task[], dependencyLookup?: ReadonlyMap<string, Task>): Wave[];
|
|
87
95
|
/**
|
|
88
|
-
* Get enriched wave data for an epic.
|
|
96
|
+
* Get enriched wave data for an epic or a selected set of saga members.
|
|
89
97
|
*
|
|
90
|
-
*
|
|
98
|
+
* @remarks
|
|
99
|
+
* Resolves the selected parents' direct children, computes one topological plan, enriches
|
|
91
100
|
* each wave's task list with dependency metadata, sorts tasks within each wave
|
|
92
101
|
* by priority descending then open-dep count ascending, and attaches a
|
|
93
102
|
* `completedAt` timestamp to completed waves.
|
|
@@ -95,8 +104,15 @@ export declare function computeWaves(tasks: Task[]): Wave[];
|
|
|
95
104
|
* @param epicId - The epic task ID to compute waves for.
|
|
96
105
|
* @param cwd - Optional project root (falls back to `getTaskAccessor` default).
|
|
97
106
|
* @param accessor - Optional pre-constructed data accessor (useful in tests).
|
|
107
|
+
* @param parentIds - Containment parents to select; defaults to the requested epic.
|
|
108
|
+
* @returns Selected task counts and waves with current dependency readiness.
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ```ts
|
|
112
|
+
* const plan = await getEnrichedWaves(sagaId, root, accessor, memberEpicIds);
|
|
113
|
+
* ```
|
|
98
114
|
*/
|
|
99
|
-
export declare function getEnrichedWaves(epicId: string, cwd?: string, accessor?: DataAccessor): Promise<{
|
|
115
|
+
export declare function getEnrichedWaves(epicId: string, cwd?: string, accessor?: DataAccessor, parentIds?: readonly string[]): Promise<{
|
|
100
116
|
epicId: string;
|
|
101
117
|
waves: EnrichedWave[];
|
|
102
118
|
totalWaves: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"waves.d.ts","sourceRoot":"","sources":["../../src/orchestration/waves.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"waves.d.ts","sourceRoot":"","sources":["../../src/orchestration/waves.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAO9D,kEAAkE;AAClE,MAAM,WAAW,IAAI;IACnB,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,8CAA8C;IAC9C,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,CAAC;CACjD;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAiB,SAAQ,OAAO;IAC/C,2BAA2B;IAC3B,QAAQ,EAAE,YAAY,CAAC;IACvB;;;;OAIG;IACH,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB;;;;OAIG;IACH,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB;;;;OAIG;IACH,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B;;;;;;OAMG;IACH,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,8CAA8C;IAC9C,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,CAAC;IAChD;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA8DD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,IAAI,EAAE,EACb,gBAAgB,GAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAiD,GAC1F,IAAI,EAAE,CA2CR;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,GAAG,CAAC,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,YAAY,EACvB,SAAS,GAAE,SAAS,MAAM,EAAa,GACtC,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,YAAY,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAuC5F"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* @task T4784
|
|
4
4
|
*/
|
|
5
5
|
import { getTaskAccessor } from '../store/data-accessor.js';
|
|
6
|
+
import { getReadinessDependencyBlockers, loadReadinessDependencyLookup, } from '../tasks/dependency-check.js';
|
|
6
7
|
// ---------------------------------------------------------------------------
|
|
7
8
|
// Internal helpers
|
|
8
9
|
// ---------------------------------------------------------------------------
|
|
@@ -28,12 +29,7 @@ function enrichTask(id, taskMap) {
|
|
|
28
29
|
const status = task?.status ?? 'unknown';
|
|
29
30
|
const priority = (task?.priority ?? 'medium');
|
|
30
31
|
const depends = task?.depends ?? [];
|
|
31
|
-
const blockedBy = depends
|
|
32
|
-
const dep = taskMap.get(depId);
|
|
33
|
-
if (!dep)
|
|
34
|
-
return false;
|
|
35
|
-
return dep.status !== 'done' && dep.status !== 'cancelled';
|
|
36
|
-
});
|
|
32
|
+
const blockedBy = getReadinessDependencyBlockers(depends, taskMap);
|
|
37
33
|
const ready = blockedBy.length === 0 && (status === 'pending' || status === 'active');
|
|
38
34
|
return { id, title, status, priority, depends, blockedBy, ready };
|
|
39
35
|
}
|
|
@@ -61,68 +57,47 @@ function sortWaveTasks(tasks) {
|
|
|
61
57
|
return a.id < b.id ? -1 : a.id > b.id ? 1 : 0;
|
|
62
58
|
});
|
|
63
59
|
}
|
|
64
|
-
/** Build a dependency graph for tasks. */
|
|
65
|
-
function buildDependencyGraph(tasks) {
|
|
66
|
-
const graph = new Map();
|
|
67
|
-
for (const task of tasks) {
|
|
68
|
-
if (!graph.has(task.id)) {
|
|
69
|
-
graph.set(task.id, new Set());
|
|
70
|
-
}
|
|
71
|
-
if (task.depends) {
|
|
72
|
-
for (const dep of task.depends) {
|
|
73
|
-
graph.get(task.id).add(dep);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
return graph;
|
|
78
|
-
}
|
|
79
60
|
/**
|
|
80
61
|
* Compute execution waves using topological sort.
|
|
81
62
|
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
63
|
+
* @remarks
|
|
64
|
+
* Only done or archived dependencies satisfy readiness. Earlier planned waves
|
|
65
|
+
* establish ordering, not evidence that their tasks have already completed.
|
|
66
|
+
* Missing or unfinished dependencies outside the selected population remain
|
|
67
|
+
* unresolved and are retained in the final pending wave. Terminal tasks are
|
|
68
|
+
* excluded from scheduling; cancelled dependencies still block their dependants.
|
|
86
69
|
*
|
|
87
|
-
* @param tasks -
|
|
88
|
-
* @
|
|
70
|
+
* @param tasks - Selected tasks to partition into dependency waves.
|
|
71
|
+
* @param dependencyLookup - Loaded dependency population, including external tasks.
|
|
72
|
+
* @returns Ordered planned waves, with unresolved work retained as pending.
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```ts
|
|
76
|
+
* const waves = computeWaves(tasks, projectTaskMap);
|
|
77
|
+
* ```
|
|
89
78
|
*/
|
|
90
|
-
export function computeWaves(tasks) {
|
|
91
|
-
const graph = buildDependencyGraph(tasks);
|
|
79
|
+
export function computeWaves(tasks, dependencyLookup = new Map(tasks.map((task) => [task.id, task]))) {
|
|
92
80
|
const waves = [];
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
if (task.status === 'done' || task.status === 'cancelled') {
|
|
96
|
-
completed.add(task.id);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
let remaining = tasks.filter((t) => t.status !== 'done' && t.status !== 'cancelled');
|
|
81
|
+
const planned = new Set();
|
|
82
|
+
let remaining = tasks.filter((task) => !['done', 'cancelled', 'archived'].includes(task.status));
|
|
100
83
|
let waveNumber = 1;
|
|
101
84
|
const maxWaves = 50;
|
|
102
85
|
while (remaining.length > 0 && waveNumber <= maxWaves) {
|
|
103
86
|
const waveTasks = remaining.filter((t) => {
|
|
104
|
-
|
|
105
|
-
return Array.from(deps).every((d) => completed.has(d));
|
|
87
|
+
return getReadinessDependencyBlockers(t.depends, dependencyLookup).every((id) => planned.has(id));
|
|
106
88
|
});
|
|
107
89
|
if (waveTasks.length === 0)
|
|
108
90
|
break;
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
const allDone = waveTasks.every((t) => t.status === 'done' || t.status === 'cancelled');
|
|
113
|
-
const anyActive = waveTasks.some((t) => t.status === 'active');
|
|
114
|
-
const waveStatus = allDone
|
|
115
|
-
? 'completed'
|
|
116
|
-
: anyActive
|
|
117
|
-
? 'in_progress'
|
|
118
|
-
: 'pending';
|
|
91
|
+
const waveStatus = waveTasks.some((task) => task.status === 'active')
|
|
92
|
+
? 'in_progress'
|
|
93
|
+
: 'pending';
|
|
119
94
|
waves.push({
|
|
120
95
|
waveNumber,
|
|
121
96
|
tasks: waveTasks.map((t) => t.id),
|
|
122
97
|
status: waveStatus,
|
|
123
98
|
});
|
|
124
99
|
for (const t of waveTasks) {
|
|
125
|
-
|
|
100
|
+
planned.add(t.id);
|
|
126
101
|
}
|
|
127
102
|
remaining = remaining.filter((t) => !waveTasks.some((wt) => wt.id === t.id));
|
|
128
103
|
waveNumber++;
|
|
@@ -137,9 +112,10 @@ export function computeWaves(tasks) {
|
|
|
137
112
|
return waves;
|
|
138
113
|
}
|
|
139
114
|
/**
|
|
140
|
-
* Get enriched wave data for an epic.
|
|
115
|
+
* Get enriched wave data for an epic or a selected set of saga members.
|
|
141
116
|
*
|
|
142
|
-
*
|
|
117
|
+
* @remarks
|
|
118
|
+
* Resolves the selected parents' direct children, computes one topological plan, enriches
|
|
143
119
|
* each wave's task list with dependency metadata, sorts tasks within each wave
|
|
144
120
|
* by priority descending then open-dep count ascending, and attaches a
|
|
145
121
|
* `completedAt` timestamp to completed waves.
|
|
@@ -147,12 +123,24 @@ export function computeWaves(tasks) {
|
|
|
147
123
|
* @param epicId - The epic task ID to compute waves for.
|
|
148
124
|
* @param cwd - Optional project root (falls back to `getTaskAccessor` default).
|
|
149
125
|
* @param accessor - Optional pre-constructed data accessor (useful in tests).
|
|
126
|
+
* @param parentIds - Containment parents to select; defaults to the requested epic.
|
|
127
|
+
* @returns Selected task counts and waves with current dependency readiness.
|
|
128
|
+
*
|
|
129
|
+
* @example
|
|
130
|
+
* ```ts
|
|
131
|
+
* const plan = await getEnrichedWaves(sagaId, root, accessor, memberEpicIds);
|
|
132
|
+
* ```
|
|
150
133
|
*/
|
|
151
|
-
export async function getEnrichedWaves(epicId, cwd, accessor) {
|
|
134
|
+
export async function getEnrichedWaves(epicId, cwd, accessor, parentIds = [epicId]) {
|
|
152
135
|
const acc = accessor ?? (await getTaskAccessor(cwd));
|
|
153
|
-
const
|
|
154
|
-
const
|
|
155
|
-
|
|
136
|
+
const selected = new Map();
|
|
137
|
+
for (const parentId of new Set(parentIds)) {
|
|
138
|
+
for (const task of await acc.getChildren(parentId))
|
|
139
|
+
selected.set(task.id, task);
|
|
140
|
+
}
|
|
141
|
+
const children = [...selected.values()];
|
|
142
|
+
const taskMap = await loadReadinessDependencyLookup(children, acc);
|
|
143
|
+
const waves = computeWaves(children, taskMap);
|
|
156
144
|
const enrichedWaves = waves.map((w) => {
|
|
157
145
|
const enrichedTasks = sortWaveTasks(w.tasks.map((id) => enrichTask(id, taskMap)));
|
|
158
146
|
const wave = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"waves.js","sourceRoot":"","sources":["../../src/orchestration/waves.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"waves.js","sourceRoot":"","sources":["../../src/orchestration/waves.ts"],"names":[],"mappings":"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"}
|
package/dist/paths.d.ts
CHANGED
|
@@ -14,71 +14,8 @@
|
|
|
14
14
|
* @epic T4454
|
|
15
15
|
* @task T4458
|
|
16
16
|
*/
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
* Async context payload set by the spawn adapter when launching a subagent
|
|
20
|
-
* inside a git worktree (ADR-041 §D3).
|
|
21
|
-
*
|
|
22
|
-
* @remarks
|
|
23
|
-
* When `worktreeScope.run(scope, fn)` is active, `getProjectRoot()` returns
|
|
24
|
-
* `scope.worktreeRoot` instead of walking ancestors. All DB path functions
|
|
25
|
-
* that delegate to `getProjectRoot()` therefore direct their I/O to the
|
|
26
|
-
* worktree's `.cleo/` directory, closing the T335 worktree-leak root cause.
|
|
27
|
-
*
|
|
28
|
-
* For processes that were spawned with `CLEO_WORKTREE_ROOT` in their
|
|
29
|
-
* environment (but where AsyncLocalStorage is not in scope), callers should
|
|
30
|
-
* populate the store via:
|
|
31
|
-
* ```ts
|
|
32
|
-
* worktreeScope.run(
|
|
33
|
-
* { worktreeRoot: process.env.CLEO_WORKTREE_ROOT, projectHash: process.env.CLEO_PROJECT_HASH },
|
|
34
|
-
* () => { ... }
|
|
35
|
-
* );
|
|
36
|
-
* ```
|
|
37
|
-
*
|
|
38
|
-
* @task T380
|
|
39
|
-
* @public
|
|
40
|
-
*/
|
|
41
|
-
export interface WorktreeScope {
|
|
42
|
-
/**
|
|
43
|
-
* Absolute path to the worktree directory (value of `CLEO_WORKTREE_ROOT`).
|
|
44
|
-
*/
|
|
45
|
-
worktreeRoot: string;
|
|
46
|
-
/**
|
|
47
|
-
* Project hash used to scope the worktree under the XDG worktree root
|
|
48
|
-
* (value of `CLEO_PROJECT_HASH`).
|
|
49
|
-
*/
|
|
50
|
-
projectHash: string;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* AsyncLocalStorage instance that carries the active {@link WorktreeScope}
|
|
54
|
-
* for the current async execution context.
|
|
55
|
-
*
|
|
56
|
-
* @remarks
|
|
57
|
-
* Set by the spawn adapter (or any caller that wants to redirect CLEO path
|
|
58
|
-
* resolution to a worktree directory) before invoking subagent logic.
|
|
59
|
-
* `getProjectRoot()` checks this store BEFORE the `CLEO_ROOT` env-var and
|
|
60
|
-
* ancestor-walk, so scoped callers transparently receive the worktree root.
|
|
61
|
-
*
|
|
62
|
-
* Callers outside a worktree context receive `undefined` from
|
|
63
|
-
* `worktreeScope.getStore()` and fall through to the existing resolution
|
|
64
|
-
* order unchanged.
|
|
65
|
-
*
|
|
66
|
-
* @example
|
|
67
|
-
* ```ts
|
|
68
|
-
* import { worktreeScope } from '@cleocode/core/paths';
|
|
69
|
-
*
|
|
70
|
-
* worktreeScope.run(
|
|
71
|
-
* { worktreeRoot: '/path/to/worktree', projectHash: 'abc123' },
|
|
72
|
-
* async () => {
|
|
73
|
-
* const root = getProjectRoot(); // returns '/path/to/worktree'
|
|
74
|
-
* }
|
|
75
|
-
* );
|
|
76
|
-
* ```
|
|
77
|
-
*
|
|
78
|
-
* @task T380
|
|
79
|
-
* @public
|
|
80
|
-
*/
|
|
81
|
-
export declare const worktreeScope: AsyncLocalStorage<WorktreeScope>;
|
|
17
|
+
export type { WorktreeScope } from './project-scope.js';
|
|
18
|
+
export { getProjectRoot, validateProjectRoot, worktreeScope } from './project-scope.js';
|
|
82
19
|
/**
|
|
83
20
|
* Run `fn` inside a `worktreeScope.run()` AsyncLocalStorage frame derived
|
|
84
21
|
* from the `CLEO_WORKTREE_ROOT` and `CLEO_PROJECT_HASH` environment variables.
|
|
@@ -284,6 +221,8 @@ export declare function getCleoDir(cwd?: string): string;
|
|
|
284
221
|
* getCleoDirAbsolute('/tmp/new-project', { bootstrap: true }); // "/tmp/new-project/.cleo"
|
|
285
222
|
* ```
|
|
286
223
|
*
|
|
224
|
+
* @remarks Active worktree scope takes precedence over ambient CLEO_DIR, matching
|
|
225
|
+
* resolveCleoDir. Outside a scope, absolute CLEO_DIR retains its override behavior.
|
|
287
226
|
* @deprecated Migrate to {@link resolveProjectByCwd} + {@link resolveCanonicalCleoDir}
|
|
288
227
|
* @task T11009
|
|
289
228
|
*/
|
|
@@ -384,55 +323,6 @@ export declare function resolveCleoDir(cwd?: string): string;
|
|
|
384
323
|
* @task T11280
|
|
385
324
|
*/
|
|
386
325
|
export declare function tryResolveCleoDir(cwd?: string): string | null;
|
|
387
|
-
/**
|
|
388
|
-
* Validate that a candidate project root directory is a legitimate CLEO
|
|
389
|
-
* project root and not a stray parent `.cleo/` directory that happened to
|
|
390
|
-
* be found by the walk-up algorithm.
|
|
391
|
-
*
|
|
392
|
-
* ## Primary path (T1864 — project-info.json contract)
|
|
393
|
-
*
|
|
394
|
-
* A candidate is **accepted** when `.cleo/project-info.json` exists and
|
|
395
|
-
* parses as JSON with a non-empty `projectId` string field. This is the
|
|
396
|
-
* canonical form written by `cleo init` and is the only form that guarantees
|
|
397
|
-
* the directory is a proper CLEO project rather than a stray `.cleo/` left by
|
|
398
|
-
* an old installation or a git worktree that auto-created its own `.cleo/`.
|
|
399
|
-
*
|
|
400
|
-
* ## Legacy fallback (backwards-compatibility)
|
|
401
|
-
*
|
|
402
|
-
* Projects initialized before `project-info.json` was introduced are still
|
|
403
|
-
* accepted when **both** of the following are true:
|
|
404
|
-
* 1. `.cleo/` exists in `candidate`
|
|
405
|
-
* 2. `.git/` exists as a sibling of `.cleo/` in `candidate`
|
|
406
|
-
*
|
|
407
|
-
* A one-time stderr warning is emitted (guarded by `_legacyFallbackWarned`)
|
|
408
|
-
* so operators know to re-run `cleo init` to upgrade the project metadata.
|
|
409
|
-
*
|
|
410
|
-
* **Breaking change vs. prior implementation**: bare `package.json` alone is
|
|
411
|
-
* no longer sufficient. The old check `existsSync(gitDir) || existsSync(pkgJson)`
|
|
412
|
-
* accepted any Node.js package directory as a valid project root, which caused
|
|
413
|
-
* the monorepo-package bug where sub-packages inside `packages/` created their
|
|
414
|
-
* own empty `.cleo/` databases.
|
|
415
|
-
*
|
|
416
|
-
* @param candidate - Absolute path to the directory being considered as the
|
|
417
|
-
* project root (parent of the `.cleo/` directory).
|
|
418
|
-
* @returns `true` when the candidate is a recognised CLEO project root.
|
|
419
|
-
*
|
|
420
|
-
* @example
|
|
421
|
-
* ```typescript
|
|
422
|
-
* // Project root with project-info.json — valid (primary path)
|
|
423
|
-
* validateProjectRoot('/home/user/myproject'); // true
|
|
424
|
-
*
|
|
425
|
-
* // Legacy project root with .git/ but no project-info.json — valid + warning
|
|
426
|
-
* validateProjectRoot('/home/user/legacy-project'); // true (+ stderr warning)
|
|
427
|
-
*
|
|
428
|
-
* // Stray .cleo in home dir with no markers — invalid
|
|
429
|
-
* validateProjectRoot('/home/user'); // false
|
|
430
|
-
* ```
|
|
431
|
-
*
|
|
432
|
-
* @task T1463
|
|
433
|
-
* @task T1864
|
|
434
|
-
*/
|
|
435
|
-
export declare function validateProjectRoot(candidate: string): boolean;
|
|
436
326
|
/**
|
|
437
327
|
* Assert that the given directory is an initialized CLEO project root,
|
|
438
328
|
* throwing a `CleoError` if it is not.
|
|
@@ -456,54 +346,6 @@ export declare function validateProjectRoot(candidate: string): boolean;
|
|
|
456
346
|
* @task T1864
|
|
457
347
|
*/
|
|
458
348
|
export declare function assertProjectInitialized(projectRoot: string): void;
|
|
459
|
-
/**
|
|
460
|
-
* Get the project root by walking ancestor directories for `.cleo/` or `.git/`.
|
|
461
|
-
*
|
|
462
|
-
* Stops at the **first** ancestor directory that contains either sentinel
|
|
463
|
-
* directory and never drifts past it — even when multiple nested projects
|
|
464
|
-
* exist above the starting directory.
|
|
465
|
-
*
|
|
466
|
-
* Resolution order:
|
|
467
|
-
* 1. `CLEO_ROOT` env var — bypasses walk entirely (CI / test override)
|
|
468
|
-
* 2. `CLEO_DIR` env var (absolute path only) — derives project root from dirname
|
|
469
|
-
* 3. Walk ancestors from `cwd` (or `process.cwd()`) toward filesystem root:
|
|
470
|
-
* - `.cleo/` found with a sibling `.git/` or `package.json` → accept as root
|
|
471
|
-
* - `.cleo/` found but **no** sibling marker → skip (stray/parent `.cleo/`)
|
|
472
|
-
* - `.git/` found (without `.cleo/` sibling) → throw `E_NOT_INITIALIZED`
|
|
473
|
-
* 4. Filesystem root reached without a valid root → throw `E_INVALID_PROJECT_ROOT`
|
|
474
|
-
* (if at least one `.cleo/` was skipped) or `E_NO_PROJECT` (none found)
|
|
475
|
-
*
|
|
476
|
-
* @param cwd - Optional starting directory; defaults to `process.cwd()`
|
|
477
|
-
* @returns Absolute path to the project root directory (parent of `.cleo/`)
|
|
478
|
-
* @throws {CleoError} `ExitCode.CONFIG_ERROR` (`E_NOT_INITIALIZED`) when a
|
|
479
|
-
* `.git/` is found but no `.cleo/` is present at that level.
|
|
480
|
-
* @throws {CleoError} `ExitCode.CONFIG_ERROR` (`E_INVALID_PROJECT_ROOT`) when
|
|
481
|
-
* one or more `.cleo/` directories are found but none have the required sibling
|
|
482
|
-
* markers (`.git/` or `package.json`). This prevents accidental operations on
|
|
483
|
-
* the wrong project when a stray parent `.cleo/` exists higher in the filesystem.
|
|
484
|
-
* @throws {CleoError} `ExitCode.NOT_FOUND` (`E_NO_PROJECT`) when neither
|
|
485
|
-
* sentinel is found in any ancestor.
|
|
486
|
-
*
|
|
487
|
-
* @remarks
|
|
488
|
-
* `CLEO_ROOT` is an absolute-path escape hatch for environments where the
|
|
489
|
-
* working directory is unrelated to the project (CI tmpdirs, monorepo scripts,
|
|
490
|
-
* test harnesses). When set it is returned as-is without scanning ancestors.
|
|
491
|
-
*
|
|
492
|
-
* `CLEO_DIR` set to an absolute path (e.g. `/project/.cleo`) also bypasses
|
|
493
|
-
* the walk: the project root is derived as its `dirname`. This preserves
|
|
494
|
-
* backward compatibility for test harnesses that use `CLEO_DIR` to pin the
|
|
495
|
-
* project root.
|
|
496
|
-
*
|
|
497
|
-
* NEVER auto-creates `.cleo/`. Project initialisation is an explicit opt-in
|
|
498
|
-
* via `cleo init`.
|
|
499
|
-
*
|
|
500
|
-
* @example
|
|
501
|
-
* ```typescript
|
|
502
|
-
* // Running from packages/core inside the monorepo:
|
|
503
|
-
* const root = getProjectRoot(); // "/mnt/projects/cleocode"
|
|
504
|
-
* ```
|
|
505
|
-
*/
|
|
506
|
-
export declare function getProjectRoot(cwd?: string): string;
|
|
507
349
|
/**
|
|
508
350
|
* Resolve an optional caller-provided root, falling back to canonical project root.
|
|
509
351
|
*
|
|
@@ -1157,6 +999,18 @@ export interface ProjectRegistryEntry {
|
|
|
1157
999
|
}
|
|
1158
1000
|
/** Look up a project by canonical or legacy projectId (AC1, AC4). */
|
|
1159
1001
|
export declare function resolveProjectById(projectId: string): Promise<ProjectRegistryEntry | null>;
|
|
1160
|
-
/**
|
|
1002
|
+
/**
|
|
1003
|
+
* Register an encountered project's immutable identity in its captured global registry.
|
|
1004
|
+
* @param projectRoot - Explicit project ownership captured before asynchronous work.
|
|
1005
|
+
* @param infoProjectId - Existing immutable project identity, never inferred from similarity.
|
|
1006
|
+
* @returns Completion of the fully tracked operation, including any failure.
|
|
1007
|
+
* @remarks Lazy work obeys the existing transaction/queue boundary and shares the
|
|
1008
|
+
* original execution deadline. Registry writes never initialize the project graph.
|
|
1009
|
+
* Cancellation is checked before the actual synchronous registry transaction commits.
|
|
1010
|
+
* @example
|
|
1011
|
+
* ```ts
|
|
1012
|
+
* await registerProjectOnEncounter(projectRoot, projectId);
|
|
1013
|
+
* ```
|
|
1014
|
+
*/
|
|
1161
1015
|
export declare function registerProjectOnEncounter(projectRoot: string, infoProjectId: string): Promise<void>;
|
|
1162
1016
|
//# sourceMappingURL=paths.d.ts.map
|
package/dist/paths.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"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"}
|