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/src/do-config.ts
ADDED
|
@@ -0,0 +1,589 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
Config,
|
|
3
|
+
IntegrationMode,
|
|
4
|
+
MergeQuestions,
|
|
5
|
+
ObservationTriage,
|
|
6
|
+
PartialConfig,
|
|
7
|
+
} from './config.js';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* The CLI flags that select WHICH agent runs and HOW it is launched — shared,
|
|
11
|
+
* verbatim, by `run` and `do`. Both commands offer `--harness`/`--agent-cmd`/
|
|
12
|
+
* `--pi-bin`/`--model`; this is the single place their string→`PartialConfig`
|
|
13
|
+
* mapping lives so there is exactly ONE override path (not a parallel one per
|
|
14
|
+
* command). `cli.ts`'s `runFlagOverrides` and {@link doFlagOverrides} both fold
|
|
15
|
+
* this in.
|
|
16
|
+
*/
|
|
17
|
+
export interface HarnessFlags {
|
|
18
|
+
agentCmd?: string;
|
|
19
|
+
model?: string;
|
|
20
|
+
harness?: string;
|
|
21
|
+
piBin?: string;
|
|
22
|
+
/**
|
|
23
|
+
* The HOST-ONLY root folder under which a job's pi session FILE is generated
|
|
24
|
+
* (`--sessions-dir`). Forwarded verbatim like `piBin`; the path generator turns
|
|
25
|
+
* it into `<sessionsDir>/<unique-id>.jsonl` at launch (unset ⇒ pi's per-cwd
|
|
26
|
+
* default folder).
|
|
27
|
+
*/
|
|
28
|
+
sessionsDir?: string;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Map the shared harness/adapter flags into a {@link PartialConfig} of overrides
|
|
33
|
+
* — the per-key mapping `run` and `do` both reuse. Only flags actually present
|
|
34
|
+
* contribute (absent flag ⇒ absent key), so the override layer never clobbers a
|
|
35
|
+
* lower precedence source with `undefined`. `--harness` is validated against the
|
|
36
|
+
* `HarnessAdapter` union (an out-of-range value is dropped, matching `run`).
|
|
37
|
+
*/
|
|
38
|
+
export function harnessFlagOverrides(flags: HarnessFlags): PartialConfig {
|
|
39
|
+
const overrides: PartialConfig = {};
|
|
40
|
+
if (flags.agentCmd !== undefined) {
|
|
41
|
+
overrides.agentCmd = flags.agentCmd;
|
|
42
|
+
}
|
|
43
|
+
if (flags.model !== undefined) {
|
|
44
|
+
overrides.model = flags.model;
|
|
45
|
+
}
|
|
46
|
+
if (flags.harness === 'null' || flags.harness === 'pi') {
|
|
47
|
+
overrides.harness = flags.harness;
|
|
48
|
+
}
|
|
49
|
+
if (flags.piBin !== undefined) {
|
|
50
|
+
overrides.piBin = flags.piBin;
|
|
51
|
+
}
|
|
52
|
+
if (flags.sessionsDir !== undefined) {
|
|
53
|
+
overrides.sessionsDir = flags.sessionsDir;
|
|
54
|
+
}
|
|
55
|
+
return overrides;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Build the flag-override `PartialConfig` for the `do` command. This is the FIX
|
|
60
|
+
* for the silent-drop bug: `do` DECLARES `--harness`/`--agent-cmd`/`--pi-bin`/
|
|
61
|
+
* `--model`, so its action MUST thread them into `resolveRepoConfig`'s `flags`
|
|
62
|
+
* — not just `{integration}`. It reuses the SAME per-key mapping `run` uses
|
|
63
|
+
* ({@link harnessFlagOverrides}), then folds in the integrate-time mode (the
|
|
64
|
+
* already-resolved `--merge`/`--propose`, via `integrationFromFlags`) so the
|
|
65
|
+
* full set rides the same precedence chain (flag > env > per-repo > global >
|
|
66
|
+
* default).
|
|
67
|
+
*/
|
|
68
|
+
export function doFlagOverrides(
|
|
69
|
+
flags: HarnessFlags &
|
|
70
|
+
ReviewFlags &
|
|
71
|
+
TaskerLoopFlags &
|
|
72
|
+
FreshWorktreeGateFlags &
|
|
73
|
+
SelectionOrderFlags &
|
|
74
|
+
ObservationTriageFlags &
|
|
75
|
+
SurfaceBlockersFlags &
|
|
76
|
+
MergeQuestionsFlags &
|
|
77
|
+
StrictMergeApprovalFlags &
|
|
78
|
+
NoPRFlags &
|
|
79
|
+
MergeRetriesFlags,
|
|
80
|
+
integration?: IntegrationMode,
|
|
81
|
+
): PartialConfig {
|
|
82
|
+
const overrides = {
|
|
83
|
+
...harnessFlagOverrides(flags),
|
|
84
|
+
// `--observation-triage <off|ask|auto>` rides the SAME flag-override chain
|
|
85
|
+
// (flag > env > per-repo > global > default): the observation-inbox gate.
|
|
86
|
+
...observationTriageFlagOverrides(flags),
|
|
87
|
+
// `--surface-blockers`/`--no-surface-blockers` rides the SAME chain: the
|
|
88
|
+
// boolean gate over DECLARED blocked work (the orthogonal peer of
|
|
89
|
+
// `--observation-triage`).
|
|
90
|
+
...surfaceBlockersFlagOverrides(flags),
|
|
91
|
+
// `--merge-questions <off|ask|auto>` rides the SAME flag-override chain
|
|
92
|
+
// (flag > env > per-repo > global > default `ask`): the 3-state gate over
|
|
93
|
+
// the merge-question SURFACER (prd `land-time-reverify-and-parallel-
|
|
94
|
+
// merge-ceiling` Story 17 / task `merge-questions-gate-axis`). SEPARATE
|
|
95
|
+
// axis from `--observation-triage` with a HIGHER default — NEVER rides
|
|
96
|
+
// `--observation-triage`.
|
|
97
|
+
...mergeQuestionsFlagOverrides(flags),
|
|
98
|
+
// `--strict-merge-approval`/`--no-strict-merge-approval` rides the SAME
|
|
99
|
+
// flag-override chain (flag > env > per-repo > global > default `false`):
|
|
100
|
+
// the OPT-IN strictness layered on the OQ6 stale-approval default. SEPARATE
|
|
101
|
+
// axis from `--merge-questions` — the re-surface vs. land branch is
|
|
102
|
+
// `apply-rung-merge-disposition`'s consumer; this only resolves the boolean.
|
|
103
|
+
...strictMergeApprovalFlagOverrides(flags),
|
|
104
|
+
// `--selection-order <order>` rides the SAME flag-override chain (flag > env >
|
|
105
|
+
// per-repo > global > default): a comma-separated value becomes a list (an
|
|
106
|
+
// explicit pool order), otherwise the verbatim string (a preset keyword). The
|
|
107
|
+
// resolver (`select-order.ts`) validates/expands it at selection time.
|
|
108
|
+
...selectionOrderFlagOverrides(flags),
|
|
109
|
+
// Gate 2 (PR/code review) flags ride the SAME flag-override path so
|
|
110
|
+
// `--review`/`--review-model`/`--review-max-rounds` resolve
|
|
111
|
+
// flag > env > per-repo > global > default, exactly like the harness flags.
|
|
112
|
+
...reviewFlagOverrides(flags),
|
|
113
|
+
// The tasker IMPROVER-loop family (`--tasker-loop`/`--no-tasker-loop`/
|
|
114
|
+
// `--tasker-loop-max`/`--tasker-loop-model`) rides the same chain — a DISTINCT
|
|
115
|
+
// family from the gate's `--review*`, never sharing a flag/key/field name.
|
|
116
|
+
// The flag fields bridge onto the `taskerLoop*` config keys.
|
|
117
|
+
...taskerLoopFlagOverrides(flags),
|
|
118
|
+
// `--fresh-worktree-gate`/`--no-fresh-worktree-gate` (run the acceptance gate
|
|
119
|
+
// against the REBASED tip in a clean throwaway worktree, ON by default) rides
|
|
120
|
+
// the SAME chain — a DISTINCT family from `--review*`/`--tasker-loop*`.
|
|
121
|
+
...freshWorktreeGateFlagOverrides(flags),
|
|
122
|
+
// `--no-pr` (the PR-INTENT axis): suppress the PR even on an authed GitHub
|
|
123
|
+
// arbiter. Rides the SAME flag > env > per-repo > global > default chain.
|
|
124
|
+
...noPRFlagOverrides(flags),
|
|
125
|
+
// `--merge-retries <n>` (the cross-job merge serialiser's CAS-retry cap — prd
|
|
126
|
+
// `land-time-reverify-and-parallel-merge-ceiling` Story 5 / Applied Answer
|
|
127
|
+
// q1 (a)) rides the SAME chain (flag > env > per-repo > global > default).
|
|
128
|
+
...mergeRetriesFlagOverrides(flags),
|
|
129
|
+
};
|
|
130
|
+
if (integration !== undefined) {
|
|
131
|
+
// An explicit `--merge`/`--propose` flag ALWAYS wins for the transition this
|
|
132
|
+
// command runs. `do` runs EITHER the build transition (a task) OR the tasking
|
|
133
|
+
// transition (a `do prd:`) per invocation, and the typed flag is
|
|
134
|
+
// transition-AGNOSTIC, so it must override BOTH the build mode (`integration`)
|
|
135
|
+
// AND the tasking mode (`taskingIntegration`). Setting both at the top of the
|
|
136
|
+
// precedence chain means a `--propose` on a `taskingIntegration:'merge'` repo
|
|
137
|
+
// proposes the tasking too (the tasking path reads `taskingIntegration ??
|
|
138
|
+
// integration`, and the flag-set `taskingIntegration` shadows the config one).
|
|
139
|
+
// (`per-transition-integration-mode-slicing-vs-build`.)
|
|
140
|
+
overrides.integration = integration;
|
|
141
|
+
overrides.taskingIntegration = integration;
|
|
142
|
+
}
|
|
143
|
+
return overrides;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* The Gate-2 (PR/code review) CLI flags, offered by `do` AND `complete`
|
|
148
|
+
* (`--review`/`--no-review`, `--review-model`, `--review-max-rounds`). Both commands resolve them through
|
|
149
|
+
* the SAME `flag > env > per-repo > global > default` chain as `integration`, so
|
|
150
|
+
* the mapping lives in ONE place (not a parallel copy per command).
|
|
151
|
+
*/
|
|
152
|
+
export interface ReviewFlags {
|
|
153
|
+
/** `--review` ⇒ true, `--no-review` ⇒ false, absent ⇒ undefined. */
|
|
154
|
+
review?: boolean;
|
|
155
|
+
/** `--review-model <id>` — the de-correlated review model (routing intent). */
|
|
156
|
+
reviewModel?: string;
|
|
157
|
+
/** `--review-max-rounds <n>` — the revise↔review loop bound (parsed to a number). */
|
|
158
|
+
reviewMaxRounds?: string;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* The tasker IMPROVER-loop CLI flags (`do` only): `--tasker-loop` /
|
|
163
|
+
* `--no-tasker-loop` (the on/off toggle), `--tasker-loop-max <n>` (the in-context
|
|
164
|
+
* convergence cap), and `--tasker-loop-model <id>` (the loop reviewer's
|
|
165
|
+
* de-correlated model). A DISTINCT family from the acceptance gate's `--review*`
|
|
166
|
+
* (see {@link ReviewFlags}) — no flag/key/field name spans both. Resolved through
|
|
167
|
+
* the SAME `flag > env > per-repo > global > default` chain.
|
|
168
|
+
*
|
|
169
|
+
* NOTE the flag NAMES are tasking-vocabulary (`--tasker-loop*`, so commander
|
|
170
|
+
* populates the `taskerLoop*` fields below), and they resolve into the
|
|
171
|
+
* `taskerLoop*` CONFIG KEYS, so {@link taskerLoopFlagOverrides} bridges the
|
|
172
|
+
* flag fields onto the config keys.
|
|
173
|
+
*/
|
|
174
|
+
export interface TaskerLoopFlags {
|
|
175
|
+
/** `--tasker-loop` ⇒ true, `--no-tasker-loop` ⇒ false, absent ⇒ undefined. */
|
|
176
|
+
taskerLoop?: boolean;
|
|
177
|
+
/** `--tasker-loop-max <n>` — the loop's in-context convergence cap (parsed to a number). */
|
|
178
|
+
taskerLoopMax?: string;
|
|
179
|
+
/** `--tasker-loop-model <id>` — the loop reviewer's de-correlated model (routing intent). */
|
|
180
|
+
taskerLoopModel?: string;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Map the Gate-2 review flags into a {@link PartialConfig} of overrides — the
|
|
185
|
+
* per-key mapping `do` and `complete` both reuse. Only flags actually present
|
|
186
|
+
* contribute (absent flag ⇒ absent key), so the override layer never clobbers a
|
|
187
|
+
* lower-precedence source with `undefined`. `--review-max-rounds` is parsed to a
|
|
188
|
+
* number; a non-numeric value is dropped (the lower layer / default decides).
|
|
189
|
+
*/
|
|
190
|
+
export function reviewFlagOverrides(flags: ReviewFlags): PartialConfig {
|
|
191
|
+
const overrides: PartialConfig = {};
|
|
192
|
+
if (flags.review !== undefined) {
|
|
193
|
+
overrides.review = flags.review;
|
|
194
|
+
}
|
|
195
|
+
if (flags.reviewModel !== undefined) {
|
|
196
|
+
overrides.reviewModel = flags.reviewModel;
|
|
197
|
+
}
|
|
198
|
+
if (flags.reviewMaxRounds !== undefined) {
|
|
199
|
+
const n = Number(flags.reviewMaxRounds);
|
|
200
|
+
if (flags.reviewMaxRounds.trim() !== '' && !Number.isNaN(n)) {
|
|
201
|
+
overrides.reviewMaxRounds = n;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return overrides;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Map the tasker IMPROVER-loop flags into a {@link PartialConfig} of overrides.
|
|
209
|
+
* Only flags actually present contribute (absent flag ⇒ absent key), so the
|
|
210
|
+
* override layer never clobbers a lower-precedence source with `undefined`.
|
|
211
|
+
* `--tasker-loop-max` is parsed to a number; a non-numeric value is dropped (the
|
|
212
|
+
* lower layer / default decides). A DISTINCT family from {@link reviewFlagOverrides}.
|
|
213
|
+
*
|
|
214
|
+
* The tasking-vocabulary FLAG fields (`taskerLoop*`) bridge onto the
|
|
215
|
+
* `taskerLoop*` CONFIG KEYS, so the operator types `--tasker-loop` and the value
|
|
216
|
+
* resolves through the standard precedence into `config.taskerLoop`.
|
|
217
|
+
*/
|
|
218
|
+
export function taskerLoopFlagOverrides(flags: TaskerLoopFlags): PartialConfig {
|
|
219
|
+
const overrides: PartialConfig = {};
|
|
220
|
+
if (flags.taskerLoop !== undefined) {
|
|
221
|
+
overrides.taskerLoop = flags.taskerLoop;
|
|
222
|
+
}
|
|
223
|
+
if (flags.taskerLoopMax !== undefined) {
|
|
224
|
+
const n = Number(flags.taskerLoopMax);
|
|
225
|
+
if (flags.taskerLoopMax.trim() !== '' && !Number.isNaN(n)) {
|
|
226
|
+
overrides.taskerLoopMax = n;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
if (flags.taskerLoopModel !== undefined) {
|
|
230
|
+
overrides.taskerLoopModel = flags.taskerLoopModel;
|
|
231
|
+
}
|
|
232
|
+
return overrides;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* The fresh-worktree acceptance-gate CLI flag (`do`/`complete`/`run`):
|
|
237
|
+
* `--fresh-worktree-gate` / `--no-fresh-worktree-gate`, the POSITIVE boolean
|
|
238
|
+
* (default ON) toggling whether the acceptance gate (`prepare` then `verify`)
|
|
239
|
+
* runs against the REBASED tip in a clean throwaway worktree (the merged
|
|
240
|
+
* artifact) or in the agent's build worktree (the pre-rebase tree). Modelled
|
|
241
|
+
* EXACTLY on {@link TaskerLoopFlags}'s on/off toggle; a DISTINCT family (no
|
|
242
|
+
* flag/key/field name spans both). Resolved through the SAME
|
|
243
|
+
* `flag > env > per-repo > global > default` chain.
|
|
244
|
+
*/
|
|
245
|
+
export interface FreshWorktreeGateFlags {
|
|
246
|
+
/** `--fresh-worktree-gate` ⇒ true, `--no-fresh-worktree-gate` ⇒ false, absent ⇒ undefined. */
|
|
247
|
+
freshWorktreeGate?: boolean;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* Map the `--fresh-worktree-gate`/`--no-fresh-worktree-gate` flag into a
|
|
252
|
+
* {@link PartialConfig} override. Only a present flag contributes (absent ⇒
|
|
253
|
+
* absent key), so the override layer never clobbers a lower-precedence source
|
|
254
|
+
* with `undefined`. A negatable boolean (mirrors `taskerLoop`), so the caller
|
|
255
|
+
* leaves `freshWorktreeGate` UNDEFINED unless the user explicitly passed the
|
|
256
|
+
* flag (see the cli's option-source read).
|
|
257
|
+
*/
|
|
258
|
+
export function freshWorktreeGateFlagOverrides(
|
|
259
|
+
flags: FreshWorktreeGateFlags,
|
|
260
|
+
): PartialConfig {
|
|
261
|
+
const overrides: PartialConfig = {};
|
|
262
|
+
if (flags.freshWorktreeGate !== undefined) {
|
|
263
|
+
overrides.freshWorktreeGate = flags.freshWorktreeGate;
|
|
264
|
+
}
|
|
265
|
+
return overrides;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* The selection-order CLI flag (`do` AND `advance`): `--selection-order <order>`
|
|
270
|
+
* (a preset keyword like `drain`/`groom`, or a comma-separated explicit pool
|
|
271
|
+
* order like `build,task,surface,triage`). Resolved through the SAME
|
|
272
|
+
* `flag > env > per-repo > global > default` chain as the other `do` flags.
|
|
273
|
+
*/
|
|
274
|
+
export interface SelectionOrderFlags {
|
|
275
|
+
/** `--selection-order <order>` — a preset keyword or comma-separated pool list. */
|
|
276
|
+
selectionOrder?: string;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
/**
|
|
280
|
+
* Map the `--selection-order` flag into a {@link PartialConfig} override. Only a
|
|
281
|
+
* present flag contributes (absent ⇒ absent key). A value CONTAINING a comma is
|
|
282
|
+
* parsed into a trimmed, non-empty list (an explicit pool order, mirroring the
|
|
283
|
+
* env `'list'` coercion); otherwise it is the verbatim string (a preset keyword
|
|
284
|
+
* or a single pool name). The resolver (`select-order.ts`) does the
|
|
285
|
+
* validation/expansion + loud failure at selection time — this only normalises
|
|
286
|
+
* the flag's surface syntax.
|
|
287
|
+
*/
|
|
288
|
+
export function selectionOrderFlagOverrides(
|
|
289
|
+
flags: SelectionOrderFlags,
|
|
290
|
+
): PartialConfig {
|
|
291
|
+
const overrides: PartialConfig = {};
|
|
292
|
+
if (flags.selectionOrder !== undefined) {
|
|
293
|
+
const raw = flags.selectionOrder;
|
|
294
|
+
overrides.selectionOrder = raw.includes(',')
|
|
295
|
+
? raw
|
|
296
|
+
.split(',')
|
|
297
|
+
.map((s) => s.trim())
|
|
298
|
+
.filter((s) => s !== '')
|
|
299
|
+
: raw;
|
|
300
|
+
}
|
|
301
|
+
return overrides;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
/**
|
|
305
|
+
* The observation-triage CLI flag (`advance`): `--observation-triage
|
|
306
|
+
* <off|ask|auto>`, the 3-state gate over the observation INBOX (ADR
|
|
307
|
+
* `ci-config-policy-and-gate-family`). Resolved through the SAME
|
|
308
|
+
* `flag > env > per-repo > global > default` chain as the other gate flags.
|
|
309
|
+
*/
|
|
310
|
+
export interface ObservationTriageFlags {
|
|
311
|
+
/** `--observation-triage <off|ask|auto>` — the observation-inbox gate state. */
|
|
312
|
+
observationTriage?: string;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
/** The valid `--observation-triage` values (mirrors the env enum coercion). */
|
|
316
|
+
const OBSERVATION_TRIAGE_VALUES: readonly ObservationTriage[] = [
|
|
317
|
+
'off',
|
|
318
|
+
'ask',
|
|
319
|
+
'auto',
|
|
320
|
+
];
|
|
321
|
+
|
|
322
|
+
/**
|
|
323
|
+
* Map the `--observation-triage` flag into a {@link PartialConfig} override. Only
|
|
324
|
+
* a present flag contributes (absent ⇒ absent key). An INVALID value FAILS LOUDLY
|
|
325
|
+
* (the same loud-failure contract the env enum coercion enforces) rather than
|
|
326
|
+
* silently falling through to a lower layer — a typo on an autonomy gate must
|
|
327
|
+
* never be quietly ignored.
|
|
328
|
+
*/
|
|
329
|
+
export function observationTriageFlagOverrides(
|
|
330
|
+
flags: ObservationTriageFlags,
|
|
331
|
+
): PartialConfig {
|
|
332
|
+
const overrides: PartialConfig = {};
|
|
333
|
+
if (flags.observationTriage !== undefined) {
|
|
334
|
+
const raw = flags.observationTriage;
|
|
335
|
+
if (!OBSERVATION_TRIAGE_VALUES.includes(raw as ObservationTriage)) {
|
|
336
|
+
throw new Error(
|
|
337
|
+
`Invalid value for --observation-triage: '${raw}'. ` +
|
|
338
|
+
`Expected one of: ${OBSERVATION_TRIAGE_VALUES.join(', ')}.`,
|
|
339
|
+
);
|
|
340
|
+
}
|
|
341
|
+
overrides.observationTriage = raw as ObservationTriage;
|
|
342
|
+
}
|
|
343
|
+
return overrides;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
/**
|
|
347
|
+
* The surface-blockers CLI flag (`advance`): `--surface-blockers` /
|
|
348
|
+
* `--no-surface-blockers`, the BOOLEAN gate over DECLARED blocked work (whether a
|
|
349
|
+
* `needsAnswers:true` task/prd is rendered into a question sidecar; ADR
|
|
350
|
+
* `ci-config-policy-and-gate-family`). The orthogonal PEER of
|
|
351
|
+
* `--observation-triage`. Resolved through the SAME
|
|
352
|
+
* `flag > env > per-repo > global > default` chain as the other gate flags.
|
|
353
|
+
*/
|
|
354
|
+
export interface SurfaceBlockersFlags {
|
|
355
|
+
/** `--surface-blockers` ⇒ true, `--no-surface-blockers` ⇒ false, absent ⇒ undefined. */
|
|
356
|
+
surfaceBlockers?: boolean;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
/**
|
|
360
|
+
* Map the `--surface-blockers` flag into a {@link PartialConfig} override. Only a
|
|
361
|
+
* present flag contributes (absent ⇒ absent key), so the override layer never
|
|
362
|
+
* clobbers a lower-precedence source with `undefined`. A negatable boolean, so the
|
|
363
|
+
* caller leaves `surfaceBlockers` UNDEFINED unless the user explicitly passed
|
|
364
|
+
* `--surface-blockers`/`--no-surface-blockers` (see the cli's option-source read).
|
|
365
|
+
*/
|
|
366
|
+
export function surfaceBlockersFlagOverrides(
|
|
367
|
+
flags: SurfaceBlockersFlags,
|
|
368
|
+
): PartialConfig {
|
|
369
|
+
const overrides: PartialConfig = {};
|
|
370
|
+
if (flags.surfaceBlockers !== undefined) {
|
|
371
|
+
overrides.surfaceBlockers = flags.surfaceBlockers;
|
|
372
|
+
}
|
|
373
|
+
return overrides;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
/**
|
|
377
|
+
* **The cross-job merge-serialiser CAS-retry cap CLI flag** (`--merge-retries
|
|
378
|
+
* <n>`) — prd `land-time-reverify-and-parallel-merge-ceiling` Story 5 / Applied
|
|
379
|
+
* Answer q1 (a). The git-alone FLOOR of the cross-job land-queue; a wide-matrix
|
|
380
|
+
* CI raises the cap so more contenders converge before any spurious bounce to
|
|
381
|
+
* needs-attention. Offered by `do`/`run`/`complete`. Resolved through the SAME
|
|
382
|
+
* `flag > env > per-repo > global > default` chain as `--review-max-rounds` /
|
|
383
|
+
* `--fresh-worktree-gate`.
|
|
384
|
+
*/
|
|
385
|
+
export interface MergeRetriesFlags {
|
|
386
|
+
/** `--merge-retries <n>` — the cross-job CAS-retry cap (parsed to a non-negative integer). */
|
|
387
|
+
mergeRetries?: string;
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
/**
|
|
391
|
+
* Map the `--merge-retries <n>` flag into a {@link PartialConfig} override. Only
|
|
392
|
+
* a present flag contributes (absent ⇒ absent key), so the override layer never
|
|
393
|
+
* clobbers a lower-precedence source with `undefined`. The value MUST be a
|
|
394
|
+
* NON-NEGATIVE integer (`0` is meaningful — it disables the retry, the
|
|
395
|
+
* un-retried path the engine's tests pin); a non-integer / negative value is
|
|
396
|
+
* dropped silently so the lower layer / default decides (mirrors
|
|
397
|
+
* {@link reviewFlagOverrides}'s parse-or-drop on `--review-max-rounds`).
|
|
398
|
+
*/
|
|
399
|
+
export function mergeRetriesFlagOverrides(
|
|
400
|
+
flags: MergeRetriesFlags,
|
|
401
|
+
): PartialConfig {
|
|
402
|
+
const overrides: PartialConfig = {};
|
|
403
|
+
if (flags.mergeRetries !== undefined) {
|
|
404
|
+
const raw = flags.mergeRetries;
|
|
405
|
+
if (raw.trim() !== '') {
|
|
406
|
+
const n = Number(raw);
|
|
407
|
+
if (Number.isInteger(n) && n >= 0) {
|
|
408
|
+
overrides.mergeRetries = n;
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
return overrides;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
/**
|
|
416
|
+
* The merge-questions CLI flag (`advance`): `--merge-questions <off|ask|auto>`,
|
|
417
|
+
* the 3-state gate over the MERGE-QUESTION SURFACER (prd
|
|
418
|
+
* `land-time-reverify-and-parallel-merge-ceiling` Story 17 / task
|
|
419
|
+
* `merge-questions-gate-axis`). MIRRORS `--observation-triage`'s SHAPE but is a
|
|
420
|
+
* SEPARATE axis with a HIGHER default (`ask`, never `off` — a dropped merge-
|
|
421
|
+
* question means pushed work never lands). Resolved through the SAME
|
|
422
|
+
* `flag > env > per-repo > global > default` chain as the other gate flags.
|
|
423
|
+
*/
|
|
424
|
+
export interface MergeQuestionsFlags {
|
|
425
|
+
/** `--merge-questions <off|ask|auto>` — the merge-question surfacer gate. */
|
|
426
|
+
mergeQuestions?: string;
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
/** The valid `--merge-questions` values (mirrors the env enum coercion). */
|
|
430
|
+
const MERGE_QUESTIONS_VALUES: readonly MergeQuestions[] = [
|
|
431
|
+
'off',
|
|
432
|
+
'ask',
|
|
433
|
+
'auto',
|
|
434
|
+
];
|
|
435
|
+
|
|
436
|
+
/**
|
|
437
|
+
* Map the `--merge-questions` flag into a {@link PartialConfig} override. Only a
|
|
438
|
+
* present flag contributes (absent ⇒ absent key). An INVALID value FAILS LOUDLY
|
|
439
|
+
* (the same loud-failure contract `--observation-triage` enforces) rather than
|
|
440
|
+
* silently falling through — a typo on a question-surfacing gate must never be
|
|
441
|
+
* quietly ignored.
|
|
442
|
+
*/
|
|
443
|
+
export function mergeQuestionsFlagOverrides(
|
|
444
|
+
flags: MergeQuestionsFlags,
|
|
445
|
+
): PartialConfig {
|
|
446
|
+
const overrides: PartialConfig = {};
|
|
447
|
+
if (flags.mergeQuestions !== undefined) {
|
|
448
|
+
const raw = flags.mergeQuestions;
|
|
449
|
+
if (!MERGE_QUESTIONS_VALUES.includes(raw as MergeQuestions)) {
|
|
450
|
+
throw new Error(
|
|
451
|
+
`Invalid value for --merge-questions: '${raw}'. ` +
|
|
452
|
+
`Expected one of: ${MERGE_QUESTIONS_VALUES.join(', ')}.`,
|
|
453
|
+
);
|
|
454
|
+
}
|
|
455
|
+
overrides.mergeQuestions = raw as MergeQuestions;
|
|
456
|
+
}
|
|
457
|
+
return overrides;
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
/**
|
|
461
|
+
* **The strict-merge-approval CLI flag** (`--strict-merge-approval` /
|
|
462
|
+
* `--no-strict-merge-approval`) — prd
|
|
463
|
+
* `land-time-reverify-and-parallel-merge-ceiling` sidecar OQ6 / task
|
|
464
|
+
* `strict-merge-approval-gate`. The OPT-IN strictness layered on the OQ6
|
|
465
|
+
* stale-approval default: ON re-surfaces the merge-question on a merge-base
|
|
466
|
+
* change instead of auto-landing on a green re-verify (the host-agnostic
|
|
467
|
+
* analogue of GitHub's "dismiss stale approvals when the base changes"); OFF
|
|
468
|
+
* (default) honours the prior answer + lands when the rebased tip re-verifies
|
|
469
|
+
* GREEN. Offered alongside `--merge-questions` on `advance` (the apply rung is
|
|
470
|
+
* the consumer). Resolved through the SAME `flag > env > per-repo > global >
|
|
471
|
+
* default` chain as the other gate-family members. A negatable boolean
|
|
472
|
+
* (mirrors `--fresh-worktree-gate`).
|
|
473
|
+
*/
|
|
474
|
+
export interface StrictMergeApprovalFlags {
|
|
475
|
+
/** `--strict-merge-approval` ⇒ true, `--no-strict-merge-approval` ⇒ false, absent ⇒ undefined. */
|
|
476
|
+
strictMergeApproval?: boolean;
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
/**
|
|
480
|
+
* Map the `--strict-merge-approval`/`--no-strict-merge-approval` flag into a
|
|
481
|
+
* {@link PartialConfig} override. Only a present flag contributes (absent ⇒
|
|
482
|
+
* absent key), so the override layer never clobbers a lower-precedence source
|
|
483
|
+
* with `undefined`. A negatable boolean (mirrors
|
|
484
|
+
* {@link freshWorktreeGateFlagOverrides}): the caller leaves
|
|
485
|
+
* `strictMergeApproval` UNDEFINED unless the user explicitly passed the flag.
|
|
486
|
+
*/
|
|
487
|
+
export function strictMergeApprovalFlagOverrides(
|
|
488
|
+
flags: StrictMergeApprovalFlags,
|
|
489
|
+
): PartialConfig {
|
|
490
|
+
const overrides: PartialConfig = {};
|
|
491
|
+
if (flags.strictMergeApproval !== undefined) {
|
|
492
|
+
overrides.strictMergeApproval = flags.strictMergeApproval;
|
|
493
|
+
}
|
|
494
|
+
return overrides;
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
/**
|
|
498
|
+
* The PR-INTENT CLI flag (`--no-pr`), offered by `do`/`complete`/`run`: push the
|
|
499
|
+
* branch but deliberately skip the review request (the explicit suppress-PR
|
|
500
|
+
* intent, ADR §6). NOT a provider choice. Commander stores the negatable flag as
|
|
501
|
+
* `pr` (false when `--no-pr` is passed). Resolved through the SAME
|
|
502
|
+
* `flag > env > per-repo > global > default` chain as `integration`/`review`.
|
|
503
|
+
*/
|
|
504
|
+
export interface NoPRFlags {
|
|
505
|
+
/** `--no-pr` ⇒ commander stores `pr === false` (the suppress-PR intent). */
|
|
506
|
+
pr?: boolean;
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
/**
|
|
510
|
+
* Map the `--no-pr` flag into a {@link PartialConfig} override. Only an explicit
|
|
511
|
+
* `--no-pr` (commander's `pr === false`) contributes `noPR: true`; otherwise the
|
|
512
|
+
* key stays absent so the lower layer (env / per-repo / global / default) decides.
|
|
513
|
+
*/
|
|
514
|
+
export function noPRFlagOverrides(flags: NoPRFlags): PartialConfig {
|
|
515
|
+
const overrides: PartialConfig = {};
|
|
516
|
+
if (flags.pr === false) {
|
|
517
|
+
overrides.noPR = true;
|
|
518
|
+
}
|
|
519
|
+
return overrides;
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
/**
|
|
523
|
+
* The null-default guard: the `null` adapter shells out to `agentCmd`, so it is
|
|
524
|
+
* required there; the `pi` adapter invokes the pi CLI directly and does not
|
|
525
|
+
* consume `agentCmd`. Returns `true` when the resolved config selects the null
|
|
526
|
+
* adapter with no `agentCmd` — the case `do`/`run`/`--remote` must reject with a
|
|
527
|
+
* clear error ({@link NO_AGENT_CMD_MESSAGE}). All three CLI sites call THIS one
|
|
528
|
+
* predicate (named here so the fix's no-regression test can pin it).
|
|
529
|
+
*/
|
|
530
|
+
export function doNeedsAgentCmd(config: Config): boolean {
|
|
531
|
+
return config.harness !== 'pi' && config.agentCmd.trim() === '';
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
/**
|
|
535
|
+
* The shared up-front message for the {@link doNeedsAgentCmd} refusal. Names BOTH
|
|
536
|
+
* escape hatches: the `--harness pi` adapter (which needs no agentCmd) and
|
|
537
|
+
* setting `harness`/`agentCmd` in config. Shared so `do`/`run`/`--remote` speak
|
|
538
|
+
* with one voice (and the test that pins `--harness pi` only has to pin it once).
|
|
539
|
+
*/
|
|
540
|
+
export const NO_AGENT_CMD_MESSAGE =
|
|
541
|
+
'no harness configured and no agentCmd set — nothing would run. Pass ' +
|
|
542
|
+
'--harness pi (or set harness/agentCmd in .dorfl.json or global config).';
|
|
543
|
+
|
|
544
|
+
/**
|
|
545
|
+
* The shared up-front message for the PR-INTENT pre-flight refusal: a `propose`
|
|
546
|
+
* run on a GitHub arbiter intends a PR (`noPR` unset) but a `gh` AUTH/AVAILABILITY
|
|
547
|
+
* PROBE says `gh` cannot open one. Surfaced BEFORE any claim/onboard/build so no
|
|
548
|
+
* work is wasted, and naming EVERY real fix (auth `gh`, set a `providers.github`
|
|
549
|
+
* identity token, switch to `--merge`, or `--no-pr` to push without a PR). The
|
|
550
|
+
* honest-failure value the `noPR` axis buys: it disambiguates "I deliberately
|
|
551
|
+
* want no PR" from "I wanted a PR and silently didn't get one". Shared so the
|
|
552
|
+
* in-place + no-checkout `do` paths speak with one voice.
|
|
553
|
+
*/
|
|
554
|
+
export const PROPOSE_PR_INTENT_GH_UNAVAILABLE_MESSAGE =
|
|
555
|
+
'propose mode on a GitHub arbiter intends a PR, but `gh` is not ' +
|
|
556
|
+
'available/authenticated to open one. Run `gh auth login` (or set a ' +
|
|
557
|
+
'`providers.github` identity token), or pass `--merge` to land on main, or ' +
|
|
558
|
+
'`--no-pr` to push the branch without opening a PR.';
|
|
559
|
+
|
|
560
|
+
/**
|
|
561
|
+
* Should the PR-INTENT pre-flight guard FIRE for this run? It fires ONLY when ALL
|
|
562
|
+
* hold: the run is `propose` mode (not `merge` — merge never opens a PR), the
|
|
563
|
+
* arbiter is a GitHub URL (only then is a PR even possible), `noPR` is UNSET (the
|
|
564
|
+
* operator INTENDS a PR), and the injected `gh` auth/availability `probe` reports
|
|
565
|
+
* `gh` cannot open one. The probe (mirroring `GitHubProvider.available`) is
|
|
566
|
+
* the signal, NOT a config inspection: an ABSENT `providers.github` identity must
|
|
567
|
+
* NOT trip this guard — it falls back to AMBIENT `gh` auth (the common local-dev
|
|
568
|
+
* case), which the probe correctly reports as available. A genuinely TRANSIENT
|
|
569
|
+
* mid-run `gh` outage (the probe passes here but the API fails later) is left to
|
|
570
|
+
* the runtime degrade — the probe only catches the start-of-run unauthed case.
|
|
571
|
+
*/
|
|
572
|
+
export function shouldFailProposePrIntent(input: {
|
|
573
|
+
mode: IntegrationMode;
|
|
574
|
+
arbiterIsGitHub: boolean;
|
|
575
|
+
noPR: boolean | undefined;
|
|
576
|
+
/** The `gh` auth/availability probe (true ⇒ `gh` CAN open a PR). */
|
|
577
|
+
ghCanOpenPr: () => boolean;
|
|
578
|
+
}): boolean {
|
|
579
|
+
if (input.mode !== 'propose') {
|
|
580
|
+
return false;
|
|
581
|
+
}
|
|
582
|
+
if (!input.arbiterIsGitHub) {
|
|
583
|
+
return false;
|
|
584
|
+
}
|
|
585
|
+
if (input.noPR === true) {
|
|
586
|
+
return false;
|
|
587
|
+
}
|
|
588
|
+
return !input.ghCanOpenPr();
|
|
589
|
+
}
|