@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
package/dist/tasks/req.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* @epic T760
|
|
9
9
|
* @task T782
|
|
10
10
|
*/
|
|
11
|
+
import { isDeepStrictEqual } from 'node:util';
|
|
11
12
|
import { acceptanceGateSchema, ExitCode } from '@cleocode/contracts';
|
|
12
13
|
import { CleoError } from '../errors.js';
|
|
13
14
|
import { getTaskAccessor } from '../store/data-accessor.js';
|
|
@@ -27,16 +28,14 @@ async function loadTask(accessor, taskId) {
|
|
|
27
28
|
}
|
|
28
29
|
return task;
|
|
29
30
|
}
|
|
30
|
-
async function persistAcceptanceProjection(
|
|
31
|
-
await
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
updatedAt,
|
|
35
|
-
});
|
|
36
|
-
const existing = await tx.getAcRows(taskId);
|
|
37
|
-
const plan = planAcUpdate(taskId, existing, acceptance);
|
|
38
|
-
await applyAcPlan(tx, taskId, plan);
|
|
31
|
+
async function persistAcceptanceProjection(tx, taskId, acceptance, updatedAt) {
|
|
32
|
+
await tx.updateTaskFields(taskId, {
|
|
33
|
+
acceptanceJson: JSON.stringify(acceptance),
|
|
34
|
+
updatedAt,
|
|
39
35
|
});
|
|
36
|
+
const existing = await tx.getAcRows(taskId);
|
|
37
|
+
const plan = planAcUpdate(taskId, existing, acceptance);
|
|
38
|
+
await applyAcPlan(tx, taskId, plan);
|
|
40
39
|
}
|
|
41
40
|
/**
|
|
42
41
|
* Classify a free-text acceptance string into a gate proposal using heuristics.
|
|
@@ -119,48 +118,70 @@ function heuristicClassify(text, reqId) {
|
|
|
119
118
|
/**
|
|
120
119
|
* Add a typed `AcceptanceGate` (with a REQ-ID) to a task's acceptance array.
|
|
121
120
|
*
|
|
122
|
-
*
|
|
123
|
-
*
|
|
121
|
+
* @remarks
|
|
122
|
+
* Validates before opening storage. Reading existing acceptance, checking REQ-ID
|
|
123
|
+
* uniqueness and persisting the task/AC projection share one transaction, so
|
|
124
|
+
* competing appends cannot overwrite each other. This records a gate; it does
|
|
125
|
+
* not execute it or record passing verification evidence.
|
|
126
|
+
*
|
|
127
|
+
* @returns The committed acceptance array and its owning task identity.
|
|
128
|
+
* @example
|
|
129
|
+
* ```typescript
|
|
130
|
+
* const gate: AcceptanceGate = {
|
|
131
|
+
* kind: 'test', command: 'node', args: ['verify.mjs'], expect: 'exit0',
|
|
132
|
+
* req: 'PARTNER-121', description: 'Task-specific checks pass',
|
|
133
|
+
* };
|
|
134
|
+
* await reqAdd(projectRoot, 'T121', gate, undefined);
|
|
135
|
+
* ```
|
|
124
136
|
*
|
|
125
137
|
* @param projectRoot - Absolute path to project root
|
|
126
138
|
* @param taskId - Target task ID
|
|
127
|
-
* @param gate -
|
|
139
|
+
* @param gate - Typed gate; runtime schema validation also applies to SDK callers
|
|
128
140
|
* @param accessor - Optional pre-created accessor (for testing)
|
|
129
141
|
*
|
|
130
|
-
* @throws
|
|
131
|
-
* @throws
|
|
142
|
+
* @throws CleoError E_NOT_FOUND when the task does not exist
|
|
143
|
+
* @throws CleoError E_VALIDATION when the REQ-ID already exists on the task
|
|
132
144
|
*
|
|
133
145
|
* @task T782
|
|
134
146
|
*/
|
|
135
147
|
export async function reqAdd(projectRoot, taskId, gate, accessor) {
|
|
148
|
+
const validated = validateGate(gate);
|
|
136
149
|
const acc = accessor ?? (await getTaskAccessor(projectRoot));
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
150
|
+
return acc.transaction(async (tx) => {
|
|
151
|
+
const task = await loadTask(acc, taskId);
|
|
152
|
+
const existing = (task.acceptance ?? []);
|
|
153
|
+
// Check REQ-ID uniqueness
|
|
154
|
+
if (validated.req) {
|
|
155
|
+
const dup = existing.find((item) => typeof item === 'object' && item.req === validated.req);
|
|
156
|
+
if (dup) {
|
|
157
|
+
throw new CleoError(ExitCode.VALIDATION_ERROR, `REQ-ID "${validated.req}" already exists on task ${taskId}`, {
|
|
158
|
+
fix: `Choose a unique REQ-ID or remove the existing gate with 'cleo req list ${taskId}'`,
|
|
159
|
+
});
|
|
160
|
+
}
|
|
146
161
|
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
162
|
+
const updated = [...existing, validated];
|
|
163
|
+
await persistAcceptanceProjection(tx, taskId, updated, new Date().toISOString());
|
|
164
|
+
return { task: { id: taskId, acceptance: updated } };
|
|
165
|
+
});
|
|
151
166
|
}
|
|
152
167
|
/**
|
|
153
168
|
* List all REQ-ID–addressed acceptance gates on a task.
|
|
154
169
|
*
|
|
155
|
-
*
|
|
156
|
-
* they have no REQ-ID.
|
|
157
|
-
*
|
|
170
|
+
* @remarks
|
|
171
|
+
* Free-text strings are skipped because they have no REQ-ID. This summary does
|
|
172
|
+
* not execute gates or establish verification; full payloads remain on the task.
|
|
173
|
+
*
|
|
174
|
+
* @returns Requirement identity, index, kind and description for each named gate.
|
|
175
|
+
* @example
|
|
176
|
+
* ```typescript
|
|
177
|
+
* const { gates } = await reqList(projectRoot, 'T121', undefined);
|
|
178
|
+
* ```
|
|
158
179
|
*
|
|
159
180
|
* @param projectRoot - Absolute path to project root
|
|
160
181
|
* @param taskId - Target task ID
|
|
161
182
|
* @param accessor - Optional pre-created accessor (for testing)
|
|
162
183
|
*
|
|
163
|
-
* @throws
|
|
184
|
+
* @throws CleoError E_NOT_FOUND when the task does not exist
|
|
164
185
|
*
|
|
165
186
|
* @task T782
|
|
166
187
|
*/
|
|
@@ -188,60 +209,76 @@ export async function reqList(projectRoot, taskId, accessor) {
|
|
|
188
209
|
* Heuristic migrator: reads free-text acceptance strings and proposes typed
|
|
189
210
|
* `AcceptanceGate` replacements.
|
|
190
211
|
*
|
|
212
|
+
* @remarks
|
|
191
213
|
* Without `apply: true` only proposals are returned. With `apply: true` the
|
|
192
214
|
* matched strings are replaced in the task's acceptance array and the updated
|
|
193
215
|
* array is persisted.
|
|
194
216
|
*
|
|
195
217
|
* Auto-generated REQ-IDs use the pattern `MIGRATED-001`, `MIGRATED-002`, etc.
|
|
196
|
-
*
|
|
218
|
+
* Existing structured gates and their requirement identities are preserved.
|
|
219
|
+
* Apply plans and persists under one transaction; preview does not write.
|
|
220
|
+
*
|
|
221
|
+
* @returns Proposed replacements and, when applied, the committed replacement count.
|
|
222
|
+
* @example
|
|
223
|
+
* ```typescript
|
|
224
|
+
* const preview = await reqMigrate(projectRoot, 'T121', false, undefined);
|
|
225
|
+
* ```
|
|
197
226
|
*
|
|
198
227
|
* @param projectRoot - Absolute path to project root
|
|
199
228
|
* @param taskId - Target task ID
|
|
200
229
|
* @param apply - When true, writes the proposals back to the task
|
|
201
230
|
* @param accessor - Optional pre-created accessor (for testing)
|
|
202
231
|
*
|
|
203
|
-
* @throws
|
|
232
|
+
* @throws CleoError E_NOT_FOUND when the task does not exist
|
|
204
233
|
*
|
|
205
234
|
* @task T782
|
|
206
235
|
*/
|
|
207
236
|
export async function reqMigrate(projectRoot, taskId, apply, accessor) {
|
|
208
237
|
const acc = accessor ?? (await getTaskAccessor(projectRoot));
|
|
209
|
-
const
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
238
|
+
const migrate = async (tx) => {
|
|
239
|
+
const task = await loadTask(acc, taskId);
|
|
240
|
+
const acceptance = (task.acceptance ?? []);
|
|
241
|
+
const proposals = [];
|
|
242
|
+
let counter = 1;
|
|
243
|
+
const usedRequirements = new Set(acceptance.flatMap((item) => (typeof item === 'object' && item.req ? [item.req] : [])));
|
|
244
|
+
// Collect free-text indices only
|
|
245
|
+
for (let i = 0; i < acceptance.length; i++) {
|
|
246
|
+
const item = acceptance[i];
|
|
247
|
+
if (typeof item !== 'string')
|
|
248
|
+
continue; // skip existing gates
|
|
249
|
+
let reqId;
|
|
250
|
+
do {
|
|
251
|
+
reqId = `MIGRATED-${String(counter++).padStart(3, '0')}`;
|
|
252
|
+
} while (usedRequirements.has(reqId));
|
|
253
|
+
usedRequirements.add(reqId);
|
|
254
|
+
const classified = heuristicClassify(item, reqId);
|
|
255
|
+
const proposed = classified ? validateGate(classified) : null;
|
|
256
|
+
proposals.push({
|
|
257
|
+
index: i,
|
|
258
|
+
original: item,
|
|
259
|
+
proposed,
|
|
260
|
+
reqId: proposed ? reqId : null,
|
|
261
|
+
heuristic: proposed ? proposed.kind : null,
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
if (!tx) {
|
|
265
|
+
return { proposals };
|
|
266
|
+
}
|
|
267
|
+
// Apply: replace matched strings with their proposed gates
|
|
268
|
+
// Unmatched strings (where proposed is null) are left as-is
|
|
269
|
+
const updated = acceptance.map((item, i) => {
|
|
270
|
+
const proposal = proposals.find((p) => p.index === i);
|
|
271
|
+
if (proposal?.proposed)
|
|
272
|
+
return proposal.proposed;
|
|
273
|
+
return item;
|
|
227
274
|
});
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
// Unmatched strings (where proposed is null) are left as-is
|
|
234
|
-
const updated = acceptance.map((item, i) => {
|
|
235
|
-
const proposal = proposals.find((p) => p.index === i);
|
|
236
|
-
if (proposal?.proposed)
|
|
237
|
-
return proposal.proposed;
|
|
238
|
-
return item;
|
|
239
|
-
});
|
|
240
|
-
await persistAcceptanceProjection(acc, taskId, updated, new Date().toISOString());
|
|
241
|
-
return {
|
|
242
|
-
proposals,
|
|
243
|
-
applied: proposals.filter((p) => p.proposed !== null).length,
|
|
275
|
+
await persistAcceptanceProjection(tx, taskId, updated, new Date().toISOString());
|
|
276
|
+
return {
|
|
277
|
+
proposals,
|
|
278
|
+
applied: proposals.filter((p) => p.proposed !== null).length,
|
|
279
|
+
};
|
|
244
280
|
};
|
|
281
|
+
return apply ? acc.transaction(migrate) : migrate();
|
|
245
282
|
}
|
|
246
283
|
/**
|
|
247
284
|
* Validate a raw JSON string against the `acceptanceGateSchema` Zod schema.
|
|
@@ -249,9 +286,19 @@ export async function reqMigrate(projectRoot, taskId, apply, accessor) {
|
|
|
249
286
|
* Returns the parsed `AcceptanceGate` on success or throws a `CleoError`
|
|
250
287
|
* with exit code `E_VALIDATION` on failure.
|
|
251
288
|
*
|
|
289
|
+
* @remarks
|
|
290
|
+
* Uses the same schema boundary as direct SDK writes and rejects unsupported
|
|
291
|
+
* fields, including nested fields that the schema would otherwise strip.
|
|
292
|
+
*
|
|
293
|
+
* @returns The validated gate without executing its command.
|
|
294
|
+
* @example
|
|
295
|
+
* ```typescript
|
|
296
|
+
* const raw = '{"kind":"manual","description":"Review","prompt":"Approve?"}';
|
|
297
|
+
* const gate = parseGateJson(raw);
|
|
298
|
+
* ```
|
|
252
299
|
* @param raw - Raw JSON string from `--gate` CLI flag
|
|
253
300
|
*
|
|
254
|
-
* @throws
|
|
301
|
+
* @throws CleoError E_VALIDATION when JSON is malformed or schema invalid
|
|
255
302
|
*
|
|
256
303
|
* @task T782
|
|
257
304
|
*/
|
|
@@ -265,13 +312,22 @@ export function parseGateJson(raw) {
|
|
|
265
312
|
fix: 'Wrap the gate JSON in single quotes, e.g. --gate \'{"kind":"test","command":"pnpm test","expect":"pass","description":"Tests pass"}\'',
|
|
266
313
|
});
|
|
267
314
|
}
|
|
268
|
-
|
|
315
|
+
return validateGate(parsed);
|
|
316
|
+
}
|
|
317
|
+
/** Validate the canonical schema without silently dropping unsupported gate fields. */
|
|
318
|
+
function validateGate(gate) {
|
|
319
|
+
const result = acceptanceGateSchema.safeParse(gate);
|
|
269
320
|
if (!result.success) {
|
|
270
321
|
const issues = result.error.issues.map((e) => `${e.path.join('.')}: ${e.message}`).join('; ');
|
|
271
322
|
throw new CleoError(ExitCode.VALIDATION_ERROR, `Gate JSON failed schema validation: ${issues}`, {
|
|
272
323
|
fix: 'Check AcceptanceGate schema: kind, description, and kind-specific required fields',
|
|
273
324
|
});
|
|
274
325
|
}
|
|
326
|
+
if (!isDeepStrictEqual(gate, result.data)) {
|
|
327
|
+
throw new CleoError(ExitCode.VALIDATION_ERROR, 'Gate includes unsupported fields', {
|
|
328
|
+
fix: 'Use only fields supported by the canonical AcceptanceGate schema; unsupported nested fields are also rejected.',
|
|
329
|
+
});
|
|
330
|
+
}
|
|
275
331
|
return result.data;
|
|
276
332
|
}
|
|
277
333
|
//# sourceMappingURL=req.js.map
|
package/dist/tasks/req.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"req.js","sourceRoot":"","sources":["../../src/tasks/req.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"req.js","sourceRoot":"","sources":["../../src/tasks/req.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
* @adr ADR-058
|
|
20
20
|
* @adr ADR-051
|
|
21
21
|
*/
|
|
22
|
-
import type { TaskRecord } from '@cleocode/contracts';
|
|
22
|
+
import type { TaskRecord, TasksAddParams } from '@cleocode/contracts';
|
|
23
23
|
import { type EngineResult } from '../engine-result.js';
|
|
24
24
|
/**
|
|
25
25
|
* Where a resolved parent came from.
|
|
@@ -81,36 +81,7 @@ export declare function resolveParentFromSession(projectRoot: string, params: {
|
|
|
81
81
|
* @task T1568
|
|
82
82
|
* @epic T1566
|
|
83
83
|
*/
|
|
84
|
-
export declare function addTaskWithSessionScope(projectRoot: string, params: {
|
|
85
|
-
title: string;
|
|
86
|
-
description?: string;
|
|
87
|
-
parent?: string;
|
|
88
|
-
depends?: string[];
|
|
89
|
-
priority?: string;
|
|
90
|
-
labels?: string[];
|
|
91
|
-
type?: string;
|
|
92
|
-
phase?: string;
|
|
93
|
-
size?: string;
|
|
94
|
-
acceptance?: string[];
|
|
95
|
-
notes?: string;
|
|
96
|
-
files?: string[];
|
|
97
|
-
dryRun?: boolean;
|
|
98
|
-
parentSearch?: string;
|
|
99
|
-
/**
|
|
100
|
-
* Set by the CLI when it already inferred the parent from the session's
|
|
101
|
-
* `current` pointer, so core does not re-derive provenance it cannot see.
|
|
102
|
-
* @task T12136
|
|
103
|
-
*/
|
|
104
|
-
parentSource?: 'explicit' | 'session-inference';
|
|
105
|
-
kind?: string;
|
|
106
|
-
scope?: string;
|
|
107
|
-
severity?: string;
|
|
108
|
-
/**
|
|
109
|
-
* Bypass the BRAIN duplicate-detection rejection guard (T1633).
|
|
110
|
-
* Audited to `.cleo/audit/duplicate-bypass.jsonl`.
|
|
111
|
-
*/
|
|
112
|
-
forceDuplicate?: boolean;
|
|
113
|
-
}): Promise<EngineResult<{
|
|
84
|
+
export declare function addTaskWithSessionScope(projectRoot: string, params: TasksAddParams): Promise<EngineResult<{
|
|
114
85
|
task: TaskRecord;
|
|
115
86
|
duplicate: boolean;
|
|
116
87
|
dryRun?: boolean;
|
|
@@ -120,6 +91,10 @@ export declare function addTaskWithSessionScope(projectRoot: string, params: {
|
|
|
120
91
|
* parent (PM-Core V2 design-point 5). @saga T10538
|
|
121
92
|
*/
|
|
122
93
|
reopenedAncestors?: string[];
|
|
94
|
+
autoDecomposed?: {
|
|
95
|
+
childId: string;
|
|
96
|
+
movedAcceptance: string[];
|
|
97
|
+
};
|
|
123
98
|
/**
|
|
124
99
|
* Present when the parent was NOT a plain explicit argument — an inference
|
|
125
100
|
* fired, was declined as stale, or the session lookup failed.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-scope.d.ts","sourceRoot":"","sources":["../../src/tasks/session-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"session-scope.d.ts","sourceRoot":"","sources":["../../src/tasks/session-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,KAAK,YAAY,EAA8B,MAAM,qBAAqB,CAAC;AAQpF;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,eAAe,GAAG,mBAAmB,CAAC;AAE9E,kDAAkD;AAClD,MAAM,WAAW,gBAAgB;IAC/B,kEAAkE;IAClE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,8CAA8C;IAC9C,YAAY,EAAE,YAAY,CAAC;IAC3B;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oFAAoF;IACpF,KAAK,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;CAC7B;AAeD;;;;;;;;;;;;GAYG;AACH,wBAAsB,wBAAwB,CAC5C,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE;IACN,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GACA,OAAO,CAAC,gBAAgB,CAAC,CAmF3B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,cAAc,GACrB,OAAO,CACR,YAAY,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,cAAc,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAChE;;;;;;;;;;OAUG;IACH,eAAe,CAAC,EAAE;QAAE,YAAY,EAAE,YAAY,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAChE,CAAC,CACH,CAwDA"}
|
|
@@ -23,7 +23,7 @@ import { engineError, engineSuccess } from '../engine-result.js';
|
|
|
23
23
|
import { cleoErrorToEngineResult } from '../errors-to-engine.js';
|
|
24
24
|
import { getTaskAccessor } from '../store/data-accessor.js';
|
|
25
25
|
import { getActiveSession } from '../store/session-store.js';
|
|
26
|
-
import { addTask } from './add.js';
|
|
26
|
+
import { addTask, toTaskAddOptions } from './add.js';
|
|
27
27
|
import { taskToRecord } from './engine-converters.js';
|
|
28
28
|
import { findTasks } from './find.js';
|
|
29
29
|
/**
|
|
@@ -146,28 +146,13 @@ export async function addTaskWithSessionScope(projectRoot, params) {
|
|
|
146
146
|
}
|
|
147
147
|
const accessor = await getTaskAccessor(projectRoot);
|
|
148
148
|
const result = await addTask({
|
|
149
|
-
|
|
150
|
-
description: params.description,
|
|
149
|
+
...toTaskAddOptions(params),
|
|
151
150
|
parentId: resolvedParent,
|
|
152
151
|
// T12136: so `E_CLEO_DEPTH_EXCEEDED` can say the parent was inherited
|
|
153
152
|
// rather than named. The CLI may already have decided this upstream.
|
|
154
153
|
parentSource: params.parentSource === 'session-inference' || parentSource === 'session-inference'
|
|
155
154
|
? 'session-inference'
|
|
156
155
|
: 'explicit',
|
|
157
|
-
depends: params.depends,
|
|
158
|
-
priority: params.priority || 'medium',
|
|
159
|
-
labels: params.labels,
|
|
160
|
-
type: params.type || undefined,
|
|
161
|
-
phase: params.phase,
|
|
162
|
-
size: params.size,
|
|
163
|
-
acceptance: params.acceptance,
|
|
164
|
-
notes: params.notes,
|
|
165
|
-
files: params.files,
|
|
166
|
-
dryRun: params.dryRun,
|
|
167
|
-
kind: params.kind,
|
|
168
|
-
scope: params.scope,
|
|
169
|
-
severity: params.severity,
|
|
170
|
-
forceDuplicate: params.forceDuplicate,
|
|
171
156
|
}, projectRoot, accessor);
|
|
172
157
|
return engineSuccess({
|
|
173
158
|
task: taskToRecord(result.task),
|
|
@@ -177,6 +162,7 @@ export async function addTaskWithSessionScope(projectRoot, params) {
|
|
|
177
162
|
...(inferenceNote ? { parentInference: { parentSource, note: inferenceNote } } : {}),
|
|
178
163
|
...(result.warnings?.length && { warnings: result.warnings }),
|
|
179
164
|
// T10538 / design-point 5 — surface the ancestor reopen to the caller.
|
|
165
|
+
...(result.autoDecomposed && { autoDecomposed: result.autoDecomposed }),
|
|
180
166
|
...(result.reopenedAncestors?.length && {
|
|
181
167
|
reopenedAncestors: result.reopenedAncestors,
|
|
182
168
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-scope.js","sourceRoot":"","sources":["../../src/tasks/session-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;
|
|
1
|
+
{"version":3,"file":"session-scope.js","sourceRoot":"","sources":["../../src/tasks/session-scope.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,8 @@
|
|
|
11
11
|
*
|
|
12
12
|
* Signed attestation lines are appended to
|
|
13
13
|
* `.cleo/audit/severity-attestation.jsonl` (one JSON object per line). The
|
|
14
|
+
* Task mutations persist signed assertions atomically in the task audit instead.
|
|
15
|
+
* Standalone JSONL assertions do not prove a task mutation committed. The
|
|
14
16
|
* previous path `.cleo/audit/bug-severity.jsonl` was bug-command-specific;
|
|
15
17
|
* callers that still write to the old path will see a one-time deprecation
|
|
16
18
|
* notice emitted to stderr — migration to the new path is separate cleanup.
|
|
@@ -19,13 +21,13 @@
|
|
|
19
21
|
*
|
|
20
22
|
* If `.cleo/config.json` declares an `ownerPubkeys` array, only identities
|
|
21
23
|
* whose Ed25519 public key (hex) appears in that list may assert a severity.
|
|
22
|
-
* Signers outside the allowlist receive
|
|
24
|
+
* Signers outside the allowlist receive a permission error naming `E_OWNER_ONLY`.
|
|
23
25
|
* When the allowlist is absent or empty, any identity may sign (opt-in policy).
|
|
24
26
|
*
|
|
25
27
|
* @task T9071
|
|
26
28
|
* @adr ADR-054 (draft)
|
|
27
29
|
*/
|
|
28
|
-
import type
|
|
30
|
+
import { type SeverityAttestation, type SignedSeverityAttestation } from '@cleocode/contracts';
|
|
29
31
|
export type { SeverityAttestation };
|
|
30
32
|
/**
|
|
31
33
|
* Audit log path for severity attestations.
|
|
@@ -45,11 +47,16 @@ export declare const SEVERITY_ATTESTATION_AUDIT_FILE = "severity-attestation.jso
|
|
|
45
47
|
*/
|
|
46
48
|
export declare const LEGACY_BUG_SEVERITY_AUDIT_FILE = "bug-severity.jsonl";
|
|
47
49
|
/**
|
|
48
|
-
*
|
|
49
|
-
* array when the file is missing, malformed, or does not declare the field.
|
|
50
|
+
* Read the project's opt-in severity signer allowlist.
|
|
50
51
|
*
|
|
51
|
-
* @param cwd -
|
|
52
|
-
* @
|
|
52
|
+
* @param cwd - Explicit project root, otherwise the current project.
|
|
53
|
+
* @returns Authorized keys; absent config or an absent/empty field returns an empty list.
|
|
54
|
+
* @throws CleoError when configured authority cannot be read or validated.
|
|
55
|
+
* @remarks An unreadable or malformed authority is not permission for every signer.
|
|
56
|
+
* @example
|
|
57
|
+
* ```ts
|
|
58
|
+
* const owners = await loadOwnerPubkeys(projectRoot);
|
|
59
|
+
* ```
|
|
53
60
|
*/
|
|
54
61
|
export declare function loadOwnerPubkeys(cwd?: string): Promise<string[]>;
|
|
55
62
|
/**
|
|
@@ -78,17 +85,15 @@ export interface AppendSeverityAttestationOptions {
|
|
|
78
85
|
* Append a signed severity attestation to
|
|
79
86
|
* `.cleo/audit/severity-attestation.jsonl`.
|
|
80
87
|
*
|
|
81
|
-
* Throws a
|
|
88
|
+
* Throws a permission error naming `E_OWNER_ONLY` when the signer's pubkey
|
|
82
89
|
* is not in the configured `ownerPubkeys` allowlist (allowlist enforcement is
|
|
83
90
|
* only active when the list is non-empty).
|
|
84
91
|
*
|
|
85
|
-
* @param taskId - Task ID, if already assigned at attestation time.
|
|
86
92
|
* @param record - Attestation fields (excluding `signerPub` which is derived
|
|
87
93
|
* from the local CLEO identity).
|
|
88
94
|
* @param options - Optional overrides (e.g. `cwd`).
|
|
89
95
|
*
|
|
90
|
-
* @throws
|
|
91
|
-
* signer.
|
|
96
|
+
* @throws CleoError with permission exit code when the allowlist rejects the signer.
|
|
92
97
|
*
|
|
93
98
|
* @example
|
|
94
99
|
* ```ts
|
|
@@ -103,4 +108,28 @@ export interface AppendSeverityAttestationOptions {
|
|
|
103
108
|
* ```
|
|
104
109
|
*/
|
|
105
110
|
export declare function appendSignedSeverityAttestation(record: Omit<SeverityAttestation, 'signerPub'>, options?: AppendSeverityAttestationOptions): Promise<void>;
|
|
111
|
+
/**
|
|
112
|
+
* Authorize and sign a severity assertion without appending a filesystem log.
|
|
113
|
+
*
|
|
114
|
+
* Task mutations persist this result in their task transaction, binding the
|
|
115
|
+
* signature to the assigned task ID. The established owner allowlist is opt-in:
|
|
116
|
+
* absent or empty lists permit the local identity; nonempty lists restrict it.
|
|
117
|
+
*
|
|
118
|
+
* @param record - Assertion to bind to the project identity.
|
|
119
|
+
* @param options - Explicit project used for both identity and owner policy.
|
|
120
|
+
* @returns Signed assertion ready for atomic audit persistence.
|
|
121
|
+
* @remarks Preparation creates no committed task evidence; persist in the task transaction.
|
|
122
|
+
* Restricted authority never provisions an unknown signer. With opt-in unrestricted
|
|
123
|
+
* authority, first-use key provisioning is independent persistent project setup;
|
|
124
|
+
* a later task rollback does not delete or roll back that signing identity.
|
|
125
|
+
* @example
|
|
126
|
+
* ```ts
|
|
127
|
+
* const assertion = await prepareSignedSeverityAttestation({
|
|
128
|
+
* timestamp: new Date().toISOString(), taskId: 'T001',
|
|
129
|
+
* title: 'Restore service', severity: 'P1',
|
|
130
|
+
* }, { cwd: projectRoot });
|
|
131
|
+
* ```
|
|
132
|
+
* @throws CleoError with permission exit code when the signer is not allowed.
|
|
133
|
+
*/
|
|
134
|
+
export declare function prepareSignedSeverityAttestation(record: Omit<SeverityAttestation, 'signerPub'>, options?: AppendSeverityAttestationOptions): Promise<SignedSeverityAttestation>;
|
|
106
135
|
//# sourceMappingURL=severity-attestation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"severity-attestation.d.ts","sourceRoot":"","sources":["../../src/tasks/severity-attestation.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"severity-attestation.d.ts","sourceRoot":"","sources":["../../src/tasks/severity-attestation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAKH,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAC/B,MAAM,qBAAqB,CAAC;AAM7B,YAAY,EAAE,mBAAmB,EAAE,CAAC;AAEpC;;;;;;;;GAQG;AACH,eAAO,MAAM,+BAA+B,+BAA+B,CAAC;AAE5E;;;;;GAKG;AACH,eAAO,MAAM,8BAA8B,uBAAuB,CAAC;AAUnE;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAsBtE;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAO5E;AAMD;;GAEG;AACH,MAAM,WAAW,gCAAgC;IAC/C;;;;;;OAMG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,+BAA+B,CACnD,MAAM,EAAE,IAAI,CAAC,mBAAmB,EAAE,WAAW,CAAC,EAC9C,OAAO,CAAC,EAAE,gCAAgC,GACzC,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,gCAAgC,CACpD,MAAM,EAAE,IAAI,CAAC,mBAAmB,EAAE,WAAW,CAAC,EAC9C,OAAO,CAAC,EAAE,gCAAgC,GACzC,OAAO,CAAC,yBAAyB,CAAC,CAapC"}
|