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,442 @@
|
|
|
1
|
+
import { readdirSync, readFileSync } from 'node:fs';
|
|
2
|
+
import { basename, join } from 'node:path';
|
|
3
|
+
import { parseFrontmatter } from './frontmatter.js';
|
|
4
|
+
import { runAsync } from './git.js';
|
|
5
|
+
import { workFolderPath, workFolderRel, isWorkItemFile, } from './work-layout.js';
|
|
6
|
+
// --- The sole strategy: exactly today's behaviour -------------------------
|
|
7
|
+
function listMarkdown(dir) {
|
|
8
|
+
let entries;
|
|
9
|
+
try {
|
|
10
|
+
entries = readdirSync(dir);
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return [];
|
|
14
|
+
}
|
|
15
|
+
return entries.filter((name) => isWorkItemFile(name)).sort();
|
|
16
|
+
}
|
|
17
|
+
function slugForFile(dir, file) {
|
|
18
|
+
const content = readFileSync(join(dir, file), 'utf8');
|
|
19
|
+
const fm = parseFrontmatter(content);
|
|
20
|
+
return fm.slug ?? basename(file, '.md');
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Read a folder of TASK items (`tasks-ready` or `tasks-backlog`) from the local
|
|
24
|
+
* tree into the {@link LedgerReadyItem[]} shape. Factored so the POOL reader
|
|
25
|
+
* (`tasks/ready`) and the STAGING reader (`tasks/backlog`, the `surfaceStaging`
|
|
26
|
+
* widening) share one parse path — the two folders carry the SAME item shape
|
|
27
|
+
* (frontmatter + body), only the trust polarity differs.
|
|
28
|
+
*/
|
|
29
|
+
function readLocalTaskFolder(repoPath, folder) {
|
|
30
|
+
const dir = workFolderPath(repoPath, folder);
|
|
31
|
+
const items = [];
|
|
32
|
+
for (const file of listMarkdown(dir)) {
|
|
33
|
+
const content = readFileSync(join(dir, file), 'utf8');
|
|
34
|
+
const fm = parseFrontmatter(content);
|
|
35
|
+
items.push({
|
|
36
|
+
file,
|
|
37
|
+
slug: fm.slug ?? basename(file, '.md'),
|
|
38
|
+
humanOnly: fm.humanOnly,
|
|
39
|
+
needsAnswers: fm.needsAnswers,
|
|
40
|
+
blockedBy: fm.blockedBy,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
return items.sort((a, b) => a.slug.localeCompare(b.slug));
|
|
44
|
+
}
|
|
45
|
+
/** Read `work/tasks/ready/*.md` (the agent POOL) from the local tree, parsed and sorted by slug. */
|
|
46
|
+
function readLocalReady(repoPath) {
|
|
47
|
+
return readLocalTaskFolder(repoPath, 'tasks-ready');
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Read `work/tasks/backlog/*.md` (the TASK STAGING folder, prd
|
|
51
|
+
* `staging-surface-and-apply-promote-safety` F2) from the local tree. Same
|
|
52
|
+
* {@link LedgerReadyItem} shape as the pool reader — the SURFACE-on-staging
|
|
53
|
+
* widening only enumerates items; it does NOT promote them.
|
|
54
|
+
*/
|
|
55
|
+
function readLocalTaskStaging(repoPath) {
|
|
56
|
+
return readLocalTaskFolder(repoPath, 'tasks-backlog');
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Read `work/prds/proposed/*.md` (the PRD STAGING folder, the prd twin
|
|
60
|
+
* of {@link readLocalTaskStaging}, prd q4 answer) from the local tree. Returns
|
|
61
|
+
* the SAME {@link LedgerSpecItem} shape `resolveSpecPool().specs` returns.
|
|
62
|
+
*/
|
|
63
|
+
function readLocalSpecStaging(repoPath) {
|
|
64
|
+
return readLocalSpecFolder(repoPath, 'specs-proposed');
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Read `work/prds/tasked/*.md` (the TASKED resting folder) into the SAME
|
|
68
|
+
* {@link LedgerSpecItem} shape. Used by the lifecycle gather to surface/apply a
|
|
69
|
+
* `needsAnswers` prd that drifted after tasking and rests in place in
|
|
70
|
+
* `prds/tasked/` — so its answered sidecar is never stranded.
|
|
71
|
+
*/
|
|
72
|
+
function readLocalSpecTasked(repoPath) {
|
|
73
|
+
return readLocalSpecFolder(repoPath, 'specs-tasked');
|
|
74
|
+
}
|
|
75
|
+
/** Shared body for the local prd-FOLDER readers (proposed/tasked) — same item shape. */
|
|
76
|
+
function readLocalSpecFolder(repoPath, folder) {
|
|
77
|
+
const dir = workFolderPath(repoPath, folder);
|
|
78
|
+
const specs = [];
|
|
79
|
+
for (const file of listMarkdown(dir)) {
|
|
80
|
+
const content = readFileSync(join(dir, file), 'utf8');
|
|
81
|
+
const fm = parseFrontmatter(content);
|
|
82
|
+
specs.push({
|
|
83
|
+
file,
|
|
84
|
+
slug: fm.slug ?? basename(file, '.md'),
|
|
85
|
+
humanOnly: fm.humanOnly,
|
|
86
|
+
needsAnswers: fm.needsAnswers,
|
|
87
|
+
taskedAfter: fm.taskedAfter,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
return specs.sort((a, b) => a.slug.localeCompare(b.slug));
|
|
91
|
+
}
|
|
92
|
+
/** Collect the slugs present in `work/done/` on the local tree. */
|
|
93
|
+
function readLocalDoneSlugs(repoPath) {
|
|
94
|
+
const dir = workFolderPath(repoPath, 'done');
|
|
95
|
+
const slugs = new Set();
|
|
96
|
+
for (const file of listMarkdown(dir)) {
|
|
97
|
+
slugs.add(slugForFile(dir, file));
|
|
98
|
+
}
|
|
99
|
+
return slugs;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Read `work/notes/observations/*.md` (slug-sorted) from the local tree.
|
|
103
|
+
*
|
|
104
|
+
* Identity rule (task `observation-identity-is-its-filename-not-a-foreign-slug`):
|
|
105
|
+
* an observation's IDENTITY is its FILENAME, NEVER a foreign frontmatter `slug:`.
|
|
106
|
+
* Earlier this read `fm.slug ?? basename(file)`, which let the review-nits minting
|
|
107
|
+
* (which wrote the REVIEWED TASK's slug into `slug:` as a back-pointer) drive the
|
|
108
|
+
* lifecycle pool to emit `obs:<reviewed-slug>` — a key that did not round-trip
|
|
109
|
+
* through `findItemPath` (filename-only) and collided with the reviewed task in
|
|
110
|
+
* `work/done/`. Identity is now ALWAYS the basename, so the enumerate→resolve
|
|
111
|
+
* round-trip is total by construction and a stray frontmatter `slug:` cannot
|
|
112
|
+
* re-break it. The back-pointer lives in `reviewOf:` instead.
|
|
113
|
+
*/
|
|
114
|
+
function readLocalObservations(repoPath) {
|
|
115
|
+
const dir = workFolderPath(repoPath, 'observations');
|
|
116
|
+
const items = [];
|
|
117
|
+
for (const file of listMarkdown(dir)) {
|
|
118
|
+
const content = readFileSync(join(dir, file), 'utf8');
|
|
119
|
+
const fm = parseFrontmatter(content);
|
|
120
|
+
items.push({
|
|
121
|
+
file,
|
|
122
|
+
slug: basename(file, '.md'),
|
|
123
|
+
triaged: fm.triaged,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
return items.sort((a, b) => a.slug.localeCompare(b.slug));
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Does a prd named `slug` exist in `<repoPath>/work/<folder>/`? A prd source file
|
|
130
|
+
* is `work/prds/ready/*.md` (where a mid-tasking prd also rests — the `tasking/` folder is
|
|
131
|
+
* retired); a tasked prd rests at `work/prds/tasked/*.md` (the source of truth for
|
|
132
|
+
* tasked-ness). We match the slug against each file's
|
|
133
|
+
* frontmatter `slug:` (falling back to the filename) — the SAME shape the task
|
|
134
|
+
* readers use — so a renamed file whose frontmatter slug matches still resolves.
|
|
135
|
+
* Returns the matching filename, or `undefined`.
|
|
136
|
+
*/
|
|
137
|
+
function findSpecFileBySlug(repoPath, folder, slug) {
|
|
138
|
+
const dir = workFolderPath(repoPath, folder);
|
|
139
|
+
for (const file of listMarkdown(dir)) {
|
|
140
|
+
if (slugForFile(dir, file) === slug) {
|
|
141
|
+
return file;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return undefined;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Enumerate `work/prds/ready/*.md` into the auto-task prd pool (the tasks-first/prd
|
|
148
|
+
* priority's prd source) — the SAME prd read path {@link findSpecFileBySlug} uses,
|
|
149
|
+
* widened from a single-slug existence check to a full enumeration. Each prd's
|
|
150
|
+
* slug is resolved from frontmatter `slug:` (falling back to the filename) and
|
|
151
|
+
* its gate axes (`humanOnly`/`needsAnswers`/`taskedAfter`) parsed. The
|
|
152
|
+
* already-TASKED set is RESIDENCE in `work/prds/tasked/` (task
|
|
153
|
+
* `prd-sliced-folder-step-a` / prd `slicing-coherence` US #9): the FOLDER is the
|
|
154
|
+
* source of truth (the build-machine `done/` analogue), so `taskedAfter` resolves
|
|
155
|
+
* against `prds/tasked/` residence (mirroring `blockedBy` -> `done/`). The `tasked:`
|
|
156
|
+
* frontmatter marker was removed entirely in `remove-sliced-marker-step-b`. This
|
|
157
|
+
* matches `tasking.ts`'s `readTaskedSlugs`. Missing folders read as empty.
|
|
158
|
+
*/
|
|
159
|
+
function readLocalSpecPool(repoPath) {
|
|
160
|
+
const dir = workFolderPath(repoPath, 'specs-ready');
|
|
161
|
+
const specs = [];
|
|
162
|
+
for (const file of listMarkdown(dir)) {
|
|
163
|
+
const content = readFileSync(join(dir, file), 'utf8');
|
|
164
|
+
const fm = parseFrontmatter(content);
|
|
165
|
+
specs.push({
|
|
166
|
+
file,
|
|
167
|
+
slug: fm.slug ?? basename(file, '.md'),
|
|
168
|
+
humanOnly: fm.humanOnly,
|
|
169
|
+
needsAnswers: fm.needsAnswers,
|
|
170
|
+
taskedAfter: fm.taskedAfter,
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
specs.sort((a, b) => a.slug.localeCompare(b.slug));
|
|
174
|
+
// Tasked-ness is RESIDENCE in `work/prds/tasked/` — the FOLDER is the source of
|
|
175
|
+
// truth, like `done/` for tasks (the `tasked:` marker was removed in
|
|
176
|
+
// `remove-sliced-marker-step-b`), mirroring tasking.ts's readTaskedSlugs. Missing
|
|
177
|
+
// folder reads as empty.
|
|
178
|
+
const taskedSlugs = new Set();
|
|
179
|
+
const taskedDir = workFolderPath(repoPath, 'specs-tasked');
|
|
180
|
+
for (const file of listMarkdown(taskedDir)) {
|
|
181
|
+
const content = readFileSync(join(taskedDir, file), 'utf8');
|
|
182
|
+
const fm = parseFrontmatter(content);
|
|
183
|
+
taskedSlugs.add(fm.slug ?? basename(file, '.md'));
|
|
184
|
+
}
|
|
185
|
+
return { specs, taskedSlugs };
|
|
186
|
+
}
|
|
187
|
+
/** Run git, returning the raw result (no throw) — for soft checks. */
|
|
188
|
+
function gitSoft(args, cwd, env) {
|
|
189
|
+
return runAsync('git', args, cwd, { env });
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Read the task file's contents from `<arbiter>/main`. It may live in `backlog/`
|
|
193
|
+
* (the normal claim case) or `in-progress/` (start --resume); read whichever
|
|
194
|
+
* exists. Returns `undefined` when the task is not found there.
|
|
195
|
+
*/
|
|
196
|
+
async function readTaskOnArbiter(slug, arbiter, cwd, env) {
|
|
197
|
+
for (const folder of ['tasks-ready', 'in-progress']) {
|
|
198
|
+
const object = `${arbiter}/main:${workFolderRel(folder)}/${slug}.md`;
|
|
199
|
+
const show = await gitSoft(['show', object], cwd, env);
|
|
200
|
+
if (show.status === 0) {
|
|
201
|
+
return show.stdout;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return undefined;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Collect the slugs present in `work/done/` on `<arbiter>/main`, read from the
|
|
208
|
+
* committed arbiter tree (`ls-tree`). The slug is the filename minus `.md`
|
|
209
|
+
* (matching how claim/done moves name the file after its slug).
|
|
210
|
+
*/
|
|
211
|
+
async function readDoneSlugsOnArbiter(arbiter, cwd, env) {
|
|
212
|
+
return readDoneSlugsFromTree(`${arbiter}/main`, cwd, env);
|
|
213
|
+
}
|
|
214
|
+
// --- Reading a committed `work/` tree (ref-based; bare-mirror or arbiter) ----
|
|
215
|
+
//
|
|
216
|
+
// These helpers read `work/{backlog,done}` from a git REF via
|
|
217
|
+
// `git ls-tree`/`git show` — the ONLY mechanism that works against a BARE repo
|
|
218
|
+
// (no working tree). `treeBase` is the `<ref>:work/<folder>` prefix; `cwd` is
|
|
219
|
+
// the repo the `git -C <cwd>` commands run in (the mirror itself for the mirror
|
|
220
|
+
// method, a working clone for the arbiter method).
|
|
221
|
+
/** `git ls-tree --name-only <base>` → the `.md` filenames (sorted), or `[]`. */
|
|
222
|
+
async function listMarkdownInTree(base, cwd, env) {
|
|
223
|
+
const tree = await gitSoft(['ls-tree', '--name-only', base], cwd, env);
|
|
224
|
+
if (tree.status !== 0) {
|
|
225
|
+
// The folder does not exist on this ref — nothing there.
|
|
226
|
+
return [];
|
|
227
|
+
}
|
|
228
|
+
return tree.stdout
|
|
229
|
+
.split('\n')
|
|
230
|
+
.map((s) => s.trim())
|
|
231
|
+
.filter((name) => isWorkItemFile(name))
|
|
232
|
+
.sort();
|
|
233
|
+
}
|
|
234
|
+
/** `git show <base>/<file>` → the file's raw contents, or `undefined`. */
|
|
235
|
+
async function showInTree(base, file, cwd, env) {
|
|
236
|
+
const show = await gitSoft(['show', `${base}/${file}`], cwd, env);
|
|
237
|
+
return show.status === 0 ? show.stdout : undefined;
|
|
238
|
+
}
|
|
239
|
+
/** Collect the slugs in `<ref>:work/done` (filename minus `.md`). */
|
|
240
|
+
async function readDoneSlugsFromTree(ref, cwd, env) {
|
|
241
|
+
const slugs = new Set();
|
|
242
|
+
for (const file of await listMarkdownInTree(`${ref}:${workFolderRel('done')}`, cwd, env)) {
|
|
243
|
+
slugs.add(file.slice(0, -'.md'.length));
|
|
244
|
+
}
|
|
245
|
+
return slugs;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Parse `<ref>:work/tasks/<folder>/*.md` from a committed tree into
|
|
249
|
+
* {@link LedgerReadyItem[]}, sorted by slug. Factored so the POOL + STAGING
|
|
250
|
+
* mirror reads share ONE parse path (mirrors `readLocalTaskFolder`).
|
|
251
|
+
*/
|
|
252
|
+
async function readTaskFolderFromTree(folder, ref, cwd, env) {
|
|
253
|
+
const base = `${ref}:${workFolderRel(folder)}`;
|
|
254
|
+
const items = [];
|
|
255
|
+
for (const file of await listMarkdownInTree(base, cwd, env)) {
|
|
256
|
+
const content = await showInTree(base, file, cwd, env);
|
|
257
|
+
if (content === undefined) {
|
|
258
|
+
continue;
|
|
259
|
+
}
|
|
260
|
+
const fm = parseFrontmatter(content);
|
|
261
|
+
items.push({
|
|
262
|
+
file,
|
|
263
|
+
slug: fm.slug ?? basename(file, '.md'),
|
|
264
|
+
humanOnly: fm.humanOnly,
|
|
265
|
+
needsAnswers: fm.needsAnswers,
|
|
266
|
+
blockedBy: fm.blockedBy,
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
return items.sort((a, b) => a.slug.localeCompare(b.slug));
|
|
270
|
+
}
|
|
271
|
+
/** Parse `<ref>:work/tasks/ready/*.md` into pool items, sorted by slug. */
|
|
272
|
+
async function readReadyFromTree(ref, cwd, env) {
|
|
273
|
+
return readTaskFolderFromTree('tasks-ready', ref, cwd, env);
|
|
274
|
+
}
|
|
275
|
+
/** Parse `<ref>:work/tasks/backlog/*.md` (TASK STAGING) into items, sorted by slug. */
|
|
276
|
+
async function readTaskStagingFromTree(ref, cwd, env) {
|
|
277
|
+
return readTaskFolderFromTree('tasks-backlog', ref, cwd, env);
|
|
278
|
+
}
|
|
279
|
+
/** Parse `<ref>:work/prds/proposed/*.md` (PRD STAGING) into prd items, sorted by slug. */
|
|
280
|
+
async function readSpecStagingFromTree(ref, cwd, env) {
|
|
281
|
+
return readSpecFolderFromTree('specs-proposed', ref, cwd, env);
|
|
282
|
+
}
|
|
283
|
+
/** Parse `<ref>:work/prds/tasked/*.md` (TASKED resting) into prd items, sorted by slug. */
|
|
284
|
+
async function readSpecTaskedFromTree(ref, cwd, env) {
|
|
285
|
+
return readSpecFolderFromTree('specs-tasked', ref, cwd, env);
|
|
286
|
+
}
|
|
287
|
+
/** Shared body for the mirror-ref prd-FOLDER readers (proposed/tasked) — same item shape. */
|
|
288
|
+
async function readSpecFolderFromTree(folder, ref, cwd, env) {
|
|
289
|
+
const base = `${ref}:${workFolderRel(folder)}`;
|
|
290
|
+
const specs = [];
|
|
291
|
+
for (const file of await listMarkdownInTree(base, cwd, env)) {
|
|
292
|
+
const content = await showInTree(base, file, cwd, env);
|
|
293
|
+
if (content === undefined) {
|
|
294
|
+
continue;
|
|
295
|
+
}
|
|
296
|
+
const fm = parseFrontmatter(content);
|
|
297
|
+
specs.push({
|
|
298
|
+
file,
|
|
299
|
+
slug: fm.slug ?? basename(file, '.md'),
|
|
300
|
+
humanOnly: fm.humanOnly,
|
|
301
|
+
needsAnswers: fm.needsAnswers,
|
|
302
|
+
taskedAfter: fm.taskedAfter,
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
return specs.sort((a, b) => a.slug.localeCompare(b.slug));
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Parse `<ref>:work/prds/ready/*.md` into the auto-task prd pool, sorted by slug, plus
|
|
309
|
+
* the already-TASKED slugs from `<ref>:work/prds/tasked/` RESIDENCE (the folder is
|
|
310
|
+
* the source of truth, mirroring the working-tree {@link readLocalSpecPool}). Reads
|
|
311
|
+
* a committed tree (bare-mirror or any ref) via `ls-tree`/`show`. Missing folders
|
|
312
|
+
* read as empty.
|
|
313
|
+
*/
|
|
314
|
+
async function readSpecPoolFromTree(ref, cwd, env) {
|
|
315
|
+
const specBase = `${ref}:${workFolderRel('specs-ready')}`;
|
|
316
|
+
const specs = [];
|
|
317
|
+
for (const file of await listMarkdownInTree(specBase, cwd, env)) {
|
|
318
|
+
const content = await showInTree(specBase, file, cwd, env);
|
|
319
|
+
if (content === undefined) {
|
|
320
|
+
continue;
|
|
321
|
+
}
|
|
322
|
+
const fm = parseFrontmatter(content);
|
|
323
|
+
specs.push({
|
|
324
|
+
file,
|
|
325
|
+
slug: fm.slug ?? basename(file, '.md'),
|
|
326
|
+
humanOnly: fm.humanOnly,
|
|
327
|
+
needsAnswers: fm.needsAnswers,
|
|
328
|
+
taskedAfter: fm.taskedAfter,
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
specs.sort((a, b) => a.slug.localeCompare(b.slug));
|
|
332
|
+
// Tasked-ness is RESIDENCE in `work/prds/tasked/` — the FOLDER is the source of
|
|
333
|
+
// truth (the `tasked:` marker was removed in `remove-sliced-marker-step-b`),
|
|
334
|
+
// exactly as the working-tree reader resolves it.
|
|
335
|
+
const taskedBase = `${ref}:${workFolderRel('specs-tasked')}`;
|
|
336
|
+
const taskedSlugs = new Set();
|
|
337
|
+
for (const file of await listMarkdownInTree(taskedBase, cwd, env)) {
|
|
338
|
+
const content = await showInTree(taskedBase, file, cwd, env);
|
|
339
|
+
if (content === undefined) {
|
|
340
|
+
continue;
|
|
341
|
+
}
|
|
342
|
+
const fm = parseFrontmatter(content);
|
|
343
|
+
taskedSlugs.add(fm.slug ?? basename(file, '.md'));
|
|
344
|
+
}
|
|
345
|
+
return { specs, taskedSlugs };
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Parse `<ref>:work/notes/observations/*.md` into items, sorted by slug. Identity is the
|
|
349
|
+
* FILENAME (mirrors {@link readLocalObservations}) so the in-place + mirror
|
|
350
|
+
* enumerations agree, and a foreign frontmatter `slug:` cannot break the
|
|
351
|
+
* enumerate→resolve round-trip.
|
|
352
|
+
*/
|
|
353
|
+
async function readObservationsFromTree(ref, cwd, env) {
|
|
354
|
+
const base = `${ref}:${workFolderRel('observations')}`;
|
|
355
|
+
const items = [];
|
|
356
|
+
for (const file of await listMarkdownInTree(base, cwd, env)) {
|
|
357
|
+
const content = await showInTree(base, file, cwd, env);
|
|
358
|
+
if (content === undefined) {
|
|
359
|
+
continue;
|
|
360
|
+
}
|
|
361
|
+
const fm = parseFrontmatter(content);
|
|
362
|
+
items.push({
|
|
363
|
+
file,
|
|
364
|
+
slug: basename(file, '.md'),
|
|
365
|
+
triaged: fm.triaged,
|
|
366
|
+
});
|
|
367
|
+
}
|
|
368
|
+
return items.sort((a, b) => a.slug.localeCompare(b.slug));
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* The ONLY ledger-read strategy: current behaviour. The local method reads the
|
|
372
|
+
* working tree (offline); the arbiter method reads `<arbiter>/main`. A future
|
|
373
|
+
* strategy would be a different object implementing the same interface — chosen
|
|
374
|
+
* NOWHERE today (no mode/config selects it).
|
|
375
|
+
*/
|
|
376
|
+
export const currentLedgerRead = {
|
|
377
|
+
resolveLocalState({ repoPath }) {
|
|
378
|
+
return {
|
|
379
|
+
ready: readLocalReady(repoPath),
|
|
380
|
+
doneSlugs: readLocalDoneSlugs(repoPath),
|
|
381
|
+
observations: readLocalObservations(repoPath),
|
|
382
|
+
};
|
|
383
|
+
},
|
|
384
|
+
async resolveArbiterState({ slug, cwd, arbiter, env }) {
|
|
385
|
+
const task = await readTaskOnArbiter(slug, arbiter, cwd, env);
|
|
386
|
+
const doneSlugs = await readDoneSlugsOnArbiter(arbiter, cwd, env);
|
|
387
|
+
return { task, doneSlugs };
|
|
388
|
+
},
|
|
389
|
+
resolveSpecExistence({ repoPath, slug }) {
|
|
390
|
+
const specFile = findSpecFileBySlug(repoPath, 'specs-ready', slug);
|
|
391
|
+
const specTaskedFile = findSpecFileBySlug(repoPath, 'specs-tasked', slug);
|
|
392
|
+
return {
|
|
393
|
+
exists: specFile !== undefined || specTaskedFile !== undefined,
|
|
394
|
+
specFile,
|
|
395
|
+
specTaskedFile,
|
|
396
|
+
};
|
|
397
|
+
},
|
|
398
|
+
resolveSpecPool({ repoPath }) {
|
|
399
|
+
return readLocalSpecPool(repoPath);
|
|
400
|
+
},
|
|
401
|
+
resolveLocalTaskStaging({ repoPath }) {
|
|
402
|
+
return readLocalTaskStaging(repoPath);
|
|
403
|
+
},
|
|
404
|
+
resolveLocalSpecStaging({ repoPath }) {
|
|
405
|
+
return readLocalSpecStaging(repoPath);
|
|
406
|
+
},
|
|
407
|
+
resolveLocalSpecTasked({ repoPath }) {
|
|
408
|
+
return readLocalSpecTasked(repoPath);
|
|
409
|
+
},
|
|
410
|
+
async resolveMirrorTaskStaging({ mirrorPath, ref = 'main', env }) {
|
|
411
|
+
return readTaskStagingFromTree(ref, mirrorPath, env);
|
|
412
|
+
},
|
|
413
|
+
async resolveMirrorSpecStaging({ mirrorPath, ref = 'main', env }) {
|
|
414
|
+
return readSpecStagingFromTree(ref, mirrorPath, env);
|
|
415
|
+
},
|
|
416
|
+
async resolveMirrorSpecTasked({ mirrorPath, ref = 'main', env }) {
|
|
417
|
+
return readSpecTaskedFromTree(ref, mirrorPath, env);
|
|
418
|
+
},
|
|
419
|
+
async resolveMirrorState({ mirrorPath, ref = 'main', env }) {
|
|
420
|
+
// A hub mirror is BARE — read the full `work/` lifecycle from its committed
|
|
421
|
+
// `<ref>:work/...` tree, running git INSIDE the mirror (`git -C <mirror>`).
|
|
422
|
+
// The ref is mirror-LOCAL (`main`), never `origin/main`.
|
|
423
|
+
const [ready, doneSlugs, observations] = await Promise.all([
|
|
424
|
+
readReadyFromTree(ref, mirrorPath, env),
|
|
425
|
+
readDoneSlugsFromTree(ref, mirrorPath, env),
|
|
426
|
+
readObservationsFromTree(ref, mirrorPath, env),
|
|
427
|
+
]);
|
|
428
|
+
return { ready, doneSlugs, observations };
|
|
429
|
+
},
|
|
430
|
+
async resolveMirrorSpecPool({ mirrorPath, ref = 'main', env }) {
|
|
431
|
+
// The prd pool from the bare mirror's committed `<ref>:work/prds*` tree — the
|
|
432
|
+
// mirror-ref counterpart of `resolveSpecPool` (a working-tree read). Same shape,
|
|
433
|
+
// so `taskableSpecs` applies identically to either source.
|
|
434
|
+
return readSpecPoolFromTree(ref, mirrorPath, env);
|
|
435
|
+
},
|
|
436
|
+
};
|
|
437
|
+
/**
|
|
438
|
+
* The active ledger-read strategy. There is exactly one (current behaviour);
|
|
439
|
+
* this indirection is the seam's single insertion point — NOT a selectable mode.
|
|
440
|
+
*/
|
|
441
|
+
export const ledgerRead = currentLedgerRead;
|
|
442
|
+
//# sourceMappingURL=ledger-read.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ledger-read.js","sourceRoot":"","sources":["../src/ledger-read.ts"],"names":[],"mappings":"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"}
|