@joshuafolkken/kit 1.3041.0 → 1.3092.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 (1243) hide show
  1. package/.claude/skills/workflow-commands/backlogrun-steps.md +1 -1
  2. package/.claude/skills/workflow-commands/fullrun-steps.md +3 -3
  3. package/.claude/skills/workflow-commands/halfrun.md +3 -2
  4. package/.claude/skills/workflow-commands/kickoff.md +9 -2
  5. package/.claude/skills/workflow-commands/prerequisite.md +2 -0
  6. package/.claude/skills/workflow-commands/progress-watcher.md +10 -8
  7. package/.claude/skills/workflow-commands/retrospective.md +2 -1
  8. package/.claude/skills/workflow-commands/split-assessment.md +4 -0
  9. package/.github/workflows/ci.yml +0 -20
  10. package/.github/workflows/pr-classification.yml +0 -5
  11. package/.github/workflows/publish.yml +0 -1
  12. package/.github/workflows/sonar-qube.yml +0 -5
  13. package/README.md +2 -0
  14. package/SECURITY.md +2 -1
  15. package/dist/.inputs-verified.json +1 -1
  16. package/dist/commands/adopt.js +29 -20
  17. package/dist/commands/auto-ok-judge-cli.js +43 -33
  18. package/dist/commands/auto-ok-main.js +73 -74
  19. package/dist/commands/backlog-budget-main.js +5 -6
  20. package/dist/commands/backlog-drive-cli.js +286 -305
  21. package/dist/commands/backlog-next-main.js +111 -108
  22. package/dist/commands/backlog-offer-main.js +148 -112
  23. package/dist/commands/backlog-plan-cli.js +123 -120
  24. package/dist/commands/backlog-triage-cli.js +131 -128
  25. package/dist/commands/backlogrun-cli.js +273 -264
  26. package/dist/commands/behavior-cli.js +23 -26
  27. package/dist/commands/bytes-command.js +56 -59
  28. package/dist/commands/cases-cli.js +4 -5
  29. package/dist/commands/check-commit-message-main.js +3 -4
  30. package/dist/commands/check-related.js +125 -119
  31. package/dist/commands/chunk-26JL4UU4.js +365 -0
  32. package/dist/commands/chunk-2BIVHPCA.js +85 -0
  33. package/dist/commands/chunk-2CKJODCK.js +245 -0
  34. package/dist/commands/chunk-2E6PSONB.js +46 -0
  35. package/dist/commands/chunk-2GA4775H.js +77 -0
  36. package/dist/commands/chunk-2O64H5UJ.js +462 -0
  37. package/dist/commands/chunk-2OEXY4GM.js +252 -0
  38. package/dist/commands/chunk-2OMIHPPE.js +51 -0
  39. package/dist/commands/chunk-2ONSHOAY.js +46 -0
  40. package/dist/commands/chunk-2Q7MGFYB.js +1208 -0
  41. package/dist/commands/chunk-2SA3W4JF.js +41 -0
  42. package/dist/commands/chunk-2VY7CJ2R.js +212 -0
  43. package/dist/commands/chunk-2WRDAQPJ.js +74 -0
  44. package/dist/commands/chunk-2XLR7R6E.js +541 -0
  45. package/dist/commands/chunk-2XZF3YFY.js +47 -0
  46. package/dist/commands/chunk-33TAOZUE.js +29 -0
  47. package/dist/commands/chunk-374XGAWD.js +158 -0
  48. package/dist/commands/chunk-3CJNQU7P.js +179 -0
  49. package/dist/commands/chunk-3D5T6KMW.js +59 -0
  50. package/dist/commands/chunk-3EW5LTN3.js +114 -0
  51. package/dist/commands/chunk-3F3RNIG2.js +128 -0
  52. package/dist/commands/chunk-3FLTEJZY.js +74 -0
  53. package/dist/commands/chunk-3JWPTRNI.js +60 -0
  54. package/dist/commands/chunk-3MQTOUXT.js +94 -0
  55. package/dist/commands/chunk-3PCUERXE.js +19 -0
  56. package/dist/commands/chunk-3U6A5WON.js +173 -0
  57. package/dist/commands/chunk-3YT3RCSI.js +140 -0
  58. package/dist/commands/chunk-43DU7DYZ.js +540 -0
  59. package/dist/commands/chunk-43H725LG.js +132 -0
  60. package/dist/commands/chunk-46STCE6Q.js +48 -0
  61. package/dist/commands/chunk-46WEC6HZ.js +82 -0
  62. package/dist/commands/chunk-47J4KOZP.js +46 -0
  63. package/dist/commands/chunk-47W7PF4T.js +22 -0
  64. package/dist/commands/chunk-4F4KARQN.js +229 -0
  65. package/dist/commands/chunk-4GUGC4IW.js +338 -0
  66. package/dist/commands/chunk-4HB7NWXP.js +263 -0
  67. package/dist/commands/chunk-4HOTJAO6.js +89 -0
  68. package/dist/commands/chunk-4I5AA4P5.js +237 -0
  69. package/dist/commands/chunk-4IDINPBE.js +525 -0
  70. package/dist/commands/chunk-4K7KLR7L.js +69 -0
  71. package/dist/commands/chunk-4MGTNY2L.js +347 -0
  72. package/dist/commands/chunk-4NSIW3UB.js +104 -0
  73. package/dist/commands/chunk-4YTKV6WV.js +37 -0
  74. package/dist/commands/chunk-5ARNFMQK.js +1263 -0
  75. package/dist/commands/chunk-5AZTSESD.js +114 -0
  76. package/dist/commands/chunk-5FUI2MLY.js +89 -0
  77. package/dist/commands/chunk-5GI5GLC4.js +214 -0
  78. package/dist/commands/chunk-5IHEBIPD.js +333 -0
  79. package/dist/commands/chunk-5KAW5GPF.js +44 -0
  80. package/dist/commands/chunk-5KSJEWXR.js +77 -0
  81. package/dist/commands/chunk-5OF2B4BF.js +35 -0
  82. package/dist/commands/chunk-5PLJ7R3D.js +126 -0
  83. package/dist/commands/chunk-5PPWXOCF.js +64 -0
  84. package/dist/commands/chunk-5VQCL33M.js +46 -0
  85. package/dist/commands/chunk-5Y7FOJLX.js +186 -0
  86. package/dist/commands/chunk-5YTEMF4O.js +110 -0
  87. package/dist/commands/chunk-62NYXZCC.js +241 -0
  88. package/dist/commands/chunk-6KUA7MRG.js +64 -0
  89. package/dist/commands/chunk-6LDEZFYR.js +88 -0
  90. package/dist/commands/chunk-6NXIZMIK.js +122 -0
  91. package/dist/commands/chunk-6O45F6YI.js +86 -0
  92. package/dist/commands/chunk-6OHJBQDE.js +184 -0
  93. package/dist/commands/chunk-6WDCCG3M.js +1249 -0
  94. package/dist/commands/chunk-6ZHXEQAI.js +715 -0
  95. package/dist/commands/chunk-736NECRD.js +16 -0
  96. package/dist/commands/chunk-77LEKVEE.js +32 -0
  97. package/dist/commands/chunk-7CX5VYOL.js +50 -0
  98. package/dist/commands/chunk-7DGHFBU7.js +247 -0
  99. package/dist/commands/chunk-7E43YW53.js +128 -0
  100. package/dist/commands/chunk-7EAYFMDN.js +235 -0
  101. package/dist/commands/chunk-7HP3FQGQ.js +51 -0
  102. package/dist/commands/chunk-7JOOMFDI.js +155 -0
  103. package/dist/commands/chunk-7OEBSPPU.js +321 -0
  104. package/dist/commands/chunk-A3JYZWBS.js +803 -0
  105. package/dist/commands/chunk-A3LCN4KA.js +84 -0
  106. package/dist/commands/chunk-ABLXBG6C.js +98 -0
  107. package/dist/commands/chunk-AN7BFVHU.js +244 -0
  108. package/dist/commands/chunk-AQCVEQSM.js +99 -0
  109. package/dist/commands/chunk-AT46EY7H.js +393 -0
  110. package/dist/commands/chunk-AU563VKH.js +75 -0
  111. package/dist/commands/chunk-AUTD5FV2.js +1077 -0
  112. package/dist/commands/chunk-AV26CMY6.js +304 -0
  113. package/dist/commands/chunk-B2PJEV3S.js +246 -0
  114. package/dist/commands/chunk-B545ENGY.js +214 -0
  115. package/dist/commands/chunk-B5HP6T4L.js +170 -0
  116. package/dist/commands/chunk-B5XYAWNN.js +37 -0
  117. package/dist/commands/chunk-B73IIRMS.js +207 -0
  118. package/dist/commands/chunk-BAEDHPXW.js +160 -0
  119. package/dist/commands/chunk-BDSG6JKH.js +977 -0
  120. package/dist/commands/chunk-BE6F4YK2.js +769 -0
  121. package/dist/commands/chunk-BFKTUD3V.js +33 -0
  122. package/dist/commands/chunk-BLRXHK2V.js +17 -0
  123. package/dist/commands/chunk-BLUAO4QW.js +173 -0
  124. package/dist/commands/chunk-BML6MEUB.js +326 -0
  125. package/dist/commands/chunk-BPDNGJXY.js +63 -0
  126. package/dist/commands/chunk-BQLKWGGC.js +118 -0
  127. package/dist/commands/chunk-BRMJVCP7.js +167 -0
  128. package/dist/commands/chunk-BRWR5YKU.js +268 -0
  129. package/dist/commands/chunk-BUZAYEBD.js +319 -0
  130. package/dist/commands/chunk-BVUL57IX.js +139 -0
  131. package/dist/commands/chunk-CC4BIGCA.js +20 -0
  132. package/dist/commands/chunk-CCHJZEF5.js +4220 -0
  133. package/dist/commands/chunk-CDK7QZWG.js +44 -0
  134. package/dist/commands/chunk-CDYFUCDC.js +72 -0
  135. package/dist/commands/chunk-CEADAQIL.js +170 -0
  136. package/dist/commands/chunk-CNL3SLM6.js +116 -0
  137. package/dist/commands/chunk-CNQ7D2GZ.js +104 -0
  138. package/dist/commands/chunk-CTXJVMHW.js +48 -0
  139. package/dist/commands/chunk-CUWT6UQO.js +13 -0
  140. package/dist/commands/chunk-CVRDJCOE.js +125 -0
  141. package/dist/commands/chunk-D6CF5QGM.js +80 -0
  142. package/dist/commands/chunk-DACNQAXC.js +20 -0
  143. package/dist/commands/chunk-DDOS32JU.js +74 -0
  144. package/dist/commands/chunk-DDZVMXZD.js +481 -0
  145. package/dist/commands/chunk-DF6QD4AF.js +52 -0
  146. package/dist/commands/chunk-DFEXNB44.js +159 -0
  147. package/dist/commands/chunk-DHDKG5HZ.js +151 -0
  148. package/dist/commands/chunk-DHJRFBKO.js +223 -0
  149. package/dist/commands/chunk-DKDWOE3C.js +78 -0
  150. package/dist/commands/chunk-DKO5VTEH.js +65 -0
  151. package/dist/commands/chunk-DLHH3MLS.js +85 -0
  152. package/dist/commands/chunk-DOYNK72G.js +81 -0
  153. package/dist/commands/chunk-DS53UUDH.js +679 -0
  154. package/dist/commands/chunk-DUA4E4ES.js +230 -0
  155. package/dist/commands/chunk-DURHGVRC.js +33 -0
  156. package/dist/commands/chunk-DVCMQMRN.js +191 -0
  157. package/dist/commands/chunk-E3YKMCCJ.js +108 -0
  158. package/dist/commands/chunk-E4F2RTKC.js +272 -0
  159. package/dist/commands/chunk-E4PFCTXN.js +127 -0
  160. package/dist/commands/chunk-EAOTR2WL.js +24 -0
  161. package/dist/commands/chunk-EE4VOZJP.js +167 -0
  162. package/dist/commands/chunk-EHVEWJQ4.js +33 -0
  163. package/dist/commands/chunk-EMFSPPMH.js +98 -0
  164. package/dist/commands/chunk-EN65ZS3S.js +73 -0
  165. package/dist/commands/chunk-ES42XPAD.js +123 -0
  166. package/dist/commands/chunk-ESUY7KTZ.js +137 -0
  167. package/dist/commands/chunk-ET6IRQ3L.js +330 -0
  168. package/dist/commands/chunk-EWCUT7U2.js +1314 -0
  169. package/dist/commands/chunk-EWXXEGXL.js +149 -0
  170. package/dist/commands/chunk-EZYW54OQ.js +7569 -0
  171. package/dist/commands/chunk-F2RDEF2J.js +205 -0
  172. package/dist/commands/chunk-F2U46HAE.js +52 -0
  173. package/dist/commands/chunk-F2VYWU6Z.js +653 -0
  174. package/dist/commands/chunk-F4SGOTUF.js +36 -0
  175. package/dist/commands/chunk-F4YMLVWN.js +183 -0
  176. package/dist/commands/chunk-F5N2QIFD.js +213 -0
  177. package/dist/commands/chunk-F7B4ESZE.js +80 -0
  178. package/dist/commands/chunk-FJM2HWKW.js +299 -0
  179. package/dist/commands/chunk-FJMXUDEY.js +3985 -0
  180. package/dist/commands/chunk-FM7VVAK6.js +426 -0
  181. package/dist/commands/chunk-FQWRM5FC.js +67 -0
  182. package/dist/commands/chunk-FT33ZCSB.js +298 -0
  183. package/dist/commands/chunk-G2DNS74C.js +53 -0
  184. package/dist/commands/chunk-G75GWNNY.js +101 -0
  185. package/dist/commands/chunk-GA2YSPFH.js +32 -0
  186. package/dist/commands/chunk-GAVSK6P6.js +230 -0
  187. package/dist/commands/chunk-GB2BRQVL.js +300 -0
  188. package/dist/commands/chunk-GBMZXFFC.js +44 -0
  189. package/dist/commands/chunk-GDP7QXYE.js +76 -0
  190. package/dist/commands/chunk-GGWXF7RJ.js +70 -0
  191. package/dist/commands/chunk-GHOTKHI4.js +30 -0
  192. package/dist/commands/chunk-GMVN6ZP2.js +48 -0
  193. package/dist/commands/chunk-GNTTGRCX.js +133 -0
  194. package/dist/commands/chunk-GOY5JECO.js +130 -0
  195. package/dist/commands/chunk-GVDRRBHZ.js +507 -0
  196. package/dist/commands/chunk-GWTBIGYC.js +550 -0
  197. package/dist/commands/chunk-GZL6ISVM.js +72 -0
  198. package/dist/commands/chunk-HALHQILI.js +51 -0
  199. package/dist/commands/chunk-HAT7AFBF.js +85 -0
  200. package/dist/commands/chunk-HDVSZ6CZ.js +292 -0
  201. package/dist/commands/chunk-HE3GOMR7.js +88 -0
  202. package/dist/commands/chunk-HEFUC4ZW.js +65 -0
  203. package/dist/commands/chunk-HESWKELD.js +60 -0
  204. package/dist/commands/chunk-HNFBEB4L.js +77 -0
  205. package/dist/commands/chunk-HRN73FQJ.js +77 -0
  206. package/dist/commands/chunk-HYE3MBAN.js +113 -0
  207. package/dist/commands/chunk-IAB6LCJL.js +18 -0
  208. package/dist/commands/chunk-IAGENI2U.js +42 -0
  209. package/dist/commands/chunk-ICPVBHIX.js +48 -0
  210. package/dist/commands/chunk-IEKW3ON6.js +161 -0
  211. package/dist/commands/chunk-IOKOHB7P.js +109 -0
  212. package/dist/commands/chunk-IONGJJYM.js +179 -0
  213. package/dist/commands/chunk-IP23WOWP.js +126 -0
  214. package/dist/commands/chunk-IPS7EBE5.js +140 -0
  215. package/dist/commands/chunk-IXZZSST7.js +459 -0
  216. package/dist/commands/chunk-J4XHEOOW.js +156 -0
  217. package/dist/commands/chunk-JDHLHYJJ.js +208 -0
  218. package/dist/commands/chunk-JEYITIWB.js +423 -0
  219. package/dist/commands/chunk-JGX7JIW4.js +126 -0
  220. package/dist/commands/chunk-JHIGDFBS.js +59 -0
  221. package/dist/commands/chunk-JI2EGXZX.js +53 -0
  222. package/dist/commands/chunk-JNV3VRK2.js +47 -0
  223. package/dist/commands/chunk-JPMAW2VZ.js +91 -0
  224. package/dist/commands/chunk-JQEY6KDP.js +90 -0
  225. package/dist/commands/chunk-JSJDIEGZ.js +88 -0
  226. package/dist/commands/chunk-JT5ICRFF.js +44 -0
  227. package/dist/commands/chunk-JUCJ4Y42.js +77 -0
  228. package/dist/commands/chunk-K3OZBV3L.js +49 -0
  229. package/dist/commands/chunk-K5H3CLZZ.js +430 -0
  230. package/dist/commands/chunk-K6P5PISC.js +114 -0
  231. package/dist/commands/chunk-KD3SEAMV.js +402 -0
  232. package/dist/commands/chunk-KDCHY7XO.js +88 -0
  233. package/dist/commands/chunk-KDGX3JTV.js +51 -0
  234. package/dist/commands/chunk-KGSEWOKI.js +353 -0
  235. package/dist/commands/chunk-KHGDZQRG.js +271 -0
  236. package/dist/commands/chunk-KIS7JFNP.js +217 -0
  237. package/dist/commands/chunk-KKHD3C2P.js +114 -0
  238. package/dist/commands/chunk-KKIIY5I5.js +67 -0
  239. package/dist/commands/chunk-KN46UC77.js +114 -0
  240. package/dist/commands/chunk-KP2BVAS5.js +125 -0
  241. package/dist/commands/chunk-KPAJBJXG.js +63 -0
  242. package/dist/commands/chunk-KPMAJP6D.js +145 -0
  243. package/dist/commands/chunk-KR6WUAJM.js +122 -0
  244. package/dist/commands/chunk-KWLNK2NJ.js +391 -0
  245. package/dist/commands/chunk-L2CLCNXW.js +144 -0
  246. package/dist/commands/chunk-L7MDU6D7.js +155 -0
  247. package/dist/commands/chunk-L7VD4MLF.js +78 -0
  248. package/dist/commands/chunk-LBMAJDGN.js +124 -0
  249. package/dist/commands/chunk-LBVYFW3I.js +38 -0
  250. package/dist/commands/chunk-LE3M42CF.js +350 -0
  251. package/dist/commands/chunk-LIPUSINQ.js +140 -0
  252. package/dist/commands/chunk-LJVZWE3A.js +1885 -0
  253. package/dist/commands/chunk-LKSSQVDA.js +49 -0
  254. package/dist/commands/chunk-LL6G34MF.js +93 -0
  255. package/dist/commands/chunk-LNQOL2CL.js +321 -0
  256. package/dist/commands/chunk-LS7P324N.js +72 -0
  257. package/dist/commands/chunk-LU5EOGFQ.js +50 -0
  258. package/dist/commands/chunk-LX2ENXHZ.js +197 -0
  259. package/dist/commands/chunk-M32UPB2D.js +110 -0
  260. package/dist/commands/chunk-M3UGRNNB.js +103 -0
  261. package/dist/commands/chunk-M4WG74Q7.js +260 -0
  262. package/dist/commands/chunk-M5HA2ZCG.js +105 -0
  263. package/dist/commands/chunk-MDGPJOLK.js +351 -0
  264. package/dist/commands/chunk-MDKRTUE4.js +288 -0
  265. package/dist/commands/chunk-MFZVRWRS.js +34 -0
  266. package/dist/commands/chunk-MHXIJKGP.js +304 -0
  267. package/dist/commands/chunk-MK4CARBI.js +90 -0
  268. package/dist/commands/chunk-MLJDW7YN.js +64 -0
  269. package/dist/commands/chunk-MNLHYAJO.js +80 -0
  270. package/dist/commands/chunk-MOD3FG4V.js +419 -0
  271. package/dist/commands/chunk-MRAEJLXL.js +83 -0
  272. package/dist/commands/chunk-MRW2WYJS.js +68 -0
  273. package/dist/commands/chunk-MXPCEZL5.js +23 -0
  274. package/dist/commands/chunk-N2XH7QBY.js +103 -0
  275. package/dist/commands/chunk-N2ZF6T4E.js +332 -0
  276. package/dist/commands/chunk-N36NZMAL.js +79 -0
  277. package/dist/commands/chunk-N4EMFHQ6.js +114 -0
  278. package/dist/commands/chunk-N4P64UIH.js +211 -0
  279. package/dist/commands/chunk-NABSSY4P.js +204 -0
  280. package/dist/commands/chunk-NDQIJBRQ.js +100 -0
  281. package/dist/commands/chunk-NDR4PCVG.js +29 -0
  282. package/dist/commands/chunk-NEOCCN6D.js +302 -0
  283. package/dist/commands/chunk-NFKWFOFM.js +45 -0
  284. package/dist/commands/chunk-NFUPJBBG.js +516 -0
  285. package/dist/commands/chunk-NHEBKL7X.js +170 -0
  286. package/dist/commands/chunk-NHTEC5U4.js +99 -0
  287. package/dist/commands/chunk-NOSG3RUP.js +84 -0
  288. package/dist/commands/chunk-NOSODWWK.js +1132 -0
  289. package/dist/commands/chunk-NPXXYG6Z.js +580 -0
  290. package/dist/commands/chunk-NR2JDBPV.js +75 -0
  291. package/dist/commands/chunk-NRULNBYI.js +1153 -0
  292. package/dist/commands/chunk-NTGF5N3N.js +110 -0
  293. package/dist/commands/chunk-NTIVNQKF.js +73 -0
  294. package/dist/commands/chunk-NUCFIYZL.js +119 -0
  295. package/dist/commands/chunk-NVMV7BYX.js +88 -0
  296. package/dist/commands/chunk-NYWPTYGL.js +169 -0
  297. package/dist/commands/chunk-NZ45KOLL.js +104 -0
  298. package/dist/commands/chunk-O45BX4EL.js +39 -0
  299. package/dist/commands/chunk-O46T4ANI.js +229 -0
  300. package/dist/commands/chunk-O5JGV7NA.js +245 -0
  301. package/dist/commands/chunk-O7ESC4HL.js +566 -0
  302. package/dist/commands/chunk-OBYLXHCH.js +86 -0
  303. package/dist/commands/chunk-OKN63ZH5.js +109 -0
  304. package/dist/commands/chunk-ON4IKRGS.js +469 -0
  305. package/dist/commands/chunk-OT74RSQO.js +82 -0
  306. package/dist/commands/chunk-OVCVINYW.js +143 -0
  307. package/dist/commands/chunk-OZKLVTYI.js +342 -0
  308. package/dist/commands/chunk-P3LJ2Q4N.js +555 -0
  309. package/dist/commands/chunk-P43GWYR6.js +185 -0
  310. package/dist/commands/chunk-P6ASP2DY.js +132 -0
  311. package/dist/commands/chunk-PBAEJ5PT.js +38 -0
  312. package/dist/commands/chunk-PCZROH3R.js +100 -0
  313. package/dist/commands/chunk-PF3PMT2Q.js +46 -0
  314. package/dist/commands/chunk-PILH72AV.js +170 -0
  315. package/dist/commands/chunk-PJYTUUTH.js +34 -0
  316. package/dist/commands/chunk-PKXTISWR.js +58 -0
  317. package/dist/commands/chunk-PSGLUBSB.js +74 -0
  318. package/dist/commands/chunk-PUQA7F6Y.js +186 -0
  319. package/dist/commands/chunk-PVRDJU2B.js +126 -0
  320. package/dist/commands/chunk-Q3HM2BEH.js +45 -0
  321. package/dist/commands/chunk-Q42NF2TL.js +47 -0
  322. package/dist/commands/chunk-Q4ULMZAS.js +106 -0
  323. package/dist/commands/chunk-QCRUPRQ2.js +207 -0
  324. package/dist/commands/chunk-QFIKPGMC.js +280 -0
  325. package/dist/commands/chunk-QSBYULSS.js +100 -0
  326. package/dist/commands/chunk-QSJCZATC.js +18 -0
  327. package/dist/commands/chunk-QTJPCXEW.js +23 -0
  328. package/dist/commands/chunk-QTQAI2M2.js +179 -0
  329. package/dist/commands/chunk-QTVVFV4Q.js +127 -0
  330. package/dist/commands/chunk-QX2EMUXV.js +102 -0
  331. package/dist/commands/chunk-QXBOECGL.js +272 -0
  332. package/dist/commands/chunk-QXCG3SG4.js +88 -0
  333. package/dist/commands/chunk-QZVMGAWV.js +307 -0
  334. package/dist/commands/chunk-R36VZIKU.js +53 -0
  335. package/dist/commands/chunk-R3F7F3TX.js +94 -0
  336. package/dist/commands/chunk-R5AABJZJ.js +1062 -0
  337. package/dist/commands/chunk-R7PYR4HW.js +389 -0
  338. package/dist/commands/chunk-RDUFVQVJ.js +997 -0
  339. package/dist/commands/chunk-RESNXNDG.js +54 -0
  340. package/dist/commands/chunk-RFIOZTXY.js +305 -0
  341. package/dist/commands/chunk-RFWB2KAV.js +102 -0
  342. package/dist/commands/chunk-RFXON3FK.js +25 -0
  343. package/dist/commands/chunk-RGEB5L37.js +66 -0
  344. package/dist/commands/chunk-RGRLLF2J.js +119 -0
  345. package/dist/commands/chunk-RLRIMYXM.js +178 -0
  346. package/dist/commands/chunk-RNB3DQOZ.js +70 -0
  347. package/dist/commands/chunk-RO4QEZJO.js +172 -0
  348. package/dist/commands/chunk-RS5HBJY6.js +161 -0
  349. package/dist/commands/chunk-RV7EQIE4.js +202 -0
  350. package/dist/commands/chunk-RWPCK3CO.js +41 -0
  351. package/dist/commands/chunk-RWYSVFIA.js +250 -0
  352. package/dist/commands/chunk-RYKK75YT.js +289 -0
  353. package/dist/commands/chunk-S4JE63QE.js +704 -0
  354. package/dist/commands/chunk-S4OZJIXD.js +134 -0
  355. package/dist/commands/chunk-SD4EX75H.js +177 -0
  356. package/dist/commands/chunk-SJITWFNY.js +480 -0
  357. package/dist/commands/chunk-SKGDMAIA.js +33 -0
  358. package/dist/commands/chunk-SNSZ25XZ.js +393 -0
  359. package/dist/commands/chunk-SQZZHK6X.js +119 -0
  360. package/dist/commands/chunk-SRTEE34O.js +93 -0
  361. package/dist/commands/chunk-SYTCTLMD.js +285 -0
  362. package/dist/commands/chunk-T6JUDQMW.js +181 -0
  363. package/dist/commands/chunk-T6OUNP7E.js +426 -0
  364. package/dist/commands/chunk-TEXUEBGE.js +208 -0
  365. package/dist/commands/chunk-TFDVTU6O.js +910 -0
  366. package/dist/commands/chunk-TFYYXETQ.js +472 -0
  367. package/dist/commands/chunk-TMFKVJUW.js +121 -0
  368. package/dist/commands/chunk-TNJU4CXD.js +32 -0
  369. package/dist/commands/chunk-TRHWBUWE.js +61 -0
  370. package/dist/commands/chunk-TROCFVCU.js +45 -0
  371. package/dist/commands/chunk-TTTZZN7F.js +269 -0
  372. package/dist/commands/chunk-TUBBESHU.js +85 -0
  373. package/dist/commands/chunk-TVZIFZZN.js +62 -0
  374. package/dist/commands/chunk-TXRWAL63.js +144 -0
  375. package/dist/commands/chunk-U46YTYJQ.js +92 -0
  376. package/dist/commands/chunk-U5EO4QEV.js +48 -0
  377. package/dist/commands/chunk-UCO333EX.js +47 -0
  378. package/dist/commands/chunk-UIXQ4IYT.js +445 -0
  379. package/dist/commands/chunk-UJGNYPMD.js +716 -0
  380. package/dist/commands/chunk-URZ4RDC4.js +220 -0
  381. package/dist/commands/chunk-UUH3DE77.js +57 -0
  382. package/dist/commands/chunk-UVY5ODCM.js +60 -0
  383. package/dist/commands/chunk-UWMB6EOU.js +45 -0
  384. package/dist/commands/chunk-UX3HCPLX.js +449 -0
  385. package/dist/commands/chunk-UY62WJV6.js +120 -0
  386. package/dist/commands/chunk-V2T5DP3B.js +224 -0
  387. package/dist/commands/chunk-VAHQ4AFM.js +585 -0
  388. package/dist/commands/chunk-VCWNMRH7.js +71 -0
  389. package/dist/commands/chunk-VHLDQ3PH.js +30 -0
  390. package/dist/commands/chunk-VL5I2IOD.js +332 -0
  391. package/dist/commands/chunk-VLN6TSPJ.js +139 -0
  392. package/dist/commands/chunk-VMG3QB6C.js +81 -0
  393. package/dist/commands/chunk-VO25PMGS.js +58 -0
  394. package/dist/commands/chunk-VTLWODJ2.js +133 -0
  395. package/dist/commands/chunk-VXE3V3OC.js +335 -0
  396. package/dist/commands/chunk-VY7ZJMDT.js +469 -0
  397. package/dist/commands/chunk-W3MDLQZF.js +137 -0
  398. package/dist/commands/chunk-W4BR6QNU.js +1241 -0
  399. package/dist/commands/chunk-WCYRNNKF.js +76 -0
  400. package/dist/commands/chunk-WEUUJIWQ.js +84 -0
  401. package/dist/commands/chunk-WNBJK6QE.js +84 -0
  402. package/dist/commands/chunk-WR5PKCQW.js +61 -0
  403. package/dist/commands/chunk-WR73HTRG.js +121 -0
  404. package/dist/commands/chunk-WRNMUQTD.js +95 -0
  405. package/dist/commands/chunk-WROJTXWZ.js +138 -0
  406. package/dist/commands/chunk-WTIPX5NG.js +43 -0
  407. package/dist/commands/chunk-WWLCQREY.js +225 -0
  408. package/dist/commands/chunk-WXLW7S4M.js +71 -0
  409. package/dist/commands/chunk-WXXLJQBO.js +67 -0
  410. package/dist/commands/chunk-X4LYH6Q4.js +56 -0
  411. package/dist/commands/chunk-XAEL24EG.js +66 -0
  412. package/dist/commands/chunk-XCCT6GKA.js +74 -0
  413. package/dist/commands/chunk-XDR2BRDL.js +216 -0
  414. package/dist/commands/chunk-XRQMVAB4.js +85 -0
  415. package/dist/commands/chunk-XSKJAG72.js +91 -0
  416. package/dist/commands/chunk-XTJA34ND.js +492 -0
  417. package/dist/commands/chunk-XUXCFPDK.js +218 -0
  418. package/dist/commands/chunk-XXPDFJRI.js +48 -0
  419. package/dist/commands/chunk-Y6OGDG5I.js +49 -0
  420. package/dist/commands/chunk-YEAE46TS.js +98 -0
  421. package/dist/commands/chunk-YEQFAEVW.js +112 -0
  422. package/dist/commands/chunk-YJZAD4Z5.js +103 -0
  423. package/dist/commands/chunk-YMAEYY5R.js +278 -0
  424. package/dist/commands/chunk-YNCF66RK.js +1052 -0
  425. package/dist/commands/chunk-YOA25SII.js +210 -0
  426. package/dist/commands/chunk-YOZTZMAT.js +38 -0
  427. package/dist/commands/chunk-YSGRHVZG.js +897 -0
  428. package/dist/commands/chunk-YSLGWRQN.js +646 -0
  429. package/dist/commands/chunk-YTXCLGGL.js +168 -0
  430. package/dist/commands/chunk-YVHJN2HS.js +74 -0
  431. package/dist/commands/chunk-YY7XVVSB.js +43 -0
  432. package/dist/commands/chunk-Z5GZV4DV.js +16 -0
  433. package/dist/commands/chunk-Z6QLFPFB.js +907 -0
  434. package/dist/commands/chunk-ZB52ZIEA.js +1629 -0
  435. package/dist/commands/chunk-ZCD4AV2P.js +73 -0
  436. package/dist/commands/chunk-ZCHZU6NX.js +799 -0
  437. package/dist/commands/chunk-ZEH2B3DF.js +239 -0
  438. package/dist/commands/chunk-ZEUKX3RZ.js +245 -0
  439. package/dist/commands/chunk-ZGANVZCA.js +92 -0
  440. package/dist/commands/chunk-ZGBXUY7R.js +198 -0
  441. package/dist/commands/chunk-ZGEUWHFF.js +297 -0
  442. package/dist/commands/chunk-ZHSNQ2F7.js +161 -0
  443. package/dist/commands/chunk-ZIIUBGON.js +773 -0
  444. package/dist/commands/chunk-ZJ5S4VFD.js +258 -0
  445. package/dist/commands/chunk-ZNIIA275.js +59 -0
  446. package/dist/commands/chunk-ZV6BZZJ2.js +271 -0
  447. package/dist/commands/ci-timing-cli.js +22 -3
  448. package/dist/commands/code-symbol-cli.js +21 -7
  449. package/dist/commands/codex-hook-adapter.js +124 -119
  450. package/dist/commands/command-derive.js +9 -11
  451. package/dist/commands/cost-audit-main.js +118 -119
  452. package/dist/commands/cost-main.js +5 -7
  453. package/dist/commands/cspell-cached.js +55 -57
  454. package/dist/commands/defect-origin-main.js +42 -37
  455. package/dist/commands/defect-report-main.js +33 -25
  456. package/dist/commands/diff-summary-cli.js +3 -4
  457. package/dist/commands/disposition-cli.js +117 -118
  458. package/dist/commands/doctor.js +24 -11
  459. package/dist/commands/document-read-cli.js +50 -53
  460. package/dist/commands/document-section-main.js +50 -53
  461. package/dist/commands/dogfood-commit-cli.js +19 -4
  462. package/dist/commands/effect-audit-cli.js +40 -41
  463. package/dist/commands/epic-audit-main.js +88 -86
  464. package/dist/commands/epic-bundle-main.js +122 -119
  465. package/dist/commands/epic-check.js +37 -31
  466. package/dist/commands/epic-main.js +129 -126
  467. package/dist/commands/epic-next-main.js +85 -83
  468. package/dist/commands/eval-run.js +6 -7
  469. package/dist/commands/format-edited-cli.js +71 -46
  470. package/dist/commands/format.js +41 -56
  471. package/dist/commands/fresh-machine-cli.js +24 -7
  472. package/dist/commands/gh-usage-cli.js +22 -22
  473. package/dist/commands/git-followup-workflow.js +158 -158
  474. package/dist/commands/git-gh-checks-failed-main.js +23 -15
  475. package/dist/commands/git-workflow.js +52 -53
  476. package/dist/commands/github-release-cli.js +3 -3
  477. package/dist/commands/hook-ledger-cli.js +93 -94
  478. package/dist/commands/init-main.js +40 -40
  479. package/dist/commands/inputs.json +2042 -2002
  480. package/dist/commands/issue-ack-cli.js +28 -21
  481. package/dist/commands/issue-already-done-cli.js +107 -110
  482. package/dist/commands/issue-body-cli.js +71 -73
  483. package/dist/commands/issue-cite-main.js +35 -28
  484. package/dist/commands/issue-comment-main.js +36 -30
  485. package/dist/commands/issue-consolidate-cli.js +54 -54
  486. package/dist/commands/issue-file-main.js +274 -148
  487. package/dist/commands/issue-fold-existing-cli.js +126 -123
  488. package/dist/commands/issue-fold-main.js +57 -60
  489. package/dist/commands/issue-lint-main.js +59 -61
  490. package/dist/commands/issue-measured-cli.js +108 -110
  491. package/dist/commands/issue-plan-cli.js +156 -155
  492. package/dist/commands/issue-premise-unmet-cli.js +111 -113
  493. package/dist/commands/issue-priority-cli.js +38 -32
  494. package/dist/commands/issue-read-main.js +38 -33
  495. package/dist/commands/issue-release-class-cli.js +37 -31
  496. package/dist/commands/issue-release-main.js +35 -29
  497. package/dist/commands/issue-scout-main.js +123 -120
  498. package/dist/commands/issue-spill-main.js +149 -144
  499. package/dist/commands/issue-state-main.js +36 -31
  500. package/dist/commands/issue-tick-cli.js +37 -31
  501. package/dist/commands/josh-completion.js +21 -24
  502. package/dist/commands/lane-adopt-cli.js +53 -55
  503. package/dist/commands/lane-breakdown-cli.js +193 -172
  504. package/dist/commands/lane-cli.js +199 -180
  505. package/dist/commands/lane-launch-main.js +106 -56
  506. package/dist/commands/lane-limit-cli.js +119 -116
  507. package/dist/commands/lane-measure-cli.js +408 -245
  508. package/dist/commands/lane-pause-cli.js +51 -54
  509. package/dist/commands/lane-plan-cli.js +148 -147
  510. package/dist/commands/lane-resolve-cli.js +48 -50
  511. package/dist/commands/lane-restart-cli.js +185 -168
  512. package/dist/commands/lane-why-cli.js +121 -122
  513. package/dist/commands/lane-withdraw-cli.js +84 -86
  514. package/dist/commands/latest-corepack.js +3 -2
  515. package/dist/commands/latest-if-required-cli.js +12 -15
  516. package/dist/commands/latest-lane-guard-main.js +2 -3
  517. package/dist/commands/latest-scope-main.js +5 -7
  518. package/dist/commands/latest-update.js +3 -2
  519. package/dist/commands/lines-command.js +8 -10
  520. package/dist/commands/lint-parallel-main.js +65 -67
  521. package/dist/commands/lint-related.js +149 -133
  522. package/dist/commands/lint-rule.js +64 -66
  523. package/dist/commands/lockfile-policy.js +29 -32
  524. package/dist/commands/main-merge-main.js +23 -25
  525. package/dist/commands/main-sync-main.js +23 -24
  526. package/dist/commands/managed-config-scope-cli.js +11 -10
  527. package/dist/commands/measure-rerun-cli.js +31 -26
  528. package/dist/commands/metrics-command.js +97 -100
  529. package/dist/commands/observation-record-cli.js +24 -14
  530. package/dist/commands/observations-flush-cli.js +50 -52
  531. package/dist/commands/overrides-check.js +1 -1
  532. package/dist/commands/package-scout-cli.js +70 -73
  533. package/dist/commands/pin-verify-cli.js +21 -2
  534. package/dist/commands/plan-consumers-main.js +3 -4
  535. package/dist/commands/plan-scaffold-cli.js +145 -146
  536. package/dist/commands/pr-classification-main.js +22 -3
  537. package/dist/commands/pre-commit-lint.js +30 -34
  538. package/dist/commands/pre-commit-type-check.js +55 -55
  539. package/dist/commands/pre-push-unit.js +69 -70
  540. package/dist/commands/pretool-guard-cli.js +111 -113
  541. package/dist/commands/prevent-main-commit.js +2 -3
  542. package/dist/commands/project-profile-cli.js +24 -9
  543. package/dist/commands/propagate.js +31 -23
  544. package/dist/commands/prose-stale-cli.js +48 -42
  545. package/dist/commands/publishable-range-check.js +3 -3
  546. package/dist/commands/read-set-cli.js +58 -61
  547. package/dist/commands/refactor-scan-cli.js +8 -9
  548. package/dist/commands/release-cli.js +57 -57
  549. package/dist/commands/release-scope-main.js +41 -36
  550. package/dist/commands/rename-cli.js +64 -36
  551. package/dist/commands/repo-party-cli.js +3 -4
  552. package/dist/commands/report-template-cli.js +4 -5
  553. package/dist/commands/reserved-run.js +17 -20
  554. package/dist/commands/retrospective-cli.js +126 -127
  555. package/dist/commands/review-attest-cli.js +28 -20
  556. package/dist/commands/review-brief-main.js +184 -167
  557. package/dist/commands/review-findings-cli.js +23 -13
  558. package/dist/commands/review-pair-cli.js +180 -156
  559. package/dist/commands/review-record-main.js +171 -147
  560. package/dist/commands/review-round2-cli.js +89 -91
  561. package/dist/commands/review-stops-cli.js +51 -54
  562. package/dist/commands/review-submit-cli.js +184 -167
  563. package/dist/commands/rule-list.js +78 -80
  564. package/dist/commands/rule-value-cli.js +115 -116
  565. package/dist/commands/ruleset-check-cli.js +23 -6
  566. package/dist/commands/run-add-cli.js +115 -75
  567. package/dist/commands/run-board-main.js +172 -169
  568. package/dist/commands/run-carry-cli.js +182 -174
  569. package/dist/commands/run-chain-cli.js +184 -160
  570. package/dist/commands/run-cut-cli.js +206 -168
  571. package/dist/commands/run-ending-cli.js +51 -54
  572. package/dist/commands/run-entry-cli.js +230 -283
  573. package/dist/commands/run-event-cli.js +18 -21
  574. package/dist/commands/run-handoff-cli.js +75 -78
  575. package/dist/commands/run-handoff-lanes-cli.js +48 -51
  576. package/dist/commands/run-hold-main.js +105 -107
  577. package/dist/commands/run-liveness-cli.js +47 -49
  578. package/dist/commands/run-merge-main.js +159 -151
  579. package/dist/commands/run-next-cli.js +128 -129
  580. package/dist/commands/run-park-cli.js +137 -140
  581. package/dist/commands/run-pause-cli.js +190 -186
  582. package/dist/commands/run-pickup-cli.js +49 -52
  583. package/dist/commands/run-prep-main.js +124 -125
  584. package/dist/commands/run-prime-cli.js +175 -147
  585. package/dist/commands/run-progress-main.js +149 -146
  586. package/dist/commands/run-report-cli.js +60 -60
  587. package/dist/commands/run-review-cli.js +229 -214
  588. package/dist/commands/run-ship-cli.js +258 -252
  589. package/dist/commands/run-ship-evidence-cli.js +71 -72
  590. package/dist/commands/run-ship-lap-W66LTXJJ.js +28 -0
  591. package/dist/commands/run-ship-wait-main.js +83 -85
  592. package/dist/commands/run-split-cli.js +176 -172
  593. package/dist/commands/run-stale-main.js +72 -75
  594. package/dist/commands/run-status-cli.js +44 -44
  595. package/dist/commands/run-step-cli.js +213 -211
  596. package/dist/commands/run-tail-cli.js +23 -18
  597. package/dist/commands/run-tidy-main.js +67 -69
  598. package/dist/commands/run-wake-main.js +206 -187
  599. package/dist/commands/run-watcher-guard-cli.js +63 -66
  600. package/dist/commands/security-audit-main.js +21 -24
  601. package/dist/commands/security-audit-provision-main.js +9 -11
  602. package/dist/commands/selfcheck-cli.js +63 -57
  603. package/dist/commands/session-language-main.js +70 -73
  604. package/dist/commands/sonar-hotspots-cli.js +9 -8
  605. package/dist/commands/sonar-new-code-cli.js +3 -4
  606. package/dist/commands/split-assess-cli.js +55 -58
  607. package/dist/commands/split-child-recover-cli.js +38 -39
  608. package/dist/commands/start.js +64 -64
  609. package/dist/commands/stash-pop-main.js +4 -5
  610. package/dist/commands/stash-push-main.js +7 -9
  611. package/dist/commands/stop-guard.js +180 -176
  612. package/dist/commands/sync-main.js +30 -15
  613. package/dist/commands/telegram-test-main.js +29 -22
  614. package/dist/commands/test-declared.js +29 -15
  615. package/dist/commands/test-e2e-guard.js +54 -54
  616. package/dist/commands/test-pinned-main.js +57 -56
  617. package/dist/commands/test-reach-cli.js +40 -32
  618. package/dist/commands/test-red-main.js +12 -14
  619. package/dist/commands/test-related-Z6YY2GFH.js +113 -0
  620. package/dist/commands/test-related-main.js +89 -89
  621. package/dist/commands/test-unit-guard-main.js +37 -37
  622. package/dist/commands/time-cli.js +54 -57
  623. package/dist/commands/time-density-cli.js +26 -29
  624. package/dist/commands/tree-status-cli.js +6 -8
  625. package/dist/commands/type-check-command.js +26 -11
  626. package/dist/commands/ui-routes-cli.js +5 -6
  627. package/dist/commands/ui-shot-cli.js +1 -1
  628. package/dist/commands/uninstall.js +44 -43
  629. package/dist/commands/unused-members-KVKZDTXD.js +329 -0
  630. package/dist/commands/unused-members-cli.js +27 -12
  631. package/dist/commands/upstream-interrupt-main.js +159 -151
  632. package/dist/commands/verification-gate.js +85 -86
  633. package/dist/commands/version-check.js +25 -8
  634. package/dist/hooks/chunk-3SA3FIQC.js +6869 -0
  635. package/dist/hooks/chunk-46PTTMGE.js +1625 -0
  636. package/dist/hooks/chunk-5NIBRHWG.js +77 -0
  637. package/dist/hooks/chunk-76QKN2K3.js +258 -0
  638. package/dist/hooks/chunk-CHEKMGFP.js +321 -0
  639. package/dist/hooks/chunk-DCILEVDR.js +5173 -0
  640. package/dist/hooks/chunk-HVNGIM5W.js +5092 -0
  641. package/dist/hooks/chunk-L6IZZ2IL.js +11219 -0
  642. package/dist/hooks/chunk-UZXMFOVK.js +9170 -0
  643. package/dist/hooks/chunk-WCJ2GWYJ.js +1381 -0
  644. package/dist/hooks/chunk-YRKS5ZKE.js +1915 -0
  645. package/dist/hooks/codex-hook-adapter.js +11 -12
  646. package/dist/hooks/daemon.js +2140 -1387
  647. package/dist/hooks/format-edited.js +6 -6
  648. package/dist/hooks/inputs.json +512 -488
  649. package/dist/hooks/pretool-guard.js +8 -8
  650. package/dist/hooks/run-ship-lap-P5555IG7.js +8 -0
  651. package/dist/hooks/session-lang.js +10 -8
  652. package/dist/hooks/stop-guard.js +962 -669
  653. package/dist/inputs.json +73 -64
  654. package/dist/josh.js +1029 -577
  655. package/dist/registry-migrate.mjs +33938 -0
  656. package/dist/version/index.js +4251 -175
  657. package/package.json +4 -1
  658. package/prompts/collaboration-workflow/principles.md +4 -1
  659. package/prompts/collaboration-workflow/rule-delivery.md +1 -1
  660. package/scripts/agent/codex-launch-identity.ts +70 -0
  661. package/scripts/auto-ok/auto-ok-cli.ts +2 -0
  662. package/scripts/auto-ok/auto-ok-judge-write.ts +2 -0
  663. package/scripts/auto-ok/auto-ok-judge.ts +3 -1
  664. package/scripts/backlog/backlog-arrival.ts +1 -1
  665. package/scripts/backlog/backlog-budget.ts +5 -2
  666. package/scripts/backlog/backlog-defect-priority.ts +1 -1
  667. package/scripts/backlog/backlog-dispatch-bound.ts +17 -0
  668. package/scripts/backlog/backlog-drain-flush.ts +38 -3
  669. package/scripts/backlog/backlog-drive-cli.ts +1 -1
  670. package/scripts/backlog/backlog-drive-hold.ts +28 -5
  671. package/scripts/backlog/backlog-drive-launch.ts +37 -15
  672. package/scripts/backlog/backlog-drive-listing.ts +39 -23
  673. package/scripts/backlog/backlog-drive-retrospective-unit.ts +3 -2
  674. package/scripts/backlog/backlog-drive-split-unit.ts +1 -0
  675. package/scripts/backlog/backlog-hold-codes.ts +7 -0
  676. package/scripts/backlog/backlog-hold-text.ts +14 -1
  677. package/scripts/backlog/backlog-measure-close.ts +6 -0
  678. package/scripts/backlog/backlog-next-shared.ts +20 -2
  679. package/scripts/backlog/backlog-next.ts +24 -3
  680. package/scripts/backlog/backlog-offer-cli.ts +69 -16
  681. package/scripts/build/build-migration.ts +25 -0
  682. package/scripts/build/build.ts +2 -0
  683. package/scripts/epic/epic-classify.ts +6 -1
  684. package/scripts/epic/epic-live.ts +46 -0
  685. package/scripts/followup/followup-failed-tests.ts +71 -10
  686. package/scripts/followup/followup-job-rerun.ts +2 -2
  687. package/scripts/gate/change-scope-action.integration.test.ts +88 -0
  688. package/scripts/gate/change-scope-action.ts +2 -0
  689. package/scripts/gate/check-related-order.ts +6 -7
  690. package/scripts/gate/check-related.ts +18 -8
  691. package/scripts/gate/core-admission.ts +17 -30
  692. package/scripts/gate/core-budget-poll.ts +183 -0
  693. package/scripts/gate/core-budget-timing.ts +1 -1
  694. package/scripts/gate/core-budget.ts +24 -112
  695. package/scripts/gate/core-wait-record.ts +52 -7
  696. package/scripts/gate/machine-capacity.ts +6 -2
  697. package/scripts/gate/metrics-totals.ts +11 -0
  698. package/scripts/gate/path-glob.test.ts +18 -0
  699. package/scripts/gate/toolchain-inputs.consumer.test.ts +36 -0
  700. package/scripts/gh/fix-gh-packages-logic.ts +22 -15
  701. package/scripts/gh/gh-request-tally.ts +4 -0
  702. package/scripts/hooks/bash-revert.ts +79 -31
  703. package/scripts/hooks/format-edited-file.ts +6 -8
  704. package/scripts/hooks/implementation-shell.ts +3 -2
  705. package/scripts/init/distributed-paths.ts +18 -5
  706. package/scripts/init/init-actions.ts +16 -1
  707. package/scripts/init/init-bootstrap.ts +2 -0
  708. package/scripts/init/init-logic.ts +40 -8
  709. package/scripts/init/init.ts +11 -3
  710. package/scripts/issue/defect-rate-cli.ts +19 -13
  711. package/scripts/issue/issue-file-batch.ts +7 -3
  712. package/scripts/issue/issue-file-cli.ts +19 -6
  713. package/scripts/issue/issue-file-main.ts +6 -1
  714. package/scripts/issue/issue-file-pass.ts +17 -0
  715. package/scripts/issue/issue-file.ts +3 -0
  716. package/scripts/issue/issue-not-before.ts +9 -2
  717. package/scripts/issue/issue-observation-gate.ts +141 -0
  718. package/scripts/issue/issue-observation-prime.ts +83 -0
  719. package/scripts/issue/issue-publication-state.ts +61 -0
  720. package/scripts/issue/issue-publication.ts +144 -0
  721. package/scripts/issue/issue-sample-prime.ts +2 -0
  722. package/scripts/issue/issue-search-count.ts +26 -0
  723. package/scripts/issue/issue-search.ts +128 -3
  724. package/scripts/issue/issue-spill-cli.ts +4 -0
  725. package/scripts/issue/upstream-interrupt-cli.ts +21 -5
  726. package/scripts/josh/josh-commands-ai.ts +1 -1
  727. package/scripts/josh/josh-commands-development.ts +1 -1
  728. package/scripts/josh/josh-commands-issue-write.ts +9 -0
  729. package/scripts/josh/josh-commands-run.ts +6 -1
  730. package/scripts/josh/josh-commands-ship.ts +5 -5
  731. package/scripts/josh/josh-run.ts +5 -2
  732. package/scripts/josh/session-language-cli.ts +1 -1
  733. package/scripts/josh/shared-cache.ts +16 -1
  734. package/scripts/lane/lane-await.ts +15 -0
  735. package/scripts/lane/lane-cli.ts +2 -0
  736. package/scripts/lane/lane-dispatch-dependency.ts +102 -0
  737. package/scripts/lane/lane-dispatch-wait-stats.ts +239 -0
  738. package/scripts/lane/lane-dispatch.ts +44 -5
  739. package/scripts/lane/lane-early-push-count.ts +21 -0
  740. package/scripts/lane/lane-install.ts +15 -5
  741. package/scripts/lane/lane-launch-cli.ts +35 -14
  742. package/scripts/lane/lane-ledger-kind.ts +2 -0
  743. package/scripts/lane/lane-ledger-schema-ship.ts +5 -1
  744. package/scripts/lane/lane-ledger-schema.ts +15 -1
  745. package/scripts/lane/lane-ledger-write.ts +4 -1
  746. package/scripts/lane/lane-relaunch.ts +25 -2
  747. package/scripts/lane/lane-state-record.ts +2 -0
  748. package/scripts/lane/lane-state.ts +8 -1
  749. package/scripts/lane/lane-stats-tables.ts +2 -0
  750. package/scripts/lane/openai-lane-supervisor.ts +16 -1
  751. package/scripts/lib/inherited-scope.ts +48 -0
  752. package/scripts/lint/format-steps.ts +93 -0
  753. package/scripts/lint/format.ts +6 -49
  754. package/scripts/lint/lint-related-fix.ts +35 -0
  755. package/scripts/lint/lint-related.ts +22 -35
  756. package/scripts/propagate/propagate-steps.ts +9 -4
  757. package/scripts/registry-migration/migrate-cli.ts +50 -0
  758. package/scripts/registry-migration/migrate-files.ts +154 -0
  759. package/scripts/registry-migration/migrate-lock.ts +147 -0
  760. package/scripts/registry-migration/migrate.ts +235 -0
  761. package/scripts/registry-migration/npm-acquisition.ts +118 -0
  762. package/scripts/review/review-record-cli.ts +27 -13
  763. package/scripts/review/review-record-pinned.ts +15 -6
  764. package/scripts/run/add/run-add-cli.ts +21 -3
  765. package/scripts/run/add/run-add.ts +26 -9
  766. package/scripts/run/board/run-board-header.ts +4 -5
  767. package/scripts/run/board/run-board-layout.ts +2 -2
  768. package/scripts/run/board/run-board-read.ts +7 -1
  769. package/scripts/run/board/run-board-reason.ts +12 -0
  770. package/scripts/run/board/run-board-retry-wait.ts +35 -0
  771. package/scripts/run/board/run-board-roots.ts +25 -2
  772. package/scripts/run/board/run-board-seat.ts +9 -2
  773. package/scripts/run/board/run-board-setup.ts +19 -11
  774. package/scripts/run/board/run-board-status.ts +2 -0
  775. package/scripts/run/board/run-board-tick.ts +7 -1
  776. package/scripts/run/carry/run-carry-reclaim.ts +12 -2
  777. package/scripts/run/carry/run-carry-session.ts +48 -0
  778. package/scripts/run/carry/run-carry.ts +21 -14
  779. package/scripts/run/cut/run-cut-resume.ts +15 -3
  780. package/scripts/run/cut/run-cut.ts +1 -1
  781. package/scripts/run/detached-launch.ts +14 -5
  782. package/scripts/run/early-push-record.ts +6 -2
  783. package/scripts/run/event/run-event-setup.ts +2 -0
  784. package/scripts/run/event/run-event-stream-emit.ts +27 -7
  785. package/scripts/run/hold/run-hold-cli.ts +40 -5
  786. package/scripts/run/merge/run-merge-cut-release.ts +17 -0
  787. package/scripts/run/merge/run-merge-human-review.ts +6 -0
  788. package/scripts/run/merge/run-merge-steps.ts +4 -57
  789. package/scripts/run/merge/run-merge-waits.ts +54 -0
  790. package/scripts/run/prime/run-prime-cli.ts +16 -2
  791. package/scripts/run/review/run-review-cli.ts +5 -7
  792. package/scripts/run/review/run-review-early-push.ts +19 -8
  793. package/scripts/run/review/run-review-join-read.ts +33 -6
  794. package/scripts/run/review/run-review-pinned-remaining.ts +124 -0
  795. package/scripts/run/review/run-review-pinned-steps.ts +7 -1
  796. package/scripts/run/run-halfrun-resume.ts +49 -6
  797. package/scripts/run/run-headless.ts +3 -0
  798. package/scripts/run/run-pr-return.ts +14 -5
  799. package/scripts/run/run-repair-attempt.ts +219 -0
  800. package/scripts/run/ship/run-ship-lap.ts +5 -17
  801. package/scripts/run/ship/run-ship-pre-detach-pinned.ts +4 -13
  802. package/scripts/run/ship/run-ship-scoped.ts +66 -30
  803. package/scripts/run/startup/run-startup-schema.ts +31 -0
  804. package/scripts/run/startup/run-startup-store.ts +130 -0
  805. package/scripts/run/startup/run-startup.ts +119 -0
  806. package/scripts/run/wake/run-wake-codex.ts +144 -0
  807. package/scripts/run/wake/run-wake-driver.ts +32 -7
  808. package/scripts/run/wake/run-wake-handoff.ts +9 -8
  809. package/scripts/run/wake/run-wake-loop.ts +23 -3
  810. package/scripts/run/wake/run-wake-ports.ts +17 -3
  811. package/scripts/run/wake/run-wake-takeover.ts +6 -3
  812. package/scripts/run/wake/run-wake-window.ts +4 -1
  813. package/scripts/run/wake/run-wake.ts +5 -0
  814. package/scripts/sync/sync-ai-files.ts +17 -0
  815. package/scripts/sync/sync-configs.ts +11 -1
  816. package/scripts/sync/sync.ts +5 -1
  817. package/scripts/test/test-related-cap.ts +7 -3
  818. package/scripts/test/test-related-imports.ts +92 -0
  819. package/scripts/test/vitest-failure-summary.ts +7 -0
  820. package/scripts/version/npm-registry.ts +45 -7
  821. package/scripts/version/upgrade-shell-command.ts +34 -2
  822. package/templates/workflows/ci.yml +0 -15
  823. package/templates/workflows/github-release.yml +0 -5
  824. package/dist/commands/chunk-23GH6B3D.js +0 -333
  825. package/dist/commands/chunk-24ZDAWML.js +0 -48
  826. package/dist/commands/chunk-2BB5ZR2F.js +0 -128
  827. package/dist/commands/chunk-2BJJUTZA.js +0 -59
  828. package/dist/commands/chunk-2CXT6MBR.js +0 -51
  829. package/dist/commands/chunk-2DJLAUYB.js +0 -109
  830. package/dist/commands/chunk-2EZTYLO4.js +0 -179
  831. package/dist/commands/chunk-2FJJYCBD.js +0 -149
  832. package/dist/commands/chunk-2PHOLX62.js +0 -43
  833. package/dist/commands/chunk-2QM72JCJ.js +0 -338
  834. package/dist/commands/chunk-2VRITY55.js +0 -41
  835. package/dist/commands/chunk-2XAH3MHV.js +0 -23
  836. package/dist/commands/chunk-34KZDKQJ.js +0 -304
  837. package/dist/commands/chunk-352KLSFX.js +0 -67
  838. package/dist/commands/chunk-36LOGVJ7.js +0 -38
  839. package/dist/commands/chunk-3AEDZZNL.js +0 -223
  840. package/dist/commands/chunk-3B2HEFNO.js +0 -51
  841. package/dist/commands/chunk-3PEXBHRN.js +0 -33
  842. package/dist/commands/chunk-3Z425MM3.js +0 -61
  843. package/dist/commands/chunk-3ZOX4G4U.js +0 -88
  844. package/dist/commands/chunk-452HWOJ7.js +0 -395
  845. package/dist/commands/chunk-475EFIJV.js +0 -178
  846. package/dist/commands/chunk-47UZB54M.js +0 -73
  847. package/dist/commands/chunk-4DN4XVPL.js +0 -716
  848. package/dist/commands/chunk-4DVM57T7.js +0 -86
  849. package/dist/commands/chunk-4EADHJVC.js +0 -247
  850. package/dist/commands/chunk-4HERA2GY.js +0 -95
  851. package/dist/commands/chunk-4JI35CVO.js +0 -70
  852. package/dist/commands/chunk-4L4LNWZ7.js +0 -143
  853. package/dist/commands/chunk-4N32QKJZ.js +0 -170
  854. package/dist/commands/chunk-4NRSFLG7.js +0 -185
  855. package/dist/commands/chunk-4OKRPAUT.js +0 -98
  856. package/dist/commands/chunk-4PUKDAXL.js +0 -42
  857. package/dist/commands/chunk-4Q64PG46.js +0 -478
  858. package/dist/commands/chunk-4UDTQVDD.js +0 -278
  859. package/dist/commands/chunk-4WR2LEZL.js +0 -123
  860. package/dist/commands/chunk-4ZJOC6OK.js +0 -298
  861. package/dist/commands/chunk-4ZQM4I7R.js +0 -533
  862. package/dist/commands/chunk-54X37JEJ.js +0 -170
  863. package/dist/commands/chunk-56KW5EOK.js +0 -85
  864. package/dist/commands/chunk-5CG3XU3O.js +0 -74
  865. package/dist/commands/chunk-5ESZLHDZ.js +0 -514
  866. package/dist/commands/chunk-5FBRMARM.js +0 -578
  867. package/dist/commands/chunk-5RG4S66L.js +0 -47
  868. package/dist/commands/chunk-5UJGACVN.js +0 -137
  869. package/dist/commands/chunk-5Y7B7FDL.js +0 -44
  870. package/dist/commands/chunk-5Z6E5ZUV.js +0 -89
  871. package/dist/commands/chunk-5ZNUH4LV.js +0 -1722
  872. package/dist/commands/chunk-5ZTQX7OS.js +0 -125
  873. package/dist/commands/chunk-66NX6EXR.js +0 -29
  874. package/dist/commands/chunk-66TGK5XL.js +0 -84
  875. package/dist/commands/chunk-6CFHLMKM.js +0 -555
  876. package/dist/commands/chunk-6DDK5XWK.js +0 -74
  877. package/dist/commands/chunk-6GQX752S.js +0 -145
  878. package/dist/commands/chunk-6HRRZANN.js +0 -55
  879. package/dist/commands/chunk-6MAZ55GF.js +0 -1241
  880. package/dist/commands/chunk-6OP63TBT.js +0 -78
  881. package/dist/commands/chunk-6Q3XUCLM.js +0 -204
  882. package/dist/commands/chunk-6RUWU2SB.js +0 -45
  883. package/dist/commands/chunk-6UCWAFQY.js +0 -245
  884. package/dist/commands/chunk-6WKJ3GDA.js +0 -408
  885. package/dist/commands/chunk-6YURRFRU.js +0 -461
  886. package/dist/commands/chunk-6YVURZAJ.js +0 -350
  887. package/dist/commands/chunk-6Z4YZG7P.js +0 -169
  888. package/dist/commands/chunk-77BIN247.js +0 -122
  889. package/dist/commands/chunk-7ABHNNY3.js +0 -529
  890. package/dist/commands/chunk-7C7FOKJK.js +0 -115
  891. package/dist/commands/chunk-7HAGC6SW.js +0 -1062
  892. package/dist/commands/chunk-7KKUFLH5.js +0 -56
  893. package/dist/commands/chunk-7LJQMM2K.js +0 -102
  894. package/dist/commands/chunk-7MJYLUF4.js +0 -99
  895. package/dist/commands/chunk-7NHZCI5Y.js +0 -704
  896. package/dist/commands/chunk-7OQ56DVW.js +0 -239
  897. package/dist/commands/chunk-7VWPGTZO.js +0 -260
  898. package/dist/commands/chunk-7YZXS3AK.js +0 -30
  899. package/dist/commands/chunk-A4HOQKOG.js +0 -85
  900. package/dist/commands/chunk-A6T2N7VC.js +0 -159
  901. package/dist/commands/chunk-AAUDI7WJ.js +0 -250
  902. package/dist/commands/chunk-AC26ZUG5.js +0 -259
  903. package/dist/commands/chunk-ACZ52JPI.js +0 -140
  904. package/dist/commands/chunk-AJ65WNJB.js +0 -230
  905. package/dist/commands/chunk-AK7SEO4Y.js +0 -177
  906. package/dist/commands/chunk-AKK56GNX.js +0 -205
  907. package/dist/commands/chunk-AKQYYHP2.js +0 -461
  908. package/dist/commands/chunk-ALDAS2WG.js +0 -137
  909. package/dist/commands/chunk-ANUTT56I.js +0 -85
  910. package/dist/commands/chunk-AVVMDVGO.js +0 -68
  911. package/dist/commands/chunk-B3M5WSGN.js +0 -72
  912. package/dist/commands/chunk-B7ZNIEDV.js +0 -351
  913. package/dist/commands/chunk-BCUDQWYK.js +0 -77
  914. package/dist/commands/chunk-BF6YX4HE.js +0 -70
  915. package/dist/commands/chunk-BHRS7HAM.js +0 -272
  916. package/dist/commands/chunk-BIKGPT52.js +0 -29
  917. package/dist/commands/chunk-BJA5U4Q7.js +0 -75
  918. package/dist/commands/chunk-BMKWSWWE.js +0 -126
  919. package/dist/commands/chunk-BMTYUJNT.js +0 -59
  920. package/dist/commands/chunk-BRHPRDDV.js +0 -127
  921. package/dist/commands/chunk-BRUBX64M.js +0 -33
  922. package/dist/commands/chunk-BTZJDHQT.js +0 -46
  923. package/dist/commands/chunk-BYFC6MD2.js +0 -72
  924. package/dist/commands/chunk-BYGJ3BCJ.js +0 -803
  925. package/dist/commands/chunk-C2SEDMZ3.js +0 -238
  926. package/dist/commands/chunk-C54QXJD6.js +0 -4208
  927. package/dist/commands/chunk-C6QSVO5K.js +0 -56
  928. package/dist/commands/chunk-CBAKBWSZ.js +0 -332
  929. package/dist/commands/chunk-CFHRNTE5.js +0 -326
  930. package/dist/commands/chunk-CGLLAEKZ.js +0 -110
  931. package/dist/commands/chunk-CHKYPF5O.js +0 -82
  932. package/dist/commands/chunk-CJBW6BWG.js +0 -800
  933. package/dist/commands/chunk-CJKPF5DJ.js +0 -156
  934. package/dist/commands/chunk-CKUKK7JG.js +0 -252
  935. package/dist/commands/chunk-CMHGDCGN.js +0 -263
  936. package/dist/commands/chunk-CNGTHSUS.js +0 -750
  937. package/dist/commands/chunk-CP2J4RV2.js +0 -3987
  938. package/dist/commands/chunk-CQZI7RIK.js +0 -72
  939. package/dist/commands/chunk-CWCKCZS6.js +0 -188
  940. package/dist/commands/chunk-D5HIP4HT.js +0 -289
  941. package/dist/commands/chunk-D6D6WQR6.js +0 -125
  942. package/dist/commands/chunk-D7JRJI44.js +0 -297
  943. package/dist/commands/chunk-D7OAU32Z.js +0 -119
  944. package/dist/commands/chunk-DAAX7XDS.js +0 -1208
  945. package/dist/commands/chunk-DBKTFB5V.js +0 -18
  946. package/dist/commands/chunk-DEZF7QZZ.js +0 -184
  947. package/dist/commands/chunk-DMD74E3F.js +0 -39
  948. package/dist/commands/chunk-DPJVKTO4.js +0 -41
  949. package/dist/commands/chunk-DXJQHJQ4.js +0 -73
  950. package/dist/commands/chunk-DYZOOWVW.js +0 -912
  951. package/dist/commands/chunk-EBI2BAKQ.js +0 -47
  952. package/dist/commands/chunk-EDKOSZ3K.js +0 -88
  953. package/dist/commands/chunk-EFDVE5P5.js +0 -121
  954. package/dist/commands/chunk-EGIHAEMT.js +0 -72
  955. package/dist/commands/chunk-EKLU6QR7.js +0 -507
  956. package/dist/commands/chunk-ELY76WAR.js +0 -65
  957. package/dist/commands/chunk-EM3HAZF6.js +0 -52
  958. package/dist/commands/chunk-EMTZAGT5.js +0 -51
  959. package/dist/commands/chunk-ENKFCOVY.js +0 -472
  960. package/dist/commands/chunk-ERG4QRNG.js +0 -224
  961. package/dist/commands/chunk-EUGNQCYK.js +0 -139
  962. package/dist/commands/chunk-EW4NPUMQ.js +0 -363
  963. package/dist/commands/chunk-EWVR5AEX.js +0 -140
  964. package/dist/commands/chunk-EXDFKKMH.js +0 -113
  965. package/dist/commands/chunk-EXWB34R2.js +0 -238
  966. package/dist/commands/chunk-EYMPBHDN.js +0 -61
  967. package/dist/commands/chunk-EZ7IPKIH.js +0 -20
  968. package/dist/commands/chunk-EZSO25UZ.js +0 -80
  969. package/dist/commands/chunk-F6IQHZYY.js +0 -94
  970. package/dist/commands/chunk-FDS65XOJ.js +0 -212
  971. package/dist/commands/chunk-FFHEGWPK.js +0 -91
  972. package/dist/commands/chunk-FGL6DBZU.js +0 -71
  973. package/dist/commands/chunk-FHFWNNUC.js +0 -144
  974. package/dist/commands/chunk-FIUCHMCF.js +0 -32
  975. package/dist/commands/chunk-FJX7AENO.js +0 -74
  976. package/dist/commands/chunk-FKZ5E4JD.js +0 -97
  977. package/dist/commands/chunk-FMZWRDKH.js +0 -302
  978. package/dist/commands/chunk-FOKCRIAN.js +0 -67
  979. package/dist/commands/chunk-FQGWO2ZH.js +0 -43
  980. package/dist/commands/chunk-FROACLVU.js +0 -525
  981. package/dist/commands/chunk-FURNDIT3.js +0 -34
  982. package/dist/commands/chunk-FVDQNMP6.js +0 -93
  983. package/dist/commands/chunk-FVVZIJUC.js +0 -425
  984. package/dist/commands/chunk-FWU3H4TX.js +0 -17
  985. package/dist/commands/chunk-G3HBYHFA.js +0 -16
  986. package/dist/commands/chunk-G4E4M2P4.js +0 -299
  987. package/dist/commands/chunk-G5KSL2Q2.js +0 -151
  988. package/dist/commands/chunk-G6XC7V6Y.js +0 -58
  989. package/dist/commands/chunk-GCPP5XIG.js +0 -90
  990. package/dist/commands/chunk-GITT5A5A.js +0 -198
  991. package/dist/commands/chunk-GJYMI2CM.js +0 -48
  992. package/dist/commands/chunk-GLC47H7I.js +0 -285
  993. package/dist/commands/chunk-GUR54ELE.js +0 -328
  994. package/dist/commands/chunk-GW4UWR3O.js +0 -126
  995. package/dist/commands/chunk-GY4DMCKS.js +0 -306
  996. package/dist/commands/chunk-H6JQRHDC.js +0 -80
  997. package/dist/commands/chunk-HATKF6VX.js +0 -173
  998. package/dist/commands/chunk-HG2NZQD5.js +0 -135
  999. package/dist/commands/chunk-HH3CVIFU.js +0 -93
  1000. package/dist/commands/chunk-HHMMGDMP.js +0 -469
  1001. package/dist/commands/chunk-HI5WPM6C.js +0 -127
  1002. package/dist/commands/chunk-HQGNXR6I.js +0 -245
  1003. package/dist/commands/chunk-HTIDHEEN.js +0 -108
  1004. package/dist/commands/chunk-HVCQYZVD.js +0 -38
  1005. package/dist/commands/chunk-HWEZRNPL.js +0 -66
  1006. package/dist/commands/chunk-HX3FFIO5.js +0 -74
  1007. package/dist/commands/chunk-HXDTA5VU.js +0 -208
  1008. package/dist/commands/chunk-I2KCGKJI.js +0 -107
  1009. package/dist/commands/chunk-I63RNFFR.js +0 -213
  1010. package/dist/commands/chunk-IAD4WLLI.js +0 -98
  1011. package/dist/commands/chunk-IB5TT73I.js +0 -177
  1012. package/dist/commands/chunk-IBAYXCMU.js +0 -156
  1013. package/dist/commands/chunk-IF3EIFK4.js +0 -7515
  1014. package/dist/commands/chunk-IGDJNXX2.js +0 -49
  1015. package/dist/commands/chunk-ILGPZ47M.js +0 -33
  1016. package/dist/commands/chunk-IYJEBWW5.js +0 -44
  1017. package/dist/commands/chunk-J22PSIXR.js +0 -418
  1018. package/dist/commands/chunk-J66YBAAM.js +0 -161
  1019. package/dist/commands/chunk-J6WKZRV2.js +0 -391
  1020. package/dist/commands/chunk-J7IO3AYH.js +0 -179
  1021. package/dist/commands/chunk-JAKC2BHX.js +0 -88
  1022. package/dist/commands/chunk-JCAQ7B6J.js +0 -124
  1023. package/dist/commands/chunk-JHN6RCE6.js +0 -123
  1024. package/dist/commands/chunk-JIGBNCDR.js +0 -88
  1025. package/dist/commands/chunk-JJHWTFWQ.js +0 -76
  1026. package/dist/commands/chunk-JJRKTWLK.js +0 -64
  1027. package/dist/commands/chunk-JKOGWGQM.js +0 -92
  1028. package/dist/commands/chunk-JM6EVOFN.js +0 -172
  1029. package/dist/commands/chunk-JQXPLMCO.js +0 -81
  1030. package/dist/commands/chunk-JV24VP2O.js +0 -81
  1031. package/dist/commands/chunk-JVKXJ763.js +0 -45
  1032. package/dist/commands/chunk-K275REYP.js +0 -37
  1033. package/dist/commands/chunk-K4G3HOKS.js +0 -105
  1034. package/dist/commands/chunk-K64EIHD2.js +0 -138
  1035. package/dist/commands/chunk-KB3OQWDT.js +0 -71
  1036. package/dist/commands/chunk-KCFOP5RI.js +0 -1310
  1037. package/dist/commands/chunk-KGE4AS2Y.js +0 -134
  1038. package/dist/commands/chunk-KIILCKQR.js +0 -220
  1039. package/dist/commands/chunk-KK2SL42W.js +0 -241
  1040. package/dist/commands/chunk-KKIMVXAP.js +0 -280
  1041. package/dist/commands/chunk-KODXWMBX.js +0 -77
  1042. package/dist/commands/chunk-KPSKWTOS.js +0 -208
  1043. package/dist/commands/chunk-KVHNQHX3.js +0 -100
  1044. package/dist/commands/chunk-KWYQR5MK.js +0 -269
  1045. package/dist/commands/chunk-KXHXMERX.js +0 -214
  1046. package/dist/commands/chunk-KZ5BBBMO.js +0 -271
  1047. package/dist/commands/chunk-KZ7HD37E.js +0 -121
  1048. package/dist/commands/chunk-KZSM5M5P.js +0 -89
  1049. package/dist/commands/chunk-KZZWPUJW.js +0 -25
  1050. package/dist/commands/chunk-L7DAL54N.js +0 -347
  1051. package/dist/commands/chunk-LAR76BFA.js +0 -114
  1052. package/dist/commands/chunk-LB557AHJ.js +0 -192
  1053. package/dist/commands/chunk-LJXKVLYI.js +0 -229
  1054. package/dist/commands/chunk-LOOFYHUM.js +0 -773
  1055. package/dist/commands/chunk-LQXFVZTS.js +0 -13
  1056. package/dist/commands/chunk-LT7QSHR4.js +0 -995
  1057. package/dist/commands/chunk-LUXWDMKI.js +0 -426
  1058. package/dist/commands/chunk-LWAXXZPS.js +0 -118
  1059. package/dist/commands/chunk-LX7TIEMI.js +0 -1612
  1060. package/dist/commands/chunk-LZ5QXE5N.js +0 -244
  1061. package/dist/commands/chunk-M4UV3BEV.js +0 -313
  1062. package/dist/commands/chunk-M6JDU5EK.js +0 -133
  1063. package/dist/commands/chunk-MDLOETXL.js +0 -211
  1064. package/dist/commands/chunk-MFBNNTBM.js +0 -44
  1065. package/dist/commands/chunk-MGF64OHV.js +0 -32
  1066. package/dist/commands/chunk-MI2OS6TL.js +0 -132
  1067. package/dist/commands/chunk-MLW4S35K.js +0 -389
  1068. package/dist/commands/chunk-MN425CU6.js +0 -63
  1069. package/dist/commands/chunk-MPGJ4ONJ.js +0 -634
  1070. package/dist/commands/chunk-MRORPFSO.js +0 -402
  1071. package/dist/commands/chunk-MUGTOJUL.js +0 -319
  1072. package/dist/commands/chunk-MVHPRYHE.js +0 -91
  1073. package/dist/commands/chunk-MWO6FOSZ.js +0 -393
  1074. package/dist/commands/chunk-MXC4IBZ7.js +0 -104
  1075. package/dist/commands/chunk-N7QTMTST.js +0 -210
  1076. package/dist/commands/chunk-NDBX7LSS.js +0 -32
  1077. package/dist/commands/chunk-NEGJ77RV.js +0 -173
  1078. package/dist/commands/chunk-NEGRE5VW.js +0 -101
  1079. package/dist/commands/chunk-NFPD2P3V.js +0 -53
  1080. package/dist/commands/chunk-NHIW7JE6.js +0 -335
  1081. package/dist/commands/chunk-NILSN7A4.js +0 -158
  1082. package/dist/commands/chunk-NOLFSPOB.js +0 -74
  1083. package/dist/commands/chunk-NSAVEXVR.js +0 -353
  1084. package/dist/commands/chunk-NT67QTZO.js +0 -65
  1085. package/dist/commands/chunk-NU7W6QGT.js +0 -155
  1086. package/dist/commands/chunk-NYWGJLBU.js +0 -19
  1087. package/dist/commands/chunk-OAAVY2JK.js +0 -49
  1088. package/dist/commands/chunk-OGS2DK7I.js +0 -47
  1089. package/dist/commands/chunk-OHNP3QL2.js +0 -186
  1090. package/dist/commands/chunk-OIPV3PWW.js +0 -870
  1091. package/dist/commands/chunk-OIX2363L.js +0 -16
  1092. package/dist/commands/chunk-OJ65BZBV.js +0 -646
  1093. package/dist/commands/chunk-OKZWEVR4.js +0 -352
  1094. package/dist/commands/chunk-OL6IF4JC.js +0 -20
  1095. package/dist/commands/chunk-OMPRILFH.js +0 -29
  1096. package/dist/commands/chunk-OOWGH2RG.js +0 -85
  1097. package/dist/commands/chunk-OP2RFVLS.js +0 -102
  1098. package/dist/commands/chunk-ORKVN2LO.js +0 -56
  1099. package/dist/commands/chunk-OSBWXZJ4.js +0 -492
  1100. package/dist/commands/chunk-OT3UMEWK.js +0 -47
  1101. package/dist/commands/chunk-OVWPZDWP.js +0 -64
  1102. package/dist/commands/chunk-OWYK2BEJ.js +0 -1222
  1103. package/dist/commands/chunk-OX3VQLV2.js +0 -488
  1104. package/dist/commands/chunk-OZJP77UM.js +0 -103
  1105. package/dist/commands/chunk-OZZWRJQI.js +0 -246
  1106. package/dist/commands/chunk-P3H3DKTE.js +0 -69
  1107. package/dist/commands/chunk-P4D5RESF.js +0 -88
  1108. package/dist/commands/chunk-P4KIQRSL.js +0 -119
  1109. package/dist/commands/chunk-P5SOYWH2.js +0 -37
  1110. package/dist/commands/chunk-P7FPXAHP.js +0 -29
  1111. package/dist/commands/chunk-PE7B7242.js +0 -84
  1112. package/dist/commands/chunk-PFO7EYAP.js +0 -45
  1113. package/dist/commands/chunk-PHLOTUB7.js +0 -366
  1114. package/dist/commands/chunk-PTNQCCIB.js +0 -41
  1115. package/dist/commands/chunk-PTZEFQUX.js +0 -211
  1116. package/dist/commands/chunk-Q5Q2QYVU.js +0 -112
  1117. package/dist/commands/chunk-Q7EEIOAD.js +0 -120
  1118. package/dist/commands/chunk-QABRNGQV.js +0 -88
  1119. package/dist/commands/chunk-QAHFPCFR.js +0 -50
  1120. package/dist/commands/chunk-QDFVVRQP.js +0 -92
  1121. package/dist/commands/chunk-QGAERR7D.js +0 -99
  1122. package/dist/commands/chunk-QHWJJ6X5.js +0 -53
  1123. package/dist/commands/chunk-QJRVDE7T.js +0 -307
  1124. package/dist/commands/chunk-QMDKDQKW.js +0 -114
  1125. package/dist/commands/chunk-QOSC5RKD.js +0 -18
  1126. package/dist/commands/chunk-QQ4CIYMF.js +0 -132
  1127. package/dist/commands/chunk-QV5FKMOU.js +0 -80
  1128. package/dist/commands/chunk-QWWTC3XR.js +0 -109
  1129. package/dist/commands/chunk-QXQ56E56.js +0 -27
  1130. package/dist/commands/chunk-R54Z2Z3X.js +0 -114
  1131. package/dist/commands/chunk-R6QE5VJG.js +0 -46
  1132. package/dist/commands/chunk-RG53UFNW.js +0 -418
  1133. package/dist/commands/chunk-RGGEQM6G.js +0 -140
  1134. package/dist/commands/chunk-RH6ZWJOA.js +0 -77
  1135. package/dist/commands/chunk-RHKCWJQX.js +0 -62
  1136. package/dist/commands/chunk-RKIAX4DZ.js +0 -191
  1137. package/dist/commands/chunk-RLBFEHHC.js +0 -300
  1138. package/dist/commands/chunk-RN2YDNLF.js +0 -229
  1139. package/dist/commands/chunk-RRAIRS2T.js +0 -54
  1140. package/dist/commands/chunk-RS764ZMU.js +0 -46
  1141. package/dist/commands/chunk-RUIBQMOV.js +0 -38
  1142. package/dist/commands/chunk-RUQY5TS3.js +0 -83
  1143. package/dist/commands/chunk-RVUJ6F5L.js +0 -181
  1144. package/dist/commands/chunk-RW64VHEB.js +0 -130
  1145. package/dist/commands/chunk-RXYMJPJB.js +0 -114
  1146. package/dist/commands/chunk-S4M6UWR2.js +0 -103
  1147. package/dist/commands/chunk-SASX3W2M.js +0 -99
  1148. package/dist/commands/chunk-SFNBUB6D.js +0 -110
  1149. package/dist/commands/chunk-SJ2ZN575.js +0 -90
  1150. package/dist/commands/chunk-SP7DKYGU.js +0 -1263
  1151. package/dist/commands/chunk-SSL6A3Y4.js +0 -165
  1152. package/dist/commands/chunk-SVAKCXZ7.js +0 -44
  1153. package/dist/commands/chunk-SYOXIKB7.js +0 -705
  1154. package/dist/commands/chunk-SZG5HDNP.js +0 -321
  1155. package/dist/commands/chunk-T25S4QHL.js +0 -52
  1156. package/dist/commands/chunk-T4F33UKZ.js +0 -114
  1157. package/dist/commands/chunk-T4UYEHWG.js +0 -50
  1158. package/dist/commands/chunk-TAEGXID2.js +0 -58
  1159. package/dist/commands/chunk-TCBUX52E.js +0 -701
  1160. package/dist/commands/chunk-TEPYEUYG.js +0 -585
  1161. package/dist/commands/chunk-TFLHYC2F.js +0 -141
  1162. package/dist/commands/chunk-TJKM56WJ.js +0 -109
  1163. package/dist/commands/chunk-TLAB552K.js +0 -445
  1164. package/dist/commands/chunk-TP6L4W3W.js +0 -82
  1165. package/dist/commands/chunk-TR7WWYD5.js +0 -60
  1166. package/dist/commands/chunk-TVZXG4Y4.js +0 -197
  1167. package/dist/commands/chunk-TYNH2R66.js +0 -1150
  1168. package/dist/commands/chunk-U3IVVR4W.js +0 -33
  1169. package/dist/commands/chunk-U5P6G3UV.js +0 -77
  1170. package/dist/commands/chunk-U7XU5RG3.js +0 -86
  1171. package/dist/commands/chunk-UKBBWMLE.js +0 -1189
  1172. package/dist/commands/chunk-ULVVGGTY.js +0 -64
  1173. package/dist/commands/chunk-UNMSZGSG.js +0 -269
  1174. package/dist/commands/chunk-URDT2O2K.js +0 -36
  1175. package/dist/commands/chunk-UTHUX7VU.js +0 -88
  1176. package/dist/commands/chunk-V4Z7G4UH.js +0 -73
  1177. package/dist/commands/chunk-V5FD7DVV.js +0 -48
  1178. package/dist/commands/chunk-VCPGFBMN.js +0 -655
  1179. package/dist/commands/chunk-VGPIQNDB.js +0 -24
  1180. package/dist/commands/chunk-VJE3RJAX.js +0 -23
  1181. package/dist/commands/chunk-VK6D5CWA.js +0 -161
  1182. package/dist/commands/chunk-VOF3N4WO.js +0 -114
  1183. package/dist/commands/chunk-VQVPAVQ3.js +0 -45
  1184. package/dist/commands/chunk-VV4TQYGD.js +0 -38
  1185. package/dist/commands/chunk-W3FX7FYN.js +0 -84
  1186. package/dist/commands/chunk-W7DRUOF7.js +0 -122
  1187. package/dist/commands/chunk-WAEN2RTT.js +0 -161
  1188. package/dist/commands/chunk-WCEUMOKK.js +0 -84
  1189. package/dist/commands/chunk-WJ4NEDNI.js +0 -288
  1190. package/dist/commands/chunk-WMMGXJXP.js +0 -92
  1191. package/dist/commands/chunk-WOFLW2LX.js +0 -26
  1192. package/dist/commands/chunk-WTH6NTXU.js +0 -128
  1193. package/dist/commands/chunk-WWVYEHQT.js +0 -272
  1194. package/dist/commands/chunk-X3TNPALI.js +0 -213
  1195. package/dist/commands/chunk-XC6GG5JR.js +0 -78
  1196. package/dist/commands/chunk-XDF25GSU.js +0 -536
  1197. package/dist/commands/chunk-XFPEUYDV.js +0 -67
  1198. package/dist/commands/chunk-XFWI6WHH.js +0 -60
  1199. package/dist/commands/chunk-XGMRAKSL.js +0 -85
  1200. package/dist/commands/chunk-XHGWMD3L.js +0 -104
  1201. package/dist/commands/chunk-XKSUBUIH.js +0 -116
  1202. package/dist/commands/chunk-XPBF5DG3.js +0 -419
  1203. package/dist/commands/chunk-XUMYPESL.js +0 -160
  1204. package/dist/commands/chunk-XXC32PVL.js +0 -541
  1205. package/dist/commands/chunk-XXN2EZBY.js +0 -133
  1206. package/dist/commands/chunk-XXNEY4B3.js +0 -110
  1207. package/dist/commands/chunk-Y27PTXXI.js +0 -258
  1208. package/dist/commands/chunk-Y4EBUI6M.js +0 -237
  1209. package/dist/commands/chunk-YAU3LYNF.js +0 -60
  1210. package/dist/commands/chunk-YDURQICF.js +0 -204
  1211. package/dist/commands/chunk-YGFOGA7C.js +0 -1153
  1212. package/dist/commands/chunk-YHJ2AJMA.js +0 -66
  1213. package/dist/commands/chunk-YIA6FC3K.js +0 -78
  1214. package/dist/commands/chunk-YM77CF4D.js +0 -183
  1215. package/dist/commands/chunk-YNPRJCEO.js +0 -81
  1216. package/dist/commands/chunk-YTBQAD5W.js +0 -170
  1217. package/dist/commands/chunk-YVH2OLDS.js +0 -104
  1218. package/dist/commands/chunk-Z3WGHIVB.js +0 -122
  1219. package/dist/commands/chunk-ZAAHZY2A.js +0 -19
  1220. package/dist/commands/chunk-ZBZ5DDCH.js +0 -1866
  1221. package/dist/commands/chunk-ZLRUHSOP.js +0 -48
  1222. package/dist/commands/chunk-ZNR75OXP.js +0 -444
  1223. package/dist/commands/chunk-ZSOR4ISJ.js +0 -75
  1224. package/dist/commands/chunk-ZVAIIHBE.js +0 -63
  1225. package/dist/commands/chunk-ZYFHYQA7.js +0 -51
  1226. package/dist/commands/chunk-ZZFFSQF4.js +0 -218
  1227. package/dist/commands/chunk-ZZULXNC2.js +0 -47
  1228. package/dist/commands/chunk-ZZXO6TFH.js +0 -232
  1229. package/dist/commands/run-ship-lap-W5T2VHFC.js +0 -30
  1230. package/dist/commands/test-related-ZCNC46MS.js +0 -113
  1231. package/dist/commands/unused-members-STULPRBU.js +0 -331
  1232. package/dist/hooks/chunk-5CUXGQT6.js +0 -8353
  1233. package/dist/hooks/chunk-5R5YFQR5.js +0 -931
  1234. package/dist/hooks/chunk-6RLY27FT.js +0 -232
  1235. package/dist/hooks/chunk-6YGMIODI.js +0 -86
  1236. package/dist/hooks/chunk-AO4TOV4V.js +0 -5026
  1237. package/dist/hooks/chunk-FOW4B7OQ.js +0 -1795
  1238. package/dist/hooks/chunk-G5WSPYJ6.js +0 -5663
  1239. package/dist/hooks/chunk-HHIVWGHX.js +0 -6869
  1240. package/dist/hooks/chunk-IURJANNZ.js +0 -1082
  1241. package/dist/hooks/chunk-OV22V63P.js +0 -10980
  1242. package/dist/hooks/chunk-SXABK6UV.js +0 -321
  1243. package/dist/hooks/run-ship-lap-VCEOUHQI.js +0 -8
@@ -1,1150 +0,0 @@
1
- import {
2
- lane_capacity
3
- } from "./chunk-EFDVE5P5.js";
4
- import {
5
- epic_triage
6
- } from "./chunk-VQRT32JB.js";
7
- import {
8
- lane_spent
9
- } from "./chunk-77BIN247.js";
10
- import {
11
- epic_label_age
12
- } from "./chunk-ANUTT56I.js";
13
- import {
14
- epic_cross_repo,
15
- epic_fetch
16
- } from "./chunk-OX3VQLV2.js";
17
- import {
18
- issue_not_before
19
- } from "./chunk-FKZ5E4JD.js";
20
- import {
21
- epic_issue
22
- } from "./chunk-IAD4WLLI.js";
23
- import {
24
- issue_rank
25
- } from "./chunk-HLKAFSN4.js";
26
- import {
27
- size_estimate
28
- } from "./chunk-FDS65XOJ.js";
29
- import {
30
- expected_effect_lint
31
- } from "./chunk-XZQWEVR3.js";
32
- import {
33
- issue_priority
34
- } from "./chunk-XI2ABCRX.js";
35
- import {
36
- epic_parse
37
- } from "./chunk-VDGNXSP3.js";
38
- import {
39
- epic_graph
40
- } from "./chunk-3RIQ36LH.js";
41
- import {
42
- epic_busy
43
- } from "./chunk-QABRNGQV.js";
44
- import {
45
- git_gh_command
46
- } from "./chunk-YGFOGA7C.js";
47
- import {
48
- lane_await
49
- } from "./chunk-IB5TT73I.js";
50
- import {
51
- lane_process_table,
52
- lane_registry,
53
- lane_snapshot_trace
54
- } from "./chunk-452HWOJ7.js";
55
- import {
56
- lane_state
57
- } from "./chunk-ZZXO6TFH.js";
58
- import {
59
- EPIC_LABEL,
60
- IN_PROGRESS_LABEL,
61
- RUN_SOLO_LABEL,
62
- has_any_label,
63
- has_label_name,
64
- has_parked_label
65
- } from "./chunk-QQBMVC5W.js";
66
- import {
67
- issue_citation,
68
- session_cite
69
- } from "./chunk-22DVQCP6.js";
70
- import {
71
- repo_discovery
72
- } from "./chunk-MDKDJF2K.js";
73
- import {
74
- issue_cite
75
- } from "./chunk-HQ2HSZBN.js";
76
- import {
77
- cli_flags
78
- } from "./chunk-2FE3C4PH.js";
79
- import {
80
- error_text
81
- } from "./chunk-CDY4NFQG.js";
82
- import {
83
- PROJECT_ROOT
84
- } from "./chunk-3CCGKX7Y.js";
85
-
86
- // scripts/epic/epic-report.ts
87
- function to_path_field(path) {
88
- return path === void 0 ? {} : { path };
89
- }
90
- function bundle_by_repo(children, paths = /* @__PURE__ */ new Map()) {
91
- const grouped = /* @__PURE__ */ new Map();
92
- for (const child of children) {
93
- const bucket = grouped.get(child.repo) ?? [];
94
- bucket.push(child);
95
- grouped.set(child.repo, bucket);
96
- }
97
- const repos = [];
98
- for (const [repo] of grouped) repos.push(repo);
99
- return repos.toSorted((left, right) => left.localeCompare(right)).map((repo) => ({
100
- repo,
101
- children: grouped.get(repo) ?? [],
102
- ...to_path_field(paths.get(repo.toLowerCase()))
103
- }));
104
- }
105
- function decide_verdict(classification, anomalies) {
106
- if (anomalies > 0) return "error";
107
- if (classification.runnable.length > 0) return "run";
108
- if (classification.time.length > 0) return "wait";
109
- if (classification.human.length > 0) return "stop";
110
- return "complete";
111
- }
112
- function build_result(classification, anomalies, paths = /* @__PURE__ */ new Map()) {
113
- const verdict = decide_verdict(classification, anomalies.length);
114
- return {
115
- verdict,
116
- candidates: verdict === "error" ? [] : bundle_by_repo(classification.runnable, paths),
117
- waiting: classification.time,
118
- blocked_on_people: classification.human,
119
- anomalies
120
- };
121
- }
122
- function candidates_for_repo(result, repo) {
123
- return result.candidates.find((bundle) => bundle.repo === repo)?.children ?? [];
124
- }
125
- function format_bundle_heading(bundle) {
126
- return ` ${bundle.repo} ${bundle.path ?? "(no local checkout)"}`;
127
- }
128
- function format_child(child, current_repo) {
129
- return ` ${epic_graph.format_reference(child, current_repo)}`;
130
- }
131
- function format_group(label, children, current_repo) {
132
- if (children.length === 0) return [];
133
- return [label, ...children.map((child) => format_child(child, current_repo))];
134
- }
135
- var VERDICT_LINES = {
136
- run: "Runnable children (each takes a free lane in its repository):",
137
- wait: "Nothing is runnable yet, but these resolve on their own \u2014 wait and ask again:",
138
- stop: "Nothing will resolve on its own. These need a person:",
139
- complete: "Every child is closed; the epic is complete.",
140
- error: "The dependency graph is unusable:"
141
- };
142
- function format_result(result, current_repo) {
143
- if (result.verdict === "error") {
144
- return [VERDICT_LINES.error, ...result.anomalies.map((anomaly) => anomaly.message)].join("\n");
145
- }
146
- const lines = [VERDICT_LINES[result.verdict]];
147
- for (const bundle of result.candidates) {
148
- lines.push(
149
- format_bundle_heading(bundle),
150
- ...bundle.children.map((child) => format_child(child, current_repo))
151
- );
152
- }
153
- lines.push(
154
- ...format_group(" Waiting on time:", result.waiting, current_repo),
155
- ...format_group(" Waiting on a person:", result.blocked_on_people, current_repo)
156
- );
157
- return lines.join("\n");
158
- }
159
- var epic_report = {
160
- bundle_by_repo,
161
- format_bundle_heading,
162
- decide_verdict,
163
- build_result,
164
- candidates_for_repo,
165
- format_result
166
- };
167
-
168
- // scripts/epic/epic-nested.ts
169
- function is_nested_epic(child) {
170
- return has_label_name(child.labels, EPIC_LABEL);
171
- }
172
- var epic_nested = {
173
- is_nested_epic
174
- };
175
-
176
- // scripts/epic/epic-outside-blocker.ts
177
- var NOTICE_ICON = "\u2757";
178
- var CLOSED = "CLOSED";
179
- function name_of(child) {
180
- return session_cite.issue(child.number, void 0, child.repo);
181
- }
182
- function as_closed_child(reference) {
183
- return {
184
- number: reference.number,
185
- repo: reference.repo,
186
- state: CLOSED,
187
- labels: [],
188
- blocked_by: []
189
- };
190
- }
191
- function unread_answer(child, reference) {
192
- const blocker = epic_graph.key_of(reference);
193
- return {
194
- category: "time",
195
- notice: {
196
- key: `unread:${epic_graph.key_of(child)}:${blocker}`,
197
- message: `${NOTICE_ICON} ${name_of(child)} is blocked by ${blocker}, whose state could not be read \u2014 it waits rather than runs`
198
- }
199
- };
200
- }
201
- function open_answer(child, reference, running) {
202
- if (running.has(epic_graph.blocker_key(reference))) return { category: "time" };
203
- const blocker = epic_graph.key_of(reference);
204
- return {
205
- category: "human",
206
- notice: {
207
- key: `outside:${epic_graph.key_of(child)}:${blocker}`,
208
- message: `${NOTICE_ICON} ${name_of(child)} waits on ${blocker}, which this run will not finish \u2014 withheld for a person`
209
- }
210
- };
211
- }
212
- function closed_category(verdict) {
213
- if (verdict === "resolved") return void 0;
214
- return verdict === "human" ? "human" : "time";
215
- }
216
- function outside_category(child, reference, resolve, running) {
217
- if (reference.state === void 0) return unread_answer(child, reference);
218
- if (reference.state !== CLOSED) return open_answer(child, reference, running);
219
- return { category: closed_category(resolve(as_closed_child(reference), child)) };
220
- }
221
- function running_keys(issues) {
222
- return new Set(issues.map((issue) => epic_graph.key_of(issue)));
223
- }
224
- var epic_outside_blocker = { outside_category, running_keys };
225
-
226
- // scripts/epic/epic-classify.ts
227
- var CLOSED2 = "CLOSED";
228
- function resolve_by_state(blocker) {
229
- return blocker.state === CLOSED2 ? "resolved" : "inherit";
230
- }
231
- function has_label(child, label) {
232
- return has_label_name(child.labels, label);
233
- }
234
- function has_human_label(child) {
235
- return has_parked_label(child.labels);
236
- }
237
- function is_waiting(child) {
238
- return has_label(child, IN_PROGRESS_LABEL) || !issue_not_before.is_due(child.body);
239
- }
240
- function local_category(child) {
241
- if (child.state === CLOSED2) return "done";
242
- if (epic_nested.is_nested_epic(child) || has_human_label(child)) return "human";
243
- if (is_waiting(child)) return "time";
244
- return void 0;
245
- }
246
- function inherited_category(blocker_category) {
247
- return blocker_category === "human" ? "human" : "time";
248
- }
249
- function dependency_category(verdict, blocker_category) {
250
- if (verdict === "resolved") return void 0;
251
- if (verdict === "inherit") return inherited_category(blocker_category);
252
- return verdict;
253
- }
254
- var reported = /* @__PURE__ */ new Set();
255
- function reset_reported() {
256
- reported.clear();
257
- }
258
- var silence = { is_muted: false };
259
- function mute_notices() {
260
- silence.is_muted = true;
261
- }
262
- function report_notice(notice) {
263
- if (silence.is_muted || reported.has(notice.key)) return;
264
- reported.add(notice.key);
265
- console.warn(notice.message);
266
- }
267
- function outside_category2(child, reference, context) {
268
- const answer = epic_outside_blocker.outside_category(
269
- child,
270
- reference,
271
- context.resolve,
272
- context.running
273
- );
274
- if (answer.notice !== void 0) report_notice(answer.notice);
275
- return answer.category;
276
- }
277
- function report_nested_epic(child) {
278
- const line = `epic:${epic_graph.key_of(child)}`;
279
- if (reported.has(line)) return;
280
- reported.add(line);
281
- console.warn(
282
- `\u26A0 ${epic_graph.key_of(child)} is itself an epic \u2014 a run cannot implement one, so it is withheld rather than offered`
283
- );
284
- }
285
- function report_nested_epics(children) {
286
- for (const child of children) {
287
- if (child.state !== CLOSED2 && epic_nested.is_nested_epic(child)) report_nested_epic(child);
288
- }
289
- }
290
- function relation_category(child, blocker_reference, context) {
291
- const blocker = context.index.get(epic_graph.blocker_key(blocker_reference));
292
- if (blocker === void 0) return outside_category2(child, blocker_reference, context);
293
- return dependency_category(
294
- context.resolve(blocker, child),
295
- context.memo.get(epic_graph.key_of(blocker)) ?? "time"
296
- );
297
- }
298
- function blocker_categories(child, context) {
299
- return child.blocked_by.map((blocker) => relation_category(child, blocker, context)).filter((category) => category !== void 0);
300
- }
301
- function from_blockers(categories) {
302
- if (categories.includes("human")) return "human";
303
- return categories.length > 0 ? "time" : "runnable";
304
- }
305
- function compute_category(child, context) {
306
- return local_category(child) ?? from_blockers(blocker_categories(child, context));
307
- }
308
- function is_ready(node, context) {
309
- return epic_graph.blockers_of(context.index, node).every((blocker) => !context.index.has(blocker) || context.memo.has(blocker));
310
- }
311
- function fill_memo(children, context) {
312
- const pending = new Set(children.map((child) => epic_graph.key_of(child)));
313
- function peel() {
314
- const ready = [...pending].filter((node) => is_ready(node, context));
315
- for (const node of ready) {
316
- const child = context.index.get(node);
317
- if (child !== void 0) context.memo.set(node, compute_category(child, context));
318
- pending.delete(node);
319
- }
320
- return ready.length;
321
- }
322
- while (peel() > 0) {
323
- }
324
- for (const node of pending) context.memo.set(node, "time");
325
- }
326
- function new_context(children, resolve = resolve_by_state, running = epic_outside_blocker.running_keys(children)) {
327
- return {
328
- index: epic_graph.index_children(children),
329
- resolve,
330
- memo: /* @__PURE__ */ new Map(),
331
- running
332
- };
333
- }
334
- function classify_children(children, resolve, running) {
335
- const context = new_context(children, resolve, running);
336
- const buckets = {
337
- runnable: [],
338
- time: [],
339
- human: []
340
- };
341
- fill_memo(children, context);
342
- report_nested_epics(children);
343
- for (const child of children) {
344
- const category = context.memo.get(epic_graph.key_of(child)) ?? "time";
345
- if (category !== "done") buckets[category].push(child);
346
- }
347
- return buckets;
348
- }
349
- var epic_classify = {
350
- resolve_by_state,
351
- mute_notices,
352
- reset_reported,
353
- local_category,
354
- classify_children
355
- };
356
-
357
- // scripts/epic/epic-candidate-confirm.ts
358
- var NO_ANOMALIES = 0;
359
- var NO_LANES = 0;
360
- var ONE_LANE = 1;
361
- function is_same_blockers(left, right) {
362
- function sorted(blockers) {
363
- return blockers.map((blocker) => epic_graph.key_of(blocker)).toSorted((first, second) => first.localeCompare(second)).join(",");
364
- }
365
- return sorted(left) === sorted(right);
366
- }
367
- function with_blockers(children, target, blocked_by) {
368
- const key = epic_graph.key_of(target);
369
- return children.map(
370
- (child) => epic_graph.key_of(child) === key ? { ...child, blocked_by } : child
371
- );
372
- }
373
- function is_still_runnable(child, children, context) {
374
- const key = epic_graph.key_of(child);
375
- return epic_classify.classify_children(children, context.resolve, context.running).runnable.some((candidate) => epic_graph.key_of(candidate) === key);
376
- }
377
- async function read_or_withhold(candidate, read_blockers) {
378
- try {
379
- return await read_blockers(candidate);
380
- } catch (error) {
381
- const reason = error_text.message_of(error);
382
- console.warn(
383
- `\u26A0 could not confirm the blockers of ${session_cite.issue(candidate.number, void 0, candidate.repo)}: ${reason}
384
- it is withheld rather than offered; asking again is what resolves this`
385
- );
386
- return void 0;
387
- }
388
- }
389
- function warn_withheld(candidate, listed) {
390
- const named = listed.map((blocker) => epic_graph.key_of(blocker)).join(", ");
391
- console.warn(
392
- `\u26A0 ${session_cite.issue(candidate.number, void 0, candidate.repo)} is withheld: its relations listing names ${named}, which the dependency summary it was classified from did not count`
393
- );
394
- }
395
- function untracked_blockers(listed, children) {
396
- const index = epic_graph.index_children(children);
397
- return listed.filter((blocker) => !index.has(epic_graph.blocker_key(blocker)));
398
- }
399
- function warn_untracked(candidate, untracked) {
400
- const named = untracked.map((blocker) => epic_graph.key_of(blocker)).join(", ");
401
- console.warn(
402
- `\u26A0 ${session_cite.issue(candidate.number, void 0, candidate.repo)} is offered although its relations listing names ${named}: this epic does not track those, and every one of them is already finished`
403
- );
404
- }
405
- function warn_recovered(candidate, listed, children, is_confirmed) {
406
- if (!is_confirmed) {
407
- warn_withheld(candidate, listed);
408
- return;
409
- }
410
- const untracked = untracked_blockers(listed, children);
411
- if (untracked.length > 0) warn_untracked(candidate, untracked);
412
- }
413
- async function confirm_one(candidate, context) {
414
- const listed = await read_or_withhold(candidate, context.read_blockers);
415
- if (listed === void 0) return { is_confirmed: false, children: context.children };
416
- if (is_same_blockers(candidate.blocked_by, listed)) {
417
- return { is_confirmed: true, children: context.children };
418
- }
419
- const children = with_blockers(context.children, candidate, listed);
420
- const is_confirmed = is_still_runnable(candidate, children, context);
421
- warn_recovered(candidate, listed, children, is_confirmed);
422
- return { is_confirmed, children };
423
- }
424
- async function confirm_candidates(candidates, context, wanted) {
425
- const [candidate, ...rest] = candidates;
426
- if (candidate === void 0 || wanted <= NO_LANES) {
427
- return { children: context.children, confirmed: [] };
428
- }
429
- const verdict = await confirm_one(candidate, context);
430
- const taken = verdict.is_confirmed ? [candidate] : [];
431
- const next = { ...context, children: verdict.children };
432
- const walk = await confirm_candidates(rest, next, wanted - taken.length);
433
- return { children: walk.children, confirmed: [...taken, ...walk.confirmed] };
434
- }
435
- function withheld_verdict(children, context) {
436
- return epic_report.decide_verdict(
437
- epic_classify.classify_children(children, context.resolve, context.running),
438
- NO_ANOMALIES
439
- );
440
- }
441
- async function answer_for_repo(candidates, context, wanted = ONE_LANE) {
442
- const outcome = await confirm_candidates(candidates, context, wanted);
443
- if (outcome.confirmed.length > NO_LANES) return { children: outcome.confirmed, verdict: "run" };
444
- return { children: [], verdict: withheld_verdict(outcome.children, context) };
445
- }
446
- var epic_candidate_confirm = {
447
- is_same_blockers,
448
- answer_for_repo
449
- };
450
-
451
- // scripts/backlog/backlog-occupied.ts
452
- function is_never_merge_waiting() {
453
- return false;
454
- }
455
- function occupied_lanes(lanes, idle, records, is_merge_waiting = is_never_merge_waiting) {
456
- const live = lanes.filter((lane) => !lane.is_stranded);
457
- const idle_issues = new Set(idle(live));
458
- return live.filter((lane) => {
459
- const state = records.get(lane.issue)?.state;
460
- return !idle_issues.has(lane.issue) && state !== "paused" && !is_merge_waiting(lane.issue);
461
- });
462
- }
463
- function unknown_lanes(lanes, records) {
464
- return lanes.filter((lane) => !lane.is_stranded && !records.has(lane.issue)).map((lane) => lane.issue);
465
- }
466
- var backlog_occupied = { occupied_lanes, unknown_lanes };
467
-
468
- // scripts/lane/lane-room.ts
469
- async function occupancy_of(open, table) {
470
- const rows = await table();
471
- const issues = open.map((lane) => lane.issue);
472
- const trace = { process_trace: await lane_snapshot_trace.traces_of(issues, rows) };
473
- const records = await lane_state.read_states(issues);
474
- const is_merge_waiting = await lane_snapshot_trace.merge_waits_of(issues, rows);
475
- const occupied = backlog_occupied.occupied_lanes(
476
- open,
477
- (live) => lane_spent.idle_lanes(live, trace),
478
- records,
479
- is_merge_waiting
480
- );
481
- const unknown = backlog_occupied.unknown_lanes(open, records);
482
- return { occupied, idle: lane_spent.idle_lanes(open, trace), unknown };
483
- }
484
- async function read(lanes, table = lane_process_table.read_table) {
485
- const open = lanes ?? await lane_registry.list_lanes();
486
- const occupancy = await occupancy_of(open, table);
487
- const seated = lane_registry.used_seats(open).length;
488
- const use = { occupied: occupancy.occupied.length, seated, unknown: occupancy.unknown };
489
- return { ...occupancy, use };
490
- }
491
- var lane_room = { read };
492
-
493
- // scripts/epic/epic-lane-occupancy.ts
494
- var SOLO_LABELS = /* @__PURE__ */ new Set([RUN_SOLO_LABEL]);
495
- function is_local(issue, lanes) {
496
- return lanes.some((lane) => lane.issue === String(issue.number));
497
- }
498
- function confirmed_stopped(lanes, room) {
499
- const occupied = new Set(room.occupied.map((lane) => lane.issue));
500
- return new Set(
501
- lanes.filter((lane) => !lane.seat_held && lane.seat_problem === void 0).map((lane) => lane.issue).filter(
502
- (issue) => room.idle.includes(issue) && !room.unknown.includes(issue) && !occupied.has(issue)
503
- )
504
- );
505
- }
506
- function reconcile(issues, lanes, room) {
507
- const stopped = confirmed_stopped(lanes, room);
508
- const holders = issues.filter(
509
- (issue) => has_any_label(issue.labels, SOLO_LABELS) || !stopped.has(String(issue.number))
510
- );
511
- const remote = holders.filter((issue) => !is_local(issue, lanes)).length;
512
- const occupied = new Set(room.occupied.map((lane) => lane.issue));
513
- const unknown = holders.filter(
514
- (issue) => room.unknown.includes(String(issue.number)) && !occupied.has(String(issue.number))
515
- ).length;
516
- const use = {
517
- ...room.use,
518
- occupied: room.use.occupied + remote + unknown,
519
- seated: room.use.seated + remote
520
- };
521
- return { read: holders.length > 0 ? { kind: "busy", issues: holders } : { kind: "idle" }, use };
522
- }
523
- async function read2(reading, is_this_checkout) {
524
- if (!is_this_checkout || reading.kind !== "busy") return { read: reading };
525
- try {
526
- const lanes = await lane_registry.list_lanes();
527
- if (reading.issues.every((issue) => !is_local(issue, lanes))) return { read: reading };
528
- return reconcile(reading.issues, lanes, await lane_room.read(lanes));
529
- } catch {
530
- return { read: reading };
531
- }
532
- }
533
- var epic_lane_occupancy = { read: read2 };
534
-
535
- // scripts/epic/epic-rank.ts
536
- var CLOSED3 = "CLOSED";
537
- function dependents_of(pool) {
538
- return issue_rank.count_dependents(
539
- pool.filter((child) => child.state !== CLOSED3).map((child) => ({
540
- key: epic_graph.key_of(child),
541
- blockers: child.blocked_by.map((blocker) => epic_graph.blocker_key(blocker))
542
- }))
543
- );
544
- }
545
- function rank(children, pool) {
546
- const dependents = dependents_of(pool);
547
- return issue_rank.rank(children, (child) => ({
548
- is_resumable: child.is_resumable,
549
- is_last: issue_priority.is_last(child.body),
550
- labels: child.labels,
551
- lost_minutes: issue_priority.lost_minutes(child.body),
552
- gain_minutes: expected_effect_lint.weekly_minutes(child.body),
553
- dependents: dependents.get(epic_graph.key_of(child)) ?? 0,
554
- estimated_lines: size_estimate.declared_size(child.body ?? "")?.lines
555
- }));
556
- }
557
- var epic_rank = { rank };
558
-
559
- // scripts/epic/epic-solo.ts
560
- function is_solo(child) {
561
- return has_label_name(child.labels, RUN_SOLO_LABEL);
562
- }
563
- function holder_of(running) {
564
- return running.find((issue) => is_solo(issue))?.number;
565
- }
566
- function solo_holder(read3) {
567
- if (read3.kind !== "busy") return void 0;
568
- const running = read3.issues.map((issue) => ({
569
- number: issue.number,
570
- labels: (issue.labels ?? []).map((label) => label.name)
571
- }));
572
- return holder_of(running);
573
- }
574
- var HELD_MARK = `carries \`${RUN_SOLO_LABEL}\` and is running in`;
575
- var WAITING_MARK = `carries \`${RUN_SOLO_LABEL}\` and waits for`;
576
- function held_message(holder, repo) {
577
- return issue_citation.linkify(
578
- `${issue_cite.plain_for("linked", holder)} ${HELD_MARK} ${repo}; nothing else starts until it merges or is parked.`,
579
- repo
580
- );
581
- }
582
- function waiting_message(solo, repo) {
583
- return issue_citation.linkify(
584
- `${issue_cite.plain_for("linked", solo)} ${WAITING_MARK} ${repo}'s running lanes to finish; nothing ranked below it is offered past it.`,
585
- repo
586
- );
587
- }
588
- function is_solo_wait(text) {
589
- return text.includes(HELD_MARK) || text.includes(WAITING_MARK);
590
- }
591
- function first_of(children, keep) {
592
- return { offered: children.slice(0, keep), withheld: children.slice(keep) };
593
- }
594
- function none_of(children, notice) {
595
- return { offered: [], withheld: [...children], notice };
596
- }
597
- function queue_of(children) {
598
- const index = children.findIndex((child) => is_solo(child));
599
- const solo = children[index];
600
- return solo === void 0 ? void 0 : { solo, index, behind: children.slice(index + 1) };
601
- }
602
- function select_candidates(children, read3, repo, occupied) {
603
- const queue = queue_of(children);
604
- if (queue === void 0) return first_of(children, children.length);
605
- if (queue.index > 0) return first_of(children, queue.index);
606
- if (occupied === 0 && read3.kind === "idle") return first_of(children, 1);
607
- return none_of(children, waiting_message(queue.solo.number, repo));
608
- }
609
- function select(children, read3, repo, occupied = epic_busy.occupied_lanes(read3)) {
610
- if (read3.kind === "unreadable" || read3.kind === "truncated") {
611
- return none_of(children, epic_busy.busy_reason(read3, repo, 0));
612
- }
613
- const holder = solo_holder(read3);
614
- if (holder !== void 0) return none_of(children, held_message(holder, repo));
615
- return select_candidates(children, read3, repo, occupied);
616
- }
617
- function withhold(result, repo, selection) {
618
- return {
619
- ...result,
620
- candidates: result.candidates.map(
621
- (bundle) => bundle.repo === repo ? { ...bundle, children: selection.offered } : bundle
622
- ),
623
- waiting: [...result.waiting, ...selection.withheld]
624
- };
625
- }
626
- function gate(result, read3, repo, selector = select) {
627
- if (result.verdict !== "run") return { result };
628
- const selection = selector(epic_report.candidates_for_repo(result, repo), read3, repo);
629
- const gated = withhold(result, repo, selection);
630
- return selection.notice === void 0 ? { result: gated } : { result: gated, notice: selection.notice };
631
- }
632
- var epic_solo = { gate, holder_of, is_solo, is_solo_wait, queue_of, select };
633
-
634
- // scripts/epic/epic-solo-stale.ts
635
- import { setTimeout as sleep } from "node:timers/promises";
636
- var SOLO_LABELS2 = /* @__PURE__ */ new Set([RUN_SOLO_LABEL]);
637
- function is_absent_solo(issue) {
638
- if (!has_any_label(issue.labels, SOLO_LABELS2)) return false;
639
- return !lane_await.is_process_running_default(String(issue.number));
640
- }
641
- async function local_lanes() {
642
- try {
643
- const lanes = await lane_registry.list_lanes();
644
- return new Set(lanes.map((lane) => lane.issue));
645
- } catch {
646
- return /* @__PURE__ */ new Set();
647
- }
648
- }
649
- async function settle() {
650
- await sleep(lane_await.RECONFIRM_MS);
651
- }
652
- var io = { local_lanes, settle };
653
- async function find_stale(issues) {
654
- const absent = issues.filter((issue) => is_absent_solo(issue));
655
- if (absent.length === 0) return [];
656
- const lanes = await io.local_lanes();
657
- const dispatched = absent.filter((issue) => lanes.has(String(issue.number)));
658
- if (dispatched.length === 0) return [];
659
- await io.settle();
660
- return dispatched.filter((issue) => is_absent_solo(issue));
661
- }
662
- function stale_message(stale, repo) {
663
- const named = stale.map((issue) => issue_cite.plain_for("linked", issue.number)).join(", ");
664
- return issue_citation.linkify(
665
- `${named} carries \`${RUN_SOLO_LABEL}\` and \`${IN_PROGRESS_LABEL}\`, but no process of it is running in ${repo} \u2014 the \`${IN_PROGRESS_LABEL}\` label is stale, so it does not hold the backlog. Remove the label once you have confirmed nothing is running it.`,
666
- repo
667
- );
668
- }
669
- async function release(read3, repo) {
670
- if (read3.kind !== "busy") return { read: read3 };
671
- const stale = await find_stale(read3.issues);
672
- if (stale.length === 0) return { read: read3 };
673
- const holders = read3.issues.filter((issue) => !stale.includes(issue));
674
- const released = holders.length > 0 ? { kind: "busy", issues: holders } : { kind: "idle" };
675
- return { read: released, notice: stale_message(stale, repo) };
676
- }
677
- var epic_solo_stale = { io, release };
678
-
679
- // scripts/epic/epic-lane-offer.ts
680
- var WAIT_VERDICT = "wait";
681
- var RUN_VERDICT = "run";
682
- var NO_LANES2 = 0;
683
- var ONE_LANE2 = 1;
684
- function is_held(read3) {
685
- return read3.kind === "unreadable" || read3.kind === "truncated";
686
- }
687
- function free_lanes(read3, limit, merge_waiting) {
688
- if (is_held(read3)) return NO_LANES2;
689
- const holders = epic_busy.occupied_lanes(read3);
690
- return lane_capacity.free_lanes(limit, holders - merge_waiting, holders);
691
- }
692
- async function merge_waiting_holders(read3, request) {
693
- if (read3.kind !== "busy" || !request.is_this_checkout) return NO_LANES2;
694
- return await lane_snapshot_trace.count_merge_waiting(
695
- read3.issues.map((issue) => String(issue.number))
696
- );
697
- }
698
- async function room_in(occupancy, request) {
699
- if (occupancy.use !== void 0) {
700
- return lane_capacity.free_lanes(request.limit, occupancy.use.occupied, occupancy.use.seated);
701
- }
702
- return free_lanes(
703
- occupancy.read,
704
- request.limit,
705
- await merge_waiting_holders(occupancy.read, request)
706
- );
707
- }
708
- function wanted_of(request, free) {
709
- return request.is_all_lanes ? free : Math.min(ONE_LANE2, free);
710
- }
711
- function withheld_message(repo) {
712
- return `No runnable child in ${repo}: every candidate was withheld when its blocker relations were confirmed \u2014 the reason for each is above.`;
713
- }
714
- function offered_notice(children, read3, request, ages) {
715
- if (children.length === NO_LANES2) return withheld_message(request.repo);
716
- if (read3.kind !== "busy") return "";
717
- return epic_busy.occupancy_message(read3.issues, request.repo, request.limit, ages);
718
- }
719
- async function holder_ages(read3, repo) {
720
- if (read3.kind !== "busy") return /* @__PURE__ */ new Map();
721
- return await epic_label_age.read_ages(
722
- read3.issues.map((issue) => issue.number),
723
- repo,
724
- /* @__PURE__ */ new Date()
725
- );
726
- }
727
- var VERDICT_PRIORITY = [RUN_VERDICT, WAIT_VERDICT, "stop", "complete"];
728
- function combine_verdicts(left, right) {
729
- return VERDICT_PRIORITY.indexOf(left) <= VERDICT_PRIORITY.indexOf(right) ? left : right;
730
- }
731
- function candidates_in(pool, repo) {
732
- return { ...pool, candidates: pool.candidates.filter((child) => child.repo === repo) };
733
- }
734
- function ranked_in(pool, repo) {
735
- const scoped = candidates_in(pool, repo);
736
- return { ...scoped, candidates: epic_rank.rank(scoped.candidates, pool.context.children) };
737
- }
738
- function unseen_candidates(pool, seen) {
739
- const candidates = [];
740
- for (const child of pool.candidates) {
741
- const key = epic_graph.key_of(child);
742
- if (seen.has(key)) continue;
743
- seen.add(key);
744
- candidates.push(child);
745
- }
746
- return { ...pool, candidates };
747
- }
748
- function dedupe_pools(pools) {
749
- const seen = /* @__PURE__ */ new Set();
750
- return pools.map((pool) => unseen_candidates(pool, seen));
751
- }
752
- async function ask_pool(pool, wanted) {
753
- return await epic_candidate_confirm.answer_for_repo(pool.candidates, pool.context, wanted);
754
- }
755
- async function collect(pools, wanted) {
756
- const children = [];
757
- let verdict = "complete";
758
- for (const pool of pools) {
759
- if (children.length >= wanted) break;
760
- const answer = await ask_pool(pool, wanted - children.length);
761
- children.push(...answer.children);
762
- verdict = combine_verdicts(verdict, answer.verdict);
763
- }
764
- return { children, verdict: children.length > NO_LANES2 ? RUN_VERDICT : verdict };
765
- }
766
- function solo_offer(answer, occupancy, request, ages) {
767
- const { read: read3, use } = occupancy;
768
- const { offered, notice = "" } = epic_solo.select(
769
- answer.children,
770
- read3,
771
- request.repo,
772
- use?.occupied
773
- );
774
- if (offered.length === NO_LANES2 && answer.children.length > NO_LANES2) {
775
- return { children: [], verdict: WAIT_VERDICT, notice };
776
- }
777
- return { ...answer, children: offered, notice: offered_notice(offered, read3, request, ages) };
778
- }
779
- function triage_offer(pools, request) {
780
- if (!request.is_all_lanes) return void 0;
781
- const untriaged = epic_triage.untriaged(
782
- dedupe_pools(pools.map((pool) => candidates_in(pool, request.repo))).flatMap(
783
- (pool) => pool.candidates
784
- )
785
- );
786
- if (untriaged.length === NO_LANES2) return void 0;
787
- return {
788
- children: [],
789
- verdict: epic_triage.TRIAGE_VERDICT,
790
- notice: epic_triage.message(untriaged, request.repo)
791
- };
792
- }
793
- function full_notice(occupancy, request, ages) {
794
- if (occupancy.use === void 0) {
795
- return epic_busy.busy_reason(occupancy.read, request.repo, request.limit, ages);
796
- }
797
- return `${String(occupancy.use.occupied)} of ${String(request.limit)} lanes in use in ${request.repo}; ${String(occupancy.use.seated)} port seats held. No lane is free, so nothing is offered here.`;
798
- }
799
- async function offer_after_triage(pools, request) {
800
- const released = await epic_solo_stale.release(
801
- await epic_busy.read_repository(request.repo),
802
- request.repo
803
- );
804
- if (released.notice !== void 0) console.error(released.notice);
805
- const occupancy = await epic_lane_occupancy.read(released.read, request.is_this_checkout);
806
- const { read: read3 } = occupancy;
807
- const free = await room_in(occupancy, request);
808
- const ages = await holder_ages(read3, request.repo);
809
- if (free === NO_LANES2) {
810
- return {
811
- children: [],
812
- verdict: WAIT_VERDICT,
813
- notice: full_notice(occupancy, request, ages)
814
- };
815
- }
816
- const for_repo = dedupe_pools(pools.map((pool) => ranked_in(pool, request.repo)));
817
- return solo_offer(await collect(for_repo, wanted_of(request, free)), occupancy, request, ages);
818
- }
819
- async function offer_for_repo(pools, request) {
820
- return triage_offer(pools, request) ?? await offer_after_triage(pools, request);
821
- }
822
- function lane_request(asked, limit, current_repo) {
823
- const is_this_checkout = asked.repo.toLowerCase() === current_repo.toLowerCase();
824
- return { ...asked, limit, is_this_checkout };
825
- }
826
- var epic_lane_offer = {
827
- combine_verdicts,
828
- dedupe_pools,
829
- lane_request,
830
- offer_for_repo
831
- };
832
-
833
- // scripts/epic/epic-next-read.ts
834
- var FOREIGN_EPIC = "That epic belongs to another owner; this command only reads our own.";
835
- var NO_CHILDREN = 0;
836
- function epic_repo_of(reference, current_repo) {
837
- const epic_repo = reference.repo ?? current_repo;
838
- const owner = epic_cross_repo.owner_of(current_repo);
839
- return epic_cross_repo.is_same_owner_repo(epic_repo, owner) ? epic_repo : void 0;
840
- }
841
- function childless(reference) {
842
- return `${session_cite.issue(reference.number, void 0, reference.repo)} tracks no children in a task list.`;
843
- }
844
- function unique_references(references, current_repo) {
845
- const seen = /* @__PURE__ */ new Set();
846
- const unique = [];
847
- for (const reference of references) {
848
- const repo = reference.repo ?? current_repo;
849
- const key = epic_graph.key_of({ repo, number: reference.number });
850
- if (seen.has(key)) continue;
851
- seen.add(key);
852
- unique.push(reference);
853
- }
854
- return unique;
855
- }
856
- function is_childless(snapshot) {
857
- if (snapshot.body_failure !== void 0) return false;
858
- return snapshot.child_numbers.length === NO_CHILDREN;
859
- }
860
- async function read_one(reference, current_repo, source) {
861
- const epic_repo = epic_repo_of(reference, current_repo);
862
- if (epic_repo === void 0) return { refusal: FOREIGN_EPIC };
863
- const snapshot = await epic_fetch.fetch_epic(reference.number, epic_repo, current_repo, source);
864
- if (is_childless(snapshot)) return { notice: childless(reference) };
865
- return { read: { reference, snapshot } };
866
- }
867
- function collect2(outcome, reads, notices) {
868
- if (outcome.read !== void 0) reads.push(outcome.read);
869
- if (outcome.notice !== void 0) notices.push(outcome.notice);
870
- }
871
- async function read_snapshots(references, current_repo, source) {
872
- const reads = [];
873
- const notices = [];
874
- for (const reference of unique_references(references, current_repo)) {
875
- const outcome = await read_one(reference, current_repo, source);
876
- if (outcome.refusal !== void 0) return { reads, notices, refusal: outcome.refusal };
877
- collect2(outcome, reads, notices);
878
- }
879
- return { reads, notices };
880
- }
881
- var epic_next_read = {
882
- FOREIGN_EPIC,
883
- childless,
884
- unique_references,
885
- read_snapshots
886
- };
887
-
888
- // scripts/epic/epic-next-views.ts
889
- var COMPLETE_VERDICT = "complete";
890
- var ERROR_VERDICT = "error";
891
- var ONE_EPIC = 1;
892
- var BLOCK_SEPARATOR = "\n\n";
893
- function format_reference(reference) {
894
- return issue_cite.plain_for("linked", reference.number, reference.repo);
895
- }
896
- function confirm_context(snapshot, running) {
897
- return {
898
- children: snapshot.children,
899
- running,
900
- resolve: epic_cross_repo.resolve_cross_repo,
901
- read_blockers: async (child) => await epic_fetch.read_child_blockers(child, snapshot.current_repo)
902
- };
903
- }
904
- function pools_of(views, repo) {
905
- return views.map((view) => ({
906
- candidates: epic_report.candidates_for_repo(view.result, repo),
907
- context: confirm_context(view.snapshot, view.running)
908
- }));
909
- }
910
- function combined_verdict(views) {
911
- let verdict = COMPLETE_VERDICT;
912
- for (const view of views) verdict = epic_lane_offer.combine_verdicts(verdict, view.result.verdict);
913
- return verdict;
914
- }
915
- function error_view(views) {
916
- return views.find((view) => view.result.verdict === ERROR_VERDICT);
917
- }
918
- function format_view(view, is_many, current_repo) {
919
- const text = epic_report.format_result(view.result, current_repo);
920
- return is_many ? `${format_reference(view.reference)}
921
- ${text}` : text;
922
- }
923
- function aggregate_text(views, current_repo) {
924
- const is_many = views.length > ONE_EPIC;
925
- return views.map((view) => format_view(view, is_many, current_repo)).join(BLOCK_SEPARATOR);
926
- }
927
- function settle_views(running, build) {
928
- const views = build(running);
929
- const stuck = new Set(
930
- views.flatMap((view) => view.result.blocked_on_people.map((child) => epic_graph.key_of(child)))
931
- );
932
- const settled = new Set(running);
933
- for (const key of stuck) settled.delete(key);
934
- return settled.size === running.size ? views : settle_views(settled, build);
935
- }
936
- var epic_next_views = {
937
- settle_views,
938
- format_reference,
939
- pools_of,
940
- combined_verdict,
941
- error_view,
942
- format_view,
943
- aggregate_text
944
- };
945
-
946
- // scripts/epic/epic-next.ts
947
- var SUCCESS_EXIT_CODE = 0;
948
- var FAILURE_EXIT_CODE = 1;
949
- var OPTIONS = { repo: { type: "string" }, lanes: { type: "boolean" } };
950
- var USAGE = "Usage: josh epic:next <epic-number|owner/repo#number>... [--repo <owner/repo>] [--lanes]";
951
- var UNKNOWN_REPO = "Could not read this repository from `git remote`, so the children cannot be keyed by repository \u2014 check `gh auth status` and that this is a checkout with an `origin` remote.";
952
- var EXTERNAL_NOTICE = "Note: this epic tracks children in other repositories.";
953
- var { FOREIGN_EPIC: FOREIGN_EPIC2 } = epic_next_read;
954
- var NO_CHILDREN2 = 0;
955
- var ONE_EPIC2 = 1;
956
- var UNCHECKED_EXCLUSION = "Note: the per-repository lane count is applied by `--repo`; a child listed here may still be held back there while every lane is in use.";
957
- function parse_references(head) {
958
- const references = [];
959
- for (const entry of head) {
960
- const reference = epic_issue.parse_epic_reference(entry);
961
- if (reference === void 0) return void 0;
962
- references.push(reference);
963
- }
964
- return references.length === 0 ? void 0 : references;
965
- }
966
- function with_repo(references, values) {
967
- const { repo, lanes: is_all_lanes = false } = values;
968
- if (repo === void 0) return is_all_lanes ? { usage: USAGE } : { references };
969
- return { references, repo, is_all_lanes };
970
- }
971
- function parse_options(argv) {
972
- const parsed = cli_flags.arguments_of(argv, OPTIONS);
973
- if (parsed === void 0) return { usage: USAGE };
974
- const references = parse_references(parsed.positionals);
975
- if (references === void 0 || parsed.values.repo === "") return { usage: USAGE };
976
- return with_repo(references, parsed.values);
977
- }
978
- function body_anomaly(snapshot) {
979
- if (snapshot.body_failure === void 0) return void 0;
980
- return {
981
- kind: "unreadable_epic_body",
982
- message: `Could not read the body of the epic in ${snapshot.repo}. Its task list is what names the children, so nothing is offered \u2014 check \`gh auth status\` and that the epic exists.`,
983
- is_unreachable: snapshot.is_unreachable
984
- };
985
- }
986
- function unreadable_anomaly(snapshot) {
987
- const missing = epic_fetch.missing_children(snapshot);
988
- if (missing.length === 0) return void 0;
989
- const list = epic_graph.format_references(missing, snapshot.current_repo);
990
- return {
991
- kind: "unreadable_children",
992
- message: `Could not read ${list}. The dependency graph would be missing them, so nothing is offered \u2014 check \`gh auth status\` and that the issues exist.`,
993
- is_unreachable: snapshot.is_unreachable
994
- };
995
- }
996
- function is_order_declared(body, links) {
997
- return links.length > 0 || epic_parse.has_unordered_declaration(body);
998
- }
999
- function decide(snapshot, paths = /* @__PURE__ */ new Map(), running) {
1000
- const links = epic_parse.parse_dependency_links(snapshot.body);
1001
- const unreadable = body_anomaly(snapshot) ?? unreadable_anomaly(snapshot);
1002
- const anomalies = unreadable === void 0 ? epic_graph.find_anomalies(
1003
- snapshot.children,
1004
- links,
1005
- is_order_declared(snapshot.body, links),
1006
- snapshot.repo
1007
- ) : [unreadable];
1008
- const classification = epic_classify.classify_children(
1009
- snapshot.children,
1010
- epic_cross_repo.resolve_cross_repo,
1011
- running
1012
- );
1013
- return epic_report.build_result(classification, anomalies, paths);
1014
- }
1015
- function refuse(reason) {
1016
- console.error(reason);
1017
- return FAILURE_EXIT_CODE;
1018
- }
1019
- function repo_verdict(verdict) {
1020
- return verdict === "run" ? "wait" : verdict;
1021
- }
1022
- function report_offer(offer) {
1023
- if (offer.notice !== "") console.error(offer.notice);
1024
- if (offer.children.length === NO_CHILDREN2) {
1025
- console.info(repo_verdict(offer.verdict));
1026
- return SUCCESS_EXIT_CODE;
1027
- }
1028
- for (const child of offer.children) console.info(String(child.number));
1029
- return SUCCESS_EXIT_CODE;
1030
- }
1031
- async function offer_children(views, request) {
1032
- const pools = epic_next_views.pools_of(views, request.repo);
1033
- return report_offer(await epic_lane_offer.offer_for_repo(pools, request));
1034
- }
1035
- async function report_single(views, request) {
1036
- const broken = epic_next_views.error_view(views);
1037
- if (broken !== void 0) {
1038
- return refuse(epic_next_views.format_view(broken, views.length > ONE_EPIC2, request.repo));
1039
- }
1040
- const has_candidate = views.some(
1041
- (view) => epic_report.candidates_for_repo(view.result, request.repo).length > NO_CHILDREN2
1042
- );
1043
- if (!has_candidate) {
1044
- console.error(`No runnable child in ${request.repo}.`);
1045
- console.info(repo_verdict(epic_next_views.combined_verdict(views)));
1046
- return SUCCESS_EXIT_CODE;
1047
- }
1048
- return await offer_children(views, request);
1049
- }
1050
- function note_unchecked_exclusion(views) {
1051
- if (epic_next_views.combined_verdict(views) === "run") console.error(UNCHECKED_EXCLUSION);
1052
- }
1053
- function report_aggregate(views, current_repo) {
1054
- note_unchecked_exclusion(views);
1055
- const text = epic_next_views.aggregate_text(views, current_repo);
1056
- if (epic_next_views.error_view(views) !== void 0) {
1057
- console.error(text);
1058
- return FAILURE_EXIT_CODE;
1059
- }
1060
- console.info(issue_citation.linkify(text, current_repo));
1061
- return SUCCESS_EXIT_CODE;
1062
- }
1063
- function external_notice(view, is_many) {
1064
- return is_many ? `${epic_next_views.format_reference(view.reference)} ${EXTERNAL_NOTICE}` : EXTERNAL_NOTICE;
1065
- }
1066
- function note_external(views) {
1067
- const is_many = views.length > ONE_EPIC2;
1068
- for (const view of views) {
1069
- if (view.snapshot.has_external_children) console.error(external_notice(view, is_many));
1070
- }
1071
- }
1072
- async function report(views, request, current_repo) {
1073
- note_external(views);
1074
- if (request !== void 0) return await report_single(views, request);
1075
- return report_aggregate(views, current_repo);
1076
- }
1077
- async function report_epics(views, options, current_repo) {
1078
- if (options.repo === void 0) return await report(views, void 0, current_repo);
1079
- const choice = await lane_capacity.lane_limit();
1080
- if (choice.kind === "problem") return refuse(choice.problem);
1081
- const request = epic_lane_offer.lane_request(
1082
- { repo: options.repo, is_all_lanes: options.is_all_lanes ?? false },
1083
- choice.limit,
1084
- current_repo
1085
- );
1086
- return await report(views, request, current_repo);
1087
- }
1088
- function views_of(reads, running = epic_outside_blocker.running_keys(reads.flatMap((read3) => read3.snapshot.children))) {
1089
- const paths = repo_discovery.discover_repositories(PROJECT_ROOT);
1090
- epic_cross_repo.reset_publish_cache();
1091
- epic_classify.reset_reported();
1092
- return epic_next_views.settle_views(
1093
- running,
1094
- (settled) => reads.map((read3) => ({
1095
- ...read3,
1096
- running: settled,
1097
- result: decide(read3.snapshot, paths, settled)
1098
- }))
1099
- );
1100
- }
1101
- function refuse_reads(result) {
1102
- if (result.refusal !== void 0) return refuse(result.refusal);
1103
- if (result.reads.length === NO_CHILDREN2) return refuse(result.notices.join("\n"));
1104
- for (const notice of result.notices) console.error(notice);
1105
- return void 0;
1106
- }
1107
- async function run_epics(options) {
1108
- const references = options.references ?? [];
1109
- if (references.length === NO_CHILDREN2) return refuse(USAGE);
1110
- const current_repo = await git_gh_command.repo_get_name_with_owner();
1111
- if (current_repo === void 0) return refuse(UNKNOWN_REPO);
1112
- const result = await epic_next_read.read_snapshots(references, current_repo);
1113
- const stopped = refuse_reads(result);
1114
- return stopped ?? await report_epics(views_of(result.reads), options, current_repo);
1115
- }
1116
- async function run(argv) {
1117
- const options = parse_options(argv);
1118
- if (options.references === void 0) {
1119
- console.error(options.usage ?? USAGE);
1120
- return FAILURE_EXIT_CODE;
1121
- }
1122
- return await run_epics(options);
1123
- }
1124
- var epic_next = {
1125
- EXTERNAL_NOTICE,
1126
- FOREIGN_EPIC: FOREIGN_EPIC2,
1127
- is_order_declared,
1128
- repo_verdict,
1129
- UNCHECKED_EXCLUSION,
1130
- parse_options,
1131
- refuse_reads,
1132
- views_of,
1133
- run,
1134
- run_epics,
1135
- decide,
1136
- report
1137
- };
1138
-
1139
- export {
1140
- lane_room,
1141
- epic_nested,
1142
- epic_outside_blocker,
1143
- epic_classify,
1144
- epic_report,
1145
- epic_rank,
1146
- epic_solo,
1147
- epic_solo_stale,
1148
- epic_next_read,
1149
- epic_next
1150
- };