dorfl 0.0.0 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/advance-ci-template.d.ts +73 -0
- package/dist/advance-ci-template.d.ts.map +1 -0
- package/dist/advance-ci-template.js +104 -0
- package/dist/advance-ci-template.js.map +1 -0
- package/dist/advance-classify.d.ts +132 -0
- package/dist/advance-classify.d.ts.map +1 -0
- package/dist/advance-classify.js +120 -0
- package/dist/advance-classify.js.map +1 -0
- package/dist/advance-drivers.d.ts +182 -0
- package/dist/advance-drivers.d.ts.map +1 -0
- package/dist/advance-drivers.js +231 -0
- package/dist/advance-drivers.js.map +1 -0
- package/dist/advance-isolated.d.ts +156 -0
- package/dist/advance-isolated.d.ts.map +1 -0
- package/dist/advance-isolated.js +256 -0
- package/dist/advance-isolated.js.map +1 -0
- package/dist/advance-lifecycle-template.d.ts +107 -0
- package/dist/advance-lifecycle-template.d.ts.map +1 -0
- package/dist/advance-lifecycle-template.js +668 -0
- package/dist/advance-lifecycle-template.js.map +1 -0
- package/dist/advance-loop-driver.d.ts +325 -0
- package/dist/advance-loop-driver.d.ts.map +1 -0
- package/dist/advance-loop-driver.js +437 -0
- package/dist/advance-loop-driver.js.map +1 -0
- package/dist/advance-treeless-publish.d.ts +108 -0
- package/dist/advance-treeless-publish.d.ts.map +1 -0
- package/dist/advance-treeless-publish.js +71 -0
- package/dist/advance-treeless-publish.js.map +1 -0
- package/dist/advance.d.ts +340 -0
- package/dist/advance.d.ts.map +1 -0
- package/dist/advance.js +1122 -0
- package/dist/advance.js.map +1 -0
- package/dist/advancing-lock.d.ts +294 -0
- package/dist/advancing-lock.d.ts.map +1 -0
- package/dist/advancing-lock.js +594 -0
- package/dist/advancing-lock.js.map +1 -0
- package/dist/agent-launch.d.ts +79 -0
- package/dist/agent-launch.d.ts.map +1 -0
- package/dist/agent-launch.js +61 -0
- package/dist/agent-launch.js.map +1 -0
- package/dist/agent-stop.d.ts +149 -0
- package/dist/agent-stop.d.ts.map +1 -0
- package/dist/agent-stop.js +307 -0
- package/dist/agent-stop.js.map +1 -0
- package/dist/apply-decide.d.ts +127 -0
- package/dist/apply-decide.d.ts.map +1 -0
- package/dist/apply-decide.js +176 -0
- package/dist/apply-decide.js.map +1 -0
- package/dist/apply-merge-action.d.ts +206 -0
- package/dist/apply-merge-action.d.ts.map +1 -0
- package/dist/apply-merge-action.js +307 -0
- package/dist/apply-merge-action.js.map +1 -0
- package/dist/apply-persist.d.ts +174 -0
- package/dist/apply-persist.d.ts.map +1 -0
- package/dist/apply-persist.js +359 -0
- package/dist/apply-persist.js.map +1 -0
- package/dist/arbiter.d.ts +120 -0
- package/dist/arbiter.d.ts.map +1 -0
- package/dist/arbiter.js +255 -0
- package/dist/arbiter.js.map +1 -0
- package/dist/brand.d.ts +70 -0
- package/dist/brand.d.ts.map +1 -0
- package/dist/brand.js +84 -0
- package/dist/brand.js.map +1 -0
- package/dist/buildable-body.d.ts +132 -0
- package/dist/buildable-body.d.ts.map +1 -0
- package/dist/buildable-body.js +131 -0
- package/dist/buildable-body.js.map +1 -0
- package/dist/categorise.d.ts +66 -0
- package/dist/categorise.d.ts.map +1 -0
- package/dist/categorise.js +106 -0
- package/dist/categorise.js.map +1 -0
- package/dist/claim-cas.d.ts +117 -0
- package/dist/claim-cas.d.ts.map +1 -0
- package/dist/claim-cas.js +312 -0
- package/dist/claim-cas.js.map +1 -0
- package/dist/cli-spinner.d.ts +112 -0
- package/dist/cli-spinner.d.ts.map +1 -0
- package/dist/cli-spinner.js +157 -0
- package/dist/cli-spinner.js.map +1 -0
- package/dist/cli.d.ts +11 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +3094 -0
- package/dist/cli.js.map +1 -0
- package/dist/close-job-template.d.ts +70 -0
- package/dist/close-job-template.d.ts.map +1 -0
- package/dist/close-job-template.js +180 -0
- package/dist/close-job-template.js.map +1 -0
- package/dist/close-job.d.ts +95 -0
- package/dist/close-job.d.ts.map +1 -0
- package/dist/close-job.js +226 -0
- package/dist/close-job.js.map +1 -0
- package/dist/complete.d.ts +361 -0
- package/dist/complete.d.ts.map +1 -0
- package/dist/complete.js +885 -0
- package/dist/complete.js.map +1 -0
- package/dist/concurrency.d.ts +68 -0
- package/dist/concurrency.d.ts.map +1 -0
- package/dist/concurrency.js +112 -0
- package/dist/concurrency.js.map +1 -0
- package/dist/config-override.d.ts +76 -0
- package/dist/config-override.d.ts.map +1 -0
- package/dist/config-override.js +50 -0
- package/dist/config-override.js.map +1 -0
- package/dist/config.d.ts +668 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +241 -0
- package/dist/config.js.map +1 -0
- package/dist/continue-branch.d.ts +249 -0
- package/dist/continue-branch.d.ts.map +1 -0
- package/dist/continue-branch.js +389 -0
- package/dist/continue-branch.js.map +1 -0
- package/dist/cwd-section.d.ts +186 -0
- package/dist/cwd-section.d.ts.map +1 -0
- package/dist/cwd-section.js +209 -0
- package/dist/cwd-section.js.map +1 -0
- package/dist/decision-engine.d.ts +170 -0
- package/dist/decision-engine.d.ts.map +1 -0
- package/dist/decision-engine.js +136 -0
- package/dist/decision-engine.js.map +1 -0
- package/dist/detect.d.ts +17 -0
- package/dist/detect.d.ts.map +1 -0
- package/dist/detect.js +118 -0
- package/dist/detect.js.map +1 -0
- package/dist/do-autopick.d.ts +85 -0
- package/dist/do-autopick.d.ts.map +1 -0
- package/dist/do-autopick.js +112 -0
- package/dist/do-autopick.js.map +1 -0
- package/dist/do-config.d.ts +312 -0
- package/dist/do-config.d.ts.map +1 -0
- package/dist/do-config.js +358 -0
- package/dist/do-config.js.map +1 -0
- package/dist/do-remote-auto.d.ts +75 -0
- package/dist/do-remote-auto.d.ts.map +1 -0
- package/dist/do-remote-auto.js +111 -0
- package/dist/do-remote-auto.js.map +1 -0
- package/dist/do.d.ts +621 -0
- package/dist/do.d.ts.map +1 -0
- package/dist/do.js +1882 -0
- package/dist/do.js.map +1 -0
- package/dist/drop-source.d.ts +96 -0
- package/dist/drop-source.d.ts.map +1 -0
- package/dist/drop-source.js +91 -0
- package/dist/drop-source.js.map +1 -0
- package/dist/eligibility.d.ts +46 -0
- package/dist/eligibility.d.ts.map +1 -0
- package/dist/eligibility.js +34 -0
- package/dist/eligibility.js.map +1 -0
- package/dist/env-config.d.ts +51 -0
- package/dist/env-config.d.ts.map +1 -0
- package/dist/env-config.js +272 -0
- package/dist/env-config.js.map +1 -0
- package/dist/failure-cause.d.ts +70 -0
- package/dist/failure-cause.d.ts.map +1 -0
- package/dist/failure-cause.js +126 -0
- package/dist/failure-cause.js.map +1 -0
- package/dist/format.d.ts +43 -0
- package/dist/format.d.ts.map +1 -0
- package/dist/format.js +256 -0
- package/dist/format.js.map +1 -0
- package/dist/frontmatter.d.ts +215 -0
- package/dist/frontmatter.d.ts.map +1 -0
- package/dist/frontmatter.js +345 -0
- package/dist/frontmatter.js.map +1 -0
- package/dist/gate-readiness.d.ts +84 -0
- package/dist/gate-readiness.d.ts.map +1 -0
- package/dist/gate-readiness.js +103 -0
- package/dist/gate-readiness.js.map +1 -0
- package/dist/gc.d.ts +165 -0
- package/dist/gc.d.ts.map +1 -0
- package/dist/gc.js +313 -0
- package/dist/gc.js.map +1 -0
- package/dist/gh-failure.d.ts +42 -0
- package/dist/gh-failure.d.ts.map +1 -0
- package/dist/gh-failure.js +49 -0
- package/dist/gh-failure.js.map +1 -0
- package/dist/git.d.ts +75 -0
- package/dist/git.d.ts.map +1 -0
- package/dist/git.js +130 -0
- package/dist/git.js.map +1 -0
- package/dist/github.d.ts +187 -0
- package/dist/github.d.ts.map +1 -0
- package/dist/github.js +343 -0
- package/dist/github.js.map +1 -0
- package/dist/harness.d.ts +242 -0
- package/dist/harness.d.ts.map +1 -0
- package/dist/harness.js +157 -0
- package/dist/harness.js.map +1 -0
- package/dist/identity.d.ts +167 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +231 -0
- package/dist/identity.js.map +1 -0
- package/dist/index.d.ts +147 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +76 -0
- package/dist/index.js.map +1 -0
- package/dist/install-ci-branch-protection.d.ts +147 -0
- package/dist/install-ci-branch-protection.d.ts.map +1 -0
- package/dist/install-ci-branch-protection.js +166 -0
- package/dist/install-ci-branch-protection.js.map +1 -0
- package/dist/install-ci-capabilities/advance-lifecycle.d.ts +15 -0
- package/dist/install-ci-capabilities/advance-lifecycle.d.ts.map +1 -0
- package/dist/install-ci-capabilities/advance-lifecycle.js +28 -0
- package/dist/install-ci-capabilities/advance-lifecycle.js.map +1 -0
- package/dist/install-ci-capabilities/close-job.d.ts +13 -0
- package/dist/install-ci-capabilities/close-job.d.ts.map +1 -0
- package/dist/install-ci-capabilities/close-job.js +26 -0
- package/dist/install-ci-capabilities/close-job.js.map +1 -0
- package/dist/install-ci-capabilities/example-noop.d.ts +16 -0
- package/dist/install-ci-capabilities/example-noop.d.ts.map +1 -0
- package/dist/install-ci-capabilities/example-noop.js +23 -0
- package/dist/install-ci-capabilities/example-noop.js.map +1 -0
- package/dist/install-ci-capabilities/intake.d.ts +15 -0
- package/dist/install-ci-capabilities/intake.d.ts.map +1 -0
- package/dist/install-ci-capabilities/intake.js +28 -0
- package/dist/install-ci-capabilities/intake.js.map +1 -0
- package/dist/install-ci-capabilities/verify.d.ts +14 -0
- package/dist/install-ci-capabilities/verify.d.ts.map +1 -0
- package/dist/install-ci-capabilities/verify.js +27 -0
- package/dist/install-ci-capabilities/verify.js.map +1 -0
- package/dist/install-ci-core.d.ts +446 -0
- package/dist/install-ci-core.d.ts.map +1 -0
- package/dist/install-ci-core.js +760 -0
- package/dist/install-ci-core.js.map +1 -0
- package/dist/install-ci-github.d.ts +167 -0
- package/dist/install-ci-github.d.ts.map +1 -0
- package/dist/install-ci-github.js +315 -0
- package/dist/install-ci-github.js.map +1 -0
- package/dist/install-ci.d.ts +105 -0
- package/dist/install-ci.d.ts.map +1 -0
- package/dist/install-ci.js +363 -0
- package/dist/install-ci.js.map +1 -0
- package/dist/intake-event.d.ts +88 -0
- package/dist/intake-event.d.ts.map +1 -0
- package/dist/intake-event.js +66 -0
- package/dist/intake-event.js.map +1 -0
- package/dist/intake-marker.d.ts +95 -0
- package/dist/intake-marker.d.ts.map +1 -0
- package/dist/intake-marker.js +127 -0
- package/dist/intake-marker.js.map +1 -0
- package/dist/intake-triage.d.ts +48 -0
- package/dist/intake-triage.d.ts.map +1 -0
- package/dist/intake-triage.js +95 -0
- package/dist/intake-triage.js.map +1 -0
- package/dist/intake-trigger-template.d.ts +185 -0
- package/dist/intake-trigger-template.d.ts.map +1 -0
- package/dist/intake-trigger-template.js +449 -0
- package/dist/intake-trigger-template.js.map +1 -0
- package/dist/intake.d.ts +569 -0
- package/dist/intake.d.ts.map +1 -0
- package/dist/intake.js +1628 -0
- package/dist/intake.js.map +1 -0
- package/dist/integration-core.d.ts +539 -0
- package/dist/integration-core.d.ts.map +1 -0
- package/dist/integration-core.js +2195 -0
- package/dist/integration-core.js.map +1 -0
- package/dist/integrator.d.ts +343 -0
- package/dist/integrator.d.ts.map +1 -0
- package/dist/integrator.js +400 -0
- package/dist/integrator.js.map +1 -0
- package/dist/isolation.d.ts +219 -0
- package/dist/isolation.d.ts.map +1 -0
- package/dist/isolation.js +261 -0
- package/dist/isolation.js.map +1 -0
- package/dist/issue-provider.d.ts +349 -0
- package/dist/issue-provider.d.ts.map +1 -0
- package/dist/issue-provider.js +360 -0
- package/dist/issue-provider.js.map +1 -0
- package/dist/item-lock.d.ts +626 -0
- package/dist/item-lock.d.ts.map +1 -0
- package/dist/item-lock.js +1381 -0
- package/dist/item-lock.js.map +1 -0
- package/dist/item-path.d.ts +49 -0
- package/dist/item-path.d.ts.map +1 -0
- package/dist/item-path.js +66 -0
- package/dist/item-path.js.map +1 -0
- package/dist/ledger-lint.d.ts +129 -0
- package/dist/ledger-lint.d.ts.map +1 -0
- package/dist/ledger-lint.js +249 -0
- package/dist/ledger-lint.js.map +1 -0
- package/dist/ledger-read.d.ts +357 -0
- package/dist/ledger-read.d.ts.map +1 -0
- package/dist/ledger-read.js +442 -0
- package/dist/ledger-read.js.map +1 -0
- package/dist/ledger-write.d.ts +330 -0
- package/dist/ledger-write.d.ts.map +1 -0
- package/dist/ledger-write.js +411 -0
- package/dist/ledger-write.js.map +1 -0
- package/dist/lifecycle-gather.d.ts +30 -0
- package/dist/lifecycle-gather.d.ts.map +1 -0
- package/dist/lifecycle-gather.js +205 -0
- package/dist/lifecycle-gather.js.map +1 -0
- package/dist/lifecycle-pools.d.ts +180 -0
- package/dist/lifecycle-pools.d.ts.map +1 -0
- package/dist/lifecycle-pools.js +78 -0
- package/dist/lifecycle-pools.js.map +1 -0
- package/dist/merge-question-surfacer.d.ts +166 -0
- package/dist/merge-question-surfacer.d.ts.map +1 -0
- package/dist/merge-question-surfacer.js +297 -0
- package/dist/merge-question-surfacer.js.map +1 -0
- package/dist/mint-adr.d.ts +126 -0
- package/dist/mint-adr.d.ts.map +1 -0
- package/dist/mint-adr.js +257 -0
- package/dist/mint-adr.js.map +1 -0
- package/dist/mirror-pool-scan.d.ts +125 -0
- package/dist/mirror-pool-scan.d.ts.map +1 -0
- package/dist/mirror-pool-scan.js +104 -0
- package/dist/mirror-pool-scan.js.map +1 -0
- package/dist/needs-attention.d.ts +341 -0
- package/dist/needs-attention.d.ts.map +1 -0
- package/dist/needs-attention.js +900 -0
- package/dist/needs-attention.js.map +1 -0
- package/dist/orphan-sidecar.d.ts +79 -0
- package/dist/orphan-sidecar.d.ts.map +1 -0
- package/dist/orphan-sidecar.js +71 -0
- package/dist/orphan-sidecar.js.map +1 -0
- package/dist/output.d.ts +48 -0
- package/dist/output.d.ts.map +1 -0
- package/dist/output.js +66 -0
- package/dist/output.js.map +1 -0
- package/dist/pi-harness.d.ts +179 -0
- package/dist/pi-harness.d.ts.map +1 -0
- package/dist/pi-harness.js +342 -0
- package/dist/pi-harness.js.map +1 -0
- package/dist/placement.d.ts +99 -0
- package/dist/placement.d.ts.map +1 -0
- package/dist/placement.js +67 -0
- package/dist/placement.js.map +1 -0
- package/dist/prd-to-spec.d.ts +315 -0
- package/dist/prd-to-spec.d.ts.map +1 -0
- package/dist/prd-to-spec.js +684 -0
- package/dist/prd-to-spec.js.map +1 -0
- package/dist/prepare.d.ts +121 -0
- package/dist/prepare.d.ts.map +1 -0
- package/dist/prepare.js +140 -0
- package/dist/prepare.js.map +1 -0
- package/dist/prompt.d.ts +360 -0
- package/dist/prompt.d.ts.map +1 -0
- package/dist/prompt.js +499 -0
- package/dist/prompt.js.map +1 -0
- package/dist/protocol/ADR-FORMAT.md +47 -0
- package/dist/protocol/CLAIM-PROTOCOL.md +217 -0
- package/dist/protocol/REVIEW-PROTOCOL.md +119 -0
- package/dist/protocol/SURFACE-PROTOCOL.md +121 -0
- package/dist/protocol/TASKING-PROTOCOL.md +122 -0
- package/dist/protocol/WORK-CONTRACT.md +276 -0
- package/dist/protocol/spec-template.md +71 -0
- package/dist/protocol/task-template.md +65 -0
- package/dist/readiness.d.ts +66 -0
- package/dist/readiness.d.ts.map +1 -0
- package/dist/readiness.js +36 -0
- package/dist/readiness.js.map +1 -0
- package/dist/reap-branches.d.ts +102 -0
- package/dist/reap-branches.d.ts.map +1 -0
- package/dist/reap-branches.js +149 -0
- package/dist/reap-branches.js.map +1 -0
- package/dist/recover-isolated.d.ts +72 -0
- package/dist/recover-isolated.d.ts.map +1 -0
- package/dist/recover-isolated.js +188 -0
- package/dist/recover-isolated.js.map +1 -0
- package/dist/registry.d.ts +172 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +296 -0
- package/dist/registry.js.map +1 -0
- package/dist/repo-config.d.ts +201 -0
- package/dist/repo-config.d.ts.map +1 -0
- package/dist/repo-config.js +414 -0
- package/dist/repo-config.js.map +1 -0
- package/dist/repo-key.d.ts +20 -0
- package/dist/repo-key.d.ts.map +1 -0
- package/dist/repo-key.js +68 -0
- package/dist/repo-key.js.map +1 -0
- package/dist/repo-mirror.d.ts +177 -0
- package/dist/repo-mirror.d.ts.map +1 -0
- package/dist/repo-mirror.js +271 -0
- package/dist/repo-mirror.js.map +1 -0
- package/dist/retry-backoff.d.ts +90 -0
- package/dist/retry-backoff.d.ts.map +1 -0
- package/dist/retry-backoff.js +98 -0
- package/dist/retry-backoff.js.map +1 -0
- package/dist/review-gate.d.ts +173 -0
- package/dist/review-gate.d.ts.map +1 -0
- package/dist/review-gate.js +261 -0
- package/dist/review-gate.js.map +1 -0
- package/dist/review-verdict.d.ts +149 -0
- package/dist/review-verdict.d.ts.map +1 -0
- package/dist/review-verdict.js +332 -0
- package/dist/review-verdict.js.map +1 -0
- package/dist/run.d.ts +221 -0
- package/dist/run.d.ts.map +1 -0
- package/dist/run.js +963 -0
- package/dist/run.js.map +1 -0
- package/dist/scan.d.ts +308 -0
- package/dist/scan.d.ts.map +1 -0
- package/dist/scan.js +374 -0
- package/dist/scan.js.map +1 -0
- package/dist/select-order.d.ts +75 -0
- package/dist/select-order.d.ts.map +1 -0
- package/dist/select-order.js +108 -0
- package/dist/select-order.js.map +1 -0
- package/dist/select-priority.d.ts +188 -0
- package/dist/select-priority.d.ts.map +1 -0
- package/dist/select-priority.js +80 -0
- package/dist/select-priority.js.map +1 -0
- package/dist/select.d.ts +25 -0
- package/dist/select.d.ts.map +1 -0
- package/dist/select.js +43 -0
- package/dist/select.js.map +1 -0
- package/dist/session-path.d.ts +36 -0
- package/dist/session-path.d.ts.map +1 -0
- package/dist/session-path.js +129 -0
- package/dist/session-path.js.map +1 -0
- package/dist/sidecar-apply.d.ts +83 -0
- package/dist/sidecar-apply.d.ts.map +1 -0
- package/dist/sidecar-apply.js +111 -0
- package/dist/sidecar-apply.js.map +1 -0
- package/dist/sidecar.d.ts +245 -0
- package/dist/sidecar.d.ts.map +1 -0
- package/dist/sidecar.js +481 -0
- package/dist/sidecar.js.map +1 -0
- package/dist/slug-namespace.d.ts +204 -0
- package/dist/slug-namespace.d.ts.map +1 -0
- package/dist/slug-namespace.js +229 -0
- package/dist/slug-namespace.js.map +1 -0
- package/dist/spec-complete.d.ts +44 -0
- package/dist/spec-complete.d.ts.map +1 -0
- package/dist/spec-complete.js +69 -0
- package/dist/spec-complete.js.map +1 -0
- package/dist/start.d.ts +97 -0
- package/dist/start.d.ts.map +1 -0
- package/dist/start.js +633 -0
- package/dist/start.js.map +1 -0
- package/dist/status.d.ts +199 -0
- package/dist/status.d.ts.map +1 -0
- package/dist/status.js +228 -0
- package/dist/status.js.map +1 -0
- package/dist/surface-gate.d.ts +162 -0
- package/dist/surface-gate.d.ts.map +1 -0
- package/dist/surface-gate.js +206 -0
- package/dist/surface-gate.js.map +1 -0
- package/dist/surface-persist.d.ts +86 -0
- package/dist/surface-persist.d.ts.map +1 -0
- package/dist/surface-persist.js +129 -0
- package/dist/surface-persist.js.map +1 -0
- package/dist/tasker-review-loop.d.ts +249 -0
- package/dist/tasker-review-loop.d.ts.map +1 -0
- package/dist/tasker-review-loop.js +369 -0
- package/dist/tasker-review-loop.js.map +1 -0
- package/dist/tasking-eligibility.d.ts +74 -0
- package/dist/tasking-eligibility.d.ts.map +1 -0
- package/dist/tasking-eligibility.js +52 -0
- package/dist/tasking-eligibility.js.map +1 -0
- package/dist/tasking-lock.d.ts +111 -0
- package/dist/tasking-lock.d.ts.map +1 -0
- package/dist/tasking-lock.js +256 -0
- package/dist/tasking-lock.js.map +1 -0
- package/dist/tasking.d.ts +275 -0
- package/dist/tasking.d.ts.map +1 -0
- package/dist/tasking.js +952 -0
- package/dist/tasking.js.map +1 -0
- package/dist/triage-gate.d.ts +127 -0
- package/dist/triage-gate.d.ts.map +1 -0
- package/dist/triage-gate.js +139 -0
- package/dist/triage-gate.js.map +1 -0
- package/dist/triage-persist.d.ts +163 -0
- package/dist/triage-persist.d.ts.map +1 -0
- package/dist/triage-persist.js +387 -0
- package/dist/triage-persist.js.map +1 -0
- package/dist/verdict-json.d.ts +32 -0
- package/dist/verdict-json.d.ts.map +1 -0
- package/dist/verdict-json.js +74 -0
- package/dist/verdict-json.js.map +1 -0
- package/dist/verify-workflow-template.d.ts +60 -0
- package/dist/verify-workflow-template.d.ts.map +1 -0
- package/dist/verify-workflow-template.js +126 -0
- package/dist/verify-workflow-template.js.map +1 -0
- package/dist/verify.d.ts +60 -0
- package/dist/verify.d.ts.map +1 -0
- package/dist/verify.js +62 -0
- package/dist/verify.js.map +1 -0
- package/dist/watch-session.d.ts +112 -0
- package/dist/watch-session.d.ts.map +1 -0
- package/dist/watch-session.js +347 -0
- package/dist/watch-session.js.map +1 -0
- package/dist/work-layout.d.ts +198 -0
- package/dist/work-layout.d.ts.map +1 -0
- package/dist/work-layout.js +217 -0
- package/dist/work-layout.js.map +1 -0
- package/dist/work-on.d.ts +154 -0
- package/dist/work-on.d.ts.map +1 -0
- package/dist/work-on.js +387 -0
- package/dist/work-on.js.map +1 -0
- package/dist/workspace.d.ts +224 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +325 -0
- package/dist/workspace.js.map +1 -0
- package/package.json +46 -2
- package/src/advance-ci-template.ts +203 -0
- package/src/advance-classify.ts +197 -0
- package/src/advance-drivers.ts +414 -0
- package/src/advance-isolated.ts +432 -0
- package/src/advance-lifecycle-template.ts +791 -0
- package/src/advance-loop-driver.ts +745 -0
- package/src/advance-treeless-publish.ts +177 -0
- package/src/advance.ts +1564 -0
- package/src/advancing-lock.ts +988 -0
- package/src/agent-launch.ts +137 -0
- package/src/agent-stop.ts +361 -0
- package/src/apply-decide.ts +242 -0
- package/src/apply-merge-action.ts +502 -0
- package/src/apply-persist.ts +518 -0
- package/src/arbiter.ts +372 -0
- package/src/brand.ts +111 -0
- package/src/buildable-body.ts +196 -0
- package/src/categorise.ts +158 -0
- package/src/claim-cas.ts +513 -0
- package/src/cli-spinner.ts +225 -0
- package/src/cli.ts +4369 -0
- package/src/close-job-template.ts +236 -0
- package/src/close-job.ts +319 -0
- package/src/complete.ts +1379 -0
- package/src/concurrency.ts +151 -0
- package/src/config-override.ts +116 -0
- package/src/config.ts +883 -0
- package/src/continue-branch.ts +542 -0
- package/src/cwd-section.ts +392 -0
- package/src/decision-engine.ts +272 -0
- package/src/detect.ts +124 -0
- package/src/do-autopick.ts +223 -0
- package/src/do-config.ts +589 -0
- package/src/do-remote-auto.ts +197 -0
- package/src/do.ts +2623 -0
- package/src/drop-source.ts +194 -0
- package/src/eligibility.ts +79 -0
- package/src/env-config.ts +305 -0
- package/src/failure-cause.ts +142 -0
- package/src/format.ts +313 -0
- package/src/frontmatter.ts +485 -0
- package/src/gate-readiness.ts +147 -0
- package/src/gc.ts +510 -0
- package/src/gh-failure.ts +53 -0
- package/src/git.ts +186 -0
- package/src/github.ts +468 -0
- package/src/harness.ts +355 -0
- package/src/identity.ts +322 -0
- package/src/index.ts +785 -0
- package/src/install-ci-branch-protection.ts +255 -0
- package/src/install-ci-capabilities/advance-lifecycle.ts +34 -0
- package/src/install-ci-capabilities/close-job.ts +32 -0
- package/src/install-ci-capabilities/example-noop.ts +24 -0
- package/src/install-ci-capabilities/intake.ts +34 -0
- package/src/install-ci-capabilities/verify.ts +33 -0
- package/src/install-ci-core.ts +1088 -0
- package/src/install-ci-github.ts +376 -0
- package/src/install-ci.ts +552 -0
- package/src/intake-event.ts +102 -0
- package/src/intake-marker.ts +195 -0
- package/src/intake-triage.ts +138 -0
- package/src/intake-trigger-template.ts +591 -0
- package/src/intake.ts +2445 -0
- package/src/integration-core.ts +3065 -0
- package/src/integrator.ts +771 -0
- package/src/isolation.ts +484 -0
- package/src/issue-provider.ts +733 -0
- package/src/item-lock.ts +1858 -0
- package/src/item-path.ts +75 -0
- package/src/ledger-lint.ts +332 -0
- package/src/ledger-read.ts +924 -0
- package/src/ledger-write.ts +865 -0
- package/src/lifecycle-gather.ts +298 -0
- package/src/lifecycle-pools.ts +250 -0
- package/src/merge-question-surfacer.ts +496 -0
- package/src/mint-adr.ts +362 -0
- package/src/mirror-pool-scan.ts +240 -0
- package/src/needs-attention.ts +1506 -0
- package/src/orphan-sidecar.ts +150 -0
- package/src/output.ts +89 -0
- package/src/pi-harness.ts +403 -0
- package/src/placement.ts +131 -0
- package/src/prd-to-spec.ts +1023 -0
- package/src/prepare.ts +230 -0
- package/src/prompt.ts +760 -0
- package/src/readiness.ts +98 -0
- package/src/reap-branches.ts +278 -0
- package/src/recover-isolated.ts +276 -0
- package/src/registry.ts +475 -0
- package/src/repo-config.ts +550 -0
- package/src/repo-key.ts +74 -0
- package/src/repo-mirror.ts +367 -0
- package/src/retry-backoff.ts +130 -0
- package/src/review-gate.ts +389 -0
- package/src/review-verdict.ts +422 -0
- package/src/run.ts +1430 -0
- package/src/scan.ts +611 -0
- package/src/select-order.ts +143 -0
- package/src/select-priority.ts +266 -0
- package/src/select.ts +62 -0
- package/src/session-path.ts +153 -0
- package/src/sidecar-apply.ts +216 -0
- package/src/sidecar.ts +700 -0
- package/src/slug-namespace.ts +367 -0
- package/src/spec-complete.ts +118 -0
- package/src/start.ts +974 -0
- package/src/status.ts +441 -0
- package/src/surface-gate.ts +337 -0
- package/src/surface-persist.ts +241 -0
- package/src/tasker-review-loop.ts +671 -0
- package/src/tasking-eligibility.ts +114 -0
- package/src/tasking-lock.ts +416 -0
- package/src/tasking.ts +1438 -0
- package/src/triage-gate.ts +248 -0
- package/src/triage-persist.ts +570 -0
- package/src/verdict-json.ts +73 -0
- package/src/verify-workflow-template.ts +159 -0
- package/src/verify.ts +123 -0
- package/src/watch-session.ts +397 -0
- package/src/work-layout.ts +262 -0
- package/src/work-on.ts +660 -0
- package/src/workspace.ts +502 -0
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `install-ci` VERIFY-WORKFLOW capability (prd
|
|
3
|
+
* `land-time-reverify-and-parallel-merge-ceiling`, task
|
|
4
|
+
* `install-ci-tier1-branch-protection`; Story 11 — the Tier-1 GitHub ceiling).
|
|
5
|
+
* Emits a small `verify.yml` workflow whose ONLY job is `verify` and runs on
|
|
6
|
+
* `pull_request` (and `merge_group`, the Tier-2 forward seam). It produces the
|
|
7
|
+
* GitHub check named exactly {@link VERIFY_CHECK_CONTEXT}, which the
|
|
8
|
+
* branch-protection step ({@link installCIBranchProtectionStep}) names as the
|
|
9
|
+
* required-status check `context`. Co-locating the two strings — the EMITTED
|
|
10
|
+
* job/check name AND the REQUIRED context — in one constant pins the
|
|
11
|
+
* acceptance-criterion "context matches the workflow's job name" by construction
|
|
12
|
+
* (a single test diffs the two).
|
|
13
|
+
*
|
|
14
|
+
* The workflow is deliberately thin: it wires the same composite setup action
|
|
15
|
+
* the other capabilities use, then runs `dorfl verify` — the deterministic shell
|
|
16
|
+
* gate the repo declares in `.dorfl.json`. No agent, no provider secrets, no
|
|
17
|
+
* `gh` mutation; it is read-only with respect to `work/`.
|
|
18
|
+
*
|
|
19
|
+
* `merge_group` is present (with no extra wiring) so a follow-on Tier-2 task
|
|
20
|
+
* (GitHub Merge Queue) can flip the ruleset on without changing this workflow's
|
|
21
|
+
* trigger surface — the forward seam the spec's Applied Answers q3 names.
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* The required-status-check CONTEXT install-ci sets via branch protection AND the
|
|
25
|
+
* job/check name the emitted verify workflow produces. ONE source of truth so
|
|
26
|
+
* the two strings can never drift (the "context matches the workflow's job name"
|
|
27
|
+
* acceptance criterion is enforced by both reading this constant).
|
|
28
|
+
*/
|
|
29
|
+
export const VERIFY_CHECK_CONTEXT = 'verify';
|
|
30
|
+
/** The capability id (the registry key + the emitted workflow file stem). */
|
|
31
|
+
export const VERIFY_CAPABILITY_ID = 'verify';
|
|
32
|
+
/** The wizard-facing label for the verify capability. */
|
|
33
|
+
export const VERIFY_CAPABILITY_LABEL = 'Run the repo `verify` gate on every PR (the Tier-1 GitHub ceiling: produces the required-status check `verify` that branch protection requires)';
|
|
34
|
+
/** The repo-relative path (under the output base) of the emitted workflow. */
|
|
35
|
+
export const VERIFY_WORKFLOW_PATH = 'workflows/verify.yml';
|
|
36
|
+
/**
|
|
37
|
+
* Generate the verify workflow YAML. Deterministic: the same config produces
|
|
38
|
+
* byte-identical output. The job is named exactly {@link VERIFY_CHECK_CONTEXT}
|
|
39
|
+
* so the GitHub check it produces matches the required-status `context` install-ci
|
|
40
|
+
* configures on `main` — by construction, not by hand-typed agreement.
|
|
41
|
+
*/
|
|
42
|
+
export function generateVerifyWorkflow(_config) {
|
|
43
|
+
return `\
|
|
44
|
+
# dorfl — the VERIFY workflow (Tier-1 GitHub ceiling; prd
|
|
45
|
+
# land-time-reverify-and-parallel-merge-ceiling, task
|
|
46
|
+
# install-ci-tier1-branch-protection). EMITTED by \`dorfl install-ci\`; the
|
|
47
|
+
# human commits it. DO NOT hand-edit a copy — re-run install-ci to upgrade.
|
|
48
|
+
#
|
|
49
|
+
# This workflow exists SOLELY to produce a GitHub check named \`${VERIFY_CHECK_CONTEXT}\`
|
|
50
|
+
# on every pull request, which install-ci's branch-protection step requires
|
|
51
|
+
# (\`required_status_checks.strict: true\` + a required \`${VERIFY_CHECK_CONTEXT}\` context)
|
|
52
|
+
# so a PR cannot be merged stale. The merge button is disabled until \`${VERIFY_CHECK_CONTEXT}\`
|
|
53
|
+
# reports success on the rebased PR head — closing the PR-merge-time drift window
|
|
54
|
+
# story 7 names.
|
|
55
|
+
#
|
|
56
|
+
# \`merge_group\` is listed so a follow-on Tier-2 task (GitHub Merge Queue) can
|
|
57
|
+
# enable speculative-rebase merging by flipping the ruleset, WITHOUT changing
|
|
58
|
+
# this workflow's trigger surface (the Applied Answer q3 forward seam).
|
|
59
|
+
#
|
|
60
|
+
# CONTEXT NAMING — the job is named EXACTLY \`${VERIFY_CHECK_CONTEXT}\`. install-ci
|
|
61
|
+
# names the same string as the required-context, so they cannot drift. If you
|
|
62
|
+
# rename the job here you MUST re-run install-ci (or the protection's required
|
|
63
|
+
# context will not match this workflow and every PR will block forever).
|
|
64
|
+
#
|
|
65
|
+
# SAFETY (US #9): the running job requests NO \`workflows\` permission and runs
|
|
66
|
+
# only \`dorfl verify\` (a deterministic shell gate; \`pnpm format:check && pnpm
|
|
67
|
+
# build && pnpm test\` for the dorfl repo). It cannot edit \`.github/workflows/**\`
|
|
68
|
+
# or mutate \`work/\`.
|
|
69
|
+
|
|
70
|
+
name: ${VERIFY_CHECK_CONTEXT}
|
|
71
|
+
|
|
72
|
+
on:
|
|
73
|
+
pull_request:
|
|
74
|
+
# Tier-2 forward seam: a follow-on task enables GitHub Merge Queue and the
|
|
75
|
+
# same job re-runs on the speculative-rebase merge-group head, no template edit.
|
|
76
|
+
merge_group:
|
|
77
|
+
|
|
78
|
+
# Serialise overlapping verify runs on the same ref (the latest commit wins —
|
|
79
|
+
# stale runs are cancelled, since \`verify\` is a pure pass/fail gate).
|
|
80
|
+
concurrency:
|
|
81
|
+
group: ${VERIFY_CHECK_CONTEXT}-\${{ github.ref }}
|
|
82
|
+
cancel-in-progress: true
|
|
83
|
+
|
|
84
|
+
# NO \`workflows\` permission (US #9). \`contents: read\` is all the gate needs.
|
|
85
|
+
permissions:
|
|
86
|
+
contents: read
|
|
87
|
+
|
|
88
|
+
jobs:
|
|
89
|
+
# The job name IS the GitHub check context — it must equal VERIFY_CHECK_CONTEXT
|
|
90
|
+
# (\`${VERIFY_CHECK_CONTEXT}\`) or install-ci's branch protection will require a
|
|
91
|
+
# context this workflow does not produce.
|
|
92
|
+
${VERIFY_CHECK_CONTEXT}:
|
|
93
|
+
runs-on: ubuntu-latest
|
|
94
|
+
steps:
|
|
95
|
+
- uses: actions/checkout@v4
|
|
96
|
+
with:
|
|
97
|
+
fetch-depth: 0
|
|
98
|
+
- uses: ./.github/actions/dorfl-setup
|
|
99
|
+
- name: run the repo verify gate
|
|
100
|
+
run: dorfl verify
|
|
101
|
+
`;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Structurally validate the verify workflow against the task's acceptance
|
|
105
|
+
* criteria (job name = required context, runs on `pull_request`, ships the
|
|
106
|
+
* `merge_group` seam, no `workflows:` permission).
|
|
107
|
+
*/
|
|
108
|
+
export function validateVerifyWorkflow(text) {
|
|
109
|
+
const problems = [];
|
|
110
|
+
const require = (id, present, message) => {
|
|
111
|
+
if (!present)
|
|
112
|
+
problems.push({ id, message });
|
|
113
|
+
};
|
|
114
|
+
const operative = text
|
|
115
|
+
.split('\n')
|
|
116
|
+
.filter((line) => !/^\s*#/.test(line))
|
|
117
|
+
.join('\n');
|
|
118
|
+
require('job-named-verify-context', new RegExp(`^\\s{2}${VERIFY_CHECK_CONTEXT}:\\s*$`, 'm').test(operative), `the workflow must declare a job named exactly \`${VERIFY_CHECK_CONTEXT}\` ` +
|
|
119
|
+
'(its name IS the GitHub check context install-ci requires).');
|
|
120
|
+
require('trigger-pull-request', /\bon:\s*[\s\S]*?\bpull_request\s*:/.test(operative), 'must trigger on `pull_request` (the check must run on every PR).');
|
|
121
|
+
require('trigger-merge-group-seam', /\bmerge_group\s*:/.test(operative), 'must list `merge_group` as a trigger (the Tier-2 GitHub Merge Queue forward seam).');
|
|
122
|
+
require('no-workflows-permission', !/\bworkflows\s*:\s*write\b/.test(operative), 'must request NO `workflows` permission (US #9).');
|
|
123
|
+
require('runs-dorfl-verify', /dorfl verify\b/.test(operative), 'the job must run `dorfl verify` (the deterministic shell gate the repo declares).');
|
|
124
|
+
return { ok: problems.length === 0, problems };
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=verify-workflow-template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify-workflow-template.js","sourceRoot":"","sources":["../src/verify-workflow-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAQ,CAAC;AAE7C,6EAA6E;AAC7E,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAQ,CAAC;AAE7C,yDAAyD;AACzD,MAAM,CAAC,MAAM,uBAAuB,GACnC,iJAAiJ,CAAC;AAEnJ,8EAA8E;AAC9E,MAAM,CAAC,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAyB;IAC/D,OAAO;;;;;;kEAM0D,oBAAoB;;4DAE1B,oBAAoB;yEACP,oBAAoB;;;;;;;;gDAQ7C,oBAAoB;;;;;;;;;;QAU5D,oBAAoB;;;;;;;;;;;WAWjB,oBAAoB;;;;;;;;;SAStB,oBAAoB;;IAEzB,oBAAoB;;;;;;;;;CASvB,CAAC;AACF,CAAC;AAcD;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAY;IAClD,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAC7C,MAAM,OAAO,GAAG,CAAC,EAAU,EAAE,OAAgB,EAAE,OAAe,EAAQ,EAAE;QACvE,IAAI,CAAC,OAAO;YAAE,QAAQ,CAAC,IAAI,CAAC,EAAC,EAAE,EAAE,OAAO,EAAC,CAAC,CAAC;IAC5C,CAAC,CAAC;IACF,MAAM,SAAS,GAAG,IAAI;SACpB,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACrC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,OAAO,CAAC,0BAA0B,EAAE,IAAI,MAAM,CAC7C,UAAU,oBAAoB,QAAQ,EACtC,GAAG,CACH,CAAC,IAAI,CACL,SAAS,CACT,EAAE,mDAAmD,oBAAoB,KAAK;QAC9E,6DAA6D,CAAC,CAAC;IAChE,OAAO,CAAC,sBAAsB,EAAE,oCAAoC,CAAC,IAAI,CACxE,SAAS,CACT,EAAE,kEAAkE,CAAC,CAAC;IACvE,OAAO,CAAC,0BAA0B,EAAE,mBAAmB,CAAC,IAAI,CAC3D,SAAS,CACT,EAAE,oFAAoF,CAAC,CAAC;IACzF,OAAO,CAAC,yBAAyB,EAAE,CAAC,2BAA2B,CAAC,IAAI,CACnE,SAAS,CACT,EAAE,iDAAiD,CAAC,CAAC;IACtD,OAAO,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,IAAI,CACjD,SAAS,CACT,EAAE,mFAAmF,CAAC,CAAC;IACxF,OAAO,EAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,QAAQ,EAAC,CAAC;AAC9C,CAAC"}
|
package/dist/verify.d.ts
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The per-repo acceptance gate, run as `dorfl verify`. It is a
|
|
3
|
+
* deterministic shell gate — a declared, per-repo command (or ordered list of
|
|
4
|
+
* commands) — NOT prose interpreted by a model. There is no LLM in this loop:
|
|
5
|
+
* the gate is known by reading config, and it either passes (exit 0) or it does
|
|
6
|
+
* not. This same mechanism is consumed by the human `complete` command (where it
|
|
7
|
+
* is a default-on, `--skip-verify`-able safety-net) and by the autonomous
|
|
8
|
+
* `run-once`/`watch` (where it is the authoritative, non-skippable trust
|
|
9
|
+
* boundary). `verify` itself just runs the gate; callers decide authority.
|
|
10
|
+
*
|
|
11
|
+
* It is read-only with respect to `work/`: it runs the declared check and never
|
|
12
|
+
* moves or commits anything.
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* The per-repo gate, as declared in config. A single shell command, or an
|
|
16
|
+
* ordered list of commands run in sequence (each must pass for the gate to
|
|
17
|
+
* pass). `undefined` (unset) ⇒ {@link DEFAULT_VERIFY_COMMAND} is used.
|
|
18
|
+
*/
|
|
19
|
+
export type VerifyConfig = string | string[];
|
|
20
|
+
/**
|
|
21
|
+
* The sensible default when no `verify` is configured: build, then test, then
|
|
22
|
+
* check formatting across the workspace. Deterministic, auditable, no model.
|
|
23
|
+
*/
|
|
24
|
+
export declare const DEFAULT_VERIFY_COMMAND = "pnpm -r build && pnpm -r test && pnpm -r format:check";
|
|
25
|
+
/**
|
|
26
|
+
* Resolve the declared gate into an ordered, non-empty list of shell commands.
|
|
27
|
+
* Unset ⇒ the default. A string ⇒ a single command. A list ⇒ the list, with
|
|
28
|
+
* blank/whitespace-only entries dropped (and the default substituted if that
|
|
29
|
+
* leaves nothing). Each command is run in sequence; all must pass.
|
|
30
|
+
*/
|
|
31
|
+
export declare function resolveVerifyCommands(verify: VerifyConfig | undefined): string[];
|
|
32
|
+
export interface RunVerifyOptions {
|
|
33
|
+
/** The repo to run the gate in (its working directory). */
|
|
34
|
+
cwd: string;
|
|
35
|
+
/** The declared gate (string | list). Unset ⇒ the default command. */
|
|
36
|
+
verify?: VerifyConfig;
|
|
37
|
+
/** Environment for the gate's child processes. */
|
|
38
|
+
env?: NodeJS.ProcessEnv;
|
|
39
|
+
/** Sink for streamed stdout chunks. Defaults to `process.stdout.write`. */
|
|
40
|
+
onStdout?: (chunk: string) => void;
|
|
41
|
+
/** Sink for streamed stderr chunks. Defaults to `process.stderr.write`. */
|
|
42
|
+
onStderr?: (chunk: string) => void;
|
|
43
|
+
}
|
|
44
|
+
export interface RunVerifyResult {
|
|
45
|
+
/** The exit code of the gate: 0 iff every command passed. */
|
|
46
|
+
exitCode: number;
|
|
47
|
+
/** The ordered commands that were run (resolved from config). */
|
|
48
|
+
commands: string[];
|
|
49
|
+
/** Whether the gate passed (exitCode === 0). */
|
|
50
|
+
passed: boolean;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Run the resolved gate command(s) in `cwd`, streaming output, and resolve with
|
|
54
|
+
* the gate's status: exit 0 iff every command passed. Commands run in sequence;
|
|
55
|
+
* the first non-zero exit short-circuits the rest and becomes the result
|
|
56
|
+
* (mirroring `&&` semantics). Each command is run through `bash -c` so that
|
|
57
|
+
* shell operators in the declared gate (`&&`, pipes, etc.) behave as written.
|
|
58
|
+
*/
|
|
59
|
+
export declare function runVerify(options: RunVerifyOptions): Promise<RunVerifyResult>;
|
|
60
|
+
//# sourceMappingURL=verify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AAEH;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;AAE7C;;;GAGG;AACH,eAAO,MAAM,sBAAsB,0DACqB,CAAC;AAEzD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACpC,MAAM,EAAE,YAAY,GAAG,SAAS,GAC9B,MAAM,EAAE,CAOV;AAED,MAAM,WAAW,gBAAgB;IAChC,2DAA2D;IAC3D,GAAG,EAAE,MAAM,CAAC;IACZ,sEAAsE;IACtE,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,eAAe;IAC/B,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,gDAAgD;IAChD,MAAM,EAAE,OAAO,CAAC;CAChB;AAED;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC9B,OAAO,EAAE,gBAAgB,GACvB,OAAO,CAAC,eAAe,CAAC,CAiB1B"}
|
package/dist/verify.js
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
/**
|
|
3
|
+
* The sensible default when no `verify` is configured: build, then test, then
|
|
4
|
+
* check formatting across the workspace. Deterministic, auditable, no model.
|
|
5
|
+
*/
|
|
6
|
+
export const DEFAULT_VERIFY_COMMAND = 'pnpm -r build && pnpm -r test && pnpm -r format:check';
|
|
7
|
+
/**
|
|
8
|
+
* Resolve the declared gate into an ordered, non-empty list of shell commands.
|
|
9
|
+
* Unset ⇒ the default. A string ⇒ a single command. A list ⇒ the list, with
|
|
10
|
+
* blank/whitespace-only entries dropped (and the default substituted if that
|
|
11
|
+
* leaves nothing). Each command is run in sequence; all must pass.
|
|
12
|
+
*/
|
|
13
|
+
export function resolveVerifyCommands(verify) {
|
|
14
|
+
if (verify === undefined) {
|
|
15
|
+
return [DEFAULT_VERIFY_COMMAND];
|
|
16
|
+
}
|
|
17
|
+
const list = Array.isArray(verify) ? verify : [verify];
|
|
18
|
+
const commands = list.filter((command) => command.trim() !== '');
|
|
19
|
+
return commands.length > 0 ? commands : [DEFAULT_VERIFY_COMMAND];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Run the resolved gate command(s) in `cwd`, streaming output, and resolve with
|
|
23
|
+
* the gate's status: exit 0 iff every command passed. Commands run in sequence;
|
|
24
|
+
* the first non-zero exit short-circuits the rest and becomes the result
|
|
25
|
+
* (mirroring `&&` semantics). Each command is run through `bash -c` so that
|
|
26
|
+
* shell operators in the declared gate (`&&`, pipes, etc.) behave as written.
|
|
27
|
+
*/
|
|
28
|
+
export async function runVerify(options) {
|
|
29
|
+
const commands = resolveVerifyCommands(options.verify);
|
|
30
|
+
const onStdout = options.onStdout ?? ((chunk) => process.stdout.write(chunk));
|
|
31
|
+
const onStderr = options.onStderr ?? ((chunk) => process.stderr.write(chunk));
|
|
32
|
+
for (const command of commands) {
|
|
33
|
+
const exitCode = await runOne(command, options.cwd, options.env, {
|
|
34
|
+
onStdout,
|
|
35
|
+
onStderr,
|
|
36
|
+
});
|
|
37
|
+
if (exitCode !== 0) {
|
|
38
|
+
return { exitCode, commands, passed: false };
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return { exitCode: 0, commands, passed: true };
|
|
42
|
+
}
|
|
43
|
+
/** Spawn one command via `bash -c`, streaming its output, resolving its code. */
|
|
44
|
+
function runOne(command, cwd, env, sinks) {
|
|
45
|
+
return new Promise((resolvePromise, reject) => {
|
|
46
|
+
const child = spawn('bash', ['-c', command], {
|
|
47
|
+
cwd,
|
|
48
|
+
env: env ?? process.env,
|
|
49
|
+
});
|
|
50
|
+
child.stdout.on('data', (chunk) => {
|
|
51
|
+
sinks.onStdout(chunk.toString('utf8'));
|
|
52
|
+
});
|
|
53
|
+
child.stderr.on('data', (chunk) => {
|
|
54
|
+
sinks.onStderr(chunk.toString('utf8'));
|
|
55
|
+
});
|
|
56
|
+
child.on('error', (err) => reject(new Error(`failed to spawn gate command: ${err.message}`)));
|
|
57
|
+
child.on('close', (code) => {
|
|
58
|
+
resolvePromise(code ?? -1);
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=verify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,oBAAoB,CAAC;AAuBzC;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAClC,uDAAuD,CAAC;AAEzD;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACpC,MAAgC;IAEhC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACjC,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACjE,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC;AAClE,CAAC;AAwBD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC9B,OAAyB;IAEzB,MAAM,QAAQ,GAAG,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACvD,MAAM,QAAQ,GACb,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAa,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,MAAM,QAAQ,GACb,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAa,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAEtE,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAChE,QAAQ;YACR,QAAQ;SACR,CAAC,CAAC;QACH,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACpB,OAAO,EAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAC,CAAC;QAC5C,CAAC;IACF,CAAC;IACD,OAAO,EAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAC,CAAC;AAC9C,CAAC;AAED,iFAAiF;AACjF,SAAS,MAAM,CACd,OAAe,EACf,GAAW,EACX,GAAkC,EAClC,KAA6E;IAE7E,OAAO,IAAI,OAAO,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE;QAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;YAC5C,GAAG;YACH,GAAG,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG;SACvB,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACzC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACzC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CACzB,MAAM,CAAC,IAAI,KAAK,CAAC,iCAAiC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CACjE,CAAC;QACF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAC1B,cAAc,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/** The green `✓ agent finished` line, emitted on PROCESS EXIT (not a log event). */
|
|
2
|
+
export declare function finishedLine(color: boolean): string;
|
|
3
|
+
/**
|
|
4
|
+
* A one-line VISUAL BOUNDARY banner the caller prints between two tailed agent
|
|
5
|
+
* streams (e.g. the build stream and the Gate-2 review stream — task
|
|
6
|
+
* `watch-review-session`), so a watching human knows the first stream ended and
|
|
7
|
+
* the next began. Reuses this module's colour rule (cyan, the same marker hue as
|
|
8
|
+
* the `▶ <tool>` lines) so it reads as part of the same live view. Pure: returns
|
|
9
|
+
* the string; the caller routes it to the watch sink.
|
|
10
|
+
*/
|
|
11
|
+
export declare function boundaryLine(label: string, color: boolean): string;
|
|
12
|
+
/**
|
|
13
|
+
* Parse ONE pi SESSION-LOG `.jsonl` line and return the high-signal lines to
|
|
14
|
+
* surface — or `[]` to SKIP it. This is the pure, unit-testable classifier,
|
|
15
|
+
* mirroring pi-remote's `session-pool.ts` block walk:
|
|
16
|
+
*
|
|
17
|
+
* - a `{type:"message", message:{role:"assistant", content}}` record → for each
|
|
18
|
+
* `content[]` part: a `text` part yields its text (parts concatenated into
|
|
19
|
+
* ONE line, like the old `jq` `.content[]` select); a `toolCall` part yields
|
|
20
|
+
* `▶ <name>` (cyan; `name` OR `toolName`, defaulting to `tool`); a `thinking`
|
|
21
|
+
* part (and anything else) is skipped. A plain-string `content` yields one
|
|
22
|
+
* text line.
|
|
23
|
+
* - everything else (`session`/`model_change`/`thinking_level_change`, user
|
|
24
|
+
* messages, tool results, blank/malformed lines) → `[]` (skipped).
|
|
25
|
+
*
|
|
26
|
+
* "Finished" is NOT a record here — the session log has no `agent_end`; the
|
|
27
|
+
* tailer emits {@link finishedLine} on process exit instead.
|
|
28
|
+
*
|
|
29
|
+
* Malformed JSON is skipped (not thrown): a partially-written trailing line in a
|
|
30
|
+
* growing log must not crash the observer.
|
|
31
|
+
*/
|
|
32
|
+
export declare function formatWatchEvent(line: string, color: boolean): string[];
|
|
33
|
+
/**
|
|
34
|
+
* Extract the **last assistant message's text** from a pi session `.jsonl`
|
|
35
|
+
* (task `harness-agent-output`) — the agent's final ANSWER, surfaced through
|
|
36
|
+
* the harness seam as `LaunchResult.output`. It REUSES this module's session-log
|
|
37
|
+
* shape walk (one parser, not two): it scans the `{type:"message",
|
|
38
|
+
* message:{role:"assistant", content[]}}` records, takes the LAST one carrying
|
|
39
|
+
* non-empty `text`, and returns its concatenated text.
|
|
40
|
+
*
|
|
41
|
+
* Returns `undefined` when the log has no assistant text at all — an absent log,
|
|
42
|
+
* a malformed/short log, or a run whose only assistant turn was tool-calls (no
|
|
43
|
+
* `text` part). A tool-only assistant turn is NOT a final answer, so a LATER
|
|
44
|
+
* text turn (if any) wins; with no text turn anywhere the result is `undefined`.
|
|
45
|
+
*
|
|
46
|
+
* Malformed/blank lines are skipped (never thrown): a partially-written trailing
|
|
47
|
+
* line in a just-closed log must not crash the reader.
|
|
48
|
+
*/
|
|
49
|
+
export declare function lastAssistantText(jsonl: string): string | undefined;
|
|
50
|
+
export interface SessionTailerOptions {
|
|
51
|
+
/**
|
|
52
|
+
* The EXACT pi session `.jsonl` file path to tail. The caller generated this
|
|
53
|
+
* BEFORE pi launched (`--session <path>`, task `session-path-pi-default`) and
|
|
54
|
+
* passed the SAME path to the adapter, so the tailer reads the run's own log
|
|
55
|
+
* — no newest-by-mtime dir guessing, no stale-sibling race. The file does NOT
|
|
56
|
+
* yet exist when the tailer starts (pi creates it asynchronously after spawn);
|
|
57
|
+
* the tailer polls until it appears (ENOENT is tolerated as "not yet").
|
|
58
|
+
*/
|
|
59
|
+
sessionFile: string;
|
|
60
|
+
/** Emit ANSI colour (the caller's TTY/`NO_COLOR` decision). */
|
|
61
|
+
color: boolean;
|
|
62
|
+
/** Where formatted high-signal lines are written (defaults to stderr). */
|
|
63
|
+
sink?: (line: string) => void;
|
|
64
|
+
/** How often (ms) to poll for new bytes / the log's appearance. */
|
|
65
|
+
pollIntervalMs?: number;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* A concurrent, READ-ONLY tail of the pi session `.jsonl`. It polls the KNOWN
|
|
69
|
+
* session-file path (which the pi adapter creates only once pi starts) until it
|
|
70
|
+
* appears, then reads newly-appended bytes, splits them into complete lines, and
|
|
71
|
+
* surfaces each via {@link formatWatchEvent}. A partial trailing line is
|
|
72
|
+
* buffered until its newline arrives, so an event split across two reads is
|
|
73
|
+
* never mis-parsed.
|
|
74
|
+
*
|
|
75
|
+
* It is a pure observer: nothing it does feeds back into the run. `start()`
|
|
76
|
+
* begins polling; `stop()` performs one final drain (to catch events written
|
|
77
|
+
* just before the agent exited), emits the `✓ agent finished` line ONCE (the
|
|
78
|
+
* session log has no `agent_end` — process exit IS the finish signal), and
|
|
79
|
+
* releases the file handle. Created and driven by `do --watch` ALONGSIDE the
|
|
80
|
+
* (async) agent launch; `stop()` runs when that launch returns (i.e. the agent
|
|
81
|
+
* process exited).
|
|
82
|
+
*/
|
|
83
|
+
export declare class SessionTailer {
|
|
84
|
+
private readonly sessionFile;
|
|
85
|
+
private readonly color;
|
|
86
|
+
private readonly sink;
|
|
87
|
+
private readonly pollIntervalMs;
|
|
88
|
+
private handle;
|
|
89
|
+
private offset;
|
|
90
|
+
private pending;
|
|
91
|
+
private timer;
|
|
92
|
+
private polling;
|
|
93
|
+
private stopped;
|
|
94
|
+
private finishedEmitted;
|
|
95
|
+
constructor(options: SessionTailerOptions);
|
|
96
|
+
/** Begin polling for the known session file and tailing its new bytes. */
|
|
97
|
+
start(): void;
|
|
98
|
+
/**
|
|
99
|
+
* Stop tailing: one final drain (events written right before the agent exited
|
|
100
|
+
* must still be surfaced), emit the `✓ agent finished` line ONCE (process exit
|
|
101
|
+
* is the finish signal — the session log carries no `agent_end`), then release
|
|
102
|
+
* the handle. Idempotent: a second `stop()` re-emits nothing.
|
|
103
|
+
*/
|
|
104
|
+
stop(): Promise<void>;
|
|
105
|
+
/** One poll tick: ensure the handle is open, then drain new bytes. */
|
|
106
|
+
private poll;
|
|
107
|
+
/** Open the log if not yet open, read appended bytes, surface whole lines. */
|
|
108
|
+
private drain;
|
|
109
|
+
/** Split the buffer on newlines, surfacing each COMPLETE line; keep the rest. */
|
|
110
|
+
private flushLines;
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=watch-session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch-session.d.ts","sourceRoot":"","sources":["../src/watch-session.ts"],"names":[],"mappings":"AAuEA,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEnD;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAElE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAyBvE;AAgED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CA8BnE;AAED,MAAM,WAAW,oBAAoB;IACpC;;;;;;;OAOG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,KAAK,EAAE,OAAO,CAAC;IACf,0EAA0E;IAC1E,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,mEAAmE;IACnE,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAID;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,aAAa;IACzB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAChC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAyB;IAC9C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IAExC,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,eAAe,CAAS;gBAEpB,OAAO,EAAE,oBAAoB;IAOzC,0EAA0E;IAC1E,KAAK,IAAI,IAAI;IAWb;;;;;OAKG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB3B,sEAAsE;YACxD,IAAI;IAclB,8EAA8E;YAChE,KAAK;IA0BnB,iFAAiF;IACjF,OAAO,CAAC,UAAU;CAalB"}
|