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
|
@@ -1,42 +1,71 @@
|
|
|
1
|
-
import { existsSync, readFileSync } from 'node:fs';
|
|
1
|
+
import { existsSync, readFileSync, statSync } from 'node:fs';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
|
-
import {
|
|
3
|
+
import { parseSidecar, resolveSidecarIdentity, sidecarPathFor, } from './sidecar.js';
|
|
4
4
|
import { run as runProc } from './git.js';
|
|
5
|
-
import { createJob } from './workspace.js';
|
|
5
|
+
import { createJob, withCheckoutCommitIdentity } from './workspace.js';
|
|
6
|
+
import { continueRebaseSentence } from './continue-branch.js';
|
|
7
|
+
import { ensureMirrorMain } from './repo-mirror.js';
|
|
6
8
|
import { performIntegration, } from './integration-core.js';
|
|
9
|
+
import { changedFileBlobs, lfsObjectPath, localLfsObjectsDir, scanLfsPointers, } from './ci-handoff-lfs.js';
|
|
10
|
+
import { commitAbortedWork } from './needs-attention.js';
|
|
11
|
+
import { createPhaseRecorder, runAgentPhase } from './phase-recorder.js';
|
|
7
12
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* `merge
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* system parses unambiguously").
|
|
13
|
+
* The **answered MERGE-QUESTION ACTION DISPATCH** (spec
|
|
14
|
+
* `land-time-reverify-and-parallel-merge-ceiling`, task
|
|
15
|
+
* `apply-rung-merge-disposition`; Stories #15, #16) — the deterministic,
|
|
16
|
+
* answer-driven RUNNER-ACTION layer that turns an answered
|
|
17
|
+
* `kind: merge` sidecar entry into a LAND through the EXISTING
|
|
18
|
+
* `integration-core.ts` land primitive (rebase → re-verify on the rebased tip →
|
|
19
|
+
* advance).
|
|
16
20
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
+
* This is a SIBLING of the agentic `decide()` content-decision in
|
|
22
|
+
* `apply-decide.ts`, NOT a route through it: a merge-acceptance has no
|
|
23
|
+
* judgement content (the human's plain `merge | hold | drop` answer IS the
|
|
24
|
+
* decision; the apply-time fresh-worktree re-verify on the rebased tip is the
|
|
25
|
+
* real correctness gate). Per the SPEC's resolved mechanism, routing this
|
|
26
|
+
* through an LLM only adds cost and non-determinism, so the apply rung
|
|
27
|
+
* KIND-CHECKS the sidecar BEFORE calling the agentic decider: a sidecar entry
|
|
28
|
+
* carrying `kind: merge` (the typed dispatch field from `sidecar-kind-field`,
|
|
29
|
+
* stamped by `merge-question-surfacer`) dispatches HERE deterministically;
|
|
30
|
+
* content kinds (observation / triage / spec) keep going through `decide()` as
|
|
31
|
+
* today.
|
|
32
|
+
*
|
|
33
|
+
* The KEYING is the question identity + the human's plain answer:
|
|
34
|
+
*
|
|
35
|
+
* - `answer ≈ merge` → invoke the LAND primitive (see {@link performMergeLand})
|
|
36
|
+
* with `committedRecovery: true` + `freshWorktreeGate: true`. The unmerged
|
|
37
|
+
* `work/<slug>` is checked out via the EXISTING `workspace.ts` per-job
|
|
38
|
+
* worktree seam ({@link createJob} off the hub mirror), NOT a bespoke
|
|
39
|
+
* worktree/clone; `performIntegration` then re-verifies the REBASED tip and
|
|
40
|
+
* REFUSES on red (routes to needs-attention through its own shared seam),
|
|
41
|
+
* so `main` never receives a tree that fails `verify`.
|
|
42
|
+
* - `answer ≈ hold` → SKIP the land; the apply rung still records the answer
|
|
43
|
+
* in the item body via the normal apply path (the work branch stays
|
|
44
|
+
* unmerged; the next surface pass may re-emit a question).
|
|
45
|
+
* - `answer ≈ drop` → SKIP the land; the apply rung still records the answer
|
|
46
|
+
* in the item body via the normal apply path. (Cancellation of the work
|
|
47
|
+
* branch itself is out of this task's scope — the question is recorded as
|
|
48
|
+
* "drop" and the human / a later surfacer handles the artifact.)
|
|
49
|
+
*
|
|
50
|
+
* The STALE-APPROVAL POLICY (SPEC OQ6, applied answer q1): default is the cheap
|
|
51
|
+
* "HONOUR the prior approval + land on a green re-verify" path; opt-in
|
|
52
|
+
* `strictMergeApproval` (resolved per-repo via the gate-family precedence chain
|
|
53
|
+
* by the sibling task `strict-merge-approval-gate`, default OFF) RE-SURFACES
|
|
54
|
+
* the merge-question instead of landing when `main`'s code moved since the
|
|
55
|
+
* question was asked (its recorded `askedAtMain`; see `approvedBaseMoved`).
|
|
56
|
+
* The RED-re-verify refusal is unchanged in both modes.
|
|
57
|
+
*
|
|
58
|
+
* House-style boundary: this module is the DETERMINISTIC DISPATCH LAYER. It
|
|
59
|
+
* does NOT re-implement rebase / verify / integrate (it drives the EXISTING
|
|
60
|
+
* `performIntegration` with `committedRecovery: true` + `freshWorktreeGate:
|
|
61
|
+
* true`, which {@link createJob} cuts the worktree for), and it does NOT
|
|
62
|
+
* improvise a worktree or clone (it uses the same `createJob` seam the build /
|
|
63
|
+
* recovery callers use). Tests inject the {@link MergeActionHandler} seam so
|
|
64
|
+
* they assert on EXTERNAL behaviour (what lands on `main`, what routes to
|
|
65
|
+
* needs-attention, that `verify` ran on the rebased tip).
|
|
21
66
|
*/
|
|
22
|
-
export
|
|
23
|
-
|
|
24
|
-
if (trimmed === '')
|
|
25
|
-
return undefined;
|
|
26
|
-
// The first whole alphabetic word; trailing punctuation (a comma, em-dash,
|
|
27
|
-
// period) and any following commentary are tolerated. We deliberately do
|
|
28
|
-
// NOT consume hyphens / apostrophes — the three verbs are plain ASCII
|
|
29
|
-
// words, and over-tolerating typo-shapes would silently invent a verb the
|
|
30
|
-
// human did not pick.
|
|
31
|
-
const match = /^([a-z]+)/.exec(trimmed);
|
|
32
|
-
if (match === null)
|
|
33
|
-
return undefined;
|
|
34
|
-
const word = match[1];
|
|
35
|
-
if (word === 'merge' || word === 'hold' || word === 'drop') {
|
|
36
|
-
return word;
|
|
37
|
-
}
|
|
38
|
-
return undefined;
|
|
39
|
-
}
|
|
67
|
+
export { answeredMergeActionIn, parseMergeAnswer, } from './merge-answer.js';
|
|
68
|
+
import { answeredMergeActionIn, } from './merge-answer.js';
|
|
40
69
|
/**
|
|
41
70
|
* Detect the `kind: merge` action verb that should drive the next apply run.
|
|
42
71
|
* The apply rung's pre-decider kind-check; returns `undefined` when there is
|
|
@@ -72,24 +101,7 @@ export function detectAnsweredMergeAction(cwd, item) {
|
|
|
72
101
|
catch {
|
|
73
102
|
return undefined;
|
|
74
103
|
}
|
|
75
|
-
|
|
76
|
-
for (const entry of model.entries) {
|
|
77
|
-
if (entry.kind === 'merge' && !isEntryAnswered(entry))
|
|
78
|
-
return undefined;
|
|
79
|
-
}
|
|
80
|
-
// (2) LATEST answered `kind: merge` entry — a fresh follow-up beats a stale one.
|
|
81
|
-
for (let i = model.entries.length - 1; i >= 0; i--) {
|
|
82
|
-
const entry = model.entries[i];
|
|
83
|
-
if (entry.kind !== 'merge')
|
|
84
|
-
continue;
|
|
85
|
-
if (!isEntryAnswered(entry))
|
|
86
|
-
continue;
|
|
87
|
-
const verb = parseMergeAnswer(entry.answer);
|
|
88
|
-
if (verb !== undefined) {
|
|
89
|
-
return { verb, entry };
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
return undefined;
|
|
104
|
+
return answeredMergeActionIn(model);
|
|
93
105
|
}
|
|
94
106
|
/**
|
|
95
107
|
* Resolve the arbiter URL the land worktree mirrors from. Prefers the
|
|
@@ -111,42 +123,60 @@ function resolveArbiterUrl(input) {
|
|
|
111
123
|
return url === '' ? undefined : url;
|
|
112
124
|
}
|
|
113
125
|
/**
|
|
114
|
-
* The `strictMergeApproval` re-stale check (SPEC OQ6 opt-in
|
|
115
|
-
*
|
|
116
|
-
*
|
|
117
|
-
* approvals when the base changes"
|
|
126
|
+
* The `strictMergeApproval` re-stale check (SPEC OQ6 opt-in; task
|
|
127
|
+
* `strict-merge-approval-restale-check-runs-before-the-continue-rebase`): did
|
|
128
|
+
* `main` move since the answered merge question was ASKED? The git-alone
|
|
129
|
+
* analogue of GitHub's "dismiss stale approvals when the base changes".
|
|
130
|
+
*
|
|
131
|
+
* ONE implementation for the laptop dispatcher ({@link performMergeAction}) and
|
|
132
|
+
* the CI agent half ({@link prepareMergeLand}), and both call it BEFORE
|
|
133
|
+
* {@link createJob}, whose continue rebase would otherwise make the kept branch
|
|
134
|
+
* a descendant of the current `main` and hide the move (the bug this replaced).
|
|
135
|
+
*
|
|
136
|
+
* The approved base is the `askedAtMain` the answered entry carries (stamped by
|
|
137
|
+
* the merge-question surfacer, and by the re-surface path with the `main` the
|
|
138
|
+
* follow-up is asked against, so a re-answer while `main` stays put lands and
|
|
139
|
+
* the CI split cannot livelock). It is compared with the arbiter's current
|
|
140
|
+
* `main`, freshly fetched into the hub mirror {@link createJob} then reuses.
|
|
118
141
|
*
|
|
119
|
-
*
|
|
120
|
-
*
|
|
121
|
-
* compare
|
|
122
|
-
* the branch is a strict descendant — the merge-base did NOT move — and the
|
|
123
|
-
* cheap default applies (HONOUR + land on green re-verify). If the merge-base
|
|
124
|
-
* is NOT `<origin/main>`, `main` advanced past the branch's divergence point
|
|
125
|
-
* since the branch was last rebased — the merge-base MOVED — and the strict
|
|
126
|
-
* mode re-surfaces.
|
|
142
|
+
* "Moved" means the tree OUTSIDE `work/` differs: the question, its answer and
|
|
143
|
+
* every other ledger write are commits on `main` under `work/`, so a plain sha
|
|
144
|
+
* compare would re-stale every answer (the answer commit itself moves `main`).
|
|
127
145
|
*
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
-
* red re-verify
|
|
131
|
-
* not block a clean answer-then-land
|
|
146
|
+
* Never stale (the cheap default applies) when the entry carries no
|
|
147
|
+
* `askedAtMain` (a sidecar written before it existed) or on any plumbing
|
|
148
|
+
* failure: the red re-verify on the rebased tip stays the load-bearing safety,
|
|
149
|
+
* and a transient git failure must not block a clean answer-then-land.
|
|
132
150
|
*/
|
|
133
|
-
function
|
|
134
|
-
const
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
151
|
+
function approvedBaseMoved(url, input) {
|
|
152
|
+
const asked = input.action.entry.askedAtMain;
|
|
153
|
+
if (asked === undefined)
|
|
154
|
+
return { stale: false };
|
|
155
|
+
let mirror;
|
|
156
|
+
try {
|
|
157
|
+
mirror = ensureMirrorMain({
|
|
158
|
+
url,
|
|
159
|
+
workspacesDir: input.workspacesDir,
|
|
160
|
+
env: input.env,
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
catch {
|
|
164
|
+
return { stale: false };
|
|
165
|
+
}
|
|
166
|
+
const main = mirror.mainSha;
|
|
167
|
+
if (main === asked)
|
|
168
|
+
return { stale: false, main };
|
|
169
|
+
const diff = runProc('git', ['diff-tree', '--quiet', '-r', asked, main, '--', ':(exclude)work'], mirror.path, { env: input.env });
|
|
170
|
+
// 0: no change outside `work/`; 1: changed; anything else: plumbing failure.
|
|
171
|
+
return { stale: diff.status === 1, main };
|
|
172
|
+
}
|
|
173
|
+
/** The re-stale message both halves report. */
|
|
174
|
+
function restaleMessage(input, main) {
|
|
175
|
+
const asked = input.action.entry.askedAtMain ?? '(unknown)';
|
|
176
|
+
return (`merge-question for ${input.item} answered MERGE, but ` +
|
|
177
|
+
`strictMergeApproval is ON and \`main\` moved since the question was ` +
|
|
178
|
+
`asked (asked at ${asked}, now ${main}): RE-SURFACING the ` +
|
|
179
|
+
`merge-question (no land; the human re-confirms against the new base).`);
|
|
150
180
|
}
|
|
151
181
|
/**
|
|
152
182
|
* The PRODUCTION dispatcher: an answered `kind: merge` entry's verb drives one
|
|
@@ -214,6 +244,21 @@ export async function performMergeAction(input) {
|
|
|
214
244
|
`stays surfaced.`,
|
|
215
245
|
};
|
|
216
246
|
}
|
|
247
|
+
// STRICT re-stale check (OQ6 opt-in), BEFORE the checkout's continue rebase
|
|
248
|
+
// (which would push the rebased branch, and hide the move): when ON and
|
|
249
|
+
// `main` moved since the question was asked, RE-SURFACE the merge-question
|
|
250
|
+
// (the apply rung folds this into a re-pause) instead of landing. Default
|
|
251
|
+
// OFF ⇒ skipped; the cheap "green re-verify is enough" path runs.
|
|
252
|
+
if (input.strictMergeApproval === true) {
|
|
253
|
+
const check = approvedBaseMoved(url, input);
|
|
254
|
+
if (check.stale && check.main !== undefined) {
|
|
255
|
+
return {
|
|
256
|
+
outcome: 'restale',
|
|
257
|
+
message: restaleMessage(input, check.main),
|
|
258
|
+
main: check.main,
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
}
|
|
217
262
|
// Check out the unmerged `work/<type>-<slug>` via the EXISTING per-job
|
|
218
263
|
// worktree seam — the SAME seam build/recovery callers use, NOT a bespoke
|
|
219
264
|
// worktree or clone. The job dir is the worktree `performIntegration` works
|
|
@@ -239,16 +284,16 @@ export async function performMergeAction(input) {
|
|
|
239
284
|
};
|
|
240
285
|
}
|
|
241
286
|
try {
|
|
242
|
-
// CONTINUE-rebase-conflict: createJob's CONTINUE-rebase aborted
|
|
243
|
-
// genuine code conflict
|
|
244
|
-
//
|
|
287
|
+
// CONTINUE-rebase-conflict: createJob's CONTINUE-rebase aborted (a
|
|
288
|
+
// genuine code conflict, or any other rebase failure, named as such). The
|
|
289
|
+
// kept work stays on the branch (recoverable); we refuse the land and
|
|
290
|
+
// route via the standard refusal shape.
|
|
245
291
|
if (job.continueRebaseConflict) {
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
};
|
|
292
|
+
const message = `merge-question for ${input.item} answered MERGE — but ` +
|
|
293
|
+
`${continueRebaseSentence(job.branch, job.continueRebaseFailure)} (the kept work is intact on the ` +
|
|
294
|
+
`branch; resolve and re-answer). NOT landing.`;
|
|
295
|
+
note(message);
|
|
296
|
+
return { outcome: 'refused', message };
|
|
252
297
|
}
|
|
253
298
|
if (job.continuePushFailure !== undefined) {
|
|
254
299
|
return {
|
|
@@ -258,48 +303,13 @@ export async function performMergeAction(input) {
|
|
|
258
303
|
`NOT landing; the kept work is intact on the branch.`,
|
|
259
304
|
};
|
|
260
305
|
}
|
|
261
|
-
// STRICT re-stale check (OQ6 opt-in): when ON and the merge-base moved
|
|
262
|
-
// between the surfacer's question and this apply, RE-SURFACE the
|
|
263
|
-
// merge-question (the apply rung folds this into a re-pause) instead of
|
|
264
|
-
// landing. Default OFF ⇒ this block is skipped; the cheap "green
|
|
265
|
-
// re-verify is enough" path runs.
|
|
266
|
-
if (input.strictMergeApproval === true && mergeBaseMoved(job, input.env)) {
|
|
267
|
-
return {
|
|
268
|
-
outcome: 'restale',
|
|
269
|
-
message: `merge-question for ${input.item} answered MERGE — but ` +
|
|
270
|
-
`strictMergeApproval is ON and the merge-base of \`work/${input.slug}\` ` +
|
|
271
|
-
`moved between answer and apply: RE-SURFACING the merge-question ` +
|
|
272
|
-
`(no land; the human re-confirms against the new base).`,
|
|
273
|
-
};
|
|
274
|
-
}
|
|
275
306
|
// LAND through the EXISTING `performIntegration`. The branch's tip
|
|
276
307
|
// already carries its done-move commit (surfacer enumerates `work/*`
|
|
277
308
|
// unreachable from main, so it is a previously-built strand), so we
|
|
278
309
|
// drive the committed-recovery tail — but with `freshWorktreeGate: true`
|
|
279
310
|
// so the REBASED TIP is re-verified BEFORE the integrate (the
|
|
280
311
|
// `committed-recovery-honours-fresh-worktree-gate` task's contract).
|
|
281
|
-
const integration = await performIntegration(
|
|
282
|
-
cwd: job.dir,
|
|
283
|
-
arbiter: job.arbiterRemote,
|
|
284
|
-
slug: input.slug,
|
|
285
|
-
source: 'tasks-ready',
|
|
286
|
-
recovering: false,
|
|
287
|
-
committedRecovery: true,
|
|
288
|
-
freshWorktreeGate: true,
|
|
289
|
-
prepare: input.prepare,
|
|
290
|
-
verify: input.verify,
|
|
291
|
-
mode: 'merge',
|
|
292
|
-
// surfaceArbiter is set so a RED rebased-tip gate (or a rebase
|
|
293
|
-
// conflict surfaced during the retry loop) routes to needs-attention
|
|
294
|
-
// observably on the arbiter (not local-only). The build path uses
|
|
295
|
-
// this shape; we mirror it here for the answered-merge land.
|
|
296
|
-
surfaceArbiter: job.arbiterRemote,
|
|
297
|
-
recoveryRebaseRetries: input.recoveryRebaseRetries,
|
|
298
|
-
recoveryRebaseJitterMs: input.recoveryRebaseJitterMs,
|
|
299
|
-
mergeRetries: input.mergeRetries,
|
|
300
|
-
env: input.env,
|
|
301
|
-
note,
|
|
302
|
-
});
|
|
312
|
+
const integration = await performIntegration(mergeLandIntegrationInput(job, input, note));
|
|
303
313
|
if (integration.outcome === 'completed') {
|
|
304
314
|
return {
|
|
305
315
|
outcome: 'landed',
|
|
@@ -339,4 +349,204 @@ export async function performMergeAction(input) {
|
|
|
339
349
|
}
|
|
340
350
|
}
|
|
341
351
|
}
|
|
352
|
+
/**
|
|
353
|
+
* The `performIntegration` input of the answered-merge land: the committed-
|
|
354
|
+
* recovery tail (the branch already carries its done-move) with the fresh-
|
|
355
|
+
* worktree gate on the rebased tip, in merge mode. Shared by the laptop
|
|
356
|
+
* dispatcher ({@link performMergeAction}) and the CI agent half
|
|
357
|
+
* ({@link prepareMergeLand}), so both run the SAME rebase and gate.
|
|
358
|
+
*/
|
|
359
|
+
function mergeLandIntegrationInput(job, input, note) {
|
|
360
|
+
return {
|
|
361
|
+
cwd: job.dir,
|
|
362
|
+
arbiter: job.arbiterRemote,
|
|
363
|
+
slug: input.slug,
|
|
364
|
+
source: 'tasks-ready',
|
|
365
|
+
recovering: false,
|
|
366
|
+
committedRecovery: true,
|
|
367
|
+
freshWorktreeGate: true,
|
|
368
|
+
prepare: input.prepare,
|
|
369
|
+
verify: input.verify,
|
|
370
|
+
mode: 'merge',
|
|
371
|
+
// surfaceArbiter is set so a RED rebased-tip gate (or a rebase
|
|
372
|
+
// conflict surfaced during the retry loop) routes to needs-attention
|
|
373
|
+
// observably on the arbiter (not local-only). The build path uses
|
|
374
|
+
// this shape; we mirror it here for the answered-merge land.
|
|
375
|
+
surfaceArbiter: job.arbiterRemote,
|
|
376
|
+
recoveryRebaseRetries: input.recoveryRebaseRetries,
|
|
377
|
+
recoveryRebaseJitterMs: input.recoveryRebaseJitterMs,
|
|
378
|
+
mergeRetries: input.mergeRetries,
|
|
379
|
+
env: input.env,
|
|
380
|
+
note,
|
|
381
|
+
};
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* The AGENT half of the answered-merge land, for the CI agent job, which holds a
|
|
385
|
+
* read-only token: the SAME optional `strictMergeApproval` re-stale check
|
|
386
|
+
* (before the checkout), checkout ({@link createJob}), rebase and
|
|
387
|
+
* fresh-worktree gate (`prepare` +
|
|
388
|
+
* `verify` run the branch's code) as {@link performMergeAction}, but nothing is
|
|
389
|
+
* written to the arbiter. The continue rebase stays local (decision 7,
|
|
390
|
+
* `localContinue`), and `performIntegration` runs under the phase recorder, so
|
|
391
|
+
* its first write (the land, or the needs-attention route of a red gate) halts
|
|
392
|
+
* it and names what the apply job performs. Only an answered `merge` gets here
|
|
393
|
+
* (`hold` / `drop` need no agent job).
|
|
394
|
+
*
|
|
395
|
+
* The caller writes the handoff from the returned preparation (a bundle reads
|
|
396
|
+
* the job worktree) and then calls `dispose`. Throws when the checkout itself
|
|
397
|
+
* fails (the agent job then fails, and the apply job surfaces the item).
|
|
398
|
+
*/
|
|
399
|
+
export async function prepareMergeLand(answered) {
|
|
400
|
+
// The job worktree lives in the hub mirror, which does not see the
|
|
401
|
+
// checkout's local git config, where the CI workflow sets the identity: the
|
|
402
|
+
// continue rebase (and the wip commit of a red gate) need it
|
|
403
|
+
// (`withCheckoutCommitIdentity`).
|
|
404
|
+
const input = {
|
|
405
|
+
...answered,
|
|
406
|
+
env: withCheckoutCommitIdentity(answered.cwd, answered.env),
|
|
407
|
+
};
|
|
408
|
+
const note = input.note ?? (() => { });
|
|
409
|
+
const identity = resolveSidecarIdentity(input.item);
|
|
410
|
+
if (identity.type !== 'task' || input.action.verb !== 'merge') {
|
|
411
|
+
throw new Error(`prepareMergeLand: only an answered merge of a task is prepared ` +
|
|
412
|
+
`(got ${input.item}, answer ${input.action.verb})`);
|
|
413
|
+
}
|
|
414
|
+
const url = resolveArbiterUrl(input);
|
|
415
|
+
if (url === undefined) {
|
|
416
|
+
throw new Error(`the arbiter URL of ${input.item} could not be resolved (\`git remote ` +
|
|
417
|
+
`get-url ${input.arbiter}\` failed in ${input.cwd})`);
|
|
418
|
+
}
|
|
419
|
+
// The re-stale check runs BEFORE the (local) continue rebase, exactly as on
|
|
420
|
+
// the laptop: the same `approvedBaseMoved`.
|
|
421
|
+
if (input.strictMergeApproval === true) {
|
|
422
|
+
const check = approvedBaseMoved(url, input);
|
|
423
|
+
if (check.stale && check.main !== undefined) {
|
|
424
|
+
const main = check.main;
|
|
425
|
+
return {
|
|
426
|
+
preparation: {
|
|
427
|
+
kind: 'restale',
|
|
428
|
+
message: restaleMessage(input, main),
|
|
429
|
+
main,
|
|
430
|
+
},
|
|
431
|
+
dispose: () => { },
|
|
432
|
+
};
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
const job = createJob({
|
|
436
|
+
url,
|
|
437
|
+
slug: input.slug,
|
|
438
|
+
type: 'task',
|
|
439
|
+
workspacesDir: input.workspacesDir,
|
|
440
|
+
localContinue: true,
|
|
441
|
+
env: input.env,
|
|
442
|
+
});
|
|
443
|
+
const dispose = () => {
|
|
444
|
+
try {
|
|
445
|
+
job.dispose();
|
|
446
|
+
}
|
|
447
|
+
catch {
|
|
448
|
+
// Best-effort, as in performMergeAction: `gc` reaps a leftover.
|
|
449
|
+
}
|
|
450
|
+
};
|
|
451
|
+
const prepared = (preparation) => ({
|
|
452
|
+
preparation,
|
|
453
|
+
dispose,
|
|
454
|
+
});
|
|
455
|
+
try {
|
|
456
|
+
if (job.continueRebaseConflict) {
|
|
457
|
+
const reason = `${continueRebaseSentence(job.branch, job.continueRebaseFailure)}; the kept work is intact on the ` +
|
|
458
|
+
'branch. Resolve it, then answer the merge question again.';
|
|
459
|
+
note(reason);
|
|
460
|
+
return prepared({ kind: 'needs-attention', reason });
|
|
461
|
+
}
|
|
462
|
+
const outcome = await runAgentPhase(createPhaseRecorder({
|
|
463
|
+
record: [
|
|
464
|
+
'ledgerWrite.applyCompleteTransition',
|
|
465
|
+
'ledgerWrite.applyNeedsAttentionTransition',
|
|
466
|
+
],
|
|
467
|
+
}), () => performIntegration(mergeLandIntegrationInput(job, input, note)));
|
|
468
|
+
if (outcome.halted) {
|
|
469
|
+
const call = `${outcome.intent.seam}.${outcome.intent.method}`;
|
|
470
|
+
if (call === 'ledgerWrite.applyCompleteTransition') {
|
|
471
|
+
fetchKeptLfsObjects(job, input.env, note);
|
|
472
|
+
const tip = runProc('git', ['rev-parse', 'HEAD'], job.dir, {
|
|
473
|
+
env: input.env,
|
|
474
|
+
}).stdout.trim();
|
|
475
|
+
return prepared({
|
|
476
|
+
kind: 'integrate',
|
|
477
|
+
repo: job.dir,
|
|
478
|
+
workBranch: job.branch,
|
|
479
|
+
tip,
|
|
480
|
+
});
|
|
481
|
+
}
|
|
482
|
+
// A red gate (or prepare) on the rebased tip: the route's local half
|
|
483
|
+
// (the wip commit) runs here, so the rebased tip travels in the bundle.
|
|
484
|
+
const routed = outcome.intent.input;
|
|
485
|
+
commitAbortedWork({ cwd: job.dir, slug: input.slug, env: input.env });
|
|
486
|
+
fetchKeptLfsObjects(job, input.env, note);
|
|
487
|
+
return prepared({
|
|
488
|
+
kind: 'needs-attention',
|
|
489
|
+
reason: routed.reason,
|
|
490
|
+
...(routed.questions === undefined
|
|
491
|
+
? {}
|
|
492
|
+
: { questions: routed.questions }),
|
|
493
|
+
bundle: { repo: job.dir, workBranch: job.branch },
|
|
494
|
+
});
|
|
495
|
+
}
|
|
496
|
+
const result = outcome.result;
|
|
497
|
+
if (result.outcome === 'already-integrated') {
|
|
498
|
+
return prepared({
|
|
499
|
+
kind: 'already-integrated',
|
|
500
|
+
message: result.reason ?? `work/task-${input.slug} is already on main`,
|
|
501
|
+
});
|
|
502
|
+
}
|
|
503
|
+
// A rebase conflict on every attempt (or an invariant violation): nothing
|
|
504
|
+
// was written and the kept branch is untouched on the arbiter.
|
|
505
|
+
return prepared({
|
|
506
|
+
kind: 'needs-attention',
|
|
507
|
+
reason: result.reason ??
|
|
508
|
+
`the answered merge of ${input.item} ended as ${result.outcome}`,
|
|
509
|
+
});
|
|
510
|
+
}
|
|
511
|
+
catch (err) {
|
|
512
|
+
dispose();
|
|
513
|
+
throw err;
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
/**
|
|
517
|
+
* Bring into the job's local LFS store the objects of every LFS pointer the
|
|
518
|
+
* kept commits (`HEAD ^<origin>/main`) add or change, so the handoff carries
|
|
519
|
+
* them (`writeLfsObjects` copies from that store) and the apply job pushes them
|
|
520
|
+
* before the branch (decision 6). The kept branch was built elsewhere, so its
|
|
521
|
+
* objects live on the arbiter's LFS store, not in this fresh job: a read-only
|
|
522
|
+
* `git lfs fetch` of those commits. Best-effort: an object still missing is
|
|
523
|
+
* reported by the handoff writer, and the apply job then rejects the handoff
|
|
524
|
+
* and surfaces the item.
|
|
525
|
+
*/
|
|
526
|
+
function fetchKeptLfsObjects(job, env, note) {
|
|
527
|
+
const commits = runProc('git', ['rev-list', 'HEAD', `^refs/remotes/${job.arbiterRemote}/main`], job.dir, { env })
|
|
528
|
+
.stdout.split('\n')
|
|
529
|
+
.filter((l) => l !== '');
|
|
530
|
+
if (commits.length === 0)
|
|
531
|
+
return;
|
|
532
|
+
const { pointers } = scanLfsPointers({
|
|
533
|
+
cwd: job.dir,
|
|
534
|
+
blobs: changedFileBlobs(job.dir, commits, env),
|
|
535
|
+
env,
|
|
536
|
+
});
|
|
537
|
+
if (pointers.length === 0)
|
|
538
|
+
return;
|
|
539
|
+
const store = localLfsObjectsDir(job.dir, env);
|
|
540
|
+
const missing = pointers.some((p) => {
|
|
541
|
+
const path = lfsObjectPath(store, p.oid);
|
|
542
|
+
return !existsSync(path) || !statSync(path).isFile();
|
|
543
|
+
});
|
|
544
|
+
if (!missing)
|
|
545
|
+
return;
|
|
546
|
+
const fetched = runProc('git', ['lfs', 'fetch', job.arbiterRemote, ...commits], job.dir, { env });
|
|
547
|
+
if (fetched.status !== 0) {
|
|
548
|
+
note(`git lfs fetch of the kept commits failed (${fetched.stderr.trim().slice(0, 300)}); ` +
|
|
549
|
+
'the handoff will lack their LFS objects');
|
|
550
|
+
}
|
|
551
|
+
}
|
|
342
552
|
//# sourceMappingURL=apply-merge-action.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply-merge-action.js","sourceRoot":"","sources":["../src/apply-merge-action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,YAAY,EAAC,MAAM,SAAS,CAAC;AACjD,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAC/B,OAAO,EACN,eAAe,EACf,YAAY,EACZ,sBAAsB,EACtB,cAAc,GAGd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAC,GAAG,IAAI,OAAO,EAAC,MAAM,UAAU,CAAC;AACxC,OAAO,EAAC,SAAS,EAAW,MAAM,gBAAgB,CAAC;AACnD,OAAO,EACN,kBAAkB,GAElB,MAAM,uBAAuB,CAAC;AAsE/B;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,yBAAyB,CACxC,GAAW,EACX,IAAY;IAEZ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IACvC,IAAI,KAAmB,CAAC;IACxB,IAAI,CAAC;QACJ,KAAK,GAAG,YAAY,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,+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;AAiGD;;;;;;GAMG;AACH,SAAS,iBAAiB,CAAC,KAAuB;IACjD,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,KAAK,EAAE,EAAE,CAAC;QAC/D,OAAO,KAAK,CAAC,UAAU,CAAC;IACzB,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,GAAG,EAAE;QAC3E,GAAG,EAAE,KAAK,CAAC,GAAG;KACd,CAAC,CAAC;IACH,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACvC,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9B,OAAO,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;AACrC,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAS,cAAc,CAAC,GAAQ,EAAE,GAAkC;IACnE,MAAM,KAAK,GAAG,OAAO,CACpB,KAAK,EACL;QACC,OAAO;QACP,SAAS;QACT,GAAG,CAAC,aAAa;QACjB,iCAAiC,GAAG,CAAC,aAAa,OAAO;KACzD,EACD,GAAG,CAAC,GAAG,EACP,EAAC,GAAG,EAAC,CACL,CAAC;IACF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACrC,MAAM,OAAO,GAAG,GAAG,GAAG,CAAC,aAAa,OAAO,CAAC;IAC5C,MAAM,OAAO,GAAG,OAAO,CACtB,KAAK,EACL,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,EAC7C,GAAG,CAAC,GAAG,EACP,EAAC,GAAG,EAAC,CACL,CAAC;IACF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,EAAC,GAAG,EAAC,CAAC,CAAC;IAC7E,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AACrD,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACvC,KAAuB;IAEvB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACtC,MAAM,EAAC,IAAI,EAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B,0EAA0E;IAC1E,0EAA0E;IAC1E,4EAA4E;IAC5E,uEAAuE;IACvE,qEAAqE;IACrE,wEAAwE;IACxE,0EAA0E;IAC1E,qDAAqD;IACrD,MAAM,QAAQ,GAAG,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpD,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACd,6CAA6C,KAAK,CAAC,IAAI,cAAc;YACpE,KAAK,QAAQ,CAAC,IAAI,sDAAsD;YACxE,yEAAyE;YACzE,yEAAyE;YACzE,wDAAwD;YACxD,wEAAwE;YACxE,mDAAmD,CACpD,CAAC;IACH,CAAC;IAED,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACrB,OAAO;YACN,OAAO,EAAE,MAAM;YACf,OAAO,EACN,sBAAsB,KAAK,CAAC,IAAI,mCAAmC,KAAK,CAAC,IAAI,KAAK;gBAClF,qDAAqD;SACtD,CAAC;IACH,CAAC;IACD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACrB,OAAO;YACN,OAAO,EAAE,MAAM;YACf,OAAO,EACN,sBAAsB,KAAK,CAAC,IAAI,mCAAmC,KAAK,CAAC,IAAI,KAAK;gBAClF,uEAAuE;gBACvE,kCAAkC;SACnC,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,MAAM,GAAG,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACrC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO;YACN,OAAO,EAAE,SAAS;YAClB,OAAO,EACN,sBAAsB,KAAK,CAAC,IAAI,wCAAwC;gBACxE,0EAA0E;gBAC1E,GAAG,KAAK,CAAC,OAAO,gBAAgB,KAAK,CAAC,GAAG,6BAA6B;gBACtE,iBAAiB;SAClB,CAAC;IACH,CAAC;IAED,uEAAuE;IACvE,0EAA0E;IAC1E,4EAA4E;IAC5E,0EAA0E;IAC1E,2EAA2E;IAC3E,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACJ,GAAG,GAAG,SAAS,CAAC;YACf,GAAG;YACH,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,MAAM;YACZ,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,GAAG,EAAE,KAAK,CAAC,GAAG;SACd,CAAC,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChE,OAAO;YACN,OAAO,EAAE,SAAS;YAClB,OAAO,EACN,sBAAsB,KAAK,CAAC,IAAI,qCAAqC;gBACrE,UAAU,KAAK,CAAC,IAAI,4CAA4C,MAAM,KAAK;gBAC3E,yCAAyC;SAC1C,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACJ,qEAAqE;QACrE,0EAA0E;QAC1E,+DAA+D;QAC/D,IAAI,GAAG,CAAC,sBAAsB,EAAE,CAAC;YAChC,OAAO;gBACN,OAAO,EAAE,SAAS;gBAClB,OAAO,EACN,sBAAsB,KAAK,CAAC,IAAI,iCAAiC;oBACjE,UAAU,KAAK,CAAC,IAAI,oDAAoD;oBACxE,4DAA4D;aAC7D,CAAC;QACH,CAAC;QACD,IAAI,GAAG,CAAC,mBAAmB,KAAK,SAAS,EAAE,CAAC;YAC3C,OAAO;gBACN,OAAO,EAAE,SAAS;gBAClB,OAAO,EACN,sBAAsB,KAAK,CAAC,IAAI,4BAA4B;oBAC5D,+CAA+C,GAAG,CAAC,mBAAmB,KAAK;oBAC3E,qDAAqD;aACtD,CAAC;QACH,CAAC;QAED,uEAAuE;QACvE,iEAAiE;QACjE,wEAAwE;QACxE,iEAAiE;QACjE,kCAAkC;QAClC,IAAI,KAAK,CAAC,mBAAmB,KAAK,IAAI,IAAI,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1E,OAAO;gBACN,OAAO,EAAE,SAAS;gBAClB,OAAO,EACN,sBAAsB,KAAK,CAAC,IAAI,wBAAwB;oBACxD,0DAA0D,KAAK,CAAC,IAAI,KAAK;oBACzE,kEAAkE;oBAClE,wDAAwD;aACzD,CAAC;QACH,CAAC;QAED,mEAAmE;QACnE,qEAAqE;QACrE,oEAAoE;QACpE,yEAAyE;QACzE,8DAA8D;QAC9D,qEAAqE;QACrE,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC;YAC5C,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,OAAO,EAAE,GAAG,CAAC,aAAa;YAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,aAAa;YACrB,UAAU,EAAE,KAAK;YACjB,iBAAiB,EAAE,IAAI;YACvB,iBAAiB,EAAE,IAAI;YACvB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,IAAI,EAAE,OAAO;YACb,+DAA+D;YAC/D,qEAAqE;YACrE,kEAAkE;YAClE,6DAA6D;YAC7D,cAAc,EAAE,GAAG,CAAC,aAAa;YACjC,qBAAqB,EAAE,KAAK,CAAC,qBAAqB;YAClD,sBAAsB,EAAE,KAAK,CAAC,sBAAsB;YACpD,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,IAAI;SACJ,CAAC,CAAC;QAEH,IAAI,WAAW,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;YACzC,OAAO;gBACN,OAAO,EAAE,QAAQ;gBACjB,OAAO,EACN,sBAAsB,KAAK,CAAC,IAAI,2BAA2B;oBAC3D,UAAU,KAAK,CAAC,IAAI,WAAW,GAAG,CAAC,aAAa,kBAAkB;oBAClE,mEAAmE;gBACpE,WAAW;aACX,CAAC;QACH,CAAC;QACD,IAAI,WAAW,CAAC,OAAO,KAAK,oBAAoB,EAAE,CAAC;YAClD,OAAO;gBACN,OAAO,EAAE,oBAAoB;gBAC7B,OAAO,EACN,sBAAsB,KAAK,CAAC,IAAI,4BAA4B,KAAK,CAAC,IAAI,KAAK;oBAC3E,oBAAoB,GAAG,CAAC,aAAa,8BAA8B;gBACpE,WAAW;aACX,CAAC;QACH,CAAC;QACD,uEAAuE;QACvE,mFAAmF;QACnF,yEAAyE;QACzE,8DAA8D;QAC9D,OAAO;YACN,OAAO,EAAE,SAAS;YAClB,OAAO,EACN,WAAW,CAAC,MAAM;gBAClB,sBAAsB,KAAK,CAAC,IAAI,yCAAyC;oBACxE,IAAI,WAAW,CAAC,OAAO,4CAA4C;YACrE,WAAW;SACX,CAAC;IACH,CAAC;YAAS,CAAC;QACV,IAAI,CAAC;YACJ,GAAG,CAAC,OAAO,EAAE,CAAC;QACf,CAAC;QAAC,MAAM,CAAC;YACR,mEAAmE;YACnE,sEAAsE;QACvE,CAAC;IACF,CAAC;AACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"apply-merge-action.js","sourceRoot":"","sources":["../src/apply-merge-action.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { existsSync, readFileSync } from 'node:fs';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
3
|
import { isEntryAnswered, parseSidecar, sidecarPathFor, } from './sidecar.js';
|
|
4
|
-
import {
|
|
4
|
+
import { refWrite } from './ref-write.js';
|
|
5
5
|
/**
|
|
6
6
|
* Parse the human's plain free-text answer into a {@link StuckActionVerb}.
|
|
7
7
|
* MIRRORS `parseMergeAnswer` EXACTLY: first whole ASCII word, case-insensitive,
|
|
@@ -96,7 +96,7 @@ export async function performStuckAction(input) {
|
|
|
96
96
|
};
|
|
97
97
|
}
|
|
98
98
|
// verb === 'reset'
|
|
99
|
-
const dropped = await
|
|
99
|
+
const dropped = await refWrite.deleteRemoteWorkBranch({
|
|
100
100
|
cwd: input.cwd,
|
|
101
101
|
arbiter: input.arbiter,
|
|
102
102
|
slug: input.slug,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply-stuck-action.js","sourceRoot":"","sources":["../src/apply-stuck-action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,YAAY,EAAC,MAAM,SAAS,CAAC;AACjD,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAC/B,OAAO,EACN,eAAe,EACf,YAAY,EACZ,cAAc,GAGd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAC
|
|
1
|
+
{"version":3,"file":"apply-stuck-action.js","sourceRoot":"","sources":["../src/apply-stuck-action.ts"],"names":[],"mappings":"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"}
|