dorfl 0.0.0 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/advance-ci-template.d.ts +73 -0
- package/dist/advance-ci-template.d.ts.map +1 -0
- package/dist/advance-ci-template.js +104 -0
- package/dist/advance-ci-template.js.map +1 -0
- package/dist/advance-classify.d.ts +132 -0
- package/dist/advance-classify.d.ts.map +1 -0
- package/dist/advance-classify.js +120 -0
- package/dist/advance-classify.js.map +1 -0
- package/dist/advance-drivers.d.ts +182 -0
- package/dist/advance-drivers.d.ts.map +1 -0
- package/dist/advance-drivers.js +231 -0
- package/dist/advance-drivers.js.map +1 -0
- package/dist/advance-isolated.d.ts +156 -0
- package/dist/advance-isolated.d.ts.map +1 -0
- package/dist/advance-isolated.js +256 -0
- package/dist/advance-isolated.js.map +1 -0
- package/dist/advance-lifecycle-template.d.ts +107 -0
- package/dist/advance-lifecycle-template.d.ts.map +1 -0
- package/dist/advance-lifecycle-template.js +668 -0
- package/dist/advance-lifecycle-template.js.map +1 -0
- package/dist/advance-loop-driver.d.ts +325 -0
- package/dist/advance-loop-driver.d.ts.map +1 -0
- package/dist/advance-loop-driver.js +437 -0
- package/dist/advance-loop-driver.js.map +1 -0
- package/dist/advance-treeless-publish.d.ts +108 -0
- package/dist/advance-treeless-publish.d.ts.map +1 -0
- package/dist/advance-treeless-publish.js +71 -0
- package/dist/advance-treeless-publish.js.map +1 -0
- package/dist/advance.d.ts +340 -0
- package/dist/advance.d.ts.map +1 -0
- package/dist/advance.js +1122 -0
- package/dist/advance.js.map +1 -0
- package/dist/advancing-lock.d.ts +294 -0
- package/dist/advancing-lock.d.ts.map +1 -0
- package/dist/advancing-lock.js +594 -0
- package/dist/advancing-lock.js.map +1 -0
- package/dist/agent-launch.d.ts +79 -0
- package/dist/agent-launch.d.ts.map +1 -0
- package/dist/agent-launch.js +61 -0
- package/dist/agent-launch.js.map +1 -0
- package/dist/agent-stop.d.ts +149 -0
- package/dist/agent-stop.d.ts.map +1 -0
- package/dist/agent-stop.js +307 -0
- package/dist/agent-stop.js.map +1 -0
- package/dist/apply-decide.d.ts +127 -0
- package/dist/apply-decide.d.ts.map +1 -0
- package/dist/apply-decide.js +176 -0
- package/dist/apply-decide.js.map +1 -0
- package/dist/apply-merge-action.d.ts +206 -0
- package/dist/apply-merge-action.d.ts.map +1 -0
- package/dist/apply-merge-action.js +307 -0
- package/dist/apply-merge-action.js.map +1 -0
- package/dist/apply-persist.d.ts +174 -0
- package/dist/apply-persist.d.ts.map +1 -0
- package/dist/apply-persist.js +359 -0
- package/dist/apply-persist.js.map +1 -0
- package/dist/arbiter.d.ts +120 -0
- package/dist/arbiter.d.ts.map +1 -0
- package/dist/arbiter.js +255 -0
- package/dist/arbiter.js.map +1 -0
- package/dist/brand.d.ts +70 -0
- package/dist/brand.d.ts.map +1 -0
- package/dist/brand.js +84 -0
- package/dist/brand.js.map +1 -0
- package/dist/buildable-body.d.ts +132 -0
- package/dist/buildable-body.d.ts.map +1 -0
- package/dist/buildable-body.js +131 -0
- package/dist/buildable-body.js.map +1 -0
- package/dist/categorise.d.ts +66 -0
- package/dist/categorise.d.ts.map +1 -0
- package/dist/categorise.js +106 -0
- package/dist/categorise.js.map +1 -0
- package/dist/claim-cas.d.ts +117 -0
- package/dist/claim-cas.d.ts.map +1 -0
- package/dist/claim-cas.js +312 -0
- package/dist/claim-cas.js.map +1 -0
- package/dist/cli-spinner.d.ts +112 -0
- package/dist/cli-spinner.d.ts.map +1 -0
- package/dist/cli-spinner.js +157 -0
- package/dist/cli-spinner.js.map +1 -0
- package/dist/cli.d.ts +11 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +3094 -0
- package/dist/cli.js.map +1 -0
- package/dist/close-job-template.d.ts +70 -0
- package/dist/close-job-template.d.ts.map +1 -0
- package/dist/close-job-template.js +180 -0
- package/dist/close-job-template.js.map +1 -0
- package/dist/close-job.d.ts +95 -0
- package/dist/close-job.d.ts.map +1 -0
- package/dist/close-job.js +226 -0
- package/dist/close-job.js.map +1 -0
- package/dist/complete.d.ts +361 -0
- package/dist/complete.d.ts.map +1 -0
- package/dist/complete.js +885 -0
- package/dist/complete.js.map +1 -0
- package/dist/concurrency.d.ts +68 -0
- package/dist/concurrency.d.ts.map +1 -0
- package/dist/concurrency.js +112 -0
- package/dist/concurrency.js.map +1 -0
- package/dist/config-override.d.ts +76 -0
- package/dist/config-override.d.ts.map +1 -0
- package/dist/config-override.js +50 -0
- package/dist/config-override.js.map +1 -0
- package/dist/config.d.ts +668 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +241 -0
- package/dist/config.js.map +1 -0
- package/dist/continue-branch.d.ts +249 -0
- package/dist/continue-branch.d.ts.map +1 -0
- package/dist/continue-branch.js +389 -0
- package/dist/continue-branch.js.map +1 -0
- package/dist/cwd-section.d.ts +186 -0
- package/dist/cwd-section.d.ts.map +1 -0
- package/dist/cwd-section.js +209 -0
- package/dist/cwd-section.js.map +1 -0
- package/dist/decision-engine.d.ts +170 -0
- package/dist/decision-engine.d.ts.map +1 -0
- package/dist/decision-engine.js +136 -0
- package/dist/decision-engine.js.map +1 -0
- package/dist/detect.d.ts +17 -0
- package/dist/detect.d.ts.map +1 -0
- package/dist/detect.js +118 -0
- package/dist/detect.js.map +1 -0
- package/dist/do-autopick.d.ts +85 -0
- package/dist/do-autopick.d.ts.map +1 -0
- package/dist/do-autopick.js +112 -0
- package/dist/do-autopick.js.map +1 -0
- package/dist/do-config.d.ts +312 -0
- package/dist/do-config.d.ts.map +1 -0
- package/dist/do-config.js +358 -0
- package/dist/do-config.js.map +1 -0
- package/dist/do-remote-auto.d.ts +75 -0
- package/dist/do-remote-auto.d.ts.map +1 -0
- package/dist/do-remote-auto.js +111 -0
- package/dist/do-remote-auto.js.map +1 -0
- package/dist/do.d.ts +621 -0
- package/dist/do.d.ts.map +1 -0
- package/dist/do.js +1882 -0
- package/dist/do.js.map +1 -0
- package/dist/drop-source.d.ts +96 -0
- package/dist/drop-source.d.ts.map +1 -0
- package/dist/drop-source.js +91 -0
- package/dist/drop-source.js.map +1 -0
- package/dist/eligibility.d.ts +46 -0
- package/dist/eligibility.d.ts.map +1 -0
- package/dist/eligibility.js +34 -0
- package/dist/eligibility.js.map +1 -0
- package/dist/env-config.d.ts +51 -0
- package/dist/env-config.d.ts.map +1 -0
- package/dist/env-config.js +272 -0
- package/dist/env-config.js.map +1 -0
- package/dist/failure-cause.d.ts +70 -0
- package/dist/failure-cause.d.ts.map +1 -0
- package/dist/failure-cause.js +126 -0
- package/dist/failure-cause.js.map +1 -0
- package/dist/format.d.ts +43 -0
- package/dist/format.d.ts.map +1 -0
- package/dist/format.js +256 -0
- package/dist/format.js.map +1 -0
- package/dist/frontmatter.d.ts +215 -0
- package/dist/frontmatter.d.ts.map +1 -0
- package/dist/frontmatter.js +345 -0
- package/dist/frontmatter.js.map +1 -0
- package/dist/gate-readiness.d.ts +84 -0
- package/dist/gate-readiness.d.ts.map +1 -0
- package/dist/gate-readiness.js +103 -0
- package/dist/gate-readiness.js.map +1 -0
- package/dist/gc.d.ts +165 -0
- package/dist/gc.d.ts.map +1 -0
- package/dist/gc.js +313 -0
- package/dist/gc.js.map +1 -0
- package/dist/gh-failure.d.ts +42 -0
- package/dist/gh-failure.d.ts.map +1 -0
- package/dist/gh-failure.js +49 -0
- package/dist/gh-failure.js.map +1 -0
- package/dist/git.d.ts +75 -0
- package/dist/git.d.ts.map +1 -0
- package/dist/git.js +130 -0
- package/dist/git.js.map +1 -0
- package/dist/github.d.ts +187 -0
- package/dist/github.d.ts.map +1 -0
- package/dist/github.js +343 -0
- package/dist/github.js.map +1 -0
- package/dist/harness.d.ts +242 -0
- package/dist/harness.d.ts.map +1 -0
- package/dist/harness.js +157 -0
- package/dist/harness.js.map +1 -0
- package/dist/identity.d.ts +167 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +231 -0
- package/dist/identity.js.map +1 -0
- package/dist/index.d.ts +147 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +76 -0
- package/dist/index.js.map +1 -0
- package/dist/install-ci-branch-protection.d.ts +147 -0
- package/dist/install-ci-branch-protection.d.ts.map +1 -0
- package/dist/install-ci-branch-protection.js +166 -0
- package/dist/install-ci-branch-protection.js.map +1 -0
- package/dist/install-ci-capabilities/advance-lifecycle.d.ts +15 -0
- package/dist/install-ci-capabilities/advance-lifecycle.d.ts.map +1 -0
- package/dist/install-ci-capabilities/advance-lifecycle.js +28 -0
- package/dist/install-ci-capabilities/advance-lifecycle.js.map +1 -0
- package/dist/install-ci-capabilities/close-job.d.ts +13 -0
- package/dist/install-ci-capabilities/close-job.d.ts.map +1 -0
- package/dist/install-ci-capabilities/close-job.js +26 -0
- package/dist/install-ci-capabilities/close-job.js.map +1 -0
- package/dist/install-ci-capabilities/example-noop.d.ts +16 -0
- package/dist/install-ci-capabilities/example-noop.d.ts.map +1 -0
- package/dist/install-ci-capabilities/example-noop.js +23 -0
- package/dist/install-ci-capabilities/example-noop.js.map +1 -0
- package/dist/install-ci-capabilities/intake.d.ts +15 -0
- package/dist/install-ci-capabilities/intake.d.ts.map +1 -0
- package/dist/install-ci-capabilities/intake.js +28 -0
- package/dist/install-ci-capabilities/intake.js.map +1 -0
- package/dist/install-ci-capabilities/verify.d.ts +14 -0
- package/dist/install-ci-capabilities/verify.d.ts.map +1 -0
- package/dist/install-ci-capabilities/verify.js +27 -0
- package/dist/install-ci-capabilities/verify.js.map +1 -0
- package/dist/install-ci-core.d.ts +446 -0
- package/dist/install-ci-core.d.ts.map +1 -0
- package/dist/install-ci-core.js +760 -0
- package/dist/install-ci-core.js.map +1 -0
- package/dist/install-ci-github.d.ts +167 -0
- package/dist/install-ci-github.d.ts.map +1 -0
- package/dist/install-ci-github.js +315 -0
- package/dist/install-ci-github.js.map +1 -0
- package/dist/install-ci.d.ts +105 -0
- package/dist/install-ci.d.ts.map +1 -0
- package/dist/install-ci.js +363 -0
- package/dist/install-ci.js.map +1 -0
- package/dist/intake-event.d.ts +88 -0
- package/dist/intake-event.d.ts.map +1 -0
- package/dist/intake-event.js +66 -0
- package/dist/intake-event.js.map +1 -0
- package/dist/intake-marker.d.ts +95 -0
- package/dist/intake-marker.d.ts.map +1 -0
- package/dist/intake-marker.js +127 -0
- package/dist/intake-marker.js.map +1 -0
- package/dist/intake-triage.d.ts +48 -0
- package/dist/intake-triage.d.ts.map +1 -0
- package/dist/intake-triage.js +95 -0
- package/dist/intake-triage.js.map +1 -0
- package/dist/intake-trigger-template.d.ts +185 -0
- package/dist/intake-trigger-template.d.ts.map +1 -0
- package/dist/intake-trigger-template.js +449 -0
- package/dist/intake-trigger-template.js.map +1 -0
- package/dist/intake.d.ts +569 -0
- package/dist/intake.d.ts.map +1 -0
- package/dist/intake.js +1628 -0
- package/dist/intake.js.map +1 -0
- package/dist/integration-core.d.ts +539 -0
- package/dist/integration-core.d.ts.map +1 -0
- package/dist/integration-core.js +2195 -0
- package/dist/integration-core.js.map +1 -0
- package/dist/integrator.d.ts +343 -0
- package/dist/integrator.d.ts.map +1 -0
- package/dist/integrator.js +400 -0
- package/dist/integrator.js.map +1 -0
- package/dist/isolation.d.ts +219 -0
- package/dist/isolation.d.ts.map +1 -0
- package/dist/isolation.js +261 -0
- package/dist/isolation.js.map +1 -0
- package/dist/issue-provider.d.ts +349 -0
- package/dist/issue-provider.d.ts.map +1 -0
- package/dist/issue-provider.js +360 -0
- package/dist/issue-provider.js.map +1 -0
- package/dist/item-lock.d.ts +626 -0
- package/dist/item-lock.d.ts.map +1 -0
- package/dist/item-lock.js +1381 -0
- package/dist/item-lock.js.map +1 -0
- package/dist/item-path.d.ts +49 -0
- package/dist/item-path.d.ts.map +1 -0
- package/dist/item-path.js +66 -0
- package/dist/item-path.js.map +1 -0
- package/dist/ledger-lint.d.ts +129 -0
- package/dist/ledger-lint.d.ts.map +1 -0
- package/dist/ledger-lint.js +249 -0
- package/dist/ledger-lint.js.map +1 -0
- package/dist/ledger-read.d.ts +357 -0
- package/dist/ledger-read.d.ts.map +1 -0
- package/dist/ledger-read.js +442 -0
- package/dist/ledger-read.js.map +1 -0
- package/dist/ledger-write.d.ts +330 -0
- package/dist/ledger-write.d.ts.map +1 -0
- package/dist/ledger-write.js +411 -0
- package/dist/ledger-write.js.map +1 -0
- package/dist/lifecycle-gather.d.ts +30 -0
- package/dist/lifecycle-gather.d.ts.map +1 -0
- package/dist/lifecycle-gather.js +205 -0
- package/dist/lifecycle-gather.js.map +1 -0
- package/dist/lifecycle-pools.d.ts +180 -0
- package/dist/lifecycle-pools.d.ts.map +1 -0
- package/dist/lifecycle-pools.js +78 -0
- package/dist/lifecycle-pools.js.map +1 -0
- package/dist/merge-question-surfacer.d.ts +166 -0
- package/dist/merge-question-surfacer.d.ts.map +1 -0
- package/dist/merge-question-surfacer.js +297 -0
- package/dist/merge-question-surfacer.js.map +1 -0
- package/dist/mint-adr.d.ts +126 -0
- package/dist/mint-adr.d.ts.map +1 -0
- package/dist/mint-adr.js +257 -0
- package/dist/mint-adr.js.map +1 -0
- package/dist/mirror-pool-scan.d.ts +125 -0
- package/dist/mirror-pool-scan.d.ts.map +1 -0
- package/dist/mirror-pool-scan.js +104 -0
- package/dist/mirror-pool-scan.js.map +1 -0
- package/dist/needs-attention.d.ts +341 -0
- package/dist/needs-attention.d.ts.map +1 -0
- package/dist/needs-attention.js +900 -0
- package/dist/needs-attention.js.map +1 -0
- package/dist/orphan-sidecar.d.ts +79 -0
- package/dist/orphan-sidecar.d.ts.map +1 -0
- package/dist/orphan-sidecar.js +71 -0
- package/dist/orphan-sidecar.js.map +1 -0
- package/dist/output.d.ts +48 -0
- package/dist/output.d.ts.map +1 -0
- package/dist/output.js +66 -0
- package/dist/output.js.map +1 -0
- package/dist/pi-harness.d.ts +179 -0
- package/dist/pi-harness.d.ts.map +1 -0
- package/dist/pi-harness.js +342 -0
- package/dist/pi-harness.js.map +1 -0
- package/dist/placement.d.ts +99 -0
- package/dist/placement.d.ts.map +1 -0
- package/dist/placement.js +67 -0
- package/dist/placement.js.map +1 -0
- package/dist/prd-to-spec.d.ts +315 -0
- package/dist/prd-to-spec.d.ts.map +1 -0
- package/dist/prd-to-spec.js +684 -0
- package/dist/prd-to-spec.js.map +1 -0
- package/dist/prepare.d.ts +121 -0
- package/dist/prepare.d.ts.map +1 -0
- package/dist/prepare.js +140 -0
- package/dist/prepare.js.map +1 -0
- package/dist/prompt.d.ts +360 -0
- package/dist/prompt.d.ts.map +1 -0
- package/dist/prompt.js +499 -0
- package/dist/prompt.js.map +1 -0
- package/dist/protocol/ADR-FORMAT.md +47 -0
- package/dist/protocol/CLAIM-PROTOCOL.md +217 -0
- package/dist/protocol/REVIEW-PROTOCOL.md +119 -0
- package/dist/protocol/SURFACE-PROTOCOL.md +121 -0
- package/dist/protocol/TASKING-PROTOCOL.md +122 -0
- package/dist/protocol/WORK-CONTRACT.md +276 -0
- package/dist/protocol/spec-template.md +71 -0
- package/dist/protocol/task-template.md +65 -0
- package/dist/readiness.d.ts +66 -0
- package/dist/readiness.d.ts.map +1 -0
- package/dist/readiness.js +36 -0
- package/dist/readiness.js.map +1 -0
- package/dist/reap-branches.d.ts +102 -0
- package/dist/reap-branches.d.ts.map +1 -0
- package/dist/reap-branches.js +149 -0
- package/dist/reap-branches.js.map +1 -0
- package/dist/recover-isolated.d.ts +72 -0
- package/dist/recover-isolated.d.ts.map +1 -0
- package/dist/recover-isolated.js +188 -0
- package/dist/recover-isolated.js.map +1 -0
- package/dist/registry.d.ts +172 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +296 -0
- package/dist/registry.js.map +1 -0
- package/dist/repo-config.d.ts +201 -0
- package/dist/repo-config.d.ts.map +1 -0
- package/dist/repo-config.js +414 -0
- package/dist/repo-config.js.map +1 -0
- package/dist/repo-key.d.ts +20 -0
- package/dist/repo-key.d.ts.map +1 -0
- package/dist/repo-key.js +68 -0
- package/dist/repo-key.js.map +1 -0
- package/dist/repo-mirror.d.ts +177 -0
- package/dist/repo-mirror.d.ts.map +1 -0
- package/dist/repo-mirror.js +271 -0
- package/dist/repo-mirror.js.map +1 -0
- package/dist/retry-backoff.d.ts +90 -0
- package/dist/retry-backoff.d.ts.map +1 -0
- package/dist/retry-backoff.js +98 -0
- package/dist/retry-backoff.js.map +1 -0
- package/dist/review-gate.d.ts +173 -0
- package/dist/review-gate.d.ts.map +1 -0
- package/dist/review-gate.js +261 -0
- package/dist/review-gate.js.map +1 -0
- package/dist/review-verdict.d.ts +149 -0
- package/dist/review-verdict.d.ts.map +1 -0
- package/dist/review-verdict.js +332 -0
- package/dist/review-verdict.js.map +1 -0
- package/dist/run.d.ts +221 -0
- package/dist/run.d.ts.map +1 -0
- package/dist/run.js +963 -0
- package/dist/run.js.map +1 -0
- package/dist/scan.d.ts +308 -0
- package/dist/scan.d.ts.map +1 -0
- package/dist/scan.js +374 -0
- package/dist/scan.js.map +1 -0
- package/dist/select-order.d.ts +75 -0
- package/dist/select-order.d.ts.map +1 -0
- package/dist/select-order.js +108 -0
- package/dist/select-order.js.map +1 -0
- package/dist/select-priority.d.ts +188 -0
- package/dist/select-priority.d.ts.map +1 -0
- package/dist/select-priority.js +80 -0
- package/dist/select-priority.js.map +1 -0
- package/dist/select.d.ts +25 -0
- package/dist/select.d.ts.map +1 -0
- package/dist/select.js +43 -0
- package/dist/select.js.map +1 -0
- package/dist/session-path.d.ts +36 -0
- package/dist/session-path.d.ts.map +1 -0
- package/dist/session-path.js +129 -0
- package/dist/session-path.js.map +1 -0
- package/dist/sidecar-apply.d.ts +83 -0
- package/dist/sidecar-apply.d.ts.map +1 -0
- package/dist/sidecar-apply.js +111 -0
- package/dist/sidecar-apply.js.map +1 -0
- package/dist/sidecar.d.ts +245 -0
- package/dist/sidecar.d.ts.map +1 -0
- package/dist/sidecar.js +481 -0
- package/dist/sidecar.js.map +1 -0
- package/dist/slug-namespace.d.ts +204 -0
- package/dist/slug-namespace.d.ts.map +1 -0
- package/dist/slug-namespace.js +229 -0
- package/dist/slug-namespace.js.map +1 -0
- package/dist/spec-complete.d.ts +44 -0
- package/dist/spec-complete.d.ts.map +1 -0
- package/dist/spec-complete.js +69 -0
- package/dist/spec-complete.js.map +1 -0
- package/dist/start.d.ts +97 -0
- package/dist/start.d.ts.map +1 -0
- package/dist/start.js +633 -0
- package/dist/start.js.map +1 -0
- package/dist/status.d.ts +199 -0
- package/dist/status.d.ts.map +1 -0
- package/dist/status.js +228 -0
- package/dist/status.js.map +1 -0
- package/dist/surface-gate.d.ts +162 -0
- package/dist/surface-gate.d.ts.map +1 -0
- package/dist/surface-gate.js +206 -0
- package/dist/surface-gate.js.map +1 -0
- package/dist/surface-persist.d.ts +86 -0
- package/dist/surface-persist.d.ts.map +1 -0
- package/dist/surface-persist.js +129 -0
- package/dist/surface-persist.js.map +1 -0
- package/dist/tasker-review-loop.d.ts +249 -0
- package/dist/tasker-review-loop.d.ts.map +1 -0
- package/dist/tasker-review-loop.js +369 -0
- package/dist/tasker-review-loop.js.map +1 -0
- package/dist/tasking-eligibility.d.ts +74 -0
- package/dist/tasking-eligibility.d.ts.map +1 -0
- package/dist/tasking-eligibility.js +52 -0
- package/dist/tasking-eligibility.js.map +1 -0
- package/dist/tasking-lock.d.ts +111 -0
- package/dist/tasking-lock.d.ts.map +1 -0
- package/dist/tasking-lock.js +256 -0
- package/dist/tasking-lock.js.map +1 -0
- package/dist/tasking.d.ts +275 -0
- package/dist/tasking.d.ts.map +1 -0
- package/dist/tasking.js +952 -0
- package/dist/tasking.js.map +1 -0
- package/dist/triage-gate.d.ts +127 -0
- package/dist/triage-gate.d.ts.map +1 -0
- package/dist/triage-gate.js +139 -0
- package/dist/triage-gate.js.map +1 -0
- package/dist/triage-persist.d.ts +163 -0
- package/dist/triage-persist.d.ts.map +1 -0
- package/dist/triage-persist.js +387 -0
- package/dist/triage-persist.js.map +1 -0
- package/dist/verdict-json.d.ts +32 -0
- package/dist/verdict-json.d.ts.map +1 -0
- package/dist/verdict-json.js +74 -0
- package/dist/verdict-json.js.map +1 -0
- package/dist/verify-workflow-template.d.ts +60 -0
- package/dist/verify-workflow-template.d.ts.map +1 -0
- package/dist/verify-workflow-template.js +126 -0
- package/dist/verify-workflow-template.js.map +1 -0
- package/dist/verify.d.ts +60 -0
- package/dist/verify.d.ts.map +1 -0
- package/dist/verify.js +62 -0
- package/dist/verify.js.map +1 -0
- package/dist/watch-session.d.ts +112 -0
- package/dist/watch-session.d.ts.map +1 -0
- package/dist/watch-session.js +347 -0
- package/dist/watch-session.js.map +1 -0
- package/dist/work-layout.d.ts +198 -0
- package/dist/work-layout.d.ts.map +1 -0
- package/dist/work-layout.js +217 -0
- package/dist/work-layout.js.map +1 -0
- package/dist/work-on.d.ts +154 -0
- package/dist/work-on.d.ts.map +1 -0
- package/dist/work-on.js +387 -0
- package/dist/work-on.js.map +1 -0
- package/dist/workspace.d.ts +224 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +325 -0
- package/dist/workspace.js.map +1 -0
- package/package.json +46 -2
- package/src/advance-ci-template.ts +203 -0
- package/src/advance-classify.ts +197 -0
- package/src/advance-drivers.ts +414 -0
- package/src/advance-isolated.ts +432 -0
- package/src/advance-lifecycle-template.ts +791 -0
- package/src/advance-loop-driver.ts +745 -0
- package/src/advance-treeless-publish.ts +177 -0
- package/src/advance.ts +1564 -0
- package/src/advancing-lock.ts +988 -0
- package/src/agent-launch.ts +137 -0
- package/src/agent-stop.ts +361 -0
- package/src/apply-decide.ts +242 -0
- package/src/apply-merge-action.ts +502 -0
- package/src/apply-persist.ts +518 -0
- package/src/arbiter.ts +372 -0
- package/src/brand.ts +111 -0
- package/src/buildable-body.ts +196 -0
- package/src/categorise.ts +158 -0
- package/src/claim-cas.ts +513 -0
- package/src/cli-spinner.ts +225 -0
- package/src/cli.ts +4369 -0
- package/src/close-job-template.ts +236 -0
- package/src/close-job.ts +319 -0
- package/src/complete.ts +1379 -0
- package/src/concurrency.ts +151 -0
- package/src/config-override.ts +116 -0
- package/src/config.ts +883 -0
- package/src/continue-branch.ts +542 -0
- package/src/cwd-section.ts +392 -0
- package/src/decision-engine.ts +272 -0
- package/src/detect.ts +124 -0
- package/src/do-autopick.ts +223 -0
- package/src/do-config.ts +589 -0
- package/src/do-remote-auto.ts +197 -0
- package/src/do.ts +2623 -0
- package/src/drop-source.ts +194 -0
- package/src/eligibility.ts +79 -0
- package/src/env-config.ts +305 -0
- package/src/failure-cause.ts +142 -0
- package/src/format.ts +313 -0
- package/src/frontmatter.ts +485 -0
- package/src/gate-readiness.ts +147 -0
- package/src/gc.ts +510 -0
- package/src/gh-failure.ts +53 -0
- package/src/git.ts +186 -0
- package/src/github.ts +468 -0
- package/src/harness.ts +355 -0
- package/src/identity.ts +322 -0
- package/src/index.ts +785 -0
- package/src/install-ci-branch-protection.ts +255 -0
- package/src/install-ci-capabilities/advance-lifecycle.ts +34 -0
- package/src/install-ci-capabilities/close-job.ts +32 -0
- package/src/install-ci-capabilities/example-noop.ts +24 -0
- package/src/install-ci-capabilities/intake.ts +34 -0
- package/src/install-ci-capabilities/verify.ts +33 -0
- package/src/install-ci-core.ts +1088 -0
- package/src/install-ci-github.ts +376 -0
- package/src/install-ci.ts +552 -0
- package/src/intake-event.ts +102 -0
- package/src/intake-marker.ts +195 -0
- package/src/intake-triage.ts +138 -0
- package/src/intake-trigger-template.ts +591 -0
- package/src/intake.ts +2445 -0
- package/src/integration-core.ts +3065 -0
- package/src/integrator.ts +771 -0
- package/src/isolation.ts +484 -0
- package/src/issue-provider.ts +733 -0
- package/src/item-lock.ts +1858 -0
- package/src/item-path.ts +75 -0
- package/src/ledger-lint.ts +332 -0
- package/src/ledger-read.ts +924 -0
- package/src/ledger-write.ts +865 -0
- package/src/lifecycle-gather.ts +298 -0
- package/src/lifecycle-pools.ts +250 -0
- package/src/merge-question-surfacer.ts +496 -0
- package/src/mint-adr.ts +362 -0
- package/src/mirror-pool-scan.ts +240 -0
- package/src/needs-attention.ts +1506 -0
- package/src/orphan-sidecar.ts +150 -0
- package/src/output.ts +89 -0
- package/src/pi-harness.ts +403 -0
- package/src/placement.ts +131 -0
- package/src/prd-to-spec.ts +1023 -0
- package/src/prepare.ts +230 -0
- package/src/prompt.ts +760 -0
- package/src/readiness.ts +98 -0
- package/src/reap-branches.ts +278 -0
- package/src/recover-isolated.ts +276 -0
- package/src/registry.ts +475 -0
- package/src/repo-config.ts +550 -0
- package/src/repo-key.ts +74 -0
- package/src/repo-mirror.ts +367 -0
- package/src/retry-backoff.ts +130 -0
- package/src/review-gate.ts +389 -0
- package/src/review-verdict.ts +422 -0
- package/src/run.ts +1430 -0
- package/src/scan.ts +611 -0
- package/src/select-order.ts +143 -0
- package/src/select-priority.ts +266 -0
- package/src/select.ts +62 -0
- package/src/session-path.ts +153 -0
- package/src/sidecar-apply.ts +216 -0
- package/src/sidecar.ts +700 -0
- package/src/slug-namespace.ts +367 -0
- package/src/spec-complete.ts +118 -0
- package/src/start.ts +974 -0
- package/src/status.ts +441 -0
- package/src/surface-gate.ts +337 -0
- package/src/surface-persist.ts +241 -0
- package/src/tasker-review-loop.ts +671 -0
- package/src/tasking-eligibility.ts +114 -0
- package/src/tasking-lock.ts +416 -0
- package/src/tasking.ts +1438 -0
- package/src/triage-gate.ts +248 -0
- package/src/triage-persist.ts +570 -0
- package/src/verdict-json.ts +73 -0
- package/src/verify-workflow-template.ts +159 -0
- package/src/verify.ts +123 -0
- package/src/watch-session.ts +397 -0
- package/src/work-layout.ts +262 -0
- package/src/work-on.ts +660 -0
- package/src/workspace.ts +502 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,KAAK,QAAQ,EAAmB,MAAM,eAAe,CAAC;AAC9D,OAAO,EAEN,KAAK,oBAAoB,EACzB,MAAM,mBAAmB,CAAC;AAE3B;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,OAAO,CAAC;AAElD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,OAAO,CAAC;AAElD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,WAAW,GAAG,cAAc,GAAG,OAAO,CAAC;AAEnD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAEpD;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,IAAI,CAAC;AAE3C;;;;;;;;;GASG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEnD;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;AAE7C;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC9B;;;;;;;;;;;;OAYG;IACH,SAAS,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAEjE;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,MAAM;IACtB;;;;;;;;OAQG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB;;;;;;;;;;OAUG;IACH,cAAc,EAAE,cAAc,CAAC;IAC/B;;;;;;;;OAQG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;;;;;;;;;;;;OAeG;IACH,iBAAiB,EAAE,iBAAiB,CAAC;IACrC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,cAAc,EAAE,cAAc,CAAC;IAC/B;;;;;;;;;;;;;;;;;;;OAmBG;IACH,eAAe,EAAE,OAAO,CAAC;IACzB;;;;;;;;;;;;;;;;OAgBG;IACH,cAAc,EAAE,OAAO,CAAC;IACxB;;;;;;;;;;;;;;;;OAgBG;IACH,cAAc,EAAE,oBAAoB,CAAC;IACrC,uEAAuE;IACvE,WAAW,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,UAAU,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,cAAc,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;;;;;;OAOG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;;;;OASG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,4EAA4E;IAC5E,WAAW,EAAE,eAAe,CAAC;IAC7B;;;;;;;;;;;;;;;OAeG;IACH,kBAAkB,CAAC,EAAE,eAAe,CAAC;IACrC;;;;;;;;;;;;;OAaG;IACH,WAAW,EAAE,WAAW,CAAC;IACzB;;;;;;;;;;;;;;;;;OAiBG;IACH,WAAW,EAAE,WAAW,CAAC;IACzB;;;;;;;;;;;;;OAaG;IACH,IAAI,EAAE,OAAO,CAAC;IACd;;;;;;OAMG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;;;;;OAUG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;;;;;OAYG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB;;;;;;;;OAQG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;;;;;;;OAcG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB;;;;;;;;OAQG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB;;;;;;;;;;;;;OAaG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,iBAAiB,EAAE,OAAO,CAAC;IAC3B;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAC7B;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACpB;AAED,8EAA8E;AAC9E,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAE5C;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMnE,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACvC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAsC,GAC/D,IAAI,CAeN;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,MA8G5B,CAAC;AAEF,wEAAwE;AACxE,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,8EAA8E;AAC9E,wBAAgB,WAAW,CAAC,SAAS,EAAE,aAAa,GAAG,MAAM,CAY5D;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAGpE;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,GAAE,MAA4B,GAAG,MAAM,CAoCrE"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'node:fs';
|
|
2
|
+
import { homedir } from 'node:os';
|
|
3
|
+
import { dirname, join } from 'node:path';
|
|
4
|
+
import { brand } from './brand.js';
|
|
5
|
+
import { validateIdentity } from './identity.js';
|
|
6
|
+
import { DEFAULT_SELECTION_ORDER, } from './select-order.js';
|
|
7
|
+
/**
|
|
8
|
+
* Resolve the `promptGuidance` namespace down to its concrete boolean fields
|
|
9
|
+
* with the documented defaults applied — so callers can read
|
|
10
|
+
* `resolvePromptGuidance(cfg).testFirst` without re-checking the namespace's
|
|
11
|
+
* presence (a per-repo file may legitimately omit `promptGuidance` entirely,
|
|
12
|
+
* or supply only a subset). Mirrors the gate family's defaults-resolved
|
|
13
|
+
* convention.
|
|
14
|
+
*/
|
|
15
|
+
export function resolvePromptGuidance(cfg) {
|
|
16
|
+
return { testFirst: cfg.promptGuidance?.testFirst === true };
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* The DEPRECATED config/env keys: present in an OLD config keeps working but is
|
|
20
|
+
* IGNORED with a one-line warning (never a hard error), so an existing setup is
|
|
21
|
+
* not broken by a removal. Each maps to the human-facing replacement hint. Mirrors
|
|
22
|
+
* the `allowAgents`→`autoBuild` removal-with-warning precedent.
|
|
23
|
+
*
|
|
24
|
+
* `provider` (the review-request provider OVERRIDE + `--provider` flag) was
|
|
25
|
+
* removed: the provider is purely ARBITER-derived now (a GitHub remote ⇒ the
|
|
26
|
+
* GitHub provider, else `none`), so an override could only contradict the arbiter.
|
|
27
|
+
* The legitimate `provider: none` use ("suppress the PR") is re-homed to the
|
|
28
|
+
* `noPR` intent axis.
|
|
29
|
+
*/
|
|
30
|
+
export const DEPRECATED_CONFIG_KEYS = {
|
|
31
|
+
provider: 'the `provider` axis was removed — the review-request provider is now purely ' +
|
|
32
|
+
'arbiter-derived (a GitHub remote ⇒ the GitHub provider, else none). To ' +
|
|
33
|
+
'deliberately suppress the PR (the old `provider: none` use), set `noPR: true` ' +
|
|
34
|
+
'(or pass `--no-pr`).',
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Warn (once per offending key) for any DEPRECATED key present in a parsed config
|
|
38
|
+
* object, then DELETE it from the object so it never lingers in the resolved
|
|
39
|
+
* config. A stale key is IGNORED, not an error — an existing config keeps working.
|
|
40
|
+
* For `provider`, the warning points specifically at the `noPR` replacement when
|
|
41
|
+
* the stale value was the old `none` ("suppress the PR") use.
|
|
42
|
+
*/
|
|
43
|
+
export function warnDeprecatedConfigKeys(parsed, source, warn = (m) => console.error(`>> ${m}`)) {
|
|
44
|
+
for (const key of Object.keys(DEPRECATED_CONFIG_KEYS)) {
|
|
45
|
+
if (!(key in parsed) || parsed[key] === undefined) {
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
const staleNone = key === 'provider' && parsed[key] === 'none';
|
|
49
|
+
const hint = DEPRECATED_CONFIG_KEYS[key];
|
|
50
|
+
warn(`Ignoring deprecated key '${key}' in ${source}: ${hint}` +
|
|
51
|
+
(staleNone
|
|
52
|
+
? ' (your `provider: none` maps directly to `noPR: true`.)'
|
|
53
|
+
: ''));
|
|
54
|
+
delete parsed[key];
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Built-in defaults. Chosen so that zero-config is useful: stay strict about the
|
|
59
|
+
* autonomy gate (agents claim nothing unless a repo opts in via `autoBuild`).
|
|
60
|
+
* Discovery has no default `roots` — it is the registered hub-mirror set (empty
|
|
61
|
+
* until `remote add`/`remote find` registers a target).
|
|
62
|
+
*/
|
|
63
|
+
export const DEFAULT_CONFIG = {
|
|
64
|
+
autoBuild: false,
|
|
65
|
+
// The `promptGuidance` nudge namespace defaults to ALL members off — so the
|
|
66
|
+
// worker prompt is byte-identical to today when no repo opts in. NOT a gate;
|
|
67
|
+
// `verify` remains the sole acceptance bar regardless.
|
|
68
|
+
promptGuidance: { testFirst: false },
|
|
69
|
+
// Auto-tasking is human-first by default: an agent tasks nothing unless a
|
|
70
|
+
// repo opts in via `autoTask` (mirrors `autoBuild`, one level up).
|
|
71
|
+
autoTask: false,
|
|
72
|
+
// The observation INBOX is calm by default (`off`): the triage pool is dropped
|
|
73
|
+
// from the auto-pick selection, so observations are left untouched unless a repo
|
|
74
|
+
// opts in via `observationTriage` (`ask` ⇒ surface a question for each; `auto` ⇒
|
|
75
|
+
// auto-dispose the no-question cases). ADR `ci-config-policy-and-gate-family` §3.
|
|
76
|
+
observationTriage: 'off',
|
|
77
|
+
// The merge-question SURFACER defaults to `ask` — the conservative default
|
|
78
|
+
// (prd `land-time-reverify-and-parallel-merge-ceiling` Applied answer q2 /
|
|
79
|
+
// task `merge-questions-gate-axis` Applied answer q2). NEVER `off` by default:
|
|
80
|
+
// a silently-dropped merge-question means finished, pushed work never lands —
|
|
81
|
+
// strictly more consequential than a dropped observation-promote prompt, so
|
|
82
|
+
// this gate axis is DELIBERATELY HIGHER than `observationTriage`'s `off`. A
|
|
83
|
+
// trusted-repo fast path opts into `auto` (runner self-supplies the `merge`
|
|
84
|
+
// answer + lands via the SAME deterministic apply-time re-verify); a repo that
|
|
85
|
+
// lands by some other means opts into `off`. Resolved per-repo through the
|
|
86
|
+
// SAME precedence chain (flag > env > per-repo > global > default).
|
|
87
|
+
mergeQuestions: 'ask',
|
|
88
|
+
// DECLARED blocked work is calm by default (`false`): the `needsAnswers`-blocked
|
|
89
|
+
// pool is dropped from the auto-pick selection, so `advance` does NOT proactively
|
|
90
|
+
// render a declared blocker into a question sidecar unless a repo opts in via
|
|
91
|
+
// `surfaceBlockers`. Orthogonal PEER to `observationTriage`; `needs-attention`
|
|
92
|
+
// (a stuck build) is separate + always-on. ADR `ci-config-policy-and-gate-family` §3.
|
|
93
|
+
surfaceBlockers: false,
|
|
94
|
+
// SURFACING widens to STAGING by default (`true`) — a `needsAnswers` task in
|
|
95
|
+
// `tasks/backlog/` or a `needsAnswers` prd in `prds/proposed/` surfaces
|
|
96
|
+
// its questions BEFORE promotion, so a human promotes an already-clarified
|
|
97
|
+
// item. Prd `staging-surface-and-apply-promote-safety` (F2). BUILD/claim
|
|
98
|
+
// stays pool-only + trust-gated regardless: this widens ONLY the surface
|
|
99
|
+
// polarity, not the build polarity. Set `false` to restore the legacy
|
|
100
|
+
// pool-only surface behaviour.
|
|
101
|
+
surfaceStaging: true,
|
|
102
|
+
// The `drain` selection-order preset by default (ADR `ci-config-policy-and-gate-
|
|
103
|
+
// family`, selection-order section): drain ready work (build eligible tasks →
|
|
104
|
+
// task taskable prds) before creating/asking (surface → triage); `apply` is
|
|
105
|
+
// always first. Reproduces today's tasks-first two-pool default. Subsumes the
|
|
106
|
+
// removed `prdsFirst` boolean (`[task, build, ...]` reproduces `prdsFirst: true`).
|
|
107
|
+
selectionOrder: DEFAULT_SELECTION_ORDER,
|
|
108
|
+
maxParallel: 4,
|
|
109
|
+
perRepoMax: 2,
|
|
110
|
+
defaultArbiter: 'origin',
|
|
111
|
+
workspacesDir: join(homedir(), brand.workdirName),
|
|
112
|
+
arbitersDir: join(homedir(), 'git'),
|
|
113
|
+
integration: 'propose',
|
|
114
|
+
// The PR-INTENT axis defaults to `false` ("I want a PR"): on a GitHub arbiter,
|
|
115
|
+
// propose opens the PR via the arbiter-derived provider. Set `true` to push the
|
|
116
|
+
// branch but deliberately skip the PR (the explicit suppress-PR intent that
|
|
117
|
+
// re-homes the old `provider: none` use). NOT a provider choice.
|
|
118
|
+
noPR: false,
|
|
119
|
+
// The tasker's emitted tasks land STAGED (`pre-backlog/`) by default — the
|
|
120
|
+
// conservative landing that preserves the tracer task's behaviour: an item is
|
|
121
|
+
// durable + readable but NOT in the agent-eligible pool until a human/runner
|
|
122
|
+
// promotes it. A repo opts into the trusted fast-path with `tasksLandIn:
|
|
123
|
+
// 'ready'` (or `--tasks-land-in ready` / `DORFL_TASKS_LAND_IN=ready`).
|
|
124
|
+
// The runner-deterministic resolver overlays explicit-flag + untrusted-origin
|
|
125
|
+
// force on top of this default (`src/placement.ts`).
|
|
126
|
+
tasksLandIn: 'pre-backlog',
|
|
127
|
+
// `intake`-authored specs land STAGED (`pre-proposed/`) by default — the
|
|
128
|
+
// conservative landing that mirrors `tasksLandIn`'s built-in floor: a spec is
|
|
129
|
+
// durable + readable but NOT in the auto-tasking POOL until a human/runner
|
|
130
|
+
// promotes it. A repo opts into the trusted fast-path with `specsLandIn: 'ready'`
|
|
131
|
+
// (or `--specs-land-in ready` / `DORFL_SPECS_LAND_IN=ready`). The same
|
|
132
|
+
// runner-deterministic resolver overlays explicit-flag + untrusted-origin
|
|
133
|
+
// force on top of this default (`src/placement.ts`).
|
|
134
|
+
specsLandIn: 'pre-proposed',
|
|
135
|
+
agentCmd: '',
|
|
136
|
+
// Gate 2 (PR/code review) defaults OFF — it puts a model on the merge path, so
|
|
137
|
+
// it is opt-in (ADR §8). On an `approve` a resolved `merge` lands automatically
|
|
138
|
+
// (`merge` IS the auto-land mode); `propose` always leaves the merge to a human.
|
|
139
|
+
// The loop bound is a small N so an unattended revise↔review can never run forever.
|
|
140
|
+
review: false,
|
|
141
|
+
reviewMaxRounds: 2,
|
|
142
|
+
// The tasker improver loop is ON by default — auto-tasking has no `verify`
|
|
143
|
+
// floor, so the loop is the task path's quality engine (distinct from the
|
|
144
|
+
// acceptance gate's `review`, which defaults OFF).
|
|
145
|
+
taskerLoop: true,
|
|
146
|
+
// The tasker improver loop's hard cap on in-context review passes — a cheap
|
|
147
|
+
// default so an unattended review→edit→re-review can never run forever (the
|
|
148
|
+
// natural terminator is "no new blocking issue"; this is the ceiling on top).
|
|
149
|
+
taskerLoopMax: 3,
|
|
150
|
+
// The fresh-worktree acceptance gate is ON by default: most CI/tooling caches
|
|
151
|
+
// deps so `pnpm install` is fast, so correctness-first (the gate tests what
|
|
152
|
+
// MERGES, not the agent's pre-rebase checkout) is the right default. The
|
|
153
|
+
// opt-out (`--no-fresh-worktree-gate`) runs `verify` in the build worktree as
|
|
154
|
+
// before, for when the per-gate install cost is too high. Mirrors `taskerLoop`
|
|
155
|
+
// (positive name, default-on).
|
|
156
|
+
freshWorktreeGate: true,
|
|
157
|
+
// The cross-job merge serialiser's CAS-retry cap — the git-alone FLOOR of the
|
|
158
|
+
// land-time cross-job queue (prd `land-time-reverify-and-parallel-merge-ceiling`,
|
|
159
|
+
// Story 5 + Applied Answer q1 (a)). Matches `integration-core.ts`'s built-in
|
|
160
|
+
// `DEFAULT_MERGE_RETRIES` fallback (1000 — the C2 large liveness ceiling, NOT a
|
|
161
|
+
// small Race-1 budget) so resolving it through this layer is byte-for-byte
|
|
162
|
+
// today's behaviour when no source sets it. A wide-matrix CI raises it via
|
|
163
|
+
// `--merge-retries`/`DORFL_MERGE_RETRIES`/per-repo `mergeRetries`.
|
|
164
|
+
mergeRetries: 1000,
|
|
165
|
+
// The strict-merge-approval gate defaults OFF (sidecar OQ6 / task
|
|
166
|
+
// `strict-merge-approval-gate`): the cheap "green re-verify is enough" path
|
|
167
|
+
// is the default; the OQ6 PRD answer pins this. A repo opts in to the
|
|
168
|
+
// host-agnostic "dismiss stale approvals on base change" discipline with
|
|
169
|
+
// `strictMergeApproval: true` (or `--strict-merge-approval` /
|
|
170
|
+
// `DORFL_STRICT_MERGE_APPROVAL=true`). The re-surface vs. land branch is
|
|
171
|
+
// `apply-rung-merge-disposition`'s consumer, NOT here.
|
|
172
|
+
strictMergeApproval: false,
|
|
173
|
+
};
|
|
174
|
+
/** The conventional config location (`~/.config/dorfl/config.json`). */
|
|
175
|
+
export function defaultConfigPath() {
|
|
176
|
+
return join(homedir(), '.config', brand.configDirName, 'config.json');
|
|
177
|
+
}
|
|
178
|
+
/** Merge a partial config over the built-in defaults; arrays are replaced. */
|
|
179
|
+
export function mergeConfig(overrides) {
|
|
180
|
+
const merged = { ...DEFAULT_CONFIG };
|
|
181
|
+
// Iterate the override's own keys (not the defaults') so optional keys like
|
|
182
|
+
// `verify` (absent from DEFAULT_CONFIG, left unset by design) are carried over.
|
|
183
|
+
for (const key of Object.keys(overrides)) {
|
|
184
|
+
const value = overrides[key];
|
|
185
|
+
if (value !== undefined) {
|
|
186
|
+
// Assign through `unknown`: each key's value type matches by construction.
|
|
187
|
+
merged[key] = value;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return merged;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Persist `config` to `path` as pretty JSON (creating the parent dir). Used by
|
|
194
|
+
* `work-on` to SAVE the prompted `humanWorktreesDir` on first use so the human is
|
|
195
|
+
* never asked again. Only the keys present in `config` are written — we round-trip
|
|
196
|
+
* whatever the loader produced (defaults + file + the new key), which keeps the
|
|
197
|
+
* on-disk file explicit and stable.
|
|
198
|
+
*/
|
|
199
|
+
export function saveConfig(config, path) {
|
|
200
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
201
|
+
writeFileSync(path, JSON.stringify(config, null, 2) + '\n');
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Load config from `path`, merged over defaults. A missing file is not an error
|
|
205
|
+
* (defaults make the tool work out of the box); invalid JSON is.
|
|
206
|
+
*/
|
|
207
|
+
export function loadConfig(path = defaultConfigPath()) {
|
|
208
|
+
if (!existsSync(path)) {
|
|
209
|
+
return mergeConfig({});
|
|
210
|
+
}
|
|
211
|
+
let raw;
|
|
212
|
+
try {
|
|
213
|
+
raw = readFileSync(path, 'utf8');
|
|
214
|
+
}
|
|
215
|
+
catch (err) {
|
|
216
|
+
throw new Error(`Failed to read config at ${path}: ${err.message}`);
|
|
217
|
+
}
|
|
218
|
+
let parsed;
|
|
219
|
+
try {
|
|
220
|
+
parsed = JSON.parse(raw);
|
|
221
|
+
}
|
|
222
|
+
catch (err) {
|
|
223
|
+
throw new Error(`Invalid JSON in config at ${path}: ${err.message}`);
|
|
224
|
+
}
|
|
225
|
+
// Drop (with a one-line warning) any DEPRECATED key (e.g. the removed `provider`
|
|
226
|
+
// override) so an existing config keeps working — ignored, never a hard error.
|
|
227
|
+
warnDeprecatedConfigKeys(parsed, path);
|
|
228
|
+
// Validate a present identity at LOAD time (dumb — no arbiter URL resolution;
|
|
229
|
+
// the transport-coherence check is push-time). A bad identity is a hard config
|
|
230
|
+
// error, never a silent ambient fallback.
|
|
231
|
+
if (parsed.identity !== undefined) {
|
|
232
|
+
try {
|
|
233
|
+
validateIdentity(parsed.identity);
|
|
234
|
+
}
|
|
235
|
+
catch (err) {
|
|
236
|
+
throw new Error(`Invalid identity in config at ${path}: ${err.message}`);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
return mergeConfig(parsed);
|
|
240
|
+
}
|
|
241
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* True iff the git ref `branchRef` exists in `cwd` AND its tip is NOT an
|
|
3
|
+
* ancestor of `mainRef` — i.e. it carries commits beyond main (the prior
|
|
4
|
+
* attempt's work a `requeue` kept, to be continued). False when the ref is
|
|
5
|
+
* absent (nothing to continue → fresh cut) or already merged into main (no work
|
|
6
|
+
* beyond main → nothing to continue). Read-only; never throws.
|
|
7
|
+
*
|
|
8
|
+
* Both onboarding paths feed this ONE predicate with their own ref names:
|
|
9
|
+
* - in-place clone: branchRef=`<arbiter>/work/<slug>`, mainRef=`<arbiter>/main`
|
|
10
|
+
* - bare hub mirror: branchRef=`work/<slug>`, mainRef=`main`
|
|
11
|
+
*/
|
|
12
|
+
export declare function branchAheadOf(cwd: string, branchRef: string, mainRef: string, env: NodeJS.ProcessEnv | undefined): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Arbiter-authoritative continue-detection: like {@link branchAheadOf}, but
|
|
15
|
+
* first asks the arbiter (`git ls-remote <arbiterRemote> refs/heads/<branch>`)
|
|
16
|
+
* whether the kept branch EXISTS — so a STALE local remote-tracking ref
|
|
17
|
+
* (`refs/remotes/<arbiter>/<branch>` or a bare mirror's `refs/heads/<branch>`)
|
|
18
|
+
* pointing at a branch already DELETED on the arbiter (by `requeue --reset`, by
|
|
19
|
+
* the merge-reap, or cross-machine by `gc --remote-branches`) can no longer
|
|
20
|
+
* fool the onboard into "continue". This is the READ-side backstop that pairs
|
|
21
|
+
* with the WRITE-side write-through ordering at every delete site
|
|
22
|
+
* (local-ref-first, then `git push <arbiter> --delete`): write-through keeps
|
|
23
|
+
* SAME-MACHINE state in sync at the source; this catches the CROSS-MACHINE
|
|
24
|
+
* residue at the read (the other machine cannot touch this machine's local
|
|
25
|
+
* tracking refs). A plain `git remote prune` does NOT cover this — verified a
|
|
26
|
+
* no-op on the bare hub mirror, which has no `remote.origin.fetch` refspec for
|
|
27
|
+
* the orphaned `refs/remotes/origin/*` namespace.
|
|
28
|
+
*
|
|
29
|
+
* The decision rules, in order:
|
|
30
|
+
* - `git ls-remote <arbiterRemote> refs/heads/<branch>` exits 0 with EMPTY
|
|
31
|
+
* stdout (branch absent on the arbiter) ⇒ NOT ahead (fresh cut). This is
|
|
32
|
+
* the bug-fix case: a stale local ref CANNOT override the arbiter's truth.
|
|
33
|
+
* - `ls-remote` exits 0 with a sha ⇒ delegate to {@link branchAheadOf} on
|
|
34
|
+
* the local refs (the existing predicate: ref exists AND not an ancestor
|
|
35
|
+
* of main). The arbiter-present case is the normal continue path.
|
|
36
|
+
* - `ls-remote` exits non-zero (unreachable arbiter / offline) ⇒ fall back
|
|
37
|
+
* to {@link branchAheadOf} on the local refs — the best the read can do
|
|
38
|
+
* when the arbiter cannot answer (same direction as today).
|
|
39
|
+
*
|
|
40
|
+
* `branch` is the unqualified branch name on the arbiter (e.g.
|
|
41
|
+
* `work/task-<slug>`); `branchRef` + `mainRef` are the local refs the
|
|
42
|
+
* arbiter-present delegate uses (in-place clone: `<arbiter>/<branch>` /
|
|
43
|
+
* `<arbiter>/main`; bare hub mirror: `<branch>` / `main`). `arbiterRemote` is
|
|
44
|
+
* the remote NAME to ls-remote (e.g. `origin` for the mirror, `arbiter` for an
|
|
45
|
+
* in-place clone with the conventional remote name).
|
|
46
|
+
*/
|
|
47
|
+
export declare function branchAheadOfArbiter(options: {
|
|
48
|
+
cwd: string;
|
|
49
|
+
/** The remote NAME to `ls-remote` (the arbiter as known to this repo). */
|
|
50
|
+
arbiterRemote: string;
|
|
51
|
+
/** Unqualified branch name on the arbiter (e.g. `work/task-<slug>`). */
|
|
52
|
+
branch: string;
|
|
53
|
+
/** The local ref to read for the ahead-of-main check (when arbiter says present). */
|
|
54
|
+
branchRef: string;
|
|
55
|
+
/** The local main ref to compare against. */
|
|
56
|
+
mainRef: string;
|
|
57
|
+
env: NodeJS.ProcessEnv | undefined;
|
|
58
|
+
}): boolean;
|
|
59
|
+
/** The result of rebasing a continued branch onto the freshly-fetched main. */
|
|
60
|
+
export interface ContinueRebaseResult {
|
|
61
|
+
/** `clean` — the rebase replayed onto main with no conflict. */
|
|
62
|
+
/** `conflict` — the rebase conflicted; it was `--abort`ed (never auto-resolved). */
|
|
63
|
+
kind: 'clean' | 'conflict';
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Rebase the CURRENTLY-CHECKED-OUT continued `work/<slug>` branch onto
|
|
67
|
+
* `mainRef` (the freshly-fetched main), so the agent builds on a CURRENT base
|
|
68
|
+
* (ADR §10: rebase, NOT merge — linear history; the prior attempt's commits were
|
|
69
|
+
* based on an OLD main that moved while the item sat in backlog).
|
|
70
|
+
*
|
|
71
|
+
* This is a PLAIN rebase. After the per-item-lock cut-over (prd
|
|
72
|
+
* `ledger-status-per-item-lock-refs`, tasks 9a–9d) NO transient status lands on
|
|
73
|
+
* a work branch: claim does not move the body (it rests in `backlog/`),
|
|
74
|
+
* needs-attention is the lock `state: stuck` (not a `git mv`), and the
|
|
75
|
+
* tasking/advancing markers are gone. So a branch cut from `main` inherits no
|
|
76
|
+
* runner-authored move-only bookkeeping commit, there is nothing to drop, and
|
|
77
|
+
* the old `drop-bookkeeping-rebase` machinery (which papered over the
|
|
78
|
+
* rename/rename ledger conflict that inheritance caused) is deleted. The ONLY
|
|
79
|
+
* commits replayed are the agent's own wip / `→done` commits.
|
|
80
|
+
*
|
|
81
|
+
* A CLEAN rebase returns `{kind: 'clean'}`; a CONFLICTING rebase (a GENUINE code
|
|
82
|
+
* conflict) is `--abort`ed (NEVER auto-resolved) and returns `{kind: 'conflict'}`
|
|
83
|
+
* so the caller can route the item to needs-attention via the §10 path. Must be
|
|
84
|
+
* called while HEAD is the continued branch.
|
|
85
|
+
*
|
|
86
|
+
* RENAME-DETECTION-OFF (task `disable-rename-detection-on-continue-rebase`): the
|
|
87
|
+
* rebase is invoked with `-c merge.directoryRenames=false` SCOPED to the
|
|
88
|
+
* invocation (never a persistent `git config` write), so a single durable
|
|
89
|
+
* folder-transition `git mv` out of a SPARSE source folder is NOT misread by
|
|
90
|
+
* git's directory-rename heuristic as a whole-DIRECTORY rename — which would
|
|
91
|
+
* spuriously flag every sibling file main added into that same folder as
|
|
92
|
+
* `CONFLICT (file location)` and force a FALSE needs-attention. Content-rename
|
|
93
|
+
* detection (`-Xno-renames` / `merge.renames` / `diff.renames`) is NOT what
|
|
94
|
+
* controls this conflict and was empirically verified ineffective; only
|
|
95
|
+
* `merge.directoryRenames=false` suppresses it. A GENUINE same-path content
|
|
96
|
+
* conflict still conflicts unchanged.
|
|
97
|
+
*/
|
|
98
|
+
export declare function rebaseContinuedBranchOntoMain(cwd: string, mainRef: string, env: NodeJS.ProcessEnv | undefined): ContinueRebaseResult;
|
|
99
|
+
/**
|
|
100
|
+
* The default cap on stale-lease push retries — mirrors the claim / tasking-lock
|
|
101
|
+
* INSTANT-contention loop's `retries: 3` default (`claim-cas.ts` `DEFAULT_RETRIES`).
|
|
102
|
+
* After this many re-fetch + re-rebase + re-push attempts the green work is left
|
|
103
|
+
* RECOVERABLE and the caller surfaces a clear terminal failure.
|
|
104
|
+
*/
|
|
105
|
+
export declare const DEFAULT_STALE_LEASE_RETRIES = 3;
|
|
106
|
+
/**
|
|
107
|
+
* Lexical signal of a `--force-with-lease` STALE-LEASE rejection (git prints
|
|
108
|
+
* `! [rejected] <ref> (stale info)`), as distinct from any OTHER push failure
|
|
109
|
+
* (connectivity, auth, a protected ref). ONLY this case is safe to re-lease +
|
|
110
|
+
* retry on the UNSHARED work branch — every other failure must surface, never
|
|
111
|
+
* silently overwrite. This is the SAME family of contention markers the
|
|
112
|
+
* ledger-write CAS recognises (`ledger-write.ts`), narrowed here to the lease's
|
|
113
|
+
* own `stale info`.
|
|
114
|
+
*/
|
|
115
|
+
export declare function isStaleLeaseRejection(stderr: string): boolean;
|
|
116
|
+
/**
|
|
117
|
+
* Outcome of {@link pushProposeBranchWithStaleLeaseRetry} — the sibling of
|
|
118
|
+
* {@link ContinuedPushResult} on the PROPOSE-mode work-branch push.
|
|
119
|
+
*/
|
|
120
|
+
export type ProposePushResult =
|
|
121
|
+
/** The work branch landed on the arbiter (first try or after a stale-lease retry). */
|
|
122
|
+
{
|
|
123
|
+
kind: 'pushed';
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* BENIGN already-landed race tail: the remote `work/<slug>` ref is GONE on
|
|
127
|
+
* the arbiter AND our HEAD is provably reachable from `<arbiter>/main` — i.e.
|
|
128
|
+
* the work already landed via a sibling's merge and its head was reaped
|
|
129
|
+
* (`integrator.ts` `deleteMergedHeadBranch`'s ancestor-guarded reap, or `gc`).
|
|
130
|
+
* This is the propose-push analogue of the leased-delete `already-reaped`
|
|
131
|
+
* outcome (`item-lock.ts`): a vanished ref whose work is provably landed is
|
|
132
|
+
* the DESIRED end state, not a failure.
|
|
133
|
+
*/
|
|
134
|
+
| {
|
|
135
|
+
kind: 'already-landed';
|
|
136
|
+
};
|
|
137
|
+
/**
|
|
138
|
+
* Push the propose-mode work branch with the SAME stale-lease retry semantics
|
|
139
|
+
* as {@link pushContinuedBranchWithStaleLeaseRetry} (explicit
|
|
140
|
+
* `--force-with-lease=<branch>:<expectedTip>`, `stale info` detection, bounded
|
|
141
|
+
* re-observation + retry, terminal throw on cap exhaustion / non-stale
|
|
142
|
+
* failure), plus the one race the continue path does not have: a `work/<slug>`
|
|
143
|
+
* ref that is GONE on the arbiter because the work already LANDED on `main` is
|
|
144
|
+
* a BENIGN already-landed success, not a failure. The predicate mirrors the
|
|
145
|
+
* leased-delete `already-reaped` + merged-head-reap ancestor guards: gone ref
|
|
146
|
+
* AND `HEAD` is an ancestor of `<arbiter>/main`.
|
|
147
|
+
*
|
|
148
|
+
* WHY a propose-specific helper instead of the continue helper verbatim: the
|
|
149
|
+
* continue helper's stale-lease retry RE-REBASES the kept branch onto the
|
|
150
|
+
* freshly-fetched main (a kept-branch onboard's job — main may have moved
|
|
151
|
+
* while the prior attempt sat in backlog). In the propose path the caller has
|
|
152
|
+
* ALREADY rebased the branch onto `<arbiter>/main` (`integrateWithRebase`, or
|
|
153
|
+
* `integration-core.ts` `recoverAlreadyCommitted`'s recovery rebase), so the
|
|
154
|
+
* only race the lease needs to survive here is the remote work ref MOVING /
|
|
155
|
+
* REAPING under us — re-leasing against the freshly-observed tip is enough,
|
|
156
|
+
* AND a re-rebase mid-integrate would smuggle a NEW rebase past
|
|
157
|
+
* `integrateWithRebase`'s explicit conflict-aborts-to-needs-attention contract.
|
|
158
|
+
* So this helper shares the stale-info detection + bounded retry shape (the
|
|
159
|
+
* `--force-with-lease`-only / never-bare-force / never-`:main` guardrails are
|
|
160
|
+
* identical) but does NOT layer the rebase step.
|
|
161
|
+
*
|
|
162
|
+
* Guardrails (ADR §11): `--force-with-lease` ONLY (re-computed each attempt),
|
|
163
|
+
* NEVER bare `--force`, NEVER `:main`, the WORK branch ONLY. The lease is
|
|
164
|
+
* threaded as `<branch>:<expectedTip>` — using EMPTY (`<branch>:`) when the
|
|
165
|
+
* arbiter has no ref yet (the first-time propose / post-reap shape — the same
|
|
166
|
+
* create-only lease form `item-lock.ts` uses for the lock CAS), so a bare-hub-
|
|
167
|
+
* mirror worktree (no `refs/remotes/<arbiter>/*` upstream) leases correctly.
|
|
168
|
+
*
|
|
169
|
+
* Bounded by `retries` (default {@link DEFAULT_STALE_LEASE_RETRIES}, mirroring
|
|
170
|
+
* the claim / continue retry cap). Must be called while HEAD is the propose
|
|
171
|
+
* `<branch>`.
|
|
172
|
+
*/
|
|
173
|
+
export declare function pushProposeBranchWithStaleLeaseRetry(options: {
|
|
174
|
+
cwd: string;
|
|
175
|
+
branch: string;
|
|
176
|
+
/** The arbiter remote name to push to / observe (e.g. `arbiter`, `origin`). */
|
|
177
|
+
arbiter: string;
|
|
178
|
+
retries?: number;
|
|
179
|
+
env: NodeJS.ProcessEnv | undefined;
|
|
180
|
+
/** Optional progress note sink (mirrors the continue helper's `note`). */
|
|
181
|
+
note?: (message: string) => void;
|
|
182
|
+
}): ProposePushResult;
|
|
183
|
+
/** The outcome of {@link pushContinuedBranchWithStaleLeaseRetry}. */
|
|
184
|
+
export type ContinuedPushResult =
|
|
185
|
+
/** The work branch landed on the arbiter (first try or after a clean re-rebase). */
|
|
186
|
+
{
|
|
187
|
+
kind: 'pushed';
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* A re-rebase onto the freshly-fetched main CONFLICTED on a retry; it was
|
|
191
|
+
* `--abort`ed (NEVER auto-resolved). The caller routes the item to
|
|
192
|
+
* needs-attention via the §10 path — the green work stays intact on the branch.
|
|
193
|
+
*/
|
|
194
|
+
| {
|
|
195
|
+
kind: 'conflict';
|
|
196
|
+
};
|
|
197
|
+
/**
|
|
198
|
+
* Push the CONTINUED `work/<slug>` branch to the arbiter with
|
|
199
|
+
* `--force-with-lease`, surviving a STALE-LEASE ("stale info") rejection by
|
|
200
|
+
* re-observing the arbiter's tip and replaying our green work onto it — instead
|
|
201
|
+
* of stranding a committed, gate-green build in the job worktree (the observed
|
|
202
|
+
* `advance-verb-resolver` incident).
|
|
203
|
+
*
|
|
204
|
+
* WHY a retry is SAFE here: the `work/<slug>` branch is UNSHARED — the arbiter
|
|
205
|
+
* CAS serialises the claim per slug, so no rival writer legitimately advances it
|
|
206
|
+
* concurrently. The lease's job is to catch a STALE LOCAL view, not a rival; so
|
|
207
|
+
* on a stale-lease rejection the correct response is to re-fetch the actual
|
|
208
|
+
* remote tip, rebase our work onto current main, and push again, re-leased
|
|
209
|
+
* against the JUST-fetched ref. This stays within the existing guardrails:
|
|
210
|
+
* `--force-with-lease` ONLY (re-computed each attempt), NEVER bare `--force`,
|
|
211
|
+
* NEVER targeting `main`, the WORK branch ONLY (ADR §11).
|
|
212
|
+
*
|
|
213
|
+
* The flow, bounded by `retries` (default {@link DEFAULT_STALE_LEASE_RETRIES},
|
|
214
|
+
* mirroring the claim/tasking-lock instant-contention cap):
|
|
215
|
+
* 1. Push `<branch>:<branch> --force-with-lease=<branch>:<expectedRemoteTip>`.
|
|
216
|
+
* 2. On success → `{kind: 'pushed'}`.
|
|
217
|
+
* 3. On a STALE-LEASE rejection → re-fetch `main` + `<branch>` from the arbiter
|
|
218
|
+
* (into a remote-tracking ref, since the branch is CHECKED OUT here), re-run
|
|
219
|
+
* the onboard-time rebase onto the freshly-fetched main, and retry with the
|
|
220
|
+
* lease re-leased against the freshly-fetched remote tip. A rebase CONFLICT
|
|
221
|
+
* on a retry → `{kind: 'conflict'}` (the existing abort → needs-attention
|
|
222
|
+
* path; the retry covers ONLY the clean-rebase stale-lease case).
|
|
223
|
+
* 4. After the cap → THROW a clear terminal error (the green work is still
|
|
224
|
+
* committed on the branch, so the caller's needs-attention route keeps it
|
|
225
|
+
* recoverable).
|
|
226
|
+
* 5. Any NON-stale push failure (connectivity, protected ref) → THROW at once
|
|
227
|
+
* (never re-leased, never silently swallowed).
|
|
228
|
+
*
|
|
229
|
+
* `expectedRemoteTip` is the arbiter `work/<slug>` sha the caller already
|
|
230
|
+
* observed (the pre-rebase mirror head). The explicit `<branch>:<sha>` lease is
|
|
231
|
+
* REQUIRED in the bare-hub-mirror worktree, which has no `refs/remotes/origin/*`
|
|
232
|
+
* upstream for git to imply the lease from. Must be called while HEAD is the
|
|
233
|
+
* continued `<branch>`.
|
|
234
|
+
*/
|
|
235
|
+
export declare function pushContinuedBranchWithStaleLeaseRetry(options: {
|
|
236
|
+
cwd: string;
|
|
237
|
+
branch: string;
|
|
238
|
+
/** The arbiter remote name to push to / re-fetch from (e.g. `origin`). */
|
|
239
|
+
arbiter: string;
|
|
240
|
+
/** The local main ref to rebase onto across retries (e.g. `main`). */
|
|
241
|
+
mainRef: string;
|
|
242
|
+
/** The arbiter `<branch>` sha the caller already observed (pre-rebase tip). */
|
|
243
|
+
expectedRemoteTip: string;
|
|
244
|
+
retries?: number;
|
|
245
|
+
env: NodeJS.ProcessEnv | undefined;
|
|
246
|
+
/** Optional progress note sink (mirrors the claim loop's `note`). */
|
|
247
|
+
note?: (message: string) => void;
|
|
248
|
+
}): ContinuedPushResult;
|
|
249
|
+
//# sourceMappingURL=continue-branch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"continue-branch.d.ts","sourceRoot":"","sources":["../src/continue-branch.ts"],"names":[],"mappings":"AAuCA;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC5B,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,GAChC,OAAO,CAwBT;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,aAAa,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,qFAAqF;IACrF,SAAS,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;CACnC,GAAG,OAAO,CAiBV;AAED,+EAA+E;AAC/E,MAAM,WAAW,oBAAoB;IACpC,gEAAgE;IAChE,oFAAoF;IACpF,IAAI,EAAE,OAAO,GAAG,UAAU,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,6BAA6B,CAC5C,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,GAChC,oBAAoB,CAYtB;AAED;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAE7C;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB;AAC5B,sFAAsF;AACpF;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAC;AAClB;;;;;;;;GAQG;GACD;IAAC,IAAI,EAAE,gBAAgB,CAAA;CAAC,CAAC;AAE5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,oCAAoC,CAAC,OAAO,EAAE;IAC7D,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;IACnC,0EAA0E;IAC1E,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC,GAAG,iBAAiB,CA6GpB;AAED,qEAAqE;AACrE,MAAM,MAAM,mBAAmB;AAC9B,oFAAoF;AAClF;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAC;AAClB;;;;GAIG;GACD;IAAC,IAAI,EAAE,UAAU,CAAA;CAAC,CAAC;AAEtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,sCAAsC,CAAC,OAAO,EAAE;IAC/D,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;IACnC,qEAAqE;IACrE,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC,GAAG,mBAAmB,CAiFtB"}
|