dorfl 0.14.2 → 0.15.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 +17 -16
- package/dist/advance-ci-template.d.ts.map +1 -1
- package/dist/advance-ci-template.js +42 -53
- package/dist/advance-ci-template.js.map +1 -1
- package/dist/advance-drivers.d.ts +8 -0
- package/dist/advance-drivers.d.ts.map +1 -1
- package/dist/advance-drivers.js +28 -4
- package/dist/advance-drivers.js.map +1 -1
- package/dist/advance-isolated.d.ts.map +1 -1
- package/dist/advance-isolated.js +3 -2
- package/dist/advance-isolated.js.map +1 -1
- package/dist/advance-lifecycle-template.d.ts +41 -40
- package/dist/advance-lifecycle-template.d.ts.map +1 -1
- package/dist/advance-lifecycle-template.js +309 -489
- package/dist/advance-lifecycle-template.js.map +1 -1
- package/dist/advance-loop-driver.d.ts.map +1 -1
- package/dist/advance-loop-driver.js +3 -2
- package/dist/advance-loop-driver.js.map +1 -1
- package/dist/advance-treeless-publish.d.ts +31 -0
- package/dist/advance-treeless-publish.d.ts.map +1 -1
- package/dist/advance-treeless-publish.js +40 -0
- package/dist/advance-treeless-publish.js.map +1 -1
- package/dist/advance.d.ts +63 -3
- package/dist/advance.d.ts.map +1 -1
- package/dist/advance.js +80 -12
- package/dist/advance.js.map +1 -1
- package/dist/advancing-lock.d.ts +9 -0
- package/dist/advancing-lock.d.ts.map +1 -1
- package/dist/advancing-lock.js +21 -1
- package/dist/advancing-lock.js.map +1 -1
- package/dist/agent-env.d.ts +61 -0
- package/dist/agent-env.d.ts.map +1 -0
- package/dist/agent-env.js +144 -0
- package/dist/agent-env.js.map +1 -0
- package/dist/agent-stop.d.ts +35 -0
- package/dist/agent-stop.d.ts.map +1 -1
- package/dist/agent-stop.js +62 -0
- package/dist/agent-stop.js.map +1 -1
- package/dist/apply-merge-action.d.ts +76 -34
- package/dist/apply-merge-action.d.ts.map +1 -1
- package/dist/apply-merge-action.js +339 -129
- package/dist/apply-merge-action.js.map +1 -1
- package/dist/apply-stuck-action.js +2 -2
- package/dist/apply-stuck-action.js.map +1 -1
- package/dist/ci-agent-result.d.ts +151 -0
- package/dist/ci-agent-result.d.ts.map +1 -0
- package/dist/ci-agent-result.js +314 -0
- package/dist/ci-agent-result.js.map +1 -0
- package/dist/ci-handoff-apply.d.ts +162 -0
- package/dist/ci-handoff-apply.d.ts.map +1 -0
- package/dist/ci-handoff-apply.js +497 -0
- package/dist/ci-handoff-apply.js.map +1 -0
- package/dist/ci-handoff-format.d.ts +369 -0
- package/dist/ci-handoff-format.d.ts.map +1 -0
- package/dist/ci-handoff-format.js +646 -0
- package/dist/ci-handoff-format.js.map +1 -0
- package/dist/ci-handoff-lfs.d.ts +146 -0
- package/dist/ci-handoff-lfs.d.ts.map +1 -0
- package/dist/ci-handoff-lfs.js +397 -0
- package/dist/ci-handoff-lfs.js.map +1 -0
- package/dist/ci-handoff.d.ts +99 -0
- package/dist/ci-handoff.d.ts.map +1 -0
- package/dist/ci-handoff.js +277 -0
- package/dist/ci-handoff.js.map +1 -0
- package/dist/ci-lock-outputs.d.ts +93 -0
- package/dist/ci-lock-outputs.d.ts.map +1 -0
- package/dist/ci-lock-outputs.js +223 -0
- package/dist/ci-lock-outputs.js.map +1 -0
- package/dist/ci-phase-build.d.ts +178 -0
- package/dist/ci-phase-build.d.ts.map +1 -0
- package/dist/ci-phase-build.js +989 -0
- package/dist/ci-phase-build.js.map +1 -0
- package/dist/ci-phase-driver.d.ts +247 -0
- package/dist/ci-phase-driver.d.ts.map +1 -0
- package/dist/ci-phase-driver.js +370 -0
- package/dist/ci-phase-driver.js.map +1 -0
- package/dist/ci-phase-intake.d.ts +172 -0
- package/dist/ci-phase-intake.d.ts.map +1 -0
- package/dist/ci-phase-intake.js +555 -0
- package/dist/ci-phase-intake.js.map +1 -0
- package/dist/ci-phase-tasking.d.ts +205 -0
- package/dist/ci-phase-tasking.d.ts.map +1 -0
- package/dist/ci-phase-tasking.js +906 -0
- package/dist/ci-phase-tasking.js.map +1 -0
- package/dist/ci-phase-treeless.d.ts +224 -0
- package/dist/ci-phase-treeless.d.ts.map +1 -0
- package/dist/ci-phase-treeless.js +1482 -0
- package/dist/ci-phase-treeless.js.map +1 -0
- package/dist/ci-read-token.d.ts +47 -0
- package/dist/ci-read-token.d.ts.map +1 -0
- package/dist/ci-read-token.js +80 -0
- package/dist/ci-read-token.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +447 -22
- package/dist/cli.js.map +1 -1
- package/dist/close-job-template.d.ts +10 -1
- package/dist/close-job-template.d.ts.map +1 -1
- package/dist/close-job-template.js +46 -14
- package/dist/close-job-template.js.map +1 -1
- package/dist/close-job.d.ts +20 -5
- package/dist/close-job.d.ts.map +1 -1
- package/dist/close-job.js +65 -12
- package/dist/close-job.js.map +1 -1
- package/dist/complete.d.ts.map +1 -1
- package/dist/complete.js +20 -1
- package/dist/complete.js.map +1 -1
- package/dist/config.d.ts +41 -44
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -4
- package/dist/config.js.map +1 -1
- package/dist/continue-branch.d.ts +63 -15
- package/dist/continue-branch.d.ts.map +1 -1
- package/dist/continue-branch.js +75 -8
- package/dist/continue-branch.js.map +1 -1
- package/dist/crashed-run-save.d.ts +73 -0
- package/dist/crashed-run-save.d.ts.map +1 -0
- package/dist/crashed-run-save.js +86 -0
- package/dist/crashed-run-save.js.map +1 -0
- package/dist/cwd-section.d.ts.map +1 -1
- package/dist/cwd-section.js +10 -2
- package/dist/cwd-section.js.map +1 -1
- package/dist/decision-engine.d.ts +10 -0
- package/dist/decision-engine.d.ts.map +1 -1
- package/dist/decision-engine.js.map +1 -1
- package/dist/do-config.d.ts +2 -24
- package/dist/do-config.d.ts.map +1 -1
- package/dist/do-config.js +1 -33
- package/dist/do-config.js.map +1 -1
- package/dist/do.d.ts +149 -1
- package/dist/do.d.ts.map +1 -1
- package/dist/do.js +115 -25
- package/dist/do.js.map +1 -1
- package/dist/dorfl-item-template.d.ts +98 -0
- package/dist/dorfl-item-template.d.ts.map +1 -0
- package/dist/dorfl-item-template.js +504 -0
- package/dist/dorfl-item-template.js.map +1 -0
- package/dist/env-config.d.ts.map +1 -1
- package/dist/env-config.js +7 -5
- package/dist/env-config.js.map +1 -1
- package/dist/frontmatter.d.ts +52 -0
- package/dist/frontmatter.d.ts.map +1 -1
- package/dist/frontmatter.js +136 -2
- package/dist/frontmatter.js.map +1 -1
- package/dist/gc.d.ts +13 -0
- package/dist/gc.d.ts.map +1 -1
- package/dist/gc.js +16 -2
- package/dist/gc.js.map +1 -1
- package/dist/git.d.ts +18 -1
- package/dist/git.d.ts.map +1 -1
- package/dist/git.js +70 -5
- package/dist/git.js.map +1 -1
- package/dist/harness.d.ts +44 -5
- package/dist/harness.d.ts.map +1 -1
- package/dist/harness.js +24 -1
- package/dist/harness.js.map +1 -1
- package/dist/index.d.ts +11 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/dist/install-ci-action-pins.d.ts +123 -0
- package/dist/install-ci-action-pins.d.ts.map +1 -0
- package/dist/install-ci-action-pins.js +190 -0
- package/dist/install-ci-action-pins.js.map +1 -0
- package/dist/install-ci-actions-pr-creation.d.ts +70 -0
- package/dist/install-ci-actions-pr-creation.d.ts.map +1 -0
- package/dist/install-ci-actions-pr-creation.js +106 -0
- package/dist/install-ci-actions-pr-creation.js.map +1 -0
- package/dist/install-ci-capabilities/dorfl-item.d.ts +12 -0
- package/dist/install-ci-capabilities/dorfl-item.d.ts.map +1 -0
- package/dist/install-ci-capabilities/dorfl-item.js +26 -0
- package/dist/install-ci-capabilities/dorfl-item.js.map +1 -0
- package/dist/install-ci-core.d.ts +155 -37
- package/dist/install-ci-core.d.ts.map +1 -1
- package/dist/install-ci-core.js +304 -200
- package/dist/install-ci-core.js.map +1 -1
- package/dist/install-ci-github.d.ts +47 -2
- package/dist/install-ci-github.d.ts.map +1 -1
- package/dist/install-ci-github.js +113 -1
- package/dist/install-ci-github.js.map +1 -1
- package/dist/install-ci.d.ts +25 -6
- package/dist/install-ci.d.ts.map +1 -1
- package/dist/install-ci.js +72 -36
- package/dist/install-ci.js.map +1 -1
- package/dist/intake-marker.d.ts +6 -1
- package/dist/intake-marker.d.ts.map +1 -1
- package/dist/intake-marker.js.map +1 -1
- package/dist/intake-triage.d.ts.map +1 -1
- package/dist/intake-triage.js +6 -2
- package/dist/intake-triage.js.map +1 -1
- package/dist/intake-trigger-template.d.ts +31 -25
- package/dist/intake-trigger-template.d.ts.map +1 -1
- package/dist/intake-trigger-template.js +107 -292
- package/dist/intake-trigger-template.js.map +1 -1
- package/dist/intake.d.ts +186 -4
- package/dist/intake.d.ts.map +1 -1
- package/dist/intake.js +533 -416
- package/dist/intake.js.map +1 -1
- package/dist/integration-core.d.ts +154 -1
- package/dist/integration-core.d.ts.map +1 -1
- package/dist/integration-core.js +759 -486
- package/dist/integration-core.js.map +1 -1
- package/dist/integrator.d.ts +12 -0
- package/dist/integrator.d.ts.map +1 -1
- package/dist/integrator.js +21 -0
- package/dist/integrator.js.map +1 -1
- package/dist/isolation.d.ts +12 -2
- package/dist/isolation.d.ts.map +1 -1
- package/dist/isolation.js +19 -8
- package/dist/isolation.js.map +1 -1
- package/dist/item-lock.d.ts +93 -11
- package/dist/item-lock.d.ts.map +1 -1
- package/dist/item-lock.js +233 -65
- package/dist/item-lock.js.map +1 -1
- package/dist/land-question-residue.d.ts +58 -0
- package/dist/land-question-residue.d.ts.map +1 -0
- package/dist/land-question-residue.js +95 -0
- package/dist/land-question-residue.js.map +1 -0
- package/dist/lifecycle-gather.d.ts +16 -0
- package/dist/lifecycle-gather.d.ts.map +1 -1
- package/dist/lifecycle-gather.js +54 -6
- package/dist/lifecycle-gather.js.map +1 -1
- package/dist/merge-answer.d.ts +41 -0
- package/dist/merge-answer.d.ts.map +1 -0
- package/dist/merge-answer.js +60 -0
- package/dist/merge-answer.js.map +1 -0
- package/dist/merge-question-surfacer.d.ts +105 -30
- package/dist/merge-question-surfacer.d.ts.map +1 -1
- package/dist/merge-question-surfacer.js +202 -91
- package/dist/merge-question-surfacer.js.map +1 -1
- package/dist/merge-question-tick.d.ts +64 -0
- package/dist/merge-question-tick.d.ts.map +1 -0
- package/dist/merge-question-tick.js +96 -0
- package/dist/merge-question-tick.js.map +1 -0
- package/dist/mint-adr.d.ts.map +1 -1
- package/dist/mint-adr.js +20 -2
- package/dist/mint-adr.js.map +1 -1
- package/dist/needs-attention.d.ts +72 -2
- package/dist/needs-attention.d.ts.map +1 -1
- package/dist/needs-attention.js +275 -38
- package/dist/needs-attention.js.map +1 -1
- package/dist/phase-recorder.d.ts +168 -0
- package/dist/phase-recorder.d.ts.map +1 -0
- package/dist/phase-recorder.js +218 -0
- package/dist/phase-recorder.js.map +1 -0
- package/dist/phase.d.ts +94 -0
- package/dist/phase.d.ts.map +1 -0
- package/dist/phase.js +148 -0
- package/dist/phase.js.map +1 -0
- package/dist/pi-harness.d.ts.map +1 -1
- package/dist/pi-harness.js +19 -6
- package/dist/pi-harness.js.map +1 -1
- package/dist/prepare.d.ts.map +1 -1
- package/dist/prepare.js +4 -0
- package/dist/prepare.js.map +1 -1
- package/dist/prompt.d.ts +4 -0
- package/dist/prompt.d.ts.map +1 -1
- package/dist/prompt.js +48 -1
- package/dist/prompt.js.map +1 -1
- package/dist/protocol/CLAIM-PROTOCOL.md +3 -1
- package/dist/protocol/WORK-CONTRACT.md +1 -1
- package/dist/reap-branches.d.ts +48 -0
- package/dist/reap-branches.d.ts.map +1 -1
- package/dist/reap-branches.js +64 -0
- package/dist/reap-branches.js.map +1 -1
- package/dist/ref-write.d.ts +198 -0
- package/dist/ref-write.d.ts.map +1 -0
- package/dist/ref-write.js +79 -0
- package/dist/ref-write.js.map +1 -0
- package/dist/repo-config.js +8 -8
- package/dist/repo-config.js.map +1 -1
- package/dist/repo-mirror.d.ts +36 -0
- package/dist/repo-mirror.d.ts.map +1 -1
- package/dist/repo-mirror.js +91 -1
- package/dist/repo-mirror.js.map +1 -1
- package/dist/review-verdict.d.ts +1 -1
- package/dist/review-verdict.js +1 -1
- package/dist/run.d.ts +7 -1
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +28 -4
- package/dist/run.js.map +1 -1
- package/dist/scan.d.ts +19 -1
- package/dist/scan.d.ts.map +1 -1
- package/dist/scan.js +21 -8
- package/dist/scan.js.map +1 -1
- package/dist/sidecar.d.ts +14 -0
- package/dist/sidecar.d.ts.map +1 -1
- package/dist/sidecar.js +21 -0
- package/dist/sidecar.js.map +1 -1
- package/dist/single-job-warning.d.ts +63 -0
- package/dist/single-job-warning.d.ts.map +1 -0
- package/dist/single-job-warning.js +110 -0
- package/dist/single-job-warning.js.map +1 -0
- package/dist/skills/setup/protocol/CLAIM-PROTOCOL.md +3 -1
- package/dist/skills/setup/protocol/WORK-CONTRACT.md +1 -1
- package/dist/spec-complete.d.ts +13 -6
- package/dist/spec-complete.d.ts.map +1 -1
- package/dist/spec-complete.js +23 -11
- package/dist/spec-complete.js.map +1 -1
- package/dist/start.d.ts.map +1 -1
- package/dist/start.js +47 -14
- package/dist/start.js.map +1 -1
- package/dist/status.d.ts +12 -0
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +11 -3
- package/dist/status.js.map +1 -1
- package/dist/tasking.d.ts +246 -1
- package/dist/tasking.d.ts.map +1 -1
- package/dist/tasking.js +452 -358
- package/dist/tasking.js.map +1 -1
- package/dist/triage-persist.d.ts.map +1 -1
- package/dist/triage-persist.js +21 -2
- package/dist/triage-persist.js.map +1 -1
- package/dist/verify-workflow-template.d.ts.map +1 -1
- package/dist/verify-workflow-template.js +8 -4
- package/dist/verify-workflow-template.js.map +1 -1
- package/dist/verify.d.ts.map +1 -1
- package/dist/verify.js +4 -0
- package/dist/verify.js.map +1 -1
- package/dist/watch-session.d.ts +42 -13
- package/dist/watch-session.d.ts.map +1 -1
- package/dist/watch-session.js +52 -23
- package/dist/watch-session.js.map +1 -1
- package/dist/work-layout.d.ts +10 -4
- package/dist/work-layout.d.ts.map +1 -1
- package/dist/work-layout.js +11 -3
- package/dist/work-layout.js.map +1 -1
- package/dist/workspace.d.ts +65 -4
- package/dist/workspace.d.ts.map +1 -1
- package/dist/workspace.js +159 -11
- package/dist/workspace.js.map +1 -1
- package/package.json +1 -1
- package/src/advance-ci-template.ts +80 -81
- package/src/advance-drivers.ts +45 -6
- package/src/advance-isolated.ts +3 -5
- package/src/advance-lifecycle-template.ts +375 -538
- package/src/advance-loop-driver.ts +3 -5
- package/src/advance-treeless-publish.ts +61 -0
- package/src/advance.ts +145 -15
- package/src/advancing-lock.ts +36 -1
- package/src/agent-env.ts +174 -0
- package/src/agent-stop.ts +81 -0
- package/src/apply-merge-action.ts +401 -154
- package/src/apply-stuck-action.ts +2 -2
- package/src/ci-agent-result.ts +421 -0
- package/src/ci-handoff-apply.ts +737 -0
- package/src/ci-handoff-format.ts +926 -0
- package/src/ci-handoff-lfs.ts +519 -0
- package/src/ci-handoff.ts +392 -0
- package/src/ci-lock-outputs.ts +273 -0
- package/src/ci-phase-build.ts +1328 -0
- package/src/ci-phase-driver.ts +548 -0
- package/src/ci-phase-intake.ts +861 -0
- package/src/ci-phase-tasking.ts +1255 -0
- package/src/ci-phase-treeless.ts +2028 -0
- package/src/ci-read-token.ts +90 -0
- package/src/cli.ts +591 -29
- package/src/close-job-template.ts +52 -15
- package/src/close-job.ts +77 -12
- package/src/complete.ts +19 -1
- package/src/config.ts +43 -48
- package/src/continue-branch.ts +121 -16
- package/src/crashed-run-save.ts +162 -0
- package/src/cwd-section.ts +10 -0
- package/src/decision-engine.ts +10 -0
- package/src/do-config.ts +2 -57
- package/src/do.ts +170 -28
- package/src/dorfl-item-template.ts +556 -0
- package/src/env-config.ts +7 -5
- package/src/frontmatter.ts +155 -2
- package/src/gc.ts +27 -2
- package/src/git.ts +83 -5
- package/src/harness.ts +58 -6
- package/src/index.ts +50 -1
- package/src/install-ci-action-pins.ts +209 -0
- package/src/install-ci-actions-pr-creation.ts +186 -0
- package/src/install-ci-capabilities/dorfl-item.ts +33 -0
- package/src/install-ci-core.ts +388 -233
- package/src/install-ci-github.ts +149 -1
- package/src/install-ci.ts +83 -37
- package/src/intake-marker.ts +6 -1
- package/src/intake-triage.ts +7 -3
- package/src/intake-trigger-template.ts +126 -327
- package/src/intake.ts +725 -544
- package/src/integration-core.ts +975 -523
- package/src/integrator.ts +28 -0
- package/src/isolation.ts +29 -10
- package/src/item-lock.ts +308 -92
- package/src/land-question-residue.ts +122 -0
- package/src/lifecycle-gather.ts +82 -10
- package/src/merge-answer.ts +82 -0
- package/src/merge-question-surfacer.ts +320 -112
- package/src/merge-question-tick.ts +182 -0
- package/src/mint-adr.ts +28 -2
- package/src/needs-attention.ts +350 -42
- package/src/phase-recorder.ts +350 -0
- package/src/phase.ts +177 -0
- package/src/pi-harness.ts +25 -5
- package/src/prepare.ts +4 -0
- package/src/prompt.ts +68 -1
- package/src/reap-branches.ts +107 -0
- package/src/ref-write.ts +324 -0
- package/src/repo-config.ts +8 -8
- package/src/repo-mirror.ts +107 -1
- package/src/review-verdict.ts +1 -1
- package/src/run.ts +47 -6
- package/src/scan.ts +37 -7
- package/src/sidecar.ts +36 -0
- package/src/single-job-warning.ts +135 -0
- package/src/spec-complete.ts +36 -14
- package/src/start.ts +55 -16
- package/src/status.ts +29 -3
- package/src/tasking.ts +593 -378
- package/src/triage-persist.ts +24 -2
- package/src/verify-workflow-template.ts +8 -4
- package/src/verify.ts +4 -0
- package/src/watch-session.ts +86 -28
- package/src/work-layout.ts +11 -3
- package/src/workspace.ts +210 -14
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { isEntryAnswered, } from './sidecar.js';
|
|
2
|
+
/**
|
|
3
|
+
* Parse the human's plain free-text answer into the deterministic
|
|
4
|
+
* {@link MergeActionVerb}. The merge-question surfacer renders
|
|
5
|
+
* `merge | hold | drop` in the entry's `default` as a human-readable hint, so
|
|
6
|
+
* the human typically types one of those words verbatim. We accept any text
|
|
7
|
+
* whose first whole word (case-insensitive) is one of `merge` / `hold` / `drop`
|
|
8
|
+
* — this is the same machine-parseable choice shape the surfacer's applied
|
|
9
|
+
* answer q1 documents ("a DETERMINISTIC CHOICE shape … the human picks and the
|
|
10
|
+
* system parses unambiguously").
|
|
11
|
+
*
|
|
12
|
+
* Returns `undefined` on ANYTHING else (an empty answer, a typo, a long
|
|
13
|
+
* narrative without one of the three words at the start) so the caller can
|
|
14
|
+
* route the ambiguity HONESTLY — never default-to-merge on a malformed answer,
|
|
15
|
+
* which would invent a land the human did not authorise.
|
|
16
|
+
*/
|
|
17
|
+
export function parseMergeAnswer(text) {
|
|
18
|
+
const trimmed = text.trim().toLowerCase();
|
|
19
|
+
if (trimmed === '')
|
|
20
|
+
return undefined;
|
|
21
|
+
// The first whole alphabetic word; trailing punctuation (a comma, em-dash,
|
|
22
|
+
// period) and any following commentary are tolerated. We deliberately do
|
|
23
|
+
// NOT consume hyphens / apostrophes — the three verbs are plain ASCII
|
|
24
|
+
// words, and over-tolerating typo-shapes would silently invent a verb the
|
|
25
|
+
// human did not pick.
|
|
26
|
+
const match = /^([a-z]+)/.exec(trimmed);
|
|
27
|
+
if (match === null)
|
|
28
|
+
return undefined;
|
|
29
|
+
const word = match[1];
|
|
30
|
+
if (word === 'merge' || word === 'hold' || word === 'drop') {
|
|
31
|
+
return word;
|
|
32
|
+
}
|
|
33
|
+
return undefined;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* `detectAnsweredMergeAction` (`apply-merge-action.ts`) over an already-parsed sidecar model (the
|
|
37
|
+
* selection path reads sidecars itself, in place and from a mirror ref). The
|
|
38
|
+
* same ordering rules apply.
|
|
39
|
+
*/
|
|
40
|
+
export function answeredMergeActionIn(model) {
|
|
41
|
+
// (1) Unanswered `kind: merge` follow-up ⇒ re-paused; the apply must NOT fire.
|
|
42
|
+
for (const entry of model.entries) {
|
|
43
|
+
if (entry.kind === 'merge' && !isEntryAnswered(entry))
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
// (2) LATEST answered `kind: merge` entry — a fresh follow-up beats a stale one.
|
|
47
|
+
for (let i = model.entries.length - 1; i >= 0; i--) {
|
|
48
|
+
const entry = model.entries[i];
|
|
49
|
+
if (entry.kind !== 'merge')
|
|
50
|
+
continue;
|
|
51
|
+
if (!isEntryAnswered(entry))
|
|
52
|
+
continue;
|
|
53
|
+
const verb = parseMergeAnswer(entry.answer);
|
|
54
|
+
if (verb !== undefined) {
|
|
55
|
+
return { verb, entry };
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=merge-answer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-answer.js","sourceRoot":"","sources":["../src/merge-answer.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,eAAe,GAGf,MAAM,cAAc,CAAC;AAsBtB;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC1C,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IACrC,2EAA2E;IAC3E,yEAAyE;IACzE,sEAAsE;IACtE,0EAA0E;IAC1E,sBAAsB;IACtB,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACrC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QAC5D,OAAO,IAAI,CAAC;IACb,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACpC,KAAmB;IAEnB,+EAA+E;IAC/E,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QACnC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;IACzE,CAAC;IACD,iFAAiF;IACjF,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;YAAE,SAAS;QACrC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;YAAE,SAAS;QACtC,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC;QACtB,CAAC;IACF,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type SurfacePersistOptions, type SurfacePersistResult } from './surface-persist.js';
|
|
2
|
+
import type { LockEntry } from './item-lock.js';
|
|
2
3
|
/**
|
|
3
4
|
* The **MERGE-QUESTION SURFACER** (spec `land-time-reverify-and-parallel-merge-ceiling`,
|
|
4
5
|
* task `merge-question-surfacer`, US #14) — the SECOND, STATE-sourced surfacer
|
|
@@ -21,28 +22,41 @@ import { type SurfacePersistOptions, type SurfacePersistResult } from './surface
|
|
|
21
22
|
*
|
|
22
23
|
* Layered like the spec asks: the FLOOR (git-alone reachability) is the
|
|
23
24
|
* authoritative enumerator — it works against a bare `--bare` arbiter with
|
|
24
|
-
* `NoneProvider`. The CEILING (`gh pr list`
|
|
25
|
-
*
|
|
26
|
-
*
|
|
25
|
+
* `NoneProvider`. The CEILING (`gh pr list`) runs when a GitHub host is
|
|
26
|
+
* configured, and there it FILTERS (task
|
|
27
|
+
* `wire-merge-questions-into-the-advance-tick`, decision 1): an open PR already
|
|
28
|
+
* IS the human's land decision (merge or close it), so a branch with an open PR
|
|
29
|
+
* gets no merge question. Merge questions are for branches with no PR: the
|
|
30
|
+
* git-alone floor, or a branch whose PR was closed unmerged.
|
|
27
31
|
*
|
|
28
|
-
*
|
|
32
|
+
* Which branches it asks about (decisions 1, 4 and 6 of that task), in order:
|
|
29
33
|
*
|
|
30
|
-
* -
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
* -
|
|
34
|
-
*
|
|
34
|
+
* - the task body rests in `tasks/ready/` or `tasks/backlog/` (a body in
|
|
35
|
+
* `done/` or `cancelled/` is terminal, which also covers a squash-merged PR
|
|
36
|
+
* whose branch was not deleted);
|
|
37
|
+
* - the sidecar carries no merge question yet (pending or answered);
|
|
38
|
+
* - no open PR (GitHub only; an unreadable PR list asks nothing);
|
|
39
|
+
* - the item's lock is not held, or is held WITH the `propose-pr` marker (a
|
|
40
|
+
* finished propose build keeps it until its work lands); a lock held without
|
|
41
|
+
* it is a live build, including the rebuild of a bounced task's kept branch;
|
|
42
|
+
* - the branch tip carries the done-move (`work/tasks/done/<slug>.md`), the
|
|
43
|
+
* state the answered-merge land (the committed-recovery tail) lands. A
|
|
44
|
+
* bounced build's kept work stops before its done-move, so it is not asked
|
|
45
|
+
* about.
|
|
46
|
+
*
|
|
47
|
+
* WIRED by `merge-question-tick.ts` (the laptop bare `advance` and the CI
|
|
48
|
+
* `surface-merge-questions` job), behind the `mergeQuestions: off | ask` gate.
|
|
35
49
|
*
|
|
36
50
|
* Tests inject the two seams ({@link listUnmergedWorkBranches},
|
|
37
51
|
* {@link listOpenPullRequests}) so they NEVER hit real GitHub — the floor uses
|
|
38
52
|
* `git for-each-ref` against a throwaway repo, the ceiling is the injected
|
|
39
53
|
* `gh pr list` stub.
|
|
40
54
|
*/
|
|
41
|
-
/** A `work
|
|
55
|
+
/** A task build branch (`work/task-<slug>`) whose tip is not reachable from `<base>`. */
|
|
42
56
|
export interface UnmergedWorkBranch {
|
|
43
|
-
/** The
|
|
57
|
+
/** The branch name as it is on the arbiter, e.g. `work/task-foo`. */
|
|
44
58
|
ref: string;
|
|
45
|
-
/** The bare slug
|
|
59
|
+
/** The bare task slug, parsed by `parseWorkBranchRef`, e.g. `foo`. */
|
|
46
60
|
slug: string;
|
|
47
61
|
/** Branch tip SHA (advisory). */
|
|
48
62
|
sha?: string;
|
|
@@ -58,6 +72,12 @@ export interface MergeQuestionPullRequest {
|
|
|
58
72
|
export interface ListUnmergedInput {
|
|
59
73
|
cwd: string;
|
|
60
74
|
base: string;
|
|
75
|
+
/**
|
|
76
|
+
* The arbiter's remote NAME in `cwd` (default `origin`). In a clone the
|
|
77
|
+
* arbiter's branches are read from `refs/remotes/<arbiter>/`; ignored in the
|
|
78
|
+
* hub mirror, whose local heads ARE the arbiter's branches.
|
|
79
|
+
*/
|
|
80
|
+
arbiter?: string;
|
|
61
81
|
env?: NodeJS.ProcessEnv;
|
|
62
82
|
}
|
|
63
83
|
export interface ListPullRequestsInput {
|
|
@@ -78,6 +98,12 @@ export interface SurfaceMergeQuestionsOptions {
|
|
|
78
98
|
arbiterUrl?: string;
|
|
79
99
|
/** The base branch reachability is checked against. Default `main`. */
|
|
80
100
|
base?: string;
|
|
101
|
+
/**
|
|
102
|
+
* The arbiter's remote NAME in `cwd` (default `origin`), whose
|
|
103
|
+
* remote-tracking refs the FLOOR reads in a clone. See
|
|
104
|
+
* {@link listUnmergedWorkBranchesViaGit}.
|
|
105
|
+
*/
|
|
106
|
+
arbiter?: string;
|
|
81
107
|
/** The `gh` CLI binary to invoke for the ceiling. Default `gh` on PATH. */
|
|
82
108
|
ghBin?: string;
|
|
83
109
|
/** Environment for spawned git/gh processes. */
|
|
@@ -98,6 +124,12 @@ export interface SurfaceMergeQuestionsOptions {
|
|
|
98
124
|
listOpenPullRequests?: (input: ListPullRequestsInput) => Map<string, MergeQuestionPullRequest>;
|
|
99
125
|
/** Seam: persist a single merge-question. Defaults to {@link persistSurfacedQuestions}. */
|
|
100
126
|
persist?: (options: SurfacePersistOptions) => SurfacePersistResult;
|
|
127
|
+
/**
|
|
128
|
+
* The per-item locks held on the arbiter (`listItemLockEntries`), read by the
|
|
129
|
+
* caller. A task whose lock is held WITHOUT the `propose-pr` marker is a live
|
|
130
|
+
* build and is skipped (`lock-held`). Omitted ⇒ no lock is held.
|
|
131
|
+
*/
|
|
132
|
+
locks?: readonly LockEntry[];
|
|
101
133
|
}
|
|
102
134
|
/** One surfaced merge-question (a row in the result). */
|
|
103
135
|
export interface MergeQuestionSurfaced {
|
|
@@ -105,14 +137,12 @@ export interface MergeQuestionSurfaced {
|
|
|
105
137
|
item: string;
|
|
106
138
|
/** The bare slug. */
|
|
107
139
|
slug: string;
|
|
108
|
-
/** The `work
|
|
140
|
+
/** The `work/task-<slug>` branch the question is about. */
|
|
109
141
|
ref: string;
|
|
110
142
|
/** The sidecar path the persist touched (repo-relative). */
|
|
111
143
|
sidecarPath: string;
|
|
112
144
|
/** The persist commit (`undefined` if the persist was a no-op). */
|
|
113
145
|
commit?: string;
|
|
114
|
-
/** PR url when a GitHub ceiling matched the branch (advisory). */
|
|
115
|
-
prUrl?: string;
|
|
116
146
|
}
|
|
117
147
|
/**
|
|
118
148
|
* One branch the surfacer considered but did not surface (with the reason).
|
|
@@ -127,7 +157,19 @@ export interface MergeQuestionSkipped {
|
|
|
127
157
|
ref: string;
|
|
128
158
|
slug: string;
|
|
129
159
|
/** PROVISIONAL vocabulary — see {@link MergeQuestionSkipped}. */
|
|
130
|
-
reason: 'no-item-body'
|
|
160
|
+
reason: 'no-item-body'
|
|
161
|
+
/** The body rests in `tasks/done/` or `tasks/cancelled/`. */
|
|
162
|
+
| 'terminal' | 'already-pending-merge-question'
|
|
163
|
+
/** An answered merge question awaits its apply. */
|
|
164
|
+
| 'merge-question-answered'
|
|
165
|
+
/** The branch has an open PR (GitHub): the PR is the land decision. */
|
|
166
|
+
| 'open-pr'
|
|
167
|
+
/** GitHub, but the open PRs could not be listed: nothing is asked. */
|
|
168
|
+
| 'pr-state-unknown'
|
|
169
|
+
/** The item's lock is held without the `propose-pr` marker (a live build). */
|
|
170
|
+
| 'lock-held'
|
|
171
|
+
/** The branch tip does not carry the task's done-move. */
|
|
172
|
+
| 'no-done-move' | 'persist-nothing';
|
|
131
173
|
}
|
|
132
174
|
/** Aggregate result of one surfacer pass. */
|
|
133
175
|
export interface SurfaceMergeQuestionsResult {
|
|
@@ -137,6 +179,14 @@ export interface SurfaceMergeQuestionsResult {
|
|
|
137
179
|
surfaced: MergeQuestionSurfaced[];
|
|
138
180
|
/** The branches that were considered but skipped, with the reason. */
|
|
139
181
|
skipped: MergeQuestionSkipped[];
|
|
182
|
+
/**
|
|
183
|
+
* Set when the arbiter is GitHub-shaped but its open PRs could not be listed
|
|
184
|
+
* (`gh pr list` failed: no credential, no `gh`, an outage). The pass then
|
|
185
|
+
* asks about no branch (`pr-state-unknown`); a caller reports it as a FAILED
|
|
186
|
+
* pass rather than a quiet one (the `surface-merge-questions` command exits
|
|
187
|
+
* non-zero). Absent when the listing succeeded or was not needed.
|
|
188
|
+
*/
|
|
189
|
+
prListingError?: string;
|
|
140
190
|
}
|
|
141
191
|
/** Raised for fatal usage errors (a missing repo, etc.). */
|
|
142
192
|
export declare class MergeQuestionSurfacerError extends Error {
|
|
@@ -146,9 +196,10 @@ export declare class MergeQuestionSurfacerError extends Error {
|
|
|
146
196
|
* Surface merge-questions for every unmerged `work/*` branch in `cwd`.
|
|
147
197
|
*
|
|
148
198
|
* The FLOOR (git reachability) is authoritative; the CEILING (`gh pr list`)
|
|
149
|
-
* runs only when {@link isGitHubArbiterUrl} accepts the arbiter URL
|
|
150
|
-
*
|
|
151
|
-
*
|
|
199
|
+
* runs only when {@link isGitHubArbiterUrl} accepts the arbiter URL. On GitHub
|
|
200
|
+
* it is load-bearing (an open PR is the land decision), so a failed listing
|
|
201
|
+
* asks about NO branch and is reported on
|
|
202
|
+
* {@link SurfaceMergeQuestionsResult.prListingError}.
|
|
152
203
|
*
|
|
153
204
|
* Idempotency: a branch whose sidecar ALREADY carries a PENDING `kind: merge`
|
|
154
205
|
* entry is SKIPPED (with `already-pending-merge-question`). A branch with no
|
|
@@ -159,22 +210,46 @@ export declare class MergeQuestionSurfacerError extends Error {
|
|
|
159
210
|
*/
|
|
160
211
|
export declare function surfaceMergeQuestions(options: SurfaceMergeQuestionsOptions): SurfaceMergeQuestionsResult;
|
|
161
212
|
/**
|
|
162
|
-
* Production FLOOR: enumerate
|
|
163
|
-
*
|
|
164
|
-
*
|
|
165
|
-
*
|
|
213
|
+
* Production FLOOR: enumerate the ARBITER's task build branches
|
|
214
|
+
* (`work/task-<slug>`, the {@link workBranchRef} form) whose tip is NOT
|
|
215
|
+
* reachable from the arbiter's `<base>`.
|
|
216
|
+
*
|
|
217
|
+
* WHERE the arbiter's refs live depends on the repo `cwd` is:
|
|
218
|
+
*
|
|
219
|
+
* - A **clone** (non-bare, with an `<arbiter>` remote): the arbiter's branches
|
|
220
|
+
* are the remote-tracking refs `refs/remotes/<arbiter>/work/*`, checked
|
|
221
|
+
* against `refs/remotes/<arbiter>/<base>`. Local `refs/heads/work/*` in a
|
|
222
|
+
* clone are this machine's own (possibly unpushed or stale) heads, not the
|
|
223
|
+
* arbiter's, so they are NOT listed.
|
|
224
|
+
* - The **hub mirror** (a `--bare` clone, or a worktree added from one, where
|
|
225
|
+
* `core.bare` reads `true`) or a repo with no `<arbiter>` remote (the repo IS
|
|
226
|
+
* the arbiter's ref store): the local heads `refs/heads/work/*`, checked
|
|
227
|
+
* against the local `<base>`.
|
|
228
|
+
*
|
|
229
|
+
* The item slug comes from {@link parseWorkBranchRef}, never from slicing the
|
|
230
|
+
* ref. Only the plain BUILD branch of a task (`namespace: 'task'`, no producer)
|
|
231
|
+
* is listed: an intake branch (`work/intake-*`) creates an item rather than
|
|
232
|
+
* building one, a spec branch (`work/spec-*`) carries tasking, and an
|
|
233
|
+
* un-namespaced `work/<slug>` is a pre-cutover ref `parseWorkBranchRef` refuses
|
|
234
|
+
* (the clean-break stance). None of those is what a `kind: merge` answer lands.
|
|
235
|
+
*
|
|
236
|
+
* Purely local: it reads refs already in `cwd` (no fetch, no `ls-remote`); the
|
|
237
|
+
* caller refreshes them. A repo whose `<base>` does not resolve (e.g. a fresh
|
|
238
|
+
* init before the first commit, or a clone that never fetched `<base>`) yields
|
|
239
|
+
* the empty list: without a base, "unmerged" is meaningless and every branch
|
|
240
|
+
* would over-surface.
|
|
166
241
|
*/
|
|
167
242
|
export declare function listUnmergedWorkBranchesViaGit(input: ListUnmergedInput): UnmergedWorkBranch[];
|
|
168
243
|
/**
|
|
169
244
|
* Production CEILING: shell `gh pr list --state open --json …` and index the
|
|
170
|
-
* results by their `headRefName
|
|
171
|
-
*
|
|
172
|
-
*
|
|
245
|
+
* results by their `headRefName`, so the surfacer can skip a branch with an
|
|
246
|
+
* open PR. A non-zero `gh` (or output that is not a JSON array) THROWS: the
|
|
247
|
+
* surfacer then asks about no branch this pass, rather than asking about
|
|
248
|
+
* branches whose PR it cannot see.
|
|
173
249
|
*
|
|
174
|
-
*
|
|
175
|
-
*
|
|
176
|
-
*
|
|
177
|
-
* of >200 open PRs degrades to floor-only output, never corrupts it.
|
|
250
|
+
* The `--state open`, `--base <base>`, and `--limit 200` arguments are
|
|
251
|
+
* DELIBERATE ceilings: a PR targeting a non-`main` base (e.g. a stacked PR) or
|
|
252
|
+
* the case of >200 open PRs is not seen, so its branch may still be asked about.
|
|
178
253
|
*/
|
|
179
254
|
export declare function listOpenPullRequestsViaGh(input: ListPullRequestsInput): Map<string, MergeQuestionPullRequest>;
|
|
180
255
|
//# sourceMappingURL=merge-question-surfacer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge-question-surfacer.d.ts","sourceRoot":"","sources":["../src/merge-question-surfacer.ts"],"names":[],"mappings":"AAUA,OAAO,EAEN,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,MAAM,sBAAsB,CAAC;AAG9B
|
|
1
|
+
{"version":3,"file":"merge-question-surfacer.d.ts","sourceRoot":"","sources":["../src/merge-question-surfacer.ts"],"names":[],"mappings":"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"}
|