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,555 @@
1
+ /**
2
+ * **The intake path split into the three CI phases** (spec
3
+ * `ci-agent-job-without-write-token` §3 intake row, ADR
4
+ * `ci-agent-job-holds-no-write-token`, task `ci-split-intake`).
5
+ *
6
+ * `intake <N> --phase` runs ONE of three halves of the one intake pipeline
7
+ * (`intake.ts`: {@link decideIntake} is the agent half, {@link applyIntakeDecision}
8
+ * / {@link emitIntakeDocument} the write half), never a second implementation.
9
+ * The item is `issue:<N>`; its lock is the `processing` LABEL, not a lock ref.
10
+ *
11
+ * - **lock** ({@link performIntakeLockPhase}): fetch `<arbiter>/main` (its tip
12
+ * is `baseSha`); read the issue, its comments and its labels; take the
13
+ * `processing` label (the provider creates it on a fresh repository); run
14
+ * the deterministic triage (a skip needs no agent: `needsAgent: false`);
15
+ * derive the origin trust from the event (`comment.author_association`, else
16
+ * `issue.author_association`, as `intake.yml` does) and the document mode
17
+ * (`intakeIntegration ?? integration` from the config at `baseSha`); publish
18
+ * them with `seenCommentIds`, every comment id it read. No agent, no
19
+ * repository code.
20
+ * - **agent** ({@link performIntakeAgentPhase}): read the issue with the read
21
+ * token, but give the decision agent ONLY the comments whose ids are in
22
+ * `seenCommentIds` (a comment posted after the lock is neither read nor
23
+ * marked seen); run the decision agent and the lone-task review rounds; hand
24
+ * over the verdict (`intake-ask`, `intake-bounce`, `intake-task`,
25
+ * `intake-spec`) carrying only the record fields the intent table allows. Any
26
+ * failure writes no handoff and fails the job.
27
+ * - **apply** ({@link performIntakeApplyPhase}): refuse to write when the label
28
+ * is gone (a re-run of a finished run); act on the agent job's result first
29
+ * (anything but `success` never reads the handoff: remove the label, post
30
+ * nothing); validate the handoff as hostile; for a document, RECOMPUTE the
31
+ * slug (`slug-safety.ts`), the placement, the origin-trust stamp and the mode
32
+ * from trusted inputs, render the document with the title YAML-quoted and
33
+ * re-parse it to prove the stamp survived, then integrate
34
+ * (`performIntegration`, PR or merge with the CAS loop) and post the
35
+ * completion comment. The marker's `seen=` is `seenCommentIds`. The label is
36
+ * ALWAYS removed.
37
+ */
38
+ import { existsSync, readFileSync } from 'node:fs';
39
+ import { paramCase } from './brand.js';
40
+ import { HANDOFF_LIMITS, HandoffRejected, handoffName as deriveHandoffName, } from './ci-handoff-format.js';
41
+ import { readHandoff, writeHandoff } from './ci-handoff.js';
42
+ import { LockOutputRefused, readLockOutputsFromEnv, serializeLockOutputs, } from './ci-lock-outputs.js';
43
+ import { PhaseDriverError, agentTimeoutMinutesAt, boundHandoffText, emitLockOutputs, fetchArbiterMain, noSmudgeEnv, repoConfigAt, runnerTempFrom, } from './ci-phase-driver.js';
44
+ import { singleLineScalarProblem } from './frontmatter.js';
45
+ import { identityEnv } from './identity.js';
46
+ import { applyIntakeDecision, decideIntake, emitIntakeDocument, intakePlacementInputs, intakeSkipMessage, intakeTransportProblem, renderIntakeDocument, } from './intake.js';
47
+ import { isAuthorTrusted } from './intake-trigger-template.js';
48
+ import { triageIntake } from './intake-triage.js';
49
+ import { GitHubIssueProvider, PROCESSING_LOCK_LABEL, } from './issue-provider.js';
50
+ import { ensureSafeSlug, isSafeSlug } from './slug-safety.js';
51
+ const DEFAULT_ARBITER = 'origin';
52
+ /**
53
+ * Run one phase of the intake path. The CLI calls this for `intake <N> --phase`.
54
+ */
55
+ export async function performIntakePhase(options) {
56
+ try {
57
+ switch (options.phase) {
58
+ case 'lock':
59
+ return await performIntakeLockPhase(options);
60
+ case 'agent':
61
+ return await performIntakeAgentPhase(options);
62
+ case 'apply':
63
+ return await performIntakeApplyPhase(options);
64
+ }
65
+ }
66
+ catch (err) {
67
+ if (err instanceof PhaseDriverError || err instanceof LockOutputRefused) {
68
+ return {
69
+ exitCode: 1,
70
+ outcome: 'usage-error',
71
+ issueNumber: options.issueNumber,
72
+ message: err.message,
73
+ };
74
+ }
75
+ throw err;
76
+ }
77
+ }
78
+ function itemOf(issueNumber) {
79
+ return `issue:${issueNumber}`;
80
+ }
81
+ function manualRecovery(issueNumber) {
82
+ return (`If the \`${PROCESSING_LOCK_LABEL}\` label is left behind, release it with: ` +
83
+ `gh issue edit ${issueNumber} --remove-label '${PROCESSING_LOCK_LABEL}'`);
84
+ }
85
+ // ---------------------------------------------------------------------------
86
+ // lock
87
+ // ---------------------------------------------------------------------------
88
+ /**
89
+ * The origin trust from the event payload at `eventPath`: the COMMENT's
90
+ * `author_association` on an `issue_comment` event, else the ISSUE's (the rule
91
+ * `intake.yml` applies), classified by {@link isAuthorTrusted}. A payload that
92
+ * is missing, unreadable, or about another issue gives `untrusted` (the
93
+ * fail-safe side of a public front door).
94
+ */
95
+ export function originTrustFromEvent(eventPath, issueNumber) {
96
+ if (eventPath === undefined || eventPath === '' || !existsSync(eventPath)) {
97
+ return 'untrusted';
98
+ }
99
+ let event;
100
+ try {
101
+ event = JSON.parse(readFileSync(eventPath, 'utf8'));
102
+ }
103
+ catch {
104
+ return 'untrusted';
105
+ }
106
+ const e = (event ?? {});
107
+ if (e.issue?.number !== issueNumber) {
108
+ return 'untrusted';
109
+ }
110
+ const str = (v) => typeof v === 'string' && v !== '' ? v : undefined;
111
+ const association = str(e.comment?.author_association) ?? str(e.issue?.author_association);
112
+ return isAuthorTrusted(association) ? 'trusted' : 'untrusted';
113
+ }
114
+ /**
115
+ * The intake document mode from the repository config AT `baseSha`:
116
+ * `intakeIntegration ?? integration`, else `propose` (the conservative
117
+ * default). Never read from the agent job.
118
+ */
119
+ export function intakeDocumentModeAt(cwd, baseSha, env) {
120
+ const config = repoConfigAt(cwd, baseSha, env);
121
+ const mode = config?.intakeIntegration ?? config?.integration;
122
+ return mode === 'merge' || mode === 'propose' ? mode : 'propose';
123
+ }
124
+ /**
125
+ * The lock phase: read the issue, its thread and its labels, take the
126
+ * `processing` label, run the deterministic triage and publish the trusted
127
+ * facts. Runs no agent and no repository code. Every fact is checked BEFORE the
128
+ * label is taken, so a refused output never leaves the label behind.
129
+ */
130
+ export async function performIntakeLockPhase(options) {
131
+ const note = options.note ?? (() => { });
132
+ const arbiter = options.arbiter ?? DEFAULT_ARBITER;
133
+ const cwd = options.cwd;
134
+ const issueNumber = options.issueNumber;
135
+ const item = itemOf(issueNumber);
136
+ const env = identityEnv(options.identity, options.env ?? process.env);
137
+ const githubOutput = options.githubOutput ?? env.GITHUB_OUTPUT;
138
+ const publish = (facts) => {
139
+ emitLockOutputs(facts, { githubOutput, note });
140
+ return facts;
141
+ };
142
+ const done = (exitCode, outcome, message, facts) => {
143
+ return {
144
+ exitCode,
145
+ outcome,
146
+ issueNumber,
147
+ message,
148
+ lockOutputs: publish(facts),
149
+ };
150
+ };
151
+ const issueProvider = options.issueProvider ?? new GitHubIssueProvider();
152
+ const baseSha = await fetchArbiterMain({ cwd, arbiter, env });
153
+ let comments;
154
+ try {
155
+ await issueProvider.getIssue({ cwd, issueNumber, env });
156
+ comments = await issueProvider.listComments({ cwd, issueNumber, env });
157
+ }
158
+ catch (err) {
159
+ const detail = err instanceof Error ? err.message : String(err);
160
+ return done(1, 'usage-error', `Could not read issue #${issueNumber}: ${detail}`, { acquired: false, baseSha });
161
+ }
162
+ const labels = await issueProvider.getLabels({ cwd, issueNumber, env });
163
+ if (labels.outcome === 'failed') {
164
+ return done(1, 'lock-failed', `Intake of issue #${issueNumber} could not acquire the ` +
165
+ `\`${PROCESSING_LOCK_LABEL}\` lock: ${labels.instruction}`, { acquired: false, rung: 'intake', baseSha });
166
+ }
167
+ if (labels.outcome === 'ok' &&
168
+ labels.labels.includes(PROCESSING_LOCK_LABEL)) {
169
+ return done(0, 'backed-off', `Intake of issue #${issueNumber} backed off: the \`${PROCESSING_LOCK_LABEL}\` ` +
170
+ `lock is already held by a concurrent run; doing nothing.`, { acquired: false, rung: 'intake', baseSha });
171
+ }
172
+ const triage = triageIntake(comments);
173
+ const ids = [
174
+ ...new Set(comments
175
+ .map((c) => c.id)
176
+ .filter((id) => id !== undefined && id !== '')),
177
+ ];
178
+ const facts = {
179
+ acquired: true,
180
+ needsAgent: triage.action === 'proceed',
181
+ rung: 'intake',
182
+ baseSha,
183
+ handoffName: deriveHandoffName(item, options.runAttempt ?? env.GITHUB_RUN_ATTEMPT ?? '1'),
184
+ agentTimeoutMinutes: agentTimeoutMinutesAt(cwd, baseSha, env),
185
+ // An explicit `--origin-trust` (the workflow's own input) wins; else the
186
+ // event payload decides.
187
+ originTrust: options.originTrust ??
188
+ originTrustFromEvent(options.eventPath ?? env.GITHUB_EVENT_PATH, issueNumber),
189
+ documentMode: intakeDocumentModeAt(cwd, baseSha, env),
190
+ ...(ids.length > 0 ? { seenCommentIds: ids } : {}),
191
+ };
192
+ try {
193
+ serializeLockOutputs(facts);
194
+ }
195
+ catch (err) {
196
+ if (!(err instanceof LockOutputRefused))
197
+ throw err;
198
+ return done(1, 'usage-error', err.message, {
199
+ acquired: false,
200
+ rung: 'intake',
201
+ baseSha,
202
+ });
203
+ }
204
+ if (labels.outcome === 'ok') {
205
+ const acquired = await issueProvider.addLabel({
206
+ cwd,
207
+ issueNumber,
208
+ label: PROCESSING_LOCK_LABEL,
209
+ env,
210
+ });
211
+ if (acquired.outcome === 'failed') {
212
+ return done(1, 'lock-failed', `Intake of issue #${issueNumber} could not acquire the ` +
213
+ `\`${PROCESSING_LOCK_LABEL}\` lock: ${acquired.instruction}`, { acquired: false, rung: 'intake', baseSha });
214
+ }
215
+ }
216
+ else {
217
+ note(`Processing lock degraded: ${labels.instruction}`);
218
+ }
219
+ if (triage.action === 'skip') {
220
+ return done(0, triage.outcome, `${intakeSkipMessage(issueNumber, triage.outcome)} The apply job only ` +
221
+ 'removes the label.', facts);
222
+ }
223
+ return done(0, 'locked', `locked ${item} at ${baseSha} (the \`${PROCESSING_LOCK_LABEL}\` label; ` +
224
+ `${ids.length} comment(s) read)`, facts);
225
+ }
226
+ function requireIntakeLock(options, env) {
227
+ const facts = options.lockOutputs ?? readLockOutputsFromEnv(env);
228
+ if (facts.acquired !== true) {
229
+ throw new PhaseDriverError('the lock job did not acquire the issue (acquired != true); nothing to do');
230
+ }
231
+ if (facts.rung !== 'intake') {
232
+ throw new PhaseDriverError(`the lock job classified the rung ${String(facts.rung)}, not intake`);
233
+ }
234
+ if (facts.baseSha === undefined) {
235
+ throw new PhaseDriverError('the lock outputs carry no baseSha');
236
+ }
237
+ return {
238
+ baseSha: facts.baseSha,
239
+ needsAgent: facts.needsAgent,
240
+ originTrust: facts.originTrust,
241
+ documentMode: facts.documentMode,
242
+ seenCommentIds: (facts.seenCommentIds ?? []).map(String),
243
+ };
244
+ }
245
+ // ---------------------------------------------------------------------------
246
+ // agent
247
+ // ---------------------------------------------------------------------------
248
+ /**
249
+ * The handoff record of a decision: only the fields the intent table allows,
250
+ * each bounded to its limit. A task / spec carries its title and body (and a
251
+ * spec its two gate booleans), never a slug, a path, a stamp or a mode.
252
+ */
253
+ export function intakeHandoffRecord(issueNumber, decision) {
254
+ const item = itemOf(issueNumber);
255
+ const L = HANDOFF_LIMITS;
256
+ switch (decision.kind) {
257
+ case 'ask':
258
+ return {
259
+ schema: 1,
260
+ item,
261
+ intent: { kind: 'intake-ask' },
262
+ products: {
263
+ question: boundHandoffText(decision.body, L.reasonChars),
264
+ },
265
+ };
266
+ case 'bounce':
267
+ return {
268
+ schema: 1,
269
+ item,
270
+ intent: { kind: 'intake-bounce' },
271
+ products: {
272
+ bounceText: boundHandoffText(decision.body, L.commentChars),
273
+ },
274
+ };
275
+ case 'task':
276
+ return {
277
+ schema: 1,
278
+ item,
279
+ intent: { kind: 'intake-task' },
280
+ products: {
281
+ title: boundTitle(decision.title),
282
+ body: boundHandoffText(decision.body ?? '', L.documentChars),
283
+ },
284
+ };
285
+ case 'spec':
286
+ return {
287
+ schema: 1,
288
+ item,
289
+ intent: { kind: 'intake-spec' },
290
+ products: {
291
+ title: boundTitle(decision.title),
292
+ body: boundHandoffText(decision.body ?? '', L.documentChars),
293
+ ...(decision.humanOnly === undefined
294
+ ? {}
295
+ : { humanOnly: decision.humanOnly }),
296
+ ...(decision.needsAnswers === undefined
297
+ ? {}
298
+ : { needsAnswers: decision.needsAnswers }),
299
+ },
300
+ };
301
+ }
302
+ }
303
+ /** Cut a (single-line) title to the handoff's document-title limit. */
304
+ function boundTitle(title) {
305
+ return title.slice(0, HANDOFF_LIMITS.documentTitleChars).trim();
306
+ }
307
+ /**
308
+ * The agent phase: read the issue (read token) and ONLY the comments the lock
309
+ * job read, run the decision agent and the lone-task review, and write the
310
+ * handoff. Writes nothing anywhere else. Any failure writes no handoff and
311
+ * fails the job, so the apply job removes the label and posts nothing.
312
+ */
313
+ export async function performIntakeAgentPhase(options) {
314
+ const note = options.note ?? (() => { });
315
+ const cwd = options.cwd;
316
+ const issueNumber = options.issueNumber;
317
+ const env = options.env ?? process.env;
318
+ const held = requireIntakeLock(options, env);
319
+ if (held.needsAgent === false) {
320
+ const message = 'the lock job said no agent is needed (needsAgent: false); nothing to do';
321
+ return { exitCode: 0, outcome: 'no-op', issueNumber, message };
322
+ }
323
+ if (options.handoffDir === undefined) {
324
+ throw new PhaseDriverError('the agent phase needs a handoff directory');
325
+ }
326
+ const issueProvider = options.issueProvider ?? new GitHubIssueProvider();
327
+ let issue;
328
+ let thread;
329
+ try {
330
+ issue = await issueProvider.getIssue({ cwd, issueNumber, env });
331
+ thread = await issueProvider.listComments({ cwd, issueNumber, env });
332
+ }
333
+ catch (err) {
334
+ const detail = err instanceof Error ? err.message : String(err);
335
+ const message = `Could not read issue #${issueNumber}: ${detail}`;
336
+ return { exitCode: 1, outcome: 'usage-error', issueNumber, message };
337
+ }
338
+ // ONLY the comments the lock job read: one posted since is neither shown to
339
+ // the agent nor (the apply job marks `seenCommentIds`) marked seen.
340
+ const seen = new Set(held.seenCommentIds);
341
+ const comments = thread.filter((c) => c.id !== undefined && seen.has(c.id));
342
+ if (comments.length < thread.length) {
343
+ note(`${thread.length - comments.length} comment(s) the lock job did not read ` +
344
+ '(posted since) are not shown to the decision agent');
345
+ }
346
+ const triage = triageIntake(comments);
347
+ const decided = await decideIntake({ ...options, phase: 'agent' }, cwd, issue, comments, triage.action === 'proceed' ? triage : undefined, note);
348
+ if (!decided.ok) {
349
+ return {
350
+ exitCode: 1,
351
+ outcome: decided.result.outcome,
352
+ issueNumber,
353
+ message: decided.result.message,
354
+ };
355
+ }
356
+ const record = intakeHandoffRecord(issueNumber, decided.decision);
357
+ try {
358
+ writeHandoff({ dir: options.handoffDir, rung: 'intake', record });
359
+ }
360
+ catch (err) {
361
+ if (!(err instanceof HandoffRejected))
362
+ throw err;
363
+ return {
364
+ exitCode: 1,
365
+ outcome: 'agent-failed',
366
+ issueNumber,
367
+ message: err.message,
368
+ };
369
+ }
370
+ const kind = record.intent.kind;
371
+ const message = `handed over ${kind} for ${itemOf(issueNumber)}`;
372
+ return {
373
+ exitCode: 0,
374
+ outcome: 'handed-over',
375
+ issueNumber,
376
+ message,
377
+ intent: kind,
378
+ };
379
+ }
380
+ // ---------------------------------------------------------------------------
381
+ // apply
382
+ // ---------------------------------------------------------------------------
383
+ /**
384
+ * The document a `intake-task` / `intake-spec` record describes, with the slug
385
+ * RECOMPUTED from its title (`paramCase`, then `slug-safety.ts`). Throws
386
+ * {@link HandoffRejected} for a title that is not one line or holds a control
387
+ * character, or that leaves no safe slug.
388
+ */
389
+ export function intakeDocumentFromRecord(record) {
390
+ if (record.intent.kind !== 'intake-task' &&
391
+ record.intent.kind !== 'intake-spec') {
392
+ throw new Error(`${record.intent.kind} is not an intake document`);
393
+ }
394
+ const products = record.products;
395
+ const title = products.title;
396
+ const problem = singleLineScalarProblem(title);
397
+ if (problem !== undefined || title.trim() === '') {
398
+ throw new HandoffRejected('field', `products.title ${problem ?? 'is blank'}`);
399
+ }
400
+ const slug = ensureSafeSlug(paramCase(title));
401
+ if (!isSafeSlug(slug)) {
402
+ throw new HandoffRejected('field', 'products.title leaves no safe slug to derive (never a counter)');
403
+ }
404
+ const body = products.body === '' ? undefined : products.body;
405
+ if (record.intent.kind === 'intake-task') {
406
+ return { kind: 'task', slug, title, body };
407
+ }
408
+ return {
409
+ kind: 'spec',
410
+ slug,
411
+ title,
412
+ body,
413
+ humanOnly: products.humanOnly,
414
+ needsAnswers: products.needsAnswers,
415
+ };
416
+ }
417
+ /**
418
+ * The apply phase: check the label is still held, act on the agent job's
419
+ * result, validate the handoff as hostile, then resume at the write half with
420
+ * every target, stamp and mode from trusted inputs. Runs no agent and no
421
+ * repository code. The label is ALWAYS removed once the check passed.
422
+ */
423
+ export async function performIntakeApplyPhase(options) {
424
+ const note = options.note ?? (() => { });
425
+ const arbiter = options.arbiter ?? DEFAULT_ARBITER;
426
+ const cwd = options.cwd;
427
+ const issueNumber = options.issueNumber;
428
+ const item = itemOf(issueNumber);
429
+ const env = noSmudgeEnv(identityEnv(options.identity, options.env ?? process.env));
430
+ const held = requireIntakeLock(options, env);
431
+ if (options.agentResult === undefined) {
432
+ throw new PhaseDriverError('the apply phase needs the agent job result (--agent-result, ' +
433
+ 'needs.agent.result): only success reads the handoff');
434
+ }
435
+ const agentResult = options.agentResult;
436
+ const issueProvider = options.issueProvider ?? new GitHubIssueProvider();
437
+ const result = (exitCode, outcome, message) => {
438
+ return { exitCode, outcome, issueNumber, message };
439
+ };
440
+ const transport = await intakeTransportProblem(options.identity, cwd, arbiter, env);
441
+ if (transport !== undefined) {
442
+ return result(1, 'usage-error', `${transport} ${manualRecovery(issueNumber)}`);
443
+ }
444
+ // Label ownership BEFORE the first write: the label is the intake lock. A
445
+ // label that is gone means the run already finished (a "Re-run failed jobs"
446
+ // of it replays the old handoff), so nothing is written.
447
+ const labels = await issueProvider.getLabels({ cwd, issueNumber, env });
448
+ if (labels.outcome === 'failed') {
449
+ return result(1, 'usage-error', `could not read the labels of issue #${issueNumber} (${labels.instruction}); ` +
450
+ `nothing was written. ${manualRecovery(issueNumber)}`);
451
+ }
452
+ if (labels.outcome === 'ok' &&
453
+ !labels.labels.includes(PROCESSING_LOCK_LABEL)) {
454
+ // A handled outcome, so green ("A handled outcome is green",
455
+ // `ci-phase-driver.ts`).
456
+ return result(0, 'stale-lock', `the \`${PROCESSING_LOCK_LABEL}\` label of issue #${issueNumber} is gone ` +
457
+ '(the run already finished, or another run released it); nothing was ' +
458
+ 'written. To retry the issue, start a NEW run.');
459
+ }
460
+ try {
461
+ if (agentResult !== 'success' || held.needsAgent === false) {
462
+ if (held.needsAgent === false) {
463
+ return result(0, 'no-op', `the lock job's triage skipped ${item} (needsAgent: false); only the ` +
464
+ 'label is removed');
465
+ }
466
+ return result(1, 'released', `the agent job ended ${agentResult} (a failure, a timeout or a cancel); ` +
467
+ 'the handoff was not read and nothing was posted; the label is removed');
468
+ }
469
+ let record;
470
+ let doc;
471
+ let content;
472
+ const originTrust = held.originTrust ?? 'untrusted';
473
+ try {
474
+ if (options.handoffDir === undefined) {
475
+ throw new HandoffRejected('layout', 'no handoff directory was given');
476
+ }
477
+ record = readHandoff({
478
+ dir: options.handoffDir,
479
+ runnerTemp: runnerTempFrom(options.runnerTemp, env),
480
+ trust: { item, rung: 'intake' },
481
+ }).record;
482
+ if (record.intent.kind === 'intake-task' ||
483
+ record.intent.kind === 'intake-spec') {
484
+ doc = intakeDocumentFromRecord(record);
485
+ // Re-render from the verdict and the TRUSTED issue number and stamp,
486
+ // then re-parse: the stamp must read back as the trusted values.
487
+ try {
488
+ content = renderIntakeDocument(doc, { issueNumber, originTrust });
489
+ }
490
+ catch (err) {
491
+ const detail = err instanceof Error ? err.message : String(err);
492
+ throw new HandoffRejected('field', `the re-rendered document does not carry the trusted stamp: ${detail}`);
493
+ }
494
+ }
495
+ }
496
+ catch (err) {
497
+ if (!(err instanceof HandoffRejected))
498
+ throw err;
499
+ return result(1, 'rejected', `${err.message}; nothing was posted and the label is removed`);
500
+ }
501
+ const mode = held.documentMode ?? options.integration?.task ?? 'propose';
502
+ const ctx = {
503
+ issueNumber,
504
+ cwd,
505
+ arbiter,
506
+ issueProvider,
507
+ integration: { task: mode, spec: mode },
508
+ mergeRetries: options.mergeRetries,
509
+ mergeJitterMs: options.mergeJitterMs,
510
+ originTrust,
511
+ noPR: options.noPR,
512
+ placement: intakePlacementInputs(options),
513
+ providerInstance: options.providerInstance,
514
+ seen: held.seenCommentIds,
515
+ env,
516
+ note,
517
+ };
518
+ let written;
519
+ if (doc !== undefined && content !== undefined) {
520
+ written = await emitIntakeDocument(doc, content, ctx);
521
+ }
522
+ else if (record.intent.kind === 'intake-ask') {
523
+ written = await applyIntakeDecision({ kind: 'ask', body: record.products.question }, ctx);
524
+ }
525
+ else {
526
+ written = await applyIntakeDecision({
527
+ kind: 'bounce',
528
+ body: record.products.bounceText,
529
+ }, ctx);
530
+ }
531
+ return {
532
+ exitCode: written.exitCode,
533
+ outcome: written.outcome,
534
+ issueNumber,
535
+ message: written.message,
536
+ emitted: written.emitted,
537
+ emittedSlug: written.emittedSlug,
538
+ };
539
+ }
540
+ finally {
541
+ if (labels.outcome === 'ok') {
542
+ const removed = await issueProvider.removeLabel({
543
+ cwd,
544
+ issueNumber,
545
+ label: PROCESSING_LOCK_LABEL,
546
+ env,
547
+ });
548
+ if (!removed.applied) {
549
+ note(`Processing lock release degraded: ${removed.instruction}`);
550
+ note(manualRecovery(issueNumber));
551
+ }
552
+ }
553
+ }
554
+ }
555
+ //# sourceMappingURL=ci-phase-intake.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci-phase-intake.js","sourceRoot":"","sources":["../src/ci-phase-intake.ts"],"names":[],"mappings":"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"}