@cleocode/core 2026.10.27 → 2026.11.1-canary.3
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/README.md +2 -0
- package/binaries/README.md +30 -10
- package/dist/.source-stamp.json +4 -0
- package/dist/audit/reconstruct.d.ts.map +1 -1
- package/dist/audit/reconstruct.js +3 -13
- package/dist/audit/reconstruct.js.map +1 -1
- package/dist/build-provenance.json +2 -2
- package/dist/cloud/nexus-cloud.d.ts.map +1 -1
- package/dist/cloud/nexus-cloud.js +3 -3
- package/dist/cloud/nexus-cloud.js.map +1 -1
- package/dist/cloud/nexus-device.d.ts +1 -1
- package/dist/cloud/nexus-link.d.ts +18 -2
- package/dist/cloud/nexus-link.d.ts.map +1 -1
- package/dist/cloud/nexus-link.js +26 -6
- package/dist/cloud/nexus-link.js.map +1 -1
- package/dist/cloud/nexus-vault.d.ts.map +1 -1
- package/dist/cloud/nexus-vault.js +3 -9
- package/dist/cloud/nexus-vault.js.map +1 -1
- package/dist/decide/sites/registry.d.ts +40 -0
- package/dist/decide/sites/registry.d.ts.map +1 -1
- package/dist/decide/sites/registry.js +38 -0
- package/dist/decide/sites/registry.js.map +1 -1
- package/dist/docs/adr-allocator.d.ts +3 -3
- package/dist/docs/adr-allocator.d.ts.map +1 -1
- package/dist/docs/adr-allocator.js +8 -5
- package/dist/docs/adr-allocator.js.map +1 -1
- package/dist/docs/blob-consolidation.d.ts.map +1 -1
- package/dist/docs/blob-consolidation.js +3 -2
- package/dist/docs/blob-consolidation.js.map +1 -1
- package/dist/docs/derive-links.d.ts +12 -0
- package/dist/docs/derive-links.d.ts.map +1 -1
- package/dist/docs/derive-links.js +19 -0
- package/dist/docs/derive-links.js.map +1 -1
- package/dist/docs/doc-name-rule.d.ts +105 -0
- package/dist/docs/doc-name-rule.d.ts.map +1 -0
- package/dist/docs/doc-name-rule.js +212 -0
- package/dist/docs/doc-name-rule.js.map +1 -0
- package/dist/docs/docs-inconsistency-detector.d.ts.map +1 -1
- package/dist/docs/docs-inconsistency-detector.js +4 -3
- package/dist/docs/docs-inconsistency-detector.js.map +1 -1
- package/dist/docs/docs-ops.d.ts +27 -5
- package/dist/docs/docs-ops.d.ts.map +1 -1
- package/dist/docs/docs-ops.js +149 -17
- package/dist/docs/docs-ops.js.map +1 -1
- package/dist/docs/docs-read-model.d.ts +45 -15
- package/dist/docs/docs-read-model.d.ts.map +1 -1
- package/dist/docs/docs-read-model.js +22 -102
- package/dist/docs/docs-read-model.js.map +1 -1
- package/dist/docs/docs-update.d.ts.map +1 -1
- package/dist/docs/docs-update.js +8 -2
- package/dist/docs/docs-update.js.map +1 -1
- package/dist/docs/doctor.d.ts +71 -4
- package/dist/docs/doctor.d.ts.map +1 -1
- package/dist/docs/doctor.js +324 -23
- package/dist/docs/doctor.js.map +1 -1
- package/dist/docs/duplicate-check.d.ts +138 -0
- package/dist/docs/duplicate-check.d.ts.map +1 -0
- package/dist/docs/duplicate-check.js +286 -0
- package/dist/docs/duplicate-check.js.map +1 -0
- package/dist/docs/fetch-result.d.ts.map +1 -1
- package/dist/docs/fetch-result.js +27 -0
- package/dist/docs/fetch-result.js.map +1 -1
- package/dist/docs/import/scanner.d.ts +2 -0
- package/dist/docs/import/scanner.d.ts.map +1 -1
- package/dist/docs/import/scanner.js +3 -1
- package/dist/docs/import/scanner.js.map +1 -1
- package/dist/docs/lineage.d.ts +66 -0
- package/dist/docs/lineage.d.ts.map +1 -0
- package/dist/docs/lineage.js +190 -0
- package/dist/docs/lineage.js.map +1 -0
- package/dist/docs/modernize/apply.d.ts +139 -0
- package/dist/docs/modernize/apply.d.ts.map +1 -0
- package/dist/docs/modernize/apply.js +760 -0
- package/dist/docs/modernize/apply.js.map +1 -0
- package/dist/docs/modernize/guard.d.ts +92 -0
- package/dist/docs/modernize/guard.d.ts.map +1 -0
- package/dist/docs/modernize/guard.js +214 -0
- package/dist/docs/modernize/guard.js.map +1 -0
- package/dist/docs/modernize/index.d.ts +68 -0
- package/dist/docs/modernize/index.d.ts.map +1 -0
- package/dist/docs/modernize/index.js +97 -0
- package/dist/docs/modernize/index.js.map +1 -0
- package/dist/docs/modernize/judge.d.ts +85 -0
- package/dist/docs/modernize/judge.d.ts.map +1 -0
- package/dist/docs/modernize/judge.js +186 -0
- package/dist/docs/modernize/judge.js.map +1 -0
- package/dist/docs/modernize/plan.d.ts +77 -0
- package/dist/docs/modernize/plan.d.ts.map +1 -0
- package/dist/docs/modernize/plan.js +510 -0
- package/dist/docs/modernize/plan.js.map +1 -0
- package/dist/docs/modernize/restore.d.ts +41 -0
- package/dist/docs/modernize/restore.d.ts.map +1 -0
- package/dist/docs/modernize/restore.js +103 -0
- package/dist/docs/modernize/restore.js.map +1 -0
- package/dist/docs/modernize/rules.d.ts +197 -0
- package/dist/docs/modernize/rules.d.ts.map +1 -0
- package/dist/docs/modernize/rules.js +510 -0
- package/dist/docs/modernize/rules.js.map +1 -0
- package/dist/docs/modernize/store.d.ts +64 -0
- package/dist/docs/modernize/store.d.ts.map +1 -0
- package/dist/docs/modernize/store.js +390 -0
- package/dist/docs/modernize/store.js.map +1 -0
- package/dist/docs/publications-store.d.ts +16 -2
- package/dist/docs/publications-store.d.ts.map +1 -1
- package/dist/docs/publications-store.js +23 -2
- package/dist/docs/publications-store.js.map +1 -1
- package/dist/docs/publish-pr.d.ts.map +1 -1
- package/dist/docs/publish-pr.js +12 -1
- package/dist/docs/publish-pr.js.map +1 -1
- package/dist/docs/rot.d.ts +94 -0
- package/dist/docs/rot.d.ts.map +1 -0
- package/dist/docs/rot.js +298 -0
- package/dist/docs/rot.js.map +1 -0
- package/dist/docs/similarity-check.d.ts +2 -0
- package/dist/docs/similarity-check.d.ts.map +1 -1
- package/dist/docs/similarity-check.js +6 -49
- package/dist/docs/similarity-check.js.map +1 -1
- package/dist/docs/slug-rename.d.ts +84 -0
- package/dist/docs/slug-rename.d.ts.map +1 -0
- package/dist/docs/slug-rename.js +166 -0
- package/dist/docs/slug-rename.js.map +1 -0
- package/dist/docs/slug-similarity.d.ts +24 -0
- package/dist/docs/slug-similarity.d.ts.map +1 -0
- package/dist/docs/slug-similarity.js +63 -0
- package/dist/docs/slug-similarity.js.map +1 -0
- package/dist/docs/wikilinks.d.ts +20 -4
- package/dist/docs/wikilinks.d.ts.map +1 -1
- package/dist/docs/wikilinks.js +52 -7
- package/dist/docs/wikilinks.js.map +1 -1
- package/dist/docs/writer-registry.d.ts.map +1 -1
- package/dist/docs/writer-registry.js +33 -0
- package/dist/docs/writer-registry.js.map +1 -1
- package/dist/doctor/type-matrix-repair.d.ts +194 -0
- package/dist/doctor/type-matrix-repair.d.ts.map +1 -0
- package/dist/doctor/type-matrix-repair.js +662 -0
- package/dist/doctor/type-matrix-repair.js.map +1 -0
- package/dist/gateway-client/generated/index.d.ts +2 -2
- package/dist/gateway-client/generated/index.d.ts.map +1 -1
- package/dist/gateway-client/generated/index.js +1 -1
- package/dist/gateway-client/generated/index.js.map +1 -1
- package/dist/gateway-client/generated/namespaces.gen.d.ts +5 -0
- package/dist/gateway-client/generated/namespaces.gen.d.ts.map +1 -1
- package/dist/gateway-client/generated/namespaces.gen.js +6 -1
- package/dist/gateway-client/generated/namespaces.gen.js.map +1 -1
- package/dist/gateway-client/generated/sdk.gen.d.ts +21 -1
- package/dist/gateway-client/generated/sdk.gen.d.ts.map +1 -1
- package/dist/gateway-client/generated/sdk.gen.js +55 -0
- package/dist/gateway-client/generated/sdk.gen.js.map +1 -1
- package/dist/gateway-client/generated/types.gen.d.ts +222 -0
- package/dist/gateway-client/generated/types.gen.d.ts.map +1 -1
- package/dist/gc/gc-subsystem.d.ts +4 -0
- package/dist/gc/gc-subsystem.d.ts.map +1 -1
- package/dist/gc/gc-subsystem.js +16 -0
- package/dist/gc/gc-subsystem.js.map +1 -1
- package/dist/git/work-tree.d.ts +48 -0
- package/dist/git/work-tree.d.ts.map +1 -1
- package/dist/git/work-tree.js +63 -1
- package/dist/git/work-tree.js.map +1 -1
- package/dist/hooks/handlers/session-hooks.d.ts +5 -4
- package/dist/hooks/handlers/session-hooks.d.ts.map +1 -1
- package/dist/hooks/handlers/session-hooks.js +5 -21
- package/dist/hooks/handlers/session-hooks.js.map +1 -1
- package/dist/internal.d.ts +5 -1
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +5 -1
- package/dist/internal.js.map +1 -1
- package/dist/memory/brain-doctor.d.ts.map +1 -1
- package/dist/memory/brain-doctor.js +6 -1
- package/dist/memory/brain-doctor.js.map +1 -1
- package/dist/memory/engine-compat.d.ts.map +1 -1
- package/dist/memory/engine-compat.js +6 -0
- package/dist/memory/engine-compat.js.map +1 -1
- package/dist/nexus/analyze-orchestrator.d.ts +24 -0
- package/dist/nexus/analyze-orchestrator.d.ts.map +1 -1
- package/dist/nexus/analyze-orchestrator.js +43 -5
- package/dist/nexus/analyze-orchestrator.js.map +1 -1
- package/dist/nexus/user-profile.d.ts +2 -1
- package/dist/nexus/user-profile.d.ts.map +1 -1
- package/dist/nexus/user-profile.js +13 -5
- package/dist/nexus/user-profile.js.map +1 -1
- package/dist/orchestrate/admission.d.ts +8 -0
- package/dist/orchestrate/admission.d.ts.map +1 -1
- package/dist/orchestrate/admission.js +3 -1
- package/dist/orchestrate/admission.js.map +1 -1
- package/dist/orchestrate/query-ops.d.ts.map +1 -1
- package/dist/orchestrate/query-ops.js +15 -4
- package/dist/orchestrate/query-ops.js.map +1 -1
- package/dist/orchestrate/spawn-ops.d.ts.map +1 -1
- package/dist/orchestrate/spawn-ops.js +43 -2
- package/dist/orchestrate/spawn-ops.js.map +1 -1
- package/dist/orchestration/index.d.ts +6 -0
- package/dist/orchestration/index.d.ts.map +1 -1
- package/dist/orchestration/index.js +3 -0
- package/dist/orchestration/index.js.map +1 -1
- package/dist/orchestration/spawn-prompt.d.ts.map +1 -1
- package/dist/orchestration/spawn-prompt.js +3 -1
- package/dist/orchestration/spawn-prompt.js.map +1 -1
- package/dist/paths.d.ts +43 -1
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +51 -1
- package/dist/paths.js.map +1 -1
- package/dist/project-lifecycle.d.ts.map +1 -1
- package/dist/project-lifecycle.js +31 -0
- package/dist/project-lifecycle.js.map +1 -1
- package/dist/release/authorization.d.ts +156 -0
- package/dist/release/authorization.d.ts.map +1 -0
- package/dist/release/authorization.js +460 -0
- package/dist/release/authorization.js.map +1 -0
- package/dist/release/ci-evidence.d.ts +55 -4
- package/dist/release/ci-evidence.d.ts.map +1 -1
- package/dist/release/ci-evidence.js +251 -22
- package/dist/release/ci-evidence.js.map +1 -1
- package/dist/release/ci-run-evidence.d.ts +107 -0
- package/dist/release/ci-run-evidence.d.ts.map +1 -0
- package/dist/release/ci-run-evidence.js +234 -0
- package/dist/release/ci-run-evidence.js.map +1 -0
- package/dist/release/cut.d.ts +231 -0
- package/dist/release/cut.d.ts.map +1 -0
- package/dist/release/cut.js +775 -0
- package/dist/release/cut.js.map +1 -0
- package/dist/release/deploy-evidence.d.ts +173 -0
- package/dist/release/deploy-evidence.d.ts.map +1 -0
- package/dist/release/deploy-evidence.js +381 -0
- package/dist/release/deploy-evidence.js.map +1 -0
- package/dist/release/engine-ops.d.ts.map +1 -1
- package/dist/release/engine-ops.js +10 -4
- package/dist/release/engine-ops.js.map +1 -1
- package/dist/release/index.d.ts +3 -0
- package/dist/release/index.d.ts.map +1 -1
- package/dist/release/index.js +2 -0
- package/dist/release/index.js.map +1 -1
- package/dist/release/invariants/archive-reason-invariant.d.ts.map +1 -1
- package/dist/release/invariants/archive-reason-invariant.js +4 -1
- package/dist/release/invariants/archive-reason-invariant.js.map +1 -1
- package/dist/release/open.d.ts.map +1 -1
- package/dist/release/open.js +2 -6
- package/dist/release/open.js.map +1 -1
- package/dist/release/plan.d.ts +34 -2
- package/dist/release/plan.d.ts.map +1 -1
- package/dist/release/plan.js +30 -6
- package/dist/release/plan.js.map +1 -1
- package/dist/release/preflight-skip.d.ts +4 -19
- package/dist/release/preflight-skip.d.ts.map +1 -1
- package/dist/release/preflight-skip.js +5 -110
- package/dist/release/preflight-skip.js.map +1 -1
- package/dist/release/reconcile-latest.d.ts +29 -0
- package/dist/release/reconcile-latest.d.ts.map +1 -0
- package/dist/release/reconcile-latest.js +71 -0
- package/dist/release/reconcile-latest.js.map +1 -0
- package/dist/release/reconcile.d.ts +3 -1
- package/dist/release/reconcile.d.ts.map +1 -1
- package/dist/release/reconcile.js +18 -6
- package/dist/release/reconcile.js.map +1 -1
- package/dist/release/release-published.d.ts +27 -0
- package/dist/release/release-published.d.ts.map +1 -0
- package/dist/release/release-published.js +35 -0
- package/dist/release/release-published.js.map +1 -0
- package/dist/release/tty-confirm.d.ts +23 -0
- package/dist/release/tty-confirm.d.ts.map +1 -0
- package/dist/release/tty-confirm.js +50 -0
- package/dist/release/tty-confirm.js.map +1 -0
- package/dist/remote/index.js +1 -1
- package/dist/remote/index.js.map +1 -1
- package/dist/resources/admission-ledger.d.ts +103 -1
- package/dist/resources/admission-ledger.d.ts.map +1 -1
- package/dist/resources/admission-ledger.js +200 -17
- package/dist/resources/admission-ledger.js.map +1 -1
- package/dist/resources/agent-lease.d.ts +82 -0
- package/dist/resources/agent-lease.d.ts.map +1 -0
- package/dist/resources/agent-lease.js +167 -0
- package/dist/resources/agent-lease.js.map +1 -0
- package/dist/resources/governor.d.ts +27 -1
- package/dist/resources/governor.d.ts.map +1 -1
- package/dist/resources/governor.js +88 -4
- package/dist/resources/governor.js.map +1 -1
- package/dist/resources/hook-footprint.d.ts +13 -1
- package/dist/resources/hook-footprint.d.ts.map +1 -1
- package/dist/resources/hook-footprint.js +33 -7
- package/dist/resources/hook-footprint.js.map +1 -1
- package/dist/resources/run-governed.d.ts +25 -0
- package/dist/resources/run-governed.d.ts.map +1 -1
- package/dist/resources/run-governed.js +44 -3
- package/dist/resources/run-governed.js.map +1 -1
- package/dist/sagas/reconcile.d.ts.map +1 -1
- package/dist/sagas/reconcile.js +11 -0
- package/dist/sagas/reconcile.js.map +1 -1
- package/dist/scaffold/ensure-dirs.d.ts.map +1 -1
- package/dist/scaffold/ensure-dirs.js +8 -6
- package/dist/scaffold/ensure-dirs.js.map +1 -1
- package/dist/security/override-cap-setting.d.ts +132 -0
- package/dist/security/override-cap-setting.d.ts.map +1 -1
- package/dist/security/override-cap-setting.js +88 -10
- package/dist/security/override-cap-setting.js.map +1 -1
- package/dist/security/owner-override-authority.d.ts.map +1 -1
- package/dist/security/owner-override-authority.js +5 -1
- package/dist/security/owner-override-authority.js.map +1 -1
- package/dist/selfimprove/draft-pr.d.ts.map +1 -1
- package/dist/selfimprove/draft-pr.js +4 -1
- package/dist/selfimprove/draft-pr.js.map +1 -1
- package/dist/session/engine-ops.d.ts.map +1 -1
- package/dist/session/engine-ops.js +4 -16
- package/dist/session/engine-ops.js.map +1 -1
- package/dist/sessions/briefing.d.ts +6 -0
- package/dist/sessions/briefing.d.ts.map +1 -1
- package/dist/sessions/briefing.js +34 -0
- package/dist/sessions/briefing.js.map +1 -1
- package/dist/sessions/session-end-snapshot-entry.js +2 -2
- package/dist/sessions/session-end-snapshot-entry.js.map +1 -1
- package/dist/sessions/session-end-snapshot.js +4 -4
- package/dist/sessions/session-end-snapshot.js.map +1 -1
- package/dist/skills/injection/token.d.ts.map +1 -1
- package/dist/skills/injection/token.js +3 -6
- package/dist/skills/injection/token.js.map +1 -1
- package/dist/skills/orchestrator/spawn.d.ts.map +1 -1
- package/dist/skills/orchestrator/spawn.js +3 -4
- package/dist/skills/orchestrator/spawn.js.map +1 -1
- package/dist/skills/propose-patch.d.ts.map +1 -1
- package/dist/skills/propose-patch.js +4 -1
- package/dist/skills/propose-patch.js.map +1 -1
- package/dist/spawn/branch-integration.d.ts.map +1 -1
- package/dist/spawn/branch-integration.js +5 -2
- package/dist/spawn/branch-integration.js.map +1 -1
- package/dist/store/attachment-repair.d.ts.map +1 -1
- package/dist/store/attachment-repair.js +5 -4
- package/dist/store/attachment-repair.js.map +1 -1
- package/dist/store/attachment-store.d.ts +6 -0
- package/dist/store/attachment-store.d.ts.map +1 -1
- package/dist/store/attachment-store.js +19 -2
- package/dist/store/attachment-store.js.map +1 -1
- package/dist/store/blob-ops.d.ts +1 -1
- package/dist/store/blob-ops.d.ts.map +1 -1
- package/dist/store/blob-ops.js +7 -3
- package/dist/store/blob-ops.js.map +1 -1
- package/dist/store/conduit-doc-history.d.ts +15 -1
- package/dist/store/conduit-doc-history.d.ts.map +1 -1
- package/dist/store/conduit-doc-history.js +16 -10
- package/dist/store/conduit-doc-history.js.map +1 -1
- package/dist/store/db-helpers.d.ts +29 -0
- package/dist/store/db-helpers.d.ts.map +1 -1
- package/dist/store/db-helpers.js +89 -1
- package/dist/store/db-helpers.js.map +1 -1
- package/dist/store/decision-adr-links.d.ts.map +1 -1
- package/dist/store/decision-adr-links.js +5 -2
- package/dist/store/decision-adr-links.js.map +1 -1
- package/dist/store/git-checkpoint.d.ts +11 -1
- package/dist/store/git-checkpoint.d.ts.map +1 -1
- package/dist/store/git-checkpoint.js +14 -3
- package/dist/store/git-checkpoint.js.map +1 -1
- package/dist/store/llmtxt-blob-adapter.d.ts.map +1 -1
- package/dist/store/llmtxt-blob-adapter.js +4 -1
- package/dist/store/llmtxt-blob-adapter.js.map +1 -1
- package/dist/store/schema/attachments.d.ts +7 -5
- package/dist/store/schema/attachments.d.ts.map +1 -1
- package/dist/store/schema/attachments.js +5 -2
- package/dist/store/schema/attachments.js.map +1 -1
- package/dist/store/session-store.d.ts.map +1 -1
- package/dist/store/session-store.js +6 -0
- package/dist/store/session-store.js.map +1 -1
- package/dist/store/sqlite-backup.d.ts +6 -1
- package/dist/store/sqlite-backup.d.ts.map +1 -1
- package/dist/store/sqlite-backup.js +9 -5
- package/dist/store/sqlite-backup.js.map +1 -1
- package/dist/store/sqlite-data-accessor.d.ts.map +1 -1
- package/dist/store/sqlite-data-accessor.js +63 -36
- package/dist/store/sqlite-data-accessor.js.map +1 -1
- package/dist/system/backup.d.ts +29 -0
- package/dist/system/backup.d.ts.map +1 -1
- package/dist/system/backup.js +240 -37
- package/dist/system/backup.js.map +1 -1
- package/dist/system/dependencies.d.ts +22 -0
- package/dist/system/dependencies.d.ts.map +1 -1
- package/dist/system/dependencies.js +49 -2
- package/dist/system/dependencies.js.map +1 -1
- package/dist/system/health.d.ts.map +1 -1
- package/dist/system/health.js +23 -1
- package/dist/system/health.js.map +1 -1
- package/dist/task-work/claims.d.ts.map +1 -1
- package/dist/task-work/claims.js +14 -0
- package/dist/task-work/claims.js.map +1 -1
- package/dist/task-work/index.d.ts.map +1 -1
- package/dist/task-work/index.js +22 -0
- package/dist/task-work/index.js.map +1 -1
- package/dist/tasks/ac-coverage-gate.d.ts +27 -0
- package/dist/tasks/ac-coverage-gate.d.ts.map +1 -1
- package/dist/tasks/ac-coverage-gate.js +63 -28
- package/dist/tasks/ac-coverage-gate.js.map +1 -1
- package/dist/tasks/affected-packages.d.ts +26 -30
- package/dist/tasks/affected-packages.d.ts.map +1 -1
- package/dist/tasks/affected-packages.js +27 -50
- package/dist/tasks/affected-packages.js.map +1 -1
- package/dist/tasks/affected-scope.d.ts +13 -3
- package/dist/tasks/affected-scope.d.ts.map +1 -1
- package/dist/tasks/affected-scope.js +29 -11
- package/dist/tasks/affected-scope.js.map +1 -1
- package/dist/tasks/change-set.d.ts.map +1 -1
- package/dist/tasks/change-set.js +39 -20
- package/dist/tasks/change-set.js.map +1 -1
- package/dist/tasks/command-gate-cmd.d.ts +33 -0
- package/dist/tasks/command-gate-cmd.d.ts.map +1 -0
- package/dist/tasks/command-gate-cmd.js +45 -0
- package/dist/tasks/command-gate-cmd.js.map +1 -0
- package/dist/tasks/complete-ci.d.ts +9 -0
- package/dist/tasks/complete-ci.d.ts.map +1 -1
- package/dist/tasks/complete-ci.js +21 -4
- package/dist/tasks/complete-ci.js.map +1 -1
- package/dist/tasks/complete.d.ts.map +1 -1
- package/dist/tasks/complete.js +14 -0
- package/dist/tasks/complete.js.map +1 -1
- package/dist/tasks/component-pr.d.ts +37 -0
- package/dist/tasks/component-pr.d.ts.map +1 -1
- package/dist/tasks/component-pr.js +106 -14
- package/dist/tasks/component-pr.js.map +1 -1
- package/dist/tasks/done-plan.d.ts +14 -1
- package/dist/tasks/done-plan.d.ts.map +1 -1
- package/dist/tasks/done-plan.js +125 -15
- package/dist/tasks/done-plan.js.map +1 -1
- package/dist/tasks/done-record.d.ts.map +1 -1
- package/dist/tasks/done-record.js +4 -0
- package/dist/tasks/done-record.js.map +1 -1
- package/dist/tasks/engine-converters.d.ts.map +1 -1
- package/dist/tasks/engine-converters.js +2 -0
- package/dist/tasks/engine-converters.js.map +1 -1
- package/dist/tasks/evidence-tree.d.ts +28 -1
- package/dist/tasks/evidence-tree.d.ts.map +1 -1
- package/dist/tasks/evidence-tree.js +66 -2
- package/dist/tasks/evidence-tree.js.map +1 -1
- package/dist/tasks/evidence.d.ts +39 -27
- package/dist/tasks/evidence.d.ts.map +1 -1
- package/dist/tasks/evidence.js +382 -188
- package/dist/tasks/evidence.js.map +1 -1
- package/dist/tasks/gate-notes.d.ts +17 -0
- package/dist/tasks/gate-notes.d.ts.map +1 -1
- package/dist/tasks/gate-notes.js.map +1 -1
- package/dist/tasks/gate-preview.d.ts +7 -1
- package/dist/tasks/gate-preview.d.ts.map +1 -1
- package/dist/tasks/gate-preview.js +30 -4
- package/dist/tasks/gate-preview.js.map +1 -1
- package/dist/tasks/gate-runner.d.ts +42 -0
- package/dist/tasks/gate-runner.d.ts.map +1 -1
- package/dist/tasks/gate-runner.js +234 -94
- package/dist/tasks/gate-runner.js.map +1 -1
- package/dist/tasks/manifest-scope.d.ts +115 -0
- package/dist/tasks/manifest-scope.d.ts.map +1 -0
- package/dist/tasks/manifest-scope.js +352 -0
- package/dist/tasks/manifest-scope.js.map +1 -0
- package/dist/tasks/merge-close.d.ts +376 -0
- package/dist/tasks/merge-close.d.ts.map +1 -0
- package/dist/tasks/merge-close.js +1497 -0
- package/dist/tasks/merge-close.js.map +1 -0
- package/dist/tasks/qa-run-binding.d.ts +5 -0
- package/dist/tasks/qa-run-binding.d.ts.map +1 -1
- package/dist/tasks/qa-run-binding.js +6 -1
- package/dist/tasks/qa-run-binding.js.map +1 -1
- package/dist/tasks/req.d.ts.map +1 -1
- package/dist/tasks/req.js +29 -1
- package/dist/tasks/req.js.map +1 -1
- package/dist/tasks/review-verdict.d.ts +159 -0
- package/dist/tasks/review-verdict.d.ts.map +1 -0
- package/dist/tasks/review-verdict.js +442 -0
- package/dist/tasks/review-verdict.js.map +1 -0
- package/dist/tasks/task-reparent.d.ts.map +1 -1
- package/dist/tasks/task-reparent.js +22 -3
- package/dist/tasks/task-reparent.js.map +1 -1
- package/dist/tasks/test-report-counts.d.ts +274 -0
- package/dist/tasks/test-report-counts.d.ts.map +1 -0
- package/dist/tasks/test-report-counts.js +746 -0
- package/dist/tasks/test-report-counts.js.map +1 -0
- package/dist/tasks/test-run-binding.d.ts +20 -45
- package/dist/tasks/test-run-binding.d.ts.map +1 -1
- package/dist/tasks/test-run-binding.js +34 -119
- package/dist/tasks/test-run-binding.js.map +1 -1
- package/dist/tasks/update.d.ts.map +1 -1
- package/dist/tasks/update.js +42 -0
- package/dist/tasks/update.js.map +1 -1
- package/dist/tasks/verification-policy.d.ts +12 -0
- package/dist/tasks/verification-policy.d.ts.map +1 -1
- package/dist/tasks/verification-policy.js +13 -0
- package/dist/tasks/verification-policy.js.map +1 -1
- package/dist/tasks/workspace-resolution.d.ts +225 -0
- package/dist/tasks/workspace-resolution.d.ts.map +1 -0
- package/dist/tasks/workspace-resolution.js +497 -0
- package/dist/tasks/workspace-resolution.js.map +1 -0
- package/dist/validation/doctor/checks.d.ts +20 -0
- package/dist/validation/doctor/checks.d.ts.map +1 -1
- package/dist/validation/doctor/checks.js +112 -0
- package/dist/validation/doctor/checks.js.map +1 -1
- package/dist/validation/engine-ops.d.ts.map +1 -1
- package/dist/validation/engine-ops.js +37 -3
- package/dist/validation/engine-ops.js.map +1 -1
- package/dist/validation/validate-ops.d.ts +4 -0
- package/dist/validation/validate-ops.d.ts.map +1 -1
- package/dist/validation/validate-ops.js +79 -2
- package/dist/validation/validate-ops.js.map +1 -1
- package/dist/worktree/list.d.ts +4 -21
- package/dist/worktree/list.d.ts.map +1 -1
- package/dist/worktree/list.js +14 -44
- package/dist/worktree/list.js.map +1 -1
- package/dist/worktree/merged-cleanup.d.ts +63 -0
- package/dist/worktree/merged-cleanup.d.ts.map +1 -0
- package/dist/worktree/merged-cleanup.js +571 -0
- package/dist/worktree/merged-cleanup.js.map +1 -0
- package/dist/worktree/prune.d.ts +64 -2
- package/dist/worktree/prune.d.ts.map +1 -1
- package/dist/worktree/prune.js +151 -6
- package/dist/worktree/prune.js.map +1 -1
- package/dist/worktree/sentinel-index.d.ts +14 -0
- package/dist/worktree/sentinel-index.d.ts.map +1 -1
- package/dist/worktree/sentinel-index.js +17 -0
- package/dist/worktree/sentinel-index.js.map +1 -1
- package/dist/worktree/worktree-adopt.d.ts +1 -13
- package/dist/worktree/worktree-adopt.d.ts.map +1 -1
- package/dist/worktree/worktree-adopt.js +2 -17
- package/dist/worktree/worktree-adopt.js.map +1 -1
- package/package.json +12 -12
- package/schemas/project-context.schema.json +33 -0
- package/templates/CLEO-INJECTION.md +6 -16
- package/templates/CLEO-REFERENCE.md +27 -4
- package/templates/git-hooks/legacy-hashes.json +2 -1
- package/templates/git-hooks/pre-commit +43 -11
- package/templates/workflows/release-prepare.yml.tmpl +9 -88
|
@@ -114,6 +114,19 @@ export async function buildDocsFetchResult(opts) {
|
|
|
114
114
|
// stale base is merged/conflicted instead of silently overwriting a
|
|
115
115
|
// concurrent edit. Absent for docs outside the conduit family.
|
|
116
116
|
const headVersionUid = await readDocHeadVersionUid(projectRoot, doc.slug);
|
|
117
|
+
// T14110: the supersession chain, so a replaced doc points at the current one.
|
|
118
|
+
let lineage = doc.slug ? await readDocLineageSafe(projectRoot, doc.slug) : null;
|
|
119
|
+
if (lineage && linkedDecisions && linkedDecisions.length > 0) {
|
|
120
|
+
try {
|
|
121
|
+
const { supersededDecisionsOf } = await import('./lineage.js');
|
|
122
|
+
const supersedesDecisions = await supersededDecisionsOf(projectRoot, linkedDecisions);
|
|
123
|
+
if (supersedesDecisions.length > 0)
|
|
124
|
+
lineage = { ...lineage, supersedesDecisions };
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
// BRAIN unavailable — the lineage stands without decision supersession.
|
|
128
|
+
}
|
|
129
|
+
}
|
|
117
130
|
return {
|
|
118
131
|
metadata: {
|
|
119
132
|
id: doc.id,
|
|
@@ -141,8 +154,22 @@ export async function buildDocsFetchResult(opts) {
|
|
|
141
154
|
: {}),
|
|
142
155
|
...(headConflict !== undefined ? { headConflict } : {}),
|
|
143
156
|
...(linkedDecisions !== undefined && linkedDecisions.length > 0 ? { linkedDecisions } : {}),
|
|
157
|
+
...(lineage ? { lineage } : {}),
|
|
144
158
|
};
|
|
145
159
|
}
|
|
160
|
+
/** {@link readDocLineage}, or null when the store cannot be read (fetch never fails on it). */
|
|
161
|
+
async function readDocLineageSafe(projectRoot, slug) {
|
|
162
|
+
try {
|
|
163
|
+
const { dbExists } = await import('../store/sqlite.js');
|
|
164
|
+
if (!dbExists(projectRoot))
|
|
165
|
+
return null;
|
|
166
|
+
const { readDocLineage } = await import('./lineage.js');
|
|
167
|
+
return await readDocLineage(projectRoot, slug);
|
|
168
|
+
}
|
|
169
|
+
catch {
|
|
170
|
+
return null;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
146
173
|
/**
|
|
147
174
|
* Resolve the conduit head version uid for a slug (T13674) — the version the
|
|
148
175
|
* fetched body was projected from. Returns undefined for slug-less docs,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-result.js","sourceRoot":"","sources":["../../src/docs/fetch-result.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"fetch-result.js","sourceRoot":"","sources":["../../src/docs/fetch-result.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,6 +48,8 @@ export interface ScanOptions {
|
|
|
48
48
|
* the source-dir rules table for the given `relPath`.
|
|
49
49
|
*/
|
|
50
50
|
readonly classify?: (relPath: string) => DocImportType;
|
|
51
|
+
/** File extensions to collect, lowercase with the dot. Default: `['.md']`. */
|
|
52
|
+
readonly extensions?: readonly string[];
|
|
51
53
|
}
|
|
52
54
|
/**
|
|
53
55
|
* Default directory names skipped by the scanner.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../../src/docs/import/scanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAEjE,yDAAyD;AACzD,MAAM,WAAW,WAAW;IAC1B,qDAAqD;IACrD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,qEAAqE;IACrE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,8CAA8C;IAC9C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,6DAA6D;IAC7D,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,yCAAyC;AACzC,MAAM,WAAW,WAAW;IAC1B,oDAAoD;IACpD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3C;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../../src/docs/import/scanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAEjE,yDAAyD;AACzD,MAAM,WAAW,WAAW;IAC1B,qDAAqD;IACrD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,qEAAqE;IACrE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,8CAA8C;IAC9C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,6DAA6D;IAC7D,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,yCAAyC;AACzC,MAAM,WAAW,WAAW;IAC1B,oDAAoD;IACpD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3C;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,aAAa,CAAC;IACvD,8EAA8E;IAC9E,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAOnD,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAUhE;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CAOhE,CAAC;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,CAAC,OAAO,EAAE,MAAM,KAAK,aAAa,CA2BpC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAsDhF"}
|
|
@@ -145,6 +145,7 @@ export function makeClassifierForScanRoot(scanRoot, projectRoot) {
|
|
|
145
145
|
export async function scanDirectory(options) {
|
|
146
146
|
const excludeDirs = options.excludeDirs ?? DEFAULT_EXCLUDE_DIRS;
|
|
147
147
|
const classify = options.classify ?? classifyByRelPath;
|
|
148
|
+
const extensions = options.extensions ?? ['.md'];
|
|
148
149
|
const results = [];
|
|
149
150
|
async function walk(dir) {
|
|
150
151
|
let entries;
|
|
@@ -165,7 +166,8 @@ export async function scanDirectory(options) {
|
|
|
165
166
|
// Treat symlinks-to-files conservatively: only follow regular files we can stat.
|
|
166
167
|
if (!entry.isFile() && !entry.isSymbolicLink())
|
|
167
168
|
continue;
|
|
168
|
-
|
|
169
|
+
const lowerName = entry.name.toLowerCase();
|
|
170
|
+
if (!extensions.some((ext) => lowerName.endsWith(ext)))
|
|
169
171
|
continue;
|
|
170
172
|
if (entry.isSymbolicLink()) {
|
|
171
173
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../../src/docs/import/scanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../../src/docs/import/scanner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A doc's supersession chain and the work it serves (T14110).
|
|
3
|
+
*
|
|
4
|
+
* Everything is read from what the docs store already records — the
|
|
5
|
+
* `supersedes` / `superseded_by` pointers that `docs supersede` writes, the
|
|
6
|
+
* task refs that own the doc, and `related_tasks` (task ids its body names) —
|
|
7
|
+
* so readers (`docs fetch`, the session briefing) can point from a replaced
|
|
8
|
+
* doc to the one to read instead, and never surface a superseded doc as
|
|
9
|
+
* current.
|
|
10
|
+
*
|
|
11
|
+
* @task T14110
|
|
12
|
+
* @epic T14106
|
|
13
|
+
*/
|
|
14
|
+
import type { SearchBrainCompactResult } from '@cleocode/contracts/memory/search.js';
|
|
15
|
+
import type { DocsLineage } from '@cleocode/contracts/operations/docs.js';
|
|
16
|
+
/** Hops followed along `superseded_by` before giving up (a cycle guard). */
|
|
17
|
+
export declare const DOC_LINEAGE_MAX_HOPS = 32;
|
|
18
|
+
/**
|
|
19
|
+
* Read a doc's lineage by slug.
|
|
20
|
+
*
|
|
21
|
+
* @param projectRoot - Project root.
|
|
22
|
+
* @param slug - The doc's slug.
|
|
23
|
+
* @returns The lineage, or null when no doc has the slug.
|
|
24
|
+
*/
|
|
25
|
+
export declare function readDocLineage(projectRoot: string, slug: string): Promise<DocsLineage | null>;
|
|
26
|
+
/**
|
|
27
|
+
* The current docs a task owns: each owner-attached doc resolved along its
|
|
28
|
+
* `superseded_by` chain, so a superseded doc is never named (T14110).
|
|
29
|
+
*
|
|
30
|
+
* @param projectRoot - Project root.
|
|
31
|
+
* @param taskId - The task id (`T####`).
|
|
32
|
+
* @returns Current doc slugs, unique, in attachment order.
|
|
33
|
+
*/
|
|
34
|
+
export declare function currentDocsForTask(projectRoot: string, taskId: string): Promise<string[]>;
|
|
35
|
+
/**
|
|
36
|
+
* The current docs linked to a decision through `decision_adr_links`, each
|
|
37
|
+
* resolved along its `superseded_by` chain (T14110).
|
|
38
|
+
*
|
|
39
|
+
* @param projectRoot - Project root.
|
|
40
|
+
* @param decisionId - The decision id (`D####`).
|
|
41
|
+
* @returns Current doc slugs, unique.
|
|
42
|
+
*/
|
|
43
|
+
export declare function currentDocsForDecision(projectRoot: string, decisionId: string): Promise<string[]>;
|
|
44
|
+
/**
|
|
45
|
+
* Decisions a doc supersedes, derived from what exists (T14110 · D: Q1a):
|
|
46
|
+
* the doc links the decision that replaced an older one, and that decision
|
|
47
|
+
* records `supersedes` in BRAIN. No doc→decision edge is stored.
|
|
48
|
+
*
|
|
49
|
+
* @param projectRoot - Project root.
|
|
50
|
+
* @param linkedDecisions - The doc's live linked `D####` decisions.
|
|
51
|
+
* @returns The decision ids those decisions supersede, unique.
|
|
52
|
+
*/
|
|
53
|
+
export declare function supersededDecisionsOf(projectRoot: string, linkedDecisions: readonly string[]): Promise<string[]>;
|
|
54
|
+
/**
|
|
55
|
+
* Attach current docs to a memory search result (T14110 · D: Q2a): each
|
|
56
|
+
* decision hit gets its linked docs, and every task the query names or a
|
|
57
|
+
* decision hit belongs to gets `taskDocs`. Superseded docs never appear;
|
|
58
|
+
* their current doc does. Best-effort: a store that cannot be read leaves
|
|
59
|
+
* the result as it was.
|
|
60
|
+
*
|
|
61
|
+
* @param projectRoot - Project root.
|
|
62
|
+
* @param query - The search text (task ids in it are honoured).
|
|
63
|
+
* @param result - The search result, enriched in place.
|
|
64
|
+
*/
|
|
65
|
+
export declare function attachCurrentDocs(projectRoot: string, query: string, result: SearchBrainCompactResult): Promise<void>;
|
|
66
|
+
//# sourceMappingURL=lineage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lineage.d.ts","sourceRoot":"","sources":["../../src/docs/lineage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AACrF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAK1E,4EAA4E;AAC5E,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAevC;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CA+C7B;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAW/F;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CAQnB;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,SAAS,MAAM,EAAE,GACjC,OAAO,CAAC,MAAM,EAAE,CAAC,CASnB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,wBAAwB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAoBf"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A doc's supersession chain and the work it serves (T14110).
|
|
3
|
+
*
|
|
4
|
+
* Everything is read from what the docs store already records — the
|
|
5
|
+
* `supersedes` / `superseded_by` pointers that `docs supersede` writes, the
|
|
6
|
+
* task refs that own the doc, and `related_tasks` (task ids its body names) —
|
|
7
|
+
* so readers (`docs fetch`, the session briefing) can point from a replaced
|
|
8
|
+
* doc to the one to read instead, and never surface a superseded doc as
|
|
9
|
+
* current.
|
|
10
|
+
*
|
|
11
|
+
* @task T14110
|
|
12
|
+
* @epic T14106
|
|
13
|
+
*/
|
|
14
|
+
import { eq } from 'drizzle-orm';
|
|
15
|
+
import { getDb } from '../store/sqlite.js';
|
|
16
|
+
import { attachmentRefs, attachments } from '../store/tasks-schema.js';
|
|
17
|
+
/** Hops followed along `superseded_by` before giving up (a cycle guard). */
|
|
18
|
+
export const DOC_LINEAGE_MAX_HOPS = 32;
|
|
19
|
+
/** Task ids in a JSON-array column, tolerating null and malformed values. */
|
|
20
|
+
function taskIdsOf(raw) {
|
|
21
|
+
if (!raw)
|
|
22
|
+
return [];
|
|
23
|
+
try {
|
|
24
|
+
const parsed = JSON.parse(raw);
|
|
25
|
+
return Array.isArray(parsed)
|
|
26
|
+
? parsed.filter((v) => typeof v === 'string' && /^T\d+$/.test(v))
|
|
27
|
+
: [];
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return [];
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Read a doc's lineage by slug.
|
|
35
|
+
*
|
|
36
|
+
* @param projectRoot - Project root.
|
|
37
|
+
* @param slug - The doc's slug.
|
|
38
|
+
* @returns The lineage, or null when no doc has the slug.
|
|
39
|
+
*/
|
|
40
|
+
export async function readDocLineage(projectRoot, slug) {
|
|
41
|
+
const db = await getDb(projectRoot);
|
|
42
|
+
const row = await db.select().from(attachments).where(eq(attachments.slug, slug)).get();
|
|
43
|
+
if (!row)
|
|
44
|
+
return null;
|
|
45
|
+
const slugOf = async (id) => {
|
|
46
|
+
if (!id)
|
|
47
|
+
return null;
|
|
48
|
+
const hit = await db
|
|
49
|
+
.select({ slug: attachments.slug })
|
|
50
|
+
.from(attachments)
|
|
51
|
+
.where(eq(attachments.id, id))
|
|
52
|
+
.get();
|
|
53
|
+
return hit?.slug ?? null;
|
|
54
|
+
};
|
|
55
|
+
// Walk superseded_by to the doc that is current now.
|
|
56
|
+
let currentSlug = slug;
|
|
57
|
+
let next = row.supersededBy ?? null;
|
|
58
|
+
const seen = new Set([row.id]);
|
|
59
|
+
for (let hop = 0; next && !seen.has(next) && hop < DOC_LINEAGE_MAX_HOPS; hop += 1) {
|
|
60
|
+
seen.add(next);
|
|
61
|
+
const hit = await db
|
|
62
|
+
.select({ slug: attachments.slug, supersededBy: attachments.supersededBy })
|
|
63
|
+
.from(attachments)
|
|
64
|
+
.where(eq(attachments.id, next))
|
|
65
|
+
.get();
|
|
66
|
+
if (!hit)
|
|
67
|
+
break;
|
|
68
|
+
if (hit.slug)
|
|
69
|
+
currentSlug = hit.slug;
|
|
70
|
+
next = hit.supersededBy ?? null;
|
|
71
|
+
}
|
|
72
|
+
const owners = await db
|
|
73
|
+
.select({ ownerType: attachmentRefs.ownerType, ownerId: attachmentRefs.ownerId })
|
|
74
|
+
.from(attachmentRefs)
|
|
75
|
+
.where(eq(attachmentRefs.attachmentId, row.id))
|
|
76
|
+
.all();
|
|
77
|
+
const servesTasks = new Set();
|
|
78
|
+
for (const o of owners)
|
|
79
|
+
if (o.ownerType === 'task' && /^T\d+$/.test(o.ownerId))
|
|
80
|
+
servesTasks.add(o.ownerId);
|
|
81
|
+
for (const t of taskIdsOf(row.relatedTasks ?? null))
|
|
82
|
+
servesTasks.add(t);
|
|
83
|
+
return {
|
|
84
|
+
lifecycleStatus: row.lifecycleStatus,
|
|
85
|
+
supersedes: await slugOf(row.supersedes ?? null),
|
|
86
|
+
supersededBy: await slugOf(row.supersededBy ?? null),
|
|
87
|
+
currentSlug,
|
|
88
|
+
servesTasks: [...servesTasks].sort((a, b) => Number(a.slice(1)) - Number(b.slice(1))),
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* The current docs a task owns: each owner-attached doc resolved along its
|
|
93
|
+
* `superseded_by` chain, so a superseded doc is never named (T14110).
|
|
94
|
+
*
|
|
95
|
+
* @param projectRoot - Project root.
|
|
96
|
+
* @param taskId - The task id (`T####`).
|
|
97
|
+
* @returns Current doc slugs, unique, in attachment order.
|
|
98
|
+
*/
|
|
99
|
+
export async function currentDocsForTask(projectRoot, taskId) {
|
|
100
|
+
const { createAttachmentStore } = await import('../store/attachment-store.js');
|
|
101
|
+
const store = createAttachmentStore();
|
|
102
|
+
const out = [];
|
|
103
|
+
for (const meta of await store.listByOwner('task', taskId, projectRoot)) {
|
|
104
|
+
const slug = (await store.getExtras(meta.id, projectRoot))?.slug;
|
|
105
|
+
if (!slug)
|
|
106
|
+
continue;
|
|
107
|
+
const current = (await readDocLineage(projectRoot, slug))?.currentSlug ?? slug;
|
|
108
|
+
if (!out.includes(current))
|
|
109
|
+
out.push(current);
|
|
110
|
+
}
|
|
111
|
+
return out;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* The current docs linked to a decision through `decision_adr_links`, each
|
|
115
|
+
* resolved along its `superseded_by` chain (T14110).
|
|
116
|
+
*
|
|
117
|
+
* @param projectRoot - Project root.
|
|
118
|
+
* @param decisionId - The decision id (`D####`).
|
|
119
|
+
* @returns Current doc slugs, unique.
|
|
120
|
+
*/
|
|
121
|
+
export async function currentDocsForDecision(projectRoot, decisionId) {
|
|
122
|
+
const { listAdrLinksForDecision } = await import('../store/decision-adr-links.js');
|
|
123
|
+
const out = [];
|
|
124
|
+
for (const link of await listAdrLinksForDecision(projectRoot, decisionId)) {
|
|
125
|
+
const current = (await readDocLineage(projectRoot, link.adrSlug))?.currentSlug ?? link.adrSlug;
|
|
126
|
+
if (!out.includes(current))
|
|
127
|
+
out.push(current);
|
|
128
|
+
}
|
|
129
|
+
return out;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Decisions a doc supersedes, derived from what exists (T14110 · D: Q1a):
|
|
133
|
+
* the doc links the decision that replaced an older one, and that decision
|
|
134
|
+
* records `supersedes` in BRAIN. No doc→decision edge is stored.
|
|
135
|
+
*
|
|
136
|
+
* @param projectRoot - Project root.
|
|
137
|
+
* @param linkedDecisions - The doc's live linked `D####` decisions.
|
|
138
|
+
* @returns The decision ids those decisions supersede, unique.
|
|
139
|
+
*/
|
|
140
|
+
export async function supersededDecisionsOf(projectRoot, linkedDecisions) {
|
|
141
|
+
if (linkedDecisions.length === 0)
|
|
142
|
+
return [];
|
|
143
|
+
const { recallDecision } = await import('../memory/decisions.js');
|
|
144
|
+
const out = new Set();
|
|
145
|
+
for (const id of linkedDecisions) {
|
|
146
|
+
const decision = await recallDecision(projectRoot, id);
|
|
147
|
+
if (decision?.supersedes)
|
|
148
|
+
out.add(decision.supersedes);
|
|
149
|
+
}
|
|
150
|
+
return [...out];
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Attach current docs to a memory search result (T14110 · D: Q2a): each
|
|
154
|
+
* decision hit gets its linked docs, and every task the query names or a
|
|
155
|
+
* decision hit belongs to gets `taskDocs`. Superseded docs never appear;
|
|
156
|
+
* their current doc does. Best-effort: a store that cannot be read leaves
|
|
157
|
+
* the result as it was.
|
|
158
|
+
*
|
|
159
|
+
* @param projectRoot - Project root.
|
|
160
|
+
* @param query - The search text (task ids in it are honoured).
|
|
161
|
+
* @param result - The search result, enriched in place.
|
|
162
|
+
*/
|
|
163
|
+
export async function attachCurrentDocs(projectRoot, query, result) {
|
|
164
|
+
try {
|
|
165
|
+
const tasks = new Set(query.match(/\bT\d{2,}\b/g) ?? []);
|
|
166
|
+
const { recallDecision } = await import('../memory/decisions.js');
|
|
167
|
+
for (const hit of result.results) {
|
|
168
|
+
if (hit.type !== 'decision' || hit.scope === 'global')
|
|
169
|
+
continue;
|
|
170
|
+
const docs = await currentDocsForDecision(projectRoot, hit.id);
|
|
171
|
+
if (docs.length > 0)
|
|
172
|
+
hit.docs = docs;
|
|
173
|
+
const taskId = (await recallDecision(projectRoot, hit.id))?.contextTaskId;
|
|
174
|
+
if (taskId)
|
|
175
|
+
tasks.add(taskId);
|
|
176
|
+
}
|
|
177
|
+
const taskDocs = [];
|
|
178
|
+
for (const taskId of tasks) {
|
|
179
|
+
const docs = await currentDocsForTask(projectRoot, taskId);
|
|
180
|
+
if (docs.length > 0)
|
|
181
|
+
taskDocs.push({ taskId, docs });
|
|
182
|
+
}
|
|
183
|
+
if (taskDocs.length > 0)
|
|
184
|
+
result.taskDocs = taskDocs;
|
|
185
|
+
}
|
|
186
|
+
catch {
|
|
187
|
+
// Docs store unavailable — search results stand on their own.
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=lineage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lineage.js","sourceRoot":"","sources":["../../src/docs/lineage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `cleo docs modernize --apply` and `--rollback` (T14113).
|
|
3
|
+
*
|
|
4
|
+
* Apply executes a {@link DocsModernizePlan}:
|
|
5
|
+
*
|
|
6
|
+
* 0. **Blobs.** Every scanned file's bytes are hash-verified into the blob
|
|
7
|
+
* store before anything else runs; nothing is removed without that.
|
|
8
|
+
* 1. **Bodies.** Each survivor's text gets every `merge-into` row folded in
|
|
9
|
+
* ({@link mergeDocBodies} never drops content) and its relative `.md`
|
|
10
|
+
* links rewritten to `[[slug]]` wikilinks.
|
|
11
|
+
* 2. **Store.** Survivors are stored under their slug (`ingest`); a slug the
|
|
12
|
+
* store already holds is merged into, never replaced (`merge`). A merged
|
|
13
|
+
* or deleted file is recorded where its content went (`fold`) and, when
|
|
14
|
+
* its bytes are not already a doc, stored under its legacy name and
|
|
15
|
+
* superseded by the survivor (`supersede`).
|
|
16
|
+
* 3. **Files.** Survivors are written to their canonical path (`write-file`)
|
|
17
|
+
* and every other scanned path is removed (`remove-file`).
|
|
18
|
+
* 4. **Graph.** Each survivor's body links become `links-to` edges (`link`)
|
|
19
|
+
* and the column-derived edges are rebuilt (always, in `finally`).
|
|
20
|
+
*
|
|
21
|
+
* Write-ahead: every step is appended to `.cleo/modernize/<runId>.ops.jsonl`
|
|
22
|
+
* as `pending` (with the values it will replace) before it acts and as
|
|
23
|
+
* `done` after; replaced bytes are copied under `.cleo/modernize/<runId>/`.
|
|
24
|
+
* {@link rollbackDocsModernize} walks the steps backwards, appends
|
|
25
|
+
* `reversed` per step (so a failed rollback resumes where it stopped), and
|
|
26
|
+
* refuses to overwrite a file edited since the apply.
|
|
27
|
+
*
|
|
28
|
+
* @task T14113
|
|
29
|
+
* @epic T14106
|
|
30
|
+
*/
|
|
31
|
+
import type { DocsModernizePlan, DocsModernizeReceipt, DocsModernizeReceiptOp } from '@cleocode/contracts';
|
|
32
|
+
/** Identity recorded on every store write modernize makes. */
|
|
33
|
+
export declare const MODERNIZE_ACTOR = "cleo docs modernize";
|
|
34
|
+
/** Options for {@link applyDocsModernize}. */
|
|
35
|
+
export interface ApplyDocsModernizeOptions {
|
|
36
|
+
/** The plan to execute (from `planDocsModernize`, possibly edited). */
|
|
37
|
+
readonly plan: DocsModernizePlan;
|
|
38
|
+
/** Project root (store, receipts). */
|
|
39
|
+
readonly projectRoot: string;
|
|
40
|
+
/** Clock override (tests). */
|
|
41
|
+
readonly now?: () => Date;
|
|
42
|
+
/** Apply even when the root is not a clean git checkout (explicit `--allow-dirty`). */
|
|
43
|
+
readonly allowDirty?: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Rewrite relative links to planned docs as `[[slug]]` wikilinks (opt-in,
|
|
46
|
+
* `--wikilinks`). By default links stay plain markdown, re-pointed at the
|
|
47
|
+
* new paths, so they still render on GitHub (T14185).
|
|
48
|
+
*/
|
|
49
|
+
readonly wikilinks?: boolean;
|
|
50
|
+
/**
|
|
51
|
+
* The checkout the command was started from (a CLEO worktree, T14188); the
|
|
52
|
+
* plan root may sit in it. The store, journal and backups stay at
|
|
53
|
+
* `projectRoot`. Default: the project root.
|
|
54
|
+
*/
|
|
55
|
+
readonly checkoutRoot?: string;
|
|
56
|
+
}
|
|
57
|
+
/** Raised when the tree moved since the plan was made. */
|
|
58
|
+
export declare class DocsModernizeStaleError extends Error {
|
|
59
|
+
/** Stable code for the envelope. */
|
|
60
|
+
readonly code = "E_MODERNIZE_STALE";
|
|
61
|
+
}
|
|
62
|
+
/** Raised when `--apply` meets uncommitted changes, or cannot prove there are none. */
|
|
63
|
+
export declare class DocsModernizeDirtyError extends Error {
|
|
64
|
+
/** Stable code for the envelope. */
|
|
65
|
+
readonly code = "E_MODERNIZE_DIRTY";
|
|
66
|
+
}
|
|
67
|
+
/** Raised when bytes cannot be confirmed or backed up before a step changes them. */
|
|
68
|
+
export declare class DocsModernizeBlobError extends Error {
|
|
69
|
+
/** Stable code for the envelope. */
|
|
70
|
+
readonly code = "E_MODERNIZE_BLOB";
|
|
71
|
+
}
|
|
72
|
+
/** Raised when a receipt cannot be found, was already rolled back, or a file changed since. */
|
|
73
|
+
export declare class DocsModernizeReceiptError extends Error {
|
|
74
|
+
/** Stable code for the envelope. */
|
|
75
|
+
readonly code = "E_MODERNIZE_RECEIPT";
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Path of a run's receipt.
|
|
79
|
+
*
|
|
80
|
+
* @param projectRoot - Project root.
|
|
81
|
+
* @param runId - Run id.
|
|
82
|
+
* @returns Absolute receipt path.
|
|
83
|
+
*/
|
|
84
|
+
export declare function modernizeReceiptPath(projectRoot: string, runId: string): string;
|
|
85
|
+
/**
|
|
86
|
+
* Path of a run's write-ahead step journal.
|
|
87
|
+
*
|
|
88
|
+
* @param projectRoot - Project root.
|
|
89
|
+
* @param runId - Run id.
|
|
90
|
+
* @returns Absolute journal path.
|
|
91
|
+
*/
|
|
92
|
+
export declare function journalPath(projectRoot: string, runId: string): string;
|
|
93
|
+
/** Write-ahead journal of one run's steps (`<runId>.ops.jsonl`). */
|
|
94
|
+
export declare class StepJournal {
|
|
95
|
+
private readonly path;
|
|
96
|
+
private readonly ops;
|
|
97
|
+
constructor(path: string);
|
|
98
|
+
/** Append a step as `pending` before it acts; returns its index. */
|
|
99
|
+
begin(op: Partial<DocsModernizeReceiptOp> & Pick<DocsModernizeReceiptOp, 'op'>): number;
|
|
100
|
+
/** Mark a step `done`, with anything learned while acting. */
|
|
101
|
+
done(i: number, patch?: Partial<DocsModernizeReceiptOp>): void;
|
|
102
|
+
/** Every step so far. */
|
|
103
|
+
list(): DocsModernizeReceiptOp[];
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Execute a modernize plan, journaling every step ahead of it.
|
|
107
|
+
*
|
|
108
|
+
* @param options - Plan, project root and clock.
|
|
109
|
+
* @returns The finished receipt.
|
|
110
|
+
* @throws DocsModernizeStaleError when a planned file is missing or changed.
|
|
111
|
+
* @throws DocsModernizeDirtyError when a `tree` run cannot prove a clean checkout.
|
|
112
|
+
* @throws DocsModernizeBlobError when bytes cannot be confirmed or backed up.
|
|
113
|
+
*/
|
|
114
|
+
export declare function applyDocsModernize(options: ApplyDocsModernizeOptions): Promise<DocsModernizeReceipt>;
|
|
115
|
+
/**
|
|
116
|
+
* Read a run's receipt, with its steps taken from the write-ahead journal
|
|
117
|
+
* (which records steps the receipt file may not have caught up with).
|
|
118
|
+
*
|
|
119
|
+
* @param projectRoot - Project root.
|
|
120
|
+
* @param runId - Run id.
|
|
121
|
+
* @param checkoutRoot - The invoking checkout the run's root may sit in (T14188).
|
|
122
|
+
* @returns The receipt.
|
|
123
|
+
* @throws DocsModernizeReceiptError when it does not exist.
|
|
124
|
+
*/
|
|
125
|
+
export declare function readDocsModernizeReceipt(projectRoot: string, runId: string, checkoutRoot?: string): DocsModernizeReceipt;
|
|
126
|
+
/**
|
|
127
|
+
* Reverse an apply run from its journal, newest step first. Each reversed
|
|
128
|
+
* step is journaled, so a rollback that stops part-way resumes on retry.
|
|
129
|
+
*
|
|
130
|
+
* @param projectRoot - Project root.
|
|
131
|
+
* @param runId - Run id from the apply receipt.
|
|
132
|
+
* @param now - Clock override (tests).
|
|
133
|
+
* @param checkoutRoot - The invoking checkout the run's root may sit in (T14188).
|
|
134
|
+
* @returns The receipt, now stamped `rolledBackAt`.
|
|
135
|
+
* @throws DocsModernizeReceiptError when the receipt is missing, already
|
|
136
|
+
* rolled back, or a file was edited after the apply.
|
|
137
|
+
*/
|
|
138
|
+
export declare function rollbackDocsModernize(projectRoot: string, runId: string, now?: () => Date, checkoutRoot?: string): Promise<DocsModernizeReceipt>;
|
|
139
|
+
//# sourceMappingURL=apply.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../src/docs/modernize/apply.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAiBH,OAAO,KAAK,EAGV,iBAAiB,EAEjB,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,qBAAqB,CAAC;AAqB7B,8DAA8D;AAC9D,eAAO,MAAM,eAAe,wBAAwB,CAAC;AAErD,8CAA8C;AAC9C,MAAM,WAAW,yBAAyB;IACxC,uEAAuE;IACvE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,sCAAsC;IACtC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,8BAA8B;IAC9B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,uFAAuF;IACvF,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,0DAA0D;AAC1D,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,oCAAoC;IACpC,QAAQ,CAAC,IAAI,uBAAuB;CACrC;AAED,uFAAuF;AACvF,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,oCAAoC;IACpC,QAAQ,CAAC,IAAI,uBAAuB;CACrC;AAED,qFAAqF;AACrF,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,oCAAoC;IACpC,QAAQ,CAAC,IAAI,sBAAsB;CACpC;AAED,+FAA+F;AAC/F,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,oCAAoC;IACpC,QAAQ,CAAC,IAAI,yBAAyB;CACvC;AAYD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/E;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEtE;AAqID,oEAAoE;AACpE,qBAAa,WAAW;IAGV,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAgC;gBAEvB,IAAI,EAAE,MAAM;IAIzC,oEAAoE;IACpE,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,sBAAsB,CAAC,GAAG,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,GAAG,MAAM;IAkBvF,8DAA8D;IAC9D,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,OAAO,CAAC,sBAAsB,CAAM,GAAG,IAAI;IAQlE,yBAAyB;IACzB,IAAI,IAAI,sBAAsB,EAAE;CAGjC;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,oBAAoB,CAAC,CAuW/B;AAmCD;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,YAAY,GAAE,MAAoB,GACjC,oBAAoB,CAStB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,GAAG,GAAE,MAAM,IAAuB,EAClC,YAAY,GAAE,MAAoB,GACjC,OAAO,CAAC,oBAAoB,CAAC,CAyH/B"}
|