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
package/dist/start.js
ADDED
|
@@ -0,0 +1,633 @@
|
|
|
1
|
+
import { performClaim } from './claim-cas.js';
|
|
2
|
+
import { readItemLock } from './item-lock.js';
|
|
3
|
+
import { ledgerWrite } from './ledger-write.js';
|
|
4
|
+
import { branchAheadOfArbiter, rebaseContinuedBranchOntoMain, pushContinuedBranchWithStaleLeaseRetry, } from './continue-branch.js';
|
|
5
|
+
import { runAsync } from './git.js';
|
|
6
|
+
import { workFolderRel } from './work-layout.js';
|
|
7
|
+
import { workBranchRef, parseWorkBranchRef } from './slug-namespace.js';
|
|
8
|
+
const DEFAULT_ARBITER = 'origin';
|
|
9
|
+
/** Raised for usage/environment errors (exit 1, outcome 'usage-error'). */
|
|
10
|
+
class StartUsageError extends Error {
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Raised for a deliberate REFUSAL (exit 1, outcome 'refused') — distinct from a
|
|
14
|
+
* usage/environment error. Used when the item exists but start declines to act
|
|
15
|
+
* (an in-progress item without --resume). The decision is folder-based.
|
|
16
|
+
*/
|
|
17
|
+
class StartRefusal extends Error {
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Run the start ritual. Never throws for the expected lost/contended/refused
|
|
21
|
+
* cases — those are returned with the appropriate exit code. Usage/environment
|
|
22
|
+
* problems and refusals surface as exit 1.
|
|
23
|
+
*/
|
|
24
|
+
export async function performStart(options) {
|
|
25
|
+
const note = options.note ?? (() => { });
|
|
26
|
+
try {
|
|
27
|
+
return await runStart(options, note);
|
|
28
|
+
}
|
|
29
|
+
catch (err) {
|
|
30
|
+
if (err instanceof StartRefusal) {
|
|
31
|
+
return { exitCode: 1, outcome: 'refused', message: err.message };
|
|
32
|
+
}
|
|
33
|
+
if (err instanceof StartUsageError) {
|
|
34
|
+
return { exitCode: 1, outcome: 'usage-error', message: err.message };
|
|
35
|
+
}
|
|
36
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
37
|
+
return { exitCode: 1, outcome: 'usage-error', message };
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
async function runStart(options, note) {
|
|
41
|
+
const arbiter = options.arbiter ?? DEFAULT_ARBITER;
|
|
42
|
+
const cwd = options.cwd;
|
|
43
|
+
const env = options.env;
|
|
44
|
+
if ((await gitSoft(['rev-parse', '--git-dir'], cwd, env)).status !== 0) {
|
|
45
|
+
throw new StartUsageError('not inside a git repository');
|
|
46
|
+
}
|
|
47
|
+
if ((await gitSoft(['remote', 'get-url', arbiter], cwd, env)).status !== 0) {
|
|
48
|
+
throw new StartUsageError(`no git remote named '${arbiter}' (set one, or pass --arbiter)`);
|
|
49
|
+
}
|
|
50
|
+
// Resolve the slug: explicit wins; otherwise infer from a `work/<slug>` branch.
|
|
51
|
+
const slug = options.slug || (await inferSlugFromBranch(cwd, env));
|
|
52
|
+
if (!slug) {
|
|
53
|
+
throw new StartUsageError('missing <slug> and the current branch is not a work/<slug> branch. ' +
|
|
54
|
+
'usage: dorfl start [<slug>] [--arbiter remote] [--resume]');
|
|
55
|
+
}
|
|
56
|
+
// Folder on the arbiter's main is the source of truth (NOT claimed_by) for the
|
|
57
|
+
// DURABLE residence; HELD-NESS is read from the per-item LOCK ref, not a folder.
|
|
58
|
+
await gitHard(['fetch', '--quiet', arbiter], cwd, env);
|
|
59
|
+
const folder = await dispatchFolder(slug, arbiter, cwd, env, options.allowBacklog === true);
|
|
60
|
+
const result = await onboardFromFolder(folder, {
|
|
61
|
+
options,
|
|
62
|
+
slug,
|
|
63
|
+
arbiter,
|
|
64
|
+
cwd,
|
|
65
|
+
env,
|
|
66
|
+
note,
|
|
67
|
+
});
|
|
68
|
+
// `--agent` (task `agent-interactive-launch`): when the human onboarded onto a
|
|
69
|
+
// work branch (started/resumed/resolved — exit 0 with a branch), launch the
|
|
70
|
+
// configured harness INTERACTIVELY in the checkout so they can immediately drive
|
|
71
|
+
// the agent. It is NOT a tracked job (decision #3): no record, no gate — it
|
|
72
|
+
// blocks in the foreground until the human exits, then control returns and they
|
|
73
|
+
// drive `complete`/`requeue`. On a failed/refused onboard we never launch.
|
|
74
|
+
if (options.launchInteractive &&
|
|
75
|
+
result.exitCode === 0 &&
|
|
76
|
+
result.branch !== undefined) {
|
|
77
|
+
note(`Launching the configured harness interactively in ${cwd}.`);
|
|
78
|
+
options.launchInteractive({ slug, dir: cwd, env });
|
|
79
|
+
}
|
|
80
|
+
return result;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Resolve the EFFECTIVE dispatch folder, combining the durable `<arbiter>/main`
|
|
84
|
+
* folder with the per-item LOCK ref. Since claim no longer moves the body, a
|
|
85
|
+
* CLAIMED-AND-IN-FLIGHT task RESTS in `backlog/` on `main` (task
|
|
86
|
+
* `cutover-claim-body-stays-and-complete-sources-from-backlog`), and a STUCK item
|
|
87
|
+
* is the per-item lock `state: stuck` (NOT a `needs-attention/` folder file —
|
|
88
|
+
* task `cutover-needs-attention-becomes-lock-stuck-recovery-surface`, decision
|
|
89
|
+
* i+: the folder is retired). So a folder-only check would mis-read either as
|
|
90
|
+
* unclaimed and let `start` re-claim it. We re-key the dispatch off the LOCK when
|
|
91
|
+
* the body is in `backlog/`:
|
|
92
|
+
* - held `active` (`action: implement`) ⇒ `in-progress` (already claimed:
|
|
93
|
+
* refuse / `--resume`);
|
|
94
|
+
* - held `stuck` ⇒ `needs-attention` (the recovery dispatch: print the reason,
|
|
95
|
+
* resume the lock `stuck → active`, onboard).
|
|
96
|
+
* Everything else dispatches by folder unchanged.
|
|
97
|
+
*
|
|
98
|
+
* Under `--allow-backlog` (prd
|
|
99
|
+
* `do-allow-backlog-drive-staged-tasks-without-promotion`) a body resting in
|
|
100
|
+
* `tasks/backlog/` (staging) is treated EXACTLY like the pool for this re-key
|
|
101
|
+
* (held active ⇒ in-progress; held stuck ⇒ needs-attention; else the backlog
|
|
102
|
+
* onboard), so the no-checkout `do … --allow-backlog` flow that claimed a staged
|
|
103
|
+
* task (the body stays in `tasks/backlog/`) onboards instead of reading `absent`.
|
|
104
|
+
*/
|
|
105
|
+
async function dispatchFolder(slug, arbiter, cwd, env, allowBacklog = false) {
|
|
106
|
+
const folder = await folderOnArbiterMain(slug, arbiter, cwd, env, allowBacklog);
|
|
107
|
+
// `--allow-backlog`: a staged (`tasks-backlog`) body re-keys like the pool.
|
|
108
|
+
const inPool = folder === 'tasks-ready' || folder === 'tasks-backlog';
|
|
109
|
+
if (!inPool) {
|
|
110
|
+
return folder;
|
|
111
|
+
}
|
|
112
|
+
// In the pool/staging: claimed-ness + stuck-ness are the per-item lock, not the folder.
|
|
113
|
+
const lock = await readItemLock({ item: `task:${slug}`, cwd, arbiter, env });
|
|
114
|
+
if (lock && lock.state === 'stuck') {
|
|
115
|
+
return 'needs-attention';
|
|
116
|
+
}
|
|
117
|
+
if (lock && lock.state === 'active') {
|
|
118
|
+
return 'in-progress';
|
|
119
|
+
}
|
|
120
|
+
return 'tasks-ready';
|
|
121
|
+
}
|
|
122
|
+
/** Dispatch the onboard by the slug's resolved (folder + lock) state. */
|
|
123
|
+
async function onboardFromFolder(folder, params) {
|
|
124
|
+
const { options, slug, arbiter, cwd, env, note } = params;
|
|
125
|
+
switch (folder) {
|
|
126
|
+
case 'tasks-ready':
|
|
127
|
+
return startFromBacklog({
|
|
128
|
+
slug,
|
|
129
|
+
arbiter,
|
|
130
|
+
cwd,
|
|
131
|
+
env,
|
|
132
|
+
override: options.override ?? false,
|
|
133
|
+
note,
|
|
134
|
+
});
|
|
135
|
+
case 'in-progress':
|
|
136
|
+
return startFromInProgress({
|
|
137
|
+
slug,
|
|
138
|
+
arbiter,
|
|
139
|
+
cwd,
|
|
140
|
+
env,
|
|
141
|
+
resume: options.resume ?? false,
|
|
142
|
+
note,
|
|
143
|
+
});
|
|
144
|
+
case 'needs-attention':
|
|
145
|
+
return startFromNeedsAttention({ slug, arbiter, cwd, env, note });
|
|
146
|
+
case 'done':
|
|
147
|
+
throw new StartUsageError(`'${slug}' is already done on ${arbiter}/main — nothing to start.`);
|
|
148
|
+
case 'absent':
|
|
149
|
+
throw new StartUsageError(`'${slug}' is not present on ${arbiter}/main (no backlog/in-progress item — wrong slug?).`);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Backlog → claim via the CAS, and ONLY on a winning claim (exit 0) switch to
|
|
154
|
+
* the work branch. A lost (exit 2) / contended (exit 3) claim is propagated
|
|
155
|
+
* verbatim: the user is left exactly as `claim` left them, with NO work branch.
|
|
156
|
+
*/
|
|
157
|
+
async function startFromBacklog(params) {
|
|
158
|
+
const { slug, arbiter, cwd, env, override, note } = params;
|
|
159
|
+
// The human-path readiness guard lives in the claim CAS (so both `claim` and
|
|
160
|
+
// `start` inherit it): an unmet `blockedBy` is refused (exit 1, 'not-ready')
|
|
161
|
+
// unless overridden; a `needsAnswers` task warns but still claims.
|
|
162
|
+
const claim = await performClaim({
|
|
163
|
+
slug,
|
|
164
|
+
cwd,
|
|
165
|
+
arbiter,
|
|
166
|
+
env,
|
|
167
|
+
humanPath: true,
|
|
168
|
+
override,
|
|
169
|
+
note,
|
|
170
|
+
});
|
|
171
|
+
if (claim.exitCode !== 0) {
|
|
172
|
+
// not-ready (1) / lost (2) / contended (3) / usage (1): behave exactly like
|
|
173
|
+
// `claim`. Create no work branch; propagate the exit code and outcome. A
|
|
174
|
+
// readiness refusal surfaces as 'refused' (a deliberate decline), distinct
|
|
175
|
+
// from a usage/environment error.
|
|
176
|
+
const outcome = claim.outcome === 'not-ready'
|
|
177
|
+
? 'refused'
|
|
178
|
+
: claim.exitCode === 2
|
|
179
|
+
? 'lost'
|
|
180
|
+
: claim.exitCode === 3
|
|
181
|
+
? 'contended'
|
|
182
|
+
: 'usage-error';
|
|
183
|
+
return { exitCode: claim.exitCode, outcome, message: claim.message };
|
|
184
|
+
}
|
|
185
|
+
// The claim landed — the item is now in-progress on the arbiter. Onboard the
|
|
186
|
+
// human onto the work branch: CONTINUE from a kept arbiter work/<slug> when one
|
|
187
|
+
// exists ahead of main (a requeue), else cut fresh off the NEW main (which
|
|
188
|
+
// includes the claim).
|
|
189
|
+
const switched = await switchToWorkBranch({ slug, arbiter, cwd, env, note });
|
|
190
|
+
if (switched.rebaseConflict) {
|
|
191
|
+
return continueConflictResult({ slug, arbiter, cwd, env, note });
|
|
192
|
+
}
|
|
193
|
+
if (switched.pushFailure !== undefined) {
|
|
194
|
+
return continuePushFailureResult({
|
|
195
|
+
slug,
|
|
196
|
+
arbiter,
|
|
197
|
+
cwd,
|
|
198
|
+
pushFailure: switched.pushFailure,
|
|
199
|
+
env,
|
|
200
|
+
note,
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
const branch = switched.branch;
|
|
204
|
+
const message = switched.continued
|
|
205
|
+
? `Started '${slug}': claimed and continued ${branch} from the kept branch.`
|
|
206
|
+
: `Started '${slug}': claimed and switched to ${branch}.`;
|
|
207
|
+
note(message);
|
|
208
|
+
return { exitCode: 0, outcome: 'started', branch, message };
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Build the terminal StartResult for a CONTINUE rebase conflict: route the item
|
|
212
|
+
* to needs-attention (the §10 path) and return the 'needs-attention' outcome.
|
|
213
|
+
*/
|
|
214
|
+
async function continueConflictResult(params) {
|
|
215
|
+
const surfaced = await routeContinueConflict(params);
|
|
216
|
+
if (!surfaced.moved) {
|
|
217
|
+
return surfaceUnmovedStartResult({ slug: params.slug, surfaced });
|
|
218
|
+
}
|
|
219
|
+
const message = `Could not continue '${params.slug}': the kept work branch did not rebase ` +
|
|
220
|
+
`cleanly onto ${params.arbiter}/main; routed to work/needs-attention/ ` +
|
|
221
|
+
'(surfaced by status). Resolve against the latest main, or `requeue --reset` ' +
|
|
222
|
+
'to discard and start fresh.';
|
|
223
|
+
return {
|
|
224
|
+
exitCode: 1,
|
|
225
|
+
outcome: 'needs-attention',
|
|
226
|
+
branch: workBranchRef('task', params.slug),
|
|
227
|
+
message,
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Build the terminal StartResult for a CONTINUE reconcile-push that FAILED
|
|
232
|
+
* TERMINALLY (the stale-lease retry cap exhausted, or a non-connectivity
|
|
233
|
+
* rejection like a protected ref) \u2014 NOT a tolerated offline arbiter. Route the
|
|
234
|
+
* item to needs-attention (the SAME \u00a712 surface the conflict path uses) so the
|
|
235
|
+
* already-committed kept work is NOT left silently in-progress (the
|
|
236
|
+
* stale-lease-strand bug this task kills), then return the 'needs-attention'
|
|
237
|
+
* outcome with a message naming the push failure.
|
|
238
|
+
*/
|
|
239
|
+
async function continuePushFailureResult(params) {
|
|
240
|
+
const surfaced = await routeContinuePushFailure(params);
|
|
241
|
+
if (!surfaced.moved) {
|
|
242
|
+
return surfaceUnmovedStartResult({ slug: params.slug, surfaced });
|
|
243
|
+
}
|
|
244
|
+
const message = `Could not continue '${params.slug}': publishing the rebased work branch to ` +
|
|
245
|
+
`${params.arbiter} failed terminally (${params.pushFailure}); routed to ` +
|
|
246
|
+
'work/needs-attention/ (surfaced by status), the kept branch left intact on ' +
|
|
247
|
+
'the arbiter (recoverable). `requeue` to retry once the churn settles.';
|
|
248
|
+
return {
|
|
249
|
+
exitCode: 1,
|
|
250
|
+
outcome: 'needs-attention',
|
|
251
|
+
branch: workBranchRef('task', params.slug),
|
|
252
|
+
message,
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* needs-attention → a runner bounced this stuck item. Picking it up is
|
|
257
|
+
* UNGUARDED (a stuck item is explicitly up-for-grabs — no --resume): print the
|
|
258
|
+
* recorded reason, transition it back to in-progress THROUGH the write seam
|
|
259
|
+
* (mode M clears the `main` surface via the reverse move), then switch onto
|
|
260
|
+
* work/<slug>. NO manual file move — the seam owns the transition.
|
|
261
|
+
*/
|
|
262
|
+
async function startFromNeedsAttention(params) {
|
|
263
|
+
const { slug, arbiter, cwd, env, note } = params;
|
|
264
|
+
// Surface the recorded reason for the human, read from the STUCK LOCK ENTRY
|
|
265
|
+
// (task `cutover-needs-attention-becomes-lock-stuck-recovery-surface`: the lock
|
|
266
|
+
// is the sole stuck record — no `needs-attention/` folder file). The full reason
|
|
267
|
+
// prose + any surfaced questions ride on the lock entry body.
|
|
268
|
+
const stuck = await readItemLock({ item: `task:${slug}`, cwd, arbiter, env });
|
|
269
|
+
if (stuck?.reason) {
|
|
270
|
+
note(`'${slug}' is stuck (needs-attention): ${stuck.reason}`);
|
|
271
|
+
}
|
|
272
|
+
else {
|
|
273
|
+
note(`'${slug}' is stuck (needs-attention) — picking it up.`);
|
|
274
|
+
}
|
|
275
|
+
if (stuck?.questions && stuck.questions.length > 0) {
|
|
276
|
+
note('Surfaced questions:');
|
|
277
|
+
for (const q of stuck.questions) {
|
|
278
|
+
note(` - ${q}`);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
// Resume the lock `stuck → active` THROUGH the write seam (a pure lock amend, NO
|
|
282
|
+
// `main` write, NO temp checkout — the body already rests in `backlog/` and the
|
|
283
|
+
// work stays on the kept `work/<slug>` branch), then onboard onto work/<slug>.
|
|
284
|
+
const resolved = await ledgerWrite.applyResolveNeedsAttentionTransition({
|
|
285
|
+
cwd,
|
|
286
|
+
slug,
|
|
287
|
+
arbiter,
|
|
288
|
+
env,
|
|
289
|
+
note,
|
|
290
|
+
});
|
|
291
|
+
if (!resolved.moved) {
|
|
292
|
+
throw new StartUsageError(resolved.reasonNotMoved ??
|
|
293
|
+
`could not resolve '${slug}' from needs-attention.`);
|
|
294
|
+
}
|
|
295
|
+
// The lock is back to active (the human owns it). Onboard onto the work branch:
|
|
296
|
+
// CONTINUE from a kept arbiter work/<slug> when present, else fresh off main.
|
|
297
|
+
const switched = await switchToWorkBranch({ slug, arbiter, cwd, env, note });
|
|
298
|
+
if (switched.rebaseConflict) {
|
|
299
|
+
return continueConflictResult({ slug, arbiter, cwd, env, note });
|
|
300
|
+
}
|
|
301
|
+
if (switched.pushFailure !== undefined) {
|
|
302
|
+
return continuePushFailureResult({
|
|
303
|
+
slug,
|
|
304
|
+
arbiter,
|
|
305
|
+
cwd,
|
|
306
|
+
pushFailure: switched.pushFailure,
|
|
307
|
+
env,
|
|
308
|
+
note,
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
const branch = switched.branch;
|
|
312
|
+
const message = `Started '${slug}': resolved from needs-attention and switched to ${branch}.`;
|
|
313
|
+
note(message);
|
|
314
|
+
return { exitCode: 0, outcome: 'resolved', branch, message };
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* In-progress → already claimed (it is no longer in backlog, so the CAS cannot
|
|
318
|
+
* apply). Refuse by default. With --resume the human explicitly asserts
|
|
319
|
+
* ownership, so we switch to the work branch WITHOUT claiming. The decision is
|
|
320
|
+
* folder-based; we never read the advisory `claimed_by` to guess ownership.
|
|
321
|
+
*/
|
|
322
|
+
async function startFromInProgress(params) {
|
|
323
|
+
const { slug, arbiter, cwd, env, resume, note } = params;
|
|
324
|
+
if (!resume) {
|
|
325
|
+
// The folder drove the decision (WORK-CONTRACT rule 6: the folder + git
|
|
326
|
+
// history are the source of truth). We do NOT name the claimer in the
|
|
327
|
+
// message; whoever holds it is read from git history
|
|
328
|
+
// (`git log work/in-progress/<slug>.md`).
|
|
329
|
+
throw new StartRefusal(`'${slug}' is already in-progress; see \`git log\` for who claimed it; ` +
|
|
330
|
+
'if this is your own work, re-run with --resume.');
|
|
331
|
+
}
|
|
332
|
+
const switched = await switchToWorkBranch({ slug, arbiter, cwd, env, note });
|
|
333
|
+
if (switched.rebaseConflict) {
|
|
334
|
+
return continueConflictResult({ slug, arbiter, cwd, env, note });
|
|
335
|
+
}
|
|
336
|
+
if (switched.pushFailure !== undefined) {
|
|
337
|
+
return continuePushFailureResult({
|
|
338
|
+
slug,
|
|
339
|
+
arbiter,
|
|
340
|
+
cwd,
|
|
341
|
+
pushFailure: switched.pushFailure,
|
|
342
|
+
env,
|
|
343
|
+
note,
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
const branch = switched.branch;
|
|
347
|
+
const message = `Resumed '${slug}': switched to ${branch} (no claim).`;
|
|
348
|
+
note(message);
|
|
349
|
+
return { exitCode: 0, outcome: 'resumed', branch, message };
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Onboard the checkout onto `work/<slug>`, CONTINUE-AWARE (the keystone of the
|
|
353
|
+
* `requeue-continue-and-reset` task). `git fetch <arbiter>`, then:
|
|
354
|
+
*
|
|
355
|
+
* - **CONTINUE** when the arbiter has a `work/<slug>` ref AHEAD of main (a
|
|
356
|
+
* `requeue` kept it): switch onto that kept branch (a local tracking branch
|
|
357
|
+
* off `<arbiter>/work/<slug>`) and REBASE it onto the freshly-fetched
|
|
358
|
+
* `<arbiter>/main` at onboard-time, so the agent builds on a CURRENT base
|
|
359
|
+
* (ADR §10: rebase, not merge). A CLEAN rebase continues; a CONFLICTING
|
|
360
|
+
* rebase is aborted (never auto-resolved) and reported so the caller routes
|
|
361
|
+
* to needs-attention. The rebased tip is published to the already-pushed
|
|
362
|
+
* work branch with `--force-with-lease` on the WORK branch only (a requeued
|
|
363
|
+
* item is unshared) — NEVER `--force` to main (§11).
|
|
364
|
+
* - **FRESH** otherwise (no kept branch — a first attempt, or a
|
|
365
|
+
* `requeue --reset` deleted it): `git switch -c work/<slug> <arbiter>/main`
|
|
366
|
+
* (today's behaviour). If the branch already exists LOCALLY (a re-run /
|
|
367
|
+
* resume) plain-switch to it.
|
|
368
|
+
*/
|
|
369
|
+
async function switchToWorkBranch(params) {
|
|
370
|
+
const { slug, arbiter, cwd, env, note } = params;
|
|
371
|
+
// `start` is a TASK-only command: the branch is the task-namespaced
|
|
372
|
+
// `work/task-<slug>` (distinct from a same-slug prd-tasking branch).
|
|
373
|
+
const branch = workBranchRef('task', slug);
|
|
374
|
+
await gitHard(['fetch', '--quiet', arbiter], cwd, env);
|
|
375
|
+
// CONTINUE-detection (shared with the job-worktree path): does the arbiter
|
|
376
|
+
// have a `work/<slug>` ref AHEAD of main? ARBITER-AUTHORITATIVE: `ls-remote`
|
|
377
|
+
// the arbiter so a STALE local remote-tracking ref (a plain `git fetch` does
|
|
378
|
+
// NOT prune unless `fetch.prune` is set — verified live in the task obs)
|
|
379
|
+
// pointing at a branch the arbiter no longer has cannot resurrect a deleted
|
|
380
|
+
// branch as a "continue". In a normal clone the local refs are the
|
|
381
|
+
// remote-tracking `<arbiter>/work/<slug>` and `<arbiter>/main`.
|
|
382
|
+
const ahead = branchAheadOfArbiter({
|
|
383
|
+
cwd,
|
|
384
|
+
arbiterRemote: arbiter,
|
|
385
|
+
branch,
|
|
386
|
+
branchRef: `${arbiter}/${branch}`,
|
|
387
|
+
mainRef: `${arbiter}/main`,
|
|
388
|
+
env,
|
|
389
|
+
});
|
|
390
|
+
if (ahead) {
|
|
391
|
+
return continueFromKeptBranch({ slug, arbiter, cwd, env, note });
|
|
392
|
+
}
|
|
393
|
+
// FRESH cut: prefer creating the branch off the latest arbiter main (it
|
|
394
|
+
// includes the claim move). If it already exists locally, plain-switch to it.
|
|
395
|
+
const created = await gitSoft(['switch', '--quiet', '-c', branch, `${arbiter}/main`], cwd, env);
|
|
396
|
+
if (created.status === 0) {
|
|
397
|
+
return { branch, continued: false, rebaseConflict: false };
|
|
398
|
+
}
|
|
399
|
+
const switched = await gitSoft(['switch', '--quiet', branch], cwd, env);
|
|
400
|
+
if (switched.status === 0) {
|
|
401
|
+
return { branch, continued: false, rebaseConflict: false };
|
|
402
|
+
}
|
|
403
|
+
throw new StartUsageError(`failed to switch to ${branch}: ${created.stderr.trim() || switched.stderr.trim()}`);
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* CONTINUE onto a kept arbiter `work/<slug>`: switch onto it (resetting any
|
|
407
|
+
* stale local branch to the arbiter tip), rebase onto the freshly-fetched
|
|
408
|
+
* `<arbiter>/main`, and — on a CLEAN rebase — update the already-pushed work
|
|
409
|
+
* branch with `--force-with-lease` on the WORK branch only (never main, §11). A
|
|
410
|
+
* CONFLICTING rebase is aborted and reported (`rebaseConflict: true`).
|
|
411
|
+
*/
|
|
412
|
+
async function continueFromKeptBranch(params) {
|
|
413
|
+
const { slug, arbiter, cwd, env, note } = params;
|
|
414
|
+
const branch = workBranchRef('task', slug);
|
|
415
|
+
note(`Continuing '${slug}' from the kept ${arbiter}/${branch} (requeue).`);
|
|
416
|
+
// Land the local work branch ON the kept arbiter tip (force-reset a stale
|
|
417
|
+
// local branch so we continue the SAME single branch, not a divergent copy).
|
|
418
|
+
await gitHard(['switch', '--quiet', '-C', branch, `${arbiter}/${branch}`], cwd, env);
|
|
419
|
+
// REBASE onto the freshly-fetched main at onboard-time (§10: rebase, not
|
|
420
|
+
// merge) so the agent builds on a CURRENT base. Conflict → aborted + reported.
|
|
421
|
+
const rebase = rebaseContinuedBranchOntoMain(cwd, `${arbiter}/main`, env);
|
|
422
|
+
if (rebase.kind === 'conflict') {
|
|
423
|
+
return { branch, continued: true, rebaseConflict: true };
|
|
424
|
+
}
|
|
425
|
+
// The arbiter `work/<slug>` tip the fetch above brought down, READ AFTER the
|
|
426
|
+
// rebase — the rebase rewrote only the LOCAL branch, so the remote-tracking ref
|
|
427
|
+
// `<arbiter>/<branch>` still holds the PRE-rebase arbiter sha (the value the
|
|
428
|
+
// --force-with-lease push expects the arbiter to still hold). It is non-empty
|
|
429
|
+
// here: `branchAheadOf` proved the ref resolves (the CONTINUE precondition).
|
|
430
|
+
const expectedRemoteTip = (await gitHard(['rev-parse', `${arbiter}/${branch}`], cwd, env)).stdout.trim();
|
|
431
|
+
// The rebase may have rewritten SHAs vs the already-pushed tip, so updating it
|
|
432
|
+
// is a non-fast-forward. Reconcile with --force-with-lease on the WORK branch
|
|
433
|
+
// ONLY (a requeued item is unshared) — NEVER --force, and NEVER to main (§11),
|
|
434
|
+
// SURVIVING a stale-lease ("stale info") rejection by re-fetching + re-rebasing
|
|
435
|
+
// + retrying (the SAME helper `workspace.ts`/`isolation.ts` use).
|
|
436
|
+
//
|
|
437
|
+
// BEST-EFFORT, but DISCRIMINATING (NOT a blanket swallow — the silent-strand
|
|
438
|
+
// bug this guard kills): the helper THROWS, so we catch it and split the cause.
|
|
439
|
+
// An OFFLINE / unreachable-arbiter throw is TOLERATED exactly as the bare
|
|
440
|
+
// `gitSoft` push was — the local rebased branch is left, and `complete`'s push
|
|
441
|
+
// handles it later. A REAL terminal failure (the stale-lease retry cap, or a
|
|
442
|
+
// non-connectivity rejection like a protected ref) is NOT swallowed: it is
|
|
443
|
+
// reported up as `pushFailure` so the caller surfaces the item to
|
|
444
|
+
// needs-attention rather than leaving the committed kept work silently
|
|
445
|
+
// in-progress.
|
|
446
|
+
try {
|
|
447
|
+
const pushed = pushContinuedBranchWithStaleLeaseRetry({
|
|
448
|
+
cwd,
|
|
449
|
+
branch,
|
|
450
|
+
arbiter,
|
|
451
|
+
mainRef: `${arbiter}/main`,
|
|
452
|
+
expectedRemoteTip,
|
|
453
|
+
env,
|
|
454
|
+
note,
|
|
455
|
+
});
|
|
456
|
+
if (pushed.kind === 'conflict') {
|
|
457
|
+
return { branch, continued: true, rebaseConflict: true };
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
catch (err) {
|
|
461
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
462
|
+
if (isOfflinePushFailure(message)) {
|
|
463
|
+
// Tolerated (today's behaviour): the arbiter is unreachable, so the local
|
|
464
|
+
// rebased branch is left and `complete`'s later push handles it.
|
|
465
|
+
note(`Could not push ${branch} to ${arbiter} (arbiter unreachable) — the ` +
|
|
466
|
+
'local rebased branch is left; `complete` pushes it later.');
|
|
467
|
+
}
|
|
468
|
+
else {
|
|
469
|
+
// A REAL terminal failure — surface it (do NOT silently strand the work).
|
|
470
|
+
return {
|
|
471
|
+
branch,
|
|
472
|
+
continued: true,
|
|
473
|
+
rebaseConflict: false,
|
|
474
|
+
pushFailure: message,
|
|
475
|
+
};
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
return { branch, continued: true, rebaseConflict: false };
|
|
479
|
+
}
|
|
480
|
+
/**
|
|
481
|
+
* Discriminate the THROW from {@link pushContinuedBranchWithStaleLeaseRetry} at
|
|
482
|
+
* the `start` continue-push site: is it a TOLERATED offline/unreachable-arbiter
|
|
483
|
+
* outage (the existing best-effort case — `complete` pushes later), or a REAL
|
|
484
|
+
* terminal failure that must SURFACE (the stale-lease retry cap exhausted, or a
|
|
485
|
+
* non-connectivity rejection like a protected ref)?
|
|
486
|
+
*
|
|
487
|
+
* The helper throws ONLY two shapes: a `(not a stale lease)` push failure
|
|
488
|
+
* carrying the raw git stderr, or a `kept failing with a stale --force-with-lease`
|
|
489
|
+
* cap-exhausted message. The cap message is ALWAYS a real give-up. A non-stale
|
|
490
|
+
* push failure is OFFLINE only when its stderr matches a git connectivity
|
|
491
|
+
* signature (unable to access / could not read from remote / connection refused /
|
|
492
|
+
* could not resolve host / ssh connect) — anything else (a protected ref, a hook
|
|
493
|
+
* rejection) is a real failure that must surface. Conservative: an unmatched
|
|
494
|
+
* cause is treated as a REAL failure (surface), never silently swallowed.
|
|
495
|
+
*/
|
|
496
|
+
function isOfflinePushFailure(message) {
|
|
497
|
+
// The retry-cap give-up is never "offline" — it is a real terminal failure.
|
|
498
|
+
if (/kept failing with a stale --force-with-lease/i.test(message)) {
|
|
499
|
+
return false;
|
|
500
|
+
}
|
|
501
|
+
return /unable to access|could not read from remote repository|connection (?:refused|reset|timed out)|could not resolve host|ssh: connect to host|network is unreachable|\bECONN(?:REFUSED|RESET)\b|\bENOTFOUND\b|\bETIMEDOUT\b/i.test(message);
|
|
502
|
+
}
|
|
503
|
+
/**
|
|
504
|
+
* Build the HONEST {@link StartResult} for a CONTINUE-site surface that did NOT
|
|
505
|
+
* land on the arbiter (`{moved: false}`). The tree-less `in-progress/ →
|
|
506
|
+
* needs-attention/` move lost the CAS race against a busy arbiter (its
|
|
507
|
+
* contention-retry cap exhausted), so the item is STILL in-progress on the
|
|
508
|
+
* arbiter — a clean `needs-attention` outcome would mislead (it claims the
|
|
509
|
+
* surface landed). The DISTINCT `surface-unmoved` outcome carries
|
|
510
|
+
* `reasonNotMoved` so the human can tell it apart from a successful surface and
|
|
511
|
+
* retry/resolve.
|
|
512
|
+
*/
|
|
513
|
+
function surfaceUnmovedStartResult(params) {
|
|
514
|
+
const { slug, surfaced } = params;
|
|
515
|
+
const message = `'${slug}' could NOT be surfaced to needs-attention — the surface did not ` +
|
|
516
|
+
`reach the arbiter's main; the item is still IN-PROGRESS on the arbiter ` +
|
|
517
|
+
`(retry/resolve). ${surfaced.reasonNotMoved ?? ''}`.trim();
|
|
518
|
+
return {
|
|
519
|
+
exitCode: 1,
|
|
520
|
+
outcome: 'surface-unmoved',
|
|
521
|
+
branch: workBranchRef('task', slug),
|
|
522
|
+
message,
|
|
523
|
+
};
|
|
524
|
+
}
|
|
525
|
+
/**
|
|
526
|
+
* Route a CONTINUE rebase conflict to needs-attention (the §10 path): the kept
|
|
527
|
+
* branch's commits did not replay cleanly onto the current main, so a human must
|
|
528
|
+
* resolve (or `requeue --reset`).
|
|
529
|
+
*
|
|
530
|
+
* TREE-LESS (`#89` mechanism), the SAME-PROFILE sibling of
|
|
531
|
+
* {@link routeContinuePushFailure}: the rebase was ABORTED, so the REAL continued
|
|
532
|
+
* `work/<slug>` is already on the arbiter from the prior requeue, untouched
|
|
533
|
+
* (after-commit, durable, recoverable). The surface is PURELY the one-file
|
|
534
|
+
* `in-progress/ → needs-attention/` ledger `.md` move + reason — we publish it via
|
|
535
|
+
* the tree-less surface CAS (the SAME no-checkout primitive `requeue` uses for the
|
|
536
|
+
* reverse direction), NO temp-branch switch/restore, NO `pushBranch`, NO worktree.
|
|
537
|
+
*/
|
|
538
|
+
async function routeContinueConflict(params) {
|
|
539
|
+
const { slug, arbiter, cwd, env, note } = params;
|
|
540
|
+
const reason = `continuing the kept ${arbiter}/${workBranchRef('task', slug)}: rebase onto ` +
|
|
541
|
+
`${arbiter}/main conflicted (aborted, never auto-resolved) — resolve ` +
|
|
542
|
+
'against the latest main, or `requeue --reset` to discard and start fresh';
|
|
543
|
+
note(reason);
|
|
544
|
+
// PROPAGATE the {moved, reasonNotMoved} result to the caller so a `moved:false`
|
|
545
|
+
// (the surface did NOT reach main — lost the CAS race) is surfaced honestly
|
|
546
|
+
// instead of swallowed as `void`.
|
|
547
|
+
return ledgerWrite.applyTreelessNeedsAttentionTransition({
|
|
548
|
+
cwd,
|
|
549
|
+
slug,
|
|
550
|
+
reason,
|
|
551
|
+
arbiter,
|
|
552
|
+
env,
|
|
553
|
+
note,
|
|
554
|
+
});
|
|
555
|
+
}
|
|
556
|
+
/**
|
|
557
|
+
* Route a CONTINUE reconcile-push TERMINAL failure to needs-attention (the §12
|
|
558
|
+
* surface): the rebased work branch could not be published to the arbiter (the
|
|
559
|
+
* stale-lease retry cap exhausted, or a non-connectivity rejection) — so rather
|
|
560
|
+
* than leave the committed kept work silently in-progress, surface it on the
|
|
561
|
+
* arbiter's main. Mirrors {@link routeContinueConflict}'s temp-branch pattern.
|
|
562
|
+
*
|
|
563
|
+
* TREE-LESS (`#89` mechanism): the recoverable artifact — the kept `work/<slug>`
|
|
564
|
+
* — is ALREADY on the arbiter from the prior requeue (our local rebased tip is
|
|
565
|
+
* what FAILED to push, so it is not the cross-machine truth), and the work is
|
|
566
|
+
* already committed. So the surface is PURELY the one-file `in-progress/ →
|
|
567
|
+
* needs-attention/` ledger `.md` move + reason: we publish it via the tree-less
|
|
568
|
+
* surface CAS (the SAME no-checkout primitive `requeue` uses for the reverse
|
|
569
|
+
* direction) — NO temp-branch switch/restore, NO `pushBranch`, NO worktree. A
|
|
570
|
+
* `requeue` then continues from the kept arbiter tip.
|
|
571
|
+
*/
|
|
572
|
+
async function routeContinuePushFailure(params) {
|
|
573
|
+
const { slug, arbiter, cwd, pushFailure, env, note } = params;
|
|
574
|
+
const reason = `continuing the kept ${arbiter}/${workBranchRef('task', slug)}: publishing ` +
|
|
575
|
+
`the rebased work branch to ${arbiter} failed terminally (${pushFailure}) — ` +
|
|
576
|
+
'the kept branch is left intact on the arbiter (recoverable); `requeue` to ' +
|
|
577
|
+
'retry once the churn settles, or `requeue --reset` to discard and start fresh';
|
|
578
|
+
note(reason);
|
|
579
|
+
// PROPAGATE the {moved, reasonNotMoved} result to the caller so a `moved:false`
|
|
580
|
+
// (the surface did NOT reach main — lost the CAS race) is surfaced honestly
|
|
581
|
+
// instead of swallowed as `void`.
|
|
582
|
+
return ledgerWrite.applyTreelessNeedsAttentionTransition({
|
|
583
|
+
cwd,
|
|
584
|
+
slug,
|
|
585
|
+
reason,
|
|
586
|
+
arbiter,
|
|
587
|
+
env,
|
|
588
|
+
note,
|
|
589
|
+
});
|
|
590
|
+
}
|
|
591
|
+
/** If HEAD is a `work/<type>-<slug>` branch, return `<slug>`; else ''. */
|
|
592
|
+
async function inferSlugFromBranch(cwd, env) {
|
|
593
|
+
const sym = await gitSoft(['symbolic-ref', '--quiet', '--short', 'HEAD'], cwd, env);
|
|
594
|
+
if (sym.status !== 0) {
|
|
595
|
+
return '';
|
|
596
|
+
}
|
|
597
|
+
return parseWorkBranchRef(sym.stdout.trim())?.slug ?? '';
|
|
598
|
+
}
|
|
599
|
+
/**
|
|
600
|
+
* Which work/ folder the slug currently lives in on `<arbiter>/main`. Under
|
|
601
|
+
* `--allow-backlog` (prd `do-allow-backlog-drive-staged-tasks-without-promotion`)
|
|
602
|
+
* it ALSO recognises `tasks/backlog/` (staging) at LOWEST priority — after the
|
|
603
|
+
* pool — so a same-slug pool copy still wins; otherwise staging is invisible.
|
|
604
|
+
*/
|
|
605
|
+
async function folderOnArbiterMain(slug, arbiter, cwd, env, allowBacklog = false) {
|
|
606
|
+
const folders = [
|
|
607
|
+
'tasks-ready',
|
|
608
|
+
...(allowBacklog ? ['tasks-backlog'] : []),
|
|
609
|
+
'in-progress',
|
|
610
|
+
'needs-attention',
|
|
611
|
+
'done',
|
|
612
|
+
];
|
|
613
|
+
for (const folder of folders) {
|
|
614
|
+
const object = `${arbiter}/main:${workFolderRel(folder)}/${slug}.md`;
|
|
615
|
+
if ((await gitSoft(['cat-file', '-e', object], cwd, env)).status === 0) {
|
|
616
|
+
return folder;
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
return 'absent';
|
|
620
|
+
}
|
|
621
|
+
/** Run git, returning the raw result (no throw) — for soft checks. */
|
|
622
|
+
function gitSoft(args, cwd, env) {
|
|
623
|
+
return runAsync('git', args, cwd, { env });
|
|
624
|
+
}
|
|
625
|
+
/** Run git; throw on non-zero (genuinely unexpected plumbing failures). */
|
|
626
|
+
async function gitHard(args, cwd, env) {
|
|
627
|
+
const result = await runAsync('git', args, cwd, { env });
|
|
628
|
+
if (result.status !== 0) {
|
|
629
|
+
throw new Error(`git ${args.join(' ')} failed (exit ${result.status}): ${result.stderr.trim()}`);
|
|
630
|
+
}
|
|
631
|
+
return result;
|
|
632
|
+
}
|
|
633
|
+
//# sourceMappingURL=start.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"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"}
|