@joshuafolkken/kit 1.3044.0 → 1.3099.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 (1250) hide show
  1. package/.claude/skills/workflow-commands/backlogrun-steps.md +1 -1
  2. package/.claude/skills/workflow-commands/fullrun-steps.md +3 -3
  3. package/.claude/skills/workflow-commands/halfrun.md +3 -2
  4. package/.claude/skills/workflow-commands/kickoff.md +9 -2
  5. package/.claude/skills/workflow-commands/prerequisite.md +2 -0
  6. package/.claude/skills/workflow-commands/retrospective.md +2 -1
  7. package/.claude/skills/workflow-commands/split-assessment.md +4 -0
  8. package/.github/workflows/ci.yml +0 -20
  9. package/.github/workflows/pr-classification.yml +0 -5
  10. package/.github/workflows/publish.yml +0 -1
  11. package/.github/workflows/sonar-qube.yml +0 -5
  12. package/README.md +2 -0
  13. package/SECURITY.md +2 -1
  14. package/dist/.inputs-verified.json +1 -1
  15. package/dist/commands/adopt.js +29 -20
  16. package/dist/commands/auto-ok-judge-cli.js +43 -33
  17. package/dist/commands/auto-ok-main.js +73 -74
  18. package/dist/commands/backlog-budget-main.js +5 -6
  19. package/dist/commands/backlog-drive-cli.js +286 -305
  20. package/dist/commands/backlog-next-main.js +111 -108
  21. package/dist/commands/backlog-offer-main.js +148 -112
  22. package/dist/commands/backlog-plan-cli.js +123 -120
  23. package/dist/commands/backlog-triage-cli.js +131 -128
  24. package/dist/commands/backlogrun-cli.js +274 -264
  25. package/dist/commands/behavior-cli.js +23 -26
  26. package/dist/commands/bytes-command.js +56 -59
  27. package/dist/commands/cases-cli.js +4 -5
  28. package/dist/commands/check-commit-message-main.js +3 -4
  29. package/dist/commands/check-related.js +125 -119
  30. package/dist/commands/chunk-26JL4UU4.js +365 -0
  31. package/dist/commands/chunk-2BIVHPCA.js +85 -0
  32. package/dist/commands/chunk-2CKJODCK.js +245 -0
  33. package/dist/commands/chunk-2CNVIA35.js +335 -0
  34. package/dist/commands/chunk-2E6PSONB.js +46 -0
  35. package/dist/commands/chunk-2GA4775H.js +77 -0
  36. package/dist/commands/chunk-2O64H5UJ.js +462 -0
  37. package/dist/commands/chunk-2OEXY4GM.js +252 -0
  38. package/dist/commands/chunk-2OMIHPPE.js +51 -0
  39. package/dist/commands/chunk-2ONSHOAY.js +46 -0
  40. package/dist/commands/chunk-2SA3W4JF.js +41 -0
  41. package/dist/commands/chunk-2VY7CJ2R.js +212 -0
  42. package/dist/commands/chunk-2WRDAQPJ.js +74 -0
  43. package/dist/commands/chunk-2XLR7R6E.js +541 -0
  44. package/dist/commands/chunk-33TAOZUE.js +29 -0
  45. package/dist/commands/chunk-36XHHYNU.js +158 -0
  46. package/dist/commands/chunk-3CJNQU7P.js +179 -0
  47. package/dist/commands/chunk-3D5T6KMW.js +59 -0
  48. package/dist/commands/chunk-3EW5LTN3.js +114 -0
  49. package/dist/commands/chunk-3F3RNIG2.js +128 -0
  50. package/dist/commands/chunk-3FLTEJZY.js +74 -0
  51. package/dist/commands/chunk-3JWPTRNI.js +60 -0
  52. package/dist/commands/chunk-3LUPGBW4.js +137 -0
  53. package/dist/commands/chunk-3MQTOUXT.js +94 -0
  54. package/dist/commands/chunk-3PCUERXE.js +19 -0
  55. package/dist/commands/chunk-3U6A5WON.js +173 -0
  56. package/dist/commands/chunk-3VLDFM5I.js +426 -0
  57. package/dist/commands/chunk-3YT3RCSI.js +140 -0
  58. package/dist/commands/chunk-43DU7DYZ.js +540 -0
  59. package/dist/commands/chunk-43H725LG.js +132 -0
  60. package/dist/commands/chunk-46STCE6Q.js +48 -0
  61. package/dist/commands/chunk-46WEC6HZ.js +82 -0
  62. package/dist/commands/chunk-47J4KOZP.js +46 -0
  63. package/dist/commands/chunk-47W7PF4T.js +22 -0
  64. package/dist/commands/chunk-4F4KARQN.js +229 -0
  65. package/dist/commands/chunk-4HB7NWXP.js +263 -0
  66. package/dist/commands/chunk-4HOTJAO6.js +89 -0
  67. package/dist/commands/chunk-4I5AA4P5.js +237 -0
  68. package/dist/commands/chunk-4IDINPBE.js +525 -0
  69. package/dist/commands/chunk-4NSIW3UB.js +104 -0
  70. package/dist/commands/chunk-4YTKV6WV.js +37 -0
  71. package/dist/commands/chunk-5ARNFMQK.js +1263 -0
  72. package/dist/commands/chunk-5AZTSESD.js +114 -0
  73. package/dist/commands/chunk-5FUI2MLY.js +89 -0
  74. package/dist/commands/chunk-5GI5GLC4.js +214 -0
  75. package/dist/commands/chunk-5IHEBIPD.js +333 -0
  76. package/dist/commands/chunk-5KAW5GPF.js +44 -0
  77. package/dist/commands/chunk-5KSJEWXR.js +77 -0
  78. package/dist/commands/chunk-5OF2B4BF.js +35 -0
  79. package/dist/commands/chunk-5PLJ7R3D.js +126 -0
  80. package/dist/commands/chunk-5PPWXOCF.js +64 -0
  81. package/dist/commands/chunk-5VQCL33M.js +46 -0
  82. package/dist/commands/chunk-5Y7FOJLX.js +186 -0
  83. package/dist/commands/chunk-5YTEMF4O.js +110 -0
  84. package/dist/commands/chunk-6AHAY5VZ.js +69 -0
  85. package/dist/commands/chunk-6FN37DER.js +330 -0
  86. package/dist/commands/chunk-6JD4VNO4.js +124 -0
  87. package/dist/commands/chunk-6KUA7MRG.js +64 -0
  88. package/dist/commands/chunk-6LDEZFYR.js +88 -0
  89. package/dist/commands/chunk-6NXIZMIK.js +122 -0
  90. package/dist/commands/chunk-6O45F6YI.js +86 -0
  91. package/dist/commands/chunk-6OHJBQDE.js +184 -0
  92. package/dist/commands/chunk-6WDCCG3M.js +1249 -0
  93. package/dist/commands/chunk-6ZHXEQAI.js +715 -0
  94. package/dist/commands/chunk-736NECRD.js +16 -0
  95. package/dist/commands/chunk-77LEKVEE.js +32 -0
  96. package/dist/commands/chunk-7CX5VYOL.js +50 -0
  97. package/dist/commands/chunk-7DGHFBU7.js +247 -0
  98. package/dist/commands/chunk-7EAYFMDN.js +235 -0
  99. package/dist/commands/chunk-7HP3FQGQ.js +51 -0
  100. package/dist/commands/chunk-7HYYHCTN.js +402 -0
  101. package/dist/commands/chunk-7JOOMFDI.js +155 -0
  102. package/dist/commands/chunk-7K5ITPHR.js +338 -0
  103. package/dist/commands/chunk-7OEBSPPU.js +321 -0
  104. package/dist/commands/chunk-7ULYLGUK.js +492 -0
  105. package/dist/commands/chunk-A3JYZWBS.js +803 -0
  106. package/dist/commands/chunk-A3LCN4KA.js +84 -0
  107. package/dist/commands/chunk-ABLXBG6C.js +98 -0
  108. package/dist/commands/chunk-ABM2MZBF.js +161 -0
  109. package/dist/commands/chunk-AN7BFVHU.js +244 -0
  110. package/dist/commands/chunk-AQCVEQSM.js +99 -0
  111. package/dist/commands/chunk-AU563VKH.js +75 -0
  112. package/dist/commands/chunk-AUTD5FV2.js +1077 -0
  113. package/dist/commands/chunk-AV26CMY6.js +304 -0
  114. package/dist/commands/chunk-B2PJEV3S.js +246 -0
  115. package/dist/commands/chunk-B545ENGY.js +214 -0
  116. package/dist/commands/chunk-B5HP6T4L.js +170 -0
  117. package/dist/commands/chunk-B73IIRMS.js +207 -0
  118. package/dist/commands/chunk-BBLEC4YQ.js +109 -0
  119. package/dist/commands/chunk-BDSG6JKH.js +977 -0
  120. package/dist/commands/chunk-BFKTUD3V.js +33 -0
  121. package/dist/commands/chunk-BLRXHK2V.js +17 -0
  122. package/dist/commands/chunk-BML6MEUB.js +326 -0
  123. package/dist/commands/chunk-BPDNGJXY.js +63 -0
  124. package/dist/commands/chunk-BQLKWGGC.js +118 -0
  125. package/dist/commands/chunk-BRMJVCP7.js +167 -0
  126. package/dist/commands/chunk-BRWR5YKU.js +268 -0
  127. package/dist/commands/chunk-BUZAYEBD.js +319 -0
  128. package/dist/commands/chunk-BVUL57IX.js +139 -0
  129. package/dist/commands/chunk-C7FGDZWP.js +224 -0
  130. package/dist/commands/chunk-CC4BIGCA.js +20 -0
  131. package/dist/commands/chunk-CCHJZEF5.js +4220 -0
  132. package/dist/commands/chunk-CDK7QZWG.js +44 -0
  133. package/dist/commands/chunk-CDYFUCDC.js +72 -0
  134. package/dist/commands/chunk-CEADAQIL.js +170 -0
  135. package/dist/commands/chunk-CNL3SLM6.js +116 -0
  136. package/dist/commands/chunk-CNQ7D2GZ.js +104 -0
  137. package/dist/commands/chunk-CTXJVMHW.js +48 -0
  138. package/dist/commands/chunk-CUWT6UQO.js +13 -0
  139. package/dist/commands/chunk-CVRDJCOE.js +125 -0
  140. package/dist/commands/chunk-D6CF5QGM.js +80 -0
  141. package/dist/commands/chunk-DACNQAXC.js +20 -0
  142. package/dist/commands/chunk-DDOS32JU.js +74 -0
  143. package/dist/commands/chunk-DDZVMXZD.js +481 -0
  144. package/dist/commands/chunk-DF6QD4AF.js +52 -0
  145. package/dist/commands/chunk-DFEXNB44.js +159 -0
  146. package/dist/commands/chunk-DHDKG5HZ.js +151 -0
  147. package/dist/commands/chunk-DHJRFBKO.js +223 -0
  148. package/dist/commands/chunk-DKDWOE3C.js +78 -0
  149. package/dist/commands/chunk-DKO5VTEH.js +65 -0
  150. package/dist/commands/chunk-DLHH3MLS.js +85 -0
  151. package/dist/commands/chunk-DOYNK72G.js +81 -0
  152. package/dist/commands/chunk-DS53UUDH.js +679 -0
  153. package/dist/commands/chunk-DUA4E4ES.js +230 -0
  154. package/dist/commands/chunk-DURHGVRC.js +33 -0
  155. package/dist/commands/chunk-DVCMQMRN.js +191 -0
  156. package/dist/commands/chunk-E3YKMCCJ.js +108 -0
  157. package/dist/commands/chunk-E4F2RTKC.js +272 -0
  158. package/dist/commands/chunk-E4PFCTXN.js +127 -0
  159. package/dist/commands/chunk-EAOTR2WL.js +24 -0
  160. package/dist/commands/chunk-EHPTXSAT.js +315 -0
  161. package/dist/commands/chunk-EHVEWJQ4.js +33 -0
  162. package/dist/commands/chunk-EMFSPPMH.js +98 -0
  163. package/dist/commands/chunk-EPICTV2P.js +46 -0
  164. package/dist/commands/chunk-ES42XPAD.js +123 -0
  165. package/dist/commands/chunk-ESUY7KTZ.js +137 -0
  166. package/dist/commands/chunk-EVVQJJFV.js +507 -0
  167. package/dist/commands/chunk-EWXXEGXL.js +149 -0
  168. package/dist/commands/chunk-F2RDEF2J.js +205 -0
  169. package/dist/commands/chunk-F2U46HAE.js +52 -0
  170. package/dist/commands/chunk-F2VYWU6Z.js +653 -0
  171. package/dist/commands/chunk-F4SGOTUF.js +36 -0
  172. package/dist/commands/chunk-F4YMLVWN.js +183 -0
  173. package/dist/commands/chunk-F57LACNC.js +84 -0
  174. package/dist/commands/chunk-F5N2QIFD.js +213 -0
  175. package/dist/commands/chunk-F7B4ESZE.js +80 -0
  176. package/dist/commands/chunk-FA7CN75F.js +160 -0
  177. package/dist/commands/chunk-FDASVHZD.js +241 -0
  178. package/dist/commands/chunk-FEYZ575X.js +278 -0
  179. package/dist/commands/chunk-FJM2HWKW.js +299 -0
  180. package/dist/commands/chunk-FJMXUDEY.js +3985 -0
  181. package/dist/commands/chunk-FM7VVAK6.js +426 -0
  182. package/dist/commands/chunk-FQWRM5FC.js +67 -0
  183. package/dist/commands/chunk-FT33ZCSB.js +298 -0
  184. package/dist/commands/chunk-FTAWHAI7.js +170 -0
  185. package/dist/commands/chunk-G2DNS74C.js +53 -0
  186. package/dist/commands/chunk-G3BBCAAH.js +90 -0
  187. package/dist/commands/chunk-G75GWNNY.js +101 -0
  188. package/dist/commands/chunk-GA2YSPFH.js +32 -0
  189. package/dist/commands/chunk-GABDPTDK.js +907 -0
  190. package/dist/commands/chunk-GAVSK6P6.js +230 -0
  191. package/dist/commands/chunk-GB2BRQVL.js +300 -0
  192. package/dist/commands/chunk-GBMZXFFC.js +44 -0
  193. package/dist/commands/chunk-GDP7QXYE.js +76 -0
  194. package/dist/commands/chunk-GGWXF7RJ.js +70 -0
  195. package/dist/commands/chunk-GHOTKHI4.js +30 -0
  196. package/dist/commands/chunk-GMVN6ZP2.js +48 -0
  197. package/dist/commands/chunk-GNTTGRCX.js +133 -0
  198. package/dist/commands/chunk-GOY5JECO.js +130 -0
  199. package/dist/commands/chunk-GZL6ISVM.js +72 -0
  200. package/dist/commands/chunk-HALHQILI.js +51 -0
  201. package/dist/commands/chunk-HAT7AFBF.js +85 -0
  202. package/dist/commands/chunk-HDVSZ6CZ.js +292 -0
  203. package/dist/commands/chunk-HE3GOMR7.js +88 -0
  204. package/dist/commands/chunk-HEFUC4ZW.js +65 -0
  205. package/dist/commands/chunk-HHS3LYLV.js +30 -0
  206. package/dist/commands/chunk-HQZ65PJE.js +167 -0
  207. package/dist/commands/chunk-HRN73FQJ.js +77 -0
  208. package/dist/commands/chunk-HSZECERZ.js +271 -0
  209. package/dist/commands/chunk-HYE3MBAN.js +113 -0
  210. package/dist/commands/chunk-IAB6LCJL.js +18 -0
  211. package/dist/commands/chunk-IAGENI2U.js +42 -0
  212. package/dist/commands/chunk-ICPVBHIX.js +48 -0
  213. package/dist/commands/chunk-IONGJJYM.js +179 -0
  214. package/dist/commands/chunk-IP23WOWP.js +126 -0
  215. package/dist/commands/chunk-IPS7EBE5.js +140 -0
  216. package/dist/commands/chunk-IXZZSST7.js +459 -0
  217. package/dist/commands/chunk-IY3DSDRW.js +173 -0
  218. package/dist/commands/chunk-J2RUI4KN.js +47 -0
  219. package/dist/commands/chunk-J3PCRUVY.js +1223 -0
  220. package/dist/commands/chunk-J4XHEOOW.js +156 -0
  221. package/dist/commands/chunk-JDHLHYJJ.js +208 -0
  222. package/dist/commands/chunk-JEYITIWB.js +423 -0
  223. package/dist/commands/chunk-JGX7JIW4.js +126 -0
  224. package/dist/commands/chunk-JHIGDFBS.js +59 -0
  225. package/dist/commands/chunk-JI2EGXZX.js +53 -0
  226. package/dist/commands/chunk-JNV3VRK2.js +47 -0
  227. package/dist/commands/chunk-JPMAW2VZ.js +91 -0
  228. package/dist/commands/chunk-JQEY6KDP.js +90 -0
  229. package/dist/commands/chunk-JSJDIEGZ.js +88 -0
  230. package/dist/commands/chunk-JT5ICRFF.js +44 -0
  231. package/dist/commands/chunk-JU2MAYQ3.js +997 -0
  232. package/dist/commands/chunk-JUCJ4Y42.js +77 -0
  233. package/dist/commands/chunk-K3OZBV3L.js +49 -0
  234. package/dist/commands/chunk-K6P5PISC.js +114 -0
  235. package/dist/commands/chunk-KDCHY7XO.js +88 -0
  236. package/dist/commands/chunk-KDGX3JTV.js +51 -0
  237. package/dist/commands/chunk-KGSEWOKI.js +353 -0
  238. package/dist/commands/chunk-KIS7JFNP.js +217 -0
  239. package/dist/commands/chunk-KJPZPTS4.js +245 -0
  240. package/dist/commands/chunk-KKHD3C2P.js +114 -0
  241. package/dist/commands/chunk-KKIIY5I5.js +67 -0
  242. package/dist/commands/chunk-KN46UC77.js +114 -0
  243. package/dist/commands/chunk-KP2BVAS5.js +125 -0
  244. package/dist/commands/chunk-KPAJBJXG.js +63 -0
  245. package/dist/commands/chunk-KPMAJP6D.js +145 -0
  246. package/dist/commands/chunk-KR6WUAJM.js +122 -0
  247. package/dist/commands/chunk-KWLNK2NJ.js +391 -0
  248. package/dist/commands/chunk-L2CLCNXW.js +144 -0
  249. package/dist/commands/chunk-L7MDU6D7.js +155 -0
  250. package/dist/commands/chunk-L7VD4MLF.js +78 -0
  251. package/dist/commands/chunk-LBVYFW3I.js +38 -0
  252. package/dist/commands/chunk-LE3M42CF.js +350 -0
  253. package/dist/commands/chunk-LIPUSINQ.js +140 -0
  254. package/dist/commands/chunk-LJVZWE3A.js +1885 -0
  255. package/dist/commands/chunk-LKSSQVDA.js +49 -0
  256. package/dist/commands/chunk-LL6G34MF.js +93 -0
  257. package/dist/commands/chunk-LNQOL2CL.js +321 -0
  258. package/dist/commands/chunk-LS7P324N.js +72 -0
  259. package/dist/commands/chunk-LU5EOGFQ.js +50 -0
  260. package/dist/commands/chunk-LX2ENXHZ.js +197 -0
  261. package/dist/commands/chunk-M32UPB2D.js +110 -0
  262. package/dist/commands/chunk-M3UGRNNB.js +103 -0
  263. package/dist/commands/chunk-MDGPJOLK.js +351 -0
  264. package/dist/commands/chunk-MDKRTUE4.js +288 -0
  265. package/dist/commands/chunk-MFZVRWRS.js +34 -0
  266. package/dist/commands/chunk-MHF6BDQI.js +128 -0
  267. package/dist/commands/chunk-MLJDW7YN.js +64 -0
  268. package/dist/commands/chunk-MNLHYAJO.js +80 -0
  269. package/dist/commands/chunk-MOD3FG4V.js +419 -0
  270. package/dist/commands/chunk-MRAEJLXL.js +83 -0
  271. package/dist/commands/chunk-MRW2WYJS.js +68 -0
  272. package/dist/commands/chunk-MXPCEZL5.js +23 -0
  273. package/dist/commands/chunk-N2XH7QBY.js +103 -0
  274. package/dist/commands/chunk-N2ZF6T4E.js +332 -0
  275. package/dist/commands/chunk-N36NZMAL.js +79 -0
  276. package/dist/commands/chunk-N4EMFHQ6.js +114 -0
  277. package/dist/commands/chunk-N4P64UIH.js +211 -0
  278. package/dist/commands/chunk-NABSSY4P.js +204 -0
  279. package/dist/commands/chunk-NDQIJBRQ.js +100 -0
  280. package/dist/commands/chunk-NDR4PCVG.js +29 -0
  281. package/dist/commands/chunk-NEOCCN6D.js +302 -0
  282. package/dist/commands/chunk-NFKWFOFM.js +45 -0
  283. package/dist/commands/chunk-NFUPJBBG.js +516 -0
  284. package/dist/commands/chunk-NHEBKL7X.js +170 -0
  285. package/dist/commands/chunk-NHTEC5U4.js +99 -0
  286. package/dist/commands/chunk-NOSODWWK.js +1132 -0
  287. package/dist/commands/chunk-NPXXYG6Z.js +580 -0
  288. package/dist/commands/chunk-NR2JDBPV.js +75 -0
  289. package/dist/commands/chunk-NRULNBYI.js +1153 -0
  290. package/dist/commands/chunk-NTGF5N3N.js +110 -0
  291. package/dist/commands/chunk-NTIVNQKF.js +73 -0
  292. package/dist/commands/chunk-NUCFIYZL.js +119 -0
  293. package/dist/commands/chunk-NVMV7BYX.js +88 -0
  294. package/dist/commands/chunk-NYWPTYGL.js +169 -0
  295. package/dist/commands/chunk-NZ45KOLL.js +104 -0
  296. package/dist/commands/chunk-O45BX4EL.js +39 -0
  297. package/dist/commands/chunk-O46T4ANI.js +229 -0
  298. package/dist/commands/chunk-O5JGV7NA.js +245 -0
  299. package/dist/commands/chunk-O7ESC4HL.js +566 -0
  300. package/dist/commands/chunk-OBYLXHCH.js +86 -0
  301. package/dist/commands/chunk-OHN3QARP.js +769 -0
  302. package/dist/commands/chunk-OKBZGLD5.js +393 -0
  303. package/dist/commands/chunk-OKN63ZH5.js +109 -0
  304. package/dist/commands/chunk-ON4IKRGS.js +469 -0
  305. package/dist/commands/chunk-OT74RSQO.js +82 -0
  306. package/dist/commands/chunk-OVCVINYW.js +143 -0
  307. package/dist/commands/chunk-OZKLVTYI.js +342 -0
  308. package/dist/commands/chunk-OZN4HOZT.js +74 -0
  309. package/dist/commands/chunk-P3LJ2Q4N.js +555 -0
  310. package/dist/commands/chunk-P43GWYR6.js +185 -0
  311. package/dist/commands/chunk-P6ASP2DY.js +132 -0
  312. package/dist/commands/chunk-PBAEJ5PT.js +38 -0
  313. package/dist/commands/chunk-PCZROH3R.js +100 -0
  314. package/dist/commands/chunk-PJYTUUTH.js +34 -0
  315. package/dist/commands/chunk-PKXTISWR.js +58 -0
  316. package/dist/commands/chunk-PSGLUBSB.js +74 -0
  317. package/dist/commands/chunk-PUQA7F6Y.js +186 -0
  318. package/dist/commands/chunk-PVRDJU2B.js +126 -0
  319. package/dist/commands/chunk-Q3HM2BEH.js +45 -0
  320. package/dist/commands/chunk-Q42NF2TL.js +47 -0
  321. package/dist/commands/chunk-Q4ULMZAS.js +106 -0
  322. package/dist/commands/chunk-QCRUPRQ2.js +207 -0
  323. package/dist/commands/chunk-QFIKPGMC.js +280 -0
  324. package/dist/commands/chunk-QSBYULSS.js +100 -0
  325. package/dist/commands/chunk-QSJCZATC.js +18 -0
  326. package/dist/commands/chunk-QTJPCXEW.js +23 -0
  327. package/dist/commands/chunk-QTQAI2M2.js +179 -0
  328. package/dist/commands/chunk-QTVVFV4Q.js +127 -0
  329. package/dist/commands/chunk-QX2EMUXV.js +102 -0
  330. package/dist/commands/chunk-QXBOECGL.js +272 -0
  331. package/dist/commands/chunk-QXCG3SG4.js +88 -0
  332. package/dist/commands/chunk-QZVMGAWV.js +307 -0
  333. package/dist/commands/chunk-R36VZIKU.js +53 -0
  334. package/dist/commands/chunk-R3F7F3TX.js +94 -0
  335. package/dist/commands/chunk-R5AABJZJ.js +1062 -0
  336. package/dist/commands/chunk-R7PYR4HW.js +389 -0
  337. package/dist/commands/chunk-RAQ3E6OT.js +258 -0
  338. package/dist/commands/chunk-RESNXNDG.js +54 -0
  339. package/dist/commands/chunk-RFIOZTXY.js +305 -0
  340. package/dist/commands/chunk-RFWB2KAV.js +102 -0
  341. package/dist/commands/chunk-RFXON3FK.js +25 -0
  342. package/dist/commands/chunk-RGEB5L37.js +66 -0
  343. package/dist/commands/chunk-RGRLLF2J.js +119 -0
  344. package/dist/commands/chunk-RLRIMYXM.js +178 -0
  345. package/dist/commands/chunk-RNB3DQOZ.js +70 -0
  346. package/dist/commands/chunk-RO4QEZJO.js +172 -0
  347. package/dist/commands/chunk-RS5HBJY6.js +161 -0
  348. package/dist/commands/chunk-RV7EQIE4.js +202 -0
  349. package/dist/commands/chunk-RWPCK3CO.js +41 -0
  350. package/dist/commands/chunk-RWYSVFIA.js +250 -0
  351. package/dist/commands/chunk-RYKK75YT.js +289 -0
  352. package/dist/commands/chunk-S4JE63QE.js +704 -0
  353. package/dist/commands/chunk-S4OZJIXD.js +134 -0
  354. package/dist/commands/chunk-S5GX3H4P.js +91 -0
  355. package/dist/commands/chunk-SC57VV6A.js +60 -0
  356. package/dist/commands/chunk-SD4EX75H.js +177 -0
  357. package/dist/commands/chunk-SJITWFNY.js +480 -0
  358. package/dist/commands/chunk-SKGDMAIA.js +33 -0
  359. package/dist/commands/chunk-SNSZ25XZ.js +393 -0
  360. package/dist/commands/chunk-SOETJZWH.js +7672 -0
  361. package/dist/commands/chunk-SQZZHK6X.js +119 -0
  362. package/dist/commands/chunk-SRTEE34O.js +93 -0
  363. package/dist/commands/chunk-SYTCTLMD.js +285 -0
  364. package/dist/commands/chunk-T6JUDQMW.js +181 -0
  365. package/dist/commands/chunk-TEXUEBGE.js +208 -0
  366. package/dist/commands/chunk-TFDVTU6O.js +910 -0
  367. package/dist/commands/chunk-TFYYXETQ.js +472 -0
  368. package/dist/commands/chunk-TMFKVJUW.js +121 -0
  369. package/dist/commands/chunk-TNJU4CXD.js +32 -0
  370. package/dist/commands/chunk-TRHWBUWE.js +61 -0
  371. package/dist/commands/chunk-TROCFVCU.js +45 -0
  372. package/dist/commands/chunk-TUBBESHU.js +85 -0
  373. package/dist/commands/chunk-TVZIFZZN.js +62 -0
  374. package/dist/commands/chunk-TXRWAL63.js +144 -0
  375. package/dist/commands/chunk-U46YTYJQ.js +92 -0
  376. package/dist/commands/chunk-U5EO4QEV.js +48 -0
  377. package/dist/commands/chunk-UCO333EX.js +47 -0
  378. package/dist/commands/chunk-UIXQ4IYT.js +445 -0
  379. package/dist/commands/chunk-UJGNYPMD.js +716 -0
  380. package/dist/commands/chunk-URZ4RDC4.js +220 -0
  381. package/dist/commands/chunk-UUA63LCI.js +77 -0
  382. package/dist/commands/chunk-UUH3DE77.js +57 -0
  383. package/dist/commands/chunk-UVY5ODCM.js +60 -0
  384. package/dist/commands/chunk-UWMB6EOU.js +45 -0
  385. package/dist/commands/chunk-UY62WJV6.js +120 -0
  386. package/dist/commands/chunk-UZDKCGDC.js +198 -0
  387. package/dist/commands/chunk-VAHQ4AFM.js +585 -0
  388. package/dist/commands/chunk-VCWNMRH7.js +71 -0
  389. package/dist/commands/chunk-VL5I2IOD.js +332 -0
  390. package/dist/commands/chunk-VLN6TSPJ.js +139 -0
  391. package/dist/commands/chunk-VMG3QB6C.js +81 -0
  392. package/dist/commands/chunk-VO25PMGS.js +58 -0
  393. package/dist/commands/chunk-VPRQFM2T.js +37 -0
  394. package/dist/commands/chunk-VTLWODJ2.js +133 -0
  395. package/dist/commands/chunk-VUCDGQ6Y.js +260 -0
  396. package/dist/commands/chunk-VY7ZJMDT.js +469 -0
  397. package/dist/commands/chunk-W4BR6QNU.js +1241 -0
  398. package/dist/commands/chunk-W7X7MZZN.js +449 -0
  399. package/dist/commands/chunk-WCYRNNKF.js +76 -0
  400. package/dist/commands/chunk-WEUUJIWQ.js +84 -0
  401. package/dist/commands/chunk-WNBJK6QE.js +84 -0
  402. package/dist/commands/chunk-WORHUJ6T.js +73 -0
  403. package/dist/commands/chunk-WR5PKCQW.js +61 -0
  404. package/dist/commands/chunk-WR73HTRG.js +121 -0
  405. package/dist/commands/chunk-WRHMYSW7.js +36 -0
  406. package/dist/commands/chunk-WRNMUQTD.js +95 -0
  407. package/dist/commands/chunk-WROJTXWZ.js +138 -0
  408. package/dist/commands/chunk-WTIPX5NG.js +43 -0
  409. package/dist/commands/chunk-WWLCQREY.js +225 -0
  410. package/dist/commands/chunk-WXLW7S4M.js +71 -0
  411. package/dist/commands/chunk-WXXLJQBO.js +67 -0
  412. package/dist/commands/chunk-X4LYH6Q4.js +56 -0
  413. package/dist/commands/chunk-XAEL24EG.js +66 -0
  414. package/dist/commands/chunk-XDR2BRDL.js +216 -0
  415. package/dist/commands/chunk-XRQMVAB4.js +85 -0
  416. package/dist/commands/chunk-XUXCFPDK.js +218 -0
  417. package/dist/commands/chunk-XXPDFJRI.js +48 -0
  418. package/dist/commands/chunk-Y6OGDG5I.js +49 -0
  419. package/dist/commands/chunk-YANDBVAT.js +430 -0
  420. package/dist/commands/chunk-YD7XK2TX.js +550 -0
  421. package/dist/commands/chunk-YEAE46TS.js +98 -0
  422. package/dist/commands/chunk-YEQFAEVW.js +112 -0
  423. package/dist/commands/chunk-YJZAD4Z5.js +103 -0
  424. package/dist/commands/chunk-YNCF66RK.js +1052 -0
  425. package/dist/commands/chunk-YOA25SII.js +210 -0
  426. package/dist/commands/chunk-YOZTZMAT.js +38 -0
  427. package/dist/commands/chunk-YSGRHVZG.js +897 -0
  428. package/dist/commands/chunk-YSLGWRQN.js +646 -0
  429. package/dist/commands/chunk-YT5JR2CB.js +105 -0
  430. package/dist/commands/chunk-YTXCLGGL.js +168 -0
  431. package/dist/commands/chunk-YVHJN2HS.js +74 -0
  432. package/dist/commands/chunk-YY7XVVSB.js +43 -0
  433. package/dist/commands/chunk-Z2NUK47W.js +1314 -0
  434. package/dist/commands/chunk-Z5GZV4DV.js +16 -0
  435. package/dist/commands/chunk-ZB52ZIEA.js +1629 -0
  436. package/dist/commands/chunk-ZCD4AV2P.js +73 -0
  437. package/dist/commands/chunk-ZCHZU6NX.js +799 -0
  438. package/dist/commands/chunk-ZEH2B3DF.js +239 -0
  439. package/dist/commands/chunk-ZGANVZCA.js +92 -0
  440. package/dist/commands/chunk-ZGEUWHFF.js +297 -0
  441. package/dist/commands/chunk-ZHSNQ2F7.js +161 -0
  442. package/dist/commands/chunk-ZI3SABMH.js +347 -0
  443. package/dist/commands/chunk-ZIIUBGON.js +773 -0
  444. package/dist/commands/chunk-ZJJLROJY.js +269 -0
  445. package/dist/commands/chunk-ZNIIA275.js +59 -0
  446. package/dist/commands/chunk-ZV6BZZJ2.js +271 -0
  447. package/dist/commands/ci-timing-cli.js +22 -3
  448. package/dist/commands/code-symbol-cli.js +21 -7
  449. package/dist/commands/codex-hook-adapter.js +124 -119
  450. package/dist/commands/command-derive.js +9 -11
  451. package/dist/commands/cost-audit-main.js +118 -119
  452. package/dist/commands/cost-main.js +5 -7
  453. package/dist/commands/cspell-cached.js +55 -57
  454. package/dist/commands/defect-origin-main.js +42 -37
  455. package/dist/commands/defect-report-main.js +33 -25
  456. package/dist/commands/diff-summary-cli.js +3 -4
  457. package/dist/commands/disposition-cli.js +117 -118
  458. package/dist/commands/doctor.js +24 -11
  459. package/dist/commands/document-read-cli.js +50 -53
  460. package/dist/commands/document-section-main.js +50 -53
  461. package/dist/commands/dogfood-commit-cli.js +19 -4
  462. package/dist/commands/effect-audit-cli.js +40 -41
  463. package/dist/commands/epic-audit-main.js +88 -86
  464. package/dist/commands/epic-bundle-main.js +122 -119
  465. package/dist/commands/epic-check.js +37 -31
  466. package/dist/commands/epic-main.js +129 -126
  467. package/dist/commands/epic-next-main.js +85 -83
  468. package/dist/commands/eval-run.js +6 -7
  469. package/dist/commands/format-edited-cli.js +71 -46
  470. package/dist/commands/format.js +41 -56
  471. package/dist/commands/fresh-machine-cli.js +24 -7
  472. package/dist/commands/gh-usage-cli.js +22 -22
  473. package/dist/commands/git-followup-workflow.js +170 -159
  474. package/dist/commands/git-gh-checks-failed-main.js +23 -15
  475. package/dist/commands/git-workflow.js +52 -53
  476. package/dist/commands/github-release-cli.js +3 -3
  477. package/dist/commands/hook-ledger-cli.js +93 -94
  478. package/dist/commands/init-main.js +40 -40
  479. package/dist/commands/inputs.json +1999 -1954
  480. package/dist/commands/issue-ack-cli.js +28 -21
  481. package/dist/commands/issue-already-done-cli.js +107 -110
  482. package/dist/commands/issue-body-cli.js +71 -73
  483. package/dist/commands/issue-cite-main.js +35 -28
  484. package/dist/commands/issue-comment-main.js +36 -30
  485. package/dist/commands/issue-consolidate-cli.js +54 -54
  486. package/dist/commands/issue-file-main.js +274 -148
  487. package/dist/commands/issue-fold-existing-cli.js +126 -123
  488. package/dist/commands/issue-fold-main.js +57 -60
  489. package/dist/commands/issue-lint-main.js +59 -61
  490. package/dist/commands/issue-measured-cli.js +108 -110
  491. package/dist/commands/issue-plan-cli.js +156 -155
  492. package/dist/commands/issue-premise-unmet-cli.js +111 -113
  493. package/dist/commands/issue-priority-cli.js +38 -32
  494. package/dist/commands/issue-read-main.js +38 -33
  495. package/dist/commands/issue-release-class-cli.js +37 -31
  496. package/dist/commands/issue-release-main.js +35 -29
  497. package/dist/commands/issue-scout-main.js +123 -120
  498. package/dist/commands/issue-spill-main.js +149 -144
  499. package/dist/commands/issue-state-main.js +36 -31
  500. package/dist/commands/issue-tick-cli.js +37 -31
  501. package/dist/commands/josh-completion.js +21 -24
  502. package/dist/commands/lane-adopt-cli.js +53 -55
  503. package/dist/commands/lane-breakdown-cli.js +193 -172
  504. package/dist/commands/lane-cli.js +199 -180
  505. package/dist/commands/lane-launch-main.js +106 -56
  506. package/dist/commands/lane-limit-cli.js +119 -116
  507. package/dist/commands/lane-measure-cli.js +408 -245
  508. package/dist/commands/lane-pause-cli.js +51 -54
  509. package/dist/commands/lane-plan-cli.js +148 -147
  510. package/dist/commands/lane-resolve-cli.js +48 -50
  511. package/dist/commands/lane-restart-cli.js +185 -168
  512. package/dist/commands/lane-why-cli.js +121 -122
  513. package/dist/commands/lane-withdraw-cli.js +84 -86
  514. package/dist/commands/latest-corepack.js +3 -2
  515. package/dist/commands/latest-if-required-cli.js +12 -15
  516. package/dist/commands/latest-lane-guard-main.js +2 -3
  517. package/dist/commands/latest-scope-main.js +5 -7
  518. package/dist/commands/latest-update.js +3 -2
  519. package/dist/commands/lines-command.js +8 -10
  520. package/dist/commands/lint-parallel-main.js +65 -67
  521. package/dist/commands/lint-related.js +149 -133
  522. package/dist/commands/lint-rule.js +64 -66
  523. package/dist/commands/lockfile-policy.js +29 -32
  524. package/dist/commands/main-merge-main.js +23 -25
  525. package/dist/commands/main-sync-main.js +23 -24
  526. package/dist/commands/managed-config-scope-cli.js +11 -10
  527. package/dist/commands/measure-rerun-cli.js +31 -26
  528. package/dist/commands/metrics-command.js +97 -100
  529. package/dist/commands/observation-record-cli.js +24 -14
  530. package/dist/commands/observations-flush-cli.js +50 -52
  531. package/dist/commands/overrides-check.js +1 -1
  532. package/dist/commands/package-scout-cli.js +70 -73
  533. package/dist/commands/pin-verify-cli.js +21 -2
  534. package/dist/commands/plan-consumers-main.js +3 -4
  535. package/dist/commands/plan-scaffold-cli.js +145 -146
  536. package/dist/commands/pr-classification-main.js +22 -3
  537. package/dist/commands/pre-commit-lint.js +30 -34
  538. package/dist/commands/pre-commit-type-check.js +55 -55
  539. package/dist/commands/pre-push-unit.js +69 -70
  540. package/dist/commands/pretool-guard-cli.js +111 -113
  541. package/dist/commands/prevent-main-commit.js +2 -3
  542. package/dist/commands/project-profile-cli.js +24 -9
  543. package/dist/commands/propagate.js +31 -23
  544. package/dist/commands/prose-stale-cli.js +48 -42
  545. package/dist/commands/publishable-range-check.js +3 -3
  546. package/dist/commands/read-set-cli.js +58 -61
  547. package/dist/commands/refactor-scan-cli.js +8 -9
  548. package/dist/commands/release-cli.js +57 -57
  549. package/dist/commands/release-scope-main.js +41 -36
  550. package/dist/commands/rename-cli.js +64 -36
  551. package/dist/commands/repo-party-cli.js +3 -4
  552. package/dist/commands/report-template-cli.js +4 -5
  553. package/dist/commands/reserved-run.js +17 -20
  554. package/dist/commands/retrospective-cli.js +126 -127
  555. package/dist/commands/review-attest-cli.js +28 -20
  556. package/dist/commands/review-brief-main.js +184 -167
  557. package/dist/commands/review-findings-cli.js +23 -13
  558. package/dist/commands/review-pair-cli.js +180 -156
  559. package/dist/commands/review-record-main.js +171 -147
  560. package/dist/commands/review-round2-cli.js +89 -91
  561. package/dist/commands/review-stops-cli.js +51 -54
  562. package/dist/commands/review-submit-cli.js +184 -167
  563. package/dist/commands/rule-list.js +78 -80
  564. package/dist/commands/rule-value-cli.js +115 -116
  565. package/dist/commands/ruleset-check-cli.js +23 -6
  566. package/dist/commands/run-add-cli.js +115 -75
  567. package/dist/commands/run-board-main.js +173 -169
  568. package/dist/commands/run-carry-cli.js +182 -174
  569. package/dist/commands/run-chain-cli.js +184 -160
  570. package/dist/commands/run-cut-cli.js +206 -168
  571. package/dist/commands/run-ending-cli.js +51 -54
  572. package/dist/commands/run-entry-cli.js +230 -283
  573. package/dist/commands/run-event-cli.js +18 -21
  574. package/dist/commands/run-handoff-cli.js +75 -78
  575. package/dist/commands/run-handoff-lanes-cli.js +48 -51
  576. package/dist/commands/run-hold-main.js +105 -107
  577. package/dist/commands/run-liveness-cli.js +47 -49
  578. package/dist/commands/run-merge-main.js +159 -151
  579. package/dist/commands/run-next-cli.js +128 -129
  580. package/dist/commands/run-park-cli.js +137 -140
  581. package/dist/commands/run-pause-cli.js +190 -186
  582. package/dist/commands/run-pickup-cli.js +49 -52
  583. package/dist/commands/run-prep-main.js +124 -125
  584. package/dist/commands/run-prime-cli.js +175 -147
  585. package/dist/commands/run-progress-main.js +149 -146
  586. package/dist/commands/run-report-cli.js +60 -60
  587. package/dist/commands/run-review-cli.js +229 -214
  588. package/dist/commands/run-ship-cli.js +258 -252
  589. package/dist/commands/run-ship-evidence-cli.js +71 -72
  590. package/dist/commands/run-ship-lap-W66LTXJJ.js +28 -0
  591. package/dist/commands/run-ship-wait-main.js +83 -85
  592. package/dist/commands/run-split-cli.js +176 -172
  593. package/dist/commands/run-stale-main.js +72 -75
  594. package/dist/commands/run-status-cli.js +44 -44
  595. package/dist/commands/run-step-cli.js +213 -211
  596. package/dist/commands/run-tail-cli.js +23 -18
  597. package/dist/commands/run-tidy-main.js +67 -69
  598. package/dist/commands/run-wake-main.js +206 -187
  599. package/dist/commands/run-watcher-guard-cli.js +63 -66
  600. package/dist/commands/security-audit-main.js +21 -24
  601. package/dist/commands/security-audit-provision-main.js +9 -11
  602. package/dist/commands/selfcheck-cli.js +63 -57
  603. package/dist/commands/session-language-main.js +70 -73
  604. package/dist/commands/sonar-hotspots-cli.js +9 -8
  605. package/dist/commands/sonar-new-code-cli.js +3 -4
  606. package/dist/commands/split-assess-cli.js +55 -58
  607. package/dist/commands/split-child-recover-cli.js +38 -39
  608. package/dist/commands/start.js +64 -64
  609. package/dist/commands/stash-pop-main.js +4 -5
  610. package/dist/commands/stash-push-main.js +7 -9
  611. package/dist/commands/stop-guard.js +180 -176
  612. package/dist/commands/sync-main.js +30 -15
  613. package/dist/commands/telegram-test-main.js +29 -22
  614. package/dist/commands/test-declared.js +29 -15
  615. package/dist/commands/test-e2e-guard.js +54 -54
  616. package/dist/commands/test-pinned-main.js +57 -56
  617. package/dist/commands/test-reach-cli.js +40 -32
  618. package/dist/commands/test-red-main.js +12 -14
  619. package/dist/commands/test-related-XBDH2IOH.js +113 -0
  620. package/dist/commands/test-related-main.js +89 -89
  621. package/dist/commands/test-unit-guard-main.js +37 -37
  622. package/dist/commands/time-cli.js +54 -57
  623. package/dist/commands/time-density-cli.js +26 -29
  624. package/dist/commands/tree-status-cli.js +6 -8
  625. package/dist/commands/type-check-command.js +26 -11
  626. package/dist/commands/ui-routes-cli.js +5 -6
  627. package/dist/commands/ui-shot-cli.js +1 -1
  628. package/dist/commands/uninstall.js +44 -43
  629. package/dist/commands/unused-members-KVKZDTXD.js +329 -0
  630. package/dist/commands/unused-members-cli.js +27 -12
  631. package/dist/commands/upstream-interrupt-main.js +159 -151
  632. package/dist/commands/verification-gate.js +85 -86
  633. package/dist/commands/version-check.js +25 -8
  634. package/dist/hooks/chunk-3SA3FIQC.js +6869 -0
  635. package/dist/hooks/chunk-46PTTMGE.js +1625 -0
  636. package/dist/hooks/chunk-5NIBRHWG.js +77 -0
  637. package/dist/hooks/chunk-76QKN2K3.js +258 -0
  638. package/dist/hooks/chunk-CHEKMGFP.js +321 -0
  639. package/dist/hooks/chunk-DCILEVDR.js +5173 -0
  640. package/dist/hooks/chunk-HVNGIM5W.js +5092 -0
  641. package/dist/hooks/chunk-L6IZZ2IL.js +11219 -0
  642. package/dist/hooks/chunk-UZXMFOVK.js +9170 -0
  643. package/dist/hooks/chunk-WCJ2GWYJ.js +1381 -0
  644. package/dist/hooks/chunk-YRKS5ZKE.js +1915 -0
  645. package/dist/hooks/codex-hook-adapter.js +11 -12
  646. package/dist/hooks/daemon.js +2140 -1387
  647. package/dist/hooks/format-edited.js +6 -6
  648. package/dist/hooks/inputs.json +543 -518
  649. package/dist/hooks/pretool-guard.js +8 -8
  650. package/dist/hooks/run-ship-lap-P5555IG7.js +8 -0
  651. package/dist/hooks/session-lang.js +9 -7
  652. package/dist/hooks/stop-guard.js +970 -668
  653. package/dist/inputs.json +77 -68
  654. package/dist/josh.js +1029 -577
  655. package/dist/registry-migrate.mjs +33938 -0
  656. package/dist/version/index.js +4251 -175
  657. package/package.json +4 -1
  658. package/prompts/collaboration-workflow/principles.md +4 -1
  659. package/prompts/collaboration-workflow/rule-delivery.md +1 -1
  660. package/scripts/agent/codex-launch-identity.ts +70 -0
  661. package/scripts/auto-ok/auto-ok-cli.ts +2 -0
  662. package/scripts/auto-ok/auto-ok-judge-write.ts +2 -0
  663. package/scripts/auto-ok/auto-ok-judge.ts +3 -1
  664. package/scripts/backlog/backlog-arrival.ts +1 -1
  665. package/scripts/backlog/backlog-budget.ts +5 -2
  666. package/scripts/backlog/backlog-defect-priority.ts +1 -1
  667. package/scripts/backlog/backlog-dispatch-bound.ts +17 -0
  668. package/scripts/backlog/backlog-drain-flush.ts +38 -3
  669. package/scripts/backlog/backlog-drive-cli.ts +1 -1
  670. package/scripts/backlog/backlog-drive-hold.ts +28 -5
  671. package/scripts/backlog/backlog-drive-launch.ts +37 -15
  672. package/scripts/backlog/backlog-drive-listing.ts +39 -23
  673. package/scripts/backlog/backlog-drive-retrospective-unit.ts +3 -2
  674. package/scripts/backlog/backlog-drive-split-unit.ts +1 -0
  675. package/scripts/backlog/backlog-hold-codes.ts +7 -0
  676. package/scripts/backlog/backlog-hold-text.ts +14 -1
  677. package/scripts/backlog/backlog-measure-close.ts +6 -0
  678. package/scripts/backlog/backlog-next-shared.ts +20 -2
  679. package/scripts/backlog/backlog-next.ts +24 -3
  680. package/scripts/backlog/backlog-offer-cli.ts +69 -16
  681. package/scripts/build/build-migration.ts +25 -0
  682. package/scripts/build/build.ts +2 -0
  683. package/scripts/epic/epic-classify.ts +6 -1
  684. package/scripts/epic/epic-live.ts +46 -0
  685. package/scripts/followup/followup-failed-tests.ts +71 -10
  686. package/scripts/followup/followup-job-rerun.ts +2 -2
  687. package/scripts/followup/git-followup-finish.ts +16 -1
  688. package/scripts/gate/change-scope-action.integration.test.ts +88 -0
  689. package/scripts/gate/change-scope-action.ts +2 -0
  690. package/scripts/gate/check-related-order.ts +6 -7
  691. package/scripts/gate/check-related.ts +18 -8
  692. package/scripts/gate/core-admission.ts +17 -30
  693. package/scripts/gate/core-budget-poll.ts +183 -0
  694. package/scripts/gate/core-budget-timing.ts +1 -1
  695. package/scripts/gate/core-budget.ts +24 -112
  696. package/scripts/gate/core-wait-record.ts +52 -7
  697. package/scripts/gate/machine-capacity.ts +6 -2
  698. package/scripts/gate/metrics-totals.ts +11 -0
  699. package/scripts/gate/path-glob.test.ts +18 -0
  700. package/scripts/gate/toolchain-inputs.consumer.test.ts +36 -0
  701. package/scripts/gate/verification-inputs.ts +2 -1
  702. package/scripts/gh/fix-gh-packages-logic.ts +22 -15
  703. package/scripts/gh/gh-request-tally.ts +4 -0
  704. package/scripts/hooks/bash-revert.ts +79 -31
  705. package/scripts/hooks/format-edited-file.ts +6 -8
  706. package/scripts/hooks/implementation-shell.ts +3 -2
  707. package/scripts/init/distributed-paths.ts +18 -5
  708. package/scripts/init/init-actions.ts +16 -1
  709. package/scripts/init/init-bootstrap.ts +2 -0
  710. package/scripts/init/init-logic.ts +40 -8
  711. package/scripts/init/init.ts +11 -3
  712. package/scripts/issue/defect-rate-cli.ts +19 -13
  713. package/scripts/issue/issue-file-batch.ts +7 -3
  714. package/scripts/issue/issue-file-cli.ts +19 -6
  715. package/scripts/issue/issue-file-main.ts +6 -1
  716. package/scripts/issue/issue-file-pass.ts +17 -0
  717. package/scripts/issue/issue-file.ts +3 -0
  718. package/scripts/issue/issue-not-before.ts +9 -2
  719. package/scripts/issue/issue-observation-gate.ts +141 -0
  720. package/scripts/issue/issue-observation-prime.ts +83 -0
  721. package/scripts/issue/issue-publication-state.ts +61 -0
  722. package/scripts/issue/issue-publication.ts +144 -0
  723. package/scripts/issue/issue-sample-prime.ts +2 -0
  724. package/scripts/issue/issue-search-count.ts +26 -0
  725. package/scripts/issue/issue-search.ts +128 -3
  726. package/scripts/issue/issue-spill-cli.ts +4 -0
  727. package/scripts/issue/upstream-interrupt-cli.ts +21 -5
  728. package/scripts/josh/josh-commands-ai.ts +1 -1
  729. package/scripts/josh/josh-commands-development.ts +1 -1
  730. package/scripts/josh/josh-commands-issue-write.ts +9 -0
  731. package/scripts/josh/josh-commands-run.ts +6 -1
  732. package/scripts/josh/josh-commands-ship.ts +5 -5
  733. package/scripts/josh/josh-run.ts +5 -2
  734. package/scripts/josh/shared-cache.ts +16 -1
  735. package/scripts/lane/lane-await.ts +15 -0
  736. package/scripts/lane/lane-cli.ts +2 -0
  737. package/scripts/lane/lane-dispatch-dependency.ts +102 -0
  738. package/scripts/lane/lane-dispatch-wait-stats.ts +239 -0
  739. package/scripts/lane/lane-dispatch.ts +44 -5
  740. package/scripts/lane/lane-early-push-count.ts +21 -0
  741. package/scripts/lane/lane-install.ts +15 -5
  742. package/scripts/lane/lane-launch-cli.ts +35 -14
  743. package/scripts/lane/lane-ledger-kind.ts +2 -0
  744. package/scripts/lane/lane-ledger-schema-ship.ts +5 -1
  745. package/scripts/lane/lane-ledger-schema.ts +15 -1
  746. package/scripts/lane/lane-ledger-write.ts +4 -1
  747. package/scripts/lane/lane-relaunch.ts +25 -2
  748. package/scripts/lane/lane-state-record.ts +2 -0
  749. package/scripts/lane/lane-state.ts +8 -1
  750. package/scripts/lane/lane-stats-tables.ts +2 -0
  751. package/scripts/lane/openai-lane-supervisor.ts +16 -1
  752. package/scripts/lib/inherited-scope.ts +48 -0
  753. package/scripts/lint/format-steps.ts +93 -0
  754. package/scripts/lint/format.ts +6 -49
  755. package/scripts/lint/lint-related-fix.ts +35 -0
  756. package/scripts/lint/lint-related.ts +22 -35
  757. package/scripts/propagate/propagate-steps.ts +9 -4
  758. package/scripts/registry-migration/migrate-cli.ts +50 -0
  759. package/scripts/registry-migration/migrate-files.ts +154 -0
  760. package/scripts/registry-migration/migrate-lock.ts +147 -0
  761. package/scripts/registry-migration/migrate.ts +235 -0
  762. package/scripts/registry-migration/npm-acquisition.ts +118 -0
  763. package/scripts/review/review-record-cli.ts +27 -13
  764. package/scripts/review/review-record-pinned.ts +15 -6
  765. package/scripts/run/add/run-add-cli.ts +21 -3
  766. package/scripts/run/add/run-add.ts +26 -9
  767. package/scripts/run/board/run-board-layout.ts +11 -6
  768. package/scripts/run/board/run-board-read.ts +29 -69
  769. package/scripts/run/board/run-board-reason.ts +12 -0
  770. package/scripts/run/board/run-board-render-lanes.ts +26 -9
  771. package/scripts/run/board/run-board-render-lead.ts +9 -0
  772. package/scripts/run/board/run-board-retry-wait.ts +35 -0
  773. package/scripts/run/board/run-board-root-layout.ts +69 -0
  774. package/scripts/run/board/run-board-seat.ts +9 -2
  775. package/scripts/run/board/run-board-setup.ts +6 -4
  776. package/scripts/run/board/run-board-single.ts +69 -4
  777. package/scripts/run/board/run-board-span-read.ts +85 -0
  778. package/scripts/run/board/run-board-tick.ts +12 -4
  779. package/scripts/run/carry/run-carry-reclaim.ts +12 -2
  780. package/scripts/run/carry/run-carry-session.ts +48 -0
  781. package/scripts/run/carry/run-carry.ts +21 -14
  782. package/scripts/run/cut/run-cut-resume.ts +15 -3
  783. package/scripts/run/cut/run-cut.ts +1 -1
  784. package/scripts/run/detached-launch.ts +14 -5
  785. package/scripts/run/early-push-record.ts +6 -2
  786. package/scripts/run/event/run-event-setup.ts +2 -0
  787. package/scripts/run/event/run-event-stream-emit.ts +27 -7
  788. package/scripts/run/hold/run-hold-cli.ts +40 -5
  789. package/scripts/run/hold/run-hold-ended.ts +50 -0
  790. package/scripts/run/merge/run-merge-cut-release.ts +17 -0
  791. package/scripts/run/merge/run-merge-human-review.ts +6 -0
  792. package/scripts/run/merge/run-merge-steps.ts +4 -57
  793. package/scripts/run/merge/run-merge-waits.ts +54 -0
  794. package/scripts/run/prime/run-prime-cli.ts +16 -2
  795. package/scripts/run/review/run-review-cli.ts +5 -7
  796. package/scripts/run/review/run-review-early-push.ts +19 -8
  797. package/scripts/run/review/run-review-join-read.ts +33 -6
  798. package/scripts/run/review/run-review-pinned-remaining.ts +124 -0
  799. package/scripts/run/review/run-review-pinned-steps.ts +7 -1
  800. package/scripts/run/run-halfrun-resume.ts +49 -6
  801. package/scripts/run/run-headless.ts +3 -0
  802. package/scripts/run/run-pr-return.ts +14 -5
  803. package/scripts/run/run-repair-attempt.ts +219 -0
  804. package/scripts/run/ship/run-ship-lap.ts +5 -17
  805. package/scripts/run/ship/run-ship-pre-detach-pinned.ts +4 -13
  806. package/scripts/run/ship/run-ship-scoped.ts +66 -30
  807. package/scripts/run/startup/run-startup-schema.ts +31 -0
  808. package/scripts/run/startup/run-startup-store.ts +130 -0
  809. package/scripts/run/startup/run-startup.ts +119 -0
  810. package/scripts/run/wake/run-wake-codex.ts +144 -0
  811. package/scripts/run/wake/run-wake-driver.ts +32 -7
  812. package/scripts/run/wake/run-wake-handoff.ts +9 -8
  813. package/scripts/run/wake/run-wake-loop.ts +23 -3
  814. package/scripts/run/wake/run-wake-ports.ts +17 -3
  815. package/scripts/run/wake/run-wake-takeover.ts +6 -3
  816. package/scripts/run/wake/run-wake-window.ts +4 -1
  817. package/scripts/run/wake/run-wake.ts +5 -0
  818. package/scripts/sync/sync-ai-files.ts +17 -0
  819. package/scripts/sync/sync-configs.ts +11 -1
  820. package/scripts/sync/sync.ts +5 -1
  821. package/scripts/test/test-pinned-cache-logic.ts +13 -7
  822. package/scripts/test/test-pinned-cache.ts +33 -11
  823. package/scripts/test/test-related-cap.ts +7 -3
  824. package/scripts/test/test-related-imports.ts +92 -0
  825. package/scripts/test/test-runner-config.ts +19 -0
  826. package/scripts/test/vitest-failure-summary.ts +7 -0
  827. package/scripts/version/npm-registry.ts +45 -7
  828. package/scripts/version/upgrade-shell-command.ts +34 -2
  829. package/templates/workflows/ci.yml +0 -15
  830. package/templates/workflows/github-release.yml +0 -5
  831. package/dist/commands/chunk-23GH6B3D.js +0 -333
  832. package/dist/commands/chunk-24OATKOF.js +0 -7534
  833. package/dist/commands/chunk-24ZDAWML.js +0 -48
  834. package/dist/commands/chunk-2BB5ZR2F.js +0 -128
  835. package/dist/commands/chunk-2BJJUTZA.js +0 -59
  836. package/dist/commands/chunk-2CXT6MBR.js +0 -51
  837. package/dist/commands/chunk-2DJLAUYB.js +0 -109
  838. package/dist/commands/chunk-2EZTYLO4.js +0 -179
  839. package/dist/commands/chunk-2FJJYCBD.js +0 -149
  840. package/dist/commands/chunk-2PHOLX62.js +0 -43
  841. package/dist/commands/chunk-2QM72JCJ.js +0 -338
  842. package/dist/commands/chunk-2VRITY55.js +0 -41
  843. package/dist/commands/chunk-2XAH3MHV.js +0 -23
  844. package/dist/commands/chunk-34KZDKQJ.js +0 -304
  845. package/dist/commands/chunk-352KLSFX.js +0 -67
  846. package/dist/commands/chunk-36LOGVJ7.js +0 -38
  847. package/dist/commands/chunk-3AEDZZNL.js +0 -223
  848. package/dist/commands/chunk-3B2HEFNO.js +0 -51
  849. package/dist/commands/chunk-3PEXBHRN.js +0 -33
  850. package/dist/commands/chunk-3Z425MM3.js +0 -61
  851. package/dist/commands/chunk-3ZOX4G4U.js +0 -88
  852. package/dist/commands/chunk-452HWOJ7.js +0 -395
  853. package/dist/commands/chunk-475EFIJV.js +0 -178
  854. package/dist/commands/chunk-47UZB54M.js +0 -73
  855. package/dist/commands/chunk-4DN4XVPL.js +0 -716
  856. package/dist/commands/chunk-4DVM57T7.js +0 -86
  857. package/dist/commands/chunk-4EADHJVC.js +0 -247
  858. package/dist/commands/chunk-4HERA2GY.js +0 -95
  859. package/dist/commands/chunk-4JI35CVO.js +0 -70
  860. package/dist/commands/chunk-4L4LNWZ7.js +0 -143
  861. package/dist/commands/chunk-4N32QKJZ.js +0 -170
  862. package/dist/commands/chunk-4NRSFLG7.js +0 -185
  863. package/dist/commands/chunk-4OKRPAUT.js +0 -98
  864. package/dist/commands/chunk-4PUKDAXL.js +0 -42
  865. package/dist/commands/chunk-4Q64PG46.js +0 -478
  866. package/dist/commands/chunk-4UDTQVDD.js +0 -278
  867. package/dist/commands/chunk-4WR2LEZL.js +0 -123
  868. package/dist/commands/chunk-4ZJOC6OK.js +0 -298
  869. package/dist/commands/chunk-4ZQM4I7R.js +0 -533
  870. package/dist/commands/chunk-54X37JEJ.js +0 -170
  871. package/dist/commands/chunk-56KW5EOK.js +0 -85
  872. package/dist/commands/chunk-5CG3XU3O.js +0 -74
  873. package/dist/commands/chunk-5ESZLHDZ.js +0 -514
  874. package/dist/commands/chunk-5FBRMARM.js +0 -578
  875. package/dist/commands/chunk-5RG4S66L.js +0 -47
  876. package/dist/commands/chunk-5UJGACVN.js +0 -137
  877. package/dist/commands/chunk-5Y7B7FDL.js +0 -44
  878. package/dist/commands/chunk-5Z6E5ZUV.js +0 -89
  879. package/dist/commands/chunk-5ZNUH4LV.js +0 -1722
  880. package/dist/commands/chunk-5ZTQX7OS.js +0 -125
  881. package/dist/commands/chunk-66NX6EXR.js +0 -29
  882. package/dist/commands/chunk-66TGK5XL.js +0 -84
  883. package/dist/commands/chunk-6CFHLMKM.js +0 -555
  884. package/dist/commands/chunk-6DDK5XWK.js +0 -74
  885. package/dist/commands/chunk-6GQX752S.js +0 -145
  886. package/dist/commands/chunk-6HRRZANN.js +0 -55
  887. package/dist/commands/chunk-6MAZ55GF.js +0 -1241
  888. package/dist/commands/chunk-6OP63TBT.js +0 -78
  889. package/dist/commands/chunk-6Q3XUCLM.js +0 -204
  890. package/dist/commands/chunk-6RUWU2SB.js +0 -45
  891. package/dist/commands/chunk-6UCWAFQY.js +0 -245
  892. package/dist/commands/chunk-6WKJ3GDA.js +0 -408
  893. package/dist/commands/chunk-6YURRFRU.js +0 -461
  894. package/dist/commands/chunk-6YVURZAJ.js +0 -350
  895. package/dist/commands/chunk-6Z4YZG7P.js +0 -169
  896. package/dist/commands/chunk-77BIN247.js +0 -122
  897. package/dist/commands/chunk-7ABHNNY3.js +0 -529
  898. package/dist/commands/chunk-7C7FOKJK.js +0 -115
  899. package/dist/commands/chunk-7HAGC6SW.js +0 -1062
  900. package/dist/commands/chunk-7KKUFLH5.js +0 -56
  901. package/dist/commands/chunk-7LJQMM2K.js +0 -102
  902. package/dist/commands/chunk-7MJYLUF4.js +0 -99
  903. package/dist/commands/chunk-7NHZCI5Y.js +0 -704
  904. package/dist/commands/chunk-7OQ56DVW.js +0 -239
  905. package/dist/commands/chunk-7VWPGTZO.js +0 -260
  906. package/dist/commands/chunk-7YZXS3AK.js +0 -30
  907. package/dist/commands/chunk-A4HOQKOG.js +0 -85
  908. package/dist/commands/chunk-A6T2N7VC.js +0 -159
  909. package/dist/commands/chunk-AAUDI7WJ.js +0 -250
  910. package/dist/commands/chunk-AC26ZUG5.js +0 -259
  911. package/dist/commands/chunk-ACZ52JPI.js +0 -140
  912. package/dist/commands/chunk-AJ65WNJB.js +0 -230
  913. package/dist/commands/chunk-AK7SEO4Y.js +0 -177
  914. package/dist/commands/chunk-AKK56GNX.js +0 -205
  915. package/dist/commands/chunk-AKQYYHP2.js +0 -461
  916. package/dist/commands/chunk-ALDAS2WG.js +0 -137
  917. package/dist/commands/chunk-ANUTT56I.js +0 -85
  918. package/dist/commands/chunk-AVVMDVGO.js +0 -68
  919. package/dist/commands/chunk-B3M5WSGN.js +0 -72
  920. package/dist/commands/chunk-B7ZNIEDV.js +0 -351
  921. package/dist/commands/chunk-BCUDQWYK.js +0 -77
  922. package/dist/commands/chunk-BF6YX4HE.js +0 -70
  923. package/dist/commands/chunk-BHRS7HAM.js +0 -272
  924. package/dist/commands/chunk-BIKGPT52.js +0 -29
  925. package/dist/commands/chunk-BJA5U4Q7.js +0 -75
  926. package/dist/commands/chunk-BMKWSWWE.js +0 -126
  927. package/dist/commands/chunk-BMTYUJNT.js +0 -59
  928. package/dist/commands/chunk-BRHPRDDV.js +0 -127
  929. package/dist/commands/chunk-BRUBX64M.js +0 -33
  930. package/dist/commands/chunk-BTZJDHQT.js +0 -46
  931. package/dist/commands/chunk-BYFC6MD2.js +0 -72
  932. package/dist/commands/chunk-BYGJ3BCJ.js +0 -803
  933. package/dist/commands/chunk-C2SEDMZ3.js +0 -238
  934. package/dist/commands/chunk-C54QXJD6.js +0 -4208
  935. package/dist/commands/chunk-C6QSVO5K.js +0 -56
  936. package/dist/commands/chunk-CBAKBWSZ.js +0 -332
  937. package/dist/commands/chunk-CFHRNTE5.js +0 -326
  938. package/dist/commands/chunk-CGLLAEKZ.js +0 -110
  939. package/dist/commands/chunk-CHKYPF5O.js +0 -82
  940. package/dist/commands/chunk-CJBW6BWG.js +0 -800
  941. package/dist/commands/chunk-CJKPF5DJ.js +0 -156
  942. package/dist/commands/chunk-CKUKK7JG.js +0 -252
  943. package/dist/commands/chunk-CMHGDCGN.js +0 -263
  944. package/dist/commands/chunk-CNGTHSUS.js +0 -750
  945. package/dist/commands/chunk-CP2J4RV2.js +0 -3987
  946. package/dist/commands/chunk-CQZI7RIK.js +0 -72
  947. package/dist/commands/chunk-CWCKCZS6.js +0 -188
  948. package/dist/commands/chunk-D5HIP4HT.js +0 -289
  949. package/dist/commands/chunk-D6D6WQR6.js +0 -125
  950. package/dist/commands/chunk-D7JRJI44.js +0 -297
  951. package/dist/commands/chunk-D7OAU32Z.js +0 -119
  952. package/dist/commands/chunk-DAAX7XDS.js +0 -1208
  953. package/dist/commands/chunk-DBKTFB5V.js +0 -18
  954. package/dist/commands/chunk-DEZF7QZZ.js +0 -184
  955. package/dist/commands/chunk-DMD74E3F.js +0 -39
  956. package/dist/commands/chunk-DPJVKTO4.js +0 -41
  957. package/dist/commands/chunk-DXJQHJQ4.js +0 -73
  958. package/dist/commands/chunk-DYZOOWVW.js +0 -912
  959. package/dist/commands/chunk-EBI2BAKQ.js +0 -47
  960. package/dist/commands/chunk-EDKOSZ3K.js +0 -88
  961. package/dist/commands/chunk-EFDVE5P5.js +0 -121
  962. package/dist/commands/chunk-EGIHAEMT.js +0 -72
  963. package/dist/commands/chunk-EKLU6QR7.js +0 -507
  964. package/dist/commands/chunk-ELY76WAR.js +0 -65
  965. package/dist/commands/chunk-EM3HAZF6.js +0 -52
  966. package/dist/commands/chunk-EMTZAGT5.js +0 -51
  967. package/dist/commands/chunk-ENKFCOVY.js +0 -472
  968. package/dist/commands/chunk-ERG4QRNG.js +0 -224
  969. package/dist/commands/chunk-EUGNQCYK.js +0 -139
  970. package/dist/commands/chunk-EW4NPUMQ.js +0 -363
  971. package/dist/commands/chunk-EWVR5AEX.js +0 -140
  972. package/dist/commands/chunk-EXDFKKMH.js +0 -113
  973. package/dist/commands/chunk-EXWB34R2.js +0 -238
  974. package/dist/commands/chunk-EYMPBHDN.js +0 -61
  975. package/dist/commands/chunk-EZ7IPKIH.js +0 -20
  976. package/dist/commands/chunk-EZSO25UZ.js +0 -80
  977. package/dist/commands/chunk-F6IQHZYY.js +0 -94
  978. package/dist/commands/chunk-FDS65XOJ.js +0 -212
  979. package/dist/commands/chunk-FFHEGWPK.js +0 -91
  980. package/dist/commands/chunk-FGL6DBZU.js +0 -71
  981. package/dist/commands/chunk-FHFWNNUC.js +0 -144
  982. package/dist/commands/chunk-FIUCHMCF.js +0 -32
  983. package/dist/commands/chunk-FJX7AENO.js +0 -74
  984. package/dist/commands/chunk-FKZ5E4JD.js +0 -97
  985. package/dist/commands/chunk-FMZWRDKH.js +0 -302
  986. package/dist/commands/chunk-FOKCRIAN.js +0 -67
  987. package/dist/commands/chunk-FQGWO2ZH.js +0 -43
  988. package/dist/commands/chunk-FROACLVU.js +0 -525
  989. package/dist/commands/chunk-FURNDIT3.js +0 -34
  990. package/dist/commands/chunk-FVDQNMP6.js +0 -93
  991. package/dist/commands/chunk-FVVZIJUC.js +0 -425
  992. package/dist/commands/chunk-FWU3H4TX.js +0 -17
  993. package/dist/commands/chunk-G3HBYHFA.js +0 -16
  994. package/dist/commands/chunk-G4E4M2P4.js +0 -299
  995. package/dist/commands/chunk-G5KSL2Q2.js +0 -151
  996. package/dist/commands/chunk-G6XC7V6Y.js +0 -58
  997. package/dist/commands/chunk-GCPP5XIG.js +0 -90
  998. package/dist/commands/chunk-GITT5A5A.js +0 -198
  999. package/dist/commands/chunk-GJYMI2CM.js +0 -48
  1000. package/dist/commands/chunk-GLC47H7I.js +0 -285
  1001. package/dist/commands/chunk-GUR54ELE.js +0 -328
  1002. package/dist/commands/chunk-GW4UWR3O.js +0 -126
  1003. package/dist/commands/chunk-GY4DMCKS.js +0 -306
  1004. package/dist/commands/chunk-H6JQRHDC.js +0 -80
  1005. package/dist/commands/chunk-HATKF6VX.js +0 -173
  1006. package/dist/commands/chunk-HG2NZQD5.js +0 -135
  1007. package/dist/commands/chunk-HH3CVIFU.js +0 -93
  1008. package/dist/commands/chunk-HHMMGDMP.js +0 -469
  1009. package/dist/commands/chunk-HI5WPM6C.js +0 -127
  1010. package/dist/commands/chunk-HQGNXR6I.js +0 -245
  1011. package/dist/commands/chunk-HTIDHEEN.js +0 -108
  1012. package/dist/commands/chunk-HVCQYZVD.js +0 -38
  1013. package/dist/commands/chunk-HWEZRNPL.js +0 -66
  1014. package/dist/commands/chunk-HX3FFIO5.js +0 -74
  1015. package/dist/commands/chunk-HXDTA5VU.js +0 -208
  1016. package/dist/commands/chunk-I2KCGKJI.js +0 -107
  1017. package/dist/commands/chunk-I63RNFFR.js +0 -213
  1018. package/dist/commands/chunk-IAD4WLLI.js +0 -98
  1019. package/dist/commands/chunk-IB5TT73I.js +0 -177
  1020. package/dist/commands/chunk-IBAYXCMU.js +0 -156
  1021. package/dist/commands/chunk-IGDJNXX2.js +0 -49
  1022. package/dist/commands/chunk-ILGPZ47M.js +0 -33
  1023. package/dist/commands/chunk-IYJEBWW5.js +0 -44
  1024. package/dist/commands/chunk-J22PSIXR.js +0 -418
  1025. package/dist/commands/chunk-J66YBAAM.js +0 -161
  1026. package/dist/commands/chunk-J6WKZRV2.js +0 -391
  1027. package/dist/commands/chunk-J7IO3AYH.js +0 -179
  1028. package/dist/commands/chunk-JAKC2BHX.js +0 -88
  1029. package/dist/commands/chunk-JCAQ7B6J.js +0 -124
  1030. package/dist/commands/chunk-JHN6RCE6.js +0 -123
  1031. package/dist/commands/chunk-JIGBNCDR.js +0 -88
  1032. package/dist/commands/chunk-JJHWTFWQ.js +0 -76
  1033. package/dist/commands/chunk-JJRKTWLK.js +0 -64
  1034. package/dist/commands/chunk-JKOGWGQM.js +0 -92
  1035. package/dist/commands/chunk-JM6EVOFN.js +0 -172
  1036. package/dist/commands/chunk-JQXPLMCO.js +0 -81
  1037. package/dist/commands/chunk-JV24VP2O.js +0 -81
  1038. package/dist/commands/chunk-JVKXJ763.js +0 -45
  1039. package/dist/commands/chunk-K275REYP.js +0 -37
  1040. package/dist/commands/chunk-K4G3HOKS.js +0 -105
  1041. package/dist/commands/chunk-K64EIHD2.js +0 -138
  1042. package/dist/commands/chunk-KB3OQWDT.js +0 -71
  1043. package/dist/commands/chunk-KCFOP5RI.js +0 -1310
  1044. package/dist/commands/chunk-KGE4AS2Y.js +0 -134
  1045. package/dist/commands/chunk-KIILCKQR.js +0 -220
  1046. package/dist/commands/chunk-KK2SL42W.js +0 -241
  1047. package/dist/commands/chunk-KKIMVXAP.js +0 -280
  1048. package/dist/commands/chunk-KODXWMBX.js +0 -77
  1049. package/dist/commands/chunk-KPSKWTOS.js +0 -208
  1050. package/dist/commands/chunk-KVHNQHX3.js +0 -100
  1051. package/dist/commands/chunk-KWYQR5MK.js +0 -269
  1052. package/dist/commands/chunk-KXHXMERX.js +0 -214
  1053. package/dist/commands/chunk-KZ5BBBMO.js +0 -271
  1054. package/dist/commands/chunk-KZ7HD37E.js +0 -121
  1055. package/dist/commands/chunk-KZSM5M5P.js +0 -89
  1056. package/dist/commands/chunk-KZZWPUJW.js +0 -25
  1057. package/dist/commands/chunk-L7DAL54N.js +0 -347
  1058. package/dist/commands/chunk-LAR76BFA.js +0 -114
  1059. package/dist/commands/chunk-LB557AHJ.js +0 -192
  1060. package/dist/commands/chunk-LJXKVLYI.js +0 -229
  1061. package/dist/commands/chunk-LOOFYHUM.js +0 -773
  1062. package/dist/commands/chunk-LQXFVZTS.js +0 -13
  1063. package/dist/commands/chunk-LT7QSHR4.js +0 -995
  1064. package/dist/commands/chunk-LUXWDMKI.js +0 -426
  1065. package/dist/commands/chunk-LWAXXZPS.js +0 -118
  1066. package/dist/commands/chunk-LX7TIEMI.js +0 -1612
  1067. package/dist/commands/chunk-LZ5QXE5N.js +0 -244
  1068. package/dist/commands/chunk-LZPPSOTP.js +0 -122
  1069. package/dist/commands/chunk-M4UV3BEV.js +0 -313
  1070. package/dist/commands/chunk-M6JDU5EK.js +0 -133
  1071. package/dist/commands/chunk-MDLOETXL.js +0 -211
  1072. package/dist/commands/chunk-MFBNNTBM.js +0 -44
  1073. package/dist/commands/chunk-MGF64OHV.js +0 -32
  1074. package/dist/commands/chunk-MI2OS6TL.js +0 -132
  1075. package/dist/commands/chunk-MLW4S35K.js +0 -389
  1076. package/dist/commands/chunk-MN425CU6.js +0 -63
  1077. package/dist/commands/chunk-MPGJ4ONJ.js +0 -634
  1078. package/dist/commands/chunk-MRORPFSO.js +0 -402
  1079. package/dist/commands/chunk-MUGTOJUL.js +0 -319
  1080. package/dist/commands/chunk-MVHPRYHE.js +0 -91
  1081. package/dist/commands/chunk-MWO6FOSZ.js +0 -393
  1082. package/dist/commands/chunk-MXC4IBZ7.js +0 -104
  1083. package/dist/commands/chunk-N7QTMTST.js +0 -210
  1084. package/dist/commands/chunk-NDBX7LSS.js +0 -32
  1085. package/dist/commands/chunk-NEGJ77RV.js +0 -173
  1086. package/dist/commands/chunk-NEGRE5VW.js +0 -101
  1087. package/dist/commands/chunk-NFPD2P3V.js +0 -53
  1088. package/dist/commands/chunk-NHIW7JE6.js +0 -335
  1089. package/dist/commands/chunk-NILSN7A4.js +0 -158
  1090. package/dist/commands/chunk-NOLFSPOB.js +0 -74
  1091. package/dist/commands/chunk-NSAVEXVR.js +0 -353
  1092. package/dist/commands/chunk-NT67QTZO.js +0 -65
  1093. package/dist/commands/chunk-NU7W6QGT.js +0 -155
  1094. package/dist/commands/chunk-NYWGJLBU.js +0 -19
  1095. package/dist/commands/chunk-OAAVY2JK.js +0 -49
  1096. package/dist/commands/chunk-OGS2DK7I.js +0 -47
  1097. package/dist/commands/chunk-OHNP3QL2.js +0 -186
  1098. package/dist/commands/chunk-OIPV3PWW.js +0 -870
  1099. package/dist/commands/chunk-OIX2363L.js +0 -16
  1100. package/dist/commands/chunk-OJ65BZBV.js +0 -646
  1101. package/dist/commands/chunk-OKZWEVR4.js +0 -352
  1102. package/dist/commands/chunk-OL6IF4JC.js +0 -20
  1103. package/dist/commands/chunk-OMPRILFH.js +0 -29
  1104. package/dist/commands/chunk-OOWGH2RG.js +0 -85
  1105. package/dist/commands/chunk-OP2RFVLS.js +0 -102
  1106. package/dist/commands/chunk-ORKVN2LO.js +0 -56
  1107. package/dist/commands/chunk-OSBWXZJ4.js +0 -492
  1108. package/dist/commands/chunk-OT3UMEWK.js +0 -47
  1109. package/dist/commands/chunk-OVWPZDWP.js +0 -64
  1110. package/dist/commands/chunk-OWYK2BEJ.js +0 -1222
  1111. package/dist/commands/chunk-OX3VQLV2.js +0 -488
  1112. package/dist/commands/chunk-OZJP77UM.js +0 -103
  1113. package/dist/commands/chunk-OZZWRJQI.js +0 -246
  1114. package/dist/commands/chunk-P3H3DKTE.js +0 -69
  1115. package/dist/commands/chunk-P4D5RESF.js +0 -88
  1116. package/dist/commands/chunk-P4KIQRSL.js +0 -119
  1117. package/dist/commands/chunk-P5SOYWH2.js +0 -37
  1118. package/dist/commands/chunk-P7FPXAHP.js +0 -29
  1119. package/dist/commands/chunk-PE7B7242.js +0 -84
  1120. package/dist/commands/chunk-PFO7EYAP.js +0 -45
  1121. package/dist/commands/chunk-PHLOTUB7.js +0 -366
  1122. package/dist/commands/chunk-PTNQCCIB.js +0 -41
  1123. package/dist/commands/chunk-PTZEFQUX.js +0 -211
  1124. package/dist/commands/chunk-Q5Q2QYVU.js +0 -112
  1125. package/dist/commands/chunk-Q7EEIOAD.js +0 -120
  1126. package/dist/commands/chunk-QABRNGQV.js +0 -88
  1127. package/dist/commands/chunk-QAHFPCFR.js +0 -50
  1128. package/dist/commands/chunk-QDFVVRQP.js +0 -92
  1129. package/dist/commands/chunk-QGAERR7D.js +0 -99
  1130. package/dist/commands/chunk-QHWJJ6X5.js +0 -53
  1131. package/dist/commands/chunk-QJRVDE7T.js +0 -307
  1132. package/dist/commands/chunk-QMDKDQKW.js +0 -114
  1133. package/dist/commands/chunk-QOSC5RKD.js +0 -18
  1134. package/dist/commands/chunk-QQ4CIYMF.js +0 -132
  1135. package/dist/commands/chunk-QV5FKMOU.js +0 -80
  1136. package/dist/commands/chunk-QWWTC3XR.js +0 -109
  1137. package/dist/commands/chunk-QXQ56E56.js +0 -27
  1138. package/dist/commands/chunk-R54Z2Z3X.js +0 -114
  1139. package/dist/commands/chunk-R6QE5VJG.js +0 -46
  1140. package/dist/commands/chunk-RG53UFNW.js +0 -418
  1141. package/dist/commands/chunk-RGGEQM6G.js +0 -140
  1142. package/dist/commands/chunk-RH6ZWJOA.js +0 -77
  1143. package/dist/commands/chunk-RHKCWJQX.js +0 -62
  1144. package/dist/commands/chunk-RKIAX4DZ.js +0 -191
  1145. package/dist/commands/chunk-RLBFEHHC.js +0 -300
  1146. package/dist/commands/chunk-RN2YDNLF.js +0 -229
  1147. package/dist/commands/chunk-RRAIRS2T.js +0 -54
  1148. package/dist/commands/chunk-RS764ZMU.js +0 -46
  1149. package/dist/commands/chunk-RUIBQMOV.js +0 -38
  1150. package/dist/commands/chunk-RUQY5TS3.js +0 -83
  1151. package/dist/commands/chunk-RVUJ6F5L.js +0 -181
  1152. package/dist/commands/chunk-RW64VHEB.js +0 -130
  1153. package/dist/commands/chunk-RXYMJPJB.js +0 -114
  1154. package/dist/commands/chunk-S4M6UWR2.js +0 -103
  1155. package/dist/commands/chunk-SASX3W2M.js +0 -99
  1156. package/dist/commands/chunk-SFNBUB6D.js +0 -110
  1157. package/dist/commands/chunk-SJ2ZN575.js +0 -90
  1158. package/dist/commands/chunk-SP7DKYGU.js +0 -1263
  1159. package/dist/commands/chunk-SSL6A3Y4.js +0 -165
  1160. package/dist/commands/chunk-SVAKCXZ7.js +0 -44
  1161. package/dist/commands/chunk-SYOXIKB7.js +0 -705
  1162. package/dist/commands/chunk-SZG5HDNP.js +0 -321
  1163. package/dist/commands/chunk-T25S4QHL.js +0 -52
  1164. package/dist/commands/chunk-T4F33UKZ.js +0 -114
  1165. package/dist/commands/chunk-T4UYEHWG.js +0 -50
  1166. package/dist/commands/chunk-TAEGXID2.js +0 -58
  1167. package/dist/commands/chunk-TCBUX52E.js +0 -701
  1168. package/dist/commands/chunk-TEPYEUYG.js +0 -585
  1169. package/dist/commands/chunk-TFLHYC2F.js +0 -141
  1170. package/dist/commands/chunk-TJKM56WJ.js +0 -109
  1171. package/dist/commands/chunk-TLAB552K.js +0 -445
  1172. package/dist/commands/chunk-TP6L4W3W.js +0 -82
  1173. package/dist/commands/chunk-TR7WWYD5.js +0 -60
  1174. package/dist/commands/chunk-TVZXG4Y4.js +0 -197
  1175. package/dist/commands/chunk-TYNH2R66.js +0 -1150
  1176. package/dist/commands/chunk-U3IVVR4W.js +0 -33
  1177. package/dist/commands/chunk-U5P6G3UV.js +0 -77
  1178. package/dist/commands/chunk-U7XU5RG3.js +0 -86
  1179. package/dist/commands/chunk-UKBBWMLE.js +0 -1189
  1180. package/dist/commands/chunk-ULVVGGTY.js +0 -64
  1181. package/dist/commands/chunk-UNMSZGSG.js +0 -269
  1182. package/dist/commands/chunk-URDT2O2K.js +0 -36
  1183. package/dist/commands/chunk-UTHUX7VU.js +0 -88
  1184. package/dist/commands/chunk-V4Z7G4UH.js +0 -73
  1185. package/dist/commands/chunk-V5FD7DVV.js +0 -48
  1186. package/dist/commands/chunk-VCPGFBMN.js +0 -655
  1187. package/dist/commands/chunk-VGPIQNDB.js +0 -24
  1188. package/dist/commands/chunk-VJE3RJAX.js +0 -23
  1189. package/dist/commands/chunk-VK6D5CWA.js +0 -161
  1190. package/dist/commands/chunk-VOF3N4WO.js +0 -114
  1191. package/dist/commands/chunk-VQVPAVQ3.js +0 -45
  1192. package/dist/commands/chunk-VV4TQYGD.js +0 -38
  1193. package/dist/commands/chunk-W3FX7FYN.js +0 -84
  1194. package/dist/commands/chunk-W7DRUOF7.js +0 -122
  1195. package/dist/commands/chunk-WAEN2RTT.js +0 -161
  1196. package/dist/commands/chunk-WCEUMOKK.js +0 -84
  1197. package/dist/commands/chunk-WJ4NEDNI.js +0 -288
  1198. package/dist/commands/chunk-WMMGXJXP.js +0 -92
  1199. package/dist/commands/chunk-WOFLW2LX.js +0 -26
  1200. package/dist/commands/chunk-WTH6NTXU.js +0 -128
  1201. package/dist/commands/chunk-WWVYEHQT.js +0 -272
  1202. package/dist/commands/chunk-X3TNPALI.js +0 -213
  1203. package/dist/commands/chunk-XC6GG5JR.js +0 -78
  1204. package/dist/commands/chunk-XDF25GSU.js +0 -536
  1205. package/dist/commands/chunk-XFPEUYDV.js +0 -67
  1206. package/dist/commands/chunk-XFWI6WHH.js +0 -60
  1207. package/dist/commands/chunk-XGMRAKSL.js +0 -85
  1208. package/dist/commands/chunk-XHGWMD3L.js +0 -104
  1209. package/dist/commands/chunk-XKSUBUIH.js +0 -116
  1210. package/dist/commands/chunk-XPBF5DG3.js +0 -419
  1211. package/dist/commands/chunk-XUMYPESL.js +0 -160
  1212. package/dist/commands/chunk-XXC32PVL.js +0 -541
  1213. package/dist/commands/chunk-XXN2EZBY.js +0 -133
  1214. package/dist/commands/chunk-XXNEY4B3.js +0 -110
  1215. package/dist/commands/chunk-Y27PTXXI.js +0 -258
  1216. package/dist/commands/chunk-Y4EBUI6M.js +0 -237
  1217. package/dist/commands/chunk-YAU3LYNF.js +0 -60
  1218. package/dist/commands/chunk-YDURQICF.js +0 -204
  1219. package/dist/commands/chunk-YGFOGA7C.js +0 -1153
  1220. package/dist/commands/chunk-YHJ2AJMA.js +0 -66
  1221. package/dist/commands/chunk-YIA6FC3K.js +0 -78
  1222. package/dist/commands/chunk-YM77CF4D.js +0 -183
  1223. package/dist/commands/chunk-YNPRJCEO.js +0 -81
  1224. package/dist/commands/chunk-YTBQAD5W.js +0 -170
  1225. package/dist/commands/chunk-YVH2OLDS.js +0 -104
  1226. package/dist/commands/chunk-ZAAHZY2A.js +0 -19
  1227. package/dist/commands/chunk-ZBZ5DDCH.js +0 -1866
  1228. package/dist/commands/chunk-ZLRUHSOP.js +0 -48
  1229. package/dist/commands/chunk-ZNR75OXP.js +0 -444
  1230. package/dist/commands/chunk-ZSOR4ISJ.js +0 -75
  1231. package/dist/commands/chunk-ZVAIIHBE.js +0 -63
  1232. package/dist/commands/chunk-ZYFHYQA7.js +0 -51
  1233. package/dist/commands/chunk-ZZFFSQF4.js +0 -218
  1234. package/dist/commands/chunk-ZZULXNC2.js +0 -47
  1235. package/dist/commands/chunk-ZZXO6TFH.js +0 -232
  1236. package/dist/commands/run-ship-lap-W5T2VHFC.js +0 -30
  1237. package/dist/commands/test-related-ZCNC46MS.js +0 -113
  1238. package/dist/commands/unused-members-STULPRBU.js +0 -331
  1239. package/dist/hooks/chunk-5CUXGQT6.js +0 -8353
  1240. package/dist/hooks/chunk-5R5YFQR5.js +0 -931
  1241. package/dist/hooks/chunk-6RLY27FT.js +0 -232
  1242. package/dist/hooks/chunk-6YGMIODI.js +0 -86
  1243. package/dist/hooks/chunk-AO4TOV4V.js +0 -5026
  1244. package/dist/hooks/chunk-FOW4B7OQ.js +0 -1795
  1245. package/dist/hooks/chunk-G5WSPYJ6.js +0 -5663
  1246. package/dist/hooks/chunk-HHIVWGHX.js +0 -6869
  1247. package/dist/hooks/chunk-IURJANNZ.js +0 -1082
  1248. package/dist/hooks/chunk-OV22V63P.js +0 -10980
  1249. package/dist/hooks/chunk-SXABK6UV.js +0 -321
  1250. package/dist/hooks/run-ship-lap-VCEOUHQI.js +0 -8
@@ -0,0 +1,1885 @@
1
+ import {
2
+ lane_breakdown_text
3
+ } from "./chunk-UIXQ4IYT.js";
4
+ import {
5
+ api_outage,
6
+ run_ending
7
+ } from "./chunk-NHEBKL7X.js";
8
+ import {
9
+ lane_investigation_switch,
10
+ run_event_overrun
11
+ } from "./chunk-VTLWODJ2.js";
12
+ import {
13
+ lane_withdraw_closed
14
+ } from "./chunk-OT74RSQO.js";
15
+ import {
16
+ lane_preserve
17
+ } from "./chunk-VMG3QB6C.js";
18
+ import {
19
+ issue_merged
20
+ } from "./chunk-E3YKMCCJ.js";
21
+ import {
22
+ lane_reap_settle
23
+ } from "./chunk-XUXCFPDK.js";
24
+ import {
25
+ lane_residents
26
+ } from "./chunk-43H725LG.js";
27
+ import {
28
+ run_ship_stop_text
29
+ } from "./chunk-U5HQQWRE.js";
30
+ import {
31
+ run_merge_driver
32
+ } from "./chunk-RNB3DQOZ.js";
33
+ import {
34
+ gh_core_rate_limit,
35
+ run_merge_token,
36
+ run_merge_usage_limit
37
+ } from "./chunk-TXRWAL63.js";
38
+ import {
39
+ lane_vacant
40
+ } from "./chunk-YOZTZMAT.js";
41
+ import {
42
+ run_event_filed
43
+ } from "./chunk-PYOK73QE.js";
44
+ import {
45
+ lane_relaunch
46
+ } from "./chunk-ZV6BZZJ2.js";
47
+ import {
48
+ api_auth
49
+ } from "./chunk-NUR4FQHM.js";
50
+ import {
51
+ agent_exit_record
52
+ } from "./chunk-GPTO6IZG.js";
53
+ import {
54
+ lane_dispatch_dependency
55
+ } from "./chunk-NDQIJBRQ.js";
56
+ import {
57
+ issue_state_cli
58
+ } from "./chunk-E4PFCTXN.js";
59
+ import {
60
+ git_followup_issue_close,
61
+ settled_together
62
+ } from "./chunk-JHIGDFBS.js";
63
+ import {
64
+ epic_close
65
+ } from "./chunk-FT33ZCSB.js";
66
+ import {
67
+ lane_ledger_archive
68
+ } from "./chunk-ESUY7KTZ.js";
69
+ import {
70
+ run_label
71
+ } from "./chunk-KN46UC77.js";
72
+ import {
73
+ issue_not_before
74
+ } from "./chunk-PCZROH3R.js";
75
+ import {
76
+ issue_closing_pr,
77
+ issue_sample_prime
78
+ } from "./chunk-WWLCQREY.js";
79
+ import {
80
+ josh_command
81
+ } from "./chunk-47J4KOZP.js";
82
+ import {
83
+ issue_priority
84
+ } from "./chunk-XI2ABCRX.js";
85
+ import {
86
+ telegram_notify
87
+ } from "./chunk-MDKRTUE4.js";
88
+ import {
89
+ lane_breakdown_implement
90
+ } from "./chunk-A3JYZWBS.js";
91
+ import {
92
+ lane_breakdown
93
+ } from "./chunk-R7PYR4HW.js";
94
+ import {
95
+ lane_net_time
96
+ } from "./chunk-SNSZ25XZ.js";
97
+ import {
98
+ lane_yield
99
+ } from "./chunk-GZL6ISVM.js";
100
+ import {
101
+ lane_stage_stats
102
+ } from "./chunk-J4XHEOOW.js";
103
+ import {
104
+ git_gh_command
105
+ } from "./chunk-NRULNBYI.js";
106
+ import {
107
+ stop_decision
108
+ } from "./chunk-3ZEO3KOM.js";
109
+ import {
110
+ lane_park
111
+ } from "./chunk-5FUI2MLY.js";
112
+ import {
113
+ agent_argv
114
+ } from "./chunk-L7MDU6D7.js";
115
+ import {
116
+ lane_tail_stats
117
+ } from "./chunk-2XLR7R6E.js";
118
+ import {
119
+ lane_await
120
+ } from "./chunk-5Y7FOJLX.js";
121
+ import {
122
+ lane_ledger
123
+ } from "./chunk-2O64H5UJ.js";
124
+ import {
125
+ bash_triggers
126
+ } from "./chunk-2BC33QPY.js";
127
+ import {
128
+ shell_segments
129
+ } from "./chunk-CVJHQOI3.js";
130
+ import {
131
+ issue_body_keys
132
+ } from "./chunk-KXK2A2HB.js";
133
+ import {
134
+ issue_park
135
+ } from "./chunk-736NECRD.js";
136
+ import {
137
+ run_stalled
138
+ } from "./chunk-N2XH7QBY.js";
139
+ import {
140
+ git_gh_issue_write
141
+ } from "./chunk-4F4KARQN.js";
142
+ import {
143
+ run_cut,
144
+ run_cut_adoption
145
+ } from "./chunk-TFDVTU6O.js";
146
+ import {
147
+ time_reported_failure
148
+ } from "./chunk-YSLGWRQN.js";
149
+ import {
150
+ cost_blocks,
151
+ time_josh_names,
152
+ time_shell
153
+ } from "./chunk-LHKXJD6L.js";
154
+ import {
155
+ lane_registry
156
+ } from "./chunk-NEOCCN6D.js";
157
+ import {
158
+ lane_handoff
159
+ } from "./chunk-BRMJVCP7.js";
160
+ import {
161
+ agent_event
162
+ } from "./chunk-LULJUD6P.js";
163
+ import {
164
+ run_ship_detach
165
+ } from "./chunk-FJM2HWKW.js";
166
+ import {
167
+ detached_launch
168
+ } from "./chunk-HDVSZ6CZ.js";
169
+ import {
170
+ transcript_record
171
+ } from "./chunk-O3NDWYNT.js";
172
+ import {
173
+ run_event_scope,
174
+ run_event_stream_emit
175
+ } from "./chunk-26JL4UU4.js";
176
+ import {
177
+ run_event_stream
178
+ } from "./chunk-KGSEWOKI.js";
179
+ import {
180
+ lane_state
181
+ } from "./chunk-7EAYFMDN.js";
182
+ import {
183
+ EPIC_LABEL,
184
+ NEEDS_DECISION_LABEL,
185
+ NEEDS_HUMAN_MERGE_LABEL,
186
+ NOT_BEFORE_LABEL,
187
+ PRIORITY_CRITICAL_LABEL,
188
+ RUN_SOLO_LABEL,
189
+ RUN_STALLED_LABEL,
190
+ has_label_name,
191
+ has_parked_label
192
+ } from "./chunk-QQBMVC5W.js";
193
+ import {
194
+ agent_profile_schema
195
+ } from "./chunk-F7B4ESZE.js";
196
+ import {
197
+ lane_reap
198
+ } from "./chunk-ON4IKRGS.js";
199
+ import {
200
+ run_ship_stage
201
+ } from "./chunk-PUQA7F6Y.js";
202
+ import {
203
+ session_cite
204
+ } from "./chunk-22DVQCP6.js";
205
+ import {
206
+ issue_cite
207
+ } from "./chunk-HQ2HSZBN.js";
208
+ import {
209
+ poll
210
+ } from "./chunk-SBGTCT2C.js";
211
+ import {
212
+ lane_ledger_write
213
+ } from "./chunk-KIS7JFNP.js";
214
+ import {
215
+ run_carry,
216
+ run_carry_conversation
217
+ } from "./chunk-DS53UUDH.js";
218
+ import {
219
+ lane_child_marker
220
+ } from "./chunk-XXPDFJRI.js";
221
+ import {
222
+ issue_number_shape
223
+ } from "./chunk-G75GWNNY.js";
224
+ import {
225
+ cli_flags
226
+ } from "./chunk-2FE3C4PH.js";
227
+ import {
228
+ process_identity
229
+ } from "./chunk-F2RDEF2J.js";
230
+ import {
231
+ git_common_directory
232
+ } from "./chunk-JPMAW2VZ.js";
233
+ import {
234
+ stamp_file
235
+ } from "./chunk-VLN6TSPJ.js";
236
+ import {
237
+ PROJECT_ROOT
238
+ } from "./chunk-3CCGKX7Y.js";
239
+ import {
240
+ json_value
241
+ } from "./chunk-HIU2WXB6.js";
242
+
243
+ // scripts/run/event/run-event-baseline.ts
244
+ var MERGES_PATTERN = /^baseline @(?<merges>\d+) merges: (?<rest>.*)$/u;
245
+ var STARTED_PREFIX = "started \u2014 ";
246
+ var FAILED_PREFIX = "baseline investigation failed: ";
247
+ function merges_text(merges, rest) {
248
+ return `baseline @${String(merges)} merges: ${rest}`;
249
+ }
250
+ function started_text(merges, outcome) {
251
+ return merges_text(merges, `${STARTED_PREFIX}${outcome}`);
252
+ }
253
+ function ended_text(merges, result) {
254
+ return merges_text(merges, result);
255
+ }
256
+ function failed_text(note) {
257
+ return `${FAILED_PREFIX}${note}`;
258
+ }
259
+ function merges_note(merges, rest) {
260
+ if (rest.startsWith(STARTED_PREFIX)) {
261
+ return { kind: "started", merges, outcome: rest.slice(STARTED_PREFIX.length) };
262
+ }
263
+ return { kind: "ended", merges, result: rest };
264
+ }
265
+ function parse(text) {
266
+ const note = text.slice(FAILED_PREFIX.length);
267
+ if (text.startsWith(FAILED_PREFIX)) return { kind: "failed", note };
268
+ const groups = MERGES_PATTERN.exec(text)?.groups;
269
+ return groups ? merges_note(Number(groups["merges"]), groups["rest"] ?? "") : void 0;
270
+ }
271
+ var run_event_baseline = { ended_text, failed_text, parse, started_text };
272
+
273
+ // scripts/lane/lane-overrun-prompt.ts
274
+ var MAX_FILINGS = 5;
275
+ var MIN_MINUTES = 1;
276
+ var PRIORITY_COMMAND = "pnpm josh issue:priority <N>";
277
+ function duplicate_lines(loss_lines) {
278
+ return [
279
+ "On a duplicate refusal, read each candidate with `pnpm josh issue:read <N>`: one that only fixes",
280
+ "another mechanism, or is only cited, is distinct \u2014 reissue with `--distinct <N,\u2026>`; an open one that",
281
+ "fixes the same mechanism is not filed again but gets a comment recording the recurrence with those four",
282
+ `and ${loss_lines}, and gets those lines added under its background heading too, the cause-loss line`,
283
+ `appended beside the ones already there, since ranking sums every \`${issue_priority.CAUSE_PREFIX}\` line`,
284
+ "and reads only the body (`gh api -X PATCH repos/{owner}/{repo}/issues/<N> -F body=@<file>`). Then",
285
+ `run \`${PRIORITY_COMMAND}\`, which labels it once the sum reaches the high floor. One`,
286
+ "closed before this lane yet recurring here is filed anew as a recurrence, its number in `--distinct`.",
287
+ "A cap refusal is final: stop filing."
288
+ ];
289
+ }
290
+ function file_command(origin) {
291
+ if (origin === void 0) return "pnpm josh issue:file";
292
+ return `pnpm josh issue:file --found-during ${String(origin)}`;
293
+ }
294
+ function grouping(origin, loss_lines) {
295
+ return [
296
+ "Causes whose fixes touch the same file or mechanism are one issue, an acceptance criterion per",
297
+ "cause; causes fixed in different places are separate issues. Before filing one, look for an open",
298
+ 'issue that touches the same files (`pnpm josh issue:scout "<title>" --body-file <draft.md>`, each',
299
+ "candidate read with `pnpm josh issue:read <N>`): when one does, fold its causes into it by",
300
+ "`.claude/skills/workflow-commands/issue-fold-existing.md` instead of filing, the appended part",
301
+ `carrying ${loss_lines}; on a verdict other than \`fold\`, file as below.`,
302
+ "File each other issue with",
303
+ `\`${file_command(origin)}\`, its body carrying those four per cause, and`,
304
+ `${loss_lines} under its background heading, the cause-loss minutes being what that issue's own`,
305
+ "causes would cut \u2014 backlog ranking orders one priority by them, else by the lane's minutes, which every",
306
+ "cause of the lane shares, so a filing without either falls behind every declared one."
307
+ ].join(" ");
308
+ }
309
+ function selection_lines(scope) {
310
+ const limit = `${String(MAX_FILINGS)} causes`;
311
+ return [
312
+ `Estimate each cause's reducible minutes: what its fix would cut from ${scope}. Time the work`,
313
+ "inherently takes (a CI wait the pipeline requires, a review) counts only for the part a fix removes,",
314
+ "and not at all when no fix removes any.",
315
+ `Take at most the ${limit} with the most reducible minutes, largest first, each cutting`,
316
+ `${String(MIN_MINUTES)} minute or more, and drop the rest: file or fold only those.`,
317
+ "File a defect \u2014 a tool did something unneeded or wrong (a rerun on an unchanged tree, a lost scope)",
318
+ `\u2014 as \`${issue_body_keys.line("kind", "bug")}\`, any other cause as \`${issue_body_keys.line("purpose", "time_saving")}\`.`
319
+ ];
320
+ }
321
+ var MEASUREMENT_LINES = [
322
+ "Measure a reach test count \u2014 the test files `pnpm josh test:related` runs for a changed file \u2014 with",
323
+ "`pnpm josh test:reach <file\u2026>`.",
324
+ "Put a measurement criterion (a before / after recorded as an Issue comment) in a prior `--route split`",
325
+ "issue, never in the issue that carries the fix."
326
+ ];
327
+ function result_lines(template) {
328
+ return [
329
+ `Then record the result: \`pnpm josh run:event --append note "${template}"\`,`,
330
+ `the result being \`${run_event_overrun.folded_result(["<A>", "<B>"])}\` naming every issue you folded into`,
331
+ `when you folded any, else \`${run_event_overrun.FILED_RESULT}\` when you filed any, \`${run_event_overrun.recurred_result("<N>")}\``,
332
+ `when you only commented a recurrence on #<N>, else \`${run_event_overrun.none_result("<why, in about 15 characters>")}\`.`
333
+ ];
334
+ }
335
+ function cause_handling(rules) {
336
+ return [
337
+ ...selection_lines(rules.scope),
338
+ grouping(rules.origin, rules.loss_lines),
339
+ ...MEASUREMENT_LINES,
340
+ ...duplicate_lines(rules.loss_lines),
341
+ ...result_lines(rules.template)
342
+ ].join(" ");
343
+ }
344
+ function loss_lines_of(issue, minutes) {
345
+ const cite = issue_cite.plain_for("program", issue);
346
+ return `\`${issue_priority.LANE_PREFIX} ${minutes} \u5206\uFF08${cite}\uFF09\` and \`${issue_priority.CAUSE_PREFIX} <\u5206> \u5206\``;
347
+ }
348
+ var STAGE_ORDER = [
349
+ "Search for causes stage by stage, in the order of the net time by stage above, longest first.",
350
+ `For each stage you judge not reducible, end the result with \`${run_event_overrun.NOT_REDUCIBLE_LEAD}<stage> (<why>)\`.`
351
+ ].join(" ");
352
+ function handling(issue, minutes) {
353
+ const rules = cause_handling({
354
+ origin: issue,
355
+ loss_lines: loss_lines_of(issue, String(minutes)),
356
+ template: run_event_overrun.ended_text(issue, "<result>"),
357
+ scope: "this lane alone, judged from its own record"
358
+ });
359
+ return `${STAGE_ORDER} ${rules}`;
360
+ }
361
+ var lane_overrun_prompt = { cause_handling, handling, loss_lines_of };
362
+
363
+ // scripts/lane/lane-overrun.ts
364
+ var { EVENT_KIND } = run_event_stream;
365
+ var { DISABLED_REASON } = run_event_overrun;
366
+ var LOG_PREFIX = "josh-lane-overrun-";
367
+ var LOG_SUFFIX = ".log";
368
+ var NO_LEDGER = "no ledger";
369
+ var MAX_LAUNCH_FAILURES = 2;
370
+ function overrun_notes(events) {
371
+ return events.flatMap(
372
+ (event) => event.kind === EVENT_KIND.NOTE ? run_event_overrun.parse(event.text) ?? [] : []
373
+ );
374
+ }
375
+ function is_thrown(note) {
376
+ return note.kind === "failed" && note.minutes === void 0;
377
+ }
378
+ function is_launch_failure(note) {
379
+ return note.kind === "failed" && note.minutes !== void 0;
380
+ }
381
+ function is_final(note) {
382
+ return !is_thrown(note) && !is_launch_failure(note);
383
+ }
384
+ function is_noted(events, issue) {
385
+ const notes = overrun_notes(events).filter((note) => note.issue === issue);
386
+ const failures = notes.filter((note) => is_launch_failure(note)).length;
387
+ return failures >= MAX_LAUNCH_FAILURES || notes.some((note) => is_final(note));
388
+ }
389
+ function retried_lanes(events, issue) {
390
+ const latest = new Map(overrun_notes(events).map((note) => [note.issue, note]));
391
+ latest.delete(issue);
392
+ return [...latest.values()].filter((note) => is_launch_failure(note) && !is_noted(events, note.issue)).map((note) => note.issue);
393
+ }
394
+ function is_commented(events, issue) {
395
+ return overrun_notes(events).some((note) => note.issue === issue);
396
+ }
397
+ function net_in(path2, events, issue) {
398
+ const entries = lane_ledger_archive.history_at(path2);
399
+ const minutes = lane_net_time.net_minutes(entries, events, issue);
400
+ const breakdown = lane_breakdown.of(entries, events, issue);
401
+ if (minutes === void 0 || breakdown === void 0) {
402
+ return { kind: "missing", reason: lane_net_time.missing_reason(entries, issue) };
403
+ }
404
+ return {
405
+ kind: "minutes",
406
+ minutes,
407
+ breakdown,
408
+ entries,
409
+ events,
410
+ is_commented: is_commented(events, issue)
411
+ };
412
+ }
413
+ async function net_of(issue) {
414
+ const events = await run_event_stream_emit.all_events();
415
+ if (is_noted(events, issue)) return void 0;
416
+ const path2 = await lane_ledger.target();
417
+ return path2 === void 0 ? { kind: "missing", reason: NO_LEDGER } : net_in(path2, events, issue);
418
+ }
419
+ function reading(issue, cite, minutes) {
420
+ const directories = lane_breakdown_implement.transcript_directories(issue).join(", ") || "none found";
421
+ return [
422
+ `Investigate why lane ${cite} took ${String(minutes)} minutes of net time (dispatch to merge, less`,
423
+ "its waits on a person and on outages). Leave this checkout as it is: write any file, an issue body",
424
+ "included, under the system temp directory, and never stage, commit or push.",
425
+ `Read the lane's transcripts (${directories}), its ship log (\`pnpm josh ship --log ${String(issue)}\`)`,
426
+ "and the run events (`pnpm josh run:event --from 0`), and find the causes that spent time other than",
427
+ "waiting. Trace each cause to what can fix it: the span it spent, the signal that led to the wrong call",
428
+ "or the wait (which command printed what), the `file:line` of the code or document that decided it, and",
429
+ "where to fix it."
430
+ ].join(" ");
431
+ }
432
+ function prompt(issue, minutes, report) {
433
+ const reads = reading(issue, issue_cite.plain_for("program", issue), minutes);
434
+ const stages = lane_breakdown_text.line(report);
435
+ return `${stages} ${reads} ${lane_overrun_prompt.handling(issue, minutes)}`;
436
+ }
437
+ function note_failure(issue) {
438
+ return (note) => {
439
+ void run_event_stream_emit.emit(EVENT_KIND.NOTE, run_event_overrun.failed_text(issue, note));
440
+ };
441
+ }
442
+ function launch(investigation) {
443
+ const cwd = process.cwd();
444
+ const built = agent_argv.resolve_in(investigation.prompt, agent_profile_schema.WORKER, cwd);
445
+ if (built.kind === "rejected") return `not investigated: ${built.note}`;
446
+ const request = {
447
+ argv: built.argv,
448
+ cwd,
449
+ env: investigation.env,
450
+ log_path: stamp_file.stamp_path(investigation.log_prefix, PROJECT_ROOT, LOG_SUFFIX),
451
+ profile: built.profile
452
+ };
453
+ const result = detached_launch.launch(request, investigation.on_failure);
454
+ return result.kind === "launched" ? run_event_overrun.investigating(result.pid, process_identity.read_start(result.pid)) : `not investigated: ${result.note}`;
455
+ }
456
+ function launched(issue, minutes, report) {
457
+ return launch({
458
+ env: lane_child_marker.overrun_env_for(String(issue)),
459
+ prompt: prompt(issue, minutes, report),
460
+ log_prefix: `${LOG_PREFIX}${String(issue)}-`,
461
+ on_failure: note_failure(issue)
462
+ });
463
+ }
464
+ async function overran_text(issue, net) {
465
+ const breakdown = lane_breakdown_implement.breakdown_of(net.entries, net.events, issue) ?? net.breakdown;
466
+ const report = lane_breakdown_text.report_of(issue, breakdown, net.entries, net.events);
467
+ const comment = lane_breakdown_text.comment(issue, net.minutes, report);
468
+ if (!net.is_commented) await git_gh_issue_write.issue_try_comment(String(issue), comment);
469
+ const outcome = launched(issue, net.minutes, report);
470
+ const longest = lane_breakdown.longest_of(breakdown);
471
+ return run_event_overrun.started_text(issue, net.minutes, outcome, longest);
472
+ }
473
+ async function note_text(issue, net) {
474
+ if (net.kind === "missing") return run_event_overrun.skipped_text(issue, net.reason);
475
+ const is_over = lane_tail_stats.is_overrun(net.minutes);
476
+ if (!is_over) return run_event_overrun.within_text(issue, net.minutes);
477
+ if (!lane_investigation_switch.is_on()) {
478
+ return run_event_overrun.skipped_text(issue, DISABLED_REASON);
479
+ }
480
+ return await overran_text(issue, net);
481
+ }
482
+ async function investigate_lane(issue) {
483
+ const net = await net_of(issue);
484
+ if (net === void 0) return;
485
+ await run_event_stream_emit.emit(EVENT_KIND.NOTE, await note_text(issue, net));
486
+ }
487
+ async function guarded(issue, pass) {
488
+ try {
489
+ await pass(issue);
490
+ } catch (error) {
491
+ note_failure(issue)(detached_launch.note_of(error));
492
+ }
493
+ }
494
+ async function investigate_with_retries(issue) {
495
+ await investigate_lane(issue);
496
+ const retried = retried_lanes(await run_event_stream_emit.all_events(), issue);
497
+ for (const lane of retried) {
498
+ await guarded(lane, investigate_lane);
499
+ }
500
+ }
501
+ async function investigate(issue) {
502
+ const pass = lane_investigation_switch.is_on() ? investigate_with_retries : investigate_lane;
503
+ await guarded(issue, pass);
504
+ }
505
+ var lane_overrun = { investigate, launch };
506
+
507
+ // scripts/lane/lane-baseline.ts
508
+ var { EVENT_KIND: EVENT_KIND2 } = run_event_stream;
509
+ var BASELINE_MERGES = 30;
510
+ var LOG_PREFIX2 = "josh-lane-baseline-";
511
+ var STATS_PERIOD_DAYS = 3;
512
+ var MEDIAN_PLACEHOLDER = "<median lane minutes>";
513
+ var SCOPE = "the median merge, judged from the per-merge minutes `lane:stats` prints";
514
+ function due_bucket(merges) {
515
+ return Math.floor(merges / BASELINE_MERGES) * BASELINE_MERGES;
516
+ }
517
+ function is_noted2(events, merges) {
518
+ return events.some((event) => {
519
+ const note = event.kind === EVENT_KIND2.NOTE ? run_event_baseline.parse(event.text) : void 0;
520
+ return note !== void 0 && note.kind !== "failed" && note.merges === merges;
521
+ });
522
+ }
523
+ async function due_merges() {
524
+ const path2 = await lane_ledger.target();
525
+ if (path2 === void 0) return void 0;
526
+ const merges = lane_ledger.read_entries(path2).filter((entry) => lane_stage_stats.is_merge(entry));
527
+ const bucket = due_bucket(merges.length);
528
+ return bucket > 0 ? bucket : void 0;
529
+ }
530
+ function reading2(merges) {
531
+ return [
532
+ `Investigate the median lane after ${String(merges)} merges: not an overrun, but the time every lane`,
533
+ "spends. Leave this checkout as it is: write any file, an issue body included, under the system temp",
534
+ "directory, and never stage, commit or push.",
535
+ `Read \`pnpm josh lane:stats --period ${String(STATS_PERIOD_DAYS)}\` \u2014 its stage table and its`,
536
+ "implement sub-stage table \u2014 and take the several stages and sub-stages with the largest per-merge",
537
+ "time, not just the one largest. Read the period lanes' transcripts (the lane directories `lane:stats`",
538
+ "reads) and the run events (`pnpm josh run:event --from 0`) for where each one's time goes, and find",
539
+ "the causes a fix could cut.",
540
+ "Trace each cause to what can fix it: the minutes it spends per merge, the signal that led to the",
541
+ "spend (which command printed what), the `file:line` of the code or document that decided it, and",
542
+ "where to fix it."
543
+ ].join(" ");
544
+ }
545
+ function prompt2(issue, merges) {
546
+ const handling2 = lane_overrun_prompt.cause_handling({
547
+ origin: void 0,
548
+ loss_lines: lane_overrun_prompt.loss_lines_of(issue, MEDIAN_PLACEHOLDER),
549
+ template: run_event_baseline.ended_text(merges, "<result>"),
550
+ scope: SCOPE
551
+ });
552
+ return `${reading2(merges)} ${handling2}`;
553
+ }
554
+ function note_failure2(note) {
555
+ void run_event_stream_emit.emit(EVENT_KIND2.NOTE, run_event_baseline.failed_text(note));
556
+ }
557
+ function launched2(issue, merges) {
558
+ return lane_overrun.launch({
559
+ env: {},
560
+ prompt: prompt2(issue, merges),
561
+ log_prefix: `${LOG_PREFIX2}${String(merges)}-`,
562
+ on_failure: note_failure2
563
+ });
564
+ }
565
+ async function investigate_baseline(issue) {
566
+ const merges = await due_merges();
567
+ if (merges === void 0 || is_noted2(await run_event_stream_emit.all_events(), merges)) return;
568
+ await run_event_stream_emit.emit(
569
+ EVENT_KIND2.NOTE,
570
+ run_event_baseline.started_text(merges, launched2(issue, merges))
571
+ );
572
+ }
573
+ async function investigate2(issue) {
574
+ if (!lane_investigation_switch.is_on()) return;
575
+ try {
576
+ await investigate_baseline(issue);
577
+ } catch (error) {
578
+ note_failure2(detached_launch.note_of(error));
579
+ }
580
+ }
581
+ var lane_baseline = { due_bucket, investigate: investigate2 };
582
+
583
+ // scripts/run/merge/run-merge.ts
584
+ var CLOSED_STATE = "CLOSED";
585
+ var CONSECUTIVE_FAILURE_LIMIT = 3;
586
+ var CONSECUTIVE_OUTAGE_LIMIT = 3;
587
+ var OUTAGE_WAIT_BASE_MS = 3e5;
588
+ var OUTAGE_WAIT_CAP_MS = 36e5;
589
+ var DOUBLING = 2;
590
+ var ONE = 1;
591
+ var NO_SIGNALS = { is_outage: false, is_cut: false };
592
+ function is_closed(state) {
593
+ return state.state.toUpperCase() === CLOSED_STATE;
594
+ }
595
+ function is_parked(state) {
596
+ return has_parked_label(state.labels);
597
+ }
598
+ function environment_outcome(signals) {
599
+ if (signals.is_auth_failure === true) return "unauthenticated";
600
+ if (signals.resume_ms !== void 0) return "usage-limit";
601
+ return signals.is_outage ? "outage" : "failed";
602
+ }
603
+ function unfinished_outcome(signals) {
604
+ if (signals.merged_pr !== void 0) return "merged";
605
+ if (signals.is_cut) return "cut";
606
+ return environment_outcome(signals);
607
+ }
608
+ function open_outcome(state, signals) {
609
+ if (state.is_human_review || has_label_name(state.labels, NEEDS_HUMAN_MERGE_LABEL)) {
610
+ return "human-review";
611
+ }
612
+ if (has_label_name(state.labels, EPIC_LABEL)) return "split";
613
+ if (is_parked(state)) return "parked";
614
+ return unfinished_outcome(signals);
615
+ }
616
+ function state_outcome(state, signals) {
617
+ return is_closed(state) ? "merged" : open_outcome(state, signals);
618
+ }
619
+ function classify_child(state, signals = NO_SIGNALS) {
620
+ if (signals.is_yielded === true) return "yielded";
621
+ if (signals.is_withdrawn === true) return "withdrawn";
622
+ return state === void 0 ? "unresolved" : state_outcome(state, signals);
623
+ }
624
+ function change_of(outcome) {
625
+ if (outcome === "merged") return { merged: ONE };
626
+ if (outcome === "failed") return { failures: ONE };
627
+ if (outcome === "outage") return { outages: ONE };
628
+ return void 0;
629
+ }
630
+ function is_guard_tripped(failures) {
631
+ return failures > 0 && failures % CONSECUTIVE_FAILURE_LIMIT === 0;
632
+ }
633
+ function is_outage_guard_tripped(outages2) {
634
+ return outages2 >= CONSECUTIVE_OUTAGE_LIMIT;
635
+ }
636
+ function outage_wait_ms(outages2) {
637
+ const doublings = Math.max(0, outages2 - CONSECUTIVE_OUTAGE_LIMIT);
638
+ return Math.min(OUTAGE_WAIT_BASE_MS * DOUBLING ** doublings, OUTAGE_WAIT_CAP_MS);
639
+ }
640
+ function counters_comment(carry) {
641
+ return [
642
+ "Run progress (generated from the carry record):",
643
+ `- started: ${carry.started_at}`,
644
+ `- merged: ${String(carry.merged)}`,
645
+ `- filed: ${String(carry.filed)}`,
646
+ `- consecutive failures: ${String(carry.failures)}`,
647
+ `- consecutive outages: ${String(carry.outages)}`,
648
+ `- cuts crossed: ${String(carry.cuts)}`
649
+ ].join("\n");
650
+ }
651
+ function streak_line(carry) {
652
+ if (carry === void 0) return "- Consecutive failures: not recorded (no carry record).";
653
+ return `- Consecutive failures: ${String(carry.failures)} of ${String(CONSECUTIVE_FAILURE_LIMIT)} (every ${String(CONSECUTIVE_FAILURE_LIMIT)} in a row checks \`main\`).`;
654
+ }
655
+ function park_comment(reason) {
656
+ const transcript = reason.output === void 0 ? "" : ` (\`${reason.output}\`)`;
657
+ return [
658
+ `Parked with \`${RUN_STALLED_LABEL}\` by \`pnpm josh run:merge\`, the \`backlogrun\` driver \u2014 a mechanical failure, with no decision to make.`,
659
+ `- Why: ${reason.cause}`,
660
+ "- Read: the issue is OPEN, carries no park label, `needs-human-review` or `epic`, no merged pull request\u2019s `closes #N` names it, and it declares no open blocker, start date still ahead or sample condition not yet met.",
661
+ streak_line(reason.carry),
662
+ `- Next: read the child\u2019s transcript${transcript}, ${run_stalled.next_step(reason.child, reason.cause)}.`
663
+ ].join("\n");
664
+ }
665
+ function waiting_comment(waits) {
666
+ return [
667
+ "Released to wait by `pnpm josh run:merge`, the `backlogrun` driver \u2014 not parked, and not counted as a failure.",
668
+ `- Why: the child\u2019s session ended unfinished while it waits on: ${waits.join(", ")}.`,
669
+ "- Next: when it runs is already recorded \u2014 it becomes runnable again once its blockers merge, its start date arrives and its sample condition is met; a blocker outside the backlog still needs a person to land it."
670
+ ].join("\n");
671
+ }
672
+ var run_merge = {
673
+ CONSECUTIVE_FAILURE_LIMIT,
674
+ CONSECUTIVE_OUTAGE_LIMIT,
675
+ change_of,
676
+ classify_child,
677
+ counters_comment,
678
+ park_comment,
679
+ waiting_comment,
680
+ is_guard_tripped,
681
+ is_outage_guard_tripped,
682
+ outage_wait_ms
683
+ };
684
+
685
+ // scripts/run/merge/run-merge-auth.ts
686
+ var LIMIT = "authentication failure";
687
+ var RECHECK_MS = 6e5;
688
+ var RECHECK_TEXT = "10 minutes";
689
+ var RECOVERY = "If this did not arrive, `pnpm josh run:wake --list` relays the last progress line.";
690
+ async function is_first_hold() {
691
+ const events = await run_event_stream_emit.current_events();
692
+ return run_event_stream.since(events, run_event_stream.EVENT_KIND.MERGE).every(
693
+ (event) => !(event.kind === run_event_stream.EVENT_KIND.USAGE_LIMIT && event.text.includes(LIMIT))
694
+ );
695
+ }
696
+ async function notify(child) {
697
+ const cite = issue_cite.plain_for("telegram", child);
698
+ const text = `${cite} could not authenticate \u2014 run /login; the run resumes by itself`;
699
+ await telegram_notify.confirm({
700
+ issue_title: "backlogrun waiting: Claude authentication failed",
701
+ body: `${text}. Launches are held and re-tried every ${RECHECK_TEXT}; the child was released, neither parked nor counted as a failure.`,
702
+ recovery: RECOVERY,
703
+ recommended: "Run /login",
704
+ alternatives: ["Stop the run with `pnpm josh backlogrun --stop`"]
705
+ });
706
+ }
707
+ async function hold(child, now_ms) {
708
+ const is_first = await is_first_hold();
709
+ await run_merge_usage_limit.record(child, now_ms + RECHECK_MS, LIMIT);
710
+ if (is_first) await notify(child);
711
+ }
712
+ var run_merge_auth = { hold };
713
+
714
+ // scripts/run/merge/run-merge-dated.ts
715
+ var KIND = run_event_stream.EVENT_KIND;
716
+ function is_own(event, cite) {
717
+ return event.text.startsWith(`${cite} `);
718
+ }
719
+ function is_report_done(event) {
720
+ if (event.kind !== KIND.SHIP_STAGE) return false;
721
+ const { stage, phase } = run_ship_stage.words_of(event.text);
722
+ return stage === run_ship_stage.STAGE.REPORT && phase === run_ship_stage.PHASE.DONE;
723
+ }
724
+ function is_bound(event) {
725
+ return event.kind === KIND.CHILD_LAUNCH || is_report_done(event);
726
+ }
727
+ function reported_at(events, child) {
728
+ const cite = issue_cite.plain_for("program", child);
729
+ const bound = events.findLast((event) => is_own(event, cite) && is_bound(event));
730
+ return bound !== void 0 && is_report_done(bound) ? Date.parse(bound.at) : void 0;
731
+ }
732
+ function dated(events, child, confirmed_at) {
733
+ const reported = reported_at(events, child);
734
+ if (reported === void 0 || reported >= confirmed_at.getTime()) return confirmed_at;
735
+ return new Date(reported);
736
+ }
737
+ async function put_on_record(child, confirmed_at) {
738
+ const text = `${issue_cite.plain_for("program", child)} merged`;
739
+ const events = await run_event_stream_emit.invocation_or_all_events();
740
+ if (events.some((event) => event.kind === KIND.MERGE && event.text === text)) return;
741
+ const at = dated(events, child, confirmed_at);
742
+ await run_event_stream_emit.emit(KIND.MERGE, text, at);
743
+ await lane_ledger_write.record_merge(Number(child), at);
744
+ }
745
+ var run_merge_dated = { dated, put_on_record };
746
+
747
+ // scripts/run/merge/run-merge-decision.ts
748
+ import { z } from "zod";
749
+ var HOOK_CONFIRMATION = "\u{1F4F1} stop:guard sent the confirmation notify (";
750
+ var INPUT_SCHEMA = z.object({ command: z.string() });
751
+ var AWAITING_CONFIRMATION = /(?:確認|回答|返答|承認)(?:[をの]?待っています|待ちです|後に(?:続行|再開)します)/u;
752
+ var COMMAND_SCHEMA = z.looseObject({
753
+ type: z.literal("item.completed"),
754
+ item: z.looseObject({
755
+ type: z.literal("command_execution"),
756
+ command: z.string(),
757
+ exit_code: z.literal(0),
758
+ aggregated_output: z.string().optional()
759
+ })
760
+ });
761
+ function confirms(line) {
762
+ if (line.startsWith(HOOK_CONFIRMATION)) return true;
763
+ const command = COMMAND_SCHEMA.safeParse(json_value.parse_or_undefined(line));
764
+ return command.success && lane_park.is_confirmation_notify(command.data.item.command);
765
+ }
766
+ function asks(message) {
767
+ return AWAITING_CONFIRMATION.test(message) || stop_decision.contains_question(message);
768
+ }
769
+ function successful_last(command) {
770
+ const joined = shell_segments.joined_continuations(command);
771
+ const plain = time_shell.blanked(joined);
772
+ if (plain === void 0 || plain.includes("\n")) return void 0;
773
+ const comment = plain.search(/(?:^|[\s;|&])#/u);
774
+ const end = comment === -1 ? joined.length : comment;
775
+ const syntax = plain.slice(0, end);
776
+ if (/[;|&\n]/u.test(syntax.replaceAll("&&", ""))) return void 0;
777
+ return shell_segments.quote_aware_commands_of(joined.slice(0, end)).at(-1);
778
+ }
779
+ function is_entry(command) {
780
+ for (let next = command; next !== ""; ) {
781
+ const last = successful_last(next) ?? "";
782
+ const script = bash_triggers.shell_script_of(last);
783
+ if (script === void 0) {
784
+ return time_josh_names.josh_command_of_segment(time_shell.unquoted(last)) === "josh run:entry";
785
+ }
786
+ next = script;
787
+ }
788
+ return false;
789
+ }
790
+ function entry_ids(latest) {
791
+ const records = latest.split("\n").flatMap((line) => transcript_record.parse(line) ?? []);
792
+ const calls = records.filter((record) => record.type === "assistant").flatMap((record) => transcript_record.tool_calls_of(record));
793
+ const entries = calls.filter(
794
+ (block) => block.name === "Bash" && is_entry(INPUT_SCHEMA.safeParse(block.input).data?.command ?? "")
795
+ );
796
+ return new Set(entries.flatMap((block) => block.id ?? []));
797
+ }
798
+ function is_entry_result(block, ids) {
799
+ return block?.type === transcript_record.TOOL_RESULT_TYPE && block.is_error !== true && ids.has(block.tool_use_id ?? "");
800
+ }
801
+ function claude_output(line, ids) {
802
+ const record = transcript_record.parse(line);
803
+ if (record?.type !== "user") return "";
804
+ const blocks = transcript_record.blocks_of(record);
805
+ return cost_blocks.parse_line(line).filter((_block, index) => is_entry_result(blocks[index], ids)).map((block) => block.text).join("\n");
806
+ }
807
+ function tool_output(line, ids) {
808
+ const command = COMMAND_SCHEMA.safeParse(json_value.parse_or_undefined(line));
809
+ if (!command.success) return claude_output(line, ids);
810
+ return is_entry(command.data.item.command) ? command.data.item.aggregated_output ?? "" : "";
811
+ }
812
+ function unfinished(latest, message) {
813
+ const ids = entry_ids(latest);
814
+ const outputs = latest.split("\n").map((line) => tool_output(line, ids)).join("\n");
815
+ const resumes = [...outputs.matchAll(/^entry [^\n]+ — resume: ([\w-]+)$/gmu)];
816
+ return resumes.at(-1)?.[1] === "handed-off" ? run_stalled.STALE_HANDOFF : run_stalled.session_unfinished(message);
817
+ }
818
+ function judged(transcript) {
819
+ const latest = run_ship_detach.last_launch(transcript);
820
+ const message = agent_event.read(latest).last_message ?? "";
821
+ const is_confirmed = latest.split("\n").some((line) => confirms(line));
822
+ if (!is_confirmed && !asks(message)) return unfinished(latest, message);
823
+ return {
824
+ short: NEEDS_DECISION_LABEL,
825
+ why: message || "The child sent a confirmation notification."
826
+ };
827
+ }
828
+ function cause(output) {
829
+ const transcript = output === void 0 ? void 0 : run_ending.read_transcript(output);
830
+ return transcript === void 0 ? run_stalled.SESSION_UNFINISHED : judged(transcript);
831
+ }
832
+ function is_decision(short) {
833
+ return short === NEEDS_DECISION_LABEL;
834
+ }
835
+ function park_event(child, short) {
836
+ return is_decision(short) ? `${issue_cite.plain_for("program", child)} parked (${NEEDS_DECISION_LABEL})` : run_stalled.park_event(child, short);
837
+ }
838
+ function park_comment2(judgment) {
839
+ return [
840
+ `Parked with \`${NEEDS_DECISION_LABEL}\` by \`pnpm josh run:merge\`: the child waits for your answer.`,
841
+ `- Decision: ${judgment.why}`,
842
+ "- Consecutive failures: unchanged.",
843
+ "- Next: answer the question on this issue, then remove `needs-decision` to resume."
844
+ ].join("\n");
845
+ }
846
+ function park_options(judgment, reason) {
847
+ return is_decision(judgment.short) ? { label: NEEDS_DECISION_LABEL, comment: park_comment2(judgment) } : { label: RUN_STALLED_LABEL, comment: run_merge.park_comment(reason) };
848
+ }
849
+ function is_guard_tripped2(short, carry) {
850
+ if (is_decision(short)) return false;
851
+ return carry !== void 0 && run_merge.is_guard_tripped(carry.failures);
852
+ }
853
+ var run_merge_decision = { cause, is_decision, is_guard_tripped: is_guard_tripped2, park_event, park_options };
854
+
855
+ // scripts/run/merge/run-merge-health.ts
856
+ import { mkdtemp, writeFile } from "node:fs/promises";
857
+ import { tmpdir } from "node:os";
858
+ import path from "node:path";
859
+ import { execa } from "execa";
860
+ var TITLE = "Repair the verification gate failing on main";
861
+ var OUTPUT_TAIL_LINES = 20;
862
+ var STATIC_CHECK = { args: ["josh", "gate", "--no-unit"], env: { CI: "true" } };
863
+ var UNIT_CHECK = { args: ["josh", "test:unit"], env: {} };
864
+ var COMMANDS = "`CI=true pnpm josh gate --no-unit` and `pnpm josh test:unit`";
865
+ function is_filed(events) {
866
+ return run_event_stream.since(events, run_event_stream.EVENT_KIND.MERGE).some(
867
+ (event) => event.kind === run_event_stream.EVENT_KIND.FILED && run_event_filed.parse(event.text)?.title === TITLE
868
+ );
869
+ }
870
+ var DECLARATIONS = [
871
+ issue_body_keys.heading("background"),
872
+ "",
873
+ issue_body_keys.line("kind", "bug"),
874
+ issue_body_keys.line("purpose", "bug_fix"),
875
+ issue_body_keys.line("judgement", "not_needed"),
876
+ `${issue_body_keys.line("origin", "unknown")}\uFF08found by the backlogrun health check, not traced yet\uFF09`,
877
+ `${issue_body_keys.prefix("size")} ${issue_body_keys.size_value("1", "20")}`
878
+ ];
879
+ var SYMPTOM = [
880
+ issue_body_keys.heading("symptom"),
881
+ "",
882
+ `${COMMANDS} fail on \`main\`, twice in a row.`
883
+ ];
884
+ var EXPECTED = [
885
+ issue_body_keys.heading("expected"),
886
+ "",
887
+ `${COMMANDS} pass on \`main\`.`,
888
+ "",
889
+ issue_body_keys.heading("criteria"),
890
+ "",
891
+ `- [ ] ${COMMANDS} pass on \`main\`.`
892
+ ];
893
+ function body_of(child, output) {
894
+ const tail = output.split("\n").slice(-OUTPUT_TAIL_LINES).join("\n");
895
+ const origin = `Filed by \`pnpm josh run:merge\` after ${issue_cite.plain_for("github", child)}: a streak of children failed, and the whole-tree verification on \`main\` failed too, so it is broken for every lane.`;
896
+ const reproduction = [
897
+ issue_body_keys.heading("reproduction"),
898
+ "",
899
+ `${COMMANDS} on \`main\`:`,
900
+ "",
901
+ "```text",
902
+ tail,
903
+ "```"
904
+ ];
905
+ return [...DECLARATIONS, "", origin, "", ...SYMPTOM, "", ...reproduction, "", ...EXPECTED].join(
906
+ "\n"
907
+ );
908
+ }
909
+ async function file_solo(child, output) {
910
+ const directory = await mkdtemp(path.join(tmpdir(), "josh-health-"));
911
+ const body_file = path.join(directory, "body.md");
912
+ const answers = ["--defect", "yes", "--verification", "yes", "--every-run", "yes"];
913
+ const labels = ["--label", RUN_SOLO_LABEL, "--label", PRIORITY_CRITICAL_LABEL];
914
+ await writeFile(body_file, body_of(child, output));
915
+ const filing = await execa(
916
+ "pnpm",
917
+ ["josh", "issue:file", TITLE, "--body-file", body_file, ...labels, ...answers, "--over-cap"],
918
+ { reject: false, all: true, stdin: "ignore" }
919
+ );
920
+ if (filing.exitCode !== 0) {
921
+ console.error(`run:merge: the run:solo Issue was not filed:
922
+ ${filing.all}`);
923
+ }
924
+ }
925
+ async function red_output(health_check) {
926
+ const result = await execa("pnpm", health_check.args, {
927
+ reject: false,
928
+ all: true,
929
+ stdin: "ignore",
930
+ env: health_check.env
931
+ });
932
+ return result.exitCode === 0 ? void 0 : result.all;
933
+ }
934
+ async function verification_red() {
935
+ return await red_output(STATIC_CHECK) ?? await red_output(UNIT_CHECK);
936
+ }
937
+ async function check(child) {
938
+ if (await verification_red() === void 0) return true;
939
+ const output = await verification_red();
940
+ if (output === void 0) return true;
941
+ if (!is_filed(await run_event_stream_emit.current_events())) await file_solo(child, output);
942
+ return false;
943
+ }
944
+ var run_merge_health = { TITLE, check };
945
+
946
+ // scripts/run/merge/run-merge-cut-release.ts
947
+ async function release(child) {
948
+ const lane = await lane_registry.find_open_lane(child);
949
+ if (lane === void 0) return;
950
+ const carried = run_cut.lane_cut_sync(lane.directory);
951
+ if (carried === void 0) return;
952
+ run_cut_adoption.release(carried.target, carried.cut, child);
953
+ }
954
+ var run_merge_cut_release = { release };
955
+
956
+ // scripts/run/merge/run-merge-human-review.ts
957
+ async function retain(issue) {
958
+ const retained = await lane_state.record_change({
959
+ issue,
960
+ state: "human-review",
961
+ command: "run:merge"
962
+ });
963
+ if (retained.kind !== "written") return false;
964
+ if (lane_await.process_trace_default(issue) === "none") {
965
+ await run_merge_cut_release.release(issue);
966
+ }
967
+ await run_event_stream_emit.emit(
968
+ run_event_stream.EVENT_KIND.HUMAN_REVIEW,
969
+ `${issue_cite.plain_for("program", issue)} waiting for human review`
970
+ );
971
+ return true;
972
+ }
973
+ var run_merge_human_review = { retain };
974
+
975
+ // scripts/agent/usage-limit-reset.ts
976
+ var RESET_PATTERN = /resets (?<when>[^(]*)\((?<zone>[^)]*)\)/iu;
977
+ var TIME_PATTERN = /\b(?<hour>\d{1,2})(?::(?<minute>\d{2}))? ?(?<meridiem>am|pm)\b/iu;
978
+ var DATE_PATTERN = /\b(?<month>[a-z]+)\.? (?<day>\d{1,2})\b/iu;
979
+ var MONTH_PREFIX = 3;
980
+ var EPOCH_PATTERN = /\|(?<epoch>\d{10})\b/u;
981
+ var MONTHS = ["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"];
982
+ var MS_PER_SECOND = 1e3;
983
+ var MS_PER_MINUTE = 6e4;
984
+ var HALF_YEAR_MS = 157788e5;
985
+ var HOURS_PER_HALF_DAY = 12;
986
+ var PM = "pm";
987
+ var NOT_FOUND = -1;
988
+ function epoch_ms(text) {
989
+ const epoch = EPOCH_PATTERN.exec(text)?.groups?.["epoch"];
990
+ return epoch === void 0 ? void 0 : Number(epoch) * MS_PER_SECOND;
991
+ }
992
+ function dated2(groups) {
993
+ const month = MONTHS.indexOf(String(groups["month"]).slice(0, MONTH_PREFIX).toLowerCase());
994
+ return month === NOT_FOUND ? void 0 : { month, day: Number(groups["day"]) };
995
+ }
996
+ function date_of(when) {
997
+ const groups = DATE_PATTERN.exec(when)?.groups;
998
+ return groups === void 0 ? void 0 : dated2(groups);
999
+ }
1000
+ function hour_of(time) {
1001
+ const half = time["meridiem"]?.toLowerCase() === PM ? HOURS_PER_HALF_DAY : 0;
1002
+ return Number(time["hour"]) % HOURS_PER_HALF_DAY + half;
1003
+ }
1004
+ function wall_of(when, zone) {
1005
+ const time = TIME_PATTERN.exec(when)?.groups;
1006
+ if (time === void 0) return void 0;
1007
+ return { date: date_of(when), hour: hour_of(time), minute: Number(time["minute"] ?? 0), zone };
1008
+ }
1009
+ function zone_format(zone) {
1010
+ return new Intl.DateTimeFormat("en-US", {
1011
+ timeZone: zone,
1012
+ hourCycle: "h23",
1013
+ year: "numeric",
1014
+ month: "numeric",
1015
+ day: "numeric",
1016
+ hour: "numeric",
1017
+ minute: "numeric"
1018
+ });
1019
+ }
1020
+ function zone_fields(at_ms, zone) {
1021
+ const parts = zone_format(zone).formatToParts(at_ms);
1022
+ const read2 = new Map(parts.map((part) => [part.type, Number(part.value)]));
1023
+ function field(type) {
1024
+ return read2.get(type) ?? 0;
1025
+ }
1026
+ return {
1027
+ year: field("year"),
1028
+ month: field("month") - 1,
1029
+ day: field("day"),
1030
+ hour: field("hour"),
1031
+ minute: field("minute")
1032
+ };
1033
+ }
1034
+ function utc_of(fields) {
1035
+ return Date.UTC(fields.year, fields.month, fields.day, fields.hour, fields.minute);
1036
+ }
1037
+ function offset_ms(at_ms, zone) {
1038
+ return utc_of(zone_fields(at_ms, zone)) - (at_ms - at_ms % MS_PER_MINUTE);
1039
+ }
1040
+ function instant_of(fields, zone) {
1041
+ const guess = utc_of(fields);
1042
+ return guess - offset_ms(guess - offset_ms(guess, zone), zone);
1043
+ }
1044
+ function year_shift(at_ms, now_ms) {
1045
+ if (now_ms - at_ms > HALF_YEAR_MS) return 1;
1046
+ return at_ms - now_ms > HALF_YEAR_MS ? -1 : 0;
1047
+ }
1048
+ function dated_instant(fields, zone, now_ms) {
1049
+ const at_ms = instant_of(fields, zone);
1050
+ const shift = year_shift(at_ms, now_ms);
1051
+ return shift === 0 ? at_ms : instant_of({ ...fields, year: fields.year + shift }, zone);
1052
+ }
1053
+ function undated_instant(fields, zone, now_ms) {
1054
+ const at_ms = instant_of(fields, zone);
1055
+ return at_ms > now_ms ? at_ms : instant_of({ ...fields, day: fields.day + 1 }, zone);
1056
+ }
1057
+ function next_instant(wall, now_ms) {
1058
+ const today = zone_fields(now_ms, wall.zone);
1059
+ const fields = { ...today, ...wall.date, hour: wall.hour, minute: wall.minute };
1060
+ if (wall.date === void 0) return undated_instant(fields, wall.zone, now_ms);
1061
+ return dated_instant(fields, wall.zone, now_ms);
1062
+ }
1063
+ function wall_in(text) {
1064
+ const groups = RESET_PATTERN.exec(text)?.groups;
1065
+ if (groups === void 0) return void 0;
1066
+ return wall_of(String(groups["when"]), String(groups["zone"]).trim());
1067
+ }
1068
+ function known_instant(wall, now_ms) {
1069
+ try {
1070
+ return next_instant(wall, now_ms);
1071
+ } catch {
1072
+ return void 0;
1073
+ }
1074
+ }
1075
+ function clock_ms(text, now_ms) {
1076
+ const wall = wall_in(text);
1077
+ return wall === void 0 ? void 0 : known_instant(wall, now_ms);
1078
+ }
1079
+ function reset_ms(text, now_ms) {
1080
+ return epoch_ms(text) ?? clock_ms(text, now_ms);
1081
+ }
1082
+ var usage_limit_reset = { reset_ms };
1083
+
1084
+ // scripts/agent/api-usage-limit.ts
1085
+ var LIMIT_PATTERN = /hit your (?:\w+ )?limit|usage limit reached/u;
1086
+ var RECHECK_MS2 = 18e5;
1087
+ function limit_reason(record) {
1088
+ if (record === void 0 || !record.is_error || record.reason === void 0) return void 0;
1089
+ return LIMIT_PATTERN.test(record.reason.toLowerCase()) ? record.reason : void 0;
1090
+ }
1091
+ function is_usage_limit(record) {
1092
+ return limit_reason(record) !== void 0;
1093
+ }
1094
+ function or_recheck(reset_ms3, now_ms) {
1095
+ return reset_ms3 === void 0 || reset_ms3 <= now_ms ? now_ms + RECHECK_MS2 : reset_ms3;
1096
+ }
1097
+ function resume_ms(record, now_ms, stopped_ms = now_ms) {
1098
+ const reason = limit_reason(record);
1099
+ if (reason === void 0) return void 0;
1100
+ return or_recheck(usage_limit_reset.reset_ms(reason, stopped_ms), now_ms);
1101
+ }
1102
+ function transcript_resume_ms(log, now_ms, stopped_ms = now_ms) {
1103
+ if (log === void 0 || !agent_exit_record.ends_on_exit_record(log)) return void 0;
1104
+ return resume_ms(agent_exit_record.read_exit_record(log), now_ms, stopped_ms);
1105
+ }
1106
+ var api_usage_limit = { RECHECK_MS: RECHECK_MS2, is_usage_limit, resume_ms, transcript_resume_ms };
1107
+
1108
+ // scripts/run/merge/run-merge-ship.ts
1109
+ var ENDED_RESULTS = /* @__PURE__ */ new Set(["failed", "abnormal"]);
1110
+ function since_ship_launch(events, child) {
1111
+ const attempt = run_event_scope.since_own_launch(events, child);
1112
+ const own = attempt.filter((event) => run_event_scope.issue_named(event) === child);
1113
+ const launched_at = own.findLastIndex(
1114
+ (event) => event.kind === run_event_stream.EVENT_KIND.SHIP_LAUNCH
1115
+ );
1116
+ return launched_at === -1 ? void 0 : own.slice(launched_at + 1);
1117
+ }
1118
+ function stop_cause(stop2) {
1119
+ const stage = run_ship_stop_text.reason_of(stop2.text);
1120
+ return {
1121
+ short: stage === void 0 ? "ship stopped" : `${stage} failed`,
1122
+ why: `its detached ship stopped and was not fixed: ${stop2.text}.`
1123
+ };
1124
+ }
1125
+ function cause_of(ending, events, child) {
1126
+ if (ending === void 0 || !ENDED_RESULTS.has(ending.result)) return void 0;
1127
+ const attempt = since_ship_launch(events, child);
1128
+ if (attempt === void 0) return void 0;
1129
+ const stop2 = attempt.findLast((event) => event.kind === run_event_stream.EVENT_KIND.SHIP_STOP);
1130
+ if (stop2 !== void 0) return stop_cause(stop2);
1131
+ return {
1132
+ short: `ship ${ending.result}`,
1133
+ why: `its detached ship ended ${ending.result} before recording a stopped stage \u2014 pnpm josh ship --log ${child}.`
1134
+ };
1135
+ }
1136
+ function cause2(child, directory = process.cwd()) {
1137
+ const repository = git_common_directory.repository(directory);
1138
+ if (repository === void 0) return void 0;
1139
+ const events = run_event_stream.read_events(run_event_stream.target_of(repository));
1140
+ return cause_of(run_ship_detach.read_result(repository, child), events, child);
1141
+ }
1142
+ function is_relaunch_failed(event) {
1143
+ return event.kind === run_event_stream.EVENT_KIND.RELAUNCH_FAILED;
1144
+ }
1145
+ function is_stop_unanswered(ending, attempt, written_at) {
1146
+ const index = attempt.findLastIndex(
1147
+ (event) => event.kind === run_event_stream.EVENT_KIND.SHIP_STOP
1148
+ );
1149
+ const stop2 = attempt[index];
1150
+ if (stop2 === void 0) return ending?.result === "abnormal";
1151
+ if (attempt.slice(index + 1).some((event) => is_relaunch_failed(event))) return true;
1152
+ return written_at !== void 0 && written_at < Date.parse(stop2.at);
1153
+ }
1154
+ function interrupted_of(ending, events, child, written_at) {
1155
+ if (ending === void 0 || !ENDED_RESULTS.has(ending.result)) return false;
1156
+ const attempt = since_ship_launch(events, child);
1157
+ return attempt !== void 0 && is_stop_unanswered(ending, attempt, written_at);
1158
+ }
1159
+ function is_interrupted(child, written_at, directory = process.cwd()) {
1160
+ const repository = git_common_directory.repository(directory);
1161
+ if (repository === void 0) return false;
1162
+ const events = run_event_stream.read_events(run_event_stream.target_of(repository));
1163
+ return interrupted_of(run_ship_detach.read_result(repository, child), events, child, written_at);
1164
+ }
1165
+ async function is_unanswered(child, output) {
1166
+ if (output === void 0 || !is_interrupted(child, run_ending.written_at(output))) return false;
1167
+ const lane = await lane_registry.find_open_lane(child);
1168
+ return lane !== void 0 && !lane_relaunch.is_openai_lane(lane);
1169
+ }
1170
+ var run_merge_ship = { cause: cause2, cause_of, interrupted_of, is_unanswered };
1171
+
1172
+ // scripts/run/merge/run-merge-cap.ts
1173
+ var NO_RELAUNCH_FAILURE = "none was recorded";
1174
+ function is_own2(event, kind, child) {
1175
+ return event.kind === kind && run_event_scope.issue_named(event) === child;
1176
+ }
1177
+ function outages(events, child) {
1178
+ return events.filter((event) => is_own2(event, run_event_stream.EVENT_KIND.OUTAGE, child)).length;
1179
+ }
1180
+ function last_relaunch_failure(events, child) {
1181
+ const kind = run_event_stream.EVENT_KIND.RELAUNCH_FAILED;
1182
+ const failed = events.findLast((event) => is_own2(event, kind, child));
1183
+ return failed === void 0 ? NO_RELAUNCH_FAILURE : failed.text;
1184
+ }
1185
+ function note_of(events, child, limit) {
1186
+ const count = outages(events, child);
1187
+ const failure = last_relaunch_failure(events, child);
1188
+ return `it reached the re-dispatch cap (${String(limit)}) after ${String(count)} re-dispatches; the last failed relaunch: ${failure}.`;
1189
+ }
1190
+ function park_cause(child, cause3, note, output) {
1191
+ if (cause3 !== void 0) return cause3;
1192
+ const judged2 = run_merge_decision.cause(output);
1193
+ const stopped = run_merge_decision.is_decision(judged2.short) ? judged2 : run_merge_ship.cause(child) ?? judged2;
1194
+ if (note === void 0) return stopped;
1195
+ return { short: stopped.short, why: `${note} ${stopped.why}` };
1196
+ }
1197
+ var run_merge_cap = { note_of, outages, park_cause };
1198
+
1199
+ // scripts/run/merge/run-merge-github-limit.ts
1200
+ var RATE_LIMIT = "rate-limit";
1201
+ var TAIL_LINES = 20;
1202
+ var RATE_LIMIT_PATTERN = /^(?:gh|graphql|http 403|http 429): .*(?:api rate limit (?:already )?exceeded|secondary rate limit)/mu;
1203
+ var AUTH_PATTERN = /^http 401: |^(?:try authenticating with|to get started with github cli, please run): +gh auth login/mu;
1204
+ function error_texts(line) {
1205
+ const record = transcript_record.parse(line);
1206
+ if (record?.type !== "user") return [];
1207
+ return transcript_record.blocks_of(record).filter((block) => block.type === transcript_record.TOOL_RESULT_TYPE && block.is_error === true).map((block) => time_reported_failure.result_text(block.content));
1208
+ }
1209
+ function tail_errors(log) {
1210
+ const lines = log.trimEnd().split("\n").slice(-TAIL_LINES);
1211
+ return lines.flatMap((line) => error_texts(line)).join("\n").toLowerCase();
1212
+ }
1213
+ function stop_of(log) {
1214
+ if (log === void 0 || !agent_exit_record.ends_on_exit_record(log)) return void 0;
1215
+ const tail = tail_errors(log);
1216
+ if (RATE_LIMIT_PATTERN.test(tail)) return RATE_LIMIT;
1217
+ return AUTH_PATTERN.test(tail) ? "auth" : void 0;
1218
+ }
1219
+ function read_stop(output) {
1220
+ if (output === void 0) return void 0;
1221
+ return stop_of(run_ending.read_transcript(output));
1222
+ }
1223
+ function is_exhausted(limit, now_ms) {
1224
+ return limit?.remaining === 0 && limit.reset_ms > now_ms;
1225
+ }
1226
+ async function reset_ms2(now_ms) {
1227
+ const resources = await gh_core_rate_limit.read_resources();
1228
+ const limits = [resources?.core, resources?.graphql];
1229
+ const exhausted = limits.find((limit) => is_exhausted(limit, now_ms));
1230
+ return exhausted?.reset_ms ?? now_ms + api_usage_limit.RECHECK_MS;
1231
+ }
1232
+ async function hold2(child, output) {
1233
+ if (read_stop(output) !== RATE_LIMIT) return;
1234
+ await run_merge_usage_limit.record(child, await reset_ms2(Date.now()), "GitHub rate limit");
1235
+ }
1236
+ var run_merge_github_limit = { hold: hold2, read_stop, reset_ms: reset_ms2, stop_of };
1237
+
1238
+ // scripts/run/merge/run-merge-restart.ts
1239
+ import { uptime } from "node:os";
1240
+ var MS_PER_SECOND2 = 1e3;
1241
+ function booted_ms() {
1242
+ try {
1243
+ return Date.now() - uptime() * MS_PER_SECOND2;
1244
+ } catch {
1245
+ return void 0;
1246
+ }
1247
+ }
1248
+ function has_exit_record(output) {
1249
+ const transcript = output === void 0 ? void 0 : run_ending.read_transcript(output);
1250
+ return transcript !== void 0 && agent_exit_record.ends_on_exit_record(transcript);
1251
+ }
1252
+ async function is_host_restart(child, output) {
1253
+ if (has_exit_record(output)) return false;
1254
+ const lane = await lane_registry.find_open_lane(child);
1255
+ const dispatched_ms = lane?.dispatched_ms;
1256
+ if (dispatched_ms === void 0) return false;
1257
+ const boot_ms = booted_ms();
1258
+ return boot_ms !== void 0 && dispatched_ms < boot_ms;
1259
+ }
1260
+ var run_merge_restart = { is_host_restart };
1261
+
1262
+ // scripts/lane/lane-seat-stop.ts
1263
+ async function stop(issue) {
1264
+ const lane = await lane_registry.lane_location(issue);
1265
+ const reaped = lane_reap.reap_child(lane);
1266
+ lane_residents.end_residents(lane, reaped);
1267
+ const survivors = await lane_reap_settle.settle(lane);
1268
+ if (survivors?.length === 0) return;
1269
+ const details = lane_reap_settle.survivor_texts(survivors).join(", ");
1270
+ throw new Error(`Lane ${issue} port ownership has not settled: ${details}`);
1271
+ }
1272
+ var lane_seat_stop = { stop };
1273
+
1274
+ // scripts/run/merge/run-merge-close.ts
1275
+ var MERGE_CLOSER = "pnpm josh run:merge";
1276
+ var SINGLE_READ = { attempts: 1, interval_ms: 0 };
1277
+ async function close_merged_open(merged) {
1278
+ if (merged.merged_pr === void 0) return true;
1279
+ try {
1280
+ await git_followup_issue_close.ensure_issue_closed(
1281
+ { issue_number: merged.child, pr_url: merged.merged_pr, closer: MERGE_CLOSER },
1282
+ SINGLE_READ
1283
+ );
1284
+ return true;
1285
+ } catch {
1286
+ console.error(
1287
+ `${session_cite.issue(merged.child)}: could not be closed \u2014 ${git_followup_issue_close.CLOSE_RECOVERY}`
1288
+ );
1289
+ return false;
1290
+ }
1291
+ }
1292
+ function divert_info_to_stderr() {
1293
+ const { info } = console;
1294
+ console.info = console.error;
1295
+ return function restore() {
1296
+ console.info = info;
1297
+ };
1298
+ }
1299
+ async function with_notes_on_stderr(step) {
1300
+ const restore = divert_info_to_stderr();
1301
+ try {
1302
+ await step();
1303
+ } finally {
1304
+ restore();
1305
+ }
1306
+ }
1307
+ async function close_merged(merged) {
1308
+ if (!await close_merged_open(merged)) return;
1309
+ await with_notes_on_stderr(async () => {
1310
+ await epic_close.close_completed_epics({ issue_number: merged.child, is_merged: true });
1311
+ });
1312
+ }
1313
+ var run_merge_close = { close_merged };
1314
+
1315
+ // scripts/run/merge/run-merge-waits.ts
1316
+ var NOT_BEFORE_WAIT = "a start date still ahead (`not-before`)";
1317
+ async function open_blockers(child) {
1318
+ try {
1319
+ const references = await git_gh_command.issue_blocked_by_references(child, "");
1320
+ return references.filter((blocker) => blocker.state === "OPEN").map((blocker) => issue_cite.plain_for("github", blocker.number, blocker.repo));
1321
+ } catch {
1322
+ return [];
1323
+ }
1324
+ }
1325
+ async function has_not_before_label(ctx) {
1326
+ const state = await issue_state_cli.read_issue(ctx.child, ctx.repo);
1327
+ return state.kind === "state" && has_label_name(state.state.labels, NOT_BEFORE_LABEL);
1328
+ }
1329
+ async function start_date_wait(ctx) {
1330
+ const body = await git_gh_command.issue_get_body(ctx.child, ctx.repo);
1331
+ if (body === void 0) {
1332
+ return [await has_not_before_label(ctx) ? NOT_BEFORE_WAIT : "issue body confirmation"];
1333
+ }
1334
+ await issue_sample_prime.prime([body]);
1335
+ const reason = issue_not_before.waiting_reason(body);
1336
+ return reason === void 0 ? [] : [reason];
1337
+ }
1338
+ async function read(ctx) {
1339
+ const deferred = await lane_dispatch_dependency.deferred(ctx.child);
1340
+ if (deferred.length > 0) return deferred;
1341
+ return [...await open_blockers(ctx.child), ...await start_date_wait(ctx)];
1342
+ }
1343
+ var run_merge_waits = { read };
1344
+
1345
+ // scripts/run/merge/run-merge-steps.ts
1346
+ var OVER = "over";
1347
+ var LANES = "--lanes";
1348
+ var REPO_FLAG = "--repo";
1349
+ var CLOSE_CAUSE = "`run:merge` closed it";
1350
+ var STOPPED_CAUSE = "the unit stopped and `run:merge --stash` classified it";
1351
+ var SYNC_RETRY = { attempts: 3, interval_ms: 5e3 };
1352
+ var NO_WAITS = [];
1353
+ async function josh(args) {
1354
+ return await josh_command.josh_run(args);
1355
+ }
1356
+ async function read_record() {
1357
+ const directory = await run_carry.repository_directory();
1358
+ if (directory === void 0) return void 0;
1359
+ const target = run_carry.carry_path(directory);
1360
+ const read2 = run_carry.read_carry(target);
1361
+ if (read2.kind !== "carried") return void 0;
1362
+ return { target, carry: read2.carry };
1363
+ }
1364
+ async function apply_carry(ctx, change) {
1365
+ const record = await read_record();
1366
+ if (record === void 0) return { kind: "none" };
1367
+ if (run_carry.is_count_refused(record.carry, ctx.owner)) {
1368
+ return { kind: "refused", carry: record.carry };
1369
+ }
1370
+ if (change === void 0) return { kind: "applied", carry: record.carry };
1371
+ const owned = run_carry_conversation.reclaim_owner(record.carry, ctx.owner);
1372
+ return { kind: "applied", carry: run_carry.apply_change(record.target, owned, change) };
1373
+ }
1374
+ async function refused_carry(ctx) {
1375
+ const record = await read_record();
1376
+ if (record === void 0 || !run_carry.is_count_refused(record.carry, ctx.owner)) return void 0;
1377
+ return record.carry;
1378
+ }
1379
+ async function sync_main() {
1380
+ let error_output = "";
1381
+ const is_synced = await poll.poll_until(
1382
+ async () => {
1383
+ const result = await josh(["main:sync"]);
1384
+ error_output = result.err ?? "";
1385
+ return result.code === 0;
1386
+ },
1387
+ { ...SYNC_RETRY, sleeper: poll.sleep }
1388
+ );
1389
+ if (!is_synced) throw new Error(`main:sync failed: ${error_output}`);
1390
+ }
1391
+ async function close_lane(child) {
1392
+ const result = await josh(["lane:close", child]);
1393
+ const said = result.err?.trimEnd() ?? "";
1394
+ if (said !== "") console.error(said);
1395
+ if (result.code !== 0) console.error(`${session_cite.issue(child)}: lane:close is incomplete`);
1396
+ }
1397
+ async function close_preserved_lane(child) {
1398
+ if (await lane_preserve.preserve_lane(child, "lane close", CLOSE_CAUSE)) await close_lane(child);
1399
+ }
1400
+ function kept_lane_comment(directory) {
1401
+ return `The split left this issue's lane open: it still holds a commit, an uncommitted change or a live process \u2014 ${directory}`;
1402
+ }
1403
+ async function close_vacant_lane(child) {
1404
+ const lane = await lane_registry.find_open_lane(child);
1405
+ if (lane === void 0) return void 0;
1406
+ if (!await lane_vacant.is_vacant(lane)) return lane;
1407
+ await close_lane(child);
1408
+ return void 0;
1409
+ }
1410
+ async function close_split_lane(child) {
1411
+ const kept = await close_vacant_lane(child);
1412
+ if (kept !== void 0) {
1413
+ await git_gh_issue_write.issue_try_comment(child, kept_lane_comment(kept.directory));
1414
+ }
1415
+ }
1416
+ async function post_counters(ctx, carry) {
1417
+ if (carry === void 0 || ctx.epic === void 0) return;
1418
+ await git_gh_issue_write.issue_try_comment(ctx.epic, run_merge.counters_comment(carry));
1419
+ }
1420
+ async function count_merged(ctx) {
1421
+ return await apply_carry(ctx, {
1422
+ ...run_merge.change_of("merged"),
1423
+ merged_issue: Number(ctx.child)
1424
+ });
1425
+ }
1426
+ async function do_merged(ctx, record) {
1427
+ const refused = await refused_carry(ctx);
1428
+ if (refused !== void 0) return refused;
1429
+ const confirmed_at = /* @__PURE__ */ new Date();
1430
+ await settled_together(run_merge_close.close_merged(ctx), sync_main());
1431
+ const result = await count_merged(ctx);
1432
+ if (result.kind === "refused") return result.carry;
1433
+ await record(ctx.child, confirmed_at);
1434
+ const carry = result.kind === "applied" ? result.carry : void 0;
1435
+ await Promise.all([close_preserved_lane(ctx.child), post_counters(ctx, carry)]);
1436
+ return void 0;
1437
+ }
1438
+ async function release_child(child) {
1439
+ await lane_seat_stop.stop(child);
1440
+ await run_merge_cut_release.release(child);
1441
+ await run_label.unmark(child);
1442
+ await close_vacant_lane(child);
1443
+ }
1444
+ function refused_result(carry) {
1445
+ return { carry, is_parked: false, is_refused: true, waits: NO_WAITS };
1446
+ }
1447
+ async function do_waiting(ctx, waits) {
1448
+ const refused = await refused_carry(ctx);
1449
+ if (refused !== void 0) return refused_result(refused);
1450
+ await release_child(ctx.child);
1451
+ await git_gh_issue_write.issue_try_comment(ctx.child, run_merge.waiting_comment(waits));
1452
+ return { carry: void 0, is_parked: false, is_refused: false, waits };
1453
+ }
1454
+ async function park_failed(ctx, cause3) {
1455
+ const is_decision2 = run_merge_decision.is_decision(cause3.short);
1456
+ const result = await apply_carry(ctx, run_merge.change_of(is_decision2 ? "parked" : "failed"));
1457
+ if (result.kind === "refused") return refused_result(result.carry);
1458
+ const carry = result.kind === "applied" ? result.carry : void 0;
1459
+ await release_child(ctx.child);
1460
+ const reason = { child: ctx.child, cause: cause3.why, carry, output: ctx.output };
1461
+ const { label, comment } = run_merge_decision.park_options(cause3, reason);
1462
+ const park = await issue_park.apply(ctx.child, label, comment);
1463
+ return {
1464
+ carry,
1465
+ is_parked: park.is_labelled,
1466
+ is_refused: false,
1467
+ waits: NO_WAITS,
1468
+ cause: cause3.short
1469
+ };
1470
+ }
1471
+ async function do_failed(ctx, cause3) {
1472
+ const waits = await run_merge_waits.read(ctx);
1473
+ if (waits.length > 0) return await do_waiting(ctx, waits);
1474
+ return await park_failed(
1475
+ ctx,
1476
+ run_merge_cap.park_cause(ctx.child, cause3, ctx.capped_note, ctx.output)
1477
+ );
1478
+ }
1479
+ async function count_outage(ctx) {
1480
+ if (ctx.is_streak_exempt !== true) return await apply_carry(ctx, run_merge.change_of("outage"));
1481
+ const refused = await refused_carry(ctx);
1482
+ return refused === void 0 ? { kind: "none" } : { kind: "refused", carry: refused };
1483
+ }
1484
+ async function do_outage(ctx) {
1485
+ const result = await count_outage(ctx);
1486
+ if (result.kind === "refused") return { carry: result.carry, is_refused: true };
1487
+ await release_child(ctx.child);
1488
+ await run_merge_github_limit.hold(ctx.child, ctx.output);
1489
+ return { carry: result.kind === "applied" ? result.carry : void 0, is_refused: false };
1490
+ }
1491
+ async function relaunchable_lane(child) {
1492
+ const lane = await lane_registry.find_open_lane(child);
1493
+ return lane === void 0 || lane_relaunch.is_openai_lane(lane) ? void 0 : lane;
1494
+ }
1495
+ async function relaunchable_cut(child) {
1496
+ const lane = await relaunchable_lane(child);
1497
+ if (lane === void 0) return void 0;
1498
+ const carried = run_cut.lane_cut_sync(lane.directory);
1499
+ if (carried === void 0 || !run_cut.is_relaunchable(carried.cut, child)) return void 0;
1500
+ return { lane, ...carried };
1501
+ }
1502
+ async function has_resumable_cut(child) {
1503
+ return await relaunchable_cut(child) !== void 0;
1504
+ }
1505
+ async function stash_stopped(child) {
1506
+ if (await has_resumable_cut(child)) return;
1507
+ await lane_preserve.preserve_lane(child, "stopped unit", STOPPED_CAUSE);
1508
+ }
1509
+ async function resume_cut(child) {
1510
+ const found = await relaunchable_cut(child);
1511
+ if (found === void 0 || !run_cut.mark_merge_relaunched(found.target, found.cut)) return false;
1512
+ const result = await lane_relaunch.resume(found.lane, found.cut.phase, (note) => {
1513
+ console.error(note);
1514
+ });
1515
+ return result.kind === "launched";
1516
+ }
1517
+ async function is_over_budget(over) {
1518
+ if (over === void 0) return false;
1519
+ const result = await josh(["cost", "--cut"]);
1520
+ return result.code !== 0 || result.out === OVER;
1521
+ }
1522
+ async function ask_next(ctx) {
1523
+ if (ctx.epic === void 0 || ctx.repo === void 0) {
1524
+ const backlog = await josh(["backlog:next"]);
1525
+ return backlog.out;
1526
+ }
1527
+ const offer = await josh(["epic:next", ctx.epic, REPO_FLAG, ctx.repo, LANES]);
1528
+ return offer.out;
1529
+ }
1530
+ var run_merge_steps = {
1531
+ ask_next,
1532
+ close_split_lane,
1533
+ release_child,
1534
+ do_failed,
1535
+ do_merged,
1536
+ do_outage,
1537
+ has_resumable_cut,
1538
+ is_over_budget,
1539
+ read_record,
1540
+ refused_carry,
1541
+ resume_cut,
1542
+ stash_stopped
1543
+ };
1544
+
1545
+ // scripts/run/merge/run-merge-signals.ts
1546
+ function read_is_outage(output) {
1547
+ if (output === void 0) return false;
1548
+ if (api_outage.is_outage(run_ending.read_exit(output))) return true;
1549
+ return run_ending.ended_mid_turn(output) || run_merge_github_limit.read_stop(output) === "auth";
1550
+ }
1551
+ async function is_exempt_stop(child, output) {
1552
+ if (await run_merge_restart.is_host_restart(child, output)) return true;
1553
+ return run_merge_github_limit.read_stop(output) === "rate-limit";
1554
+ }
1555
+ function read_is_auth_failure(output) {
1556
+ if (output === void 0) return false;
1557
+ return api_auth.is_auth_failed_transcript(run_ending.read_transcript(output));
1558
+ }
1559
+ async function retry_cause(child, output) {
1560
+ if (await is_exempt_stop(child, output)) return "exempt";
1561
+ if (read_is_outage(output)) return "api";
1562
+ return await run_merge_ship.is_unanswered(child, output) ? "exempt" : void 0;
1563
+ }
1564
+ async function is_capped(child, cause3) {
1565
+ const events = await run_event_stream_emit.current_events();
1566
+ if (run_merge_cap.outages(events, child) < run_merge.CONSECUTIVE_OUTAGE_LIMIT) return false;
1567
+ if (cause3 !== "api") return true;
1568
+ const record = await run_merge_steps.read_record();
1569
+ return !run_merge.is_outage_guard_tripped(record?.carry.outages ?? 0);
1570
+ }
1571
+ async function read_retryable(child, output) {
1572
+ const cause3 = await retry_cause(child, output);
1573
+ if (cause3 === void 0) return { is_outage: false, is_streak_exempt: false };
1574
+ if (await is_capped(child, cause3)) {
1575
+ const events = await run_event_stream_emit.current_events();
1576
+ const limit = run_merge.CONSECUTIVE_OUTAGE_LIMIT;
1577
+ return { is_outage: false, capped_note: run_merge_cap.note_of(events, child, limit) };
1578
+ }
1579
+ return { is_outage: true, is_streak_exempt: cause3 === "exempt" };
1580
+ }
1581
+ async function read_merged_pr(child, read2) {
1582
+ if (read2.kind !== "state" || run_merge.classify_child(read2.state) !== "failed") return void 0;
1583
+ return await issue_closing_pr.read_closing_pr(child);
1584
+ }
1585
+ async function read_is_withdrawn(child, read2) {
1586
+ if (read2.kind !== "state" || run_merge.classify_child(read2.state) !== "merged") {
1587
+ return run_event_scope.is_withdrawn(await run_event_stream_emit.current_events(), child);
1588
+ }
1589
+ const is_merged = await issue_merged.read_merge_state(child);
1590
+ return is_merged === void 0 ? void 0 : !is_merged;
1591
+ }
1592
+ async function read_is_yielded(child) {
1593
+ return lane_yield.is_yielded(await run_event_stream_emit.current_events(), child);
1594
+ }
1595
+ function read_resume_ms(output) {
1596
+ if (output === void 0) return void 0;
1597
+ const transcript = run_ending.read_transcript(output);
1598
+ return api_usage_limit.transcript_resume_ms(transcript, Date.now(), run_ending.written_at(output));
1599
+ }
1600
+ async function read_signals(ctx, read2) {
1601
+ const [is_cut, merged_pr, retryable, is_withdrawn, is_yielded] = await Promise.all([
1602
+ run_merge_steps.has_resumable_cut(ctx.child),
1603
+ read_merged_pr(ctx.child, read2),
1604
+ read_retryable(ctx.child, ctx.output),
1605
+ read_is_withdrawn(ctx.child, read2),
1606
+ read_is_yielded(ctx.child)
1607
+ ]);
1608
+ const is_auth_failure = read_is_auth_failure(ctx.output);
1609
+ const resume_ms2 = read_resume_ms(ctx.output);
1610
+ return { ...retryable, is_cut, merged_pr, is_withdrawn, is_yielded, is_auth_failure, resume_ms: resume_ms2 };
1611
+ }
1612
+ function outcome_of(read2, signals) {
1613
+ if (signals.is_withdrawn === void 0) return "unresolved";
1614
+ return run_merge.classify_child(read2.kind === "state" ? read2.state : void 0, signals);
1615
+ }
1616
+ var run_merge_signals = { outcome_of, read_merged_pr, read_signals };
1617
+
1618
+ // scripts/run/merge/run-merge-withdrawn.ts
1619
+ var UNMERGED_REASON = "its issue was closed without a merged pull request";
1620
+ var NOTHING_LEFT = { note: void 0, is_retry: false };
1621
+ async function collect(child) {
1622
+ const events = await run_event_stream_emit.current_events();
1623
+ if (run_event_scope.is_withdrawn(events, child)) return NOTHING_LEFT;
1624
+ const lane = await lane_registry.find_open_lane(child);
1625
+ return lane === void 0 ? NOTHING_LEFT : await lane_withdraw_closed.withdraw_lane(lane, UNMERGED_REASON, "merge");
1626
+ }
1627
+ async function collect_yield(child) {
1628
+ const lane = await lane_registry.find_open_lane(child);
1629
+ if (lane === void 0) return NOTHING_LEFT;
1630
+ const reason = lane_yield.withdraw_reason(await run_event_stream_emit.current_events(), child);
1631
+ return await lane_withdraw_closed.withdraw_lane(lane, reason, "yield");
1632
+ }
1633
+ var run_merge_withdrawn = { UNMERGED_REASON, collect, collect_yield };
1634
+
1635
+ // scripts/run/merge/run-merge-cli.ts
1636
+ var SUCCESS_EXIT_CODE = 0;
1637
+ var FAILURE_EXIT_CODE = 1;
1638
+ var FIRST = 0;
1639
+ var MIN_PID = 1;
1640
+ var { MERGE_TOKEN } = run_merge_token;
1641
+ var PARK_FAILURE_NOTE = `The failed child could not be parked with ${RUN_STALLED_LABEL}; stopping.`;
1642
+ var REPO_PATTERN = /^[A-Za-z0-9][\w.-]*\/[A-Za-z0-9][\w.-]*$/u;
1643
+ var USAGE = "Usage: josh run:merge <issue> [--over <deprecated>] [--epic <E> --repo <owner/repo>] [--owner <pid>] [--output <path>] [--driver] [--stash]";
1644
+ var OPTIONS = {
1645
+ driver: { type: "boolean" },
1646
+ stash: { type: "boolean" },
1647
+ epic: { type: "string" },
1648
+ output: { type: "string" },
1649
+ over: { type: "string" },
1650
+ owner: { type: "string" },
1651
+ repo: { type: "string" }
1652
+ };
1653
+ function to_owner(raw) {
1654
+ if (raw === void 0) return run_carry.session_owner();
1655
+ const pid = cli_flags.to_count(raw);
1656
+ return pid === void 0 || pid < MIN_PID ? void 0 : run_carry.owner_of(pid);
1657
+ }
1658
+ function is_epic_without_repo(values) {
1659
+ return values.epic !== void 0 && values.repo === void 0;
1660
+ }
1661
+ function valid_epic(raw) {
1662
+ if (raw === void 0) return void 0;
1663
+ return issue_number_shape.ISSUE_NUMBER_PATTERN.test(raw) ? raw : void 0;
1664
+ }
1665
+ function valid_repo(raw) {
1666
+ if (raw === void 0) return void 0;
1667
+ return REPO_PATTERN.test(raw) ? raw : void 0;
1668
+ }
1669
+ function is_rejected(raw, valid) {
1670
+ return raw !== void 0 && valid === void 0;
1671
+ }
1672
+ function has_invalid_offer(values) {
1673
+ return is_epic_without_repo(values) || is_rejected(values.epic, valid_epic(values.epic)) || is_rejected(values.repo, valid_repo(values.repo));
1674
+ }
1675
+ function has_invalid_legacy_over(raw) {
1676
+ if (raw === void 0) return false;
1677
+ return cli_flags.to_count(raw) === void 0;
1678
+ }
1679
+ function valid_child(parsed) {
1680
+ const child = parsed.positionals[FIRST];
1681
+ if (child === void 0) return void 0;
1682
+ return issue_number_shape.ISSUE_NUMBER_PATTERN.test(child) ? child : void 0;
1683
+ }
1684
+ function cut_check_of(values) {
1685
+ return values.driver === true ? void 0 : true;
1686
+ }
1687
+ function to_context(parsed) {
1688
+ if (has_invalid_offer(parsed.values) || has_invalid_legacy_over(parsed.values.over)) {
1689
+ return void 0;
1690
+ }
1691
+ const child = valid_child(parsed);
1692
+ if (child === void 0) return void 0;
1693
+ const owner = to_owner(parsed.values.owner);
1694
+ if (owner === void 0) return void 0;
1695
+ return {
1696
+ child,
1697
+ epic: valid_epic(parsed.values.epic),
1698
+ repo: valid_repo(parsed.values.repo),
1699
+ over: cut_check_of(parsed.values),
1700
+ owner,
1701
+ output: parsed.values.output,
1702
+ stash: parsed.values.stash
1703
+ };
1704
+ }
1705
+ function parse2(argv) {
1706
+ const parsed = cli_flags.arguments_of(argv, OPTIONS);
1707
+ return parsed === void 0 ? void 0 : to_context(parsed);
1708
+ }
1709
+ function emit(token, code) {
1710
+ return { token, code, is_offer: false };
1711
+ }
1712
+ async function offered(ctx) {
1713
+ const token = ctx.over === void 0 ? run_merge_driver.DEFERRED_OFFER : await run_merge_steps.ask_next(ctx);
1714
+ return { token, code: SUCCESS_EXIT_CODE, is_offer: true };
1715
+ }
1716
+ function report_count_refused(carry) {
1717
+ if (carry !== void 0) console.error(run_carry.count_refused_message(carry));
1718
+ return emit(MERGE_TOKEN.BUSY, FAILURE_EXIT_CODE);
1719
+ }
1720
+ async function record_merged(ctx) {
1721
+ return await run_merge_steps.do_merged(ctx, run_merge_dated.put_on_record);
1722
+ }
1723
+ async function on_merged(ctx) {
1724
+ const refused = await record_merged(ctx);
1725
+ if (refused !== void 0) return report_count_refused(refused);
1726
+ await lane_overrun.investigate(Number(ctx.child));
1727
+ await lane_baseline.investigate(Number(ctx.child));
1728
+ if (await run_merge_steps.is_over_budget(ctx.over)) {
1729
+ return emit(MERGE_TOKEN.OVER, SUCCESS_EXIT_CODE);
1730
+ }
1731
+ return await offered(ctx);
1732
+ }
1733
+ async function on_waiting(ctx, waits) {
1734
+ await run_event_stream_emit.emit(
1735
+ run_event_stream.EVENT_KIND.PARK,
1736
+ `${issue_cite.plain_for("program", ctx.child)} waiting on ${waits.join(", ")}`
1737
+ );
1738
+ return await offered(ctx);
1739
+ }
1740
+ async function on_parked_failure(ctx, result) {
1741
+ if (!result.is_parked) {
1742
+ console.error(PARK_FAILURE_NOTE);
1743
+ return emit(MERGE_TOKEN.STOP, FAILURE_EXIT_CODE);
1744
+ }
1745
+ const cause3 = result.cause ?? run_merge_decision.cause(ctx.output).short;
1746
+ const park = run_merge_decision.park_event(ctx.child, cause3);
1747
+ await run_event_stream_emit.emit(run_event_stream.EVENT_KIND.PARK, park);
1748
+ if (run_merge_decision.is_guard_tripped(cause3, result.carry)) {
1749
+ await run_merge_health.check(ctx.child);
1750
+ }
1751
+ return { ...await offered(ctx), is_parked: true };
1752
+ }
1753
+ async function on_failed(ctx, cause3) {
1754
+ const result = await run_merge_steps.do_failed(ctx, cause3);
1755
+ if (result.is_refused) return report_count_refused(result.carry);
1756
+ if (result.waits.length > 0) return await on_waiting(ctx, result.waits);
1757
+ return await on_parked_failure(ctx, result);
1758
+ }
1759
+ async function on_outage(ctx) {
1760
+ const result = await run_merge_steps.do_outage(ctx);
1761
+ if (result.is_refused) return report_count_refused(result.carry);
1762
+ await run_event_stream_emit.emit(
1763
+ run_event_stream.EVENT_KIND.OUTAGE,
1764
+ `${issue_cite.plain_for("program", ctx.child)} outage (re-dispatchable)`
1765
+ );
1766
+ const outages2 = result.carry?.outages ?? 0;
1767
+ if (run_merge.is_outage_guard_tripped(outages2)) {
1768
+ await run_merge_usage_limit.record(
1769
+ ctx.child,
1770
+ Date.now() + run_merge.outage_wait_ms(outages2),
1771
+ "api outage"
1772
+ );
1773
+ }
1774
+ return await offered(ctx);
1775
+ }
1776
+ async function on_unauthenticated(ctx) {
1777
+ await run_merge_steps.release_child(ctx.child);
1778
+ await run_merge_auth.hold(ctx.child, Date.now());
1779
+ return await offered(ctx);
1780
+ }
1781
+ async function on_usage_limit(ctx) {
1782
+ await run_merge_steps.release_child(ctx.child);
1783
+ await run_merge_usage_limit.record(ctx.child, ctx.resume_ms ?? Date.now());
1784
+ return await offered(ctx);
1785
+ }
1786
+ async function on_cut(ctx) {
1787
+ const refused = await run_merge_steps.refused_carry(ctx);
1788
+ if (refused !== void 0) return report_count_refused(refused);
1789
+ if (!await run_merge_steps.resume_cut(ctx.child)) {
1790
+ return await on_failed(ctx, run_stalled.CUT_NOT_RELAUNCHED);
1791
+ }
1792
+ await run_event_stream_emit.emit(
1793
+ run_event_stream.EVENT_KIND.CHILD_LAUNCH,
1794
+ `${issue_cite.plain_for("program", ctx.child)} resumed from its cut`
1795
+ );
1796
+ return emit(MERGE_TOKEN.RESUMED, SUCCESS_EXIT_CODE);
1797
+ }
1798
+ async function on_parked(ctx) {
1799
+ await run_merge_steps.release_child(ctx.child);
1800
+ await run_event_stream_emit.emit(
1801
+ run_event_stream.EVENT_KIND.PARK,
1802
+ `${issue_cite.plain_for("program", ctx.child)} parked`
1803
+ );
1804
+ return await offered(ctx);
1805
+ }
1806
+ async function on_skipped(ctx) {
1807
+ await run_merge_steps.close_split_lane(ctx.child);
1808
+ await run_event_stream_emit.emit(
1809
+ run_event_stream.EVENT_KIND.SPLIT,
1810
+ `${issue_cite.plain_for("program", ctx.child)} split`
1811
+ );
1812
+ return await offered(ctx);
1813
+ }
1814
+ async function on_collected(ctx, collected) {
1815
+ if (collected.note !== void 0) console.error(collected.note);
1816
+ if (collected.is_retry) return emit(MERGE_TOKEN.RETRY, FAILURE_EXIT_CODE);
1817
+ return await offered(ctx);
1818
+ }
1819
+ async function on_withdrawn(ctx) {
1820
+ return await on_collected(ctx, await run_merge_withdrawn.collect(ctx.child));
1821
+ }
1822
+ async function on_yielded(ctx) {
1823
+ return await on_collected(ctx, await run_merge_withdrawn.collect_yield(ctx.child));
1824
+ }
1825
+ async function on_human_review(ctx) {
1826
+ if (!await run_merge_human_review.retain(ctx.child)) {
1827
+ return emit(MERGE_TOKEN.RETRY, FAILURE_EXIT_CODE);
1828
+ }
1829
+ return await offered(ctx);
1830
+ }
1831
+ async function on_unresolved() {
1832
+ return emit(MERGE_TOKEN.RETRY, FAILURE_EXIT_CODE);
1833
+ }
1834
+ async function on_shipping() {
1835
+ return emit(MERGE_TOKEN.RESUMED, SUCCESS_EXIT_CODE);
1836
+ }
1837
+ var HANDLERS = {
1838
+ cut: on_cut,
1839
+ failed: on_failed,
1840
+ "human-review": on_human_review,
1841
+ merged: on_merged,
1842
+ outage: on_outage,
1843
+ unauthenticated: on_unauthenticated,
1844
+ "usage-limit": on_usage_limit,
1845
+ parked: on_parked,
1846
+ split: on_skipped,
1847
+ unresolved: on_unresolved,
1848
+ shipping: on_shipping,
1849
+ withdrawn: on_withdrawn,
1850
+ yielded: on_yielded
1851
+ };
1852
+ async function merge_child(ctx) {
1853
+ if (lane_handoff.is_ship_running(ctx.child, process.cwd())) {
1854
+ return { outcome: "shipping", ...await on_shipping() };
1855
+ }
1856
+ if (ctx.stash === true) await run_merge_steps.stash_stopped(ctx.child);
1857
+ const read2 = await issue_state_cli.read_issue(ctx.child, ctx.repo);
1858
+ const signals = await run_merge_signals.read_signals(ctx, read2);
1859
+ const outcome = run_merge_signals.outcome_of(read2, signals);
1860
+ const { merged_pr, is_streak_exempt, capped_note, resume_ms: resume_ms2 } = signals;
1861
+ const handled = { ...ctx, merged_pr, is_streak_exempt, capped_note, resume_ms: resume_ms2 };
1862
+ return { outcome, ...await HANDLERS[outcome](handled) };
1863
+ }
1864
+ async function run(argv) {
1865
+ const ctx = parse2(argv);
1866
+ if (ctx === void 0) {
1867
+ console.error(USAGE);
1868
+ return FAILURE_EXIT_CODE;
1869
+ }
1870
+ const result = await merge_child(ctx);
1871
+ console.info(run_merge_driver.printed(argv, result));
1872
+ return result.code;
1873
+ }
1874
+ var run_merge_cli = {
1875
+ merge_child,
1876
+ parse: parse2,
1877
+ read_merged_pr: run_merge_signals.read_merged_pr,
1878
+ record_merged,
1879
+ run
1880
+ };
1881
+
1882
+ export {
1883
+ run_merge,
1884
+ run_merge_cli
1885
+ };