dorfl 0.1.1 → 0.2.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 +3 -3
- package/dist/advance-ci-template.js +1 -1
- package/dist/advance-ci-template.js.map +1 -1
- package/dist/advance-classify.d.ts +5 -5
- package/dist/advance-classify.d.ts.map +1 -1
- package/dist/advance-classify.js +4 -4
- package/dist/advance-drivers.d.ts +8 -8
- package/dist/advance-drivers.d.ts.map +1 -1
- package/dist/advance-drivers.js +20 -8
- package/dist/advance-drivers.js.map +1 -1
- package/dist/advance-isolated.d.ts +3 -3
- package/dist/advance-isolated.d.ts.map +1 -1
- package/dist/advance-isolated.js +1 -1
- package/dist/advance-lifecycle-template.d.ts +2 -2
- package/dist/advance-lifecycle-template.d.ts.map +1 -1
- package/dist/advance-lifecycle-template.js +85 -13
- package/dist/advance-lifecycle-template.js.map +1 -1
- package/dist/advance-loop-driver.d.ts +3 -3
- package/dist/advance-loop-driver.d.ts.map +1 -1
- package/dist/advance-loop-driver.js +1 -1
- package/dist/advance-treeless-publish.d.ts +24 -1
- package/dist/advance-treeless-publish.d.ts.map +1 -1
- package/dist/advance-treeless-publish.js +41 -0
- package/dist/advance-treeless-publish.js.map +1 -1
- package/dist/advance.d.ts +69 -17
- package/dist/advance.d.ts.map +1 -1
- package/dist/advance.js +409 -102
- package/dist/advance.js.map +1 -1
- package/dist/advancing-lock.d.ts +31 -3
- package/dist/advancing-lock.d.ts.map +1 -1
- package/dist/advancing-lock.js +55 -5
- package/dist/advancing-lock.js.map +1 -1
- package/dist/agent-launch.d.ts +12 -0
- package/dist/agent-launch.d.ts.map +1 -1
- package/dist/agent-launch.js +22 -12
- package/dist/agent-launch.js.map +1 -1
- package/dist/agent-stop.d.ts +40 -2
- package/dist/agent-stop.d.ts.map +1 -1
- package/dist/agent-stop.js +30 -2
- package/dist/agent-stop.js.map +1 -1
- package/dist/apply-decide.d.ts +19 -5
- package/dist/apply-decide.d.ts.map +1 -1
- package/dist/apply-decide.js +38 -9
- package/dist/apply-decide.js.map +1 -1
- package/dist/apply-merge-action.d.ts +20 -8
- package/dist/apply-merge-action.d.ts.map +1 -1
- package/dist/apply-merge-action.js +44 -9
- package/dist/apply-merge-action.js.map +1 -1
- package/dist/apply-persist.d.ts +62 -31
- package/dist/apply-persist.d.ts.map +1 -1
- package/dist/apply-persist.js +173 -44
- package/dist/apply-persist.js.map +1 -1
- package/dist/apply-stuck-action.d.ts +151 -0
- package/dist/apply-stuck-action.d.ts.map +1 -0
- package/dist/apply-stuck-action.js +125 -0
- package/dist/apply-stuck-action.js.map +1 -0
- package/dist/brand.d.ts +12 -1
- package/dist/brand.d.ts.map +1 -1
- package/dist/brand.js +2 -1
- package/dist/brand.js.map +1 -1
- package/dist/buildable-body.d.ts +14 -14
- package/dist/buildable-body.js +9 -9
- package/dist/claim-cas.d.ts +3 -3
- package/dist/claim-cas.js +1 -1
- package/dist/claim-cas.js.map +1 -1
- package/dist/cli-spinner.d.ts +1 -1
- package/dist/cli-spinner.js +1 -1
- package/dist/cli.d.ts +10 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +385 -128
- package/dist/cli.js.map +1 -1
- package/dist/close-job-template.d.ts +3 -3
- package/dist/close-job-template.js +9 -9
- package/dist/close-job.d.ts +8 -8
- package/dist/close-job.js +25 -25
- package/dist/close-job.js.map +1 -1
- package/dist/complete.d.ts +9 -6
- package/dist/complete.d.ts.map +1 -1
- package/dist/complete.js +99 -45
- package/dist/complete.js.map +1 -1
- package/dist/concurrency.d.ts +1 -1
- package/dist/concurrency.js +1 -1
- package/dist/config.d.ts +86 -40
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +61 -9
- package/dist/config.js.map +1 -1
- package/dist/continue-branch.d.ts +1 -1
- package/dist/continue-branch.d.ts.map +1 -1
- package/dist/continue-branch.js +23 -1
- package/dist/continue-branch.js.map +1 -1
- package/dist/cwd-section.js +1 -1
- package/dist/cwd-section.js.map +1 -1
- package/dist/decision-engine.d.ts +39 -11
- package/dist/decision-engine.d.ts.map +1 -1
- package/dist/decision-engine.js +10 -6
- package/dist/decision-engine.js.map +1 -1
- package/dist/do-autopick.d.ts +6 -6
- package/dist/do-autopick.d.ts.map +1 -1
- package/dist/do-autopick.js +16 -6
- package/dist/do-autopick.js.map +1 -1
- package/dist/do-config.d.ts +4 -4
- package/dist/do-config.js +3 -3
- package/dist/do-config.js.map +1 -1
- package/dist/do-remote-auto.d.ts +2 -2
- package/dist/do-remote-auto.js +1 -1
- package/dist/do.d.ts +74 -81
- package/dist/do.d.ts.map +1 -1
- package/dist/do.js +439 -50
- package/dist/do.js.map +1 -1
- package/dist/drop-source.d.ts +2 -2
- package/dist/env-config.d.ts.map +1 -1
- package/dist/env-config.js +19 -11
- package/dist/env-config.js.map +1 -1
- package/dist/failure-cause.d.ts +3 -2
- package/dist/failure-cause.d.ts.map +1 -1
- package/dist/failure-cause.js +28 -1
- package/dist/failure-cause.js.map +1 -1
- package/dist/format.d.ts +6 -6
- package/dist/format.d.ts.map +1 -1
- package/dist/format.js +13 -30
- package/dist/format.js.map +1 -1
- package/dist/frontmatter.d.ts +28 -15
- package/dist/frontmatter.d.ts.map +1 -1
- package/dist/frontmatter.js +38 -24
- package/dist/frontmatter.js.map +1 -1
- package/dist/gc.d.ts +65 -6
- package/dist/gc.d.ts.map +1 -1
- package/dist/gc.js +126 -9
- package/dist/gc.js.map +1 -1
- package/dist/github.d.ts +14 -0
- package/dist/github.d.ts.map +1 -1
- package/dist/github.js +73 -0
- package/dist/github.js.map +1 -1
- package/dist/harness.d.ts +25 -0
- package/dist/harness.d.ts.map +1 -1
- package/dist/harness.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/install-ci-branch-protection.d.ts +133 -39
- package/dist/install-ci-branch-protection.d.ts.map +1 -1
- package/dist/install-ci-branch-protection.js +191 -49
- package/dist/install-ci-branch-protection.js.map +1 -1
- package/dist/install-ci-capabilities/advance-lifecycle.d.ts +1 -1
- package/dist/install-ci-capabilities/advance-lifecycle.js +1 -1
- package/dist/install-ci-capabilities/close-job.d.ts +1 -1
- package/dist/install-ci-capabilities/close-job.js +1 -1
- package/dist/install-ci-capabilities/example-noop.d.ts +1 -1
- package/dist/install-ci-capabilities/example-noop.js +1 -1
- package/dist/install-ci-capabilities/intake.d.ts +2 -2
- package/dist/install-ci-capabilities/intake.js +2 -2
- package/dist/install-ci-capabilities/verify.d.ts +1 -1
- package/dist/install-ci-capabilities/verify.js +1 -1
- package/dist/install-ci-core.d.ts +24 -4
- package/dist/install-ci-core.d.ts.map +1 -1
- package/dist/install-ci-core.js +12 -5
- package/dist/install-ci-core.js.map +1 -1
- package/dist/install-ci-github.d.ts +33 -1
- package/dist/install-ci-github.d.ts.map +1 -1
- package/dist/install-ci-github.js +74 -1
- package/dist/install-ci-github.js.map +1 -1
- package/dist/install-ci.d.ts +1 -1
- package/dist/install-ci.js +4 -4
- package/dist/install-ci.js.map +1 -1
- package/dist/install-skills.d.ts +123 -0
- package/dist/install-skills.d.ts.map +1 -0
- package/dist/install-skills.js +100 -0
- package/dist/install-skills.js.map +1 -0
- package/dist/intake-event.d.ts +6 -6
- package/dist/intake-event.js +6 -6
- package/dist/intake-marker.d.ts +3 -3
- package/dist/intake-marker.d.ts.map +1 -1
- package/dist/intake-triage.d.ts +1 -1
- package/dist/intake-triage.js +2 -2
- package/dist/intake-trigger-template.d.ts +8 -8
- package/dist/intake-trigger-template.d.ts.map +1 -1
- package/dist/intake-trigger-template.js +17 -17
- package/dist/intake-trigger-template.js.map +1 -1
- package/dist/intake.d.ts +65 -52
- package/dist/intake.d.ts.map +1 -1
- package/dist/intake.js +92 -76
- package/dist/intake.js.map +1 -1
- package/dist/integration-core.d.ts +27 -24
- package/dist/integration-core.d.ts.map +1 -1
- package/dist/integration-core.js +191 -77
- package/dist/integration-core.js.map +1 -1
- package/dist/integrator.d.ts +1 -1
- package/dist/integrator.d.ts.map +1 -1
- package/dist/integrator.js +19 -3
- package/dist/integrator.js.map +1 -1
- package/dist/isolation.d.ts +4 -4
- package/dist/isolation.d.ts.map +1 -1
- package/dist/isolation.js +9 -0
- package/dist/isolation.js.map +1 -1
- package/dist/issue-provider.d.ts +4 -4
- package/dist/issue-provider.js +1 -1
- package/dist/item-lock.d.ts +216 -149
- package/dist/item-lock.d.ts.map +1 -1
- package/dist/item-lock.js +345 -270
- package/dist/item-lock.js.map +1 -1
- package/dist/item-path.d.ts +2 -2
- package/dist/item-path.js +2 -2
- package/dist/ledger-lint.d.ts +9 -9
- package/dist/ledger-lint.js +9 -9
- package/dist/ledger-read.d.ts +57 -57
- package/dist/ledger-read.d.ts.map +1 -1
- package/dist/ledger-read.js +24 -24
- package/dist/ledger-read.js.map +1 -1
- package/dist/ledger-write.d.ts +33 -28
- package/dist/ledger-write.d.ts.map +1 -1
- package/dist/ledger-write.js +100 -122
- package/dist/ledger-write.js.map +1 -1
- package/dist/lifecycle-gather.d.ts +18 -1
- package/dist/lifecycle-gather.d.ts.map +1 -1
- package/dist/lifecycle-gather.js +23 -17
- package/dist/lifecycle-gather.js.map +1 -1
- package/dist/lifecycle-pools.d.ts +44 -7
- package/dist/lifecycle-pools.d.ts.map +1 -1
- package/dist/lifecycle-pools.js +27 -7
- package/dist/lifecycle-pools.js.map +1 -1
- package/dist/merge-question-surfacer.d.ts +18 -4
- package/dist/merge-question-surfacer.d.ts.map +1 -1
- package/dist/merge-question-surfacer.js +20 -5
- package/dist/merge-question-surfacer.js.map +1 -1
- package/dist/migrate-stuck-locks.d.ts +129 -0
- package/dist/migrate-stuck-locks.d.ts.map +1 -0
- package/dist/migrate-stuck-locks.js +355 -0
- package/dist/migrate-stuck-locks.js.map +1 -0
- package/dist/mint-adr.js +4 -4
- package/dist/mirror-pool-scan.d.ts +2 -2
- package/dist/mirror-pool-scan.js +3 -3
- package/dist/mirror-pool-scan.js.map +1 -1
- package/dist/needs-attention.d.ts +304 -27
- package/dist/needs-attention.d.ts.map +1 -1
- package/dist/needs-attention.js +542 -67
- package/dist/needs-attention.js.map +1 -1
- package/dist/orphan-sidecar.d.ts +10 -6
- package/dist/orphan-sidecar.d.ts.map +1 -1
- package/dist/orphan-sidecar.js +35 -2
- package/dist/orphan-sidecar.js.map +1 -1
- package/dist/pi-harness.d.ts +16 -0
- package/dist/pi-harness.d.ts.map +1 -1
- package/dist/pi-harness.js +82 -2
- package/dist/pi-harness.js.map +1 -1
- package/dist/placement.d.ts +8 -8
- package/dist/placement.js +3 -3
- package/dist/prd-to-spec.d.ts.map +1 -1
- package/dist/prd-to-spec.js +9 -5
- package/dist/prd-to-spec.js.map +1 -1
- package/dist/prompt.d.ts +16 -19
- package/dist/prompt.d.ts.map +1 -1
- package/dist/prompt.js +17 -19
- package/dist/prompt.js.map +1 -1
- package/dist/protocol/CLAIM-PROTOCOL.md +17 -10
- package/dist/protocol/REVIEW-PROTOCOL.md +4 -1
- package/dist/protocol/SURFACE-PROTOCOL.md +16 -2
- package/dist/protocol/TASKING-PROTOCOL.md +3 -1
- package/dist/protocol/WORK-CONTRACT.md +22 -18
- package/dist/protocol/task-template.md +1 -1
- package/dist/readiness.d.ts +1 -1
- package/dist/reap-branches.d.ts +12 -9
- package/dist/reap-branches.d.ts.map +1 -1
- package/dist/reap-branches.js +25 -7
- package/dist/reap-branches.js.map +1 -1
- package/dist/recover-isolated.d.ts +12 -0
- package/dist/recover-isolated.d.ts.map +1 -1
- package/dist/recover-isolated.js +6 -1
- package/dist/recover-isolated.js.map +1 -1
- package/dist/repo-config.d.ts +23 -2
- package/dist/repo-config.d.ts.map +1 -1
- package/dist/repo-config.js +64 -18
- package/dist/repo-config.js.map +1 -1
- package/dist/repo-mirror.d.ts.map +1 -1
- package/dist/repo-mirror.js +18 -2
- package/dist/repo-mirror.js.map +1 -1
- package/dist/review-gate.d.ts +3 -3
- package/dist/review-gate.d.ts.map +1 -1
- package/dist/review-gate.js +11 -10
- package/dist/review-gate.js.map +1 -1
- package/dist/review-verdict.d.ts +2 -2
- package/dist/review-verdict.d.ts.map +1 -1
- package/dist/review-verdict.js +2 -2
- package/dist/review-verdict.js.map +1 -1
- package/dist/run.d.ts +2 -2
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +58 -23
- package/dist/run.js.map +1 -1
- package/dist/scan.d.ts +26 -17
- package/dist/scan.d.ts.map +1 -1
- package/dist/scan.js +29 -15
- package/dist/scan.js.map +1 -1
- package/dist/select-order.d.ts +1 -1
- package/dist/select-priority.d.ts +14 -14
- package/dist/select-priority.d.ts.map +1 -1
- package/dist/select-priority.js +5 -5
- package/dist/select-priority.js.map +1 -1
- package/dist/sidecar-apply.js +1 -1
- package/dist/sidecar-apply.js.map +1 -1
- package/dist/sidecar.d.ts +47 -12
- package/dist/sidecar.d.ts.map +1 -1
- package/dist/sidecar.js +84 -4
- package/dist/sidecar.js.map +1 -1
- package/dist/skills/answer-questions/SKILL.md +89 -0
- package/dist/skills/capture-signal/SKILL.md +52 -0
- package/dist/skills/convert-from-prd-to-spec/SKILL.md +90 -0
- package/dist/skills/drive-tasks/SKILL.md +218 -0
- package/dist/skills/from-idea/SKILL.md +83 -0
- package/dist/skills/merge-prs/SKILL.md +70 -0
- package/dist/skills/orchestrate/SKILL.md +101 -0
- package/dist/skills/promote/SKILL.md +35 -0
- package/dist/skills/review/SKILL.md +16 -0
- package/dist/skills/setup/SKILL.md +258 -0
- package/dist/skills/setup/protocol/ADR-FORMAT.md +47 -0
- package/dist/skills/setup/protocol/CLAIM-PROTOCOL.md +224 -0
- package/dist/skills/setup/protocol/REVIEW-PROTOCOL.md +122 -0
- package/dist/skills/setup/protocol/SURFACE-PROTOCOL.md +135 -0
- package/dist/skills/setup/protocol/TASKING-PROTOCOL.md +124 -0
- package/dist/skills/setup/protocol/WORK-CONTRACT.md +280 -0
- package/dist/skills/setup/protocol/spec-template.md +71 -0
- package/dist/skills/setup/protocol/task-template.md +65 -0
- package/dist/skills/surface-questions/SKILL.md +16 -0
- package/dist/skills/to-spec/SKILL.md +34 -0
- package/dist/skills/to-task/SKILL.md +19 -0
- package/dist/skills/triage-observations/SKILL.md +78 -0
- package/dist/skills/work/SKILL.md +51 -0
- package/dist/slug-namespace.d.ts +6 -6
- package/dist/slug-namespace.js +8 -8
- package/dist/slug-namespace.js.map +1 -1
- package/dist/spec-complete.d.ts.map +1 -1
- package/dist/spec-complete.js +4 -5
- package/dist/spec-complete.js.map +1 -1
- package/dist/start.d.ts +1 -1
- package/dist/start.d.ts.map +1 -1
- package/dist/start.js +54 -60
- package/dist/start.js.map +1 -1
- package/dist/status.d.ts +3 -3
- package/dist/status.js +4 -4
- package/dist/status.js.map +1 -1
- package/dist/surface-gate.d.ts +2 -2
- package/dist/surface-gate.d.ts.map +1 -1
- package/dist/surface-gate.js +10 -3
- package/dist/surface-gate.js.map +1 -1
- package/dist/surface-persist.d.ts +2 -2
- package/dist/surface-persist.d.ts.map +1 -1
- package/dist/surface-persist.js +1 -1
- package/dist/surface-persist.js.map +1 -1
- package/dist/tasker-review-loop.d.ts +11 -10
- package/dist/tasker-review-loop.d.ts.map +1 -1
- package/dist/tasker-review-loop.js +8 -8
- package/dist/tasker-review-loop.js.map +1 -1
- package/dist/tasking-eligibility.d.ts +21 -21
- package/dist/tasking-eligibility.d.ts.map +1 -1
- package/dist/tasking-eligibility.js +10 -10
- package/dist/tasking-lock.d.ts +10 -10
- package/dist/tasking-lock.d.ts.map +1 -1
- package/dist/tasking-lock.js +69 -49
- package/dist/tasking-lock.js.map +1 -1
- package/dist/tasking.d.ts +73 -39
- package/dist/tasking.d.ts.map +1 -1
- package/dist/tasking.js +309 -95
- package/dist/tasking.js.map +1 -1
- package/dist/triage-gate.d.ts +1 -1
- package/dist/triage-persist.d.ts +15 -11
- package/dist/triage-persist.d.ts.map +1 -1
- package/dist/triage-persist.js +48 -18
- package/dist/triage-persist.js.map +1 -1
- package/dist/vendor/incur/agents.d.ts +58 -0
- package/dist/vendor/incur/agents.d.ts.map +1 -0
- package/dist/vendor/incur/agents.js +343 -0
- package/dist/vendor/incur/agents.js.map +1 -0
- package/dist/verify-workflow-template.d.ts +1 -1
- package/dist/verify-workflow-template.js +3 -3
- package/dist/watch-session.d.ts +11 -3
- package/dist/watch-session.d.ts.map +1 -1
- package/dist/watch-session.js +94 -7
- package/dist/watch-session.js.map +1 -1
- package/dist/work-layout.d.ts +15 -9
- package/dist/work-layout.d.ts.map +1 -1
- package/dist/work-layout.js +14 -9
- package/dist/work-layout.js.map +1 -1
- package/dist/workspace.d.ts +2 -2
- package/package.json +2 -2
- package/src/advance-ci-template.ts +4 -4
- package/src/advance-classify.ts +5 -5
- package/src/advance-drivers.ts +26 -13
- package/src/advance-isolated.ts +3 -3
- package/src/advance-lifecycle-template.ts +98 -13
- package/src/advance-loop-driver.ts +3 -3
- package/src/advance-treeless-publish.ts +46 -1
- package/src/advance.ts +495 -115
- package/src/advancing-lock.ts +102 -7
- package/src/agent-launch.ts +37 -12
- package/src/agent-stop.ts +60 -2
- package/src/apply-decide.ts +38 -9
- package/src/apply-merge-action.ts +49 -11
- package/src/apply-persist.ts +236 -62
- package/src/apply-stuck-action.ts +260 -0
- package/src/brand.ts +14 -2
- package/src/buildable-body.ts +14 -14
- package/src/claim-cas.ts +4 -4
- package/src/cli-spinner.ts +1 -1
- package/src/cli.ts +472 -141
- package/src/close-job-template.ts +9 -9
- package/src/close-job.ts +26 -26
- package/src/complete.ts +121 -63
- package/src/concurrency.ts +1 -1
- package/src/config.ts +143 -49
- package/src/continue-branch.ts +23 -1
- package/src/cwd-section.ts +1 -1
- package/src/decision-engine.ts +57 -19
- package/src/do-autopick.ts +21 -10
- package/src/do-config.ts +7 -7
- package/src/do-remote-auto.ts +2 -2
- package/src/do.ts +558 -85
- package/src/drop-source.ts +2 -2
- package/src/env-config.ts +19 -11
- package/src/failure-cause.ts +30 -1
- package/src/format.ts +13 -33
- package/src/frontmatter.ts +55 -35
- package/src/gc.ts +172 -9
- package/src/github.ts +78 -0
- package/src/harness.ts +25 -0
- package/src/index.ts +10 -0
- package/src/install-ci-branch-protection.ts +283 -58
- package/src/install-ci-capabilities/advance-lifecycle.ts +1 -1
- package/src/install-ci-capabilities/close-job.ts +1 -1
- package/src/install-ci-capabilities/example-noop.ts +1 -1
- package/src/install-ci-capabilities/intake.ts +2 -2
- package/src/install-ci-capabilities/verify.ts +1 -1
- package/src/install-ci-core.ts +34 -7
- package/src/install-ci-github.ts +87 -1
- package/src/install-ci.ts +4 -4
- package/src/install-skills.ts +166 -0
- package/src/intake-event.ts +6 -6
- package/src/intake-marker.ts +3 -3
- package/src/intake-triage.ts +2 -2
- package/src/intake-trigger-template.ts +18 -18
- package/src/intake.ts +138 -103
- package/src/integration-core.ts +234 -100
- package/src/integrator.ts +22 -9
- package/src/isolation.ts +13 -4
- package/src/issue-provider.ts +4 -4
- package/src/item-lock.ts +505 -361
- package/src/item-path.ts +2 -2
- package/src/ledger-lint.ts +9 -9
- package/src/ledger-read.ts +81 -81
- package/src/ledger-write.ts +137 -152
- package/src/lifecycle-gather.ts +45 -22
- package/src/lifecycle-pools.ts +71 -13
- package/src/merge-question-surfacer.ts +32 -8
- package/src/migrate-stuck-locks.ts +451 -0
- package/src/mint-adr.ts +4 -4
- package/src/mirror-pool-scan.ts +5 -5
- package/src/needs-attention.ts +877 -104
- package/src/orphan-sidecar.ts +49 -8
- package/src/pi-harness.ts +82 -2
- package/src/placement.ts +8 -8
- package/src/prd-to-spec.ts +13 -5
- package/src/prompt.ts +20 -25
- package/src/readiness.ts +1 -1
- package/src/reap-branches.ts +38 -14
- package/src/recover-isolated.ts +18 -1
- package/src/repo-config.ts +66 -17
- package/src/repo-mirror.ts +23 -1
- package/src/review-gate.ts +12 -11
- package/src/review-verdict.ts +3 -3
- package/src/run.ts +69 -23
- package/src/scan.ts +36 -22
- package/src/select-order.ts +1 -1
- package/src/select-priority.ts +15 -15
- package/src/sidecar-apply.ts +1 -1
- package/src/sidecar.ts +141 -14
- package/src/slug-namespace.ts +10 -10
- package/src/spec-complete.ts +4 -5
- package/src/start.ts +57 -63
- package/src/status.ts +7 -7
- package/src/surface-gate.ts +12 -5
- package/src/surface-persist.ts +3 -3
- package/src/tasker-review-loop.ts +18 -17
- package/src/tasking-eligibility.ts +21 -21
- package/src/tasking-lock.ts +75 -60
- package/src/tasking.ts +381 -135
- package/src/triage-gate.ts +1 -1
- package/src/triage-persist.ts +71 -27
- package/src/vendor/incur/LICENSE +21 -0
- package/src/vendor/incur/README.md +19 -0
- package/src/vendor/incur/agents.ts +392 -0
- package/src/verify-workflow-template.ts +3 -3
- package/src/watch-session.ts +102 -7
- package/src/work-layout.ts +14 -9
- package/src/workspace.ts +2 -2
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type NewQuestion } from './sidecar.js';
|
|
1
2
|
import { type BackoffOptions, type Sleep } from './retry-backoff.js';
|
|
2
3
|
export interface RouteToNeedsAttentionOptions {
|
|
3
4
|
/** The working clone / job worktree the `work/<slug>` branch lives in. */
|
|
@@ -17,7 +18,7 @@ export interface RouteToNeedsAttentionOptions {
|
|
|
17
18
|
/**
|
|
18
19
|
* The work branch to push to the arbiter (the RECOVERABLE half — see the seam
|
|
19
20
|
* docstring). DEFAULT `work/<slug>`: the build-bounce branch the wip/move
|
|
20
|
-
* commits landed on. A tasking bounce passes its own branch (`work/
|
|
21
|
+
* commits landed on. A tasking bounce passes its own branch (`work/specs/
|
|
21
22
|
* ready-<slug>`). The supplied branch MUST be the one HEAD is on (the branch the
|
|
22
23
|
* wip/move commits landed on) — NEVER a default that differs from HEAD; a
|
|
23
24
|
* caller NOT checked out on the work branch (e.g. a temp branch off main) must
|
|
@@ -74,11 +75,12 @@ export interface RouteToNeedsAttentionResult {
|
|
|
74
75
|
/** When the branch push FAILED after retries, the last git error (for the report). */
|
|
75
76
|
pushError?: string;
|
|
76
77
|
/**
|
|
77
|
-
* When `moved`, the sha of the
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
78
|
+
* When `moved`, the sha of the `work/<slug>` tip after the RECOVERABLE-half
|
|
79
|
+
* save. Post lock-cutover this is the **wip** commit holding the aborted agent
|
|
80
|
+
* work (`git add -A`); there is no separate `git mv → needs-attention/`
|
|
81
|
+
* move-only commit anymore (that folder is retired). The OBSERVABLE stuck
|
|
82
|
+
* state rides on the per-item lock amend (`state: stuck` + reason), not on this
|
|
83
|
+
* commit.
|
|
82
84
|
*/
|
|
83
85
|
moveCommit?: string;
|
|
84
86
|
/** When NOT moved, why (e.g. the slug was not in-progress). */
|
|
@@ -88,8 +90,9 @@ export interface ReturnToBacklogOptions {
|
|
|
88
90
|
/** The working clone the `work/` tree lives in. */
|
|
89
91
|
cwd: string;
|
|
90
92
|
/**
|
|
91
|
-
* The slug of the stuck item to re-queue — recovered
|
|
92
|
-
*
|
|
93
|
+
* The slug of the stuck item to re-queue — recovered via its per-item lock on
|
|
94
|
+
* the arbiter (post lock-cutover the body never moves into a status folder; it
|
|
95
|
+
* rests in `backlog/` and stuck is the lock `state: stuck`).
|
|
93
96
|
*/
|
|
94
97
|
slug: string;
|
|
95
98
|
/** The arbiter remote to push the transition to. Optional (see above). */
|
|
@@ -109,6 +112,29 @@ export interface ReturnToBacklogOptions {
|
|
|
109
112
|
* path.
|
|
110
113
|
*/
|
|
111
114
|
reset?: boolean;
|
|
115
|
+
/**
|
|
116
|
+
* `requeue --reconcile` (the NON-DESTRUCTIVE recovery verb — the middle rung
|
|
117
|
+
* of the escalation ladder between the default keep+continue and the
|
|
118
|
+
* destructive `--reset`). When the item's per-item lock is held stuck AND the
|
|
119
|
+
* arbiter's `work/<slug>` branch EXISTS and is ahead of main, re-sync the
|
|
120
|
+
* mirror to the arbiter (a prune-fetch that clears the stale-ref residue that
|
|
121
|
+
* historically silently resurrected a supposedly-`--reset`-ed branch) and
|
|
122
|
+
* RETRY the rebase of the kept branch onto latest `<arbiter>/main` in a
|
|
123
|
+
* SCRATCH worktree (never touching the caller's tree, `--force-with-lease`
|
|
124
|
+
* only, NEVER a bare force). On a clean rebase, the reconciled tip is
|
|
125
|
+
* pushed back to the arbiter with a lease + the reconcile completes as a
|
|
126
|
+
* standard keep+continue requeue (lock released, branch preserved). On a
|
|
127
|
+
* genuine content conflict after the clean mirror re-sync, the lock is LEFT
|
|
128
|
+
* HELD (item stays stuck), the branch is LEFT UNTOUCHED on the arbiter
|
|
129
|
+
* (NEVER deleted), and the caller is told the retry happened + pointed at the
|
|
130
|
+
* deferred mirror-side resolve follow-on + `--reset` as the destructive last
|
|
131
|
+
* resort. If the branch is ABSENT (never pushed, or a prior `--reset` already
|
|
132
|
+
* deleted it), reconcile falls through to the default keep+continue path
|
|
133
|
+
* (which itself degrades gracefully to a fresh-claim move). Incompatible
|
|
134
|
+
* with `--reset` (destructive vs non-destructive are exclusive verbs on the
|
|
135
|
+
* same escalation).
|
|
136
|
+
*/
|
|
137
|
+
reconcile?: boolean;
|
|
112
138
|
/**
|
|
113
139
|
* `requeue -m "<note>"` (the handoff note): an optional human steer for the
|
|
114
140
|
* NEXT agent. APPENDED (never overwritten) as a dated `## Requeue YYYY-MM-DD`
|
|
@@ -130,7 +156,15 @@ export interface ReturnToBacklogResult {
|
|
|
130
156
|
commitMessage?: string;
|
|
131
157
|
/** True iff `--reset` deleted the remote `work/<slug>` branch on the arbiter. */
|
|
132
158
|
deletedRemoteBranch?: boolean;
|
|
133
|
-
/**
|
|
159
|
+
/**
|
|
160
|
+
* True iff `--reconcile` re-synced the mirror + rebased the kept branch onto
|
|
161
|
+
* latest `<arbiter>/main` and pushed the reconciled tip back to the arbiter
|
|
162
|
+
* (before the lock release). Absent on the default path / on `--reset` / on
|
|
163
|
+
* a reconcile that fell through (branch absent) — for those, the ordinary
|
|
164
|
+
* keep+continue path ran with no rebase.
|
|
165
|
+
*/
|
|
166
|
+
reconciled?: boolean;
|
|
167
|
+
/** When NOT moved, why (e.g. the slug held no recoverable per-item lock on the arbiter, or a failed --reset delete). */
|
|
134
168
|
reasonNotMoved?: string;
|
|
135
169
|
}
|
|
136
170
|
export interface SurfaceToNeedsAttentionOptions {
|
|
@@ -188,7 +222,7 @@ export interface SurfaceToNeedsAttentionResult {
|
|
|
188
222
|
* (an unreachable arbiter leaves the local branch standing — recovery
|
|
189
223
|
* degrades, never crashes the bounce; retried with bounded backoff on an
|
|
190
224
|
* outage), BRANCH-PARAMETERISED (default `work/<slug>`; an explicit `branch`
|
|
191
|
-
* overrides — the tasking bounce passes `work/
|
|
225
|
+
* overrides — the tasking bounce passes `work/specs/ready-<slug>`; `pushBranch: false`
|
|
192
226
|
* ⇒ push NOTHING), and EMPTINESS-GUARDED (a branch with no commits beyond
|
|
193
227
|
* main, or an absent branch, is skipped). The branch MUST be the one HEAD is
|
|
194
228
|
* on. The work-branch push is NOT a `main` write.
|
|
@@ -199,19 +233,77 @@ export interface SurfaceToNeedsAttentionResult {
|
|
|
199
233
|
* plumbing failures still throw (they are unexpected).
|
|
200
234
|
*/
|
|
201
235
|
export declare function routeToNeedsAttention(options: RouteToNeedsAttentionOptions): Promise<RouteToNeedsAttentionResult>;
|
|
236
|
+
/**
|
|
237
|
+
* Options the shared {@link deleteRemoteWorkBranchIfPresent} primitive consumes.
|
|
238
|
+
*/
|
|
239
|
+
export interface DeleteRemoteWorkBranchOptions {
|
|
240
|
+
/** Working clone whose remote `arbiter` points at the real arbiter. */
|
|
241
|
+
cwd: string;
|
|
242
|
+
/** The arbiter remote NAME in `cwd`. */
|
|
243
|
+
arbiter: string;
|
|
244
|
+
/** Bare slug (the branch is `work/task-<slug>`). */
|
|
245
|
+
slug: string;
|
|
246
|
+
/** Environment for child git processes. */
|
|
247
|
+
env?: NodeJS.ProcessEnv;
|
|
248
|
+
}
|
|
249
|
+
/** The three terminal states {@link deleteRemoteWorkBranchIfPresent} can report. */
|
|
250
|
+
export type DeleteRemoteWorkBranchStatus =
|
|
251
|
+
/** The push --delete succeeded; the arbiter branch is gone. */
|
|
252
|
+
'deleted'
|
|
253
|
+
/**
|
|
254
|
+
* The branch was already absent from the arbiter (`remote ref does not
|
|
255
|
+
* exist` / `unable to delete`). Local refs may still have been cleaned up.
|
|
256
|
+
* SEMANTICALLY equivalent to `deleted` for callers who only care that the
|
|
257
|
+
* branch is not on the arbiter afterwards — idempotent no-op.
|
|
258
|
+
*/
|
|
259
|
+
| 'already-gone'
|
|
260
|
+
/** The push --delete failed for a reason OTHER than already-gone; caller decides. */
|
|
261
|
+
| 'failed';
|
|
262
|
+
/** The outcome {@link deleteRemoteWorkBranchIfPresent} reports. */
|
|
263
|
+
export interface DeleteRemoteWorkBranchResult {
|
|
264
|
+
/** The `work/<type>-<slug>` branch ref name that was targeted. */
|
|
265
|
+
branch: string;
|
|
266
|
+
/** See {@link DeleteRemoteWorkBranchStatus}. */
|
|
267
|
+
status: DeleteRemoteWorkBranchStatus;
|
|
268
|
+
/** The stderr from the failed `push --delete` (`''` on success/already-gone). */
|
|
269
|
+
stderr: string;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Delete the remote `work/task-<slug>` branch on the arbiter using the SAME
|
|
273
|
+
* write-through ordering the `requeue --reset` recovery verb uses:
|
|
274
|
+
*
|
|
275
|
+
* 1. Delete the LOCAL tracking ref (`refs/remotes/<arbiter>/work/<...>`)
|
|
276
|
+
* — the ref the continue-detection path READS; if we skip this the
|
|
277
|
+
* staleness silently resurrects a supposedly-discarded branch (verified in
|
|
278
|
+
* `work/notes/observations/requeue-reset-does-not-prune-hub-mirror-stale-branch-ref.md`).
|
|
279
|
+
* 2. Delete any LOCAL head `work/<...>` (best-effort).
|
|
280
|
+
* 3. `git push <arbiter> --delete work/<...>` — the ARBITER delete, the
|
|
281
|
+
* source of truth. A `remote ref does not exist` / `unable to delete`
|
|
282
|
+
* stderr is TOLERATED as `already-gone` so the primitive is IDEMPOTENT
|
|
283
|
+
* and safely callable on an item with no work branch (an observation, or
|
|
284
|
+
* a task never built).
|
|
285
|
+
*
|
|
286
|
+
* Extracted from {@link returnToBacklog}'s `--reset` path so the apply-rung
|
|
287
|
+
* `kind: 'stuck'` answered `reset` verb (task
|
|
288
|
+
* `apply-resolve-reset-flag-discards-work-branch`) can dispatch through the
|
|
289
|
+
* SAME primitive without re-implementing branch deletion — the two callers
|
|
290
|
+
* MUST stay behaviourally identical (delete-before-move / delete-before-clear;
|
|
291
|
+
* local-first write-through; already-gone tolerance).
|
|
292
|
+
*/
|
|
293
|
+
export declare function deleteRemoteWorkBranchIfPresent(options: DeleteRemoteWorkBranchOptions): Promise<DeleteRemoteWorkBranchResult>;
|
|
202
294
|
export declare function returnToBacklog(options: ReturnToBacklogOptions): Promise<ReturnToBacklogResult>;
|
|
203
295
|
/**
|
|
204
|
-
* **Promote a STAGED task into the agent-eligible pool** (
|
|
296
|
+
* **Promote a STAGED task into the agent-eligible pool** (spec
|
|
205
297
|
* `staging-pool-position-gate-and-trust-model`, task
|
|
206
298
|
* `pre-backlog-staging-folder-and-promote-step-a`, governing ADR
|
|
207
299
|
* `placement-is-runner-deterministic-humanonly-is-agent-judgement`). Moves
|
|
208
|
-
* `work/
|
|
300
|
+
* `work/tasks/backlog/<slug>.md → work/tasks/ready/<slug>.md` as a durable `main`
|
|
209
301
|
* move, the same category as {@link returnToBacklog} (tree-less CAS via
|
|
210
302
|
* {@link runTreelessLedgerMove}). After this transition the task is in the
|
|
211
303
|
* pool and claimable.
|
|
212
304
|
*
|
|
213
305
|
* **RUNNER/human-owned.** There is no agent-facing path that performs this:
|
|
214
|
-
* the agent's tasking output lands STAGED in `work/
|
|
306
|
+
* the agent's tasking output lands STAGED in `work/tasks/backlog/` (the runner's
|
|
215
307
|
* deterministic placement decision), and only a runner/human invocation moves
|
|
216
308
|
* it into the pool. The agent does no git here, as everywhere.
|
|
217
309
|
*
|
|
@@ -219,7 +311,7 @@ export declare function returnToBacklog(options: ReturnToBacklogOptions): Promis
|
|
|
219
311
|
* lands; the sole strategy publishes to `<arbiter>/main`. Like
|
|
220
312
|
* {@link returnToBacklog} the tree-less CAS needs a ref to push to, so an
|
|
221
313
|
* `arbiter` is REQUIRED. NEVER throws for the expected
|
|
222
|
-
* "not in
|
|
314
|
+
* "not in tasks/backlog/" / contention-exhausted cases — it returns
|
|
223
315
|
* `{moved: false, reasonNotMoved}` so callers can branch cleanly.
|
|
224
316
|
*/
|
|
225
317
|
export interface PromoteFromPreBacklogOptions {
|
|
@@ -247,39 +339,39 @@ export interface PromoteFromPreBacklogResult {
|
|
|
247
339
|
moved: boolean;
|
|
248
340
|
/** When `moved`, the committed transition message. */
|
|
249
341
|
commitMessage?: string;
|
|
250
|
-
/** When NOT moved, why (no such
|
|
342
|
+
/** When NOT moved, why (no such staged item, already in the pool, contention). */
|
|
251
343
|
reasonNotMoved?: string;
|
|
252
344
|
}
|
|
253
345
|
export declare function promoteFromPreBacklog(options: PromoteFromPreBacklogOptions): Promise<PromoteFromPreBacklogResult>;
|
|
254
346
|
/**
|
|
255
|
-
* **Promote a STAGED
|
|
347
|
+
* **Promote a STAGED spec into the auto-task pool** (spec
|
|
256
348
|
* `staging-pool-position-gate-and-trust-model`, task
|
|
257
349
|
* `pre-prd-staging-pool-split-and-untrusted-prd-placement`, governing ADR
|
|
258
|
-
* `placement-is-runner-deterministic-humanonly-is-agent-judgement`). The
|
|
350
|
+
* `placement-is-runner-deterministic-humanonly-is-agent-judgement`). The spec
|
|
259
351
|
* twin of {@link promoteFromPreBacklog}: moves
|
|
260
|
-
* `work/
|
|
352
|
+
* `work/specs/proposed/<slug>.md → work/specs/ready/<slug>.md` as a durable `main` move
|
|
261
353
|
* (tree-less CAS via {@link runTreelessLedgerMove}). After this transition
|
|
262
|
-
* the
|
|
354
|
+
* the spec is in the auto-task POOL and eligible to be auto-tasked (subject
|
|
263
355
|
* to the existing `autoTask`/`humanOnly`/`needsAnswers`/`taskedAfter` gates,
|
|
264
356
|
* which are UNCHANGED — the staging/pool split changes only WHICH folder is
|
|
265
357
|
* the auto-task pool, not the gates).
|
|
266
358
|
*
|
|
267
359
|
* **RUNNER/human-owned.** There is no agent-facing path that performs this:
|
|
268
|
-
* `intake`'s `
|
|
360
|
+
* `intake`'s `spec` dispatch lands the spec STAGED in `work/specs/proposed/` (the
|
|
269
361
|
* runner's deterministic placement decision), and only a runner/human
|
|
270
362
|
* invocation moves it into the pool. The agent does no git here, as
|
|
271
363
|
* everywhere; this function is not reachable from any agent surface.
|
|
272
364
|
*
|
|
273
365
|
* Storage-agnostic + tree-less, exactly like {@link promoteFromPreBacklog}:
|
|
274
366
|
* cwd index/HEAD/working tree are never touched, an arbiter remote is
|
|
275
|
-
* REQUIRED, and "not in
|
|
367
|
+
* REQUIRED, and "not in specs/proposed/" / contention-exhausted cases are returned
|
|
276
368
|
* (NEVER thrown) via `{moved: false, reasonNotMoved}` so callers branch
|
|
277
369
|
* cleanly. Idempotent: re-running after the move LANDED is a no-op success.
|
|
278
370
|
*/
|
|
279
371
|
export interface PromoteFromPreSpecOptions {
|
|
280
372
|
/** The working clone the move is originated from (origin source only; never written). */
|
|
281
373
|
cwd: string;
|
|
282
|
-
/** The slug of the staged
|
|
374
|
+
/** The slug of the staged spec to promote into the pool. */
|
|
283
375
|
slug: string;
|
|
284
376
|
/** The arbiter remote the promotion is CAS-published to. REQUIRED. */
|
|
285
377
|
arbiter: string;
|
|
@@ -289,17 +381,17 @@ export interface PromoteFromPreSpecOptions {
|
|
|
289
381
|
note?: (message: string) => void;
|
|
290
382
|
}
|
|
291
383
|
export interface PromoteFromPreSpecResult {
|
|
292
|
-
/** True iff the staged
|
|
384
|
+
/** True iff the staged spec was moved into the pool + committed. */
|
|
293
385
|
moved: boolean;
|
|
294
386
|
/** When `moved`, the committed transition message. */
|
|
295
387
|
commitMessage?: string;
|
|
296
|
-
/** When NOT moved, why (no such
|
|
388
|
+
/** When NOT moved, why (no such specs/proposed item, already in specs/ready/, contention). */
|
|
297
389
|
reasonNotMoved?: string;
|
|
298
390
|
}
|
|
299
391
|
export declare function promoteFromPreSpec(options: PromoteFromPreSpecOptions): Promise<PromoteFromPreSpecResult>;
|
|
300
|
-
/** One staged item awaiting promotion (a task in `
|
|
392
|
+
/** One staged item awaiting promotion (a task in `tasks/backlog/` or a spec in `specs/proposed/`). */
|
|
301
393
|
export interface PromotableItem {
|
|
302
|
-
/** `'task'` (staged in `work/
|
|
394
|
+
/** `'task'` (staged in `work/tasks/backlog/`) or `'spec'` (staged in `work/specs/proposed/`). */
|
|
303
395
|
namespace: 'task' | 'spec';
|
|
304
396
|
/** The slug (filename minus `.md`). */
|
|
305
397
|
slug: string;
|
|
@@ -320,7 +412,7 @@ export interface ListPromotableResult {
|
|
|
320
412
|
}
|
|
321
413
|
/**
|
|
322
414
|
* LIST every staged item awaiting a runner/human promotion — the tasks in
|
|
323
|
-
* `work/
|
|
415
|
+
* `work/tasks/backlog/` and the prds in `work/specs/proposed/` on `<arbiter>/main` (the
|
|
324
416
|
* discovery half of the `promote` verb, so `promote` with no argument answers
|
|
325
417
|
* "what is staged waiting for me?"). It reads the ARBITER's truth (a fetch + a
|
|
326
418
|
* tree read), NOT the local working tree (which may be stale) — the same source
|
|
@@ -328,6 +420,191 @@ export interface ListPromotableResult {
|
|
|
328
420
|
* Read-only: it never fetches a checkout, never moves anything.
|
|
329
421
|
*/
|
|
330
422
|
export declare function listPromotable(options: ListPromotableOptions): Promise<ListPromotableResult>;
|
|
423
|
+
/**
|
|
424
|
+
* PR-1 ADDITIVE primitive (task `bounce-surfaces-stuck-sidecar-and-releases-lock`).
|
|
425
|
+
* The 2-file SIBLING of {@link prepareTreelessMoveCommit}: pure git plumbing
|
|
426
|
+
* (`hash-object` / scratch-index `update-index` / `write-tree` /
|
|
427
|
+
* `commit-tree`, NEVER touches the caller's index/HEAD/working tree) that in
|
|
428
|
+
* ONE commit off {@link base} both
|
|
429
|
+
*
|
|
430
|
+
* 1. writes or appends to the item's `work/questions/<type>-<slug>.md`
|
|
431
|
+
* sidecar (see {@link sidecarPathFor}) a `stuck`-kind entry carrying the
|
|
432
|
+
* bounce {@link reason} plus any agent-surfaced {@link questions}, and
|
|
433
|
+
* 2. sets `needsAnswers: true` on the item body at {@link itemPath} (via
|
|
434
|
+
* {@link setNeedsAnswersMarker}).
|
|
435
|
+
*
|
|
436
|
+
* The current sidecar (if any) and the current item body are read as BLOBS off
|
|
437
|
+
* `<arbiter>/main` (via {@link catBlob}) — no working tree required and no
|
|
438
|
+
* dependency on the cwd's `HEAD` matching `main`. That is what makes this the
|
|
439
|
+
* tree-less path's surface primitive: a `applyTreelessNeedsAttentionTransition`
|
|
440
|
+
* caller (`continue-push-failure` / rebase-conflict) has NO writable-`main`
|
|
441
|
+
* checkout, so `persistSurfacedQuestions` (working-tree bound) cannot be reused;
|
|
442
|
+
* the pure CONTENT builders (`newSidecar` / `appendQuestions` /
|
|
443
|
+
* `serialiseSidecar` / `setNeedsAnswersMarker`) ARE reused, only the commit
|
|
444
|
+
* mechanism differs (spec decision #7).
|
|
445
|
+
*
|
|
446
|
+
* Returns the throwaway ref + commit sha, exactly like {@link
|
|
447
|
+
* prepareTreelessMoveCommit}, so the SAME {@link runTreelessLedgerMove} CAS loop
|
|
448
|
+
* publishes the surface commit through the shared write seam. The
|
|
449
|
+
* surface-first / release-second ordering + `main`-authoritative crash-safety
|
|
450
|
+
* (spec decision #4) come FREE from routing through that loop — the caller wires
|
|
451
|
+
* the release into a `finally` AFTER a successful publish (see the harness
|
|
452
|
+
* {@link surfaceStuckToNeedsAttention}).
|
|
453
|
+
*
|
|
454
|
+
* DECISION — sidecar entry shape for a reason-only bounce (build-time, PR-1):
|
|
455
|
+
* every bounce always appends ONE engine-authored `stuck`-kind envelope entry
|
|
456
|
+
* whose `question` names the item and whose `context` is the {@link reason}
|
|
457
|
+
* prose, THEN any {@link questions} the agent surfaced. So a reason-only bounce
|
|
458
|
+
* (no agent questions) still surfaces exactly ONE entry a human can answer, and
|
|
459
|
+
* the agent's own questions (when present) are appended AFTER it, verbatim. The
|
|
460
|
+
* envelope entry is what turns a raw exit reason into a human-drainable
|
|
461
|
+
* question; the extra entries are the LLM prose the spec's decision #2 keeps
|
|
462
|
+
* untouched. Alternative considered — treating an empty `questions` array as a
|
|
463
|
+
* NO-OP surface — REJECTED because that is the spec's `stuck` retirement
|
|
464
|
+
* problem all over again (a bounced item with no on-`main` outcome).
|
|
465
|
+
* Alternative considered — dropping the envelope when agent questions are given
|
|
466
|
+
* — REJECTED because the reason is engine-authored ground truth; the agent's
|
|
467
|
+
* questions are advisory prose ABOVE it, not a replacement for it.
|
|
468
|
+
*
|
|
469
|
+
* PR-1 boundary: this primitive is EXERCISED BY TESTS ONLY; it is NOT yet
|
|
470
|
+
* called from any bounce seam. Wiring `applyNeedsAttentionTransition` /
|
|
471
|
+
* `applyTreelessNeedsAttentionTransition` to it — and migrating the existing
|
|
472
|
+
* `stuckLockOnArbiter(...).toBe(true)` assertions — is the follow-up PR-2 task
|
|
473
|
+
* `bounce-atomic-cutover-retire-stuck-lock`.
|
|
474
|
+
*/
|
|
475
|
+
export declare function prepareTreelessSurfaceCommit(params: {
|
|
476
|
+
/** The origin cwd whose object store the plumbing writes into (never a target). */
|
|
477
|
+
cwd: string;
|
|
478
|
+
/** The slug (used only to name the throwaway ref). */
|
|
479
|
+
slug: string;
|
|
480
|
+
/** The namespaced item identity (e.g. `task:foo`); drives the sidecar path. */
|
|
481
|
+
item: string;
|
|
482
|
+
/** The item body's on-`main` path (e.g. `work/tasks/ready/foo.md`). */
|
|
483
|
+
itemPath: string;
|
|
484
|
+
/** The base commit (`<arbiter>/main`) the surface commit parents on. */
|
|
485
|
+
base: string;
|
|
486
|
+
/** The bounce reason (envelope entry's context). */
|
|
487
|
+
reason: string;
|
|
488
|
+
/** Any agent-surfaced questions to append after the envelope. */
|
|
489
|
+
questions?: NewQuestion[];
|
|
490
|
+
/**
|
|
491
|
+
* OPTIONAL engine-authored envelope entry OVERRIDE. When provided, replaces
|
|
492
|
+
* the built-in generic `"<item> was bounced — how should we proceed?"`
|
|
493
|
+
* envelope with a caller-supplied one — the seam the empty-diff bounce path
|
|
494
|
+
* uses to guarantee a DISPOSE-DEFAULTED disposition question exists on the
|
|
495
|
+
* surfaced sidecar (spec `surface-stuck-as-questions-and-retire-stuck-lock-state`
|
|
496
|
+
* resolved decision #2, task
|
|
497
|
+
* `empty-diff-bounce-surfaces-dispose-defaulted-question`). The override still
|
|
498
|
+
* defaults its `kind` to `'stuck'` when unset. `reason` (envelope context)
|
|
499
|
+
* remains the caller-owned prose; the override lets the caller set the
|
|
500
|
+
* envelope's `question` + `default` so the human sees a one-glance
|
|
501
|
+
* dispose/cancel prompt instead of the generic "how should we proceed?"
|
|
502
|
+
* catch-all. When absent, the built-in envelope is used (the reason-only
|
|
503
|
+
* bounce shape).
|
|
504
|
+
*/
|
|
505
|
+
envelope?: NewQuestion;
|
|
506
|
+
/** The commit subject for the surface commit. */
|
|
507
|
+
commitMessage: string;
|
|
508
|
+
/** The throwaway ref namespace (`refs/dorfl/<refNamespace>/<slug>`). */
|
|
509
|
+
refNamespace: string;
|
|
510
|
+
env: NodeJS.ProcessEnv | undefined;
|
|
511
|
+
}): {
|
|
512
|
+
ref: string;
|
|
513
|
+
commit: string;
|
|
514
|
+
};
|
|
515
|
+
export interface SurfaceStuckToNeedsAttentionOptions {
|
|
516
|
+
/**
|
|
517
|
+
* The working clone the move is ORIGINATED from — purely the ORIGIN SOURCE
|
|
518
|
+
* (it resolves the arbiter remote + holds the object store the plumbing
|
|
519
|
+
* writes into), NEVER a write TARGET. Tree-less: the cwd index/HEAD/working
|
|
520
|
+
* tree are never touched.
|
|
521
|
+
*/
|
|
522
|
+
cwd: string;
|
|
523
|
+
/** The slug of the item to surface as a stuck question. */
|
|
524
|
+
slug: string;
|
|
525
|
+
/**
|
|
526
|
+
* The item body's on-`main` path (e.g. `work/tasks/ready/foo.md`). Provided
|
|
527
|
+
* by the caller (parity with `persistSurfacedQuestions`). PR-2a made this
|
|
528
|
+
* OPTIONAL: when absent the harness invokes {@link resolveBounceItemBodyPathOnMain}
|
|
529
|
+
* to PROBE `<arbiter>/main` in the D1 order for the item's namespace
|
|
530
|
+
* (task/spec/observation). A body-absent probe (item body never landed on
|
|
531
|
+
* `main` — e.g. a claim that lost/raced) is a CLEAN NO-OP surface that STILL
|
|
532
|
+
* RELEASES the lock: never throw, never leave a held lock, never drop the
|
|
533
|
+
* bounce silently to a dead end.
|
|
534
|
+
*/
|
|
535
|
+
itemPath?: string;
|
|
536
|
+
/** The namespaced item identity. Defaults to `task:${slug}`. */
|
|
537
|
+
item?: string;
|
|
538
|
+
/** Why the item is stuck (bounce reason — envelope entry's context). */
|
|
539
|
+
reason: string;
|
|
540
|
+
/** Any questions the agent surfaced (appended after the envelope). */
|
|
541
|
+
questions?: NewQuestion[];
|
|
542
|
+
/**
|
|
543
|
+
* OPTIONAL engine-authored envelope override, forwarded to
|
|
544
|
+
* {@link prepareTreelessSurfaceCommit}. The empty-diff bounce path uses this
|
|
545
|
+
* to guarantee the first surfaced entry is a DISPOSE-DEFAULTED disposition
|
|
546
|
+
* question (task `empty-diff-bounce-surfaces-dispose-defaulted-question`,
|
|
547
|
+
* spec resolved decision #2). Absent ⇒ the built-in generic
|
|
548
|
+
* "how should we proceed?" envelope (a reason-only bounce).
|
|
549
|
+
*/
|
|
550
|
+
envelope?: NewQuestion;
|
|
551
|
+
/** The arbiter remote the surface commit is CAS-published to. REQUIRED. */
|
|
552
|
+
arbiter: string;
|
|
553
|
+
env?: NodeJS.ProcessEnv;
|
|
554
|
+
note?: (message: string) => void;
|
|
555
|
+
}
|
|
556
|
+
export interface SurfaceStuckToNeedsAttentionResult {
|
|
557
|
+
/** True iff the surface commit landed on `<arbiter>/main`. */
|
|
558
|
+
surfaced: boolean;
|
|
559
|
+
/** True iff the per-item lock ref was released. On a body-absent probe
|
|
560
|
+
* (see {@link bodyAbsent}) the lock is STILL released — the bounce cannot
|
|
561
|
+
* silently strand a held lock over an item with no `main` body. */
|
|
562
|
+
released: boolean;
|
|
563
|
+
/** When NOT surfaced, why (missing item, contention exhausted, body-absent probe). */
|
|
564
|
+
reasonNotSurfaced?: string;
|
|
565
|
+
/** True iff the D1 probe found no body on `<arbiter>/main` for this item
|
|
566
|
+
* (task: `tasks/ready` then `tasks/backlog`; spec: `specs/ready` then
|
|
567
|
+
* `specs/proposed`; observation: `notes/observations`). In this case
|
|
568
|
+
* {@link surfaced} is false but {@link released} is true — the lock is
|
|
569
|
+
* always released to prevent a dead-end held lock. */
|
|
570
|
+
bodyAbsent?: boolean;
|
|
571
|
+
}
|
|
572
|
+
/**
|
|
573
|
+
* The PR-1 thin HARNESS around {@link prepareTreelessSurfaceCommit}: run it
|
|
574
|
+
* through the EXISTING {@link runTreelessLedgerMove} CAS loop, then release the
|
|
575
|
+
* per-item lock. Ordering is LOAD-BEARING and INHERITED from that harness —
|
|
576
|
+
* the surface commit lands on `<arbiter>/main` FIRST, and the lock release only
|
|
577
|
+
* fires on a successful publish. `main` is authoritative on crash recovery
|
|
578
|
+
* (spec decision #4).
|
|
579
|
+
*
|
|
580
|
+
* PR-1 boundary: this is EXERCISED BY TESTS ONLY. Wiring the seams to call it
|
|
581
|
+
* is the PR-2 task `bounce-atomic-cutover-retire-stuck-lock`.
|
|
582
|
+
*/
|
|
583
|
+
export declare function surfaceStuckToNeedsAttention(options: SurfaceStuckToNeedsAttentionOptions): Promise<SurfaceStuckToNeedsAttentionResult>;
|
|
584
|
+
/**
|
|
585
|
+
* The D1 body-path probe (PR-2a task `bounce-atomic-cutover-retire-stuck-lock`,
|
|
586
|
+
* spec `surface-stuck-as-questions-and-retire-stuck-lock-state`, decision D1):
|
|
587
|
+
* resolve the item's on-`main` body path by probing `<arbiter>/main` in a
|
|
588
|
+
* FIXED order per namespace:
|
|
589
|
+
* - task: `work/tasks/ready/<slug>.md` then `work/tasks/backlog/<slug>.md`.
|
|
590
|
+
* - spec: `work/specs/ready/<slug>.md` then `work/specs/proposed/<slug>.md`.
|
|
591
|
+
* - observation: `work/notes/observations/<slug>.md`.
|
|
592
|
+
*
|
|
593
|
+
* Returns the first candidate that EXISTS on `<arbiter>/main`, or `undefined`
|
|
594
|
+
* when no candidate exists (a bounce for an item whose body never landed on
|
|
595
|
+
* `main`). The caller MUST handle `undefined` by STILL releasing the lock —
|
|
596
|
+
* never leave a held lock over a body-absent item.
|
|
597
|
+
*
|
|
598
|
+
* The probe fetches `<arbiter>/main` with an EXPLICIT refspec (the
|
|
599
|
+
* `runTreelessLedgerMove` pattern) so a job-worktree with a narrower default
|
|
600
|
+
* fetch refspec still resolves `<arbiter>/main` reliably.
|
|
601
|
+
*/
|
|
602
|
+
export declare function resolveBounceItemBodyPathOnMain(params: {
|
|
603
|
+
cwd: string;
|
|
604
|
+
item: string;
|
|
605
|
+
arbiter: string;
|
|
606
|
+
env?: NodeJS.ProcessEnv;
|
|
607
|
+
}): Promise<string | undefined>;
|
|
331
608
|
/**
|
|
332
609
|
* Extract the prose written under the `## Needs attention` heading from an item
|
|
333
610
|
* body. Returns the first non-empty line(s) of the block as a single line
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"needs-attention.d.ts","sourceRoot":"","sources":["../src/needs-attention.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"needs-attention.d.ts","sourceRoot":"","sources":["../src/needs-attention.ts"],"names":[],"mappings":"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"}
|