dorfl 0.0.0 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/advance-ci-template.d.ts +73 -0
- package/dist/advance-ci-template.d.ts.map +1 -0
- package/dist/advance-ci-template.js +104 -0
- package/dist/advance-ci-template.js.map +1 -0
- package/dist/advance-classify.d.ts +132 -0
- package/dist/advance-classify.d.ts.map +1 -0
- package/dist/advance-classify.js +120 -0
- package/dist/advance-classify.js.map +1 -0
- package/dist/advance-drivers.d.ts +182 -0
- package/dist/advance-drivers.d.ts.map +1 -0
- package/dist/advance-drivers.js +231 -0
- package/dist/advance-drivers.js.map +1 -0
- package/dist/advance-isolated.d.ts +156 -0
- package/dist/advance-isolated.d.ts.map +1 -0
- package/dist/advance-isolated.js +256 -0
- package/dist/advance-isolated.js.map +1 -0
- package/dist/advance-lifecycle-template.d.ts +107 -0
- package/dist/advance-lifecycle-template.d.ts.map +1 -0
- package/dist/advance-lifecycle-template.js +668 -0
- package/dist/advance-lifecycle-template.js.map +1 -0
- package/dist/advance-loop-driver.d.ts +325 -0
- package/dist/advance-loop-driver.d.ts.map +1 -0
- package/dist/advance-loop-driver.js +437 -0
- package/dist/advance-loop-driver.js.map +1 -0
- package/dist/advance-treeless-publish.d.ts +108 -0
- package/dist/advance-treeless-publish.d.ts.map +1 -0
- package/dist/advance-treeless-publish.js +71 -0
- package/dist/advance-treeless-publish.js.map +1 -0
- package/dist/advance.d.ts +340 -0
- package/dist/advance.d.ts.map +1 -0
- package/dist/advance.js +1122 -0
- package/dist/advance.js.map +1 -0
- package/dist/advancing-lock.d.ts +294 -0
- package/dist/advancing-lock.d.ts.map +1 -0
- package/dist/advancing-lock.js +594 -0
- package/dist/advancing-lock.js.map +1 -0
- package/dist/agent-launch.d.ts +79 -0
- package/dist/agent-launch.d.ts.map +1 -0
- package/dist/agent-launch.js +61 -0
- package/dist/agent-launch.js.map +1 -0
- package/dist/agent-stop.d.ts +149 -0
- package/dist/agent-stop.d.ts.map +1 -0
- package/dist/agent-stop.js +307 -0
- package/dist/agent-stop.js.map +1 -0
- package/dist/apply-decide.d.ts +127 -0
- package/dist/apply-decide.d.ts.map +1 -0
- package/dist/apply-decide.js +176 -0
- package/dist/apply-decide.js.map +1 -0
- package/dist/apply-merge-action.d.ts +206 -0
- package/dist/apply-merge-action.d.ts.map +1 -0
- package/dist/apply-merge-action.js +307 -0
- package/dist/apply-merge-action.js.map +1 -0
- package/dist/apply-persist.d.ts +174 -0
- package/dist/apply-persist.d.ts.map +1 -0
- package/dist/apply-persist.js +359 -0
- package/dist/apply-persist.js.map +1 -0
- package/dist/arbiter.d.ts +120 -0
- package/dist/arbiter.d.ts.map +1 -0
- package/dist/arbiter.js +255 -0
- package/dist/arbiter.js.map +1 -0
- package/dist/brand.d.ts +70 -0
- package/dist/brand.d.ts.map +1 -0
- package/dist/brand.js +84 -0
- package/dist/brand.js.map +1 -0
- package/dist/buildable-body.d.ts +132 -0
- package/dist/buildable-body.d.ts.map +1 -0
- package/dist/buildable-body.js +131 -0
- package/dist/buildable-body.js.map +1 -0
- package/dist/categorise.d.ts +66 -0
- package/dist/categorise.d.ts.map +1 -0
- package/dist/categorise.js +106 -0
- package/dist/categorise.js.map +1 -0
- package/dist/claim-cas.d.ts +117 -0
- package/dist/claim-cas.d.ts.map +1 -0
- package/dist/claim-cas.js +312 -0
- package/dist/claim-cas.js.map +1 -0
- package/dist/cli-spinner.d.ts +112 -0
- package/dist/cli-spinner.d.ts.map +1 -0
- package/dist/cli-spinner.js +157 -0
- package/dist/cli-spinner.js.map +1 -0
- package/dist/cli.d.ts +11 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +3094 -0
- package/dist/cli.js.map +1 -0
- package/dist/close-job-template.d.ts +70 -0
- package/dist/close-job-template.d.ts.map +1 -0
- package/dist/close-job-template.js +180 -0
- package/dist/close-job-template.js.map +1 -0
- package/dist/close-job.d.ts +95 -0
- package/dist/close-job.d.ts.map +1 -0
- package/dist/close-job.js +226 -0
- package/dist/close-job.js.map +1 -0
- package/dist/complete.d.ts +361 -0
- package/dist/complete.d.ts.map +1 -0
- package/dist/complete.js +885 -0
- package/dist/complete.js.map +1 -0
- package/dist/concurrency.d.ts +68 -0
- package/dist/concurrency.d.ts.map +1 -0
- package/dist/concurrency.js +112 -0
- package/dist/concurrency.js.map +1 -0
- package/dist/config-override.d.ts +76 -0
- package/dist/config-override.d.ts.map +1 -0
- package/dist/config-override.js +50 -0
- package/dist/config-override.js.map +1 -0
- package/dist/config.d.ts +668 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +241 -0
- package/dist/config.js.map +1 -0
- package/dist/continue-branch.d.ts +249 -0
- package/dist/continue-branch.d.ts.map +1 -0
- package/dist/continue-branch.js +389 -0
- package/dist/continue-branch.js.map +1 -0
- package/dist/cwd-section.d.ts +186 -0
- package/dist/cwd-section.d.ts.map +1 -0
- package/dist/cwd-section.js +209 -0
- package/dist/cwd-section.js.map +1 -0
- package/dist/decision-engine.d.ts +170 -0
- package/dist/decision-engine.d.ts.map +1 -0
- package/dist/decision-engine.js +136 -0
- package/dist/decision-engine.js.map +1 -0
- package/dist/detect.d.ts +17 -0
- package/dist/detect.d.ts.map +1 -0
- package/dist/detect.js +118 -0
- package/dist/detect.js.map +1 -0
- package/dist/do-autopick.d.ts +85 -0
- package/dist/do-autopick.d.ts.map +1 -0
- package/dist/do-autopick.js +112 -0
- package/dist/do-autopick.js.map +1 -0
- package/dist/do-config.d.ts +312 -0
- package/dist/do-config.d.ts.map +1 -0
- package/dist/do-config.js +358 -0
- package/dist/do-config.js.map +1 -0
- package/dist/do-remote-auto.d.ts +75 -0
- package/dist/do-remote-auto.d.ts.map +1 -0
- package/dist/do-remote-auto.js +111 -0
- package/dist/do-remote-auto.js.map +1 -0
- package/dist/do.d.ts +621 -0
- package/dist/do.d.ts.map +1 -0
- package/dist/do.js +1882 -0
- package/dist/do.js.map +1 -0
- package/dist/drop-source.d.ts +96 -0
- package/dist/drop-source.d.ts.map +1 -0
- package/dist/drop-source.js +91 -0
- package/dist/drop-source.js.map +1 -0
- package/dist/eligibility.d.ts +46 -0
- package/dist/eligibility.d.ts.map +1 -0
- package/dist/eligibility.js +34 -0
- package/dist/eligibility.js.map +1 -0
- package/dist/env-config.d.ts +51 -0
- package/dist/env-config.d.ts.map +1 -0
- package/dist/env-config.js +272 -0
- package/dist/env-config.js.map +1 -0
- package/dist/failure-cause.d.ts +70 -0
- package/dist/failure-cause.d.ts.map +1 -0
- package/dist/failure-cause.js +126 -0
- package/dist/failure-cause.js.map +1 -0
- package/dist/format.d.ts +43 -0
- package/dist/format.d.ts.map +1 -0
- package/dist/format.js +256 -0
- package/dist/format.js.map +1 -0
- package/dist/frontmatter.d.ts +215 -0
- package/dist/frontmatter.d.ts.map +1 -0
- package/dist/frontmatter.js +345 -0
- package/dist/frontmatter.js.map +1 -0
- package/dist/gate-readiness.d.ts +84 -0
- package/dist/gate-readiness.d.ts.map +1 -0
- package/dist/gate-readiness.js +103 -0
- package/dist/gate-readiness.js.map +1 -0
- package/dist/gc.d.ts +165 -0
- package/dist/gc.d.ts.map +1 -0
- package/dist/gc.js +313 -0
- package/dist/gc.js.map +1 -0
- package/dist/gh-failure.d.ts +42 -0
- package/dist/gh-failure.d.ts.map +1 -0
- package/dist/gh-failure.js +49 -0
- package/dist/gh-failure.js.map +1 -0
- package/dist/git.d.ts +75 -0
- package/dist/git.d.ts.map +1 -0
- package/dist/git.js +130 -0
- package/dist/git.js.map +1 -0
- package/dist/github.d.ts +187 -0
- package/dist/github.d.ts.map +1 -0
- package/dist/github.js +343 -0
- package/dist/github.js.map +1 -0
- package/dist/harness.d.ts +242 -0
- package/dist/harness.d.ts.map +1 -0
- package/dist/harness.js +157 -0
- package/dist/harness.js.map +1 -0
- package/dist/identity.d.ts +167 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +231 -0
- package/dist/identity.js.map +1 -0
- package/dist/index.d.ts +147 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +76 -0
- package/dist/index.js.map +1 -0
- package/dist/install-ci-branch-protection.d.ts +147 -0
- package/dist/install-ci-branch-protection.d.ts.map +1 -0
- package/dist/install-ci-branch-protection.js +166 -0
- package/dist/install-ci-branch-protection.js.map +1 -0
- package/dist/install-ci-capabilities/advance-lifecycle.d.ts +15 -0
- package/dist/install-ci-capabilities/advance-lifecycle.d.ts.map +1 -0
- package/dist/install-ci-capabilities/advance-lifecycle.js +28 -0
- package/dist/install-ci-capabilities/advance-lifecycle.js.map +1 -0
- package/dist/install-ci-capabilities/close-job.d.ts +13 -0
- package/dist/install-ci-capabilities/close-job.d.ts.map +1 -0
- package/dist/install-ci-capabilities/close-job.js +26 -0
- package/dist/install-ci-capabilities/close-job.js.map +1 -0
- package/dist/install-ci-capabilities/example-noop.d.ts +16 -0
- package/dist/install-ci-capabilities/example-noop.d.ts.map +1 -0
- package/dist/install-ci-capabilities/example-noop.js +23 -0
- package/dist/install-ci-capabilities/example-noop.js.map +1 -0
- package/dist/install-ci-capabilities/intake.d.ts +15 -0
- package/dist/install-ci-capabilities/intake.d.ts.map +1 -0
- package/dist/install-ci-capabilities/intake.js +28 -0
- package/dist/install-ci-capabilities/intake.js.map +1 -0
- package/dist/install-ci-capabilities/verify.d.ts +14 -0
- package/dist/install-ci-capabilities/verify.d.ts.map +1 -0
- package/dist/install-ci-capabilities/verify.js +27 -0
- package/dist/install-ci-capabilities/verify.js.map +1 -0
- package/dist/install-ci-core.d.ts +446 -0
- package/dist/install-ci-core.d.ts.map +1 -0
- package/dist/install-ci-core.js +760 -0
- package/dist/install-ci-core.js.map +1 -0
- package/dist/install-ci-github.d.ts +167 -0
- package/dist/install-ci-github.d.ts.map +1 -0
- package/dist/install-ci-github.js +315 -0
- package/dist/install-ci-github.js.map +1 -0
- package/dist/install-ci.d.ts +105 -0
- package/dist/install-ci.d.ts.map +1 -0
- package/dist/install-ci.js +363 -0
- package/dist/install-ci.js.map +1 -0
- package/dist/intake-event.d.ts +88 -0
- package/dist/intake-event.d.ts.map +1 -0
- package/dist/intake-event.js +66 -0
- package/dist/intake-event.js.map +1 -0
- package/dist/intake-marker.d.ts +95 -0
- package/dist/intake-marker.d.ts.map +1 -0
- package/dist/intake-marker.js +127 -0
- package/dist/intake-marker.js.map +1 -0
- package/dist/intake-triage.d.ts +48 -0
- package/dist/intake-triage.d.ts.map +1 -0
- package/dist/intake-triage.js +95 -0
- package/dist/intake-triage.js.map +1 -0
- package/dist/intake-trigger-template.d.ts +185 -0
- package/dist/intake-trigger-template.d.ts.map +1 -0
- package/dist/intake-trigger-template.js +449 -0
- package/dist/intake-trigger-template.js.map +1 -0
- package/dist/intake.d.ts +569 -0
- package/dist/intake.d.ts.map +1 -0
- package/dist/intake.js +1628 -0
- package/dist/intake.js.map +1 -0
- package/dist/integration-core.d.ts +539 -0
- package/dist/integration-core.d.ts.map +1 -0
- package/dist/integration-core.js +2195 -0
- package/dist/integration-core.js.map +1 -0
- package/dist/integrator.d.ts +343 -0
- package/dist/integrator.d.ts.map +1 -0
- package/dist/integrator.js +400 -0
- package/dist/integrator.js.map +1 -0
- package/dist/isolation.d.ts +219 -0
- package/dist/isolation.d.ts.map +1 -0
- package/dist/isolation.js +261 -0
- package/dist/isolation.js.map +1 -0
- package/dist/issue-provider.d.ts +349 -0
- package/dist/issue-provider.d.ts.map +1 -0
- package/dist/issue-provider.js +360 -0
- package/dist/issue-provider.js.map +1 -0
- package/dist/item-lock.d.ts +626 -0
- package/dist/item-lock.d.ts.map +1 -0
- package/dist/item-lock.js +1381 -0
- package/dist/item-lock.js.map +1 -0
- package/dist/item-path.d.ts +49 -0
- package/dist/item-path.d.ts.map +1 -0
- package/dist/item-path.js +66 -0
- package/dist/item-path.js.map +1 -0
- package/dist/ledger-lint.d.ts +129 -0
- package/dist/ledger-lint.d.ts.map +1 -0
- package/dist/ledger-lint.js +249 -0
- package/dist/ledger-lint.js.map +1 -0
- package/dist/ledger-read.d.ts +357 -0
- package/dist/ledger-read.d.ts.map +1 -0
- package/dist/ledger-read.js +442 -0
- package/dist/ledger-read.js.map +1 -0
- package/dist/ledger-write.d.ts +330 -0
- package/dist/ledger-write.d.ts.map +1 -0
- package/dist/ledger-write.js +411 -0
- package/dist/ledger-write.js.map +1 -0
- package/dist/lifecycle-gather.d.ts +30 -0
- package/dist/lifecycle-gather.d.ts.map +1 -0
- package/dist/lifecycle-gather.js +205 -0
- package/dist/lifecycle-gather.js.map +1 -0
- package/dist/lifecycle-pools.d.ts +180 -0
- package/dist/lifecycle-pools.d.ts.map +1 -0
- package/dist/lifecycle-pools.js +78 -0
- package/dist/lifecycle-pools.js.map +1 -0
- package/dist/merge-question-surfacer.d.ts +166 -0
- package/dist/merge-question-surfacer.d.ts.map +1 -0
- package/dist/merge-question-surfacer.js +297 -0
- package/dist/merge-question-surfacer.js.map +1 -0
- package/dist/mint-adr.d.ts +126 -0
- package/dist/mint-adr.d.ts.map +1 -0
- package/dist/mint-adr.js +257 -0
- package/dist/mint-adr.js.map +1 -0
- package/dist/mirror-pool-scan.d.ts +125 -0
- package/dist/mirror-pool-scan.d.ts.map +1 -0
- package/dist/mirror-pool-scan.js +104 -0
- package/dist/mirror-pool-scan.js.map +1 -0
- package/dist/needs-attention.d.ts +341 -0
- package/dist/needs-attention.d.ts.map +1 -0
- package/dist/needs-attention.js +900 -0
- package/dist/needs-attention.js.map +1 -0
- package/dist/orphan-sidecar.d.ts +79 -0
- package/dist/orphan-sidecar.d.ts.map +1 -0
- package/dist/orphan-sidecar.js +71 -0
- package/dist/orphan-sidecar.js.map +1 -0
- package/dist/output.d.ts +48 -0
- package/dist/output.d.ts.map +1 -0
- package/dist/output.js +66 -0
- package/dist/output.js.map +1 -0
- package/dist/pi-harness.d.ts +179 -0
- package/dist/pi-harness.d.ts.map +1 -0
- package/dist/pi-harness.js +342 -0
- package/dist/pi-harness.js.map +1 -0
- package/dist/placement.d.ts +99 -0
- package/dist/placement.d.ts.map +1 -0
- package/dist/placement.js +67 -0
- package/dist/placement.js.map +1 -0
- package/dist/prd-to-spec.d.ts +315 -0
- package/dist/prd-to-spec.d.ts.map +1 -0
- package/dist/prd-to-spec.js +684 -0
- package/dist/prd-to-spec.js.map +1 -0
- package/dist/prepare.d.ts +121 -0
- package/dist/prepare.d.ts.map +1 -0
- package/dist/prepare.js +140 -0
- package/dist/prepare.js.map +1 -0
- package/dist/prompt.d.ts +360 -0
- package/dist/prompt.d.ts.map +1 -0
- package/dist/prompt.js +499 -0
- package/dist/prompt.js.map +1 -0
- package/dist/protocol/ADR-FORMAT.md +47 -0
- package/dist/protocol/CLAIM-PROTOCOL.md +217 -0
- package/dist/protocol/REVIEW-PROTOCOL.md +119 -0
- package/dist/protocol/SURFACE-PROTOCOL.md +121 -0
- package/dist/protocol/TASKING-PROTOCOL.md +122 -0
- package/dist/protocol/WORK-CONTRACT.md +276 -0
- package/dist/protocol/spec-template.md +71 -0
- package/dist/protocol/task-template.md +65 -0
- package/dist/readiness.d.ts +66 -0
- package/dist/readiness.d.ts.map +1 -0
- package/dist/readiness.js +36 -0
- package/dist/readiness.js.map +1 -0
- package/dist/reap-branches.d.ts +102 -0
- package/dist/reap-branches.d.ts.map +1 -0
- package/dist/reap-branches.js +149 -0
- package/dist/reap-branches.js.map +1 -0
- package/dist/recover-isolated.d.ts +72 -0
- package/dist/recover-isolated.d.ts.map +1 -0
- package/dist/recover-isolated.js +188 -0
- package/dist/recover-isolated.js.map +1 -0
- package/dist/registry.d.ts +172 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +296 -0
- package/dist/registry.js.map +1 -0
- package/dist/repo-config.d.ts +201 -0
- package/dist/repo-config.d.ts.map +1 -0
- package/dist/repo-config.js +414 -0
- package/dist/repo-config.js.map +1 -0
- package/dist/repo-key.d.ts +20 -0
- package/dist/repo-key.d.ts.map +1 -0
- package/dist/repo-key.js +68 -0
- package/dist/repo-key.js.map +1 -0
- package/dist/repo-mirror.d.ts +177 -0
- package/dist/repo-mirror.d.ts.map +1 -0
- package/dist/repo-mirror.js +271 -0
- package/dist/repo-mirror.js.map +1 -0
- package/dist/retry-backoff.d.ts +90 -0
- package/dist/retry-backoff.d.ts.map +1 -0
- package/dist/retry-backoff.js +98 -0
- package/dist/retry-backoff.js.map +1 -0
- package/dist/review-gate.d.ts +173 -0
- package/dist/review-gate.d.ts.map +1 -0
- package/dist/review-gate.js +261 -0
- package/dist/review-gate.js.map +1 -0
- package/dist/review-verdict.d.ts +149 -0
- package/dist/review-verdict.d.ts.map +1 -0
- package/dist/review-verdict.js +332 -0
- package/dist/review-verdict.js.map +1 -0
- package/dist/run.d.ts +221 -0
- package/dist/run.d.ts.map +1 -0
- package/dist/run.js +963 -0
- package/dist/run.js.map +1 -0
- package/dist/scan.d.ts +308 -0
- package/dist/scan.d.ts.map +1 -0
- package/dist/scan.js +374 -0
- package/dist/scan.js.map +1 -0
- package/dist/select-order.d.ts +75 -0
- package/dist/select-order.d.ts.map +1 -0
- package/dist/select-order.js +108 -0
- package/dist/select-order.js.map +1 -0
- package/dist/select-priority.d.ts +188 -0
- package/dist/select-priority.d.ts.map +1 -0
- package/dist/select-priority.js +80 -0
- package/dist/select-priority.js.map +1 -0
- package/dist/select.d.ts +25 -0
- package/dist/select.d.ts.map +1 -0
- package/dist/select.js +43 -0
- package/dist/select.js.map +1 -0
- package/dist/session-path.d.ts +36 -0
- package/dist/session-path.d.ts.map +1 -0
- package/dist/session-path.js +129 -0
- package/dist/session-path.js.map +1 -0
- package/dist/sidecar-apply.d.ts +83 -0
- package/dist/sidecar-apply.d.ts.map +1 -0
- package/dist/sidecar-apply.js +111 -0
- package/dist/sidecar-apply.js.map +1 -0
- package/dist/sidecar.d.ts +245 -0
- package/dist/sidecar.d.ts.map +1 -0
- package/dist/sidecar.js +481 -0
- package/dist/sidecar.js.map +1 -0
- package/dist/slug-namespace.d.ts +204 -0
- package/dist/slug-namespace.d.ts.map +1 -0
- package/dist/slug-namespace.js +229 -0
- package/dist/slug-namespace.js.map +1 -0
- package/dist/spec-complete.d.ts +44 -0
- package/dist/spec-complete.d.ts.map +1 -0
- package/dist/spec-complete.js +69 -0
- package/dist/spec-complete.js.map +1 -0
- package/dist/start.d.ts +97 -0
- package/dist/start.d.ts.map +1 -0
- package/dist/start.js +633 -0
- package/dist/start.js.map +1 -0
- package/dist/status.d.ts +199 -0
- package/dist/status.d.ts.map +1 -0
- package/dist/status.js +228 -0
- package/dist/status.js.map +1 -0
- package/dist/surface-gate.d.ts +162 -0
- package/dist/surface-gate.d.ts.map +1 -0
- package/dist/surface-gate.js +206 -0
- package/dist/surface-gate.js.map +1 -0
- package/dist/surface-persist.d.ts +86 -0
- package/dist/surface-persist.d.ts.map +1 -0
- package/dist/surface-persist.js +129 -0
- package/dist/surface-persist.js.map +1 -0
- package/dist/tasker-review-loop.d.ts +249 -0
- package/dist/tasker-review-loop.d.ts.map +1 -0
- package/dist/tasker-review-loop.js +369 -0
- package/dist/tasker-review-loop.js.map +1 -0
- package/dist/tasking-eligibility.d.ts +74 -0
- package/dist/tasking-eligibility.d.ts.map +1 -0
- package/dist/tasking-eligibility.js +52 -0
- package/dist/tasking-eligibility.js.map +1 -0
- package/dist/tasking-lock.d.ts +111 -0
- package/dist/tasking-lock.d.ts.map +1 -0
- package/dist/tasking-lock.js +256 -0
- package/dist/tasking-lock.js.map +1 -0
- package/dist/tasking.d.ts +275 -0
- package/dist/tasking.d.ts.map +1 -0
- package/dist/tasking.js +952 -0
- package/dist/tasking.js.map +1 -0
- package/dist/triage-gate.d.ts +127 -0
- package/dist/triage-gate.d.ts.map +1 -0
- package/dist/triage-gate.js +139 -0
- package/dist/triage-gate.js.map +1 -0
- package/dist/triage-persist.d.ts +163 -0
- package/dist/triage-persist.d.ts.map +1 -0
- package/dist/triage-persist.js +387 -0
- package/dist/triage-persist.js.map +1 -0
- package/dist/verdict-json.d.ts +32 -0
- package/dist/verdict-json.d.ts.map +1 -0
- package/dist/verdict-json.js +74 -0
- package/dist/verdict-json.js.map +1 -0
- package/dist/verify-workflow-template.d.ts +60 -0
- package/dist/verify-workflow-template.d.ts.map +1 -0
- package/dist/verify-workflow-template.js +126 -0
- package/dist/verify-workflow-template.js.map +1 -0
- package/dist/verify.d.ts +60 -0
- package/dist/verify.d.ts.map +1 -0
- package/dist/verify.js +62 -0
- package/dist/verify.js.map +1 -0
- package/dist/watch-session.d.ts +112 -0
- package/dist/watch-session.d.ts.map +1 -0
- package/dist/watch-session.js +347 -0
- package/dist/watch-session.js.map +1 -0
- package/dist/work-layout.d.ts +198 -0
- package/dist/work-layout.d.ts.map +1 -0
- package/dist/work-layout.js +217 -0
- package/dist/work-layout.js.map +1 -0
- package/dist/work-on.d.ts +154 -0
- package/dist/work-on.d.ts.map +1 -0
- package/dist/work-on.js +387 -0
- package/dist/work-on.js.map +1 -0
- package/dist/workspace.d.ts +224 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +325 -0
- package/dist/workspace.js.map +1 -0
- package/package.json +46 -2
- package/src/advance-ci-template.ts +203 -0
- package/src/advance-classify.ts +197 -0
- package/src/advance-drivers.ts +414 -0
- package/src/advance-isolated.ts +432 -0
- package/src/advance-lifecycle-template.ts +791 -0
- package/src/advance-loop-driver.ts +745 -0
- package/src/advance-treeless-publish.ts +177 -0
- package/src/advance.ts +1564 -0
- package/src/advancing-lock.ts +988 -0
- package/src/agent-launch.ts +137 -0
- package/src/agent-stop.ts +361 -0
- package/src/apply-decide.ts +242 -0
- package/src/apply-merge-action.ts +502 -0
- package/src/apply-persist.ts +518 -0
- package/src/arbiter.ts +372 -0
- package/src/brand.ts +111 -0
- package/src/buildable-body.ts +196 -0
- package/src/categorise.ts +158 -0
- package/src/claim-cas.ts +513 -0
- package/src/cli-spinner.ts +225 -0
- package/src/cli.ts +4369 -0
- package/src/close-job-template.ts +236 -0
- package/src/close-job.ts +319 -0
- package/src/complete.ts +1379 -0
- package/src/concurrency.ts +151 -0
- package/src/config-override.ts +116 -0
- package/src/config.ts +883 -0
- package/src/continue-branch.ts +542 -0
- package/src/cwd-section.ts +392 -0
- package/src/decision-engine.ts +272 -0
- package/src/detect.ts +124 -0
- package/src/do-autopick.ts +223 -0
- package/src/do-config.ts +589 -0
- package/src/do-remote-auto.ts +197 -0
- package/src/do.ts +2623 -0
- package/src/drop-source.ts +194 -0
- package/src/eligibility.ts +79 -0
- package/src/env-config.ts +305 -0
- package/src/failure-cause.ts +142 -0
- package/src/format.ts +313 -0
- package/src/frontmatter.ts +485 -0
- package/src/gate-readiness.ts +147 -0
- package/src/gc.ts +510 -0
- package/src/gh-failure.ts +53 -0
- package/src/git.ts +186 -0
- package/src/github.ts +468 -0
- package/src/harness.ts +355 -0
- package/src/identity.ts +322 -0
- package/src/index.ts +785 -0
- package/src/install-ci-branch-protection.ts +255 -0
- package/src/install-ci-capabilities/advance-lifecycle.ts +34 -0
- package/src/install-ci-capabilities/close-job.ts +32 -0
- package/src/install-ci-capabilities/example-noop.ts +24 -0
- package/src/install-ci-capabilities/intake.ts +34 -0
- package/src/install-ci-capabilities/verify.ts +33 -0
- package/src/install-ci-core.ts +1088 -0
- package/src/install-ci-github.ts +376 -0
- package/src/install-ci.ts +552 -0
- package/src/intake-event.ts +102 -0
- package/src/intake-marker.ts +195 -0
- package/src/intake-triage.ts +138 -0
- package/src/intake-trigger-template.ts +591 -0
- package/src/intake.ts +2445 -0
- package/src/integration-core.ts +3065 -0
- package/src/integrator.ts +771 -0
- package/src/isolation.ts +484 -0
- package/src/issue-provider.ts +733 -0
- package/src/item-lock.ts +1858 -0
- package/src/item-path.ts +75 -0
- package/src/ledger-lint.ts +332 -0
- package/src/ledger-read.ts +924 -0
- package/src/ledger-write.ts +865 -0
- package/src/lifecycle-gather.ts +298 -0
- package/src/lifecycle-pools.ts +250 -0
- package/src/merge-question-surfacer.ts +496 -0
- package/src/mint-adr.ts +362 -0
- package/src/mirror-pool-scan.ts +240 -0
- package/src/needs-attention.ts +1506 -0
- package/src/orphan-sidecar.ts +150 -0
- package/src/output.ts +89 -0
- package/src/pi-harness.ts +403 -0
- package/src/placement.ts +131 -0
- package/src/prd-to-spec.ts +1023 -0
- package/src/prepare.ts +230 -0
- package/src/prompt.ts +760 -0
- package/src/readiness.ts +98 -0
- package/src/reap-branches.ts +278 -0
- package/src/recover-isolated.ts +276 -0
- package/src/registry.ts +475 -0
- package/src/repo-config.ts +550 -0
- package/src/repo-key.ts +74 -0
- package/src/repo-mirror.ts +367 -0
- package/src/retry-backoff.ts +130 -0
- package/src/review-gate.ts +389 -0
- package/src/review-verdict.ts +422 -0
- package/src/run.ts +1430 -0
- package/src/scan.ts +611 -0
- package/src/select-order.ts +143 -0
- package/src/select-priority.ts +266 -0
- package/src/select.ts +62 -0
- package/src/session-path.ts +153 -0
- package/src/sidecar-apply.ts +216 -0
- package/src/sidecar.ts +700 -0
- package/src/slug-namespace.ts +367 -0
- package/src/spec-complete.ts +118 -0
- package/src/start.ts +974 -0
- package/src/status.ts +441 -0
- package/src/surface-gate.ts +337 -0
- package/src/surface-persist.ts +241 -0
- package/src/tasker-review-loop.ts +671 -0
- package/src/tasking-eligibility.ts +114 -0
- package/src/tasking-lock.ts +416 -0
- package/src/tasking.ts +1438 -0
- package/src/triage-gate.ts +248 -0
- package/src/triage-persist.ts +570 -0
- package/src/verdict-json.ts +73 -0
- package/src/verify-workflow-template.ts +159 -0
- package/src/verify.ts +123 -0
- package/src/watch-session.ts +397 -0
- package/src/work-layout.ts +262 -0
- package/src/work-on.ts +660 -0
- package/src/workspace.ts +502 -0
package/dist/format.js
ADDED
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
import { formatDuplicateWarnings } from './ledger-lint.js';
|
|
2
|
+
import { categoriseItems, summariseGroups, CATEGORY_ORDER, CATEGORY_LABELS, } from './categorise.js';
|
|
3
|
+
/**
|
|
4
|
+
* Human label for the two autonomy axes. `humanOnly` is reported first when both
|
|
5
|
+
* are set, so the REASON an agent is gated is always visible and distinct from
|
|
6
|
+
* `needsAnswers`.
|
|
7
|
+
*/
|
|
8
|
+
export function gateLabel(humanOnly, needsAnswers) {
|
|
9
|
+
if (humanOnly === true) {
|
|
10
|
+
return 'human-only';
|
|
11
|
+
}
|
|
12
|
+
if (needsAnswers === true) {
|
|
13
|
+
return 'needs-answers';
|
|
14
|
+
}
|
|
15
|
+
return 'undeclared';
|
|
16
|
+
}
|
|
17
|
+
/** A short description of the `blockedBy` readiness for one item. */
|
|
18
|
+
function readinessLabel(item) {
|
|
19
|
+
if (item.blockedBy.length === 0) {
|
|
20
|
+
return 'deps: satisfied (none)';
|
|
21
|
+
}
|
|
22
|
+
if (item.eligibility.blockedBy.satisfied) {
|
|
23
|
+
return `deps: satisfied (${item.blockedBy.join(', ')})`;
|
|
24
|
+
}
|
|
25
|
+
return `deps: waiting on ${item.eligibility.blockedBy.missing.join(', ')}`;
|
|
26
|
+
}
|
|
27
|
+
/** Ready items get a filled marker, blocked ones an open one. */
|
|
28
|
+
function readinessMarker(entry) {
|
|
29
|
+
return entry.ready ? '*' : 'o';
|
|
30
|
+
}
|
|
31
|
+
function formatItem(entry) {
|
|
32
|
+
return ` ${readinessMarker(entry)} ${entry.item.slug} ${readinessLabel(entry.item)}`;
|
|
33
|
+
}
|
|
34
|
+
/** Render one repo's three labelled groups; empty groups show `(none)`. */
|
|
35
|
+
function formatRepo(path, groups) {
|
|
36
|
+
const lines = [];
|
|
37
|
+
lines.push(` ${path}`);
|
|
38
|
+
lines.push('');
|
|
39
|
+
for (const category of CATEGORY_ORDER) {
|
|
40
|
+
lines.push(` ${CATEGORY_LABELS[category]}:`);
|
|
41
|
+
const entries = groups[category];
|
|
42
|
+
if (entries.length === 0) {
|
|
43
|
+
lines.push(' (none)');
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
for (const entry of entries) {
|
|
47
|
+
lines.push(formatItem(entry));
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
lines.push('');
|
|
52
|
+
return lines;
|
|
53
|
+
}
|
|
54
|
+
function pluralRepos(n) {
|
|
55
|
+
return n === 1 ? 'repo' : 'repos';
|
|
56
|
+
}
|
|
57
|
+
function pluralItems(n) {
|
|
58
|
+
return n === 1 ? 'item' : 'items';
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* The divergence-vs-arbiter line for the cwd-local section, using the
|
|
62
|
+
* `main-divergence-guard` framing: local `main` AHEAD of `<arbiter>/main` means
|
|
63
|
+
* UNPUSHED commits (the local working tree is more authoritative than the
|
|
64
|
+
* arbiter for those); BEHIND means the arbiter has commits the local tree lacks.
|
|
65
|
+
* When the fetch failed it says so (the divergence reflects last-known).
|
|
66
|
+
*/
|
|
67
|
+
function cwdDivergenceLine(arbiter) {
|
|
68
|
+
const freshness = arbiter.fetched
|
|
69
|
+
? 'fetched just now'
|
|
70
|
+
: 'FETCH FAILED — last-known (offline)';
|
|
71
|
+
const { ahead, behind, remote } = arbiter;
|
|
72
|
+
if (ahead === 0 && behind === 0) {
|
|
73
|
+
return ` in sync with ${remote}/main (${freshness}).`;
|
|
74
|
+
}
|
|
75
|
+
const parts = [];
|
|
76
|
+
if (ahead > 0) {
|
|
77
|
+
parts.push(`${ahead} commit${ahead === 1 ? '' : 's'} ahead (unpushed)`);
|
|
78
|
+
}
|
|
79
|
+
if (behind > 0) {
|
|
80
|
+
parts.push(`${behind} commit${behind === 1 ? '' : 's'} behind`);
|
|
81
|
+
}
|
|
82
|
+
return ` local main is ${parts.join(', ')} vs ${remote}/main (${freshness}).`;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Render the CWD-LOCAL section of `scan`/`status` (the `scan-status-read-cwd-repo`
|
|
86
|
+
* task): a DISTINCT, separately-counted block for the CURRENT repo, read from
|
|
87
|
+
* the LOCAL WORKING TREE (NOT the registry's bare mirror ref). Returns `[]` when
|
|
88
|
+
* the cwd does NOT participate (no local section). The section LABELS its source
|
|
89
|
+
* + freshness, shows the divergence-vs-arbiter (`main-divergence-guard` framing),
|
|
90
|
+
* and — when the cwd participates but is NOT registered — teaches
|
|
91
|
+
* self-registration instead of the dead-end "No participating repos found".
|
|
92
|
+
*
|
|
93
|
+
* The counts here are the cwd's OWN (never merged into the registry total — the
|
|
94
|
+
* consistency rule): the two reads have different freshness + storage models.
|
|
95
|
+
*/
|
|
96
|
+
/**
|
|
97
|
+
* Render ONE held per-item lock entry (action × state + reason/questions) as
|
|
98
|
+
* indented lines, the SHARED renderer for the in-flight lock surface on BOTH the
|
|
99
|
+
* registry view (`formatStatus`) and the cwd section (`formatCwdSection`), so the
|
|
100
|
+
* two substrates present a held/stuck item identically (NOT a forked renderer). An
|
|
101
|
+
* `active` hold reads as `in-progress`; a `stuck` hold as `needs-attention` and
|
|
102
|
+
* carries its (possibly multi-line) reason + any surfaced questions.
|
|
103
|
+
*/
|
|
104
|
+
export function formatLockEntryLines(entry, indent) {
|
|
105
|
+
const lines = [];
|
|
106
|
+
const view = entry.state === 'stuck' ? 'needs-attention' : 'in-progress';
|
|
107
|
+
lines.push(`${indent}${entry.entry} (${entry.action}/${entry.state} = ${view})`);
|
|
108
|
+
if (entry.state === 'stuck') {
|
|
109
|
+
const reason = entry.reason && entry.reason !== ''
|
|
110
|
+
? entry.reason
|
|
111
|
+
: '(no reason recorded)';
|
|
112
|
+
const reasonLines = reason.split('\n');
|
|
113
|
+
lines.push(`${indent} reason: ${reasonLines[0]}`);
|
|
114
|
+
for (const extra of reasonLines.slice(1)) {
|
|
115
|
+
lines.push(`${indent} ${extra}`);
|
|
116
|
+
}
|
|
117
|
+
if (entry.questions && entry.questions.length > 0) {
|
|
118
|
+
lines.push(`${indent} questions:`);
|
|
119
|
+
for (const q of entry.questions) {
|
|
120
|
+
lines.push(`${indent} - ${q}`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return lines;
|
|
125
|
+
}
|
|
126
|
+
export function formatCwdSection(section) {
|
|
127
|
+
if (!section.participating || section.repo === undefined) {
|
|
128
|
+
return [];
|
|
129
|
+
}
|
|
130
|
+
const lines = [];
|
|
131
|
+
const dedup = section.alsoRegistered === true ? ' (also registered)' : '';
|
|
132
|
+
lines.push('This repo (local working tree):');
|
|
133
|
+
lines.push(` ${section.path}${dedup}`);
|
|
134
|
+
lines.push(' source: local working tree (may be ahead of / behind the arbiter) — ' +
|
|
135
|
+
'distinct from the registry view below (arbiter main, fetched).');
|
|
136
|
+
// Fetch-first divergence-vs-arbiter (or a no-arbiter note).
|
|
137
|
+
if (section.arbiter !== undefined) {
|
|
138
|
+
lines.push(cwdDivergenceLine(section.arbiter));
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
lines.push(' no arbiter remote configured — divergence vs arbiter unknown.');
|
|
142
|
+
}
|
|
143
|
+
const total = section.totalItems ?? 0;
|
|
144
|
+
// Self-registration hint when the cwd participates but is NOT registered.
|
|
145
|
+
if (section.alsoRegistered !== true) {
|
|
146
|
+
lines.push('');
|
|
147
|
+
lines.push(` This repo participates (${total} backlog ${pluralItems(total)}) but is ` +
|
|
148
|
+
'NOT registered — `run`/`scan` across machines won’t see it until ' +
|
|
149
|
+
'`dorfl remote add . --local` (or `remote add <its-url>`).');
|
|
150
|
+
}
|
|
151
|
+
// The cwd's grouped backlog — the SAME who-can-take-it grouping the registry
|
|
152
|
+
// view uses, but read from the working tree and counted SEPARATELY.
|
|
153
|
+
const groups = categoriseItems(section.repo.items);
|
|
154
|
+
lines.push('');
|
|
155
|
+
for (const category of CATEGORY_ORDER) {
|
|
156
|
+
lines.push(` ${CATEGORY_LABELS[category]}:`);
|
|
157
|
+
const entries = groups[category];
|
|
158
|
+
if (entries.length === 0) {
|
|
159
|
+
lines.push(' (none)');
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
for (const entry of entries) {
|
|
163
|
+
lines.push(formatItem(entry));
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
// The PER-ITEM LOCK in-flight SURFACE for the cwd (prd
|
|
168
|
+
// `ledger-status-per-item-lock-refs` US #8): held (`active` = in-progress) and
|
|
169
|
+
// `stuck` (= needs-attention) lock entries + their reasons. This is what keeps a
|
|
170
|
+
// held/stuck cwd item from vanishing: the held-slug subtraction removes it from
|
|
171
|
+
// the buckets above, so without THIS block it would be invisible (the regression
|
|
172
|
+
// this fixes). Symmetric with the registry view's `In-flight locks` block (same
|
|
173
|
+
// `refs/dorfl/lock/*` source, same primitive); rendered HERE inside the cwd
|
|
174
|
+
// section so it stays the cwd's OWN, separately-counted surface. Empty ⇒ no
|
|
175
|
+
// block (a calm repo adds no lines).
|
|
176
|
+
const lockHeld = section.repo.lockHeld ?? [];
|
|
177
|
+
if (lockHeld.length > 0) {
|
|
178
|
+
lines.push('');
|
|
179
|
+
lines.push(' In progress / stuck (lock held — refs/dorfl/lock/*):');
|
|
180
|
+
for (const entry of lockHeld) {
|
|
181
|
+
lines.push(...formatLockEntryLines(entry, ' '));
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
lines.push('');
|
|
185
|
+
lines.push(` Local total: ${total} ${pluralItems(total)} ` +
|
|
186
|
+
`(${section.totalEligible ?? 0} eligible) — this repo only, NOT merged with ` +
|
|
187
|
+
'the registry total below.');
|
|
188
|
+
return lines;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Render the cross-repo queue as a human decision dashboard: under each repo,
|
|
192
|
+
* every backlog item is grouped by who-can-take-it (Agent-claimable now /
|
|
193
|
+
* Human-only / Blocked), with empty groups shown as `(none)`. Within a group,
|
|
194
|
+
* ready (deps-satisfied) items sort above blocked ones.
|
|
195
|
+
*
|
|
196
|
+
* The set of groups shown is INDEPENDENT of `autoBuild`; only the eligibility
|
|
197
|
+
* *verdict* line reflects the policy (`report.totalEligible` counts an
|
|
198
|
+
* agent-claimable item only when `autoBuild` is on).
|
|
199
|
+
*/
|
|
200
|
+
export function formatReport(report, cwd) {
|
|
201
|
+
const lines = [];
|
|
202
|
+
// The cwd-local section (the `scan-status-read-cwd-repo` task): a DISTINCT,
|
|
203
|
+
// separately-counted block for the CURRENT repo, ABOVE the registry view.
|
|
204
|
+
const cwdLines = cwd !== undefined ? formatCwdSection(cwd) : [];
|
|
205
|
+
if (cwdLines.length > 0) {
|
|
206
|
+
lines.push(...cwdLines);
|
|
207
|
+
lines.push('');
|
|
208
|
+
}
|
|
209
|
+
// De-dup: when the cwd is ALSO registered, drop its registry row (shown once,
|
|
210
|
+
// above, marked "(also registered)") so the same repo never appears twice.
|
|
211
|
+
const registryRepos = cwd?.alsoRegistered === true && cwd.registeredMirrorPath !== undefined
|
|
212
|
+
? report.repos.filter((r) => r.path !== cwd.registeredMirrorPath)
|
|
213
|
+
: report.repos;
|
|
214
|
+
if (registryRepos.length === 0) {
|
|
215
|
+
// If the cwd participates we already rendered its local section above (no
|
|
216
|
+
// dead-end). Otherwise keep the existing empty-state.
|
|
217
|
+
if (cwdLines.length === 0) {
|
|
218
|
+
lines.push('No participating repos found.');
|
|
219
|
+
lines.push('(A repo participates iff its work/ tree has lifecycle content in any ' +
|
|
220
|
+
'pool: tasks/ready, tasks/backlog, prds/proposed, prds/ready, ' +
|
|
221
|
+
'notes/observations, or questions.)');
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
lines.push('Registered repos: (none) — nothing registered in the registry yet.');
|
|
225
|
+
}
|
|
226
|
+
return lines.join('\n').replace(/\n+$/, '');
|
|
227
|
+
}
|
|
228
|
+
lines.push('Registered repos (registry — arbiter main, fetched):');
|
|
229
|
+
lines.push('');
|
|
230
|
+
const allGroups = [];
|
|
231
|
+
for (const repo of registryRepos) {
|
|
232
|
+
const groups = categoriseItems(repo.items);
|
|
233
|
+
allGroups.push(groups);
|
|
234
|
+
lines.push(...formatRepo(repo.path, groups));
|
|
235
|
+
// The one-slug-one-folder LINT (prd `ledger-integrity` story 3): WARN LOUDLY
|
|
236
|
+
// when any slug in this repo's ledger resides in >1 status folder (a corrupt
|
|
237
|
+
// ledger — never a silent pass). Clean ledgers add no lines.
|
|
238
|
+
const warnings = formatDuplicateWarnings(repo.ledgerDuplicates ?? []);
|
|
239
|
+
if (warnings.length > 0) {
|
|
240
|
+
lines.push(...warnings.map((w) => ` ${w}`));
|
|
241
|
+
lines.push('');
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
const s = summariseGroups(allGroups);
|
|
245
|
+
const repoCount = registryRepos.length;
|
|
246
|
+
const registryItems = registryRepos.reduce((n, r) => n + r.items.length, 0);
|
|
247
|
+
const registryEligible = registryRepos.reduce((n, r) => n + r.items.filter((i) => i.eligibility.eligible).length, 0);
|
|
248
|
+
lines.push(`Registry summary: ${registryItems} item(s) across ${repoCount} ${pluralRepos(repoCount)} — ` +
|
|
249
|
+
`${s.agentClaimable} agent-claimable, ${s.humanOnly} human-only, ` +
|
|
250
|
+
`${s.needsAnswers} needs-answers, ${s.blocked} blocked ` +
|
|
251
|
+
`(${s.ready} ready).`);
|
|
252
|
+
lines.push(`Runner verdict: ${registryEligible}/${registryItems} item(s) eligible now ` +
|
|
253
|
+
`(under the current --auto-build policy).`);
|
|
254
|
+
return lines.join('\n');
|
|
255
|
+
}
|
|
256
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal, dependency-free parser for the small subset of YAML frontmatter the
|
|
3
|
+
* `work/` contract uses: top-level scalar keys and string lists (inline `[a, b]`
|
|
4
|
+
* or block `- a` form). It deliberately does NOT implement general YAML — only
|
|
5
|
+
* what `work/` task frontmatter needs (slug, humanOnly, blockedBy, ...).
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* **Origin-trust PROVENANCE** (task `untrusted-origin-forces-build-propose`).
|
|
9
|
+
* How a prd/task was BORN and the AUTHOR-TRUST verdict at birth, stamped so the
|
|
10
|
+
* signal SURVIVES the prd/task merge boundary (a landed-on-`main` artifact would
|
|
11
|
+
* otherwise erase how it was created — the laundering gap).
|
|
12
|
+
*
|
|
13
|
+
* - `origin` — `human` (the default / unset: a human authored it locally; a local
|
|
14
|
+
* intake with no `--origin-trust` is ALSO this) | `issue` (the CI intake
|
|
15
|
+
* front-door stamped it from a public issue).
|
|
16
|
+
* - `originTrust` — `trusted` | `untrusted`, the `author_association` verdict at
|
|
17
|
+
* birth (only meaningful when `origin: issue`). UNSET ⇒ `trusted` (the normal
|
|
18
|
+
* human path; ZERO behaviour change). `untrusted` forces the task's BUILD
|
|
19
|
+
* transition to `propose` so a human reviews the becomes-code change (an
|
|
20
|
+
* explicit `--merge` still overrides — the operator is present).
|
|
21
|
+
*
|
|
22
|
+
* `intake.ts` does NOT resolve the trust verdict itself (the `intake.ts` ~L296
|
|
23
|
+
* boundary: trust is CI's POLICY); the CI shell passes it IN via `--origin-trust`.
|
|
24
|
+
*/
|
|
25
|
+
export type Origin = 'human' | 'issue';
|
|
26
|
+
export type OriginTrust = 'trusted' | 'untrusted';
|
|
27
|
+
export interface Frontmatter {
|
|
28
|
+
/**
|
|
29
|
+
* How the artifact was BORN (`human`|`issue`). `undefined` when omitted
|
|
30
|
+
* (⇒ `human`/trusted: the normal local-author path, no behaviour change).
|
|
31
|
+
* Stamped `issue` by the CI intake front-door so the becomes-code checkpoint is
|
|
32
|
+
* not laundered at the merge boundary.
|
|
33
|
+
*/
|
|
34
|
+
origin: Origin | undefined;
|
|
35
|
+
/**
|
|
36
|
+
* The author-trust verdict at birth (`trusted`|`untrusted`); only meaningful
|
|
37
|
+
* when `origin: issue`. `undefined` when omitted (⇒ `trusted`: the normal path,
|
|
38
|
+
* zero behaviour change). An `untrusted` task forces its BUILD transition to
|
|
39
|
+
* `propose` (overridable by an explicit `--merge`).
|
|
40
|
+
*/
|
|
41
|
+
originTrust: OriginTrust | undefined;
|
|
42
|
+
/** Content-derived slug id (frontmatter `slug:`). */
|
|
43
|
+
slug: string | undefined;
|
|
44
|
+
/**
|
|
45
|
+
* Source SPEC slug (frontmatter `spec:`); the spec lives at
|
|
46
|
+
* `work/specs/ready/<spec>.md`. The `spec` vocabulary name for the parent-spec
|
|
47
|
+
* pointer (prd `prd-to-spec-vocabulary-cutover-and-migration-command`). This is
|
|
48
|
+
* the EXPAND-step ADDITION beside {@link prd}: `parseFrontmatter` populates BOTH
|
|
49
|
+
* from EITHER the `spec:` OR the `prd:` key with the SAME value, so a caller
|
|
50
|
+
* reading either sees the parent-spec slug. The migrate batches move `fm.prd`
|
|
51
|
+
* reads onto `fm.spec` one at a time; the contract task removes `prd`.
|
|
52
|
+
*/
|
|
53
|
+
spec: string | undefined;
|
|
54
|
+
/**
|
|
55
|
+
* Source spec slug (frontmatter `prd:`); the spec lives at
|
|
56
|
+
* `work/specs/ready/<prd>.md`. The LEGACY vocabulary name for the parent-spec
|
|
57
|
+
* pointer, kept BESIDE {@link spec} through the expand→migrate→contract cutover
|
|
58
|
+
* (prd `prd-to-spec-vocabulary-cutover-and-migration-command`) so every existing
|
|
59
|
+
* `fm.prd` reader keeps working; populated from EITHER the `spec:` or `prd:` key.
|
|
60
|
+
*/
|
|
61
|
+
prd: string | undefined;
|
|
62
|
+
/**
|
|
63
|
+
* The GitHub issue number an `intake`-emitted artifact was transformed from
|
|
64
|
+
* (frontmatter `issue:`). Parsed so the `issue: N` intake writes is
|
|
65
|
+
* MACHINE-READABLE — the close JOB (`runner-in-ci`'s) reaches it to resolve the
|
|
66
|
+
* issue from folder + field state. Carried on EITHER:
|
|
67
|
+
*
|
|
68
|
+
* - a **prd** (`intake`'s prd outcome) — a fanned task reaches it via
|
|
69
|
+
* `task.prd: → work/prds/ready/<prd>.md → prd issue:` (the number lives
|
|
70
|
+
* ONLY on the prd, never duplicated across the N fanned tasks); OR
|
|
71
|
+
* - a **lone task** (`intake`'s TASK outcome, no `prd:`) — the provider-agnostic
|
|
72
|
+
* closure link for a task that closes its own issue directly (replaces the old
|
|
73
|
+
* GitHub-only `Fixes #N` body line, which is now a deferred optimisation).
|
|
74
|
+
*
|
|
75
|
+
* INVARIANT — one closure path per task: a task uses `issue:` XOR `prd:`, never
|
|
76
|
+
* both. Either it closes its own issue directly (`issue:`) or it contributes to a
|
|
77
|
+
* prd that closes the issue (`prd:` → prd `issue:`). This is NOT enforced by a
|
|
78
|
+
* throwing validator (there is no frontmatter-validation layer): intake never
|
|
79
|
+
* emits both — its task / prd dispatch branches are mutually exclusive — so only
|
|
80
|
+
* a human hand-edit could produce both, and the precedence rule (`prd:` wins,
|
|
81
|
+
* `issue:` ignored) is the future close-job's concern (see {@link
|
|
82
|
+
* resolveClosingIssue}), degrading a typo to "use the prd's number" rather than
|
|
83
|
+
* crashing. `undefined` when omitted (every non-intake prd and most tasks).
|
|
84
|
+
*/
|
|
85
|
+
issue: number | undefined;
|
|
86
|
+
/**
|
|
87
|
+
* Autonomy gate axis 1 (DECIDED). `true` when the item declares itself
|
|
88
|
+
* human-only (a human must drive it regardless of how complete the spec is);
|
|
89
|
+
* `undefined` when omitted (undeclared — most items). Present on both tasks
|
|
90
|
+
* and prds.
|
|
91
|
+
*/
|
|
92
|
+
humanOnly: boolean | undefined;
|
|
93
|
+
/**
|
|
94
|
+
* Autonomy gate axis 2 (DISCOVERED). `true` when the item has unresolved
|
|
95
|
+
* questions blocking autonomous progress (the open questions live in the body);
|
|
96
|
+
* `undefined` when omitted. Orthogonal to `humanOnly`; present on both tasks
|
|
97
|
+
* and prds.
|
|
98
|
+
*/
|
|
99
|
+
needsAnswers: boolean | undefined;
|
|
100
|
+
/**
|
|
101
|
+
* The triage SETTLED marker (US #30). A non-empty `triaged:` value (e.g.
|
|
102
|
+
* `keep` / `duplicate`) means a human (or the conservative auto-disposition)
|
|
103
|
+
* has SETTLED this observation, so it DROPS OUT of the triage candidate pool
|
|
104
|
+
* and is never re-asked. `undefined` when omitted (an UNTRIAGED observation,
|
|
105
|
+
* still in the pool). Carried so the lifecycle-pool enumeration
|
|
106
|
+
* (`advance-autopick-lifecycle-pools`) can exclude settled observations from
|
|
107
|
+
* the triage selection.
|
|
108
|
+
*/
|
|
109
|
+
triaged: string | undefined;
|
|
110
|
+
/** Slugs this item is blocked by; `[]` when omitted or empty. */
|
|
111
|
+
blockedBy: string[];
|
|
112
|
+
/**
|
|
113
|
+
* Prd-only: slugs of prds that must already be TASKED before this prd may be
|
|
114
|
+
* tasked (resolved against `work/prds/tasked/` residence, NOT `done/`). `[]` when
|
|
115
|
+
* omitted or empty. Parsed here so the auto-tasker can read it; enforcement
|
|
116
|
+
* lives in the `auto-slice` capability, not in eligibility.
|
|
117
|
+
*/
|
|
118
|
+
taskedAfter: string[];
|
|
119
|
+
/**
|
|
120
|
+
* The per-item override layer for the `promptGuidance` NUDGE namespace
|
|
121
|
+
* (task `prompt-guidance-testfirst-item-override`, prd US #5). A task or
|
|
122
|
+
* prd may carry one or more `promptGuidance.<member>: true | false`
|
|
123
|
+
* frontmatter lines to OVERRIDE the resolved repo policy for THAT ITEM only.
|
|
124
|
+
* Each member is `undefined` when omitted (⇒ inherit the next layer down in
|
|
125
|
+
* the precedence chain: per-task > per-prd > repo-resolved). The override
|
|
126
|
+
* is honoured at the prompt-assembly seam (`prompt.ts`); it never affects
|
|
127
|
+
* the `verify` gate.
|
|
128
|
+
*
|
|
129
|
+
* Parsed from the DOTTED scalar form `promptGuidance.testFirst: true`
|
|
130
|
+
* (single-line, mirroring the flat shape `humanOnly`/`needsAnswers` use at the
|
|
131
|
+
* item level). A mistyped value (e.g. `"yes"`) reads as `undefined`, the same
|
|
132
|
+
* silent-on-malformed behaviour the existing `humanOnly` parsing has — no
|
|
133
|
+
* silent coerce to true/false.
|
|
134
|
+
*/
|
|
135
|
+
promptGuidance: {
|
|
136
|
+
testFirst: boolean | undefined;
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Set (or clear) the top-level `needsAnswers:` frontmatter marker on a `work/`
|
|
141
|
+
* markdown document, returning the new content. Used by the tasker review→edit
|
|
142
|
+
* LOOP's verdict sink (`slicer-review-edit-loop`) to emit a specific uncertain
|
|
143
|
+
* candidate task as `needsAnswers: true` (open questions block autonomous build;
|
|
144
|
+
* a human must answer them). If a `needsAnswers:` line already exists it is
|
|
145
|
+
* REPLACED (idempotent); otherwise it is appended as the last line inside the
|
|
146
|
+
* frontmatter fence. A document with NO frontmatter fence gets one PREPENDED (see
|
|
147
|
+
* {@link setFrontmatterMarker}) — observations are born fence-less (the
|
|
148
|
+
* `capture-signal` skill writes prose), so the tooling-owned `needsAnswers` axis
|
|
149
|
+
* MUST be settable on them rather than silently dropped.
|
|
150
|
+
*/
|
|
151
|
+
export declare function setNeedsAnswersMarker(content: string, value: boolean): string;
|
|
152
|
+
/**
|
|
153
|
+
* Set (or replace) a top-level scalar `<key>: <value>` frontmatter marker on a
|
|
154
|
+
* `work/` markdown document, returning the new content. The generalised form of
|
|
155
|
+
* {@link setNeedsAnswersMarker} the advance APPLY rung uses to stamp a
|
|
156
|
+
* `triaged: keep` marker (US #30) on an item a human answered "keep" — so a
|
|
157
|
+
* settled observation drops out of the candidate pool and is never re-asked. If a
|
|
158
|
+
* `<key>:` line already exists it is REPLACED (idempotent); otherwise it is
|
|
159
|
+
* appended as the last line inside the frontmatter fence.
|
|
160
|
+
*
|
|
161
|
+
* A document with NO frontmatter fence gets ONE PREPENDED carrying just this
|
|
162
|
+
* marker (`---\n<key>: <value>\n---\n\n<body>`). This is the load-bearing fix for
|
|
163
|
+
* `sidecar-without-needsAnswers`: observations are routinely created fence-less
|
|
164
|
+
* (the `capture-signal` skill writes free-form prose), and the OLD behaviour
|
|
165
|
+
* silently returned the body UNCHANGED — so `persistSurfacedQuestions` wrote the
|
|
166
|
+
* sidecar while the `needsAnswers:true` flag it believed it set was discarded,
|
|
167
|
+
* tearing the `needsAnswers ⟺ active sidecar` invariant a later tick refused to
|
|
168
|
+
* classify. These markers (`needsAnswers`, `triaged`) are tooling-owned axes, not
|
|
169
|
+
* prose, so the tool is entitled to introduce the fence it needs.
|
|
170
|
+
*
|
|
171
|
+
* The ONE remaining return-unchanged case is a MALFORMED doc that opens a fence
|
|
172
|
+
* (`---\n`) but never closes it: rewriting that risks corrupting hand-authored
|
|
173
|
+
* content, so it is left untouched (a degenerate input no writer produces).
|
|
174
|
+
*/
|
|
175
|
+
export declare function setFrontmatterMarker(content: string, key: string, value: string): string;
|
|
176
|
+
/**
|
|
177
|
+
* PROPAGATE the origin-trust PROVENANCE (`origin` + `originTrust`) from a SOURCE
|
|
178
|
+
* artifact (a prd) onto a TARGET artifact's content (an emitted task), returning
|
|
179
|
+
* the new content (task `untrusted-origin-forces-build-propose`). The tasker
|
|
180
|
+
* calls this so a task born from an untrusted-origin prd carries the stamp the
|
|
181
|
+
* BUILD transition reads. IDEMPOTENT: each present source field is written via
|
|
182
|
+
* {@link setFrontmatterMarker} (replace-or-append). When the source has NO `origin`
|
|
183
|
+
* (a human/local-authored prd ⇒ trusted), the target is returned UNCHANGED — the
|
|
184
|
+
* normal path is never stamped (zero behaviour change). When a stamp IS applied to
|
|
185
|
+
* a fence-less target, {@link setFrontmatterMarker} now prepends a fence to carry
|
|
186
|
+
* it (tasks the tasker emits always have a fence, so this is the defensive path).
|
|
187
|
+
*/
|
|
188
|
+
export declare function propagateOrigin(source: Pick<Frontmatter, 'origin' | 'originTrust'>, targetContent: string): string;
|
|
189
|
+
export declare function parseFrontmatter(content: string): Frontmatter;
|
|
190
|
+
/**
|
|
191
|
+
* Resolve, from a parsed artifact's frontmatter, HOW it closes its source issue:
|
|
192
|
+
* the `prd:` hop or the lone-task `issue:` field. A PURE helper for the FUTURE
|
|
193
|
+
* CI close-job (`runner-in-ci`'s) — it is NOT wired into intake or any reader
|
|
194
|
+
* today; it merely pins the one-closure-path PRECEDENCE in one place.
|
|
195
|
+
*
|
|
196
|
+
* Encodes the invariant: a task uses `issue:` XOR `prd:`. When (only a human
|
|
197
|
+
* hand-edit could) BOTH are present, `prd:` WINS — the close-job hops to the prd's
|
|
198
|
+
* `issue:` and IGNORES the task's own `issue:` (the fanned-prd path is the
|
|
199
|
+
* authoritative one; a lone `issue:` on a `prd:`-bearing task is a contradiction
|
|
200
|
+
* that degrades to "use the prd" rather than crashing).
|
|
201
|
+
*
|
|
202
|
+
* Returns:
|
|
203
|
+
* - `{via: 'spec', spec}` when a `spec:` is present (hop to the spec's `issue:`; the
|
|
204
|
+
* caller resolves the spec file to read its number);
|
|
205
|
+
* - `{via: 'issue', issue}` when only a lone-task `issue:` is present;
|
|
206
|
+
* - `undefined` when neither is present (no closure path).
|
|
207
|
+
*/
|
|
208
|
+
export declare function resolveClosingIssue(frontmatter: Pick<Frontmatter, 'spec' | 'issue'>): {
|
|
209
|
+
via: 'spec';
|
|
210
|
+
spec: string;
|
|
211
|
+
} | {
|
|
212
|
+
via: 'issue';
|
|
213
|
+
issue: number;
|
|
214
|
+
} | undefined;
|
|
215
|
+
//# sourceMappingURL=frontmatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../src/frontmatter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AACvC,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC;AAElD,MAAM,WAAW,WAAW;IAC3B;;;;;OAKG;IACH,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B;;;;;OAKG;IACH,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC,qDAAqD;IACrD,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB;;;;;;;;OAQG;IACH,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB;;;;;;OAMG;IACH,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B;;;;;OAKG;IACH,SAAS,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B;;;;;OAKG;IACH,YAAY,EAAE,OAAO,GAAG,SAAS,CAAC;IAClC;;;;;;;;OAQG;IACH,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,iEAAiE;IACjE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB;;;;;OAKG;IACH,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB;;;;;;;;;;;;;;;OAeG;IACH,cAAc,EAAE;QAAC,SAAS,EAAE,OAAO,GAAG,SAAS,CAAA;KAAC,CAAC;CACjD;AA6FD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAE7E;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,oBAAoB,CACnC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACX,MAAM,CAyBR;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC9B,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,GAAG,aAAa,CAAC,EACnD,aAAa,EAAE,MAAM,GACnB,MAAM,CAYR;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CA6H7D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CAClC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,GAC9C;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,GAAG;IAAC,GAAG,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,GAAG,SAAS,CAQzE"}
|