@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
|
@@ -0,0 +1,376 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Merge closes tasks (T14101, owner decision D11209).
|
|
3
|
+
*
|
|
4
|
+
* A merged PR whose required checks were green on its exact head closes the
|
|
5
|
+
* tasks its body names, with no agent step. CI never writes to a task store:
|
|
6
|
+
* the GitHub job only posts a receipt ({@link judgeMergedPr}); the store owner's
|
|
7
|
+
* machine applies it here ({@link sweepMergedClosures}), re-deriving everything
|
|
8
|
+
* from `gh` and recording through the same path as `cleo done --pr`
|
|
9
|
+
* (`recordTaskDone`, then `taskComplete`), so the same validators and audit
|
|
10
|
+
* apply. The sweep runs from the daemon loop, lazily (throttled) from the
|
|
11
|
+
* commands agents already run, and before `cleo release` decides what ships.
|
|
12
|
+
*
|
|
13
|
+
* PR body lines, one per task:
|
|
14
|
+
*
|
|
15
|
+
* - `Closes: T#### AC1,AC2` — binds those criteria and completes the task once
|
|
16
|
+
* the criteria every merged PR bound cover all of its criteria.
|
|
17
|
+
* - `Refs: T#### AC1` — binds those criteria; the task stays open.
|
|
18
|
+
*
|
|
19
|
+
* Every applied line writes one `merge_close` audit row keyed by
|
|
20
|
+
* (PR, merge commit, task), so a rerun records nothing twice.
|
|
21
|
+
*
|
|
22
|
+
* @task T14101
|
|
23
|
+
*/
|
|
24
|
+
import type { GhPrViewPayload, MergeDirective, MergedCleanupResult, MergeReceipt, MergeSweepOptions, MergeSweepReconcile, MergeSweepResult, ReviewVerdict } from '@cleocode/contracts';
|
|
25
|
+
/** The audit action of an applied `Closes:` / `Refs:` line. */
|
|
26
|
+
export declare const MERGE_CLOSE_AUDIT_ACTION = "merge_close";
|
|
27
|
+
/** The audit action of the one rerun of a merge commit's cancelled CI run (never repeated). */
|
|
28
|
+
export declare const MERGE_CLOSE_RERUN_ACTION = "merge_close_rerun";
|
|
29
|
+
/** The audit action of a refusal already reported on the PR (posted once). */
|
|
30
|
+
export declare const MERGE_CLOSE_REFUSED_ACTION = "merge_close_refused";
|
|
31
|
+
/** The lazy sweep runs at most this often per store. */
|
|
32
|
+
export declare const MERGE_SWEEP_INTERVAL_MS: number;
|
|
33
|
+
/** A detached sweep child exits after this long, so a hung `gh` leaves no process behind. */
|
|
34
|
+
export declare const MERGE_SWEEP_CHILD_TIMEOUT_MS: number;
|
|
35
|
+
/**
|
|
36
|
+
* Each sweep re-reads this far behind its high-water mark: GitHub's search
|
|
37
|
+
* index can list a PR some minutes after it merged, and re-reading an applied
|
|
38
|
+
* PR is a no-op (its `merge_close` audit row).
|
|
39
|
+
*/
|
|
40
|
+
export declare const MERGE_SWEEP_OVERLAP_MS: number;
|
|
41
|
+
/**
|
|
42
|
+
* A sweep stops taking new PRs after this long and carries the rest on its
|
|
43
|
+
* waiting list, so it finishes inside a lazy child's {@link MERGE_SWEEP_CHILD_TIMEOUT_MS}.
|
|
44
|
+
*/
|
|
45
|
+
export declare const MERGE_SWEEP_MAX_RUN_MS = 90000;
|
|
46
|
+
/**
|
|
47
|
+
* A sweep lock whose heartbeat is older than this is stale and may be taken:
|
|
48
|
+
* several times the longest a sweep runs ({@link MERGE_SWEEP_CHILD_TIMEOUT_MS}).
|
|
49
|
+
*/
|
|
50
|
+
export declare const MERGE_SWEEP_LOCK_STALE_MS: number;
|
|
51
|
+
/** A waiting PR is first re-judged after this long; each further wait doubles it. */
|
|
52
|
+
export declare const MERGE_WAITING_FIRST_BACKOFF_MS: number;
|
|
53
|
+
/** The longest a waiting PR goes between re-judgements. */
|
|
54
|
+
export declare const MERGE_WAITING_MAX_BACKOFF_MS: number;
|
|
55
|
+
/** A PR still waiting this long after it first waited is refused, with one final comment. */
|
|
56
|
+
export declare const MERGE_WAITING_MAX_AGE_MS: number;
|
|
57
|
+
/** A first sweep (no high-water mark yet) looks back this far. */
|
|
58
|
+
export declare const MERGE_SWEEP_LOOKBACK_MS: number;
|
|
59
|
+
/** The merged PRs one `gh pr list` page returns. */
|
|
60
|
+
export declare const MERGE_SWEEP_PR_LIMIT = 50;
|
|
61
|
+
/**
|
|
62
|
+
* The most `gh pr list` pages one sweep reads. When more PRs merged than that,
|
|
63
|
+
* the unread (older) window is kept as a backlog the next sweep reads first,
|
|
64
|
+
* and the result reports `truncated`.
|
|
65
|
+
*/
|
|
66
|
+
export declare const MERGE_SWEEP_MAX_PAGES = 10;
|
|
67
|
+
/** Open issues with this label become tasks (T14104). */
|
|
68
|
+
export declare const MACOS_REGRESSION_LABEL = "macos-regression";
|
|
69
|
+
/** A merged PR as the sweep reads it from `gh`. */
|
|
70
|
+
export interface MergedPrRecord extends Pick<GhPrViewPayload, 'statusCheckRollup'> {
|
|
71
|
+
/** PR number. */
|
|
72
|
+
number: number;
|
|
73
|
+
/** PR body. */
|
|
74
|
+
body: string;
|
|
75
|
+
/** Merge time (ISO); empty for an open PR, which only a dry run reads. */
|
|
76
|
+
mergedAt: string;
|
|
77
|
+
/** Final head. */
|
|
78
|
+
headRefOid: string | null;
|
|
79
|
+
/** Merge commit. */
|
|
80
|
+
mergeCommitSha: string | null;
|
|
81
|
+
}
|
|
82
|
+
/** The outcome of recording or completing one task. */
|
|
83
|
+
type StepResult = {
|
|
84
|
+
ok: true;
|
|
85
|
+
} | {
|
|
86
|
+
ok: false;
|
|
87
|
+
reason: string;
|
|
88
|
+
};
|
|
89
|
+
/** Everything the sweep reaches outside the store; injectable for tests. */
|
|
90
|
+
export interface MergeCloseDeps {
|
|
91
|
+
/**
|
|
92
|
+
* One page ({@link MERGE_SWEEP_PR_LIMIT}) of the PRs merged in
|
|
93
|
+
* `[since, until]` (`until` unset: up to now), newest first, or null when
|
|
94
|
+
* `gh` failed. A full page means older PRs may remain.
|
|
95
|
+
*/
|
|
96
|
+
listMergedPrs(root: string, since: string, until?: string): Promise<MergedPrRecord[] | null>;
|
|
97
|
+
/** One PR, or null when `gh` failed or it is not merged. */
|
|
98
|
+
viewPr(root: string, prNumber: number): Promise<MergedPrRecord | null>;
|
|
99
|
+
/** Post a PR comment; false when it could not. */
|
|
100
|
+
comment(root: string, prNumber: number, body: string): Promise<boolean>;
|
|
101
|
+
/** The required check names (`release.prRequiredWorkflows` tiers). */
|
|
102
|
+
requiredChecks(storeRoot: string): Promise<string[]>;
|
|
103
|
+
/** Whether `gh` can run at all. */
|
|
104
|
+
ghAvailable(): Promise<boolean>;
|
|
105
|
+
/** Plan (`dryRun`) or record the task's gates from the PR, as `cleo done --pr`. */
|
|
106
|
+
record(storeRoot: string, taskId: string, prNumber: number, acs: string[], dryRun: boolean): Promise<StepResult>;
|
|
107
|
+
/** Complete the task, as `cleo done --pr` does after recording. */
|
|
108
|
+
complete(storeRoot: string, taskId: string, prNumber: number): Promise<StepResult>;
|
|
109
|
+
/** Open issues carrying a label (one `gh` call), or null when `gh` failed. */
|
|
110
|
+
listLabelledIssues(root: string, label: string): Promise<Array<{
|
|
111
|
+
url: string;
|
|
112
|
+
title: string;
|
|
113
|
+
}> | null>;
|
|
114
|
+
/** Close an issue with a comment; false when it could not. */
|
|
115
|
+
closeIssue(root: string, url: string, comment: string): Promise<boolean>;
|
|
116
|
+
/** Flag the docs a merged change left stale on its tasks (T14111), returning the task ids flagged. */
|
|
117
|
+
docsRot?(storeRoot: string, pr: {
|
|
118
|
+
prNumber: number;
|
|
119
|
+
mergeSha: string;
|
|
120
|
+
taskIds: string[];
|
|
121
|
+
}): Promise<string[]>;
|
|
122
|
+
/**
|
|
123
|
+
* Remove what a merged PR's tasks left behind (T14142): canonical worktrees,
|
|
124
|
+
* `task/*` branches, nested repository copies. Runs only when
|
|
125
|
+
* {@link MergeCloseDeps.canCleanup} says so.
|
|
126
|
+
*/
|
|
127
|
+
cleanupMerged?(storeRoot: string, taskIds: string[]): Promise<MergedCleanupResult>;
|
|
128
|
+
/**
|
|
129
|
+
* Whether this sweep may delete (T14142). Off by default: a sweep that
|
|
130
|
+
* deletes on its own proves itself on a few releases first.
|
|
131
|
+
*/
|
|
132
|
+
canCleanup?(): boolean;
|
|
133
|
+
/**
|
|
134
|
+
* Reconcile the newest published release's provenance (T14102).
|
|
135
|
+
*/
|
|
136
|
+
reconcile?(storeRoot: string): Promise<MergeSweepReconcile>;
|
|
137
|
+
/**
|
|
138
|
+
* The independent reviewer verdicts recorded for a task's PR (T14122,
|
|
139
|
+
* `cleo review`). Unset: no verdicts, so nothing closes.
|
|
140
|
+
*/
|
|
141
|
+
reviewVerdicts?(storeRoot: string, taskId: string, prNumber: number): Promise<ReviewVerdict[]>;
|
|
142
|
+
/**
|
|
143
|
+
* The newest run of the required CI workflow on a commit, or null when there
|
|
144
|
+
* is none yet (or `gh` failed).
|
|
145
|
+
*/
|
|
146
|
+
mergeCiRun(root: string, sha: string, workflow: string): Promise<{
|
|
147
|
+
runId: number;
|
|
148
|
+
status: string;
|
|
149
|
+
conclusion: string | null;
|
|
150
|
+
} | null>;
|
|
151
|
+
/** Rerun a CI run; false when it could not. */
|
|
152
|
+
rerunRun(root: string, runId: number): Promise<boolean>;
|
|
153
|
+
/** The clock (ms), for the run cap, backoff and age-out; tests inject it. */
|
|
154
|
+
now?(): number;
|
|
155
|
+
/**
|
|
156
|
+
* Whether this sweep may rerun a cancelled merge-commit CI run. Off by
|
|
157
|
+
* default until T14136: a rerun of an old main push run joins main's live
|
|
158
|
+
* push concurrency group and cancels (or is cancelled by) main's newest run.
|
|
159
|
+
*/
|
|
160
|
+
canRerun(): boolean;
|
|
161
|
+
/** Open PRs (one `gh` call), for the pre-merge verdict check; null when `gh` failed. */
|
|
162
|
+
listOpenPrs(root: string): Promise<MergedPrRecord[] | null>;
|
|
163
|
+
/** Set the `cleo/merge-close` commit status on a head; false when it could not. */
|
|
164
|
+
setStatus(root: string, sha: string, state: 'success' | 'failure', description: string): Promise<boolean>;
|
|
165
|
+
}
|
|
166
|
+
/** The commit status the pre-merge verdict check sets on an open PR's head. */
|
|
167
|
+
export declare const MERGE_CLOSE_STATUS_CONTEXT = "cleo/merge-close";
|
|
168
|
+
/**
|
|
169
|
+
* Why the criteria a line names are not independently verified on the PR's
|
|
170
|
+
* head (T14122), one reason per criterion, from the shared judge
|
|
171
|
+
* (`judgeReviewVerdicts`, the same text `cleo review check` prints): no
|
|
172
|
+
* verdict, an unmet one, one on an older head (a push after review), or one
|
|
173
|
+
* by the task's own author. Empty when every criterion is met.
|
|
174
|
+
*
|
|
175
|
+
* @param verdicts - The task's verdicts on the PR.
|
|
176
|
+
* @param acs - The criteria the line names.
|
|
177
|
+
* @param headSha - The PR's final head.
|
|
178
|
+
* @returns The reasons.
|
|
179
|
+
*/
|
|
180
|
+
export declare function unverifiedCriteria(verdicts: readonly ReviewVerdict[], acs: readonly string[], headSha: string | null): Promise<string[]>;
|
|
181
|
+
/**
|
|
182
|
+
* Parse a PR body's `Closes:` / `Refs:` lines (T14101). A line whose payload
|
|
183
|
+
* does not start with a task id (`Closes: #123`, GitHub's own syntax) is not
|
|
184
|
+
* CLEO's and is ignored; a CLEO line that is malformed, or names a task twice,
|
|
185
|
+
* is an error with the fix.
|
|
186
|
+
*
|
|
187
|
+
* @param body - The PR body.
|
|
188
|
+
* @returns The lines, and the errors.
|
|
189
|
+
* @example
|
|
190
|
+
* ```ts
|
|
191
|
+
* parseMergeDirectives('Closes: T14101 AC1,AC2');
|
|
192
|
+
* // { directives: [{ kind: 'closes', taskId: 'T14101', acs: ['AC1', 'AC2'] }], errors: [] }
|
|
193
|
+
* ```
|
|
194
|
+
*/
|
|
195
|
+
export declare function parseMergeDirectives(body: string): {
|
|
196
|
+
directives: MergeDirective[];
|
|
197
|
+
errors: string[];
|
|
198
|
+
};
|
|
199
|
+
/**
|
|
200
|
+
* Judge a merged PR without a task store (T14101): its lines, and whether its
|
|
201
|
+
* required checks were green on its exact head (`statusCheckRollup` is the
|
|
202
|
+
* head's checks). This is the CI job's receipt; the store side judges again.
|
|
203
|
+
*
|
|
204
|
+
* @param pr - The merged PR.
|
|
205
|
+
* @param required - Required check names.
|
|
206
|
+
* @returns The receipt.
|
|
207
|
+
*/
|
|
208
|
+
export declare function judgeMergedPr(pr: MergedPrRecord, required: readonly string[]): Promise<MergeReceipt>;
|
|
209
|
+
/**
|
|
210
|
+
* Take the sweep lock for a store (T14101): an `O_EXCL` lock file held for
|
|
211
|
+
* the whole sweep, its mtime refreshed while the sweep runs. A lock whose
|
|
212
|
+
* heartbeat is older than {@link MERGE_SWEEP_LOCK_STALE_MS} is moved aside by
|
|
213
|
+
* `rename` (only one caller's rename succeeds) and taken. Null when another
|
|
214
|
+
* sweep holds it.
|
|
215
|
+
*
|
|
216
|
+
* @param storeRoot - CLEO store root.
|
|
217
|
+
* @returns The release function, or null.
|
|
218
|
+
*/
|
|
219
|
+
export declare function acquireMergeSweepLock(storeRoot: string, now?: () => number): (() => void) | null;
|
|
220
|
+
/**
|
|
221
|
+
* Whether the lock path holds `token` (T14139).
|
|
222
|
+
*
|
|
223
|
+
* @param lock - The lock path.
|
|
224
|
+
* @param token - The token expected.
|
|
225
|
+
* @returns True when the lock file reads exactly `token`.
|
|
226
|
+
* @internal Exported for tests.
|
|
227
|
+
*/
|
|
228
|
+
export declare function lockHolds(lock: string, token: string): boolean;
|
|
229
|
+
/**
|
|
230
|
+
* Move aside the stale lock whose token was `judged`, and only that one: rename
|
|
231
|
+
* it to a unique name and read the token there. Another stealer may have
|
|
232
|
+
* replaced the stale lock with a fresh one between the read and the rename; if
|
|
233
|
+
* the renamed file is not the judged one, put it back (`link` refuses to
|
|
234
|
+
* clobber a lock created meanwhile) and give up.
|
|
235
|
+
*
|
|
236
|
+
* @param lock - The lock path.
|
|
237
|
+
* @param judged - The token read from the lock judged stale.
|
|
238
|
+
* @returns True when the judged lock was removed.
|
|
239
|
+
* @internal Exported for tests.
|
|
240
|
+
*/
|
|
241
|
+
export declare function stealStaleLock(lock: string, judged: string): boolean;
|
|
242
|
+
/**
|
|
243
|
+
* Claim the next sweep for a store, atomically (T14101): true for exactly one
|
|
244
|
+
* caller per {@link MERGE_SWEEP_INTERVAL_MS}. A claim older than the interval
|
|
245
|
+
* is moved aside by `rename` (only one caller's rename succeeds), and the new
|
|
246
|
+
* claim is created with `O_EXCL`, so two concurrent commands never start two
|
|
247
|
+
* sweeps.
|
|
248
|
+
*
|
|
249
|
+
* @param storeRoot - CLEO store root.
|
|
250
|
+
* @param now - Current time (ms).
|
|
251
|
+
* @returns True when this caller owns the sweep.
|
|
252
|
+
*/
|
|
253
|
+
export declare function claimMergeSweep(storeRoot: string, now?: number): boolean;
|
|
254
|
+
/**
|
|
255
|
+
* Whether a read command may start a background sweep (T14101): never in CI,
|
|
256
|
+
* under vitest, when turned off (`CLEO_MERGE_SWEEP=off`), inside a process git
|
|
257
|
+
* started (T14189), or without `gh` credentials (a token in the environment,
|
|
258
|
+
* or `gh`'s hosts file).
|
|
259
|
+
*
|
|
260
|
+
* Git exports `GIT_EXEC_PATH` to every program it runs (hooks, aliases,
|
|
261
|
+
* `rebase --exec`), `GIT_INDEX_FILE` to commit hooks and `GIT_DIR` to hooks in
|
|
262
|
+
* a linked worktree (observed on git 2.5x: pre-commit, commit-msg and
|
|
263
|
+
* post-commit). A hook's `cleo show` has no reason to start a sweep that
|
|
264
|
+
* deletes branches and worktrees after the commit returns.
|
|
265
|
+
*
|
|
266
|
+
* @param env - The environment.
|
|
267
|
+
* @param home - The home directory (for `gh`'s default config).
|
|
268
|
+
* @returns True when a detached sweep may be spawned.
|
|
269
|
+
*/
|
|
270
|
+
export declare function mergeSweepSpawnAllowed(env: NodeJS.ProcessEnv, home?: string): boolean;
|
|
271
|
+
/**
|
|
272
|
+
* The environment of the detached merge sweep (T14189). A read command run
|
|
273
|
+
* from a git hook (commit-msg runs `cleo show`) carries the hook's `GIT_DIR`
|
|
274
|
+
* and `GIT_INDEX_FILE`; the sweep outlives the hook, so it must act on each
|
|
275
|
+
* project's own repository, never the hook's: every ambient repo variable is
|
|
276
|
+
* stripped, and the sweep marks itself a child that never spawns another.
|
|
277
|
+
*
|
|
278
|
+
* @param env - The parent's environment.
|
|
279
|
+
* @returns The child's environment.
|
|
280
|
+
* @example
|
|
281
|
+
* ```ts
|
|
282
|
+
* spawn(cli, ['done', '--from-merge', 'all'], { env: mergeSweepChildEnv(process.env) });
|
|
283
|
+
* ```
|
|
284
|
+
* @task T14189
|
|
285
|
+
*/
|
|
286
|
+
export declare function mergeSweepChildEnv(env: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
|
|
287
|
+
/**
|
|
288
|
+
* Why the lazy merge sweep must not start for this invocation, or null
|
|
289
|
+
* (T14168). A CLI built inside a CLEO worktree carries unreleased code, so it
|
|
290
|
+
* never sweeps the real store; a `release` command run from a CLEO worktree
|
|
291
|
+
* never sweeps the project checkout it was not started in (T14160).
|
|
292
|
+
*
|
|
293
|
+
* @param command - The CLI command being run.
|
|
294
|
+
* @param cwd - Where the command was started (the CLI passes its own cwd).
|
|
295
|
+
* @returns The reason the sweep is skipped, or null when it may start.
|
|
296
|
+
*
|
|
297
|
+
* @example
|
|
298
|
+
* ```ts
|
|
299
|
+
* if (await lazySweepBlockedReason('release', invocationCwd)) return; // no background sweep
|
|
300
|
+
* ```
|
|
301
|
+
*
|
|
302
|
+
* @task T14168
|
|
303
|
+
*/
|
|
304
|
+
export declare function lazySweepBlockedReason(command: string, cwd: string): Promise<string | null>;
|
|
305
|
+
/**
|
|
306
|
+
* Close the tasks merged PRs name (T14101): for each merged PR, judge its
|
|
307
|
+
* receipt, then apply each `Closes:` / `Refs:` line to its task. Never throws
|
|
308
|
+
* on `gh` or network trouble: it reports `swept: false` instead. Under
|
|
309
|
+
* `dryRun` it records, completes and comments nothing, and leaves the throttle
|
|
310
|
+
* alone.
|
|
311
|
+
*
|
|
312
|
+
* @param storeRoot - CLEO store root.
|
|
313
|
+
* @param opts - Dry run, force, since, PR numbers.
|
|
314
|
+
* @param deps - Outside access; defaults to `gh` and the done/complete path.
|
|
315
|
+
* @returns What was closed, bound and refused.
|
|
316
|
+
* @example
|
|
317
|
+
* ```ts
|
|
318
|
+
* const r = await sweepMergedClosures(root, { force: true, dryRun: true });
|
|
319
|
+
* console.log(r.closed);
|
|
320
|
+
* ```
|
|
321
|
+
*/
|
|
322
|
+
export declare function sweepMergedClosures(storeRoot: string, opts?: MergeSweepOptions, deps?: MergeCloseDeps): Promise<MergeSweepResult>;
|
|
323
|
+
/**
|
|
324
|
+
* Whether a directory is a CLEO project that takes merged CI as evidence
|
|
325
|
+
* (T14101): a main git checkout (never a linked worktree, never a moved or
|
|
326
|
+
* missing path) with `.cleo/project-context.json` setting
|
|
327
|
+
* `evidence.ciSatisfies`. The daemon sweeps only these, never `$HOME`.
|
|
328
|
+
*
|
|
329
|
+
* @param root - Candidate project root.
|
|
330
|
+
* @returns True when the merge sweep applies.
|
|
331
|
+
*/
|
|
332
|
+
export declare function mergeSweepApplies(root: string): boolean;
|
|
333
|
+
/**
|
|
334
|
+
* The daemon's merge sweep (T14101): every registered project on this
|
|
335
|
+
* machine that {@link mergeSweepApplies} to, behind the same gate the lazy
|
|
336
|
+
* path uses ({@link mergeSweepSpawnAllowed}: never in CI, under vitest, when
|
|
337
|
+
* off, or without gh credentials). Each project's sweep throttles and locks
|
|
338
|
+
* itself. Never throws.
|
|
339
|
+
*
|
|
340
|
+
* @param opts - Environment, project lister and sweep, for tests.
|
|
341
|
+
* @returns The roots swept.
|
|
342
|
+
*/
|
|
343
|
+
export declare function sweepRegisteredProjects(opts?: {
|
|
344
|
+
env?: NodeJS.ProcessEnv;
|
|
345
|
+
listRoots?: () => Promise<string[]>;
|
|
346
|
+
sweep?: (root: string) => Promise<unknown>;
|
|
347
|
+
}): Promise<string[]>;
|
|
348
|
+
/**
|
|
349
|
+
* The PR comment for a receipt (T14101): what the store owner's sweep will
|
|
350
|
+
* close or bind, or why the PR closes nothing, plus the receipt as JSON.
|
|
351
|
+
*
|
|
352
|
+
* @param receipt - The receipt.
|
|
353
|
+
* @returns Markdown for `gh pr comment`.
|
|
354
|
+
*/
|
|
355
|
+
export declare function formatMergeReceipt(receipt: MergeReceipt): string;
|
|
356
|
+
/**
|
|
357
|
+
* Judge one merged PR without a task store and optionally comment the
|
|
358
|
+
* receipt on it (T14101): the GitHub job's half. Reads only `gh` and the
|
|
359
|
+
* tracked `.cleo/project-context.json` (for the required checks).
|
|
360
|
+
*
|
|
361
|
+
* @param storeRoot - Checkout root (the project context is read from it).
|
|
362
|
+
* @param prNumber - The merged PR.
|
|
363
|
+
* @param opts - `comment: true` posts the receipt on the PR.
|
|
364
|
+
* @param deps - Outside access.
|
|
365
|
+
* @returns The receipt, or null when `gh` could not read a merged PR.
|
|
366
|
+
*/
|
|
367
|
+
export declare function mergeReceiptFor(storeRoot: string, prNumber: number, opts?: {
|
|
368
|
+
comment?: boolean;
|
|
369
|
+
}, deps?: MergeCloseDeps): Promise<{
|
|
370
|
+
receipt: MergeReceipt;
|
|
371
|
+
commented: boolean;
|
|
372
|
+
} | null>;
|
|
373
|
+
/** The default {@link MergeCloseDeps}: `gh`, and the `cleo done --pr` record and complete path. */
|
|
374
|
+
export declare const defaultMergeCloseDeps: MergeCloseDeps;
|
|
375
|
+
export {};
|
|
376
|
+
//# sourceMappingURL=merge-close.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-close.d.ts","sourceRoot":"","sources":["../../src/tasks/merge-close.ts"],"names":[],"mappings":"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"}
|