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.
Files changed (418) hide show
  1. package/dist/advance-ci-template.d.ts +17 -16
  2. package/dist/advance-ci-template.d.ts.map +1 -1
  3. package/dist/advance-ci-template.js +42 -53
  4. package/dist/advance-ci-template.js.map +1 -1
  5. package/dist/advance-drivers.d.ts +8 -0
  6. package/dist/advance-drivers.d.ts.map +1 -1
  7. package/dist/advance-drivers.js +28 -4
  8. package/dist/advance-drivers.js.map +1 -1
  9. package/dist/advance-isolated.d.ts.map +1 -1
  10. package/dist/advance-isolated.js +3 -2
  11. package/dist/advance-isolated.js.map +1 -1
  12. package/dist/advance-lifecycle-template.d.ts +41 -40
  13. package/dist/advance-lifecycle-template.d.ts.map +1 -1
  14. package/dist/advance-lifecycle-template.js +309 -489
  15. package/dist/advance-lifecycle-template.js.map +1 -1
  16. package/dist/advance-loop-driver.d.ts.map +1 -1
  17. package/dist/advance-loop-driver.js +3 -2
  18. package/dist/advance-loop-driver.js.map +1 -1
  19. package/dist/advance-treeless-publish.d.ts +31 -0
  20. package/dist/advance-treeless-publish.d.ts.map +1 -1
  21. package/dist/advance-treeless-publish.js +40 -0
  22. package/dist/advance-treeless-publish.js.map +1 -1
  23. package/dist/advance.d.ts +63 -3
  24. package/dist/advance.d.ts.map +1 -1
  25. package/dist/advance.js +80 -12
  26. package/dist/advance.js.map +1 -1
  27. package/dist/advancing-lock.d.ts +9 -0
  28. package/dist/advancing-lock.d.ts.map +1 -1
  29. package/dist/advancing-lock.js +21 -1
  30. package/dist/advancing-lock.js.map +1 -1
  31. package/dist/agent-env.d.ts +61 -0
  32. package/dist/agent-env.d.ts.map +1 -0
  33. package/dist/agent-env.js +144 -0
  34. package/dist/agent-env.js.map +1 -0
  35. package/dist/agent-stop.d.ts +35 -0
  36. package/dist/agent-stop.d.ts.map +1 -1
  37. package/dist/agent-stop.js +62 -0
  38. package/dist/agent-stop.js.map +1 -1
  39. package/dist/apply-merge-action.d.ts +76 -34
  40. package/dist/apply-merge-action.d.ts.map +1 -1
  41. package/dist/apply-merge-action.js +339 -129
  42. package/dist/apply-merge-action.js.map +1 -1
  43. package/dist/apply-stuck-action.js +2 -2
  44. package/dist/apply-stuck-action.js.map +1 -1
  45. package/dist/ci-agent-result.d.ts +151 -0
  46. package/dist/ci-agent-result.d.ts.map +1 -0
  47. package/dist/ci-agent-result.js +314 -0
  48. package/dist/ci-agent-result.js.map +1 -0
  49. package/dist/ci-handoff-apply.d.ts +162 -0
  50. package/dist/ci-handoff-apply.d.ts.map +1 -0
  51. package/dist/ci-handoff-apply.js +497 -0
  52. package/dist/ci-handoff-apply.js.map +1 -0
  53. package/dist/ci-handoff-format.d.ts +369 -0
  54. package/dist/ci-handoff-format.d.ts.map +1 -0
  55. package/dist/ci-handoff-format.js +646 -0
  56. package/dist/ci-handoff-format.js.map +1 -0
  57. package/dist/ci-handoff-lfs.d.ts +146 -0
  58. package/dist/ci-handoff-lfs.d.ts.map +1 -0
  59. package/dist/ci-handoff-lfs.js +397 -0
  60. package/dist/ci-handoff-lfs.js.map +1 -0
  61. package/dist/ci-handoff.d.ts +99 -0
  62. package/dist/ci-handoff.d.ts.map +1 -0
  63. package/dist/ci-handoff.js +277 -0
  64. package/dist/ci-handoff.js.map +1 -0
  65. package/dist/ci-lock-outputs.d.ts +93 -0
  66. package/dist/ci-lock-outputs.d.ts.map +1 -0
  67. package/dist/ci-lock-outputs.js +223 -0
  68. package/dist/ci-lock-outputs.js.map +1 -0
  69. package/dist/ci-phase-build.d.ts +178 -0
  70. package/dist/ci-phase-build.d.ts.map +1 -0
  71. package/dist/ci-phase-build.js +989 -0
  72. package/dist/ci-phase-build.js.map +1 -0
  73. package/dist/ci-phase-driver.d.ts +247 -0
  74. package/dist/ci-phase-driver.d.ts.map +1 -0
  75. package/dist/ci-phase-driver.js +370 -0
  76. package/dist/ci-phase-driver.js.map +1 -0
  77. package/dist/ci-phase-intake.d.ts +172 -0
  78. package/dist/ci-phase-intake.d.ts.map +1 -0
  79. package/dist/ci-phase-intake.js +555 -0
  80. package/dist/ci-phase-intake.js.map +1 -0
  81. package/dist/ci-phase-tasking.d.ts +205 -0
  82. package/dist/ci-phase-tasking.d.ts.map +1 -0
  83. package/dist/ci-phase-tasking.js +906 -0
  84. package/dist/ci-phase-tasking.js.map +1 -0
  85. package/dist/ci-phase-treeless.d.ts +224 -0
  86. package/dist/ci-phase-treeless.d.ts.map +1 -0
  87. package/dist/ci-phase-treeless.js +1482 -0
  88. package/dist/ci-phase-treeless.js.map +1 -0
  89. package/dist/ci-read-token.d.ts +47 -0
  90. package/dist/ci-read-token.d.ts.map +1 -0
  91. package/dist/ci-read-token.js +80 -0
  92. package/dist/ci-read-token.js.map +1 -0
  93. package/dist/cli.d.ts.map +1 -1
  94. package/dist/cli.js +447 -22
  95. package/dist/cli.js.map +1 -1
  96. package/dist/close-job-template.d.ts +10 -1
  97. package/dist/close-job-template.d.ts.map +1 -1
  98. package/dist/close-job-template.js +46 -14
  99. package/dist/close-job-template.js.map +1 -1
  100. package/dist/close-job.d.ts +20 -5
  101. package/dist/close-job.d.ts.map +1 -1
  102. package/dist/close-job.js +65 -12
  103. package/dist/close-job.js.map +1 -1
  104. package/dist/complete.d.ts.map +1 -1
  105. package/dist/complete.js +20 -1
  106. package/dist/complete.js.map +1 -1
  107. package/dist/config.d.ts +41 -44
  108. package/dist/config.d.ts.map +1 -1
  109. package/dist/config.js +2 -4
  110. package/dist/config.js.map +1 -1
  111. package/dist/continue-branch.d.ts +63 -15
  112. package/dist/continue-branch.d.ts.map +1 -1
  113. package/dist/continue-branch.js +75 -8
  114. package/dist/continue-branch.js.map +1 -1
  115. package/dist/crashed-run-save.d.ts +73 -0
  116. package/dist/crashed-run-save.d.ts.map +1 -0
  117. package/dist/crashed-run-save.js +86 -0
  118. package/dist/crashed-run-save.js.map +1 -0
  119. package/dist/cwd-section.d.ts.map +1 -1
  120. package/dist/cwd-section.js +10 -2
  121. package/dist/cwd-section.js.map +1 -1
  122. package/dist/decision-engine.d.ts +10 -0
  123. package/dist/decision-engine.d.ts.map +1 -1
  124. package/dist/decision-engine.js.map +1 -1
  125. package/dist/do-config.d.ts +2 -24
  126. package/dist/do-config.d.ts.map +1 -1
  127. package/dist/do-config.js +1 -33
  128. package/dist/do-config.js.map +1 -1
  129. package/dist/do.d.ts +149 -1
  130. package/dist/do.d.ts.map +1 -1
  131. package/dist/do.js +115 -25
  132. package/dist/do.js.map +1 -1
  133. package/dist/dorfl-item-template.d.ts +98 -0
  134. package/dist/dorfl-item-template.d.ts.map +1 -0
  135. package/dist/dorfl-item-template.js +504 -0
  136. package/dist/dorfl-item-template.js.map +1 -0
  137. package/dist/env-config.d.ts.map +1 -1
  138. package/dist/env-config.js +7 -5
  139. package/dist/env-config.js.map +1 -1
  140. package/dist/frontmatter.d.ts +52 -0
  141. package/dist/frontmatter.d.ts.map +1 -1
  142. package/dist/frontmatter.js +136 -2
  143. package/dist/frontmatter.js.map +1 -1
  144. package/dist/gc.d.ts +13 -0
  145. package/dist/gc.d.ts.map +1 -1
  146. package/dist/gc.js +16 -2
  147. package/dist/gc.js.map +1 -1
  148. package/dist/git.d.ts +18 -1
  149. package/dist/git.d.ts.map +1 -1
  150. package/dist/git.js +70 -5
  151. package/dist/git.js.map +1 -1
  152. package/dist/harness.d.ts +44 -5
  153. package/dist/harness.d.ts.map +1 -1
  154. package/dist/harness.js +24 -1
  155. package/dist/harness.js.map +1 -1
  156. package/dist/index.d.ts +11 -4
  157. package/dist/index.d.ts.map +1 -1
  158. package/dist/index.js +7 -3
  159. package/dist/index.js.map +1 -1
  160. package/dist/install-ci-action-pins.d.ts +123 -0
  161. package/dist/install-ci-action-pins.d.ts.map +1 -0
  162. package/dist/install-ci-action-pins.js +190 -0
  163. package/dist/install-ci-action-pins.js.map +1 -0
  164. package/dist/install-ci-actions-pr-creation.d.ts +70 -0
  165. package/dist/install-ci-actions-pr-creation.d.ts.map +1 -0
  166. package/dist/install-ci-actions-pr-creation.js +106 -0
  167. package/dist/install-ci-actions-pr-creation.js.map +1 -0
  168. package/dist/install-ci-capabilities/dorfl-item.d.ts +12 -0
  169. package/dist/install-ci-capabilities/dorfl-item.d.ts.map +1 -0
  170. package/dist/install-ci-capabilities/dorfl-item.js +26 -0
  171. package/dist/install-ci-capabilities/dorfl-item.js.map +1 -0
  172. package/dist/install-ci-core.d.ts +155 -37
  173. package/dist/install-ci-core.d.ts.map +1 -1
  174. package/dist/install-ci-core.js +304 -200
  175. package/dist/install-ci-core.js.map +1 -1
  176. package/dist/install-ci-github.d.ts +47 -2
  177. package/dist/install-ci-github.d.ts.map +1 -1
  178. package/dist/install-ci-github.js +113 -1
  179. package/dist/install-ci-github.js.map +1 -1
  180. package/dist/install-ci.d.ts +25 -6
  181. package/dist/install-ci.d.ts.map +1 -1
  182. package/dist/install-ci.js +72 -36
  183. package/dist/install-ci.js.map +1 -1
  184. package/dist/intake-marker.d.ts +6 -1
  185. package/dist/intake-marker.d.ts.map +1 -1
  186. package/dist/intake-marker.js.map +1 -1
  187. package/dist/intake-triage.d.ts.map +1 -1
  188. package/dist/intake-triage.js +6 -2
  189. package/dist/intake-triage.js.map +1 -1
  190. package/dist/intake-trigger-template.d.ts +31 -25
  191. package/dist/intake-trigger-template.d.ts.map +1 -1
  192. package/dist/intake-trigger-template.js +107 -292
  193. package/dist/intake-trigger-template.js.map +1 -1
  194. package/dist/intake.d.ts +186 -4
  195. package/dist/intake.d.ts.map +1 -1
  196. package/dist/intake.js +533 -416
  197. package/dist/intake.js.map +1 -1
  198. package/dist/integration-core.d.ts +154 -1
  199. package/dist/integration-core.d.ts.map +1 -1
  200. package/dist/integration-core.js +759 -486
  201. package/dist/integration-core.js.map +1 -1
  202. package/dist/integrator.d.ts +12 -0
  203. package/dist/integrator.d.ts.map +1 -1
  204. package/dist/integrator.js +21 -0
  205. package/dist/integrator.js.map +1 -1
  206. package/dist/isolation.d.ts +12 -2
  207. package/dist/isolation.d.ts.map +1 -1
  208. package/dist/isolation.js +19 -8
  209. package/dist/isolation.js.map +1 -1
  210. package/dist/item-lock.d.ts +93 -11
  211. package/dist/item-lock.d.ts.map +1 -1
  212. package/dist/item-lock.js +233 -65
  213. package/dist/item-lock.js.map +1 -1
  214. package/dist/land-question-residue.d.ts +58 -0
  215. package/dist/land-question-residue.d.ts.map +1 -0
  216. package/dist/land-question-residue.js +95 -0
  217. package/dist/land-question-residue.js.map +1 -0
  218. package/dist/lifecycle-gather.d.ts +16 -0
  219. package/dist/lifecycle-gather.d.ts.map +1 -1
  220. package/dist/lifecycle-gather.js +54 -6
  221. package/dist/lifecycle-gather.js.map +1 -1
  222. package/dist/merge-answer.d.ts +41 -0
  223. package/dist/merge-answer.d.ts.map +1 -0
  224. package/dist/merge-answer.js +60 -0
  225. package/dist/merge-answer.js.map +1 -0
  226. package/dist/merge-question-surfacer.d.ts +105 -30
  227. package/dist/merge-question-surfacer.d.ts.map +1 -1
  228. package/dist/merge-question-surfacer.js +202 -91
  229. package/dist/merge-question-surfacer.js.map +1 -1
  230. package/dist/merge-question-tick.d.ts +64 -0
  231. package/dist/merge-question-tick.d.ts.map +1 -0
  232. package/dist/merge-question-tick.js +96 -0
  233. package/dist/merge-question-tick.js.map +1 -0
  234. package/dist/mint-adr.d.ts.map +1 -1
  235. package/dist/mint-adr.js +20 -2
  236. package/dist/mint-adr.js.map +1 -1
  237. package/dist/needs-attention.d.ts +72 -2
  238. package/dist/needs-attention.d.ts.map +1 -1
  239. package/dist/needs-attention.js +275 -38
  240. package/dist/needs-attention.js.map +1 -1
  241. package/dist/phase-recorder.d.ts +168 -0
  242. package/dist/phase-recorder.d.ts.map +1 -0
  243. package/dist/phase-recorder.js +218 -0
  244. package/dist/phase-recorder.js.map +1 -0
  245. package/dist/phase.d.ts +94 -0
  246. package/dist/phase.d.ts.map +1 -0
  247. package/dist/phase.js +148 -0
  248. package/dist/phase.js.map +1 -0
  249. package/dist/pi-harness.d.ts.map +1 -1
  250. package/dist/pi-harness.js +19 -6
  251. package/dist/pi-harness.js.map +1 -1
  252. package/dist/prepare.d.ts.map +1 -1
  253. package/dist/prepare.js +4 -0
  254. package/dist/prepare.js.map +1 -1
  255. package/dist/prompt.d.ts +4 -0
  256. package/dist/prompt.d.ts.map +1 -1
  257. package/dist/prompt.js +48 -1
  258. package/dist/prompt.js.map +1 -1
  259. package/dist/protocol/CLAIM-PROTOCOL.md +3 -1
  260. package/dist/protocol/WORK-CONTRACT.md +1 -1
  261. package/dist/reap-branches.d.ts +48 -0
  262. package/dist/reap-branches.d.ts.map +1 -1
  263. package/dist/reap-branches.js +64 -0
  264. package/dist/reap-branches.js.map +1 -1
  265. package/dist/ref-write.d.ts +198 -0
  266. package/dist/ref-write.d.ts.map +1 -0
  267. package/dist/ref-write.js +79 -0
  268. package/dist/ref-write.js.map +1 -0
  269. package/dist/repo-config.js +8 -8
  270. package/dist/repo-config.js.map +1 -1
  271. package/dist/repo-mirror.d.ts +36 -0
  272. package/dist/repo-mirror.d.ts.map +1 -1
  273. package/dist/repo-mirror.js +91 -1
  274. package/dist/repo-mirror.js.map +1 -1
  275. package/dist/review-verdict.d.ts +1 -1
  276. package/dist/review-verdict.js +1 -1
  277. package/dist/run.d.ts +7 -1
  278. package/dist/run.d.ts.map +1 -1
  279. package/dist/run.js +28 -4
  280. package/dist/run.js.map +1 -1
  281. package/dist/scan.d.ts +19 -1
  282. package/dist/scan.d.ts.map +1 -1
  283. package/dist/scan.js +21 -8
  284. package/dist/scan.js.map +1 -1
  285. package/dist/sidecar.d.ts +14 -0
  286. package/dist/sidecar.d.ts.map +1 -1
  287. package/dist/sidecar.js +21 -0
  288. package/dist/sidecar.js.map +1 -1
  289. package/dist/single-job-warning.d.ts +63 -0
  290. package/dist/single-job-warning.d.ts.map +1 -0
  291. package/dist/single-job-warning.js +110 -0
  292. package/dist/single-job-warning.js.map +1 -0
  293. package/dist/skills/setup/protocol/CLAIM-PROTOCOL.md +3 -1
  294. package/dist/skills/setup/protocol/WORK-CONTRACT.md +1 -1
  295. package/dist/spec-complete.d.ts +13 -6
  296. package/dist/spec-complete.d.ts.map +1 -1
  297. package/dist/spec-complete.js +23 -11
  298. package/dist/spec-complete.js.map +1 -1
  299. package/dist/start.d.ts.map +1 -1
  300. package/dist/start.js +47 -14
  301. package/dist/start.js.map +1 -1
  302. package/dist/status.d.ts +12 -0
  303. package/dist/status.d.ts.map +1 -1
  304. package/dist/status.js +11 -3
  305. package/dist/status.js.map +1 -1
  306. package/dist/tasking.d.ts +246 -1
  307. package/dist/tasking.d.ts.map +1 -1
  308. package/dist/tasking.js +452 -358
  309. package/dist/tasking.js.map +1 -1
  310. package/dist/triage-persist.d.ts.map +1 -1
  311. package/dist/triage-persist.js +21 -2
  312. package/dist/triage-persist.js.map +1 -1
  313. package/dist/verify-workflow-template.d.ts.map +1 -1
  314. package/dist/verify-workflow-template.js +8 -4
  315. package/dist/verify-workflow-template.js.map +1 -1
  316. package/dist/verify.d.ts.map +1 -1
  317. package/dist/verify.js +4 -0
  318. package/dist/verify.js.map +1 -1
  319. package/dist/watch-session.d.ts +42 -13
  320. package/dist/watch-session.d.ts.map +1 -1
  321. package/dist/watch-session.js +52 -23
  322. package/dist/watch-session.js.map +1 -1
  323. package/dist/work-layout.d.ts +10 -4
  324. package/dist/work-layout.d.ts.map +1 -1
  325. package/dist/work-layout.js +11 -3
  326. package/dist/work-layout.js.map +1 -1
  327. package/dist/workspace.d.ts +65 -4
  328. package/dist/workspace.d.ts.map +1 -1
  329. package/dist/workspace.js +159 -11
  330. package/dist/workspace.js.map +1 -1
  331. package/package.json +1 -1
  332. package/src/advance-ci-template.ts +80 -81
  333. package/src/advance-drivers.ts +45 -6
  334. package/src/advance-isolated.ts +3 -5
  335. package/src/advance-lifecycle-template.ts +375 -538
  336. package/src/advance-loop-driver.ts +3 -5
  337. package/src/advance-treeless-publish.ts +61 -0
  338. package/src/advance.ts +145 -15
  339. package/src/advancing-lock.ts +36 -1
  340. package/src/agent-env.ts +174 -0
  341. package/src/agent-stop.ts +81 -0
  342. package/src/apply-merge-action.ts +401 -154
  343. package/src/apply-stuck-action.ts +2 -2
  344. package/src/ci-agent-result.ts +421 -0
  345. package/src/ci-handoff-apply.ts +737 -0
  346. package/src/ci-handoff-format.ts +926 -0
  347. package/src/ci-handoff-lfs.ts +519 -0
  348. package/src/ci-handoff.ts +392 -0
  349. package/src/ci-lock-outputs.ts +273 -0
  350. package/src/ci-phase-build.ts +1328 -0
  351. package/src/ci-phase-driver.ts +548 -0
  352. package/src/ci-phase-intake.ts +861 -0
  353. package/src/ci-phase-tasking.ts +1255 -0
  354. package/src/ci-phase-treeless.ts +2028 -0
  355. package/src/ci-read-token.ts +90 -0
  356. package/src/cli.ts +591 -29
  357. package/src/close-job-template.ts +52 -15
  358. package/src/close-job.ts +77 -12
  359. package/src/complete.ts +19 -1
  360. package/src/config.ts +43 -48
  361. package/src/continue-branch.ts +121 -16
  362. package/src/crashed-run-save.ts +162 -0
  363. package/src/cwd-section.ts +10 -0
  364. package/src/decision-engine.ts +10 -0
  365. package/src/do-config.ts +2 -57
  366. package/src/do.ts +170 -28
  367. package/src/dorfl-item-template.ts +556 -0
  368. package/src/env-config.ts +7 -5
  369. package/src/frontmatter.ts +155 -2
  370. package/src/gc.ts +27 -2
  371. package/src/git.ts +83 -5
  372. package/src/harness.ts +58 -6
  373. package/src/index.ts +50 -1
  374. package/src/install-ci-action-pins.ts +209 -0
  375. package/src/install-ci-actions-pr-creation.ts +186 -0
  376. package/src/install-ci-capabilities/dorfl-item.ts +33 -0
  377. package/src/install-ci-core.ts +388 -233
  378. package/src/install-ci-github.ts +149 -1
  379. package/src/install-ci.ts +83 -37
  380. package/src/intake-marker.ts +6 -1
  381. package/src/intake-triage.ts +7 -3
  382. package/src/intake-trigger-template.ts +126 -327
  383. package/src/intake.ts +725 -544
  384. package/src/integration-core.ts +975 -523
  385. package/src/integrator.ts +28 -0
  386. package/src/isolation.ts +29 -10
  387. package/src/item-lock.ts +308 -92
  388. package/src/land-question-residue.ts +122 -0
  389. package/src/lifecycle-gather.ts +82 -10
  390. package/src/merge-answer.ts +82 -0
  391. package/src/merge-question-surfacer.ts +320 -112
  392. package/src/merge-question-tick.ts +182 -0
  393. package/src/mint-adr.ts +28 -2
  394. package/src/needs-attention.ts +350 -42
  395. package/src/phase-recorder.ts +350 -0
  396. package/src/phase.ts +177 -0
  397. package/src/pi-harness.ts +25 -5
  398. package/src/prepare.ts +4 -0
  399. package/src/prompt.ts +68 -1
  400. package/src/reap-branches.ts +107 -0
  401. package/src/ref-write.ts +324 -0
  402. package/src/repo-config.ts +8 -8
  403. package/src/repo-mirror.ts +107 -1
  404. package/src/review-verdict.ts +1 -1
  405. package/src/run.ts +47 -6
  406. package/src/scan.ts +37 -7
  407. package/src/sidecar.ts +36 -0
  408. package/src/single-job-warning.ts +135 -0
  409. package/src/spec-complete.ts +36 -14
  410. package/src/start.ts +55 -16
  411. package/src/status.ts +29 -3
  412. package/src/tasking.ts +593 -378
  413. package/src/triage-persist.ts +24 -2
  414. package/src/verify-workflow-template.ts +8 -4
  415. package/src/verify.ts +4 -0
  416. package/src/watch-session.ts +86 -28
  417. package/src/work-layout.ts +11 -3
  418. 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` PR metadata) is pure ENRICHMENT
25
- * layered on top when a GitHub host is configured; the surfacer functions
26
- * identically without it.
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
- * OUT OF SCOPE for this task (covered by sibling tasks of the same spec):
32
+ * Which branches it asks about (decisions 1, 4 and 6 of that task), in order:
29
33
  *
30
- * - The APPLY rung dispatch that lands an answered `kind: merge` through the
31
- * land primitive (rebase → re-verify → advance). Task
32
- * `apply-rung-merge-disposition`.
33
- * - The GATE axis that decides whether this surfacer runs at all on a given
34
- * advance tick. Task `merge-questions-gate-axis`.
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/<slug>` branch whose tip is not reachable from `<base>`. */
55
+ /** A task build branch (`work/task-<slug>`) whose tip is not reachable from `<base>`. */
42
56
  export interface UnmergedWorkBranch {
43
- /** The full short ref, e.g. `work/foo`. */
57
+ /** The branch name as it is on the arbiter, e.g. `work/task-foo`. */
44
58
  ref: string;
45
- /** The bare slug (`work/` prefix stripped), e.g. `foo`. */
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/<slug>` ref the question is about. */
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' | 'already-pending-merge-question' | 'persist-nothing';
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, and is
150
- * pure enrichment (a missing/failed `gh` degrades silently — the floor still
151
- * surfaces the question).
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 every `refs/heads/work/*` whose tip is NOT
163
- * reachable from `<base>`. A repo with no `<base>` (e.g. a fresh init before
164
- * the first commit) yields the empty list — the surfacer is a no-op until
165
- * `main` exists.
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` so the surfacer can enrich the matching
171
- * branch's question. A non-zero / missing `gh` is treated as "no host
172
- * metadata available" — the floor still surfaces every unmerged branch.
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
- * Best-effort enrichment. The git-reachability FLOOR is authoritative; the
175
- * `--state open`, `--base <base>`, and `--limit 200` arguments are DELIBERATE
176
- * ceilings — a PR targeting a non-`main` base (e.g. a stacked PR) or the case
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":"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"}
1
+ {"version":3,"file":"merge-question-surfacer.d.ts","sourceRoot":"","sources":["../src/merge-question-surfacer.ts"],"names":[],"mappings":"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"}