@joshuafolkken/kit 1.3099.0 → 1.3125.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 (1119) hide show
  1. package/.claude/skills/workflow-commands/split-assessment.md +2 -3
  2. package/.github/actions/setup-pnpm/action.yml +12 -4
  3. package/dist/.inputs-verified.json +1 -1
  4. package/dist/commands/adopt.js +20 -20
  5. package/dist/commands/auto-ok-judge-cli.js +30 -30
  6. package/dist/commands/auto-ok-main.js +64 -63
  7. package/dist/commands/backlog-budget-main.js +5 -5
  8. package/dist/commands/backlog-drive-cli.js +220 -203
  9. package/dist/commands/backlog-next-main.js +157 -101
  10. package/dist/commands/backlog-offer-main.js +168 -120
  11. package/dist/commands/backlog-plan-cli.js +159 -110
  12. package/dist/commands/backlog-triage-cli.js +171 -115
  13. package/dist/commands/backlogrun-cli.js +255 -245
  14. package/dist/commands/behavior-cli.js +16 -15
  15. package/dist/commands/bytes-command.js +41 -41
  16. package/dist/commands/cases-cli.js +3 -3
  17. package/dist/commands/check-commit-message-main.js +3 -3
  18. package/dist/commands/check-related.js +93 -93
  19. package/dist/commands/chunk-23PU6FAC.js +140 -0
  20. package/dist/commands/chunk-23TWJOAI.js +172 -0
  21. package/dist/commands/chunk-24MXEDSJ.js +81 -0
  22. package/dist/commands/chunk-25LVQDOF.js +183 -0
  23. package/dist/commands/chunk-25LYH5QR.js +85 -0
  24. package/dist/commands/chunk-2AH73ZTW.js +84 -0
  25. package/dist/commands/chunk-2BNLPPP4.js +42 -0
  26. package/dist/commands/chunk-2FD3N3OX.js +119 -0
  27. package/dist/commands/chunk-2GJ3WJVT.js +117 -0
  28. package/dist/commands/chunk-2JGOKYJQ.js +426 -0
  29. package/dist/commands/chunk-2MDLCJZ4.js +389 -0
  30. package/dist/commands/chunk-2ROVUERM.js +99 -0
  31. package/dist/commands/chunk-2TI22UNK.js +137 -0
  32. package/dist/commands/chunk-2TUA6V4F.js +191 -0
  33. package/dist/commands/chunk-2UXSF5YF.js +49 -0
  34. package/dist/commands/chunk-2ZDVX64H.js +66 -0
  35. package/dist/commands/chunk-33N7SBIU.js +18 -0
  36. package/dist/commands/chunk-373P5MM2.js +353 -0
  37. package/dist/commands/chunk-37RULO76.js +220 -0
  38. package/dist/commands/chunk-3EYRE3GI.js +173 -0
  39. package/dist/commands/chunk-3IXIYDC3.js +179 -0
  40. package/dist/commands/chunk-3OFJCJN4.js +30 -0
  41. package/dist/commands/chunk-3OSUM6DM.js +53 -0
  42. package/dist/commands/chunk-3PGB2RKZ.js +333 -0
  43. package/dist/commands/chunk-3QNEEG5O.js +117 -0
  44. package/dist/commands/chunk-3TN76RWK.js +156 -0
  45. package/dist/commands/chunk-3W2TJZMD.js +77 -0
  46. package/dist/commands/chunk-3Y32BYLU.js +1244 -0
  47. package/dist/commands/chunk-3ZQOMI5A.js +245 -0
  48. package/dist/commands/chunk-42W6WARP.js +263 -0
  49. package/dist/commands/chunk-44UIURBQ.js +130 -0
  50. package/dist/commands/chunk-45RCSJGE.js +321 -0
  51. package/dist/commands/chunk-4DNAAFF4.js +159 -0
  52. package/dist/commands/chunk-4E5WBWG7.js +70 -0
  53. package/dist/commands/chunk-4MRBLCDB.js +96 -0
  54. package/dist/commands/chunk-4NIHTEGD.js +332 -0
  55. package/dist/commands/chunk-4ODXKJJT.js +566 -0
  56. package/dist/commands/chunk-4P5F7CLB.js +47 -0
  57. package/dist/commands/chunk-52CGT2IN.js +119 -0
  58. package/dist/commands/chunk-54ZLBLLE.js +74 -0
  59. package/dist/commands/chunk-56344LLX.js +114 -0
  60. package/dist/commands/chunk-56GR7L5L.js +36 -0
  61. package/dist/commands/chunk-5ADJDGFT.js +126 -0
  62. package/dist/commands/chunk-5CMXAHCL.js +161 -0
  63. package/dist/commands/chunk-5DMFMP4V.js +121 -0
  64. package/dist/commands/chunk-5I3M4B3H.js +185 -0
  65. package/dist/commands/chunk-5JIMCETI.js +104 -0
  66. package/dist/commands/chunk-5KEESWMC.js +138 -0
  67. package/dist/commands/chunk-5LNRVX2R.js +214 -0
  68. package/dist/commands/chunk-5PLKHUQD.js +492 -0
  69. package/dist/commands/chunk-5QICRFVL.js +167 -0
  70. package/dist/commands/chunk-5RCBXYYD.js +101 -0
  71. package/dist/commands/chunk-5SOU366I.js +252 -0
  72. package/dist/commands/chunk-5VUHAXPI.js +77 -0
  73. package/dist/commands/chunk-5XJUUZ6U.js +773 -0
  74. package/dist/commands/chunk-5ZMVRU3U.js +46 -0
  75. package/dist/commands/chunk-5ZWU2B7T.js +507 -0
  76. package/dist/commands/chunk-5ZXR36N7.js +67 -0
  77. package/dist/commands/chunk-623LFKFM.js +60 -0
  78. package/dist/commands/chunk-64II6P7B.js +81 -0
  79. package/dist/commands/chunk-6DJT64DN.js +342 -0
  80. package/dist/commands/chunk-6HJ5CJSJ.js +121 -0
  81. package/dist/commands/chunk-6LGMEJRN.js +67 -0
  82. package/dist/commands/chunk-6LHMR3CR.js +126 -0
  83. package/dist/commands/chunk-6NXTP5JT.js +114 -0
  84. package/dist/commands/chunk-6OKVY2E3.js +128 -0
  85. package/dist/commands/chunk-6OUQZC6V.js +1153 -0
  86. package/dist/commands/chunk-6PL2AK3C.js +204 -0
  87. package/dist/commands/chunk-6PLIQCBG.js +326 -0
  88. package/dist/commands/chunk-6QVDEMGB.js +118 -0
  89. package/dist/commands/chunk-6T67GZMJ.js +60 -0
  90. package/dist/commands/chunk-6TC2ZMNB.js +64 -0
  91. package/dist/commands/chunk-6TOHJZ4J.js +224 -0
  92. package/dist/commands/chunk-6TOWGIY2.js +127 -0
  93. package/dist/commands/chunk-6TPGDOOD.js +48 -0
  94. package/dist/commands/chunk-6XXEW3NQ.js +159 -0
  95. package/dist/commands/chunk-72HZ2APA.js +229 -0
  96. package/dist/commands/chunk-72LAYP5S.js +46 -0
  97. package/dist/commands/chunk-72Y7PXUJ.js +83 -0
  98. package/dist/commands/chunk-77R6JEET.js +128 -0
  99. package/dist/commands/chunk-7GICNM73.js +137 -0
  100. package/dist/commands/chunk-7OZT74HR.js +78 -0
  101. package/dist/commands/chunk-7QAYL2RH.js +555 -0
  102. package/dist/commands/chunk-7T7GIZYW.js +92 -0
  103. package/dist/commands/chunk-7VXSMXVE.js +79 -0
  104. package/dist/commands/chunk-7WTVADW4.js +33 -0
  105. package/dist/commands/chunk-7YXCOW3X.js +114 -0
  106. package/dist/commands/chunk-7YYI3OX6.js +104 -0
  107. package/dist/commands/chunk-7Z25RNTV.js +516 -0
  108. package/dist/commands/chunk-A73RWSHJ.js +126 -0
  109. package/dist/commands/chunk-AAIZ2H66.js +58 -0
  110. package/dist/commands/chunk-AFGEGGIF.js +17 -0
  111. package/dist/commands/chunk-AJTXSSRD.js +29 -0
  112. package/dist/commands/chunk-AKM3BHVJ.js +48 -0
  113. package/dist/commands/chunk-AL2H63BP.js +48 -0
  114. package/dist/commands/chunk-AMQNHTDN.js +60 -0
  115. package/dist/commands/chunk-AQGVQMWF.js +168 -0
  116. package/dist/commands/chunk-B4OZF4XL.js +89 -0
  117. package/dist/commands/chunk-B4W77FVS.js +704 -0
  118. package/dist/commands/chunk-B4YBGU2C.js +580 -0
  119. package/dist/commands/chunk-B636LL4X.js +239 -0
  120. package/dist/commands/chunk-B762PNT6.js +66 -0
  121. package/dist/commands/chunk-B7UY7EOD.js +72 -0
  122. package/dist/commands/chunk-BAJABWKW.js +43 -0
  123. package/dist/commands/chunk-BAQRD3TC.js +105 -0
  124. package/dist/commands/chunk-BBPESBU3.js +85 -0
  125. package/dist/commands/chunk-BGKUZJT7.js +25 -0
  126. package/dist/commands/chunk-BIVM6OTE.js +19 -0
  127. package/dist/commands/chunk-BJQDQAQU.js +167 -0
  128. package/dist/commands/chunk-BU3WIUDD.js +230 -0
  129. package/dist/commands/chunk-C2WXQPF3.js +34 -0
  130. package/dist/commands/chunk-C3V6H6TW.js +183 -0
  131. package/dist/commands/chunk-C3Y42PHX.js +229 -0
  132. package/dist/commands/chunk-C7CDGSMW.js +112 -0
  133. package/dist/commands/chunk-C7JEMYPV.js +102 -0
  134. package/dist/commands/chunk-CCAVK7HN.js +4221 -0
  135. package/dist/commands/chunk-CFLCZ2WO.js +63 -0
  136. package/dist/commands/chunk-CGA2K3XV.js +137 -0
  137. package/dist/commands/chunk-CHQQ3VTL.js +184 -0
  138. package/dist/commands/chunk-CKD2G35M.js +86 -0
  139. package/dist/commands/chunk-CMTTDS7F.js +77 -0
  140. package/dist/commands/chunk-CRCQOA4Z.js +77 -0
  141. package/dist/commands/chunk-CT773QBI.js +161 -0
  142. package/dist/commands/chunk-CVZXDKCV.js +525 -0
  143. package/dist/commands/chunk-CXFN5W7O.js +116 -0
  144. package/dist/commands/chunk-CXVNQ7DS.js +88 -0
  145. package/dist/commands/chunk-CYYJLRIW.js +85 -0
  146. package/dist/commands/chunk-D6UXGFJ7.js +44 -0
  147. package/dist/commands/chunk-DIXUXHZ2.js +207 -0
  148. package/dist/commands/chunk-DM6I4PYD.js +110 -0
  149. package/dist/commands/chunk-DOM6HJL3.js +769 -0
  150. package/dist/commands/chunk-DVIOBFU7.js +210 -0
  151. package/dist/commands/chunk-E5CGA7FC.js +114 -0
  152. package/dist/commands/chunk-EG44IWNI.js +88 -0
  153. package/dist/commands/chunk-EHVFQQO6.js +45 -0
  154. package/dist/commands/chunk-EJG5ZJKD.js +1629 -0
  155. package/dist/commands/chunk-EKKUHXFD.js +241 -0
  156. package/dist/commands/chunk-ELCYNBZO.js +430 -0
  157. package/dist/commands/chunk-ELZQL6M3.js +100 -0
  158. package/dist/commands/chunk-EOPRRSCY.js +1891 -0
  159. package/dist/commands/chunk-EQTDNFPF.js +123 -0
  160. package/dist/commands/chunk-ERAABGU7.js +93 -0
  161. package/dist/commands/chunk-ESMIFITZ.js +715 -0
  162. package/dist/commands/chunk-EWBEYTVS.js +50 -0
  163. package/dist/commands/chunk-EYR2X5MZ.js +53 -0
  164. package/dist/commands/chunk-F546BPG3.js +74 -0
  165. package/dist/commands/chunk-F7SAHNGR.js +34 -0
  166. package/dist/commands/chunk-FBWNL3UA.js +209 -0
  167. package/dist/commands/chunk-FBZD6LOK.js +225 -0
  168. package/dist/commands/chunk-FDSSBZC7.js +75 -0
  169. package/dist/commands/chunk-FFLZPLWC.js +59 -0
  170. package/dist/commands/chunk-FHLV5BII.js +170 -0
  171. package/dist/commands/chunk-FITTCICF.js +247 -0
  172. package/dist/commands/chunk-FJ622XHY.js +179 -0
  173. package/dist/commands/chunk-FQPL6T66.js +80 -0
  174. package/dist/commands/chunk-FSM3WPTR.js +73 -0
  175. package/dist/commands/chunk-FSZA4DME.js +268 -0
  176. package/dist/commands/chunk-FVPRBMHE.js +38 -0
  177. package/dist/commands/chunk-FZ62KJXP.js +75 -0
  178. package/dist/commands/chunk-FZNYKSQS.js +335 -0
  179. package/dist/commands/chunk-FZYFGHRY.js +72 -0
  180. package/dist/commands/chunk-G4UVY3TO.js +90 -0
  181. package/dist/commands/chunk-G6H2TOAA.js +18 -0
  182. package/dist/commands/chunk-GC73YEU7.js +119 -0
  183. package/dist/commands/chunk-GHVL6IJA.js +653 -0
  184. package/dist/commands/chunk-GIGXVOKR.js +208 -0
  185. package/dist/commands/chunk-GL2DZXYD.js +103 -0
  186. package/dist/commands/chunk-GL3VOBWB.js +170 -0
  187. package/dist/commands/chunk-GLXOLYZE.js +64 -0
  188. package/dist/commands/chunk-GNRTFRSL.js +41 -0
  189. package/dist/commands/chunk-GX5XHW2F.js +132 -0
  190. package/dist/commands/chunk-GXXWRH6F.js +98 -0
  191. package/dist/commands/chunk-GY6O2WYG.js +120 -0
  192. package/dist/commands/chunk-H4IDKP55.js +37 -0
  193. package/dist/commands/chunk-H5WWD3TX.js +719 -0
  194. package/dist/commands/chunk-H6MHUR2Y.js +114 -0
  195. package/dist/commands/chunk-H6TBBVC2.js +73 -0
  196. package/dist/commands/chunk-HF52YP56.js +178 -0
  197. package/dist/commands/chunk-HKHGX7TW.js +173 -0
  198. package/dist/commands/chunk-HLQVLQEB.js +177 -0
  199. package/dist/commands/chunk-HN3EGYAI.js +169 -0
  200. package/dist/commands/chunk-HNZLKGKJ.js +43 -0
  201. package/dist/commands/chunk-HQ5U6OZR.js +315 -0
  202. package/dist/commands/chunk-HUCOQ4PI.js +161 -0
  203. package/dist/commands/chunk-HXAVYXUS.js +307 -0
  204. package/dist/commands/chunk-HXM26K3O.js +67 -0
  205. package/dist/commands/chunk-HYQ5Q6AE.js +304 -0
  206. package/dist/commands/chunk-HYVAEK6M.js +155 -0
  207. package/dist/commands/chunk-I2HHXZVG.js +46 -0
  208. package/dist/commands/chunk-I2RBOH4F.js +469 -0
  209. package/dist/commands/chunk-I36PDO6I.js +258 -0
  210. package/dist/commands/chunk-IAA73DWD.js +212 -0
  211. package/dist/commands/chunk-IBOCPSPK.js +103 -0
  212. package/dist/commands/chunk-IC5XLIE2.js +68 -0
  213. package/dist/commands/chunk-ICKP5W3Q.js +41 -0
  214. package/dist/commands/chunk-IHQHHNYR.js +1314 -0
  215. package/dist/commands/chunk-ILQU26IF.js +408 -0
  216. package/dist/commands/chunk-INOXSDDC.js +7712 -0
  217. package/dist/commands/chunk-IQMMYORJ.js +554 -0
  218. package/dist/commands/chunk-ISNZX75X.js +168 -0
  219. package/dist/commands/chunk-ISY5TFYT.js +80 -0
  220. package/dist/commands/chunk-IT2O5MOW.js +37 -0
  221. package/dist/commands/chunk-IV6ETHVB.js +155 -0
  222. package/dist/commands/chunk-IZPMBGAI.js +202 -0
  223. package/dist/commands/chunk-J56TYLAL.js +77 -0
  224. package/dist/commands/chunk-JGC4B5JR.js +94 -0
  225. package/dist/commands/chunk-JKPYLZ6T.js +198 -0
  226. package/dist/commands/chunk-JM3EJYA3.js +65 -0
  227. package/dist/commands/chunk-JN7IG7HT.js +426 -0
  228. package/dist/commands/chunk-JSJS3OT7.js +679 -0
  229. package/dist/commands/chunk-JUQN3OXG.js +351 -0
  230. package/dist/commands/chunk-JUXKVN77.js +100 -0
  231. package/dist/commands/chunk-JZZURWZH.js +33 -0
  232. package/dist/commands/chunk-K2FXMBIU.js +95 -0
  233. package/dist/commands/chunk-K2VIKG5M.js +34 -0
  234. package/dist/commands/chunk-K3LHBJDY.js +1223 -0
  235. package/dist/commands/chunk-K3TPIV56.js +480 -0
  236. package/dist/commands/chunk-K6QAQSCJ.js +98 -0
  237. package/dist/commands/chunk-KJ2ZIDQP.js +92 -0
  238. package/dist/commands/chunk-KMED24C4.js +459 -0
  239. package/dist/commands/chunk-KMVJKK43.js +88 -0
  240. package/dist/commands/chunk-KXZR7UAE.js +302 -0
  241. package/dist/commands/chunk-L7GYJHDX.js +223 -0
  242. package/dist/commands/chunk-LAQZJX5C.js +49 -0
  243. package/dist/commands/chunk-LAUKNN57.js +530 -0
  244. package/dist/commands/chunk-LDYDRXOY.js +88 -0
  245. package/dist/commands/chunk-LZNACCHR.js +174 -0
  246. package/dist/commands/chunk-MEJ2CQK2.js +102 -0
  247. package/dist/commands/chunk-MHTKSRAH.js +278 -0
  248. package/dist/commands/chunk-MI4NHZWO.js +65 -0
  249. package/dist/commands/chunk-MIDWHXJZ.js +46 -0
  250. package/dist/commands/chunk-MIZLGSHI.js +419 -0
  251. package/dist/commands/chunk-MKIHWQ65.js +218 -0
  252. package/dist/commands/chunk-MOAPWO34.js +292 -0
  253. package/dist/commands/chunk-MOLXF5KO.js +51 -0
  254. package/dist/commands/chunk-MQNKIKJ6.js +288 -0
  255. package/dist/commands/chunk-MT6TRLFD.js +91 -0
  256. package/dist/commands/chunk-MTPFNRYF.js +213 -0
  257. package/dist/commands/chunk-N2EE7MMH.js +305 -0
  258. package/dist/commands/chunk-N5FT5LYP.js +272 -0
  259. package/dist/commands/chunk-N5YPDLZM.js +114 -0
  260. package/dist/commands/chunk-NASUAXRJ.js +45 -0
  261. package/dist/commands/chunk-NAZ753DE.js +540 -0
  262. package/dist/commands/chunk-NDPR5U4U.js +897 -0
  263. package/dist/commands/chunk-NFRDCRDI.js +285 -0
  264. package/dist/commands/chunk-NHXMWRBI.js +16 -0
  265. package/dist/commands/chunk-NMG65AFQ.js +20 -0
  266. package/dist/commands/chunk-NQ4D2XZY.js +213 -0
  267. package/dist/commands/chunk-NQFQVSHV.js +56 -0
  268. package/dist/commands/chunk-NR4BD5DD.js +38 -0
  269. package/dist/commands/chunk-NV6Y4U37.js +338 -0
  270. package/dist/commands/chunk-NWMY2QJJ.js +133 -0
  271. package/dist/commands/chunk-NXWVWI4U.js +1062 -0
  272. package/dist/commands/chunk-NZ2UKIY5.js +445 -0
  273. package/dist/commands/chunk-OB3WF3DW.js +24 -0
  274. package/dist/commands/chunk-OBMXXG5D.js +181 -0
  275. package/dist/commands/chunk-OHZ6GLEJ.js +74 -0
  276. package/dist/commands/chunk-OJO5AADO.js +322 -0
  277. package/dist/commands/chunk-ORFXTHXU.js +108 -0
  278. package/dist/commands/chunk-OTCWA4QE.js +910 -0
  279. package/dist/commands/chunk-OYGNL5RO.js +290 -0
  280. package/dist/commands/chunk-OYZP5ANC.js +48 -0
  281. package/dist/commands/chunk-P35FFJXA.js +73 -0
  282. package/dist/commands/chunk-P3UODIMZ.js +272 -0
  283. package/dist/commands/chunk-PF2HZHJG.js +94 -0
  284. package/dist/commands/chunk-PIAVFPYB.js +52 -0
  285. package/dist/commands/chunk-PLE3MBGO.js +85 -0
  286. package/dist/commands/chunk-PM3YCN46.js +39 -0
  287. package/dist/commands/chunk-PMC2N6JK.js +91 -0
  288. package/dist/commands/chunk-PTJ6X3QK.js +330 -0
  289. package/dist/commands/chunk-PTRK3NBC.js +211 -0
  290. package/dist/commands/chunk-Q2VV3WT7.js +120 -0
  291. package/dist/commands/chunk-Q67SPFHV.js +44 -0
  292. package/dist/commands/chunk-Q7GMTDMG.js +44 -0
  293. package/dist/commands/chunk-QA44M56F.js +333 -0
  294. package/dist/commands/chunk-QDUWBRQC.js +61 -0
  295. package/dist/commands/chunk-QGTLTPXT.js +58 -0
  296. package/dist/commands/chunk-QHWQJCV5.js +250 -0
  297. package/dist/commands/chunk-QI72D6NY.js +54 -0
  298. package/dist/commands/chunk-QN3FWRDW.js +122 -0
  299. package/dist/commands/chunk-QQ2JKDSV.js +144 -0
  300. package/dist/commands/chunk-QRY55H5U.js +48 -0
  301. package/dist/commands/chunk-QUO5B2JH.js +260 -0
  302. package/dist/commands/chunk-QY7RITZQ.js +99 -0
  303. package/dist/commands/chunk-R4GZWGIN.js +160 -0
  304. package/dist/commands/chunk-RETTGONB.js +84 -0
  305. package/dist/commands/chunk-RH4LJ4D6.js +69 -0
  306. package/dist/commands/chunk-RKCENL5P.js +271 -0
  307. package/dist/commands/chunk-RLWK2CP3.js +82 -0
  308. package/dist/commands/chunk-RMDQQKXD.js +179 -0
  309. package/dist/commands/chunk-RRNC3QEB.js +449 -0
  310. package/dist/commands/chunk-RUCV7UYK.js +341 -0
  311. package/dist/commands/chunk-RVFE7JDZ.js +126 -0
  312. package/dist/commands/chunk-RVKFX3FD.js +70 -0
  313. package/dist/commands/chunk-RW7OILP7.js +71 -0
  314. package/dist/commands/chunk-S23MUFND.js +122 -0
  315. package/dist/commands/chunk-S3DRNZRT.js +74 -0
  316. package/dist/commands/chunk-SB3R6E3R.js +49 -0
  317. package/dist/commands/chunk-SCCUBRDO.js +237 -0
  318. package/dist/commands/chunk-SIPHEZXP.js +72 -0
  319. package/dist/commands/chunk-SK3GDQOI.js +20 -0
  320. package/dist/commands/chunk-SNXSRNFI.js +1052 -0
  321. package/dist/commands/chunk-SWHN7TNT.js +59 -0
  322. package/dist/commands/chunk-T5D3BW3D.js +85 -0
  323. package/dist/commands/chunk-T76CS2AQ.js +307 -0
  324. package/dist/commands/chunk-TBIX42IT.js +144 -0
  325. package/dist/commands/chunk-TGCIRQG5.js +109 -0
  326. package/dist/commands/chunk-TJAGKUS2.js +84 -0
  327. package/dist/commands/chunk-TKRUZZXG.js +103 -0
  328. package/dist/commands/chunk-TLCFZAL4.js +63 -0
  329. package/dist/commands/chunk-TNPFVNKX.js +585 -0
  330. package/dist/commands/chunk-TNU3IEAP.js +151 -0
  331. package/dist/commands/chunk-TQ6M5ICK.js +49 -0
  332. package/dist/commands/chunk-TR6NTNWR.js +128 -0
  333. package/dist/commands/chunk-TSS2RKBC.js +271 -0
  334. package/dist/commands/chunk-TWI7UTVE.js +799 -0
  335. package/dist/commands/chunk-TXXEXJAV.js +390 -0
  336. package/dist/commands/chunk-U6SMBYTN.js +472 -0
  337. package/dist/commands/chunk-U7JJGYYY.js +30 -0
  338. package/dist/commands/chunk-UACWDTJ5.js +106 -0
  339. package/dist/commands/chunk-UBWYGOEC.js +86 -0
  340. package/dist/commands/chunk-UC5ZOPKX.js +3983 -0
  341. package/dist/commands/chunk-UJFEMO6X.js +153 -0
  342. package/dist/commands/chunk-ULL3OIAG.js +59 -0
  343. package/dist/commands/chunk-UN6BPKQ5.js +922 -0
  344. package/dist/commands/chunk-UW3KES66.js +32 -0
  345. package/dist/commands/chunk-UWLANGIR.js +817 -0
  346. package/dist/commands/chunk-UYHREBT7.js +99 -0
  347. package/dist/commands/chunk-V2KHY4UQ.js +393 -0
  348. package/dist/commands/chunk-V36OV7AP.js +191 -0
  349. package/dist/commands/chunk-V37AWEYE.js +62 -0
  350. package/dist/commands/chunk-V4D4YV4B.js +110 -0
  351. package/dist/commands/chunk-V56NLG7I.js +217 -0
  352. package/dist/commands/chunk-V6WHDQAZ.js +74 -0
  353. package/dist/commands/chunk-V6WWW6HX.js +140 -0
  354. package/dist/commands/chunk-V7QOC5NV.js +51 -0
  355. package/dist/commands/chunk-VA4M733Q.js +127 -0
  356. package/dist/commands/chunk-VBZ47BVH.js +64 -0
  357. package/dist/commands/chunk-VD4ELMDA.js +158 -0
  358. package/dist/commands/chunk-VFW6XZH7.js +469 -0
  359. package/dist/commands/chunk-VHSGVCRM.js +244 -0
  360. package/dist/commands/chunk-VJNE7W7O.js +1153 -0
  361. package/dist/commands/chunk-VLDPUHGE.js +134 -0
  362. package/dist/commands/chunk-VMMNYTET.js +61 -0
  363. package/dist/commands/chunk-VO2GSW5P.js +99 -0
  364. package/dist/commands/chunk-VP3P7FLJ.js +168 -0
  365. package/dist/commands/chunk-VRS252GW.js +88 -0
  366. package/dist/commands/chunk-VWNVKWLV.js +298 -0
  367. package/dist/commands/chunk-VXWGPQJX.js +140 -0
  368. package/dist/commands/chunk-W4R6ZBLO.js +197 -0
  369. package/dist/commands/chunk-WE2UMZXX.js +47 -0
  370. package/dist/commands/chunk-WEEJU3EH.js +109 -0
  371. package/dist/commands/chunk-WHXGUOYP.js +48 -0
  372. package/dist/commands/chunk-WHYYBPIC.js +113 -0
  373. package/dist/commands/chunk-WKXMY7MW.js +84 -0
  374. package/dist/commands/chunk-WPSCCUTE.js +119 -0
  375. package/dist/commands/chunk-WQ3O7IKL.js +289 -0
  376. package/dist/commands/chunk-WSTNBBR3.js +22 -0
  377. package/dist/commands/chunk-WX3HQXBK.js +124 -0
  378. package/dist/commands/chunk-WYAY6CQI.js +541 -0
  379. package/dist/commands/chunk-XBXY3R4K.js +74 -0
  380. package/dist/commands/chunk-XDWCF4XH.js +347 -0
  381. package/dist/commands/chunk-XHLSJPV7.js +69 -0
  382. package/dist/commands/chunk-XHR7O2DE.js +52 -0
  383. package/dist/commands/chunk-XIV3UDHV.js +119 -0
  384. package/dist/commands/chunk-XMNPU3J5.js +469 -0
  385. package/dist/commands/chunk-XMZJB7JP.js +100 -0
  386. package/dist/commands/chunk-XO7S2BTY.js +365 -0
  387. package/dist/commands/chunk-XQDG56LP.js +47 -0
  388. package/dist/commands/chunk-XSBLCTDI.js +143 -0
  389. package/dist/commands/chunk-XT3W32DO.js +977 -0
  390. package/dist/commands/chunk-XUA7QZET.js +1263 -0
  391. package/dist/commands/chunk-XZQHP4JR.js +145 -0
  392. package/dist/commands/chunk-YDVFQL3G.js +23 -0
  393. package/dist/commands/chunk-YFD46GB2.js +45 -0
  394. package/dist/commands/chunk-YJMOFRL7.js +269 -0
  395. package/dist/commands/chunk-YPCMBQYP.js +88 -0
  396. package/dist/commands/chunk-YR5RS4YT.js +38 -0
  397. package/dist/commands/chunk-YSBLGTDZ.js +339 -0
  398. package/dist/commands/chunk-YSDBY2G7.js +186 -0
  399. package/dist/commands/chunk-YSL43R4Y.js +149 -0
  400. package/dist/commands/chunk-YUAIWKOM.js +132 -0
  401. package/dist/commands/chunk-YVNYX4UA.js +74 -0
  402. package/dist/commands/chunk-Z2GZIWAU.js +33 -0
  403. package/dist/commands/chunk-Z3XNSXQH.js +47 -0
  404. package/dist/commands/chunk-Z4E7V7YJ.js +18 -0
  405. package/dist/commands/chunk-Z7C2O5JC.js +299 -0
  406. package/dist/commands/chunk-Z7R6JWN7.js +1077 -0
  407. package/dist/commands/chunk-ZB25RO3U.js +208 -0
  408. package/dist/commands/chunk-ZBRUCKLP.js +133 -0
  409. package/dist/commands/chunk-ZCWBZOBM.js +61 -0
  410. package/dist/commands/chunk-ZDP6SKBK.js +246 -0
  411. package/dist/commands/chunk-ZEVI2ZGI.js +145 -0
  412. package/dist/commands/chunk-ZF3SZQRJ.js +44 -0
  413. package/dist/commands/chunk-ZHEUK3ZX.js +16 -0
  414. package/dist/commands/chunk-ZJ5C6KVM.js +1072 -0
  415. package/dist/commands/chunk-ZMDHJ6QF.js +42 -0
  416. package/dist/commands/chunk-ZMS3EFW3.js +1250 -0
  417. package/dist/commands/chunk-ZMWL7LZM.js +210 -0
  418. package/dist/commands/chunk-ZNFVJETO.js +263 -0
  419. package/dist/commands/chunk-ZQEKIMBV.js +82 -0
  420. package/dist/commands/chunk-ZW6DLYS4.js +646 -0
  421. package/dist/commands/ci-timing-cli.js +10 -10
  422. package/dist/commands/code-symbol-cli.js +11 -11
  423. package/dist/commands/codex-hook-adapter.js +105 -106
  424. package/dist/commands/command-derive.js +5 -5
  425. package/dist/commands/cost-audit-main.js +139 -99
  426. package/dist/commands/cspell-cached.js +38 -37
  427. package/dist/commands/defect-origin-main.js +32 -32
  428. package/dist/commands/defect-report-main.js +29 -29
  429. package/dist/commands/diff-summary-cli.js +3 -3
  430. package/dist/commands/disposition-cli.js +108 -96
  431. package/dist/commands/doctor.js +13 -13
  432. package/dist/commands/document-read-cli.js +35 -35
  433. package/dist/commands/document-section-main.js +35 -35
  434. package/dist/commands/dogfood-commit-cli.js +11 -11
  435. package/dist/commands/effect-audit-cli.js +41 -35
  436. package/dist/commands/epic-audit-main.js +77 -76
  437. package/dist/commands/epic-bundle-main.js +167 -111
  438. package/dist/commands/epic-check.js +29 -29
  439. package/dist/commands/epic-main.js +170 -117
  440. package/dist/commands/epic-next-main.js +73 -72
  441. package/dist/commands/format-edited-cli.js +43 -43
  442. package/dist/commands/format.js +21 -21
  443. package/dist/commands/fresh-machine-cli.js +9 -9
  444. package/dist/commands/gh-usage-cli.js +13 -13
  445. package/dist/commands/git-followup-workflow.js +130 -130
  446. package/dist/commands/git-gh-checks-failed-main.js +16 -16
  447. package/dist/commands/git-workflow.js +47 -47
  448. package/dist/commands/hook-ledger-cli.js +113 -74
  449. package/dist/commands/init-main.js +28 -28
  450. package/dist/commands/inputs.json +2011 -2001
  451. package/dist/commands/issue-ack-cli.js +17 -17
  452. package/dist/commands/issue-already-done-cli.js +88 -87
  453. package/dist/commands/issue-body-cli.js +78 -64
  454. package/dist/commands/issue-cite-main.js +26 -26
  455. package/dist/commands/issue-comment-main.js +29 -29
  456. package/dist/commands/issue-consolidate-cli.js +43 -43
  457. package/dist/commands/issue-file-main.js +181 -133
  458. package/dist/commands/issue-fold-existing-cli.js +169 -113
  459. package/dist/commands/issue-fold-main.js +44 -43
  460. package/dist/commands/issue-lint-main.js +55 -54
  461. package/dist/commands/issue-measured-cli.js +91 -90
  462. package/dist/commands/issue-plan-cli.js +136 -135
  463. package/dist/commands/issue-premise-unmet-cli.js +91 -90
  464. package/dist/commands/issue-priority-cli.js +28 -28
  465. package/dist/commands/issue-read-main.js +30 -30
  466. package/dist/commands/issue-release-class-cli.js +26 -26
  467. package/dist/commands/issue-release-main.js +28 -28
  468. package/dist/commands/issue-scout-main.js +168 -112
  469. package/dist/commands/issue-spill-main.js +194 -135
  470. package/dist/commands/issue-state-main.js +28 -28
  471. package/dist/commands/issue-tick-cli.js +28 -28
  472. package/dist/commands/josh-completion.js +12 -12
  473. package/dist/commands/lane-adopt-cli.js +38 -37
  474. package/dist/commands/lane-breakdown-cli.js +176 -166
  475. package/dist/commands/lane-cli.js +163 -163
  476. package/dist/commands/lane-launch-main.js +71 -70
  477. package/dist/commands/lane-limit-cli.js +162 -106
  478. package/dist/commands/lane-measure-cli.js +386 -254
  479. package/dist/commands/lane-pause-cli.js +33 -32
  480. package/dist/commands/lane-plan-cli.js +134 -133
  481. package/dist/commands/lane-resolve-cli.js +35 -35
  482. package/dist/commands/lane-restart-cli.js +157 -157
  483. package/dist/commands/lane-why-cli.js +131 -102
  484. package/dist/commands/lane-withdraw-cli.js +66 -65
  485. package/dist/commands/latest-if-required-cli.js +5 -5
  486. package/dist/commands/lines-command.js +3 -3
  487. package/dist/commands/lint-parallel-main.js +47 -46
  488. package/dist/commands/lint-related.js +86 -86
  489. package/dist/commands/lint-rule.js +46 -45
  490. package/dist/commands/lockfile-policy.js +18 -18
  491. package/dist/commands/main-merge-main.js +12 -12
  492. package/dist/commands/main-sync-main.js +12 -12
  493. package/dist/commands/managed-config-scope-cli.js +7 -7
  494. package/dist/commands/measure-rerun-cli.js +23 -23
  495. package/dist/commands/metrics-command.js +67 -67
  496. package/dist/commands/observation-record-cli.js +13 -13
  497. package/dist/commands/observations-flush-cli.js +41 -41
  498. package/dist/commands/package-scout-cli.js +52 -52
  499. package/dist/commands/pin-verify-cli.js +9 -9
  500. package/dist/commands/plan-consumers-main.js +6 -6
  501. package/dist/commands/plan-scaffold-cli.js +125 -125
  502. package/dist/commands/pr-classification-main.js +12 -12
  503. package/dist/commands/pre-commit-lint.js +14 -15
  504. package/dist/commands/pre-commit-type-check.js +46 -46
  505. package/dist/commands/pre-push-unit.js +51 -52
  506. package/dist/commands/pretool-guard-cli.js +94 -94
  507. package/dist/commands/prevent-main-commit.js +2 -2
  508. package/dist/commands/project-profile-cli.js +13 -13
  509. package/dist/commands/propagate.js +22 -22
  510. package/dist/commands/prose-stale-cli.js +32 -32
  511. package/dist/commands/read-set-cli.js +39 -39
  512. package/dist/commands/refactor-scan-cli.js +5 -5
  513. package/dist/commands/release-cli.js +95 -43
  514. package/dist/commands/release-scope-main.js +34 -34
  515. package/dist/commands/rename-cli.js +39 -38
  516. package/dist/commands/report-template-cli.js +3 -3
  517. package/dist/commands/reserved-run.js +10 -10
  518. package/dist/commands/retrospective-cli.js +141 -102
  519. package/dist/commands/review-attest-cli.js +19 -19
  520. package/dist/commands/review-brief-main.js +159 -159
  521. package/dist/commands/review-findings-cli.js +12 -12
  522. package/dist/commands/review-pair-cli.js +145 -145
  523. package/dist/commands/review-record-main.js +145 -145
  524. package/dist/commands/review-round2-cli.js +66 -65
  525. package/dist/commands/review-stops-cli.js +35 -34
  526. package/dist/commands/review-submit-cli.js +159 -159
  527. package/dist/commands/rule-list.js +59 -59
  528. package/dist/commands/rule-value-cli.js +129 -93
  529. package/dist/commands/ruleset-check-cli.js +12 -12
  530. package/dist/commands/run-add-cli.js +61 -61
  531. package/dist/commands/run-board-main.js +197 -156
  532. package/dist/commands/run-carry-cli.js +182 -150
  533. package/dist/commands/run-chain-cli.js +153 -153
  534. package/dist/commands/run-cut-cli.js +160 -160
  535. package/dist/commands/run-ending-cli.js +34 -34
  536. package/dist/commands/run-entry-cli.js +210 -201
  537. package/dist/commands/run-event-cli.js +9 -8
  538. package/dist/commands/run-handoff-cli.js +50 -50
  539. package/dist/commands/run-handoff-lanes-cli.js +34 -33
  540. package/dist/commands/run-hold-main.js +87 -86
  541. package/dist/commands/run-liveness-cli.js +31 -30
  542. package/dist/commands/run-merge-main.js +171 -139
  543. package/dist/commands/run-next-cli.js +110 -110
  544. package/dist/commands/run-park-cli.js +109 -109
  545. package/dist/commands/run-pause-cli.js +189 -165
  546. package/dist/commands/run-pickup-cli.js +34 -33
  547. package/dist/commands/run-prep-main.js +106 -106
  548. package/dist/commands/run-prime-cli.js +136 -136
  549. package/dist/commands/run-progress-main.js +174 -127
  550. package/dist/commands/run-report-cli.js +45 -44
  551. package/dist/commands/run-review-cli.js +188 -188
  552. package/dist/commands/run-ship-cli.js +239 -234
  553. package/dist/commands/run-ship-evidence-cli.js +53 -54
  554. package/dist/commands/run-ship-lap-DGUAMCPY.js +28 -0
  555. package/dist/commands/run-ship-wait-main.js +64 -63
  556. package/dist/commands/run-split-cli.js +183 -156
  557. package/dist/commands/run-stale-main.js +55 -54
  558. package/dist/commands/run-status-cli.js +28 -28
  559. package/dist/commands/run-step-cli.js +192 -190
  560. package/dist/commands/run-tail-cli.js +9 -9
  561. package/dist/commands/run-tidy-main.js +53 -52
  562. package/dist/commands/run-wake-main.js +178 -178
  563. package/dist/commands/run-watcher-guard-cli.js +51 -50
  564. package/dist/commands/security-audit-main.js +8 -8
  565. package/dist/commands/security-audit-provision-main.js +5 -5
  566. package/dist/commands/selfcheck-cli.js +47 -47
  567. package/dist/commands/session-language-main.js +51 -51
  568. package/dist/commands/sonar-hotspots-cli.js +5 -5
  569. package/dist/commands/sonar-new-code-cli.js +3 -3
  570. package/dist/commands/split-assess-cli.js +42 -41
  571. package/dist/commands/split-child-recover-cli.js +28 -28
  572. package/dist/commands/start.js +53 -53
  573. package/dist/commands/stash-pop-main.js +3 -3
  574. package/dist/commands/stash-push-main.js +4 -4
  575. package/dist/commands/stop-guard.js +183 -159
  576. package/dist/commands/sync-main.js +18 -18
  577. package/dist/commands/telegram-test-main.js +20 -20
  578. package/dist/commands/test-declared.js +15 -15
  579. package/dist/commands/test-e2e-guard.js +41 -41
  580. package/dist/commands/test-pinned-main.js +43 -43
  581. package/dist/commands/test-reach-cli.js +27 -27
  582. package/dist/commands/test-red-main.js +12 -12
  583. package/dist/commands/test-related-UHUIUC7X.js +112 -0
  584. package/dist/commands/test-related-main.js +75 -76
  585. package/dist/commands/test-unit-guard-main.js +21 -21
  586. package/dist/commands/time-cli.js +34 -34
  587. package/dist/commands/time-density-cli.js +13 -12
  588. package/dist/commands/tree-status-cli.js +4 -4
  589. package/dist/commands/type-check-command.js +14 -14
  590. package/dist/commands/ui-routes-cli.js +4 -4
  591. package/dist/commands/uninstall.js +30 -30
  592. package/dist/commands/unused-members-LOSERD3C.js +329 -0
  593. package/dist/commands/unused-members-cli.js +15 -15
  594. package/dist/commands/upstream-interrupt-main.js +183 -136
  595. package/dist/commands/verification-gate.js +71 -72
  596. package/dist/commands/version-check.js +12 -12
  597. package/dist/hooks/audit-provision.js +4 -4
  598. package/dist/hooks/chunk-2R62D5UU.js +12 -0
  599. package/dist/hooks/chunk-3J5M7SXZ.js +1059 -0
  600. package/dist/hooks/chunk-4UAA2YFC.js +258 -0
  601. package/dist/hooks/chunk-74D3EJGW.js +5204 -0
  602. package/dist/hooks/chunk-74FYAI2L.js +43 -0
  603. package/dist/hooks/chunk-ALY5AW75.js +1953 -0
  604. package/dist/hooks/chunk-FBDC6KVJ.js +77 -0
  605. package/dist/hooks/chunk-HKUR6WKR.js +6874 -0
  606. package/dist/hooks/chunk-NFTDYUN3.js +1915 -0
  607. package/dist/hooks/chunk-NP6BVTR3.js +9176 -0
  608. package/dist/hooks/chunk-OOEG63LD.js +321 -0
  609. package/dist/hooks/chunk-RWVA2SFN.js +28584 -0
  610. package/dist/hooks/chunk-U55QDXSC.js +32 -0
  611. package/dist/hooks/chunk-VWZOPSZX.js +5092 -0
  612. package/dist/hooks/chunk-Z6W64J64.js +11254 -0
  613. package/dist/hooks/codex-hook-adapter.js +12 -12
  614. package/dist/hooks/daemon.js +112 -40
  615. package/dist/hooks/format-edited.js +7 -7
  616. package/dist/hooks/inputs.json +612 -556
  617. package/dist/hooks/pretool-guard.js +10 -10
  618. package/dist/hooks/run-ship-lap-XDLXQIS3.js +8 -0
  619. package/dist/hooks/session-lang.js +7 -7
  620. package/dist/hooks/stop-guard.js +8396 -4497
  621. package/dist/inputs.json +76 -76
  622. package/dist/josh.js +31 -15
  623. package/dist/registry-migrate.mjs +32 -8
  624. package/dist/version/index.js +48 -19
  625. package/package.json +1 -1
  626. package/prompts/collaboration-workflow/issue-template.en.md +5 -0
  627. package/prompts/collaboration-workflow/issue-template.md +14 -1
  628. package/scripts/backlog/backlog-drive-cli.ts +2 -1
  629. package/scripts/backlog/backlog-drive-listing.ts +20 -6
  630. package/scripts/backlog/backlog-hold-text.ts +1 -0
  631. package/scripts/backlog/backlog-listing-trace.ts +35 -0
  632. package/scripts/backlog/backlog-offer-timing.ts +10 -2
  633. package/scripts/backlog/backlog-wait-cause.ts +10 -2
  634. package/scripts/document/document-byte-budget.ts +2 -2
  635. package/scripts/git/git-command.ts +7 -3
  636. package/scripts/git/git-pre-push-hook.ts +9 -5
  637. package/scripts/git/git-spawn.ts +20 -4
  638. package/scripts/hooks/implementation-shell-deny-git.ts +17 -3
  639. package/scripts/hooks/pre-push-related-switch.ts +3 -2
  640. package/scripts/hooks/pre-push-unit.ts +3 -1
  641. package/scripts/issue/effect-audit.ts +7 -0
  642. package/scripts/issue/issue-body-cli.ts +18 -2
  643. package/scripts/issue/issue-body-keys.ts +1 -0
  644. package/scripts/issue/issue-file-pass.ts +1 -0
  645. package/scripts/issue/issue-lint-cli.ts +16 -2
  646. package/scripts/issue/issue-lint.ts +16 -0
  647. package/scripts/issue/issue-publication-state.ts +82 -6
  648. package/scripts/issue/issue-spill.ts +18 -4
  649. package/scripts/issue/issue-template-section.ts +7 -1
  650. package/scripts/josh/josh-commands-ai.ts +3 -2
  651. package/scripts/lane/lane-chain-stop-stats.ts +19 -7
  652. package/scripts/lane/lane-concurrency-stats.ts +39 -14
  653. package/scripts/lane/lane-concurrency-wait.ts +64 -0
  654. package/scripts/lane/lane-core-wait-stats.ts +13 -4
  655. package/scripts/lane/lane-implement-read-calls.ts +123 -0
  656. package/scripts/lane/lane-implement-read.ts +8 -3
  657. package/scripts/lane/lane-implement-stats.ts +33 -6
  658. package/scripts/lane/lane-ledger-schema-ship.ts +17 -3
  659. package/scripts/lane/lane-measure-cli.ts +5 -3
  660. package/scripts/lane/lane-plan-size.ts +1 -1
  661. package/scripts/lane/lane-size-record.ts +4 -3
  662. package/scripts/lane/lane-size-stats.ts +21 -9
  663. package/scripts/lane/lane-stats-request.ts +12 -3
  664. package/scripts/lane/lane-stats-tables.ts +30 -9
  665. package/scripts/lane/lane-stop-stats.ts +10 -1
  666. package/scripts/lane/lane-table-rows.ts +26 -0
  667. package/scripts/lib/timeouts.ts +4 -3
  668. package/scripts/registry-migration/migrate-lock.ts +40 -8
  669. package/scripts/registry-migration/migrate.ts +6 -3
  670. package/scripts/release/release-publish.ts +23 -3
  671. package/scripts/release/release-step-time.ts +61 -0
  672. package/scripts/review/disposition-batch-filing.ts +13 -0
  673. package/scripts/rules/git-argv.ts +10 -3
  674. package/scripts/run/board/run-board-closed-pace.ts +76 -0
  675. package/scripts/run/board/run-board-github.ts +17 -28
  676. package/scripts/run/board/run-board-labels.ts +5 -2
  677. package/scripts/run/board/run-board-reason.ts +10 -0
  678. package/scripts/run/entry/run-entry-sync.ts +17 -5
  679. package/scripts/run/hold/run-hold-cli.ts +8 -2
  680. package/scripts/run/merge/run-merge-health.ts +9 -2
  681. package/scripts/run/review/run-review-pinned-accepted.ts +24 -1
  682. package/scripts/run/run-preflight.ts +81 -17
  683. package/scripts/run/ship/run-ship-pre-detach-pinned.ts +14 -9
  684. package/scripts/run/ship/run-ship-pre-detach.ts +16 -7
  685. package/scripts/run/ship/run-ship-stop-cause.ts +13 -2
  686. package/scripts/run/ship/run-ship.ts +7 -1
  687. package/scripts/split/split-assess.ts +7 -22
  688. package/scripts/split/split-cap.ts +31 -0
  689. package/scripts/test/direct-importers.ts +46 -3
  690. package/scripts/test/lockfile-changed-packages.ts +155 -0
  691. package/scripts/test/package-version-only.ts +30 -0
  692. package/scripts/test/pure-files-entries.ts +1 -27
  693. package/scripts/test/test-related-scope.ts +30 -5
  694. package/scripts/test/test-related.ts +3 -3
  695. package/scripts/test/test-unit-guard.ts +9 -9
  696. package/scripts/test/unit-worker-share.ts +21 -0
  697. package/scripts/test/whole-suite-files.ts +23 -2
  698. package/scripts/test/whole-suite-narrowing.ts +108 -0
  699. package/dist/commands/chunk-26JL4UU4.js +0 -365
  700. package/dist/commands/chunk-2BC33QPY.js +0 -183
  701. package/dist/commands/chunk-2BIVHPCA.js +0 -85
  702. package/dist/commands/chunk-2CKJODCK.js +0 -245
  703. package/dist/commands/chunk-2CNVIA35.js +0 -335
  704. package/dist/commands/chunk-2E6PSONB.js +0 -46
  705. package/dist/commands/chunk-2GA4775H.js +0 -77
  706. package/dist/commands/chunk-2O64H5UJ.js +0 -462
  707. package/dist/commands/chunk-2OEXY4GM.js +0 -252
  708. package/dist/commands/chunk-2ONSHOAY.js +0 -46
  709. package/dist/commands/chunk-2SA3W4JF.js +0 -41
  710. package/dist/commands/chunk-2VY7CJ2R.js +0 -212
  711. package/dist/commands/chunk-2WRDAQPJ.js +0 -74
  712. package/dist/commands/chunk-2XLR7R6E.js +0 -541
  713. package/dist/commands/chunk-34JJYCIY.js +0 -117
  714. package/dist/commands/chunk-36XHHYNU.js +0 -158
  715. package/dist/commands/chunk-3CJNQU7P.js +0 -179
  716. package/dist/commands/chunk-3D5T6KMW.js +0 -59
  717. package/dist/commands/chunk-3EW5LTN3.js +0 -114
  718. package/dist/commands/chunk-3F3RNIG2.js +0 -128
  719. package/dist/commands/chunk-3FLTEJZY.js +0 -74
  720. package/dist/commands/chunk-3JWPTRNI.js +0 -60
  721. package/dist/commands/chunk-3LUPGBW4.js +0 -137
  722. package/dist/commands/chunk-3PCUERXE.js +0 -19
  723. package/dist/commands/chunk-3U6A5WON.js +0 -173
  724. package/dist/commands/chunk-3VLDFM5I.js +0 -426
  725. package/dist/commands/chunk-3YT3RCSI.js +0 -140
  726. package/dist/commands/chunk-43DU7DYZ.js +0 -540
  727. package/dist/commands/chunk-43H725LG.js +0 -132
  728. package/dist/commands/chunk-46STCE6Q.js +0 -48
  729. package/dist/commands/chunk-46WEC6HZ.js +0 -82
  730. package/dist/commands/chunk-47J4KOZP.js +0 -46
  731. package/dist/commands/chunk-47W7PF4T.js +0 -22
  732. package/dist/commands/chunk-4F4KARQN.js +0 -229
  733. package/dist/commands/chunk-4HB7NWXP.js +0 -263
  734. package/dist/commands/chunk-4I5AA4P5.js +0 -237
  735. package/dist/commands/chunk-4IDINPBE.js +0 -525
  736. package/dist/commands/chunk-4NSIW3UB.js +0 -104
  737. package/dist/commands/chunk-4YTKV6WV.js +0 -37
  738. package/dist/commands/chunk-5ARNFMQK.js +0 -1263
  739. package/dist/commands/chunk-5AZTSESD.js +0 -114
  740. package/dist/commands/chunk-5FUI2MLY.js +0 -89
  741. package/dist/commands/chunk-5IHEBIPD.js +0 -333
  742. package/dist/commands/chunk-5KAW5GPF.js +0 -44
  743. package/dist/commands/chunk-5KSJEWXR.js +0 -77
  744. package/dist/commands/chunk-5PCK53WP.js +0 -168
  745. package/dist/commands/chunk-5PPWXOCF.js +0 -64
  746. package/dist/commands/chunk-5Y7FOJLX.js +0 -186
  747. package/dist/commands/chunk-5YTEMF4O.js +0 -110
  748. package/dist/commands/chunk-6AHAY5VZ.js +0 -69
  749. package/dist/commands/chunk-6FN37DER.js +0 -330
  750. package/dist/commands/chunk-6JD4VNO4.js +0 -124
  751. package/dist/commands/chunk-6KUA7MRG.js +0 -64
  752. package/dist/commands/chunk-6LDEZFYR.js +0 -88
  753. package/dist/commands/chunk-6NXIZMIK.js +0 -122
  754. package/dist/commands/chunk-6O45F6YI.js +0 -86
  755. package/dist/commands/chunk-6OHJBQDE.js +0 -184
  756. package/dist/commands/chunk-6TIVDEKG.js +0 -34
  757. package/dist/commands/chunk-6WDCCG3M.js +0 -1249
  758. package/dist/commands/chunk-6ZHXEQAI.js +0 -715
  759. package/dist/commands/chunk-736NECRD.js +0 -16
  760. package/dist/commands/chunk-77LEKVEE.js +0 -32
  761. package/dist/commands/chunk-7DGHFBU7.js +0 -247
  762. package/dist/commands/chunk-7EAYFMDN.js +0 -235
  763. package/dist/commands/chunk-7HYYHCTN.js +0 -402
  764. package/dist/commands/chunk-7JOOMFDI.js +0 -155
  765. package/dist/commands/chunk-7K5ITPHR.js +0 -338
  766. package/dist/commands/chunk-7OEBSPPU.js +0 -321
  767. package/dist/commands/chunk-7ULYLGUK.js +0 -492
  768. package/dist/commands/chunk-A3JYZWBS.js +0 -803
  769. package/dist/commands/chunk-A3LCN4KA.js +0 -84
  770. package/dist/commands/chunk-ABLXBG6C.js +0 -98
  771. package/dist/commands/chunk-ABM2MZBF.js +0 -161
  772. package/dist/commands/chunk-AN7BFVHU.js +0 -244
  773. package/dist/commands/chunk-AQCVEQSM.js +0 -99
  774. package/dist/commands/chunk-AU563VKH.js +0 -75
  775. package/dist/commands/chunk-AUTD5FV2.js +0 -1077
  776. package/dist/commands/chunk-AV26CMY6.js +0 -304
  777. package/dist/commands/chunk-B2PJEV3S.js +0 -246
  778. package/dist/commands/chunk-B545ENGY.js +0 -214
  779. package/dist/commands/chunk-B5HP6T4L.js +0 -170
  780. package/dist/commands/chunk-B73IIRMS.js +0 -207
  781. package/dist/commands/chunk-BBLEC4YQ.js +0 -109
  782. package/dist/commands/chunk-BDSG6JKH.js +0 -977
  783. package/dist/commands/chunk-BFKTUD3V.js +0 -33
  784. package/dist/commands/chunk-BLRXHK2V.js +0 -17
  785. package/dist/commands/chunk-BML6MEUB.js +0 -326
  786. package/dist/commands/chunk-BMM4RHCG.js +0 -69
  787. package/dist/commands/chunk-BPDNGJXY.js +0 -63
  788. package/dist/commands/chunk-BQLKWGGC.js +0 -118
  789. package/dist/commands/chunk-BRMJVCP7.js +0 -167
  790. package/dist/commands/chunk-BRWR5YKU.js +0 -268
  791. package/dist/commands/chunk-BUZAYEBD.js +0 -319
  792. package/dist/commands/chunk-C7FGDZWP.js +0 -224
  793. package/dist/commands/chunk-CC4BIGCA.js +0 -20
  794. package/dist/commands/chunk-CCHJZEF5.js +0 -4220
  795. package/dist/commands/chunk-CDK7QZWG.js +0 -44
  796. package/dist/commands/chunk-CDYFUCDC.js +0 -72
  797. package/dist/commands/chunk-CEADAQIL.js +0 -170
  798. package/dist/commands/chunk-CNL3SLM6.js +0 -116
  799. package/dist/commands/chunk-CNQ7D2GZ.js +0 -104
  800. package/dist/commands/chunk-COGKULQH.js +0 -119
  801. package/dist/commands/chunk-CQUZ6TNQ.js +0 -120
  802. package/dist/commands/chunk-CTXJVMHW.js +0 -48
  803. package/dist/commands/chunk-CUWT6UQO.js +0 -13
  804. package/dist/commands/chunk-D6CF5QGM.js +0 -80
  805. package/dist/commands/chunk-DACNQAXC.js +0 -20
  806. package/dist/commands/chunk-DDOS32JU.js +0 -74
  807. package/dist/commands/chunk-DF6QD4AF.js +0 -52
  808. package/dist/commands/chunk-DFEXNB44.js +0 -159
  809. package/dist/commands/chunk-DHDKG5HZ.js +0 -151
  810. package/dist/commands/chunk-DHJRFBKO.js +0 -223
  811. package/dist/commands/chunk-DKO5VTEH.js +0 -65
  812. package/dist/commands/chunk-DLHH3MLS.js +0 -85
  813. package/dist/commands/chunk-DOYNK72G.js +0 -81
  814. package/dist/commands/chunk-DS53UUDH.js +0 -679
  815. package/dist/commands/chunk-DUA4E4ES.js +0 -230
  816. package/dist/commands/chunk-DVCMQMRN.js +0 -191
  817. package/dist/commands/chunk-E3YKMCCJ.js +0 -108
  818. package/dist/commands/chunk-E4F2RTKC.js +0 -272
  819. package/dist/commands/chunk-E4PFCTXN.js +0 -127
  820. package/dist/commands/chunk-EAOTR2WL.js +0 -24
  821. package/dist/commands/chunk-EHPTXSAT.js +0 -315
  822. package/dist/commands/chunk-EHVEWJQ4.js +0 -33
  823. package/dist/commands/chunk-EMFSPPMH.js +0 -98
  824. package/dist/commands/chunk-EPICTV2P.js +0 -46
  825. package/dist/commands/chunk-ES42XPAD.js +0 -123
  826. package/dist/commands/chunk-ESUY7KTZ.js +0 -137
  827. package/dist/commands/chunk-EVVQJJFV.js +0 -507
  828. package/dist/commands/chunk-EWXXEGXL.js +0 -149
  829. package/dist/commands/chunk-F2U46HAE.js +0 -52
  830. package/dist/commands/chunk-F2VYWU6Z.js +0 -653
  831. package/dist/commands/chunk-F4SGOTUF.js +0 -36
  832. package/dist/commands/chunk-F4YMLVWN.js +0 -183
  833. package/dist/commands/chunk-F57LACNC.js +0 -84
  834. package/dist/commands/chunk-F5N2QIFD.js +0 -213
  835. package/dist/commands/chunk-FA7CN75F.js +0 -160
  836. package/dist/commands/chunk-FDASVHZD.js +0 -241
  837. package/dist/commands/chunk-FEYZ575X.js +0 -278
  838. package/dist/commands/chunk-FJM2HWKW.js +0 -299
  839. package/dist/commands/chunk-FJMXUDEY.js +0 -3985
  840. package/dist/commands/chunk-FM7VVAK6.js +0 -426
  841. package/dist/commands/chunk-FQWRM5FC.js +0 -67
  842. package/dist/commands/chunk-FT33ZCSB.js +0 -298
  843. package/dist/commands/chunk-FTAWHAI7.js +0 -170
  844. package/dist/commands/chunk-G2DNS74C.js +0 -53
  845. package/dist/commands/chunk-G3BBCAAH.js +0 -90
  846. package/dist/commands/chunk-G6BXCWPH.js +0 -141
  847. package/dist/commands/chunk-GABDPTDK.js +0 -907
  848. package/dist/commands/chunk-GAVSK6P6.js +0 -230
  849. package/dist/commands/chunk-GB2BRQVL.js +0 -300
  850. package/dist/commands/chunk-GBMZXFFC.js +0 -44
  851. package/dist/commands/chunk-GGWXF7RJ.js +0 -70
  852. package/dist/commands/chunk-GHOTKHI4.js +0 -30
  853. package/dist/commands/chunk-GMVN6ZP2.js +0 -48
  854. package/dist/commands/chunk-GNTTGRCX.js +0 -133
  855. package/dist/commands/chunk-GOY5JECO.js +0 -130
  856. package/dist/commands/chunk-GZL6ISVM.js +0 -72
  857. package/dist/commands/chunk-HALHQILI.js +0 -51
  858. package/dist/commands/chunk-HAT7AFBF.js +0 -85
  859. package/dist/commands/chunk-HDVSZ6CZ.js +0 -292
  860. package/dist/commands/chunk-HE3GOMR7.js +0 -88
  861. package/dist/commands/chunk-HEFUC4ZW.js +0 -65
  862. package/dist/commands/chunk-HHS3LYLV.js +0 -30
  863. package/dist/commands/chunk-HQSWPRUF.js +0 -61
  864. package/dist/commands/chunk-HQZ65PJE.js +0 -167
  865. package/dist/commands/chunk-HRN73FQJ.js +0 -77
  866. package/dist/commands/chunk-HSZECERZ.js +0 -271
  867. package/dist/commands/chunk-HYE3MBAN.js +0 -113
  868. package/dist/commands/chunk-IAB6LCJL.js +0 -18
  869. package/dist/commands/chunk-IAGENI2U.js +0 -42
  870. package/dist/commands/chunk-ICPVBHIX.js +0 -48
  871. package/dist/commands/chunk-ILIITIMQ.js +0 -126
  872. package/dist/commands/chunk-IONGJJYM.js +0 -179
  873. package/dist/commands/chunk-IP23WOWP.js +0 -126
  874. package/dist/commands/chunk-IPS7EBE5.js +0 -140
  875. package/dist/commands/chunk-IXZZSST7.js +0 -459
  876. package/dist/commands/chunk-IY3DSDRW.js +0 -173
  877. package/dist/commands/chunk-J2RUI4KN.js +0 -47
  878. package/dist/commands/chunk-J3PCRUVY.js +0 -1223
  879. package/dist/commands/chunk-J4XHEOOW.js +0 -156
  880. package/dist/commands/chunk-JDHLHYJJ.js +0 -208
  881. package/dist/commands/chunk-JGX7JIW4.js +0 -126
  882. package/dist/commands/chunk-JHIGDFBS.js +0 -59
  883. package/dist/commands/chunk-JI2EGXZX.js +0 -53
  884. package/dist/commands/chunk-JNV3VRK2.js +0 -47
  885. package/dist/commands/chunk-JPMAW2VZ.js +0 -91
  886. package/dist/commands/chunk-JQEY6KDP.js +0 -90
  887. package/dist/commands/chunk-JSJDIEGZ.js +0 -88
  888. package/dist/commands/chunk-JT5ICRFF.js +0 -44
  889. package/dist/commands/chunk-JU2MAYQ3.js +0 -997
  890. package/dist/commands/chunk-JUCJ4Y42.js +0 -77
  891. package/dist/commands/chunk-JZK33TA5.js +0 -99
  892. package/dist/commands/chunk-K3OZBV3L.js +0 -49
  893. package/dist/commands/chunk-K6P5PISC.js +0 -114
  894. package/dist/commands/chunk-KDCHY7XO.js +0 -88
  895. package/dist/commands/chunk-KDGX3JTV.js +0 -51
  896. package/dist/commands/chunk-KGSEWOKI.js +0 -353
  897. package/dist/commands/chunk-KIS7JFNP.js +0 -217
  898. package/dist/commands/chunk-KJPZPTS4.js +0 -245
  899. package/dist/commands/chunk-KKHD3C2P.js +0 -114
  900. package/dist/commands/chunk-KKIIY5I5.js +0 -67
  901. package/dist/commands/chunk-KN46UC77.js +0 -114
  902. package/dist/commands/chunk-KP2BVAS5.js +0 -125
  903. package/dist/commands/chunk-KPAJBJXG.js +0 -63
  904. package/dist/commands/chunk-KPMAJP6D.js +0 -145
  905. package/dist/commands/chunk-KR6WUAJM.js +0 -122
  906. package/dist/commands/chunk-KWLNK2NJ.js +0 -391
  907. package/dist/commands/chunk-KXK2A2HB.js +0 -158
  908. package/dist/commands/chunk-L2CLCNXW.js +0 -144
  909. package/dist/commands/chunk-L7MDU6D7.js +0 -155
  910. package/dist/commands/chunk-L7VD4MLF.js +0 -78
  911. package/dist/commands/chunk-LBVYFW3I.js +0 -38
  912. package/dist/commands/chunk-LIPUSINQ.js +0 -140
  913. package/dist/commands/chunk-LJVZWE3A.js +0 -1885
  914. package/dist/commands/chunk-LKSSQVDA.js +0 -49
  915. package/dist/commands/chunk-LNQOL2CL.js +0 -321
  916. package/dist/commands/chunk-LS7P324N.js +0 -72
  917. package/dist/commands/chunk-LU5EOGFQ.js +0 -50
  918. package/dist/commands/chunk-LX2ENXHZ.js +0 -197
  919. package/dist/commands/chunk-M3UGRNNB.js +0 -103
  920. package/dist/commands/chunk-M3ZDYCUF.js +0 -117
  921. package/dist/commands/chunk-MDGPJOLK.js +0 -351
  922. package/dist/commands/chunk-MDKRTUE4.js +0 -288
  923. package/dist/commands/chunk-MFZVRWRS.js +0 -34
  924. package/dist/commands/chunk-MHF6BDQI.js +0 -128
  925. package/dist/commands/chunk-MLJDW7YN.js +0 -64
  926. package/dist/commands/chunk-MNLHYAJO.js +0 -80
  927. package/dist/commands/chunk-MOD3FG4V.js +0 -419
  928. package/dist/commands/chunk-MRAEJLXL.js +0 -83
  929. package/dist/commands/chunk-MRW2WYJS.js +0 -68
  930. package/dist/commands/chunk-N2XH7QBY.js +0 -103
  931. package/dist/commands/chunk-N2ZF6T4E.js +0 -332
  932. package/dist/commands/chunk-N36NZMAL.js +0 -79
  933. package/dist/commands/chunk-N4EMFHQ6.js +0 -114
  934. package/dist/commands/chunk-N4P64UIH.js +0 -211
  935. package/dist/commands/chunk-NABSSY4P.js +0 -204
  936. package/dist/commands/chunk-NDQIJBRQ.js +0 -100
  937. package/dist/commands/chunk-NDR4PCVG.js +0 -29
  938. package/dist/commands/chunk-NEOCCN6D.js +0 -302
  939. package/dist/commands/chunk-NFKWFOFM.js +0 -45
  940. package/dist/commands/chunk-NFUPJBBG.js +0 -516
  941. package/dist/commands/chunk-NHEBKL7X.js +0 -170
  942. package/dist/commands/chunk-NHTEC5U4.js +0 -99
  943. package/dist/commands/chunk-NOSODWWK.js +0 -1132
  944. package/dist/commands/chunk-NPXXYG6Z.js +0 -580
  945. package/dist/commands/chunk-NR2JDBPV.js +0 -75
  946. package/dist/commands/chunk-NRULNBYI.js +0 -1153
  947. package/dist/commands/chunk-NTGF5N3N.js +0 -110
  948. package/dist/commands/chunk-NTIVNQKF.js +0 -73
  949. package/dist/commands/chunk-NUCFIYZL.js +0 -119
  950. package/dist/commands/chunk-NVMV7BYX.js +0 -88
  951. package/dist/commands/chunk-NYWPTYGL.js +0 -169
  952. package/dist/commands/chunk-O45BX4EL.js +0 -39
  953. package/dist/commands/chunk-O46T4ANI.js +0 -229
  954. package/dist/commands/chunk-O7ESC4HL.js +0 -566
  955. package/dist/commands/chunk-OBYLXHCH.js +0 -86
  956. package/dist/commands/chunk-OHN3QARP.js +0 -769
  957. package/dist/commands/chunk-OKBZGLD5.js +0 -393
  958. package/dist/commands/chunk-OKN63ZH5.js +0 -109
  959. package/dist/commands/chunk-ON4IKRGS.js +0 -469
  960. package/dist/commands/chunk-OT74RSQO.js +0 -82
  961. package/dist/commands/chunk-OVCVINYW.js +0 -143
  962. package/dist/commands/chunk-OZKLVTYI.js +0 -342
  963. package/dist/commands/chunk-OZN4HOZT.js +0 -74
  964. package/dist/commands/chunk-P3LJ2Q4N.js +0 -555
  965. package/dist/commands/chunk-P43GWYR6.js +0 -185
  966. package/dist/commands/chunk-P6ASP2DY.js +0 -132
  967. package/dist/commands/chunk-PBAEJ5PT.js +0 -38
  968. package/dist/commands/chunk-PCZROH3R.js +0 -100
  969. package/dist/commands/chunk-PJYTUUTH.js +0 -34
  970. package/dist/commands/chunk-PKXTISWR.js +0 -58
  971. package/dist/commands/chunk-PSGLUBSB.js +0 -74
  972. package/dist/commands/chunk-PVRDJU2B.js +0 -126
  973. package/dist/commands/chunk-Q42NF2TL.js +0 -47
  974. package/dist/commands/chunk-Q4ULMZAS.js +0 -106
  975. package/dist/commands/chunk-QCRUPRQ2.js +0 -207
  976. package/dist/commands/chunk-QGATHT4S.js +0 -114
  977. package/dist/commands/chunk-QKTTKAXM.js +0 -119
  978. package/dist/commands/chunk-QSBYULSS.js +0 -100
  979. package/dist/commands/chunk-QSJCZATC.js +0 -18
  980. package/dist/commands/chunk-QTJPCXEW.js +0 -23
  981. package/dist/commands/chunk-QTQAI2M2.js +0 -179
  982. package/dist/commands/chunk-QTVVFV4Q.js +0 -127
  983. package/dist/commands/chunk-QVOFWFWC.js +0 -134
  984. package/dist/commands/chunk-QX2EMUXV.js +0 -102
  985. package/dist/commands/chunk-QXBOECGL.js +0 -272
  986. package/dist/commands/chunk-QXCG3SG4.js +0 -88
  987. package/dist/commands/chunk-QZVMGAWV.js +0 -307
  988. package/dist/commands/chunk-R2THGPI3.js +0 -99
  989. package/dist/commands/chunk-R36VZIKU.js +0 -53
  990. package/dist/commands/chunk-R3F7F3TX.js +0 -94
  991. package/dist/commands/chunk-R5AABJZJ.js +0 -1062
  992. package/dist/commands/chunk-R7PYR4HW.js +0 -389
  993. package/dist/commands/chunk-RAQ3E6OT.js +0 -258
  994. package/dist/commands/chunk-RESNXNDG.js +0 -54
  995. package/dist/commands/chunk-RFIOZTXY.js +0 -305
  996. package/dist/commands/chunk-RFWB2KAV.js +0 -102
  997. package/dist/commands/chunk-RFXON3FK.js +0 -25
  998. package/dist/commands/chunk-RGEB5L37.js +0 -66
  999. package/dist/commands/chunk-RGRLLF2J.js +0 -119
  1000. package/dist/commands/chunk-RLRIMYXM.js +0 -178
  1001. package/dist/commands/chunk-RNB3DQOZ.js +0 -70
  1002. package/dist/commands/chunk-RO4QEZJO.js +0 -172
  1003. package/dist/commands/chunk-RS5HBJY6.js +0 -161
  1004. package/dist/commands/chunk-RV7EQIE4.js +0 -202
  1005. package/dist/commands/chunk-RWPCK3CO.js +0 -41
  1006. package/dist/commands/chunk-RWYSVFIA.js +0 -250
  1007. package/dist/commands/chunk-RYKK75YT.js +0 -289
  1008. package/dist/commands/chunk-S4JE63QE.js +0 -704
  1009. package/dist/commands/chunk-S5GX3H4P.js +0 -91
  1010. package/dist/commands/chunk-SC57VV6A.js +0 -60
  1011. package/dist/commands/chunk-SD4EX75H.js +0 -177
  1012. package/dist/commands/chunk-SJITWFNY.js +0 -480
  1013. package/dist/commands/chunk-SKGDMAIA.js +0 -33
  1014. package/dist/commands/chunk-SNSZ25XZ.js +0 -393
  1015. package/dist/commands/chunk-SOETJZWH.js +0 -7672
  1016. package/dist/commands/chunk-SQZZHK6X.js +0 -119
  1017. package/dist/commands/chunk-SRG6PKVS.js +0 -49
  1018. package/dist/commands/chunk-SRTEE34O.js +0 -93
  1019. package/dist/commands/chunk-SVTS7ACS.js +0 -18
  1020. package/dist/commands/chunk-SYTCTLMD.js +0 -285
  1021. package/dist/commands/chunk-T6JUDQMW.js +0 -181
  1022. package/dist/commands/chunk-TEXUEBGE.js +0 -208
  1023. package/dist/commands/chunk-TFDVTU6O.js +0 -910
  1024. package/dist/commands/chunk-TFYYXETQ.js +0 -472
  1025. package/dist/commands/chunk-TMFKVJUW.js +0 -121
  1026. package/dist/commands/chunk-TRHWBUWE.js +0 -61
  1027. package/dist/commands/chunk-TROCFVCU.js +0 -45
  1028. package/dist/commands/chunk-TUBBESHU.js +0 -85
  1029. package/dist/commands/chunk-TVZIFZZN.js +0 -62
  1030. package/dist/commands/chunk-TXRWAL63.js +0 -144
  1031. package/dist/commands/chunk-U46YTYJQ.js +0 -92
  1032. package/dist/commands/chunk-U5EO4QEV.js +0 -48
  1033. package/dist/commands/chunk-U7Y6RKLK.js +0 -168
  1034. package/dist/commands/chunk-UCO333EX.js +0 -47
  1035. package/dist/commands/chunk-UIXQ4IYT.js +0 -445
  1036. package/dist/commands/chunk-UJGNYPMD.js +0 -716
  1037. package/dist/commands/chunk-UREXZJDB.js +0 -210
  1038. package/dist/commands/chunk-URZ4RDC4.js +0 -220
  1039. package/dist/commands/chunk-UUA63LCI.js +0 -77
  1040. package/dist/commands/chunk-UVY5ODCM.js +0 -60
  1041. package/dist/commands/chunk-UWMB6EOU.js +0 -45
  1042. package/dist/commands/chunk-UY62WJV6.js +0 -120
  1043. package/dist/commands/chunk-UZDKCGDC.js +0 -198
  1044. package/dist/commands/chunk-VAHQ4AFM.js +0 -585
  1045. package/dist/commands/chunk-VL5I2IOD.js +0 -332
  1046. package/dist/commands/chunk-VMG3QB6C.js +0 -81
  1047. package/dist/commands/chunk-VO25PMGS.js +0 -58
  1048. package/dist/commands/chunk-VPRQFM2T.js +0 -37
  1049. package/dist/commands/chunk-VTLWODJ2.js +0 -133
  1050. package/dist/commands/chunk-VUCDGQ6Y.js +0 -260
  1051. package/dist/commands/chunk-VY7ZJMDT.js +0 -469
  1052. package/dist/commands/chunk-W4BR6QNU.js +0 -1241
  1053. package/dist/commands/chunk-W7X7MZZN.js +0 -449
  1054. package/dist/commands/chunk-WCYRNNKF.js +0 -76
  1055. package/dist/commands/chunk-WEUUJIWQ.js +0 -84
  1056. package/dist/commands/chunk-WNBJK6QE.js +0 -84
  1057. package/dist/commands/chunk-WORHUJ6T.js +0 -73
  1058. package/dist/commands/chunk-WR5PKCQW.js +0 -61
  1059. package/dist/commands/chunk-WR73HTRG.js +0 -121
  1060. package/dist/commands/chunk-WRNMUQTD.js +0 -95
  1061. package/dist/commands/chunk-WROJTXWZ.js +0 -138
  1062. package/dist/commands/chunk-WTIPX5NG.js +0 -43
  1063. package/dist/commands/chunk-WWLCQREY.js +0 -225
  1064. package/dist/commands/chunk-WXLW7S4M.js +0 -71
  1065. package/dist/commands/chunk-WXXLJQBO.js +0 -67
  1066. package/dist/commands/chunk-X4LYH6Q4.js +0 -56
  1067. package/dist/commands/chunk-XAEL24EG.js +0 -66
  1068. package/dist/commands/chunk-XI2ABCRX.js +0 -209
  1069. package/dist/commands/chunk-XRQMVAB4.js +0 -85
  1070. package/dist/commands/chunk-XUXCFPDK.js +0 -218
  1071. package/dist/commands/chunk-XZQWEVR3.js +0 -84
  1072. package/dist/commands/chunk-Y6OGDG5I.js +0 -49
  1073. package/dist/commands/chunk-YANDBVAT.js +0 -430
  1074. package/dist/commands/chunk-YD7XK2TX.js +0 -550
  1075. package/dist/commands/chunk-YEAE46TS.js +0 -98
  1076. package/dist/commands/chunk-YEQFAEVW.js +0 -112
  1077. package/dist/commands/chunk-YJZAD4Z5.js +0 -103
  1078. package/dist/commands/chunk-YNCF66RK.js +0 -1052
  1079. package/dist/commands/chunk-YOA25SII.js +0 -210
  1080. package/dist/commands/chunk-YOZTZMAT.js +0 -38
  1081. package/dist/commands/chunk-YSGRHVZG.js +0 -897
  1082. package/dist/commands/chunk-YSLGWRQN.js +0 -646
  1083. package/dist/commands/chunk-YT5JR2CB.js +0 -105
  1084. package/dist/commands/chunk-YTXCLGGL.js +0 -168
  1085. package/dist/commands/chunk-YVHJN2HS.js +0 -74
  1086. package/dist/commands/chunk-YY7XVVSB.js +0 -43
  1087. package/dist/commands/chunk-Z2NUK47W.js +0 -1314
  1088. package/dist/commands/chunk-Z5GZV4DV.js +0 -16
  1089. package/dist/commands/chunk-ZB52ZIEA.js +0 -1629
  1090. package/dist/commands/chunk-ZCD4AV2P.js +0 -73
  1091. package/dist/commands/chunk-ZCHZU6NX.js +0 -799
  1092. package/dist/commands/chunk-ZEH2B3DF.js +0 -239
  1093. package/dist/commands/chunk-ZGANVZCA.js +0 -92
  1094. package/dist/commands/chunk-ZGEUWHFF.js +0 -297
  1095. package/dist/commands/chunk-ZHSNQ2F7.js +0 -161
  1096. package/dist/commands/chunk-ZI3SABMH.js +0 -347
  1097. package/dist/commands/chunk-ZIIUBGON.js +0 -773
  1098. package/dist/commands/chunk-ZJJLROJY.js +0 -269
  1099. package/dist/commands/chunk-ZNIIA275.js +0 -59
  1100. package/dist/commands/chunk-ZV6BZZJ2.js +0 -271
  1101. package/dist/commands/run-ship-lap-W66LTXJJ.js +0 -28
  1102. package/dist/commands/test-related-XBDH2IOH.js +0 -113
  1103. package/dist/commands/unused-members-KVKZDTXD.js +0 -329
  1104. package/dist/hooks/chunk-3SA3FIQC.js +0 -6869
  1105. package/dist/hooks/chunk-46PTTMGE.js +0 -1625
  1106. package/dist/hooks/chunk-5NIBRHWG.js +0 -77
  1107. package/dist/hooks/chunk-76QKN2K3.js +0 -258
  1108. package/dist/hooks/chunk-CHEKMGFP.js +0 -321
  1109. package/dist/hooks/chunk-CY3ADSDR.js +0 -28580
  1110. package/dist/hooks/chunk-DCILEVDR.js +0 -5173
  1111. package/dist/hooks/chunk-HVNGIM5W.js +0 -5092
  1112. package/dist/hooks/chunk-L6IZZ2IL.js +0 -11219
  1113. package/dist/hooks/chunk-SAAPRHTK.js +0 -43
  1114. package/dist/hooks/chunk-U3ON2GBN.js +0 -12
  1115. package/dist/hooks/chunk-UZXMFOVK.js +0 -9170
  1116. package/dist/hooks/chunk-WCJ2GWYJ.js +0 -1381
  1117. package/dist/hooks/chunk-YEURBB4L.js +0 -32
  1118. package/dist/hooks/chunk-YRKS5ZKE.js +0 -1915
  1119. package/dist/hooks/run-ship-lap-P5555IG7.js +0 -8
@@ -0,0 +1,1891 @@
1
+ import {
2
+ lane_breakdown_text
3
+ } from "./chunk-NZ2UKIY5.js";
4
+ import {
5
+ api_outage,
6
+ run_ending
7
+ } from "./chunk-GL3VOBWB.js";
8
+ import {
9
+ lane_investigation_switch,
10
+ run_event_overrun
11
+ } from "./chunk-ZBRUCKLP.js";
12
+ import {
13
+ lane_withdraw_closed
14
+ } from "./chunk-RLWK2CP3.js";
15
+ import {
16
+ lane_preserve
17
+ } from "./chunk-64II6P7B.js";
18
+ import {
19
+ issue_merged
20
+ } from "./chunk-ORFXTHXU.js";
21
+ import {
22
+ lane_reap_settle
23
+ } from "./chunk-MKIHWQ65.js";
24
+ import {
25
+ lane_residents
26
+ } from "./chunk-GX5XHW2F.js";
27
+ import {
28
+ run_ship_stop_text
29
+ } from "./chunk-U5HQQWRE.js";
30
+ import {
31
+ run_merge_driver
32
+ } from "./chunk-RVKFX3FD.js";
33
+ import {
34
+ gh_core_rate_limit,
35
+ run_merge_token,
36
+ run_merge_usage_limit
37
+ } from "./chunk-TBIX42IT.js";
38
+ import {
39
+ lane_vacant
40
+ } from "./chunk-YR5RS4YT.js";
41
+ import {
42
+ run_event_filed
43
+ } from "./chunk-PYOK73QE.js";
44
+ import {
45
+ lane_relaunch
46
+ } from "./chunk-TSS2RKBC.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-ELZQL6M3.js";
56
+ import {
57
+ issue_state_cli
58
+ } from "./chunk-6TOWGIY2.js";
59
+ import {
60
+ git_followup_issue_close,
61
+ settled_together
62
+ } from "./chunk-FFLZPLWC.js";
63
+ import {
64
+ epic_close
65
+ } from "./chunk-VWNVKWLV.js";
66
+ import {
67
+ lane_ledger_archive
68
+ } from "./chunk-2TI22UNK.js";
69
+ import {
70
+ run_label
71
+ } from "./chunk-6NXTP5JT.js";
72
+ import {
73
+ issue_not_before
74
+ } from "./chunk-JUXKVN77.js";
75
+ import {
76
+ issue_closing_pr,
77
+ issue_sample_prime
78
+ } from "./chunk-FBZD6LOK.js";
79
+ import {
80
+ josh_command
81
+ } from "./chunk-72LAYP5S.js";
82
+ import {
83
+ issue_priority
84
+ } from "./chunk-FBWNL3UA.js";
85
+ import {
86
+ telegram_notify
87
+ } from "./chunk-MQNKIKJ6.js";
88
+ import {
89
+ lane_breakdown_implement
90
+ } from "./chunk-UWLANGIR.js";
91
+ import {
92
+ lane_breakdown
93
+ } from "./chunk-2MDLCJZ4.js";
94
+ import {
95
+ lane_net_time
96
+ } from "./chunk-LAUKNN57.js";
97
+ import {
98
+ lane_yield
99
+ } from "./chunk-SIPHEZXP.js";
100
+ import {
101
+ lane_stage_stats
102
+ } from "./chunk-3TN76RWK.js";
103
+ import {
104
+ git_gh_command
105
+ } from "./chunk-VJNE7W7O.js";
106
+ import {
107
+ stop_decision
108
+ } from "./chunk-3ZEO3KOM.js";
109
+ import {
110
+ lane_park
111
+ } from "./chunk-B4OZF4XL.js";
112
+ import {
113
+ agent_argv
114
+ } from "./chunk-IV6ETHVB.js";
115
+ import {
116
+ lane_tail_stats
117
+ } from "./chunk-WYAY6CQI.js";
118
+ import {
119
+ lane_await
120
+ } from "./chunk-YSDBY2G7.js";
121
+ import {
122
+ lane_ledger
123
+ } from "./chunk-I2RBOH4F.js";
124
+ import {
125
+ bash_triggers
126
+ } from "./chunk-25LVQDOF.js";
127
+ import {
128
+ shell_segments
129
+ } from "./chunk-CVJHQOI3.js";
130
+ import {
131
+ issue_body_keys
132
+ } from "./chunk-4DNAAFF4.js";
133
+ import {
134
+ issue_park
135
+ } from "./chunk-NHXMWRBI.js";
136
+ import {
137
+ run_stalled
138
+ } from "./chunk-IBOCPSPK.js";
139
+ import {
140
+ git_gh_issue_write
141
+ } from "./chunk-C3Y42PHX.js";
142
+ import {
143
+ run_cut,
144
+ run_cut_adoption
145
+ } from "./chunk-OTCWA4QE.js";
146
+ import {
147
+ time_reported_failure
148
+ } from "./chunk-ZW6DLYS4.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-KXZR7UAE.js";
157
+ import {
158
+ lane_handoff
159
+ } from "./chunk-5QICRFVL.js";
160
+ import {
161
+ agent_event
162
+ } from "./chunk-LULJUD6P.js";
163
+ import {
164
+ run_ship_detach
165
+ } from "./chunk-Z7C2O5JC.js";
166
+ import {
167
+ detached_launch
168
+ } from "./chunk-MOAPWO34.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-XO7S2BTY.js";
176
+ import {
177
+ run_event_stream
178
+ } from "./chunk-373P5MM2.js";
179
+ import {
180
+ lane_state
181
+ } from "./chunk-V36OV7AP.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-VFW6XZH7.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-V56NLG7I.js";
214
+ import {
215
+ run_carry,
216
+ run_carry_conversation
217
+ } from "./chunk-JSJS3OT7.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-MT6TRLFD.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("summary"),
872
+ "",
873
+ "**The verification gate fails on `main`, so every lane is held until it is repaired.**",
874
+ "",
875
+ "Several lanes failed one after another, and the same verification then failed on `main` twice in a row, so the cause is on `main` rather than in any one lane. Fix whatever makes the verification fail on `main`; the output is under the reproduction below.",
876
+ "",
877
+ issue_body_keys.heading("background"),
878
+ "",
879
+ issue_body_keys.line("kind", "bug"),
880
+ issue_body_keys.line("purpose", "bug_fix"),
881
+ issue_body_keys.line("judgement", "not_needed"),
882
+ `${issue_body_keys.line("origin", "unknown")}\uFF08found by the backlogrun health check, not traced yet\uFF09`,
883
+ `${issue_body_keys.prefix("size")} ${issue_body_keys.size_value("1", "20")}`
884
+ ];
885
+ var SYMPTOM = [
886
+ issue_body_keys.heading("symptom"),
887
+ "",
888
+ `${COMMANDS} fail on \`main\`, twice in a row.`
889
+ ];
890
+ var EXPECTED = [
891
+ issue_body_keys.heading("expected"),
892
+ "",
893
+ `${COMMANDS} pass on \`main\`.`,
894
+ "",
895
+ issue_body_keys.heading("criteria"),
896
+ "",
897
+ `- [ ] ${COMMANDS} pass on \`main\`.`
898
+ ];
899
+ function body_of(child, output) {
900
+ const tail = output.split("\n").slice(-OUTPUT_TAIL_LINES).join("\n");
901
+ 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.`;
902
+ const reproduction = [
903
+ issue_body_keys.heading("reproduction"),
904
+ "",
905
+ `${COMMANDS} on \`main\`:`,
906
+ "",
907
+ "```text",
908
+ tail,
909
+ "```"
910
+ ];
911
+ return [...DECLARATIONS, "", origin, "", ...SYMPTOM, "", ...reproduction, "", ...EXPECTED].join(
912
+ "\n"
913
+ );
914
+ }
915
+ async function file_solo(child, output) {
916
+ const directory = await mkdtemp(path.join(tmpdir(), "josh-health-"));
917
+ const body_file = path.join(directory, "body.md");
918
+ const answers = ["--defect", "yes", "--verification", "yes", "--every-run", "yes"];
919
+ const labels = ["--label", RUN_SOLO_LABEL, "--label", PRIORITY_CRITICAL_LABEL];
920
+ await writeFile(body_file, body_of(child, output));
921
+ const filing = await execa(
922
+ "pnpm",
923
+ ["josh", "issue:file", TITLE, "--body-file", body_file, ...labels, ...answers, "--over-cap"],
924
+ { reject: false, all: true, stdin: "ignore" }
925
+ );
926
+ if (filing.exitCode !== 0) {
927
+ console.error(`run:merge: the run:solo Issue was not filed:
928
+ ${filing.all}`);
929
+ }
930
+ }
931
+ async function red_output(health_check) {
932
+ const result = await execa("pnpm", health_check.args, {
933
+ reject: false,
934
+ all: true,
935
+ stdin: "ignore",
936
+ env: health_check.env
937
+ });
938
+ return result.exitCode === 0 ? void 0 : result.all;
939
+ }
940
+ async function verification_red() {
941
+ return await red_output(STATIC_CHECK) ?? await red_output(UNIT_CHECK);
942
+ }
943
+ async function check(child) {
944
+ if (await verification_red() === void 0) return true;
945
+ const output = await verification_red();
946
+ if (output === void 0) return true;
947
+ if (!is_filed(await run_event_stream_emit.current_events())) await file_solo(child, output);
948
+ return false;
949
+ }
950
+ var run_merge_health = { TITLE, body_of, check };
951
+
952
+ // scripts/run/merge/run-merge-cut-release.ts
953
+ async function release(child) {
954
+ const lane = await lane_registry.find_open_lane(child);
955
+ if (lane === void 0) return;
956
+ const carried = run_cut.lane_cut_sync(lane.directory);
957
+ if (carried === void 0) return;
958
+ run_cut_adoption.release(carried.target, carried.cut, child);
959
+ }
960
+ var run_merge_cut_release = { release };
961
+
962
+ // scripts/run/merge/run-merge-human-review.ts
963
+ async function retain(issue) {
964
+ const retained = await lane_state.record_change({
965
+ issue,
966
+ state: "human-review",
967
+ command: "run:merge"
968
+ });
969
+ if (retained.kind !== "written") return false;
970
+ if (lane_await.process_trace_default(issue) === "none") {
971
+ await run_merge_cut_release.release(issue);
972
+ }
973
+ await run_event_stream_emit.emit(
974
+ run_event_stream.EVENT_KIND.HUMAN_REVIEW,
975
+ `${issue_cite.plain_for("program", issue)} waiting for human review`
976
+ );
977
+ return true;
978
+ }
979
+ var run_merge_human_review = { retain };
980
+
981
+ // scripts/agent/usage-limit-reset.ts
982
+ var RESET_PATTERN = /resets (?<when>[^(]*)\((?<zone>[^)]*)\)/iu;
983
+ var TIME_PATTERN = /\b(?<hour>\d{1,2})(?::(?<minute>\d{2}))? ?(?<meridiem>am|pm)\b/iu;
984
+ var DATE_PATTERN = /\b(?<month>[a-z]+)\.? (?<day>\d{1,2})\b/iu;
985
+ var MONTH_PREFIX = 3;
986
+ var EPOCH_PATTERN = /\|(?<epoch>\d{10})\b/u;
987
+ var MONTHS = ["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"];
988
+ var MS_PER_SECOND = 1e3;
989
+ var MS_PER_MINUTE = 6e4;
990
+ var HALF_YEAR_MS = 157788e5;
991
+ var HOURS_PER_HALF_DAY = 12;
992
+ var PM = "pm";
993
+ var NOT_FOUND = -1;
994
+ function epoch_ms(text) {
995
+ const epoch = EPOCH_PATTERN.exec(text)?.groups?.["epoch"];
996
+ return epoch === void 0 ? void 0 : Number(epoch) * MS_PER_SECOND;
997
+ }
998
+ function dated2(groups) {
999
+ const month = MONTHS.indexOf(String(groups["month"]).slice(0, MONTH_PREFIX).toLowerCase());
1000
+ return month === NOT_FOUND ? void 0 : { month, day: Number(groups["day"]) };
1001
+ }
1002
+ function date_of(when) {
1003
+ const groups = DATE_PATTERN.exec(when)?.groups;
1004
+ return groups === void 0 ? void 0 : dated2(groups);
1005
+ }
1006
+ function hour_of(time) {
1007
+ const half = time["meridiem"]?.toLowerCase() === PM ? HOURS_PER_HALF_DAY : 0;
1008
+ return Number(time["hour"]) % HOURS_PER_HALF_DAY + half;
1009
+ }
1010
+ function wall_of(when, zone) {
1011
+ const time = TIME_PATTERN.exec(when)?.groups;
1012
+ if (time === void 0) return void 0;
1013
+ return { date: date_of(when), hour: hour_of(time), minute: Number(time["minute"] ?? 0), zone };
1014
+ }
1015
+ function zone_format(zone) {
1016
+ return new Intl.DateTimeFormat("en-US", {
1017
+ timeZone: zone,
1018
+ hourCycle: "h23",
1019
+ year: "numeric",
1020
+ month: "numeric",
1021
+ day: "numeric",
1022
+ hour: "numeric",
1023
+ minute: "numeric"
1024
+ });
1025
+ }
1026
+ function zone_fields(at_ms, zone) {
1027
+ const parts = zone_format(zone).formatToParts(at_ms);
1028
+ const read2 = new Map(parts.map((part) => [part.type, Number(part.value)]));
1029
+ function field(type) {
1030
+ return read2.get(type) ?? 0;
1031
+ }
1032
+ return {
1033
+ year: field("year"),
1034
+ month: field("month") - 1,
1035
+ day: field("day"),
1036
+ hour: field("hour"),
1037
+ minute: field("minute")
1038
+ };
1039
+ }
1040
+ function utc_of(fields) {
1041
+ return Date.UTC(fields.year, fields.month, fields.day, fields.hour, fields.minute);
1042
+ }
1043
+ function offset_ms(at_ms, zone) {
1044
+ return utc_of(zone_fields(at_ms, zone)) - (at_ms - at_ms % MS_PER_MINUTE);
1045
+ }
1046
+ function instant_of(fields, zone) {
1047
+ const guess = utc_of(fields);
1048
+ return guess - offset_ms(guess - offset_ms(guess, zone), zone);
1049
+ }
1050
+ function year_shift(at_ms, now_ms) {
1051
+ if (now_ms - at_ms > HALF_YEAR_MS) return 1;
1052
+ return at_ms - now_ms > HALF_YEAR_MS ? -1 : 0;
1053
+ }
1054
+ function dated_instant(fields, zone, now_ms) {
1055
+ const at_ms = instant_of(fields, zone);
1056
+ const shift = year_shift(at_ms, now_ms);
1057
+ return shift === 0 ? at_ms : instant_of({ ...fields, year: fields.year + shift }, zone);
1058
+ }
1059
+ function undated_instant(fields, zone, now_ms) {
1060
+ const at_ms = instant_of(fields, zone);
1061
+ return at_ms > now_ms ? at_ms : instant_of({ ...fields, day: fields.day + 1 }, zone);
1062
+ }
1063
+ function next_instant(wall, now_ms) {
1064
+ const today = zone_fields(now_ms, wall.zone);
1065
+ const fields = { ...today, ...wall.date, hour: wall.hour, minute: wall.minute };
1066
+ if (wall.date === void 0) return undated_instant(fields, wall.zone, now_ms);
1067
+ return dated_instant(fields, wall.zone, now_ms);
1068
+ }
1069
+ function wall_in(text) {
1070
+ const groups = RESET_PATTERN.exec(text)?.groups;
1071
+ if (groups === void 0) return void 0;
1072
+ return wall_of(String(groups["when"]), String(groups["zone"]).trim());
1073
+ }
1074
+ function known_instant(wall, now_ms) {
1075
+ try {
1076
+ return next_instant(wall, now_ms);
1077
+ } catch {
1078
+ return void 0;
1079
+ }
1080
+ }
1081
+ function clock_ms(text, now_ms) {
1082
+ const wall = wall_in(text);
1083
+ return wall === void 0 ? void 0 : known_instant(wall, now_ms);
1084
+ }
1085
+ function reset_ms(text, now_ms) {
1086
+ return epoch_ms(text) ?? clock_ms(text, now_ms);
1087
+ }
1088
+ var usage_limit_reset = { reset_ms };
1089
+
1090
+ // scripts/agent/api-usage-limit.ts
1091
+ var LIMIT_PATTERN = /hit your (?:\w+ )?limit|usage limit reached/u;
1092
+ var RECHECK_MS2 = 18e5;
1093
+ function limit_reason(record) {
1094
+ if (record === void 0 || !record.is_error || record.reason === void 0) return void 0;
1095
+ return LIMIT_PATTERN.test(record.reason.toLowerCase()) ? record.reason : void 0;
1096
+ }
1097
+ function is_usage_limit(record) {
1098
+ return limit_reason(record) !== void 0;
1099
+ }
1100
+ function or_recheck(reset_ms3, now_ms) {
1101
+ return reset_ms3 === void 0 || reset_ms3 <= now_ms ? now_ms + RECHECK_MS2 : reset_ms3;
1102
+ }
1103
+ function resume_ms(record, now_ms, stopped_ms = now_ms) {
1104
+ const reason = limit_reason(record);
1105
+ if (reason === void 0) return void 0;
1106
+ return or_recheck(usage_limit_reset.reset_ms(reason, stopped_ms), now_ms);
1107
+ }
1108
+ function transcript_resume_ms(log, now_ms, stopped_ms = now_ms) {
1109
+ if (log === void 0 || !agent_exit_record.ends_on_exit_record(log)) return void 0;
1110
+ return resume_ms(agent_exit_record.read_exit_record(log), now_ms, stopped_ms);
1111
+ }
1112
+ var api_usage_limit = { RECHECK_MS: RECHECK_MS2, is_usage_limit, resume_ms, transcript_resume_ms };
1113
+
1114
+ // scripts/run/merge/run-merge-ship.ts
1115
+ var ENDED_RESULTS = /* @__PURE__ */ new Set(["failed", "abnormal"]);
1116
+ function since_ship_launch(events, child) {
1117
+ const attempt = run_event_scope.since_own_launch(events, child);
1118
+ const own = attempt.filter((event) => run_event_scope.issue_named(event) === child);
1119
+ const launched_at = own.findLastIndex(
1120
+ (event) => event.kind === run_event_stream.EVENT_KIND.SHIP_LAUNCH
1121
+ );
1122
+ return launched_at === -1 ? void 0 : own.slice(launched_at + 1);
1123
+ }
1124
+ function stop_cause(stop2) {
1125
+ const stage = run_ship_stop_text.reason_of(stop2.text);
1126
+ return {
1127
+ short: stage === void 0 ? "ship stopped" : `${stage} failed`,
1128
+ why: `its detached ship stopped and was not fixed: ${stop2.text}.`
1129
+ };
1130
+ }
1131
+ function cause_of(ending, events, child) {
1132
+ if (ending === void 0 || !ENDED_RESULTS.has(ending.result)) return void 0;
1133
+ const attempt = since_ship_launch(events, child);
1134
+ if (attempt === void 0) return void 0;
1135
+ const stop2 = attempt.findLast((event) => event.kind === run_event_stream.EVENT_KIND.SHIP_STOP);
1136
+ if (stop2 !== void 0) return stop_cause(stop2);
1137
+ return {
1138
+ short: `ship ${ending.result}`,
1139
+ why: `its detached ship ended ${ending.result} before recording a stopped stage \u2014 pnpm josh ship --log ${child}.`
1140
+ };
1141
+ }
1142
+ function cause2(child, directory = process.cwd()) {
1143
+ const repository = git_common_directory.repository(directory);
1144
+ if (repository === void 0) return void 0;
1145
+ const events = run_event_stream.read_events(run_event_stream.target_of(repository));
1146
+ return cause_of(run_ship_detach.read_result(repository, child), events, child);
1147
+ }
1148
+ function is_relaunch_failed(event) {
1149
+ return event.kind === run_event_stream.EVENT_KIND.RELAUNCH_FAILED;
1150
+ }
1151
+ function is_stop_unanswered(ending, attempt, written_at) {
1152
+ const index = attempt.findLastIndex(
1153
+ (event) => event.kind === run_event_stream.EVENT_KIND.SHIP_STOP
1154
+ );
1155
+ const stop2 = attempt[index];
1156
+ if (stop2 === void 0) return ending?.result === "abnormal";
1157
+ if (attempt.slice(index + 1).some((event) => is_relaunch_failed(event))) return true;
1158
+ return written_at !== void 0 && written_at < Date.parse(stop2.at);
1159
+ }
1160
+ function interrupted_of(ending, events, child, written_at) {
1161
+ if (ending === void 0 || !ENDED_RESULTS.has(ending.result)) return false;
1162
+ const attempt = since_ship_launch(events, child);
1163
+ return attempt !== void 0 && is_stop_unanswered(ending, attempt, written_at);
1164
+ }
1165
+ function is_interrupted(child, written_at, directory = process.cwd()) {
1166
+ const repository = git_common_directory.repository(directory);
1167
+ if (repository === void 0) return false;
1168
+ const events = run_event_stream.read_events(run_event_stream.target_of(repository));
1169
+ return interrupted_of(run_ship_detach.read_result(repository, child), events, child, written_at);
1170
+ }
1171
+ async function is_unanswered(child, output) {
1172
+ if (output === void 0 || !is_interrupted(child, run_ending.written_at(output))) return false;
1173
+ const lane = await lane_registry.find_open_lane(child);
1174
+ return lane !== void 0 && !lane_relaunch.is_openai_lane(lane);
1175
+ }
1176
+ var run_merge_ship = { cause: cause2, cause_of, interrupted_of, is_unanswered };
1177
+
1178
+ // scripts/run/merge/run-merge-cap.ts
1179
+ var NO_RELAUNCH_FAILURE = "none was recorded";
1180
+ function is_own2(event, kind, child) {
1181
+ return event.kind === kind && run_event_scope.issue_named(event) === child;
1182
+ }
1183
+ function outages(events, child) {
1184
+ return events.filter((event) => is_own2(event, run_event_stream.EVENT_KIND.OUTAGE, child)).length;
1185
+ }
1186
+ function last_relaunch_failure(events, child) {
1187
+ const kind = run_event_stream.EVENT_KIND.RELAUNCH_FAILED;
1188
+ const failed = events.findLast((event) => is_own2(event, kind, child));
1189
+ return failed === void 0 ? NO_RELAUNCH_FAILURE : failed.text;
1190
+ }
1191
+ function note_of(events, child, limit) {
1192
+ const count = outages(events, child);
1193
+ const failure = last_relaunch_failure(events, child);
1194
+ return `it reached the re-dispatch cap (${String(limit)}) after ${String(count)} re-dispatches; the last failed relaunch: ${failure}.`;
1195
+ }
1196
+ function park_cause(child, cause3, note, output) {
1197
+ if (cause3 !== void 0) return cause3;
1198
+ const judged2 = run_merge_decision.cause(output);
1199
+ const stopped = run_merge_decision.is_decision(judged2.short) ? judged2 : run_merge_ship.cause(child) ?? judged2;
1200
+ if (note === void 0) return stopped;
1201
+ return { short: stopped.short, why: `${note} ${stopped.why}` };
1202
+ }
1203
+ var run_merge_cap = { note_of, outages, park_cause };
1204
+
1205
+ // scripts/run/merge/run-merge-github-limit.ts
1206
+ var RATE_LIMIT = "rate-limit";
1207
+ var TAIL_LINES = 20;
1208
+ var RATE_LIMIT_PATTERN = /^(?:gh|graphql|http 403|http 429): .*(?:api rate limit (?:already )?exceeded|secondary rate limit)/mu;
1209
+ var AUTH_PATTERN = /^http 401: |^(?:try authenticating with|to get started with github cli, please run): +gh auth login/mu;
1210
+ function error_texts(line) {
1211
+ const record = transcript_record.parse(line);
1212
+ if (record?.type !== "user") return [];
1213
+ 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));
1214
+ }
1215
+ function tail_errors(log) {
1216
+ const lines = log.trimEnd().split("\n").slice(-TAIL_LINES);
1217
+ return lines.flatMap((line) => error_texts(line)).join("\n").toLowerCase();
1218
+ }
1219
+ function stop_of(log) {
1220
+ if (log === void 0 || !agent_exit_record.ends_on_exit_record(log)) return void 0;
1221
+ const tail = tail_errors(log);
1222
+ if (RATE_LIMIT_PATTERN.test(tail)) return RATE_LIMIT;
1223
+ return AUTH_PATTERN.test(tail) ? "auth" : void 0;
1224
+ }
1225
+ function read_stop(output) {
1226
+ if (output === void 0) return void 0;
1227
+ return stop_of(run_ending.read_transcript(output));
1228
+ }
1229
+ function is_exhausted(limit, now_ms) {
1230
+ return limit?.remaining === 0 && limit.reset_ms > now_ms;
1231
+ }
1232
+ async function reset_ms2(now_ms) {
1233
+ const resources = await gh_core_rate_limit.read_resources();
1234
+ const limits = [resources?.core, resources?.graphql];
1235
+ const exhausted = limits.find((limit) => is_exhausted(limit, now_ms));
1236
+ return exhausted?.reset_ms ?? now_ms + api_usage_limit.RECHECK_MS;
1237
+ }
1238
+ async function hold2(child, output) {
1239
+ if (read_stop(output) !== RATE_LIMIT) return;
1240
+ await run_merge_usage_limit.record(child, await reset_ms2(Date.now()), "GitHub rate limit");
1241
+ }
1242
+ var run_merge_github_limit = { hold: hold2, read_stop, reset_ms: reset_ms2, stop_of };
1243
+
1244
+ // scripts/run/merge/run-merge-restart.ts
1245
+ import { uptime } from "node:os";
1246
+ var MS_PER_SECOND2 = 1e3;
1247
+ function booted_ms() {
1248
+ try {
1249
+ return Date.now() - uptime() * MS_PER_SECOND2;
1250
+ } catch {
1251
+ return void 0;
1252
+ }
1253
+ }
1254
+ function has_exit_record(output) {
1255
+ const transcript = output === void 0 ? void 0 : run_ending.read_transcript(output);
1256
+ return transcript !== void 0 && agent_exit_record.ends_on_exit_record(transcript);
1257
+ }
1258
+ async function is_host_restart(child, output) {
1259
+ if (has_exit_record(output)) return false;
1260
+ const lane = await lane_registry.find_open_lane(child);
1261
+ const dispatched_ms = lane?.dispatched_ms;
1262
+ if (dispatched_ms === void 0) return false;
1263
+ const boot_ms = booted_ms();
1264
+ return boot_ms !== void 0 && dispatched_ms < boot_ms;
1265
+ }
1266
+ var run_merge_restart = { is_host_restart };
1267
+
1268
+ // scripts/lane/lane-seat-stop.ts
1269
+ async function stop(issue) {
1270
+ const lane = await lane_registry.lane_location(issue);
1271
+ const reaped = lane_reap.reap_child(lane);
1272
+ lane_residents.end_residents(lane, reaped);
1273
+ const survivors = await lane_reap_settle.settle(lane);
1274
+ if (survivors?.length === 0) return;
1275
+ const details = lane_reap_settle.survivor_texts(survivors).join(", ");
1276
+ throw new Error(`Lane ${issue} port ownership has not settled: ${details}`);
1277
+ }
1278
+ var lane_seat_stop = { stop };
1279
+
1280
+ // scripts/run/merge/run-merge-close.ts
1281
+ var MERGE_CLOSER = "pnpm josh run:merge";
1282
+ var SINGLE_READ = { attempts: 1, interval_ms: 0 };
1283
+ async function close_merged_open(merged) {
1284
+ if (merged.merged_pr === void 0) return true;
1285
+ try {
1286
+ await git_followup_issue_close.ensure_issue_closed(
1287
+ { issue_number: merged.child, pr_url: merged.merged_pr, closer: MERGE_CLOSER },
1288
+ SINGLE_READ
1289
+ );
1290
+ return true;
1291
+ } catch {
1292
+ console.error(
1293
+ `${session_cite.issue(merged.child)}: could not be closed \u2014 ${git_followup_issue_close.CLOSE_RECOVERY}`
1294
+ );
1295
+ return false;
1296
+ }
1297
+ }
1298
+ function divert_info_to_stderr() {
1299
+ const { info } = console;
1300
+ console.info = console.error;
1301
+ return function restore() {
1302
+ console.info = info;
1303
+ };
1304
+ }
1305
+ async function with_notes_on_stderr(step) {
1306
+ const restore = divert_info_to_stderr();
1307
+ try {
1308
+ await step();
1309
+ } finally {
1310
+ restore();
1311
+ }
1312
+ }
1313
+ async function close_merged(merged) {
1314
+ if (!await close_merged_open(merged)) return;
1315
+ await with_notes_on_stderr(async () => {
1316
+ await epic_close.close_completed_epics({ issue_number: merged.child, is_merged: true });
1317
+ });
1318
+ }
1319
+ var run_merge_close = { close_merged };
1320
+
1321
+ // scripts/run/merge/run-merge-waits.ts
1322
+ var NOT_BEFORE_WAIT = "a start date still ahead (`not-before`)";
1323
+ async function open_blockers(child) {
1324
+ try {
1325
+ const references = await git_gh_command.issue_blocked_by_references(child, "");
1326
+ return references.filter((blocker) => blocker.state === "OPEN").map((blocker) => issue_cite.plain_for("github", blocker.number, blocker.repo));
1327
+ } catch {
1328
+ return [];
1329
+ }
1330
+ }
1331
+ async function has_not_before_label(ctx) {
1332
+ const state = await issue_state_cli.read_issue(ctx.child, ctx.repo);
1333
+ return state.kind === "state" && has_label_name(state.state.labels, NOT_BEFORE_LABEL);
1334
+ }
1335
+ async function start_date_wait(ctx) {
1336
+ const body = await git_gh_command.issue_get_body(ctx.child, ctx.repo);
1337
+ if (body === void 0) {
1338
+ return [await has_not_before_label(ctx) ? NOT_BEFORE_WAIT : "issue body confirmation"];
1339
+ }
1340
+ await issue_sample_prime.prime([body]);
1341
+ const reason = issue_not_before.waiting_reason(body);
1342
+ return reason === void 0 ? [] : [reason];
1343
+ }
1344
+ async function read(ctx) {
1345
+ const deferred = await lane_dispatch_dependency.deferred(ctx.child);
1346
+ if (deferred.length > 0) return deferred;
1347
+ return [...await open_blockers(ctx.child), ...await start_date_wait(ctx)];
1348
+ }
1349
+ var run_merge_waits = { read };
1350
+
1351
+ // scripts/run/merge/run-merge-steps.ts
1352
+ var OVER = "over";
1353
+ var LANES = "--lanes";
1354
+ var REPO_FLAG = "--repo";
1355
+ var CLOSE_CAUSE = "`run:merge` closed it";
1356
+ var STOPPED_CAUSE = "the unit stopped and `run:merge --stash` classified it";
1357
+ var SYNC_RETRY = { attempts: 3, interval_ms: 5e3 };
1358
+ var NO_WAITS = [];
1359
+ async function josh(args) {
1360
+ return await josh_command.josh_run(args);
1361
+ }
1362
+ async function read_record() {
1363
+ const directory = await run_carry.repository_directory();
1364
+ if (directory === void 0) return void 0;
1365
+ const target = run_carry.carry_path(directory);
1366
+ const read2 = run_carry.read_carry(target);
1367
+ if (read2.kind !== "carried") return void 0;
1368
+ return { target, carry: read2.carry };
1369
+ }
1370
+ async function apply_carry(ctx, change) {
1371
+ const record = await read_record();
1372
+ if (record === void 0) return { kind: "none" };
1373
+ if (run_carry.is_count_refused(record.carry, ctx.owner)) {
1374
+ return { kind: "refused", carry: record.carry };
1375
+ }
1376
+ if (change === void 0) return { kind: "applied", carry: record.carry };
1377
+ const owned = run_carry_conversation.reclaim_owner(record.carry, ctx.owner);
1378
+ return { kind: "applied", carry: run_carry.apply_change(record.target, owned, change) };
1379
+ }
1380
+ async function refused_carry(ctx) {
1381
+ const record = await read_record();
1382
+ if (record === void 0 || !run_carry.is_count_refused(record.carry, ctx.owner)) return void 0;
1383
+ return record.carry;
1384
+ }
1385
+ async function sync_main() {
1386
+ let error_output = "";
1387
+ const is_synced = await poll.poll_until(
1388
+ async () => {
1389
+ const result = await josh(["main:sync"]);
1390
+ error_output = result.err ?? "";
1391
+ return result.code === 0;
1392
+ },
1393
+ { ...SYNC_RETRY, sleeper: poll.sleep }
1394
+ );
1395
+ if (!is_synced) throw new Error(`main:sync failed: ${error_output}`);
1396
+ }
1397
+ async function close_lane(child) {
1398
+ const result = await josh(["lane:close", child]);
1399
+ const said = result.err?.trimEnd() ?? "";
1400
+ if (said !== "") console.error(said);
1401
+ if (result.code !== 0) console.error(`${session_cite.issue(child)}: lane:close is incomplete`);
1402
+ }
1403
+ async function close_preserved_lane(child) {
1404
+ if (await lane_preserve.preserve_lane(child, "lane close", CLOSE_CAUSE)) await close_lane(child);
1405
+ }
1406
+ function kept_lane_comment(directory) {
1407
+ return `The split left this issue's lane open: it still holds a commit, an uncommitted change or a live process \u2014 ${directory}`;
1408
+ }
1409
+ async function close_vacant_lane(child) {
1410
+ const lane = await lane_registry.find_open_lane(child);
1411
+ if (lane === void 0) return void 0;
1412
+ if (!await lane_vacant.is_vacant(lane)) return lane;
1413
+ await close_lane(child);
1414
+ return void 0;
1415
+ }
1416
+ async function close_split_lane(child) {
1417
+ const kept = await close_vacant_lane(child);
1418
+ if (kept !== void 0) {
1419
+ await git_gh_issue_write.issue_try_comment(child, kept_lane_comment(kept.directory));
1420
+ }
1421
+ }
1422
+ async function post_counters(ctx, carry) {
1423
+ if (carry === void 0 || ctx.epic === void 0) return;
1424
+ await git_gh_issue_write.issue_try_comment(ctx.epic, run_merge.counters_comment(carry));
1425
+ }
1426
+ async function count_merged(ctx) {
1427
+ return await apply_carry(ctx, {
1428
+ ...run_merge.change_of("merged"),
1429
+ merged_issue: Number(ctx.child)
1430
+ });
1431
+ }
1432
+ async function do_merged(ctx, record) {
1433
+ const refused = await refused_carry(ctx);
1434
+ if (refused !== void 0) return refused;
1435
+ const confirmed_at = /* @__PURE__ */ new Date();
1436
+ await settled_together(run_merge_close.close_merged(ctx), sync_main());
1437
+ const result = await count_merged(ctx);
1438
+ if (result.kind === "refused") return result.carry;
1439
+ await record(ctx.child, confirmed_at);
1440
+ const carry = result.kind === "applied" ? result.carry : void 0;
1441
+ await Promise.all([close_preserved_lane(ctx.child), post_counters(ctx, carry)]);
1442
+ return void 0;
1443
+ }
1444
+ async function release_child(child) {
1445
+ await lane_seat_stop.stop(child);
1446
+ await run_merge_cut_release.release(child);
1447
+ await run_label.unmark(child);
1448
+ await close_vacant_lane(child);
1449
+ }
1450
+ function refused_result(carry) {
1451
+ return { carry, is_parked: false, is_refused: true, waits: NO_WAITS };
1452
+ }
1453
+ async function do_waiting(ctx, waits) {
1454
+ const refused = await refused_carry(ctx);
1455
+ if (refused !== void 0) return refused_result(refused);
1456
+ await release_child(ctx.child);
1457
+ await git_gh_issue_write.issue_try_comment(ctx.child, run_merge.waiting_comment(waits));
1458
+ return { carry: void 0, is_parked: false, is_refused: false, waits };
1459
+ }
1460
+ async function park_failed(ctx, cause3) {
1461
+ const is_decision2 = run_merge_decision.is_decision(cause3.short);
1462
+ const result = await apply_carry(ctx, run_merge.change_of(is_decision2 ? "parked" : "failed"));
1463
+ if (result.kind === "refused") return refused_result(result.carry);
1464
+ const carry = result.kind === "applied" ? result.carry : void 0;
1465
+ await release_child(ctx.child);
1466
+ const reason = { child: ctx.child, cause: cause3.why, carry, output: ctx.output };
1467
+ const { label, comment } = run_merge_decision.park_options(cause3, reason);
1468
+ const park = await issue_park.apply(ctx.child, label, comment);
1469
+ return {
1470
+ carry,
1471
+ is_parked: park.is_labelled,
1472
+ is_refused: false,
1473
+ waits: NO_WAITS,
1474
+ cause: cause3.short
1475
+ };
1476
+ }
1477
+ async function do_failed(ctx, cause3) {
1478
+ const waits = await run_merge_waits.read(ctx);
1479
+ if (waits.length > 0) return await do_waiting(ctx, waits);
1480
+ return await park_failed(
1481
+ ctx,
1482
+ run_merge_cap.park_cause(ctx.child, cause3, ctx.capped_note, ctx.output)
1483
+ );
1484
+ }
1485
+ async function count_outage(ctx) {
1486
+ if (ctx.is_streak_exempt !== true) return await apply_carry(ctx, run_merge.change_of("outage"));
1487
+ const refused = await refused_carry(ctx);
1488
+ return refused === void 0 ? { kind: "none" } : { kind: "refused", carry: refused };
1489
+ }
1490
+ async function do_outage(ctx) {
1491
+ const result = await count_outage(ctx);
1492
+ if (result.kind === "refused") return { carry: result.carry, is_refused: true };
1493
+ await release_child(ctx.child);
1494
+ await run_merge_github_limit.hold(ctx.child, ctx.output);
1495
+ return { carry: result.kind === "applied" ? result.carry : void 0, is_refused: false };
1496
+ }
1497
+ async function relaunchable_lane(child) {
1498
+ const lane = await lane_registry.find_open_lane(child);
1499
+ return lane === void 0 || lane_relaunch.is_openai_lane(lane) ? void 0 : lane;
1500
+ }
1501
+ async function relaunchable_cut(child) {
1502
+ const lane = await relaunchable_lane(child);
1503
+ if (lane === void 0) return void 0;
1504
+ const carried = run_cut.lane_cut_sync(lane.directory);
1505
+ if (carried === void 0 || !run_cut.is_relaunchable(carried.cut, child)) return void 0;
1506
+ return { lane, ...carried };
1507
+ }
1508
+ async function has_resumable_cut(child) {
1509
+ return await relaunchable_cut(child) !== void 0;
1510
+ }
1511
+ async function stash_stopped(child) {
1512
+ if (await has_resumable_cut(child)) return;
1513
+ await lane_preserve.preserve_lane(child, "stopped unit", STOPPED_CAUSE);
1514
+ }
1515
+ async function resume_cut(child) {
1516
+ const found = await relaunchable_cut(child);
1517
+ if (found === void 0 || !run_cut.mark_merge_relaunched(found.target, found.cut)) return false;
1518
+ const result = await lane_relaunch.resume(found.lane, found.cut.phase, (note) => {
1519
+ console.error(note);
1520
+ });
1521
+ return result.kind === "launched";
1522
+ }
1523
+ async function is_over_budget(over) {
1524
+ if (over === void 0) return false;
1525
+ const result = await josh(["cost", "--cut"]);
1526
+ return result.code !== 0 || result.out === OVER;
1527
+ }
1528
+ async function ask_next(ctx) {
1529
+ if (ctx.epic === void 0 || ctx.repo === void 0) {
1530
+ const backlog = await josh(["backlog:next"]);
1531
+ return backlog.out;
1532
+ }
1533
+ const offer = await josh(["epic:next", ctx.epic, REPO_FLAG, ctx.repo, LANES]);
1534
+ return offer.out;
1535
+ }
1536
+ var run_merge_steps = {
1537
+ ask_next,
1538
+ close_split_lane,
1539
+ release_child,
1540
+ do_failed,
1541
+ do_merged,
1542
+ do_outage,
1543
+ has_resumable_cut,
1544
+ is_over_budget,
1545
+ read_record,
1546
+ refused_carry,
1547
+ resume_cut,
1548
+ stash_stopped
1549
+ };
1550
+
1551
+ // scripts/run/merge/run-merge-signals.ts
1552
+ function read_is_outage(output) {
1553
+ if (output === void 0) return false;
1554
+ if (api_outage.is_outage(run_ending.read_exit(output))) return true;
1555
+ return run_ending.ended_mid_turn(output) || run_merge_github_limit.read_stop(output) === "auth";
1556
+ }
1557
+ async function is_exempt_stop(child, output) {
1558
+ if (await run_merge_restart.is_host_restart(child, output)) return true;
1559
+ return run_merge_github_limit.read_stop(output) === "rate-limit";
1560
+ }
1561
+ function read_is_auth_failure(output) {
1562
+ if (output === void 0) return false;
1563
+ return api_auth.is_auth_failed_transcript(run_ending.read_transcript(output));
1564
+ }
1565
+ async function retry_cause(child, output) {
1566
+ if (await is_exempt_stop(child, output)) return "exempt";
1567
+ if (read_is_outage(output)) return "api";
1568
+ return await run_merge_ship.is_unanswered(child, output) ? "exempt" : void 0;
1569
+ }
1570
+ async function is_capped(child, cause3) {
1571
+ const events = await run_event_stream_emit.current_events();
1572
+ if (run_merge_cap.outages(events, child) < run_merge.CONSECUTIVE_OUTAGE_LIMIT) return false;
1573
+ if (cause3 !== "api") return true;
1574
+ const record = await run_merge_steps.read_record();
1575
+ return !run_merge.is_outage_guard_tripped(record?.carry.outages ?? 0);
1576
+ }
1577
+ async function read_retryable(child, output) {
1578
+ const cause3 = await retry_cause(child, output);
1579
+ if (cause3 === void 0) return { is_outage: false, is_streak_exempt: false };
1580
+ if (await is_capped(child, cause3)) {
1581
+ const events = await run_event_stream_emit.current_events();
1582
+ const limit = run_merge.CONSECUTIVE_OUTAGE_LIMIT;
1583
+ return { is_outage: false, capped_note: run_merge_cap.note_of(events, child, limit) };
1584
+ }
1585
+ return { is_outage: true, is_streak_exempt: cause3 === "exempt" };
1586
+ }
1587
+ async function read_merged_pr(child, read2) {
1588
+ if (read2.kind !== "state" || run_merge.classify_child(read2.state) !== "failed") return void 0;
1589
+ return await issue_closing_pr.read_closing_pr(child);
1590
+ }
1591
+ async function read_is_withdrawn(child, read2) {
1592
+ if (read2.kind !== "state" || run_merge.classify_child(read2.state) !== "merged") {
1593
+ return run_event_scope.is_withdrawn(await run_event_stream_emit.current_events(), child);
1594
+ }
1595
+ const is_merged = await issue_merged.read_merge_state(child);
1596
+ return is_merged === void 0 ? void 0 : !is_merged;
1597
+ }
1598
+ async function read_is_yielded(child) {
1599
+ return lane_yield.is_yielded(await run_event_stream_emit.current_events(), child);
1600
+ }
1601
+ function read_resume_ms(output) {
1602
+ if (output === void 0) return void 0;
1603
+ const transcript = run_ending.read_transcript(output);
1604
+ return api_usage_limit.transcript_resume_ms(transcript, Date.now(), run_ending.written_at(output));
1605
+ }
1606
+ async function read_signals(ctx, read2) {
1607
+ const [is_cut, merged_pr, retryable, is_withdrawn, is_yielded] = await Promise.all([
1608
+ run_merge_steps.has_resumable_cut(ctx.child),
1609
+ read_merged_pr(ctx.child, read2),
1610
+ read_retryable(ctx.child, ctx.output),
1611
+ read_is_withdrawn(ctx.child, read2),
1612
+ read_is_yielded(ctx.child)
1613
+ ]);
1614
+ const is_auth_failure = read_is_auth_failure(ctx.output);
1615
+ const resume_ms2 = read_resume_ms(ctx.output);
1616
+ return { ...retryable, is_cut, merged_pr, is_withdrawn, is_yielded, is_auth_failure, resume_ms: resume_ms2 };
1617
+ }
1618
+ function outcome_of(read2, signals) {
1619
+ if (signals.is_withdrawn === void 0) return "unresolved";
1620
+ return run_merge.classify_child(read2.kind === "state" ? read2.state : void 0, signals);
1621
+ }
1622
+ var run_merge_signals = { outcome_of, read_merged_pr, read_signals };
1623
+
1624
+ // scripts/run/merge/run-merge-withdrawn.ts
1625
+ var UNMERGED_REASON = "its issue was closed without a merged pull request";
1626
+ var NOTHING_LEFT = { note: void 0, is_retry: false };
1627
+ async function collect(child) {
1628
+ const events = await run_event_stream_emit.current_events();
1629
+ if (run_event_scope.is_withdrawn(events, child)) return NOTHING_LEFT;
1630
+ const lane = await lane_registry.find_open_lane(child);
1631
+ return lane === void 0 ? NOTHING_LEFT : await lane_withdraw_closed.withdraw_lane(lane, UNMERGED_REASON, "merge");
1632
+ }
1633
+ async function collect_yield(child) {
1634
+ const lane = await lane_registry.find_open_lane(child);
1635
+ if (lane === void 0) return NOTHING_LEFT;
1636
+ const reason = lane_yield.withdraw_reason(await run_event_stream_emit.current_events(), child);
1637
+ return await lane_withdraw_closed.withdraw_lane(lane, reason, "yield");
1638
+ }
1639
+ var run_merge_withdrawn = { UNMERGED_REASON, collect, collect_yield };
1640
+
1641
+ // scripts/run/merge/run-merge-cli.ts
1642
+ var SUCCESS_EXIT_CODE = 0;
1643
+ var FAILURE_EXIT_CODE = 1;
1644
+ var FIRST = 0;
1645
+ var MIN_PID = 1;
1646
+ var { MERGE_TOKEN } = run_merge_token;
1647
+ var PARK_FAILURE_NOTE = `The failed child could not be parked with ${RUN_STALLED_LABEL}; stopping.`;
1648
+ var REPO_PATTERN = /^[A-Za-z0-9][\w.-]*\/[A-Za-z0-9][\w.-]*$/u;
1649
+ var USAGE = "Usage: josh run:merge <issue> [--over <deprecated>] [--epic <E> --repo <owner/repo>] [--owner <pid>] [--output <path>] [--driver] [--stash]";
1650
+ var OPTIONS = {
1651
+ driver: { type: "boolean" },
1652
+ stash: { type: "boolean" },
1653
+ epic: { type: "string" },
1654
+ output: { type: "string" },
1655
+ over: { type: "string" },
1656
+ owner: { type: "string" },
1657
+ repo: { type: "string" }
1658
+ };
1659
+ function to_owner(raw) {
1660
+ if (raw === void 0) return run_carry.session_owner();
1661
+ const pid = cli_flags.to_count(raw);
1662
+ return pid === void 0 || pid < MIN_PID ? void 0 : run_carry.owner_of(pid);
1663
+ }
1664
+ function is_epic_without_repo(values) {
1665
+ return values.epic !== void 0 && values.repo === void 0;
1666
+ }
1667
+ function valid_epic(raw) {
1668
+ if (raw === void 0) return void 0;
1669
+ return issue_number_shape.ISSUE_NUMBER_PATTERN.test(raw) ? raw : void 0;
1670
+ }
1671
+ function valid_repo(raw) {
1672
+ if (raw === void 0) return void 0;
1673
+ return REPO_PATTERN.test(raw) ? raw : void 0;
1674
+ }
1675
+ function is_rejected(raw, valid) {
1676
+ return raw !== void 0 && valid === void 0;
1677
+ }
1678
+ function has_invalid_offer(values) {
1679
+ return is_epic_without_repo(values) || is_rejected(values.epic, valid_epic(values.epic)) || is_rejected(values.repo, valid_repo(values.repo));
1680
+ }
1681
+ function has_invalid_legacy_over(raw) {
1682
+ if (raw === void 0) return false;
1683
+ return cli_flags.to_count(raw) === void 0;
1684
+ }
1685
+ function valid_child(parsed) {
1686
+ const child = parsed.positionals[FIRST];
1687
+ if (child === void 0) return void 0;
1688
+ return issue_number_shape.ISSUE_NUMBER_PATTERN.test(child) ? child : void 0;
1689
+ }
1690
+ function cut_check_of(values) {
1691
+ return values.driver === true ? void 0 : true;
1692
+ }
1693
+ function to_context(parsed) {
1694
+ if (has_invalid_offer(parsed.values) || has_invalid_legacy_over(parsed.values.over)) {
1695
+ return void 0;
1696
+ }
1697
+ const child = valid_child(parsed);
1698
+ if (child === void 0) return void 0;
1699
+ const owner = to_owner(parsed.values.owner);
1700
+ if (owner === void 0) return void 0;
1701
+ return {
1702
+ child,
1703
+ epic: valid_epic(parsed.values.epic),
1704
+ repo: valid_repo(parsed.values.repo),
1705
+ over: cut_check_of(parsed.values),
1706
+ owner,
1707
+ output: parsed.values.output,
1708
+ stash: parsed.values.stash
1709
+ };
1710
+ }
1711
+ function parse2(argv) {
1712
+ const parsed = cli_flags.arguments_of(argv, OPTIONS);
1713
+ return parsed === void 0 ? void 0 : to_context(parsed);
1714
+ }
1715
+ function emit(token, code) {
1716
+ return { token, code, is_offer: false };
1717
+ }
1718
+ async function offered(ctx) {
1719
+ const token = ctx.over === void 0 ? run_merge_driver.DEFERRED_OFFER : await run_merge_steps.ask_next(ctx);
1720
+ return { token, code: SUCCESS_EXIT_CODE, is_offer: true };
1721
+ }
1722
+ function report_count_refused(carry) {
1723
+ if (carry !== void 0) console.error(run_carry.count_refused_message(carry));
1724
+ return emit(MERGE_TOKEN.BUSY, FAILURE_EXIT_CODE);
1725
+ }
1726
+ async function record_merged(ctx) {
1727
+ return await run_merge_steps.do_merged(ctx, run_merge_dated.put_on_record);
1728
+ }
1729
+ async function on_merged(ctx) {
1730
+ const refused = await record_merged(ctx);
1731
+ if (refused !== void 0) return report_count_refused(refused);
1732
+ await lane_overrun.investigate(Number(ctx.child));
1733
+ await lane_baseline.investigate(Number(ctx.child));
1734
+ if (await run_merge_steps.is_over_budget(ctx.over)) {
1735
+ return emit(MERGE_TOKEN.OVER, SUCCESS_EXIT_CODE);
1736
+ }
1737
+ return await offered(ctx);
1738
+ }
1739
+ async function on_waiting(ctx, waits) {
1740
+ await run_event_stream_emit.emit(
1741
+ run_event_stream.EVENT_KIND.PARK,
1742
+ `${issue_cite.plain_for("program", ctx.child)} waiting on ${waits.join(", ")}`
1743
+ );
1744
+ return await offered(ctx);
1745
+ }
1746
+ async function on_parked_failure(ctx, result) {
1747
+ if (!result.is_parked) {
1748
+ console.error(PARK_FAILURE_NOTE);
1749
+ return emit(MERGE_TOKEN.STOP, FAILURE_EXIT_CODE);
1750
+ }
1751
+ const cause3 = result.cause ?? run_merge_decision.cause(ctx.output).short;
1752
+ const park = run_merge_decision.park_event(ctx.child, cause3);
1753
+ await run_event_stream_emit.emit(run_event_stream.EVENT_KIND.PARK, park);
1754
+ if (run_merge_decision.is_guard_tripped(cause3, result.carry)) {
1755
+ await run_merge_health.check(ctx.child);
1756
+ }
1757
+ return { ...await offered(ctx), is_parked: true };
1758
+ }
1759
+ async function on_failed(ctx, cause3) {
1760
+ const result = await run_merge_steps.do_failed(ctx, cause3);
1761
+ if (result.is_refused) return report_count_refused(result.carry);
1762
+ if (result.waits.length > 0) return await on_waiting(ctx, result.waits);
1763
+ return await on_parked_failure(ctx, result);
1764
+ }
1765
+ async function on_outage(ctx) {
1766
+ const result = await run_merge_steps.do_outage(ctx);
1767
+ if (result.is_refused) return report_count_refused(result.carry);
1768
+ await run_event_stream_emit.emit(
1769
+ run_event_stream.EVENT_KIND.OUTAGE,
1770
+ `${issue_cite.plain_for("program", ctx.child)} outage (re-dispatchable)`
1771
+ );
1772
+ const outages2 = result.carry?.outages ?? 0;
1773
+ if (run_merge.is_outage_guard_tripped(outages2)) {
1774
+ await run_merge_usage_limit.record(
1775
+ ctx.child,
1776
+ Date.now() + run_merge.outage_wait_ms(outages2),
1777
+ "api outage"
1778
+ );
1779
+ }
1780
+ return await offered(ctx);
1781
+ }
1782
+ async function on_unauthenticated(ctx) {
1783
+ await run_merge_steps.release_child(ctx.child);
1784
+ await run_merge_auth.hold(ctx.child, Date.now());
1785
+ return await offered(ctx);
1786
+ }
1787
+ async function on_usage_limit(ctx) {
1788
+ await run_merge_steps.release_child(ctx.child);
1789
+ await run_merge_usage_limit.record(ctx.child, ctx.resume_ms ?? Date.now());
1790
+ return await offered(ctx);
1791
+ }
1792
+ async function on_cut(ctx) {
1793
+ const refused = await run_merge_steps.refused_carry(ctx);
1794
+ if (refused !== void 0) return report_count_refused(refused);
1795
+ if (!await run_merge_steps.resume_cut(ctx.child)) {
1796
+ return await on_failed(ctx, run_stalled.CUT_NOT_RELAUNCHED);
1797
+ }
1798
+ await run_event_stream_emit.emit(
1799
+ run_event_stream.EVENT_KIND.CHILD_LAUNCH,
1800
+ `${issue_cite.plain_for("program", ctx.child)} resumed from its cut`
1801
+ );
1802
+ return emit(MERGE_TOKEN.RESUMED, SUCCESS_EXIT_CODE);
1803
+ }
1804
+ async function on_parked(ctx) {
1805
+ await run_merge_steps.release_child(ctx.child);
1806
+ await run_event_stream_emit.emit(
1807
+ run_event_stream.EVENT_KIND.PARK,
1808
+ `${issue_cite.plain_for("program", ctx.child)} parked`
1809
+ );
1810
+ return await offered(ctx);
1811
+ }
1812
+ async function on_skipped(ctx) {
1813
+ await run_merge_steps.close_split_lane(ctx.child);
1814
+ await run_event_stream_emit.emit(
1815
+ run_event_stream.EVENT_KIND.SPLIT,
1816
+ `${issue_cite.plain_for("program", ctx.child)} split`
1817
+ );
1818
+ return await offered(ctx);
1819
+ }
1820
+ async function on_collected(ctx, collected) {
1821
+ if (collected.note !== void 0) console.error(collected.note);
1822
+ if (collected.is_retry) return emit(MERGE_TOKEN.RETRY, FAILURE_EXIT_CODE);
1823
+ return await offered(ctx);
1824
+ }
1825
+ async function on_withdrawn(ctx) {
1826
+ return await on_collected(ctx, await run_merge_withdrawn.collect(ctx.child));
1827
+ }
1828
+ async function on_yielded(ctx) {
1829
+ return await on_collected(ctx, await run_merge_withdrawn.collect_yield(ctx.child));
1830
+ }
1831
+ async function on_human_review(ctx) {
1832
+ if (!await run_merge_human_review.retain(ctx.child)) {
1833
+ return emit(MERGE_TOKEN.RETRY, FAILURE_EXIT_CODE);
1834
+ }
1835
+ return await offered(ctx);
1836
+ }
1837
+ async function on_unresolved() {
1838
+ return emit(MERGE_TOKEN.RETRY, FAILURE_EXIT_CODE);
1839
+ }
1840
+ async function on_shipping() {
1841
+ return emit(MERGE_TOKEN.RESUMED, SUCCESS_EXIT_CODE);
1842
+ }
1843
+ var HANDLERS = {
1844
+ cut: on_cut,
1845
+ failed: on_failed,
1846
+ "human-review": on_human_review,
1847
+ merged: on_merged,
1848
+ outage: on_outage,
1849
+ unauthenticated: on_unauthenticated,
1850
+ "usage-limit": on_usage_limit,
1851
+ parked: on_parked,
1852
+ split: on_skipped,
1853
+ unresolved: on_unresolved,
1854
+ shipping: on_shipping,
1855
+ withdrawn: on_withdrawn,
1856
+ yielded: on_yielded
1857
+ };
1858
+ async function merge_child(ctx) {
1859
+ if (lane_handoff.is_ship_running(ctx.child, process.cwd())) {
1860
+ return { outcome: "shipping", ...await on_shipping() };
1861
+ }
1862
+ if (ctx.stash === true) await run_merge_steps.stash_stopped(ctx.child);
1863
+ const read2 = await issue_state_cli.read_issue(ctx.child, ctx.repo);
1864
+ const signals = await run_merge_signals.read_signals(ctx, read2);
1865
+ const outcome = run_merge_signals.outcome_of(read2, signals);
1866
+ const { merged_pr, is_streak_exempt, capped_note, resume_ms: resume_ms2 } = signals;
1867
+ const handled = { ...ctx, merged_pr, is_streak_exempt, capped_note, resume_ms: resume_ms2 };
1868
+ return { outcome, ...await HANDLERS[outcome](handled) };
1869
+ }
1870
+ async function run(argv) {
1871
+ const ctx = parse2(argv);
1872
+ if (ctx === void 0) {
1873
+ console.error(USAGE);
1874
+ return FAILURE_EXIT_CODE;
1875
+ }
1876
+ const result = await merge_child(ctx);
1877
+ console.info(run_merge_driver.printed(argv, result));
1878
+ return result.code;
1879
+ }
1880
+ var run_merge_cli = {
1881
+ merge_child,
1882
+ parse: parse2,
1883
+ read_merged_pr: run_merge_signals.read_merged_pr,
1884
+ record_merged,
1885
+ run
1886
+ };
1887
+
1888
+ export {
1889
+ run_merge,
1890
+ run_merge_cli
1891
+ };