@cleocode/core 2026.9.7 → 2026.9.9
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/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 +5100 -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 +64 -0
- package/dist/git/work-tree.d.ts.map +1 -0
- package/dist/git/work-tree.js +111 -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 +2 -0
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +2 -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 +4018 -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 +31 -1
- package/dist/memory/brain-writer-thread.d.ts.map +1 -1
- package/dist/memory/brain-writer-thread.js +166 -24
- 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 +16 -41
- 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 +16 -3
- package/dist/release/pr-evidence.d.ts.map +1 -1
- package/dist/release/pr-evidence.js +53 -7
- 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 +4026 -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 +6 -2
- 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 +91 -35
- 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 +54 -26
- package/dist/tasks/evidence.d.ts.map +1 -1
- package/dist/tasks/evidence.js +292 -40
- 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-runner.d.ts +88 -14
- package/dist/tasks/gate-runner.d.ts.map +1 -1
- package/dist/tasks/gate-runner.js +596 -253
- 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/teardown-signal.d.ts +72 -0
- package/dist/teardown-signal.d.ts.map +1 -0
- package/dist/teardown-signal.js +108 -0
- package/dist/teardown-signal.js.map +1 -0
- 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/templates/CLEO-INJECTION.md +103 -101
|
@@ -1,314 +1,319 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* SDK verb. Git IS the immutable hash-chained ledger; this module mines it
|
|
6
|
-
* to produce a structured {@link ReconstructResult} consumed by T1216 audit tasks.
|
|
7
|
-
*
|
|
8
|
-
* No `.jsonl` sidecar is emitted — git's DAG is the source of truth (per
|
|
9
|
-
* FP peer note, T1322 council verdict 2026-04-24).
|
|
10
|
-
*
|
|
11
|
-
* Security: all git subprocess calls use `execFileSync` with strict `argv`
|
|
12
|
-
* arrays — no shell interpolation or user-controlled string concatenation
|
|
13
|
-
* in the command string.
|
|
14
|
-
*
|
|
15
|
-
* @task T1322
|
|
16
|
-
* @epic T1216
|
|
2
|
+
* Bounded reconstruction from the local Git ledger, with explicit coverage.
|
|
3
|
+
* Task proximity remains a heuristic, never authoritative containment.
|
|
4
|
+
* @packageDocumentation
|
|
17
5
|
*/
|
|
18
|
-
import {
|
|
6
|
+
import { resolve } from 'node:path';
|
|
7
|
+
import { setImmediate } from 'node:timers/promises';
|
|
19
8
|
import { resolveOrCwd } from '../paths.js';
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
9
|
+
import { worktreeScope } from '../project-scope.js';
|
|
10
|
+
import { extractTaskIds } from '../release/invariants/archive-reason-invariant.js';
|
|
11
|
+
import { captureWrapped } from '../resources/spawn-wrapper.js';
|
|
23
12
|
/**
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* @param
|
|
27
|
-
* @param
|
|
28
|
-
* @returns
|
|
13
|
+
* Reconstruct exact task references and containing tags from bounded local Git reads.
|
|
14
|
+
* @param taskId - Exact uppercase task token (for example T994), never a grep substring.
|
|
15
|
+
* @param repoRoot - Explicit repository root, otherwise the captured caller scope or cwd.
|
|
16
|
+
* @param options - Optional limits which cannot extend an inherited execution deadline.
|
|
17
|
+
* @returns Existing lineage fields plus mandatory assessment coverage on every new result.
|
|
18
|
+
* @remarks Reads commit messages and parents once, then propagates ancestry in topological
|
|
19
|
+
* order. Git failures, truncated output, shallow history and cancellation are explicit.
|
|
20
|
+
* No remote fetch or writes occur. Numeric child inference is retained for compatibility
|
|
21
|
+
* and is not proof of task ownership. CPU stages yield cooperatively; this is not preemption.
|
|
22
|
+
* @example
|
|
23
|
+
* ```ts
|
|
24
|
+
* const lineage = await reconstructLineage('T994', '/project', {});
|
|
25
|
+
* if (lineage.assessment?.coverage !== 'current') return;
|
|
26
|
+
* ```
|
|
29
27
|
*/
|
|
30
|
-
function
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
28
|
+
export async function reconstructLineage(taskId, repoRoot, options = {}) {
|
|
29
|
+
const inherited = worktreeScope.getStore();
|
|
30
|
+
const root = resolve(resolveOrCwd(repoRoot ?? inherited?.worktreeRoot));
|
|
31
|
+
const startedAt = Date.now();
|
|
32
|
+
const caller = inherited?.execution;
|
|
33
|
+
const deadlineAt = Math.min(caller?.deadlineAt ?? Infinity, options.execution?.deadlineAt ?? (caller ? Infinity : startedAt + 2000));
|
|
34
|
+
const signals = [caller?.signal, options.execution?.signal].filter((signal) => signal !== undefined);
|
|
35
|
+
const signal = signals.length ? AbortSignal.any(signals) : undefined;
|
|
36
|
+
const execution = { deadlineAt, signal };
|
|
37
|
+
const env = {
|
|
38
|
+
...process.env,
|
|
39
|
+
GIT_TERMINAL_PROMPT: '0',
|
|
40
|
+
GIT_OPTIONAL_LOCKS: '0',
|
|
41
|
+
};
|
|
42
|
+
// Explicit cwd owns this read, even when the caller was launched by another repository's hook.
|
|
43
|
+
for (const name of [
|
|
44
|
+
'GIT_DIR',
|
|
45
|
+
'GIT_WORK_TREE',
|
|
46
|
+
'GIT_COMMON_DIR',
|
|
47
|
+
'GIT_INDEX_FILE',
|
|
48
|
+
'GIT_OBJECT_DIRECTORY',
|
|
49
|
+
'GIT_ALTERNATE_OBJECT_DIRECTORIES',
|
|
50
|
+
'GIT_NAMESPACE',
|
|
51
|
+
'GIT_SHALLOW_FILE',
|
|
52
|
+
])
|
|
53
|
+
delete env[name];
|
|
54
|
+
let remainingBytes = Math.min(options.maxOutputBytes ?? 8 * 1024 * 1024, caller?.resources.maxBytes ?? Infinity);
|
|
55
|
+
const assessment = {
|
|
56
|
+
repositoryRoot: root,
|
|
57
|
+
deadlineAt,
|
|
58
|
+
coverage: 'failed',
|
|
59
|
+
shallow: null,
|
|
60
|
+
observedCommits: 0,
|
|
61
|
+
historyComplete: false,
|
|
62
|
+
tagsComplete: false,
|
|
63
|
+
commands: [],
|
|
64
|
+
diagnostics: [],
|
|
65
|
+
limitations: [
|
|
66
|
+
'Only locally reachable refs are assessed; no remote history is fetched.',
|
|
67
|
+
'Numeric proximity and co-mentioned IDs suggest candidates, not authoritative child tasks.',
|
|
68
|
+
'Refs may change during assessment; the reads are not an atomic repository snapshot.',
|
|
69
|
+
],
|
|
70
|
+
};
|
|
71
|
+
const result = {
|
|
72
|
+
taskId,
|
|
73
|
+
directCommits: [],
|
|
74
|
+
childIdRange: null,
|
|
75
|
+
childCommits: {},
|
|
76
|
+
releaseTags: [],
|
|
77
|
+
releaseCommitShas: [],
|
|
78
|
+
firstSeenAt: null,
|
|
79
|
+
lastSeenAt: null,
|
|
80
|
+
inferredChildren: [],
|
|
81
|
+
assessment,
|
|
82
|
+
};
|
|
83
|
+
const fail = (code, stage, message) => {
|
|
84
|
+
assessment.diagnostics.push({ code, stage, message });
|
|
85
|
+
};
|
|
86
|
+
const active = (stage) => {
|
|
87
|
+
if (signal?.aborted) {
|
|
88
|
+
fail('E_OPERATION_CANCELLED', stage, 'Original caller cancellation forbids further assessment.');
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
if (Date.now() >= deadlineAt) {
|
|
92
|
+
fail('E_OPERATION_DEADLINE', stage, 'Original execution deadline has elapsed.');
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
try {
|
|
96
|
+
caller?.assertActive();
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
fail('E_OPERATION_INACTIVE', stage, error instanceof Error ? error.message : String(error));
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
return true;
|
|
103
|
+
};
|
|
104
|
+
const git = async (stage, args) => {
|
|
105
|
+
if (!active(stage))
|
|
106
|
+
return null;
|
|
107
|
+
if (remainingBytes <= 0) {
|
|
108
|
+
fail('E_OUTPUT_LIMIT', stage, 'Aggregate Git output byte budget exhausted.');
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
try {
|
|
112
|
+
const { stdout, ...receipt } = await captureWrapped('git', args, {
|
|
113
|
+
cwd: root,
|
|
114
|
+
env,
|
|
115
|
+
execution,
|
|
116
|
+
maxOutputBytes: remainingBytes,
|
|
117
|
+
});
|
|
118
|
+
assessment.commands.push({ ...receipt, args });
|
|
119
|
+
const bytes = Buffer.byteLength(stdout) + Buffer.byteLength(receipt.stderr);
|
|
120
|
+
remainingBytes -= bytes;
|
|
121
|
+
caller?.consume({ bytes });
|
|
122
|
+
if (!receipt.started ||
|
|
123
|
+
receipt.exitCode !== 0 ||
|
|
124
|
+
receipt.error ||
|
|
125
|
+
receipt.stopped ||
|
|
126
|
+
receipt.signal ||
|
|
127
|
+
receipt.outputTruncated ||
|
|
128
|
+
!receipt.targetCloseObserved ||
|
|
129
|
+
receipt.cleanupErrors.length) {
|
|
130
|
+
fail('E_GIT_READ_FAILED', stage, receipt.error ??
|
|
131
|
+
receipt.stopped ??
|
|
132
|
+
(receipt.stderr || `Git target did not complete cleanly (exit ${receipt.exitCode}).`));
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
if (!active(stage))
|
|
136
|
+
return null;
|
|
137
|
+
return stdout;
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
fail('E_GIT_READ_FAILED', stage, error instanceof Error ? error.message : String(error));
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
if (!/^T\d+$/.test(taskId) ||
|
|
145
|
+
!Number.isSafeInteger(deadlineAt) ||
|
|
146
|
+
!Number.isSafeInteger(remainingBytes) ||
|
|
147
|
+
remainingBytes < 0) {
|
|
148
|
+
fail('E_INVALID_INPUT', 'input', 'Task token, deadline and byte limit must be valid.');
|
|
149
|
+
return result;
|
|
39
150
|
}
|
|
40
|
-
|
|
41
|
-
|
|
151
|
+
if (caller && resolve(caller.identity.projectRoot) !== root) {
|
|
152
|
+
fail('E_PROJECT_SCOPE_MISMATCH', 'input', 'Explicit repository differs from inherited operation ownership.');
|
|
153
|
+
return result;
|
|
42
154
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
* collisions with commit subject text.
|
|
50
|
-
*
|
|
51
|
-
* @param raw - Raw stdout from git log with the expected format string.
|
|
52
|
-
*/
|
|
53
|
-
function parseGitLog(raw) {
|
|
54
|
-
if (!raw)
|
|
55
|
-
return [];
|
|
56
|
-
const results = [];
|
|
57
|
-
for (const line of raw.split('\n')) {
|
|
58
|
-
const trimmed = line.trim();
|
|
59
|
-
if (!trimmed)
|
|
60
|
-
continue;
|
|
61
|
-
const parts = trimmed.split('\x1f');
|
|
62
|
-
if (parts.length < 4)
|
|
63
|
-
continue;
|
|
64
|
-
const [sha, subject, author, authorDate] = parts;
|
|
65
|
-
if (!sha || sha.length < 7)
|
|
66
|
-
continue;
|
|
67
|
-
results.push({ sha, subject, author, authorDate });
|
|
155
|
+
const shallow = await git('repository', ['rev-parse', '--is-shallow-repository']);
|
|
156
|
+
if (shallow === null)
|
|
157
|
+
return result;
|
|
158
|
+
if (!['true', 'false'].includes(shallow.trim())) {
|
|
159
|
+
fail('E_GIT_PROTOCOL', 'repository', 'Git did not return a shallow-history verdict.');
|
|
160
|
+
return result;
|
|
68
161
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
* return parsed commit entries.
|
|
74
|
-
*
|
|
75
|
-
* The `--fixed-strings` flag prevents the pattern from being interpreted as
|
|
76
|
-
* a POSIX extended regex, which keeps the semantics predictable.
|
|
77
|
-
*
|
|
78
|
-
* @param repoRoot - Absolute path to the git repository.
|
|
79
|
-
* @param pattern - Literal string to grep for in commit messages.
|
|
80
|
-
*/
|
|
81
|
-
function gitLogGrep(repoRoot, pattern) {
|
|
82
|
-
const raw = runGit(repoRoot, [
|
|
162
|
+
assessment.shallow = shallow.trim() === 'true';
|
|
163
|
+
if (assessment.shallow)
|
|
164
|
+
fail('E_SHALLOW_HISTORY', 'repository', 'Shallow history cannot establish complete lineage.');
|
|
165
|
+
const history = await git('history', [
|
|
83
166
|
'log',
|
|
84
167
|
'--all',
|
|
85
|
-
'--
|
|
86
|
-
|
|
87
|
-
'--
|
|
168
|
+
'--topo-order',
|
|
169
|
+
'--no-show-signature',
|
|
170
|
+
'--no-color',
|
|
171
|
+
'--format=%H%x00%P%x00%an%x00%aI%x00%s%x00%B%x00',
|
|
88
172
|
]);
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
.split('\n')
|
|
106
|
-
.map((t) => t.trim())
|
|
107
|
-
.filter((t) => t.length > 0);
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Resolve a tag name to its target commit SHA using `git rev-parse <tag>^{}`.
|
|
111
|
-
*
|
|
112
|
-
* The `^{}` dereferences annotated tags to the underlying commit object.
|
|
113
|
-
*
|
|
114
|
-
* @param repoRoot - Absolute path to the git repository.
|
|
115
|
-
* @param tag - Tag name to resolve.
|
|
116
|
-
*/
|
|
117
|
-
function resolveTagCommit(repoRoot, tag) {
|
|
118
|
-
return runGit(repoRoot, ['rev-parse', `${tag}^{}`]);
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Fetch the commit subject for a given SHA.
|
|
122
|
-
*
|
|
123
|
-
* @param repoRoot - Absolute path to the git repository.
|
|
124
|
-
* @param sha - Full commit SHA.
|
|
125
|
-
*/
|
|
126
|
-
function commitSubject(repoRoot, sha) {
|
|
127
|
-
return runGit(repoRoot, ['log', '-1', '--pretty=format:%s', sha]);
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Infer the numeric child ID range for a parent task ID.
|
|
131
|
-
*
|
|
132
|
-
* Strategy (in order of priority):
|
|
133
|
-
* 1. Mine commit messages for adjacent task-ID mentions (e.g. T994, T995, …)
|
|
134
|
-
* from the parent's direct-commit subjects — zero git calls.
|
|
135
|
-
* 2. Adjacency heuristic: issue ONE `git log --all` with an extended-regex
|
|
136
|
-
* pattern covering the ±20 window around the parent ID, then extract all
|
|
137
|
-
* matching task IDs from the output. This replaces 40 sequential git-log
|
|
138
|
-
* calls with a single pass.
|
|
139
|
-
*
|
|
140
|
-
* Returns `null` when no children can be inferred.
|
|
141
|
-
*
|
|
142
|
-
* @param repoRoot - Absolute path to the git repository.
|
|
143
|
-
* @param parentNumeric - Numeric portion of the parent task ID (e.g. 991 for T991).
|
|
144
|
-
* @param directCommits - The parent's own direct commits (used to extract sibling mentions).
|
|
145
|
-
*/
|
|
146
|
-
function inferChildRange(repoRoot, parentNumeric, directCommits) {
|
|
147
|
-
const foundIds = new Set();
|
|
148
|
-
// Step 1: Mine sibling mentions from direct-commit subjects (no git calls).
|
|
149
|
-
const combinedText = directCommits.map((c) => c.subject).join('\n');
|
|
150
|
-
const taskPattern = /\bT(\d+)\b/g;
|
|
151
|
-
let match;
|
|
152
|
-
// biome-ignore lint/suspicious/noAssignInExpressions: idiomatic regex loop
|
|
153
|
-
while ((match = taskPattern.exec(combinedText)) !== null) {
|
|
154
|
-
const n = parseInt(match[1] ?? '0', 10);
|
|
155
|
-
// Accept IDs within ±50 of the parent as likely sibling cluster members
|
|
156
|
-
if (n !== parentNumeric && Math.abs(n - parentNumeric) <= 50) {
|
|
157
|
-
foundIds.add(n);
|
|
173
|
+
if (history === null)
|
|
174
|
+
return result;
|
|
175
|
+
// Git messages cannot contain NUL. Newlines between records are not field delimiters.
|
|
176
|
+
const fields = history.split('\0');
|
|
177
|
+
if (fields.pop()?.trim() !== '' || fields.length % 6 !== 0) {
|
|
178
|
+
fail('E_GIT_PROTOCOL', 'history', 'Malformed or incomplete commit fields.');
|
|
179
|
+
return result;
|
|
180
|
+
}
|
|
181
|
+
const commits = [];
|
|
182
|
+
const parents = new Map();
|
|
183
|
+
const refs = new Map();
|
|
184
|
+
for (let i = 0; i < fields.length; i += 6) {
|
|
185
|
+
if (i % 1536 === 0) {
|
|
186
|
+
await setImmediate();
|
|
187
|
+
if (!active('history-parse'))
|
|
188
|
+
return result;
|
|
158
189
|
}
|
|
190
|
+
const sha = fields[i].trim();
|
|
191
|
+
const parentIds = fields[i + 1].split(' ').filter(Boolean);
|
|
192
|
+
if (!/^[a-f0-9]{40,64}$/.test(sha) || parentIds.some((id) => !/^[a-f0-9]{40,64}$/.test(id))) {
|
|
193
|
+
fail('E_GIT_PROTOCOL', 'history', 'Malformed commit or parent identity.');
|
|
194
|
+
return result;
|
|
195
|
+
}
|
|
196
|
+
try {
|
|
197
|
+
caller?.consume({ items: 1 });
|
|
198
|
+
}
|
|
199
|
+
catch (error) {
|
|
200
|
+
fail('E_OPERATION_RESOURCE_LIMIT', 'history-parse', error instanceof Error ? error.message : String(error));
|
|
201
|
+
return result;
|
|
202
|
+
}
|
|
203
|
+
commits.push({
|
|
204
|
+
sha,
|
|
205
|
+
author: fields[i + 2],
|
|
206
|
+
authorDate: fields[i + 3],
|
|
207
|
+
subject: fields[i + 4],
|
|
208
|
+
});
|
|
209
|
+
parents.set(sha, parentIds);
|
|
210
|
+
refs.set(sha, extractTaskIds(fields[i + 5]));
|
|
159
211
|
}
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
const
|
|
165
|
-
const
|
|
166
|
-
const
|
|
167
|
-
for (let
|
|
168
|
-
if (
|
|
169
|
-
|
|
212
|
+
assessment.observedCommits = commits.length;
|
|
213
|
+
assessment.historyComplete = true;
|
|
214
|
+
assessment.coverage = 'partial';
|
|
215
|
+
result.directCommits = commits.filter((commit) => refs.get(commit.sha).includes(taskId));
|
|
216
|
+
const numericId = Number(taskId.slice(1));
|
|
217
|
+
const candidates = new Set();
|
|
218
|
+
const directShas = new Set(result.directCommits.map((commit) => commit.sha));
|
|
219
|
+
for (let i = 0; i < commits.length; i++) {
|
|
220
|
+
if (i % 256 === 0) {
|
|
221
|
+
await setImmediate();
|
|
222
|
+
if (!active('task-matching'))
|
|
223
|
+
return result;
|
|
224
|
+
}
|
|
225
|
+
const commit = commits[i];
|
|
226
|
+
const radius = directShas.has(commit.sha) ? 50 : 20;
|
|
227
|
+
for (const id of refs.get(commit.sha)) {
|
|
228
|
+
if (id !== taskId && Math.abs(Number(id.slice(1)) - numericId) <= radius)
|
|
229
|
+
candidates.add(id);
|
|
230
|
+
}
|
|
170
231
|
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
232
|
+
result.inferredChildren = [...candidates].sort((a, b) => Number(a.slice(1)) - Number(b.slice(1)));
|
|
233
|
+
if (result.inferredChildren.length)
|
|
234
|
+
result.childIdRange = {
|
|
235
|
+
min: result.inferredChildren[0],
|
|
236
|
+
max: result.inferredChildren.at(-1),
|
|
237
|
+
};
|
|
238
|
+
const work = new Set(directShas);
|
|
239
|
+
for (const id of result.inferredChildren)
|
|
240
|
+
result.childCommits[id] = [];
|
|
241
|
+
for (let index = 0; index < commits.length; index++) {
|
|
242
|
+
if (index % 256 === 0) {
|
|
243
|
+
await setImmediate();
|
|
244
|
+
if (!active('child-matching'))
|
|
245
|
+
return result;
|
|
246
|
+
}
|
|
247
|
+
const commit = commits[index];
|
|
248
|
+
for (const id of refs.get(commit.sha)) {
|
|
249
|
+
if (candidates.has(id)) {
|
|
250
|
+
result.childCommits[id].push(commit);
|
|
251
|
+
work.add(commit.sha);
|
|
189
252
|
}
|
|
190
253
|
}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
const maxId = sorted[sorted.length - 1];
|
|
197
|
-
return {
|
|
198
|
-
min: `T${minId}`,
|
|
199
|
-
max: `T${maxId}`,
|
|
200
|
-
ids: sorted.map((n) => `T${n}`),
|
|
201
|
-
};
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* Compute the earliest ISO-8601 date across a flat list of commit entries.
|
|
205
|
-
*
|
|
206
|
-
* @param commits - Commit entries to examine.
|
|
207
|
-
*/
|
|
208
|
-
function earliestDate(commits) {
|
|
209
|
-
if (commits.length === 0)
|
|
210
|
-
return null;
|
|
211
|
-
return commits.reduce((acc, c) => (c.authorDate < acc ? c.authorDate : acc), commits[0].authorDate);
|
|
212
|
-
}
|
|
213
|
-
/**
|
|
214
|
-
* Compute the latest ISO-8601 date across a flat list of commit entries.
|
|
215
|
-
*
|
|
216
|
-
* @param commits - Commit entries to examine.
|
|
217
|
-
*/
|
|
218
|
-
function latestDate(commits) {
|
|
219
|
-
if (commits.length === 0)
|
|
220
|
-
return null;
|
|
221
|
-
return commits.reduce((acc, c) => (c.authorDate > acc ? c.authorDate : acc), commits[0].authorDate);
|
|
222
|
-
}
|
|
223
|
-
// ---------------------------------------------------------------------------
|
|
224
|
-
// Public API
|
|
225
|
-
// ---------------------------------------------------------------------------
|
|
226
|
-
/**
|
|
227
|
-
* Reconstruct the git-backed lineage for a task and its inferred children.
|
|
228
|
-
*
|
|
229
|
-
* This is the first-class SDK verb for audit lineage reconstruction (T1322).
|
|
230
|
-
* It queries git directly and returns a fully-typed {@link ReconstructResult}
|
|
231
|
-
* that T1216 audit tasks consume for their 4-outcome verdict.
|
|
232
|
-
*
|
|
233
|
-
* **Algorithm**:
|
|
234
|
-
* 1. Find direct commits whose message references `taskId`.
|
|
235
|
-
* 2. Infer child ID range from commit-message mining and numeric adjacency.
|
|
236
|
-
* 3. Find child commits for each inferred child ID.
|
|
237
|
-
* 4. Collect all release tags containing any direct or child commit.
|
|
238
|
-
* 5. Compute first/last timestamps across the full commit set.
|
|
239
|
-
*
|
|
240
|
-
* @param taskId - The task ID to reconstruct (e.g. `"T991"`).
|
|
241
|
-
* @param repoRoot - Absolute path to the git repository. Defaults to `process.cwd()`.
|
|
242
|
-
* @returns A fully-typed {@link ReconstructResult} with all git-derived lineage data.
|
|
243
|
-
*
|
|
244
|
-
* @example
|
|
245
|
-
* ```ts
|
|
246
|
-
* import { reconstructLineage } from '@cleocode/core/audit/reconstruct.js';
|
|
247
|
-
*
|
|
248
|
-
* const result = await reconstructLineage('T991');
|
|
249
|
-
* console.log(result.releaseTags.map(t => t.tag));
|
|
250
|
-
* // → ['v2026.4.98', 'v2026.4.99', ...]
|
|
251
|
-
* ```
|
|
252
|
-
*
|
|
253
|
-
* @task T1322
|
|
254
|
-
* @epic T1216
|
|
255
|
-
*/
|
|
256
|
-
export async function reconstructLineage(taskId, repoRoot) {
|
|
257
|
-
repoRoot = resolveOrCwd(repoRoot);
|
|
258
|
-
// 1. Direct commits — messages that reference the exact task ID
|
|
259
|
-
const directCommits = gitLogGrep(repoRoot, taskId);
|
|
260
|
-
// 2. Infer child ID range
|
|
261
|
-
const numericMatch = taskId.match(/^T(\d+)$/i);
|
|
262
|
-
const parentNumeric = numericMatch ? parseInt(numericMatch[1] ?? '0', 10) : 0;
|
|
263
|
-
const rangeResult = parentNumeric > 0 ? inferChildRange(repoRoot, parentNumeric, directCommits) : null;
|
|
264
|
-
const childIdRange = rangeResult
|
|
265
|
-
? { min: rangeResult.min, max: rangeResult.max }
|
|
266
|
-
: null;
|
|
267
|
-
const inferredChildren = rangeResult ? rangeResult.ids : [];
|
|
268
|
-
// 3. Child commits — one git-log query per inferred child ID
|
|
269
|
-
const childCommits = {};
|
|
270
|
-
for (const childId of inferredChildren) {
|
|
271
|
-
const hits = gitLogGrep(repoRoot, childId);
|
|
272
|
-
if (hits.length > 0) {
|
|
273
|
-
childCommits[childId] = hits;
|
|
254
|
+
if (work.has(commit.sha)) {
|
|
255
|
+
if (result.firstSeenAt === null || commit.authorDate < result.firstSeenAt)
|
|
256
|
+
result.firstSeenAt = commit.authorDate;
|
|
257
|
+
if (result.lastSeenAt === null || commit.authorDate > result.lastSeenAt)
|
|
258
|
+
result.lastSeenAt = commit.authorDate;
|
|
274
259
|
}
|
|
275
260
|
}
|
|
276
|
-
//
|
|
277
|
-
const
|
|
278
|
-
for (
|
|
279
|
-
|
|
280
|
-
|
|
261
|
+
// Reverse topological traversal visits parents before their descendants, including merges.
|
|
262
|
+
const containsWork = new Set();
|
|
263
|
+
for (let i = commits.length - 1; i >= 0; i--) {
|
|
264
|
+
if (i % 256 === 0) {
|
|
265
|
+
await setImmediate();
|
|
266
|
+
if (!active('ancestry'))
|
|
267
|
+
return result;
|
|
281
268
|
}
|
|
269
|
+
const sha = commits[i].sha;
|
|
270
|
+
const ancestors = parents.get(sha);
|
|
271
|
+
if (ancestors.some((parent) => !parents.has(parent)))
|
|
272
|
+
fail('E_MISSING_PARENT', 'ancestry', `Commit ${sha} references unavailable history.`);
|
|
273
|
+
if (work.has(sha) || ancestors.some((parent) => containsWork.has(parent)))
|
|
274
|
+
containsWork.add(sha);
|
|
282
275
|
}
|
|
283
|
-
const
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
276
|
+
const tags = await git('tags', [
|
|
277
|
+
'for-each-ref',
|
|
278
|
+
'--sort=refname',
|
|
279
|
+
'--format=%(refname:strip=2)%00%(objecttype)%00%(objectname)%00%(*objecttype)%00%(*objectname)',
|
|
280
|
+
'refs/tags',
|
|
281
|
+
]);
|
|
282
|
+
if (tags === null)
|
|
283
|
+
return result;
|
|
284
|
+
const bySha = new Map(commits.map((commit) => [commit.sha, commit]));
|
|
285
|
+
let validTags = true;
|
|
286
|
+
const tagLines = tags.split('\n').filter(Boolean);
|
|
287
|
+
for (let index = 0; index < tagLines.length; index++) {
|
|
288
|
+
if (index % 256 === 0)
|
|
289
|
+
await setImmediate();
|
|
290
|
+
if (!active('tag-matching'))
|
|
291
|
+
return result;
|
|
292
|
+
const line = tagLines[index];
|
|
293
|
+
const parts = line.split('\0');
|
|
294
|
+
const [tag, type, object, peeledType, peeled] = parts;
|
|
295
|
+
const target = type === 'commit' ? object : peeledType === 'commit' ? peeled : undefined;
|
|
296
|
+
if (parts.length !== 5 || !tag || !object || (target && !bySha.has(target))) {
|
|
297
|
+
fail('E_GIT_PROTOCOL', 'tags', `Tag ${tag ?? '(unknown)'} has missing or inconsistent commit evidence.`);
|
|
298
|
+
validTags = false;
|
|
299
|
+
continue;
|
|
287
300
|
}
|
|
301
|
+
if (type === 'tag' && peeledType === 'tag') {
|
|
302
|
+
fail('E_UNSUPPORTED_TAG_CHAIN', 'tags', `Nested tag ${tag} requires further authenticated peeling.`);
|
|
303
|
+
validTags = false;
|
|
304
|
+
continue;
|
|
305
|
+
}
|
|
306
|
+
if (target && containsWork.has(target))
|
|
307
|
+
result.releaseTags.push({
|
|
308
|
+
tag,
|
|
309
|
+
commitSha: target,
|
|
310
|
+
subject: bySha.get(target).subject,
|
|
311
|
+
});
|
|
288
312
|
}
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
return { tag, commitSha, subject };
|
|
295
|
-
})
|
|
296
|
-
.filter((entry) => entry.commitSha.length > 0);
|
|
297
|
-
const releaseCommitShas = releaseTags.map((t) => t.commitSha);
|
|
298
|
-
// 5. Timing bounds
|
|
299
|
-
const allWorkCommits = [...directCommits, ...Object.values(childCommits).flat()];
|
|
300
|
-
const firstSeenAt = earliestDate(allWorkCommits);
|
|
301
|
-
const lastSeenAt = latestDate(allWorkCommits);
|
|
302
|
-
return {
|
|
303
|
-
taskId,
|
|
304
|
-
directCommits,
|
|
305
|
-
childIdRange,
|
|
306
|
-
childCommits,
|
|
307
|
-
releaseTags,
|
|
308
|
-
releaseCommitShas,
|
|
309
|
-
firstSeenAt,
|
|
310
|
-
lastSeenAt,
|
|
311
|
-
inferredChildren,
|
|
312
|
-
};
|
|
313
|
+
result.releaseCommitShas = [...new Set(result.releaseTags.map((tag) => tag.commitSha))];
|
|
314
|
+
assessment.tagsComplete = validTags;
|
|
315
|
+
if (active('complete') && !assessment.diagnostics.length)
|
|
316
|
+
assessment.coverage = 'current';
|
|
317
|
+
return result;
|
|
313
318
|
}
|
|
314
319
|
//# sourceMappingURL=reconstruct.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reconstruct.js","sourceRoot":"","sources":["../../src/audit/reconstruct.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"reconstruct.js","sourceRoot":"","sources":["../../src/audit/reconstruct.ts"],"names":[],"mappings":"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"}
|