@joshuafolkken/kit 1.3000.0 → 1.3044.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 (691) hide show
  1. package/.claude/skills/workflow-commands/backlogrun-steps.md +1 -1
  2. package/.claude/skills/workflow-commands/kickoff.md +6 -0
  3. package/.claude/skills/workflow-commands/progress-watcher.md +10 -8
  4. package/dist/.inputs-verified.json +1 -1
  5. package/dist/commands/adopt.js +12 -12
  6. package/dist/commands/auto-ok-judge-cli.js +18 -14
  7. package/dist/commands/auto-ok-main.js +42 -40
  8. package/dist/commands/backlog-budget-main.js +3 -3
  9. package/dist/commands/backlog-drive-cli.js +276 -188
  10. package/dist/commands/backlog-next-main.js +77 -75
  11. package/dist/commands/backlog-offer-main.js +80 -78
  12. package/dist/commands/backlog-plan-cli.js +96 -97
  13. package/dist/commands/backlog-triage-cli.js +94 -92
  14. package/dist/commands/backlogrun-cli.js +212 -206
  15. package/dist/commands/behavior-cli.js +12 -13
  16. package/dist/commands/bump-version-main.js +2 -2
  17. package/dist/commands/bytes-command.js +61 -22
  18. package/dist/commands/check-related.js +61 -60
  19. package/dist/commands/{chunk-X7PN54LZ.js → chunk-22DVQCP6.js} +16 -6
  20. package/dist/commands/{chunk-UTBVTCQN.js → chunk-24OATKOF.js} +301 -168
  21. package/dist/commands/{chunk-7GHOFHUS.js → chunk-24ZDAWML.js} +3 -3
  22. package/dist/commands/{chunk-HBNB3TLG.js → chunk-2BB5ZR2F.js} +13 -7
  23. package/dist/commands/{chunk-F22G3VDB.js → chunk-2BC33QPY.js} +1 -1
  24. package/dist/commands/{chunk-72EW7AVI.js → chunk-2BJJUTZA.js} +2 -2
  25. package/dist/commands/{chunk-XDQOWUVT.js → chunk-2CXT6MBR.js} +4 -4
  26. package/dist/commands/{chunk-TVJE67O2.js → chunk-2EZTYLO4.js} +6 -6
  27. package/dist/commands/{chunk-JLYW7CP6.js → chunk-2PHOLX62.js} +1 -1
  28. package/dist/commands/{chunk-6EU5ZCDP.js → chunk-2QM72JCJ.js} +23 -87
  29. package/dist/commands/{chunk-EFHSCUFN.js → chunk-2VFPUPSG.js} +2 -2
  30. package/dist/commands/{chunk-ATRMETHT.js → chunk-2XAH3MHV.js} +1 -1
  31. package/dist/commands/{chunk-T2E724HN.js → chunk-34JJYCIY.js} +2 -2
  32. package/dist/commands/{chunk-REMKUFAC.js → chunk-34KZDKQJ.js} +1 -1
  33. package/dist/commands/{chunk-GK2KY4MO.js → chunk-352KLSFX.js} +3 -3
  34. package/dist/commands/{chunk-7S6VRZOH.js → chunk-3AEDZZNL.js} +5 -5
  35. package/dist/commands/{chunk-KVJDDECB.js → chunk-3B2HEFNO.js} +2 -2
  36. package/dist/commands/{chunk-HZBTXKT2.js → chunk-3Z425MM3.js} +2 -2
  37. package/dist/commands/{chunk-J3G2R64I.js → chunk-3ZOX4G4U.js} +3 -3
  38. package/dist/commands/{chunk-LRS2OS5J.js → chunk-452HWOJ7.js} +2 -2
  39. package/dist/commands/{chunk-HRT4KWP4.js → chunk-475EFIJV.js} +1 -1
  40. package/dist/commands/{chunk-4HBVHYNL.js → chunk-47UZB54M.js} +3 -3
  41. package/dist/commands/{chunk-H4LYG37R.js → chunk-4DN4XVPL.js} +6 -6
  42. package/dist/commands/{chunk-TMLNI3YW.js → chunk-4HERA2GY.js} +1 -1
  43. package/dist/commands/{chunk-W6V4DWC5.js → chunk-4JI35CVO.js} +1 -1
  44. package/dist/commands/{chunk-YT342DRV.js → chunk-4L4LNWZ7.js} +2 -2
  45. package/dist/commands/{chunk-ZZAH3YQP.js → chunk-4N32QKJZ.js} +6 -6
  46. package/dist/commands/{chunk-GDUK5YPO.js → chunk-4NRSFLG7.js} +12 -12
  47. package/dist/commands/{chunk-O5QZ2S6X.js → chunk-4OKRPAUT.js} +4 -4
  48. package/dist/commands/{chunk-QDFDB4CF.js → chunk-4Q64PG46.js} +13 -13
  49. package/dist/commands/{chunk-HO52D6JY.js → chunk-4UDTQVDD.js} +14 -14
  50. package/dist/commands/{chunk-HPVLI26Z.js → chunk-4WR2LEZL.js} +6 -6
  51. package/dist/commands/{chunk-DP7WIGQ4.js → chunk-4ZJOC6OK.js} +4 -4
  52. package/dist/commands/{chunk-WTRDWEUQ.js → chunk-4ZQM4I7R.js} +12 -12
  53. package/dist/commands/{chunk-OTZJXU2R.js → chunk-54X37JEJ.js} +8 -8
  54. package/dist/commands/{chunk-A5V7EWIX.js → chunk-56KW5EOK.js} +2 -2
  55. package/dist/commands/chunk-5CG3XU3O.js +74 -0
  56. package/dist/commands/{chunk-FC33R5UN.js → chunk-5ESZLHDZ.js} +13 -15
  57. package/dist/commands/{chunk-OVA7STGP.js → chunk-5FBRMARM.js} +9 -9
  58. package/dist/commands/{chunk-SK2LJBFS.js → chunk-5PCK53WP.js} +3 -3
  59. package/dist/commands/{chunk-6NV2F7QH.js → chunk-5RG4S66L.js} +1 -1
  60. package/dist/commands/{chunk-JOARHU3M.js → chunk-5UJGACVN.js} +1 -1
  61. package/dist/commands/{chunk-NKOET4FB.js → chunk-5Y7B7FDL.js} +2 -2
  62. package/dist/commands/{chunk-XMBRXCIE.js → chunk-5Z6E5ZUV.js} +4 -4
  63. package/dist/commands/{chunk-RZ4OKKPM.js → chunk-5ZNUH4LV.js} +2 -2
  64. package/dist/commands/{chunk-7CHCZBNF.js → chunk-6CFHLMKM.js} +4 -4
  65. package/dist/commands/{chunk-TXXYC7EV.js → chunk-6DDK5XWK.js} +1 -1
  66. package/dist/commands/{chunk-2TQXCH2K.js → chunk-6GQX752S.js} +3 -3
  67. package/dist/commands/{chunk-RY6ZDHKB.js → chunk-6MAZ55GF.js} +107 -84
  68. package/dist/commands/{chunk-SNFLV7VV.js → chunk-6RUWU2SB.js} +2 -2
  69. package/dist/commands/{chunk-D4SZK7H2.js → chunk-6TIVDEKG.js} +2 -2
  70. package/dist/commands/{chunk-RIQ75QWR.js → chunk-6UCWAFQY.js} +55 -43
  71. package/dist/commands/{chunk-4D5KWMFL.js → chunk-6YURRFRU.js} +19 -19
  72. package/dist/commands/{chunk-7MOZEEFJ.js → chunk-6YVURZAJ.js} +1 -1
  73. package/dist/commands/{chunk-73JOEKIC.js → chunk-6Z4YZG7P.js} +5 -5
  74. package/dist/commands/{chunk-NJ53AWJU.js → chunk-77BIN247.js} +9 -9
  75. package/dist/commands/{chunk-MZHOPRI6.js → chunk-7ABHNNY3.js} +7 -7
  76. package/dist/commands/{chunk-6WTVAL4D.js → chunk-7C7FOKJK.js} +1 -1
  77. package/dist/commands/{chunk-KVSSLDA3.js → chunk-7HAGC6SW.js} +5 -5
  78. package/dist/commands/{chunk-IG22Y5MA.js → chunk-7KKUFLH5.js} +1 -1
  79. package/dist/commands/{chunk-ZQ3CKRMP.js → chunk-7MJYLUF4.js} +2 -2
  80. package/dist/commands/{chunk-6UGFS3EU.js → chunk-7NHZCI5Y.js} +11 -11
  81. package/dist/commands/{chunk-FB3D7CX5.js → chunk-7OQ56DVW.js} +5 -7
  82. package/dist/commands/{chunk-EK327QOS.js → chunk-7VWPGTZO.js} +10 -10
  83. package/dist/commands/{chunk-WSOF74K4.js → chunk-7YZXS3AK.js} +3 -3
  84. package/dist/commands/{chunk-N6TYL3B2.js → chunk-AAUDI7WJ.js} +2 -2
  85. package/dist/commands/{chunk-3GF52L5F.js → chunk-AC26ZUG5.js} +12 -24
  86. package/dist/commands/{chunk-EK2Y6B4X.js → chunk-ACZ52JPI.js} +7 -7
  87. package/dist/commands/{chunk-VD72V5VX.js → chunk-AJ65WNJB.js} +4 -4
  88. package/dist/commands/{chunk-MYWRGF5A.js → chunk-AK7SEO4Y.js} +2 -2
  89. package/dist/commands/{chunk-IBEKFLWG.js → chunk-ALDAS2WG.js} +9 -9
  90. package/dist/commands/{chunk-W32DIQEP.js → chunk-ARFBIJFS.js} +1 -1
  91. package/dist/commands/{chunk-F3WBEEYC.js → chunk-AVVMDVGO.js} +5 -5
  92. package/dist/commands/chunk-AXXEMVRJ.js +23 -0
  93. package/dist/commands/{chunk-GIGKMIPQ.js → chunk-B3M5WSGN.js} +1 -1
  94. package/dist/commands/{chunk-4Z5723GA.js → chunk-B7ZNIEDV.js} +5 -4
  95. package/dist/commands/{chunk-B3XFOHDX.js → chunk-BCUDQWYK.js} +10 -4
  96. package/dist/commands/{chunk-PR3JCPP7.js → chunk-BMKWSWWE.js} +1 -1
  97. package/dist/commands/{chunk-RZJAUVMI.js → chunk-BMM4RHCG.js} +2 -2
  98. package/dist/commands/{chunk-LAKVPOJQ.js → chunk-BMTYUJNT.js} +2 -2
  99. package/dist/commands/{chunk-DAJCUSPG.js → chunk-BRHPRDDV.js} +3 -3
  100. package/dist/commands/{chunk-UZAU6UI6.js → chunk-BRUBX64M.js} +2 -2
  101. package/dist/commands/{chunk-BFLFPKQQ.js → chunk-BTZJDHQT.js} +4 -4
  102. package/dist/commands/{chunk-AI5K4QJO.js → chunk-BYFC6MD2.js} +1 -1
  103. package/dist/commands/{chunk-JGTLNFFE.js → chunk-BYGJ3BCJ.js} +10 -10
  104. package/dist/commands/{chunk-5HWZFL4D.js → chunk-C54QXJD6.js} +51 -18
  105. package/dist/commands/{chunk-LMS6N6GE.js → chunk-CBAKBWSZ.js} +7 -7
  106. package/dist/commands/{chunk-7EAMUVIO.js → chunk-CFHRNTE5.js} +1 -1
  107. package/dist/commands/{chunk-UIWAMLQH.js → chunk-CGYDIYHD.js} +2 -2
  108. package/dist/commands/{chunk-4QYW2IL7.js → chunk-CHKYPF5O.js} +1 -1
  109. package/dist/commands/{chunk-5HCPSV45.js → chunk-CJBW6BWG.js} +8 -8
  110. package/dist/commands/chunk-CKUKK7JG.js +252 -0
  111. package/dist/commands/{chunk-4PES3BAA.js → chunk-CMHGDCGN.js} +3 -3
  112. package/dist/commands/{chunk-F6OWP2AY.js → chunk-CNGTHSUS.js} +22 -22
  113. package/dist/commands/{chunk-B2EA2HCY.js → chunk-COGKULQH.js} +4 -4
  114. package/dist/commands/{chunk-S7XWXG4M.js → chunk-CP2J4RV2.js} +175 -81
  115. package/dist/commands/{chunk-YGDNUTTI.js → chunk-CQUZ6TNQ.js} +2 -2
  116. package/dist/commands/chunk-CQZI7RIK.js +72 -0
  117. package/dist/commands/chunk-CVJHQOI3.js +153 -0
  118. package/dist/commands/{chunk-2MJ4OCDL.js → chunk-CWCKCZS6.js} +1 -1
  119. package/dist/commands/chunk-D5OHVIPM.js +17 -0
  120. package/dist/commands/{chunk-TPKFVVJQ.js → chunk-D6D6WQR6.js} +2 -2
  121. package/dist/commands/{chunk-5PAEXYIY.js → chunk-D7JRJI44.js} +69 -6
  122. package/dist/commands/{chunk-LOSOLCCW.js → chunk-D7OAU32Z.js} +1 -1
  123. package/dist/commands/{chunk-VZHC2I3T.js → chunk-DAAX7XDS.js} +8 -8
  124. package/dist/commands/{chunk-OHVAEJSM.js → chunk-DEZF7QZZ.js} +5 -5
  125. package/dist/commands/{chunk-CA6F5OXK.js → chunk-DYZOOWVW.js} +124 -21
  126. package/dist/commands/{chunk-TKGBF75Y.js → chunk-EDKOSZ3K.js} +5 -5
  127. package/dist/commands/{chunk-YPNTORQD.js → chunk-EFDVE5P5.js} +1 -1
  128. package/dist/commands/{chunk-EH3LVYOX.js → chunk-EGIHAEMT.js} +1 -1
  129. package/dist/commands/{chunk-7P4X4TQL.js → chunk-EKLU6QR7.js} +4 -4
  130. package/dist/commands/{chunk-ILQZFUDC.js → chunk-ELY76WAR.js} +2 -2
  131. package/dist/commands/{chunk-2VLHFILE.js → chunk-EM3HAZF6.js} +2 -2
  132. package/dist/commands/{chunk-F2HFWLQR.js → chunk-EMTZAGT5.js} +20 -1
  133. package/dist/commands/{chunk-GA4VIFHD.js → chunk-ERG4QRNG.js} +2 -2
  134. package/dist/commands/{chunk-ICEMFE2V.js → chunk-EUGNQCYK.js} +1 -1
  135. package/dist/commands/{chunk-3HU3LPIF.js → chunk-EXDFKKMH.js} +2 -2
  136. package/dist/commands/{chunk-ISPBJVXM.js → chunk-EXWB34R2.js} +7 -7
  137. package/dist/commands/{chunk-FNOSSXLG.js → chunk-EYMPBHDN.js} +2 -2
  138. package/dist/commands/{chunk-7V5UVKFG.js → chunk-EZ7IPKIH.js} +2 -2
  139. package/dist/commands/{chunk-KQWSENCT.js → chunk-F6IQHZYY.js} +3 -3
  140. package/dist/commands/{chunk-7ZECP3J6.js → chunk-FDS65XOJ.js} +5 -5
  141. package/dist/commands/{chunk-KXRFGPZD.js → chunk-FGG7V473.js} +21 -5
  142. package/dist/commands/{chunk-PZ6VWHOO.js → chunk-FHFWNNUC.js} +1 -1
  143. package/dist/commands/{chunk-XBRD2BDL.js → chunk-FJX7AENO.js} +2 -2
  144. package/dist/commands/{chunk-M42SLJCD.js → chunk-FKZ5E4JD.js} +4 -4
  145. package/dist/commands/{chunk-F2J6DGDM.js → chunk-FMZWRDKH.js} +8 -8
  146. package/dist/commands/{chunk-DSBK66US.js → chunk-FOKCRIAN.js} +10 -10
  147. package/dist/commands/{chunk-OI7KM4K3.js → chunk-FQGWO2ZH.js} +2 -2
  148. package/dist/commands/{chunk-2IESYBZH.js → chunk-FURNDIT3.js} +3 -3
  149. package/dist/commands/chunk-FVDQNMP6.js +93 -0
  150. package/dist/commands/{chunk-PZU6FZO6.js → chunk-FWU3H4TX.js} +1 -1
  151. package/dist/commands/{chunk-RYZ3RQRH.js → chunk-G3HBYHFA.js} +1 -1
  152. package/dist/commands/{chunk-HCA5QG2U.js → chunk-G4E4M2P4.js} +2 -2
  153. package/dist/commands/{chunk-VJLZ3IQQ.js → chunk-G5KSL2Q2.js} +1 -1
  154. package/dist/commands/{chunk-Y5ZW3KN5.js → chunk-G6XC7V6Y.js} +2 -2
  155. package/dist/commands/{chunk-73EBNBUW.js → chunk-GCPP5XIG.js} +1 -1
  156. package/dist/commands/{chunk-Q3463XNL.js → chunk-GITT5A5A.js} +3 -3
  157. package/dist/commands/{chunk-T2IO4LEB.js → chunk-GLC47H7I.js} +10 -10
  158. package/dist/commands/{chunk-GA6E4VGO.js → chunk-GUR54ELE.js} +1 -1
  159. package/dist/commands/{chunk-7IT23HIR.js → chunk-GY4DMCKS.js} +2 -2
  160. package/dist/commands/{chunk-PZ4ITSLG.js → chunk-H6JQRHDC.js} +3 -3
  161. package/dist/commands/{chunk-ZHZSZNE2.js → chunk-HATKF6VX.js} +2 -2
  162. package/dist/commands/{chunk-ELWNRE6E.js → chunk-HH3CVIFU.js} +5 -5
  163. package/dist/commands/{chunk-7GMTJDO2.js → chunk-HHMMGDMP.js} +6 -6
  164. package/dist/commands/{chunk-VD5674LW.js → chunk-HI5WPM6C.js} +2 -2
  165. package/dist/commands/{chunk-JUUBDYFZ.js → chunk-HQSWPRUF.js} +4 -4
  166. package/dist/commands/{chunk-ZAJD6T6E.js → chunk-HVCQYZVD.js} +2 -2
  167. package/dist/commands/chunk-HWEZRNPL.js +66 -0
  168. package/dist/commands/{chunk-J6GIVMXI.js → chunk-HX3FFIO5.js} +18 -3
  169. package/dist/commands/{chunk-GU5ML3Y3.js → chunk-HXDTA5VU.js} +13 -68
  170. package/dist/commands/{chunk-BNXE3NVB.js → chunk-I2KCGKJI.js} +1 -1
  171. package/dist/commands/{chunk-LC7SBONO.js → chunk-IAD4WLLI.js} +1 -1
  172. package/dist/commands/{chunk-WWC5L3AO.js → chunk-IB5TT73I.js} +2 -2
  173. package/dist/commands/{chunk-HOSZITJM.js → chunk-IBAYXCMU.js} +2 -2
  174. package/dist/commands/chunk-IGDJNXX2.js +49 -0
  175. package/dist/commands/{chunk-OJ4LGBVD.js → chunk-ILIITIMQ.js} +3 -3
  176. package/dist/commands/{chunk-CUR2WNYB.js → chunk-IRGDMSTI.js} +3 -3
  177. package/dist/commands/{chunk-PZTWQYRI.js → chunk-IYJEBWW5.js} +3 -3
  178. package/dist/commands/{chunk-A3D2XHOJ.js → chunk-J22PSIXR.js} +40 -9
  179. package/dist/commands/{chunk-O27H6NN6.js → chunk-J66YBAAM.js} +3 -5
  180. package/dist/commands/{chunk-P6RGQXHI.js → chunk-J6WKZRV2.js} +2 -2
  181. package/dist/commands/{chunk-NFEBQED3.js → chunk-J7IO3AYH.js} +2 -2
  182. package/dist/commands/{chunk-T57W3UWK.js → chunk-JAKC2BHX.js} +1 -1
  183. package/dist/commands/{chunk-3EO2XN3A.js → chunk-JCAQ7B6J.js} +4 -4
  184. package/dist/commands/{chunk-QQZOQ7AM.js → chunk-JFLFGLE4.js} +1 -1
  185. package/dist/commands/{chunk-ZDSDPKCD.js → chunk-JIGBNCDR.js} +1 -1
  186. package/dist/commands/{chunk-Q5N2J2UF.js → chunk-JJHWTFWQ.js} +5 -7
  187. package/dist/commands/{chunk-EI6JG5DF.js → chunk-JKOGWGQM.js} +1 -1
  188. package/dist/commands/{chunk-RK4HE5NW.js → chunk-JM6EVOFN.js} +4 -4
  189. package/dist/commands/{chunk-EBNIX2TC.js → chunk-JV24VP2O.js} +1 -1
  190. package/dist/commands/{chunk-BCK5LW4F.js → chunk-JVKXJ763.js} +3 -3
  191. package/dist/commands/{chunk-D5TAR6TV.js → chunk-JZHY7D6D.js} +1 -1
  192. package/dist/commands/{chunk-CRNPPKP2.js → chunk-JZK33TA5.js} +1 -1
  193. package/dist/commands/{chunk-UOAG2XQT.js → chunk-K275REYP.js} +3 -3
  194. package/dist/commands/{chunk-HESMKHEB.js → chunk-K4G3HOKS.js} +2 -2
  195. package/dist/commands/{chunk-L6XN3EXI.js → chunk-K64EIHD2.js} +1 -1
  196. package/dist/commands/{chunk-RINVPTA2.js → chunk-KCFOP5RI.js} +28 -28
  197. package/dist/commands/{chunk-O26Y2FOJ.js → chunk-KGE4AS2Y.js} +1 -1
  198. package/dist/commands/{chunk-EWA72KO7.js → chunk-KK2SL42W.js} +2 -2
  199. package/dist/commands/{chunk-MMXZKLDU.js → chunk-KK7TEL5G.js} +10 -4
  200. package/dist/commands/{chunk-UEURNXE5.js → chunk-KKIMVXAP.js} +2 -2
  201. package/dist/commands/{chunk-MAGJFH5T.js → chunk-KODXWMBX.js} +6 -6
  202. package/dist/commands/{chunk-D4HNS43Q.js → chunk-KPSKWTOS.js} +17 -17
  203. package/dist/commands/{chunk-VFJYOAOQ.js → chunk-KTV2HNWB.js} +2 -2
  204. package/dist/commands/{chunk-OWR2TCOY.js → chunk-KWYQR5MK.js} +5 -5
  205. package/dist/commands/{chunk-FNQW6NY7.js → chunk-KXK2A2HB.js} +6 -2
  206. package/dist/commands/{chunk-O5FVBIRI.js → chunk-KZ5BBBMO.js} +5 -5
  207. package/dist/commands/{chunk-JUJFIATR.js → chunk-KZ7HD37E.js} +6 -6
  208. package/dist/commands/{chunk-2YCKPX3A.js → chunk-KZZWPUJW.js} +1 -1
  209. package/dist/commands/{chunk-MYNM3YMR.js → chunk-L7DAL54N.js} +3 -3
  210. package/dist/commands/{chunk-NOXLKIPR.js → chunk-LAR76BFA.js} +1 -1
  211. package/dist/commands/{chunk-ZA3W73PF.js → chunk-LB557AHJ.js} +3 -3
  212. package/dist/commands/{chunk-LYEKT3IN.js → chunk-LEB2VP7F.js} +1 -1
  213. package/dist/commands/{chunk-WQJ7O3C3.js → chunk-LJXKVLYI.js} +1 -1
  214. package/dist/commands/{chunk-CHX4QTP4.js → chunk-LJZERYLG.js} +1 -1
  215. package/dist/commands/{chunk-PF22VUWB.js → chunk-LOOFYHUM.js} +76 -26
  216. package/dist/commands/{chunk-HIPO6HUG.js → chunk-LPSULLNK.js} +1 -1
  217. package/dist/commands/{chunk-G47ZNQVG.js → chunk-LR22UK5W.js} +1 -1
  218. package/dist/commands/{chunk-SV4FHQE7.js → chunk-LT7QSHR4.js} +14 -14
  219. package/dist/commands/{chunk-HIB5G2X6.js → chunk-LUXWDMKI.js} +7 -7
  220. package/dist/commands/{chunk-XH6BGVVP.js → chunk-LX7TIEMI.js} +9 -36
  221. package/dist/commands/{chunk-OGNTJ5JB.js → chunk-LYO6TX5L.js} +1 -1
  222. package/dist/commands/{chunk-JLREFWJ4.js → chunk-LZ5QXE5N.js} +6 -6
  223. package/dist/commands/{chunk-WW3TX742.js → chunk-LZPPSOTP.js} +4 -4
  224. package/dist/commands/{chunk-5WIZR5SC.js → chunk-M4UV3BEV.js} +11 -11
  225. package/dist/commands/{chunk-LNBUIOK6.js → chunk-M6JDU5EK.js} +4 -4
  226. package/dist/commands/{chunk-VZSJCFRT.js → chunk-MFBNNTBM.js} +4 -4
  227. package/dist/commands/{chunk-KHWTJ4F7.js → chunk-MI2OS6TL.js} +3 -3
  228. package/dist/commands/{chunk-VZCQZFPH.js → chunk-MLW4S35K.js} +19 -8
  229. package/dist/commands/{chunk-RIUPRMLW.js → chunk-MN425CU6.js} +1 -1
  230. package/dist/commands/{chunk-7W3D3WRW.js → chunk-MOIOSCZM.js} +2 -2
  231. package/dist/commands/{chunk-3BNNMJOT.js → chunk-MRORPFSO.js} +20 -320
  232. package/dist/commands/{chunk-LA5WTOAM.js → chunk-MUGTOJUL.js} +12 -12
  233. package/dist/commands/{chunk-L6LU2633.js → chunk-MVHPRYHE.js} +1 -1
  234. package/dist/commands/{chunk-EKCKCX5S.js → chunk-MWO6FOSZ.js} +123 -21
  235. package/dist/commands/{chunk-AVUGMOHZ.js → chunk-N7QTMTST.js} +2 -2
  236. package/dist/commands/{chunk-LMSS4ARB.js → chunk-NDBX7LSS.js} +1 -1
  237. package/dist/commands/{chunk-BEE7OAQ5.js → chunk-NDWZTWXV.js} +21 -2
  238. package/dist/commands/{chunk-6TESOL3L.js → chunk-NEGJ77RV.js} +7 -7
  239. package/dist/commands/{chunk-LCEJXF7A.js → chunk-NEGRE5VW.js} +4 -4
  240. package/dist/commands/{chunk-IXX4SXIP.js → chunk-NFPD2P3V.js} +1 -1
  241. package/dist/commands/chunk-NHIW7JE6.js +335 -0
  242. package/dist/commands/{chunk-CJSFC5YI.js → chunk-NILSN7A4.js} +7 -7
  243. package/dist/commands/{chunk-W4J6YTFE.js → chunk-NOLFSPOB.js} +2 -2
  244. package/dist/commands/chunk-NT67QTZO.js +65 -0
  245. package/dist/commands/{chunk-NJT5L6IC.js → chunk-NU7W6QGT.js} +33 -4
  246. package/dist/commands/chunk-NUR4FQHM.js +21 -0
  247. package/dist/commands/{chunk-OKKQI4ZG.js → chunk-OAAVY2JK.js} +1 -1
  248. package/dist/commands/chunk-OF4BY4N7.js +32 -0
  249. package/dist/commands/{chunk-W47I2KDY.js → chunk-OGS2DK7I.js} +3 -3
  250. package/dist/commands/{chunk-MS6Q3Z7V.js → chunk-OIPV3PWW.js} +6 -6
  251. package/dist/commands/{chunk-T33QDAWD.js → chunk-OIX2363L.js} +1 -1
  252. package/dist/commands/{chunk-GPMSYXYO.js → chunk-OJ65BZBV.js} +283 -15
  253. package/dist/commands/{chunk-34LAULSC.js → chunk-OKZWEVR4.js} +3 -3
  254. package/dist/commands/{chunk-2CXAVVST.js → chunk-OL6IF4JC.js} +1 -1
  255. package/dist/commands/{chunk-6JVNRY5A.js → chunk-OMPRILFH.js} +1 -1
  256. package/dist/commands/{chunk-VGHSZLYQ.js → chunk-OOWGH2RG.js} +1 -1
  257. package/dist/commands/{chunk-ERGZPWKP.js → chunk-OP2RFVLS.js} +1 -1
  258. package/dist/commands/{chunk-UU6GCJGM.js → chunk-ORKVN2LO.js} +2 -2
  259. package/dist/commands/{chunk-RHII5XI6.js → chunk-OSBWXZJ4.js} +24 -24
  260. package/dist/commands/{chunk-D3SHCUBC.js → chunk-OVWPZDWP.js} +2 -2
  261. package/dist/commands/{chunk-Z4HYBFZD.js → chunk-OWYK2BEJ.js} +108 -46
  262. package/dist/commands/{chunk-P4O67FP5.js → chunk-OX3VQLV2.js} +6 -6
  263. package/dist/commands/{chunk-L6TU7FC2.js → chunk-OZJP77UM.js} +4 -4
  264. package/dist/commands/{chunk-SNO7CY2B.js → chunk-P3H3DKTE.js} +2 -2
  265. package/dist/commands/{chunk-2OIX4JLA.js → chunk-P5SOYWH2.js} +3 -3
  266. package/dist/commands/{chunk-M4PEC7YW.js → chunk-PHLOTUB7.js} +54 -37
  267. package/dist/commands/{chunk-73KBUQKI.js → chunk-PTNQCCIB.js} +2 -2
  268. package/dist/commands/{chunk-4P2LCVGO.js → chunk-PTZEFQUX.js} +8 -8
  269. package/dist/commands/{chunk-DJVMC3U2.js → chunk-Q426ZSZ4.js} +1 -1
  270. package/dist/commands/{chunk-US6X7JXC.js → chunk-Q7EEIOAD.js} +4 -4
  271. package/dist/commands/{chunk-LE7TFPMU.js → chunk-QABRNGQV.js} +2 -2
  272. package/dist/commands/{chunk-NGKB632X.js → chunk-QDFVVRQP.js} +3 -3
  273. package/dist/commands/{chunk-36M2UV6C.js → chunk-QGATHT4S.js} +38 -4
  274. package/dist/commands/{chunk-DIB2Z2OS.js → chunk-QJRVDE7T.js} +1 -1
  275. package/dist/commands/{chunk-KUJQWO6M.js → chunk-QKTTKAXM.js} +2 -2
  276. package/dist/commands/{chunk-DXZW4V7J.js → chunk-QMDKDQKW.js} +3 -3
  277. package/dist/commands/{chunk-VW5SGE7A.js → chunk-QOSC5RKD.js} +1 -1
  278. package/dist/commands/{chunk-ENLWXAHD.js → chunk-QV5FKMOU.js} +1 -1
  279. package/dist/commands/{chunk-32SNWQJP.js → chunk-R2THGPI3.js} +2 -2
  280. package/dist/commands/{chunk-RVHBWSIG.js → chunk-R54Z2Z3X.js} +2 -2
  281. package/dist/commands/{chunk-CJAA5GAF.js → chunk-RG53UFNW.js} +15 -15
  282. package/dist/commands/{chunk-HJKZDDDI.js → chunk-RHKCWJQX.js} +1 -1
  283. package/dist/commands/{chunk-RPDWFUQO.js → chunk-RKIAX4DZ.js} +36 -84
  284. package/dist/commands/{chunk-LE2T3FGJ.js → chunk-RLBFEHHC.js} +2 -4
  285. package/dist/commands/{chunk-5GBZ43UA.js → chunk-RMDLFLPE.js} +1 -1
  286. package/dist/commands/{chunk-U2UH4VM4.js → chunk-RN2YDNLF.js} +2 -2
  287. package/dist/commands/{chunk-GQHUFNXN.js → chunk-RRAIRS2T.js} +1 -1
  288. package/dist/commands/{chunk-DRCTDVI2.js → chunk-RUQY5TS3.js} +3 -3
  289. package/dist/commands/{chunk-WGULS5DA.js → chunk-RW64VHEB.js} +1 -0
  290. package/dist/commands/{chunk-4G7NKNAZ.js → chunk-RXYMJPJB.js} +3 -3
  291. package/dist/commands/{chunk-B33BTNB4.js → chunk-S4M6UWR2.js} +21 -5
  292. package/dist/commands/{chunk-4Q4FXBUQ.js → chunk-SASX3W2M.js} +2 -2
  293. package/dist/commands/{chunk-TIXJY22D.js → chunk-SJ2ZN575.js} +5 -5
  294. package/dist/commands/{chunk-NSZTSCBW.js → chunk-SP7DKYGU.js} +13 -13
  295. package/dist/commands/{chunk-T3FD3Q73.js → chunk-SRG6PKVS.js} +1 -1
  296. package/dist/commands/{chunk-QA22PBCJ.js → chunk-SSL6A3Y4.js} +3 -3
  297. package/dist/commands/{chunk-4BEIYKI2.js → chunk-SV4FZR24.js} +2 -0
  298. package/dist/commands/{chunk-HZSQI6TD.js → chunk-SVTS7ACS.js} +2 -2
  299. package/dist/commands/{chunk-F7XLEK55.js → chunk-SVV4U5AR.js} +1 -1
  300. package/dist/commands/{chunk-RRQFITJE.js → chunk-SXJM4DZ5.js} +1 -1
  301. package/dist/commands/{chunk-OIDMJASD.js → chunk-SYB3M632.js} +1 -1
  302. package/dist/commands/{chunk-UJOZ2MGX.js → chunk-SYOXIKB7.js} +6 -6
  303. package/dist/commands/{chunk-5SB37YDW.js → chunk-SZG5HDNP.js} +3 -3
  304. package/dist/commands/{chunk-R2CF6VZE.js → chunk-T4F33UKZ.js} +4 -4
  305. package/dist/commands/{chunk-ESQEEL4O.js → chunk-TAEGXID2.js} +2 -2
  306. package/dist/commands/chunk-TEPYEUYG.js +585 -0
  307. package/dist/commands/{chunk-LUMCYDGE.js → chunk-TFLHYC2F.js} +2 -2
  308. package/dist/commands/{chunk-V5OIPYA6.js → chunk-TJKM56WJ.js} +4 -4
  309. package/dist/commands/{chunk-CYQ3ZF7R.js → chunk-TLAB552K.js} +86 -13
  310. package/dist/commands/{chunk-ST32OGPY.js → chunk-TP6L4W3W.js} +5 -5
  311. package/dist/commands/{chunk-C26LKDBE.js → chunk-TR7WWYD5.js} +1 -1
  312. package/dist/commands/{chunk-PWYXY46Y.js → chunk-TYNH2R66.js} +15 -15
  313. package/dist/commands/{chunk-AZUE65NT.js → chunk-U5P6G3UV.js} +2 -2
  314. package/dist/commands/{chunk-REPANBLS.js → chunk-U7Y6RKLK.js} +1 -1
  315. package/dist/commands/{chunk-55I7OYHI.js → chunk-UIMMWH7U.js} +1 -1
  316. package/dist/commands/{chunk-72J2G2E7.js → chunk-UKBBWMLE.js} +20 -20
  317. package/dist/commands/{chunk-VTLL6CKO.js → chunk-UNMSZGSG.js} +14 -14
  318. package/dist/commands/chunk-UOVUUVDK.js +18 -0
  319. package/dist/commands/{chunk-JNWHX25C.js → chunk-URDT2O2K.js} +1 -1
  320. package/dist/commands/{chunk-FGZQSSGH.js → chunk-UREXZJDB.js} +1 -1
  321. package/dist/commands/{chunk-O4WBADCX.js → chunk-UTHUX7VU.js} +3 -3
  322. package/dist/commands/{chunk-PDDKRHHS.js → chunk-V5OUZFWK.js} +3 -3
  323. package/dist/commands/{chunk-N4O5I55P.js → chunk-VCPGFBMN.js} +8 -8
  324. package/dist/commands/{chunk-WN7NK3NY.js → chunk-VGPIQNDB.js} +1 -1
  325. package/dist/commands/{chunk-HOGFJHBT.js → chunk-VJS2MCLA.js} +1 -1
  326. package/dist/commands/{chunk-4YI4SLRJ.js → chunk-VK6D5CWA.js} +8 -8
  327. package/dist/commands/{chunk-4LWRCPS5.js → chunk-VOF3N4WO.js} +3 -3
  328. package/dist/commands/{chunk-AM44D7NF.js → chunk-VQRT32JB.js} +1 -1
  329. package/dist/commands/{chunk-AS3GWVAN.js → chunk-VQVPAVQ3.js} +1 -1
  330. package/dist/commands/{chunk-6VTJO5L2.js → chunk-VV4TQYGD.js} +3 -3
  331. package/dist/commands/{chunk-WIE7VUBE.js → chunk-W7DRUOF7.js} +5 -5
  332. package/dist/commands/{chunk-HH2KDLTP.js → chunk-WAEN2RTT.js} +2 -2
  333. package/dist/commands/{chunk-NKKH3PBE.js → chunk-WB4T3VY2.js} +18 -1
  334. package/dist/commands/{chunk-DNJC7X73.js → chunk-WCEUMOKK.js} +2 -2
  335. package/dist/commands/{chunk-BK6Q4VCA.js → chunk-WTH6NTXU.js} +4 -4
  336. package/dist/commands/{chunk-WG6GYBRJ.js → chunk-WWVYEHQT.js} +2 -1
  337. package/dist/commands/{chunk-P4CWLRT2.js → chunk-X3TNPALI.js} +1 -1
  338. package/dist/commands/{chunk-LZNYHWRO.js → chunk-XC6GG5JR.js} +3 -3
  339. package/dist/commands/{chunk-RI7EQYKL.js → chunk-XFWI6WHH.js} +2 -2
  340. package/dist/commands/{chunk-BY3POLIQ.js → chunk-XHGWMD3L.js} +7 -7
  341. package/dist/commands/{chunk-BPSJSHYD.js → chunk-XI2ABCRX.js} +2 -2
  342. package/dist/commands/{chunk-TS4ZK46L.js → chunk-XKSUBUIH.js} +5 -5
  343. package/dist/commands/{chunk-K7GL3BGI.js → chunk-XPBF5DG3.js} +4 -4
  344. package/dist/commands/{chunk-6SKMZGER.js → chunk-XUMYPESL.js} +20 -8
  345. package/dist/commands/{chunk-QS5USD4T.js → chunk-XXC32PVL.js} +5 -4
  346. package/dist/commands/{chunk-ORSI7Y55.js → chunk-XXN2EZBY.js} +1 -1
  347. package/dist/commands/{chunk-IZVM2TTH.js → chunk-XZQWEVR3.js} +2 -2
  348. package/dist/commands/{chunk-E3CXOVPQ.js → chunk-Y27PTXXI.js} +1 -1
  349. package/dist/commands/{chunk-337QQM4C.js → chunk-Y4EBUI6M.js} +106 -5
  350. package/dist/commands/{chunk-WRX3MINT.js → chunk-YAU3LYNF.js} +1 -1
  351. package/dist/commands/{chunk-JB7R3A4A.js → chunk-YDURQICF.js} +4 -4
  352. package/dist/commands/{chunk-RX5JSPPH.js → chunk-YGFOGA7C.js} +11 -11
  353. package/dist/commands/{chunk-S6SXMBF2.js → chunk-YHJ2AJMA.js} +2 -2
  354. package/dist/commands/{chunk-MVPUQLN5.js → chunk-YM77CF4D.js} +4 -4
  355. package/dist/commands/{chunk-ZYIMQHCB.js → chunk-YNPRJCEO.js} +6 -6
  356. package/dist/commands/{chunk-3UKJFWKS.js → chunk-YTBQAD5W.js} +3 -3
  357. package/dist/commands/{chunk-KIVOZY2J.js → chunk-ZBZ5DDCH.js} +66 -64
  358. package/dist/commands/{chunk-TAPDXK34.js → chunk-ZLRUHSOP.js} +1 -1
  359. package/dist/commands/{chunk-XYAK53TK.js → chunk-ZNR75OXP.js} +2 -1
  360. package/dist/commands/{chunk-CADFBQJJ.js → chunk-ZSOR4ISJ.js} +4 -4
  361. package/dist/commands/{chunk-6NRTLH6I.js → chunk-ZYFHYQA7.js} +1 -1
  362. package/dist/commands/{chunk-Q7TV3OV6.js → chunk-ZZFFSQF4.js} +4 -4
  363. package/dist/commands/{chunk-PDAY76AN.js → chunk-ZZULXNC2.js} +1 -1
  364. package/dist/commands/{chunk-5Y7QQYTU.js → chunk-ZZXO6TFH.js} +1 -1
  365. package/dist/commands/code-symbol-cli.js +4 -4
  366. package/dist/commands/codex-hook-adapter.js +99 -100
  367. package/dist/commands/command-derive.js +10 -10
  368. package/dist/commands/cost-audit-main.js +94 -92
  369. package/dist/commands/cspell-cached.js +24 -23
  370. package/dist/commands/defect-origin-main.js +19 -18
  371. package/dist/commands/defect-report-main.js +15 -14
  372. package/dist/commands/disposition-cli.js +67 -64
  373. package/dist/commands/doctor.js +3 -3
  374. package/dist/commands/document-read-cli.js +89 -9
  375. package/dist/commands/document-section-main.js +89 -9
  376. package/dist/commands/edit-files-cli.js +1 -1
  377. package/dist/commands/effect-audit-cli.js +20 -19
  378. package/dist/commands/epic-audit-main.js +55 -53
  379. package/dist/commands/epic-bundle-main.js +87 -85
  380. package/dist/commands/epic-check.js +16 -15
  381. package/dist/commands/epic-main.js +93 -91
  382. package/dist/commands/epic-next-main.js +51 -49
  383. package/dist/commands/format-edited-cli.js +30 -32
  384. package/dist/commands/format.js +11 -10
  385. package/dist/commands/fresh-machine-cli.js +6 -6
  386. package/dist/commands/git-followup-workflow.js +137 -122
  387. package/dist/commands/git-workflow.js +28 -27
  388. package/dist/commands/github-release-cli.js +26 -3
  389. package/dist/commands/hook-ledger-cli.js +74 -126
  390. package/dist/commands/init-main.js +20 -19
  391. package/dist/commands/inputs.json +1909 -1878
  392. package/dist/commands/issue-ack-cli.js +5 -5
  393. package/dist/commands/issue-already-done-cli.js +63 -58
  394. package/dist/commands/issue-body-cli.js +44 -42
  395. package/dist/commands/issue-cite-main.js +11 -10
  396. package/dist/commands/issue-comment-main.js +15 -11
  397. package/dist/commands/issue-consolidate-cli.js +31 -30
  398. package/dist/commands/issue-file-main.js +114 -110
  399. package/dist/commands/issue-fold-existing-cli.js +88 -86
  400. package/dist/commands/issue-fold-main.js +26 -25
  401. package/dist/commands/issue-lint-main.js +38 -37
  402. package/dist/commands/issue-measured-cli.js +66 -61
  403. package/dist/commands/issue-plan-cli.js +103 -101
  404. package/dist/commands/issue-premise-unmet-cli.js +66 -61
  405. package/dist/commands/issue-priority-cli.js +13 -12
  406. package/dist/commands/issue-read-main.js +18 -17
  407. package/dist/commands/issue-release-class-cli.js +12 -11
  408. package/dist/commands/issue-release-main.js +13 -12
  409. package/dist/commands/issue-scout-main.js +89 -87
  410. package/dist/commands/issue-spill-main.js +114 -110
  411. package/dist/commands/issue-state-main.js +16 -15
  412. package/dist/commands/issue-tick-cli.js +14 -13
  413. package/dist/commands/josh-completion.js +10 -10
  414. package/dist/commands/lane-adopt-cli.js +19 -19
  415. package/dist/commands/lane-breakdown-cli.js +154 -126
  416. package/dist/commands/lane-cli.js +131 -125
  417. package/dist/commands/lane-launch-main.js +17 -17
  418. package/dist/commands/lane-limit-cli.js +81 -79
  419. package/dist/commands/lane-measure-cli.js +246 -130
  420. package/dist/commands/lane-pause-cli.js +15 -15
  421. package/dist/commands/lane-plan-cli.js +108 -101
  422. package/dist/commands/lane-resolve-cli.js +20 -19
  423. package/dist/commands/lane-restart-cli.js +124 -118
  424. package/dist/commands/lane-why-cli.js +85 -82
  425. package/dist/commands/lane-withdraw-cli.js +49 -48
  426. package/dist/commands/latest-corepack.js +3 -3
  427. package/dist/commands/latest-if-required-cli.js +9 -9
  428. package/dist/commands/latest-scope-main.js +5 -5
  429. package/dist/commands/latest-update.js +3 -3
  430. package/dist/commands/lines-command.js +3 -3
  431. package/dist/commands/lint-parallel-main.js +32 -31
  432. package/dist/commands/lint-related.js +79 -60
  433. package/dist/commands/lint-rule.js +32 -31
  434. package/dist/commands/lockfile-policy.js +11 -11
  435. package/dist/commands/main-merge-main.js +5 -5
  436. package/dist/commands/main-sync-main.js +5 -5
  437. package/dist/commands/managed-config-scope-cli.js +3 -3
  438. package/dist/commands/measure-rerun-cli.js +10 -10
  439. package/dist/commands/metrics-command.js +91 -58
  440. package/dist/commands/observation-record-cli.js +3 -3
  441. package/dist/commands/observations-flush-cli.js +27 -25
  442. package/dist/commands/oracle-list-cli.js +2 -2
  443. package/dist/commands/overrides-check.js +4 -4
  444. package/dist/commands/package-scout-cli.js +67 -26
  445. package/dist/commands/plan-consumers-main.js +4 -4
  446. package/dist/commands/plan-scaffold-cli.js +132 -91
  447. package/dist/commands/pr-classification-main.js +3 -3
  448. package/dist/commands/pre-commit-lint.js +11 -12
  449. package/dist/commands/pre-commit-type-check.js +25 -24
  450. package/dist/commands/pre-push-unit.js +33 -33
  451. package/dist/commands/pretool-guard-cli.js +90 -91
  452. package/dist/commands/project-profile-cli.js +5 -4
  453. package/dist/commands/propagate.js +15 -15
  454. package/dist/commands/prose-stale-cli.js +20 -19
  455. package/dist/commands/publishable-range-check.js +4 -4
  456. package/dist/commands/read-files-cli.js +2 -2
  457. package/dist/commands/read-set-cli.js +61 -24
  458. package/dist/commands/refactor-scan-cli.js +6 -6
  459. package/dist/commands/release-cli.js +64 -36
  460. package/dist/commands/release-scope-main.js +19 -18
  461. package/dist/commands/rename-cli.js +27 -29
  462. package/dist/commands/reserved-run.js +3 -3
  463. package/dist/commands/retrospective-cli.js +104 -102
  464. package/dist/commands/review-attest-cli.js +6 -6
  465. package/dist/commands/review-brief-main.js +127 -109
  466. package/dist/commands/review-findings-cli.js +2 -2
  467. package/dist/commands/review-pair-cli.js +110 -84
  468. package/dist/commands/review-record-main.js +108 -83
  469. package/dist/commands/review-round2-cli.js +46 -45
  470. package/dist/commands/review-stops-cli.js +16 -16
  471. package/dist/commands/review-submit-cli.js +127 -109
  472. package/dist/commands/rule-list.js +58 -60
  473. package/dist/commands/rule-value-cli.js +226 -74
  474. package/dist/commands/run-add-cli.js +28 -27
  475. package/dist/commands/run-board-main.js +136 -132
  476. package/dist/commands/run-carry-cli.js +127 -124
  477. package/dist/commands/run-chain-cli.js +116 -93
  478. package/dist/commands/run-cut-cli.js +124 -119
  479. package/dist/commands/run-ending-cli.js +19 -22
  480. package/dist/commands/run-entry-cli.js +183 -180
  481. package/dist/commands/run-event-cli.js +5 -5
  482. package/dist/commands/run-handoff-cli.js +52 -28
  483. package/dist/commands/run-handoff-lanes-cli.js +15 -15
  484. package/dist/commands/run-hold-main.js +64 -62
  485. package/dist/commands/run-liveness-cli.js +11 -11
  486. package/dist/commands/run-merge-main.js +119 -116
  487. package/dist/commands/run-next-cli.js +87 -86
  488. package/dist/commands/run-park-cli.js +111 -92
  489. package/dist/commands/run-pause-cli.js +147 -133
  490. package/dist/commands/run-pickup-cli.js +13 -13
  491. package/dist/commands/run-prep-main.js +83 -82
  492. package/dist/commands/run-prime-cli.js +107 -87
  493. package/dist/commands/run-progress-main.js +123 -107
  494. package/dist/commands/run-report-cli.js +25 -24
  495. package/dist/commands/run-review-cli.js +168 -149
  496. package/dist/commands/run-ship-cli.js +208 -203
  497. package/dist/commands/run-ship-evidence-cli.js +38 -37
  498. package/dist/commands/run-ship-wait-main.js +40 -37
  499. package/dist/commands/run-split-cli.js +127 -125
  500. package/dist/commands/run-stale-main.js +36 -35
  501. package/dist/commands/run-status-cli.js +16 -15
  502. package/dist/commands/run-step-cli.js +173 -164
  503. package/dist/commands/run-tail-cli.js +1 -1
  504. package/dist/commands/run-tidy-main.js +30 -29
  505. package/dist/commands/run-wake-main.js +137 -119
  506. package/dist/commands/run-watcher-guard-cli.js +30 -29
  507. package/dist/commands/secretlint-scan.js +2 -2
  508. package/dist/commands/selfcheck-cli.js +27 -26
  509. package/dist/commands/session-language-main.js +48 -28
  510. package/dist/commands/sonar-hotspots-cli.js +3 -3
  511. package/dist/commands/split-assess-cli.js +24 -23
  512. package/dist/commands/split-child-recover-cli.js +13 -12
  513. package/dist/commands/start.js +37 -35
  514. package/dist/commands/stash-pop-main.js +3 -3
  515. package/dist/commands/stash-push-main.js +3 -3
  516. package/dist/commands/stop-guard.js +144 -143
  517. package/dist/commands/sync-main.js +11 -10
  518. package/dist/commands/telegram-test-main.js +5 -5
  519. package/dist/commands/test-declared.js +9 -8
  520. package/dist/commands/test-e2e-guard.js +23 -22
  521. package/dist/commands/test-pinned-main.js +26 -25
  522. package/dist/commands/test-reach-cli.js +15 -14
  523. package/dist/commands/test-red-main.js +5 -5
  524. package/dist/commands/{test-related-ZT2AO62I.js → test-related-ZCNC46MS.js} +31 -31
  525. package/dist/commands/test-related-main.js +51 -50
  526. package/dist/commands/test-unit-guard-main.js +9 -8
  527. package/dist/commands/time-cli.js +24 -27
  528. package/dist/commands/time-density-cli.js +8 -9
  529. package/dist/commands/tree-status-cli.js +4 -4
  530. package/dist/commands/type-check-command.js +8 -7
  531. package/dist/commands/ui-shot-cli.js +4 -4
  532. package/dist/commands/uninstall.js +20 -19
  533. package/dist/commands/unused-members-cli.js +9 -8
  534. package/dist/commands/upstream-interrupt-main.js +115 -111
  535. package/dist/commands/verification-gate.js +46 -46
  536. package/dist/commands/version-check.js +5 -5
  537. package/dist/hooks/{chunk-LWD43Z3C.js → chunk-5CUXGQT6.js} +1667 -107
  538. package/dist/hooks/{chunk-4YXV2REH.js → chunk-5R5YFQR5.js} +8 -8
  539. package/dist/hooks/{chunk-LKQBEKBI.js → chunk-6RLY27FT.js} +8 -8
  540. package/dist/hooks/{chunk-CICKRHTB.js → chunk-AO4TOV4V.js} +119 -2679
  541. package/dist/hooks/{chunk-NUPVO7RI.js → chunk-G5WSPYJ6.js} +4296 -1687
  542. package/dist/hooks/{chunk-UU4PTPEZ.js → chunk-HHIVWGHX.js} +250 -125
  543. package/dist/hooks/{chunk-P7BPAU26.js → chunk-IURJANNZ.js} +2 -2
  544. package/dist/hooks/{chunk-6RR6JZSB.js → chunk-OV22V63P.js} +357 -1744
  545. package/dist/hooks/{chunk-RQXECHAS.js → chunk-SXABK6UV.js} +57 -45
  546. package/dist/hooks/codex-hook-adapter.js +11 -11
  547. package/dist/hooks/daemon.js +1053 -690
  548. package/dist/hooks/format-edited.js +5 -5
  549. package/dist/hooks/inputs.json +542 -527
  550. package/dist/hooks/pretool-guard.js +7 -7
  551. package/dist/hooks/session-lang.js +293 -16
  552. package/dist/hooks/stop-guard.js +225 -48
  553. package/dist/inputs.json +65 -65
  554. package/dist/josh.js +73 -19
  555. package/dist/self-sync-guard/index.js +18 -1
  556. package/dist/version/index.js +18 -1
  557. package/package.json +3 -3
  558. package/pnpm-workspace.yaml +5 -13
  559. package/prompts/collaboration-workflow/issue-template.en.md +56 -52
  560. package/scripts/agent/agent-argv.ts +20 -6
  561. package/scripts/agent/agent-phase-profile.ts +89 -0
  562. package/scripts/agent/agent-role-profile.ts +3 -71
  563. package/scripts/agent/agent-ship-cap.ts +44 -0
  564. package/scripts/agent/agent-worker-profile.ts +154 -0
  565. package/scripts/agent/claude-agent-argv.ts +1 -1
  566. package/scripts/agent/lane-instructions.ts +29 -3
  567. package/scripts/auto-ok/auto-ok-judge-cli.ts +3 -0
  568. package/scripts/auto-ok/auto-ok-judge-write.ts +2 -1
  569. package/scripts/auto-ok/auto-ok-judge.ts +4 -2
  570. package/scripts/backlog/backlog-drive-escalate.ts +115 -0
  571. package/scripts/backlog/backlog-drive-stalled-retry.ts +48 -10
  572. package/scripts/document/document-scan.ts +35 -1
  573. package/scripts/gh/git-pr-checks-failed.ts +24 -0
  574. package/scripts/hooks/implementation-shell-deny-expansion.ts +20 -0
  575. package/scripts/hooks/implementation-shell-deny-git.ts +128 -0
  576. package/scripts/hooks/implementation-shell-deny.ts +14 -138
  577. package/scripts/hooks/implementation-shell.ts +28 -5
  578. package/scripts/hooks/step-zero-notice.ts +9 -6
  579. package/scripts/hooks/stop-actions.ts +4 -2
  580. package/scripts/init/init-logic-workspace.ts +1 -1
  581. package/scripts/issue/issue-auto-ok.ts +43 -4
  582. package/scripts/issue/issue-body-keys.ts +4 -0
  583. package/scripts/issue/issue-comment-cli.ts +15 -2
  584. package/scripts/issue/issue-evidence-exit.ts +6 -2
  585. package/scripts/issue/issue-file-cli.ts +5 -1
  586. package/scripts/issue/issue-file-pass.ts +14 -7
  587. package/scripts/issue/issue-file-worker.ts +95 -0
  588. package/scripts/issue/issue-file.ts +1 -1
  589. package/scripts/issue/issue-outcome.ts +107 -0
  590. package/scripts/issue/issue-read.ts +12 -7
  591. package/scripts/issue/issue-watch-diff.ts +2 -1
  592. package/scripts/josh/josh-commands-ai.ts +2 -2
  593. package/scripts/josh/josh-commands-development.ts +21 -5
  594. package/scripts/josh/josh-commands-issue-write.ts +3 -2
  595. package/scripts/josh/josh-commands-lint.ts +1 -1
  596. package/scripts/josh/josh-commands-project.ts +7 -2
  597. package/scripts/josh/josh-commands-run.ts +10 -2
  598. package/scripts/josh/josh-commands-workflow.ts +5 -0
  599. package/scripts/josh/session-language-cli.ts +1 -1
  600. package/scripts/lane/lane-breakdown-cli.ts +14 -4
  601. package/scripts/lane/lane-breakdown-text.ts +7 -0
  602. package/scripts/lane/lane-breakdown.ts +21 -1
  603. package/scripts/lane/lane-dispatch-prepare.ts +83 -0
  604. package/scripts/lane/lane-dispatch.ts +3 -53
  605. package/scripts/lane/lane-elapsed-time.ts +118 -0
  606. package/scripts/lane/lane-ledger-schema-ship.ts +4 -1
  607. package/scripts/lane/lane-net-time.ts +35 -7
  608. package/scripts/lane/lane-overrun.ts +1 -1
  609. package/scripts/lane/lane-plan-cli.ts +7 -3
  610. package/scripts/lane/lane-plan-estimate.ts +57 -0
  611. package/scripts/lane/lane-plan-size.ts +11 -20
  612. package/scripts/lane/lane-plan.ts +1 -0
  613. package/scripts/lane/lane-relaunch.ts +9 -4
  614. package/scripts/lane/lane-stage-budget.ts +6 -1
  615. package/scripts/lane/lane-stage-events.ts +103 -0
  616. package/scripts/lane/lane-stats-tables.ts +3 -0
  617. package/scripts/lane/lane-stop-check-stats.ts +117 -0
  618. package/scripts/lane/lane-stop-stats.ts +30 -6
  619. package/scripts/lane/lane-why-causes.ts +3 -11
  620. package/scripts/lane/openai-lane-supervisor-owner.ts +12 -0
  621. package/scripts/lane/openai-lane-supervisor.ts +36 -1
  622. package/scripts/lib/home-tilde.ts +24 -0
  623. package/scripts/lib/package-manifest.ts +27 -1
  624. package/scripts/observations/observation-ledger-archive.ts +180 -0
  625. package/scripts/observations/observation-ledger-home.ts +1 -0
  626. package/scripts/observations/observation-ledger.ts +5 -0
  627. package/scripts/observations/observations-flush-transaction.ts +358 -0
  628. package/scripts/observations/observations-flush.ts +72 -172
  629. package/scripts/plan/plan-scaffold-cli.ts +17 -6
  630. package/scripts/plan/plan-scaffold.ts +11 -0
  631. package/scripts/release/github-release-notes.ts +24 -0
  632. package/scripts/release/github-release-runs.ts +32 -6
  633. package/scripts/release/github-release.ts +10 -2
  634. package/scripts/release/release-progress.ts +22 -10
  635. package/scripts/release/release-publish-run.ts +39 -6
  636. package/scripts/repo/repository-labels.ts +23 -11
  637. package/scripts/review/review-comment-round.ts +10 -5
  638. package/scripts/rules/broad-investigation-shell.ts +2 -2
  639. package/scripts/rules/codex-prompt.ts +63 -0
  640. package/scripts/rules/direct-issue-comment.ts +62 -2
  641. package/scripts/rules/direct-issue-read.ts +55 -2
  642. package/scripts/rules/guard-remedy.ts +10 -4
  643. package/scripts/rules/issue-citation.ts +20 -9
  644. package/scripts/rules/last-prompt.ts +8 -4
  645. package/scripts/rules/rule-value-cli.ts +85 -4
  646. package/scripts/rules/rule-value-trend.ts +108 -0
  647. package/scripts/rules/shell-redirects.ts +19 -7
  648. package/scripts/rules/shell-segments.ts +145 -20
  649. package/scripts/rules/shell-tokens.ts +66 -0
  650. package/scripts/rules/standalone-gh-call.ts +63 -0
  651. package/scripts/rules/unasked-filing.ts +12 -4
  652. package/scripts/run/board/run-board-closed.ts +10 -1
  653. package/scripts/run/board/run-board-decision-read.ts +52 -12
  654. package/scripts/run/board/run-board-decision.ts +5 -0
  655. package/scripts/run/board/run-board-ending-reason.ts +21 -7
  656. package/scripts/run/board/run-board-github.ts +8 -1
  657. package/scripts/run/board/run-board-header.ts +4 -5
  658. package/scripts/run/board/run-board-layout.ts +5 -3
  659. package/scripts/run/board/run-board-link.ts +2 -0
  660. package/scripts/run/board/run-board-operation.ts +6 -2
  661. package/scripts/run/board/run-board-pause-fixture.json +12 -0
  662. package/scripts/run/board/run-board-pause.ts +87 -0
  663. package/scripts/run/board/run-board-plan-shared.ts +2 -0
  664. package/scripts/run/board/run-board-read.ts +7 -1
  665. package/scripts/run/board/run-board-render-condition.ts +10 -1
  666. package/scripts/run/board/run-board-render-title.ts +7 -0
  667. package/scripts/run/board/run-board-roots.ts +25 -2
  668. package/scripts/run/board/run-board-settle.ts +16 -2
  669. package/scripts/run/board/run-board-setup.ts +13 -7
  670. package/scripts/run/board/run-board-snapshot.ts +4 -0
  671. package/scripts/run/board/run-board-status.ts +13 -1
  672. package/scripts/run/board/run-board-tick.ts +7 -1
  673. package/scripts/run/cut/run-cut-cli.ts +2 -1
  674. package/scripts/run/park/run-park-cli.ts +13 -1
  675. package/scripts/run/park/run-park-escalate.ts +102 -0
  676. package/scripts/run/park/run-stalled.ts +29 -7
  677. package/scripts/run/review/run-review-early-push.ts +6 -6
  678. package/scripts/run/ship/run-ship-stop-cause.ts +12 -1
  679. package/scripts/split/split-assess.ts +14 -5
  680. package/scripts/test/test-related-touched.ts +21 -3
  681. package/scripts/test/test-related.ts +1 -1
  682. package/dist/commands/chunk-6WEVLIZE.js +0 -29
  683. package/dist/commands/chunk-E2ZCUKHT.js +0 -274
  684. package/dist/commands/chunk-NMLCPYBN.js +0 -134
  685. package/dist/commands/chunk-QEIO2ZNQ.js +0 -324
  686. package/dist/commands/chunk-QWX7EBC6.js +0 -112
  687. package/dist/commands/chunk-RQRLW4XK.js +0 -20
  688. package/dist/commands/chunk-UCQJDYE3.js +0 -21
  689. package/dist/commands/chunk-W4YH2DF3.js +0 -58
  690. package/dist/commands/{chunk-LRA3PXHS.js → chunk-ENKFCOVY.js} +3 -3
  691. package/dist/commands/{chunk-RUWV4INF.js → chunk-HQGNXR6I.js} +3 -3
@@ -0,0 +1,95 @@
1
+ import {
2
+ agent_worker_profile,
3
+ type SettingsResult,
4
+ type WorkerSettings,
5
+ } from '#scripts/agent/agent-worker-profile'
6
+ import { issue_file } from './issue-file'
7
+ import type { LabelDefinition } from './issue-labels'
8
+
9
+ // `issue:file`'s side of `josh.worker`: a filing into a repository that sets it prints the profiles to
10
+ // choose from, refuses a `worker:<name>` label naming none of them, and provisions the chosen label
11
+ // beside kit's own. kit never picks a profile from the Issue's content. Without the setting — or for a
12
+ // filing into another repository, whose setting this checkout does not hold — nothing here prints or
13
+ // asks GitHub anything.
14
+ const { LABEL_PREFIX } = agent_worker_profile
15
+ const LABEL_COLOR = 'bfd4f2'
16
+ const LABEL_DESCRIPTION = 'Lane worker profile (josh.worker)'
17
+
18
+ interface Target {
19
+ target: string
20
+ current: string
21
+ }
22
+
23
+ function settings_of(place: Target): SettingsResult | undefined {
24
+ if (!issue_file.is_same_repository(place.target, place.current)) return undefined
25
+
26
+ return agent_worker_profile.read(process.cwd())
27
+ }
28
+
29
+ // Deduplicated: a label typed twice is one label on the Issue, not two profiles chosen.
30
+ function worker_labels(labels: ReadonlyArray<string>): ReadonlyArray<string> {
31
+ return [...new Set(labels.filter((label) => label.startsWith(LABEL_PREFIX)))]
32
+ }
33
+
34
+ // The profiles weakest first, as `josh.worker` lists them, and the one an unlabelled Issue runs on.
35
+ function guide_of(settings: WorkerSettings): string {
36
+ const rows = settings.profiles.map(
37
+ (profile) => ` ${LABEL_PREFIX}${profile.name} — ${profile.when}`,
38
+ )
39
+
40
+ return [
41
+ `worker profiles (josh.worker, weakest first) — choose one with --label ${LABEL_PREFIX}<name>; none → ${settings.default}:`,
42
+ ...rows,
43
+ ].join('\n')
44
+ }
45
+
46
+ // A broken setting refuses only a filing that chose a profile it cannot check; any other filing goes on.
47
+ function is_unchecked_clear(note: string, labels: ReadonlyArray<string>): boolean {
48
+ if (worker_labels(labels).length === 0) {
49
+ console.warn(`⚠ ${note}`)
50
+
51
+ return true
52
+ }
53
+
54
+ console.error(`✖ ${note}`)
55
+
56
+ return false
57
+ }
58
+
59
+ function is_choice_clear(settings: WorkerSettings, labels: ReadonlyArray<string>): boolean {
60
+ console.info(guide_of(settings))
61
+ const chosen = agent_worker_profile.for_labels(settings, worker_labels(labels))
62
+
63
+ if (chosen.kind === 'worker') return true
64
+ console.error(`✖ ${chosen.kind === 'rejected' ? chosen.note : chosen.kind}`)
65
+
66
+ return false
67
+ }
68
+
69
+ // A one-pass step (`issue-file-pass.ts`): false once it printed its refusal.
70
+ function is_worker_clear(place: Target, labels: ReadonlyArray<string>): boolean {
71
+ const result = settings_of(place)
72
+
73
+ if (result === undefined || result.kind === 'unset') return true
74
+ if (result.kind === 'rejected') return is_unchecked_clear(result.note, labels)
75
+
76
+ return is_choice_clear(result.settings, labels)
77
+ }
78
+
79
+ // The `worker:<name>` labels `ensure_labels` creates beside kit's own — none without the setting.
80
+ function label_definitions(
81
+ place: Target,
82
+ labels: ReadonlyArray<string>,
83
+ ): ReadonlyArray<LabelDefinition> {
84
+ if (settings_of(place)?.kind !== 'settings') return []
85
+
86
+ return worker_labels(labels).map((name) => ({
87
+ name,
88
+ color: LABEL_COLOR,
89
+ description: LABEL_DESCRIPTION,
90
+ }))
91
+ }
92
+
93
+ const issue_file_worker = { is_worker_clear, label_definitions }
94
+
95
+ export { issue_file_worker }
@@ -46,7 +46,7 @@ interface FileArguments {
46
46
  // `--over-cap`: the run is blocked by this filing, or a user typed `new`, so the WIP cap does not
47
47
  // hold it (`issue-wip.ts`, `wip-cap.md`).
48
48
  is_over_cap: boolean
49
- // `--no-auto-ok`: the Issue needs a person's judgement, so `auto-ok` is not applied (`issue-auto-ok.ts`).
49
+ // `--no-auto-ok`: an exclusion or verified user prohibition withholds `auto-ok` (`issue-auto-ok.ts`).
50
50
  is_auto_ok_opted_out: boolean
51
51
  // `--release`: the change reaches a consumer only once published, so the Issue is linked to the
52
52
  // repository's release Issue as a blocker (`issue-release-cli.ts`).
@@ -0,0 +1,107 @@
1
+ import { git_gh_issue_read } from '#scripts/gh/git-gh-issue-read'
2
+ import { json_value } from '#scripts/lib/json-value'
3
+ import { z } from 'zod'
4
+ import { issue_read, type IssueComment } from './issue-read'
5
+
6
+ // Persist the author's conclusion with its evidence; drawing never infers a conclusion.
7
+ const SUMMARY_LIMIT = 80
8
+ const summary_schema = z
9
+ .string()
10
+ .min(1)
11
+ .max(SUMMARY_LIMIT)
12
+ .regex(/^[\u{20}-\u{7E}]+$/u)
13
+ .refine((value) => value === value.trim())
14
+ const MARKER = /^<!-- josh:outcome (?<json>[^\n]+) -->$/gmu
15
+ const COMMENT_URL = /^https:\/\/github\.com\/[^/]+\/[^/]+\/issues\/\d+#issuecomment-\d+$(?![\s\S])/u
16
+ const url_schema = z.string().regex(COMMENT_URL)
17
+ const outcome_schema = z.object({ summary: summary_schema, url: url_schema.optional() })
18
+
19
+ interface IssueOutcome {
20
+ summary: string
21
+ url: string
22
+ }
23
+
24
+ interface OutcomeNote {
25
+ body: string
26
+ summary?: string | undefined
27
+ url?: string | undefined
28
+ }
29
+
30
+ function body_of(note: OutcomeNote): string {
31
+ if (note.summary === undefined && note.url === undefined) return note.body
32
+ const outcome = outcome_schema.parse({ summary: note.summary, url: note.url })
33
+
34
+ return `${note.body}\n\n<!-- josh:outcome ${JSON.stringify(outcome)} -->`
35
+ }
36
+
37
+ function evidence_of(comment: IssueComment, url: string): boolean {
38
+ if (comment.html_url === undefined || !COMMENT_URL.test(url)) return false
39
+
40
+ return url.split('#', 1)[0] === comment.html_url.split('#', 1)[0]
41
+ }
42
+
43
+ function record_of(body: string): z.infer<typeof outcome_schema> | undefined {
44
+ const json = [...body.matchAll(MARKER)].at(-1)?.groups?.['json']
45
+
46
+ return json_value.parse_with(json ?? '', outcome_schema)
47
+ }
48
+
49
+ function cited_outcome(
50
+ record: z.infer<typeof outcome_schema>,
51
+ comment: IssueComment,
52
+ ): IssueOutcome | undefined {
53
+ const url = record.url ?? comment.html_url
54
+
55
+ return url === undefined || !evidence_of(comment, url)
56
+ ? undefined
57
+ : { summary: record.summary, url }
58
+ }
59
+
60
+ function outcome_of(comment: IssueComment): IssueOutcome | undefined {
61
+ if (comment.is_trusted !== true) return undefined
62
+ const record = record_of(comment.body)
63
+
64
+ return record === undefined ? undefined : cited_outcome(record, comment)
65
+ }
66
+
67
+ function from_comments(
68
+ comments: ReadonlyArray<IssueComment>,
69
+ candidates: ReadonlyArray<IssueComment> = comments,
70
+ ): IssueOutcome | undefined {
71
+ const outcomes = candidates.flatMap((comment) => {
72
+ const outcome = outcome_of(comment)
73
+ const evidence = comments.find((entry) => entry.html_url === outcome?.url)
74
+
75
+ return outcome === undefined || evidence?.is_trusted !== true ? [] : [outcome]
76
+ })
77
+
78
+ return outcomes.at(-1)
79
+ }
80
+
81
+ async function read(issue: number): Promise<IssueOutcome | undefined> {
82
+ try {
83
+ const json = await git_gh_issue_read.issue_list_comments(
84
+ String(issue),
85
+ undefined,
86
+ undefined,
87
+ git_gh_issue_read.read_comments_conditionally,
88
+ )
89
+ const comments = json === undefined ? undefined : await issue_read.parse_comments(json)
90
+
91
+ return comments === undefined ? undefined : from_comments(comments)
92
+ } catch {
93
+ return undefined
94
+ }
95
+ }
96
+
97
+ async function recorded(issue: number, is_merged: boolean): Promise<{ outcome?: IssueOutcome }> {
98
+ if (is_merged) return {}
99
+ const outcome = await read(issue)
100
+
101
+ return outcome === undefined ? {} : { outcome }
102
+ }
103
+
104
+ const issue_outcome = { body_of, from_comments, read, recorded, summary_schema, url_schema }
105
+
106
+ export { issue_outcome }
107
+ export type { IssueOutcome }
@@ -2,6 +2,7 @@ import { gh_author_association } from '#scripts/gh/gh-author-association'
2
2
  import { gh_comment_input } from '#scripts/gh/gh-comment-input'
3
3
  import { parse_json_object_or_undefined, read_json_listing } from '#scripts/git/parse-json-array'
4
4
  import { z } from 'zod'
5
+ import { issue_watch_diff } from './issue-watch-diff'
5
6
 
6
7
  // The block `josh issue:read` prints for one issue, kept apart from the reading and the printing so
7
8
  // the shape of the report is decided by one pure function — the seam `issue-state.ts` already has.
@@ -51,7 +52,7 @@ const issue_fields_schema = z.looseObject({
51
52
 
52
53
  const comment_schema = z.looseObject({
53
54
  html_url: z.string().optional(),
54
- user: z.looseObject({ login: z.string() }).optional(),
55
+ user: z.looseObject({ login: z.string(), type: z.string().optional() }).optional(),
55
56
  created_at: z.string().optional(),
56
57
  body: z.string().optional(),
57
58
  author_association: z.string().nullish(),
@@ -73,6 +74,7 @@ interface IssueComment {
73
74
  body: string
74
75
  // As `IssueFields.is_body_trusted`: `undefined` when the lookup failed.
75
76
  is_trusted: boolean | undefined
77
+ is_automated?: boolean
76
78
  }
77
79
 
78
80
  const UNKNOWN_AUTHOR = '(unknown)'
@@ -113,17 +115,19 @@ async function to_comment(
113
115
  repo: string | undefined,
114
116
  ): Promise<IssueComment> {
115
117
  const login = raw.user?.login
118
+ const is_trusted = await gh_author_association.trust_of({
119
+ login,
120
+ association: raw.author_association,
121
+ repo,
122
+ })
116
123
 
117
124
  return {
118
125
  html_url: raw.html_url,
119
126
  author: login ?? UNKNOWN_AUTHOR,
120
127
  created_at: raw.created_at ?? UNKNOWN_TIME,
121
128
  body: raw.body ?? '',
122
- is_trusted: await gh_author_association.trust_of({
123
- login,
124
- association: raw.author_association,
125
- repo,
126
- }),
129
+ is_trusted,
130
+ is_automated: issue_watch_diff.is_automated(raw, is_trusted),
127
131
  }
128
132
  }
129
133
 
@@ -156,7 +160,8 @@ function trusted_bodies(comments: ReadonlyArray<IssueComment>): ReadonlyArray<st
156
160
 
157
161
  function format_comment(comment: IssueComment): string {
158
162
  const trust = gh_comment_input.trust_of(comment.author, comment.is_trusted)
159
- const heading = `${COMMENT_HEADING}${comment.author}${AT}${comment.created_at} [${trust}]`
163
+ const source = comment.is_automated === true ? ' [automated]' : ''
164
+ const heading = `${COMMENT_HEADING}${comment.author}${AT}${comment.created_at} [${trust}]${source}`
160
165
 
161
166
  return `${heading}\n${comment.is_trusted === true ? comment.body : UNTRUSTED_COMMENT}`
162
167
  }
@@ -86,7 +86,7 @@ function is_bot(user: z.infer<typeof comment_schema>['user']): boolean {
86
86
  }
87
87
 
88
88
  function is_automated(
89
- raw: z.infer<typeof comment_schema>,
89
+ raw: Pick<z.infer<typeof comment_schema>, 'user' | 'body'>,
90
90
  is_trusted: boolean | undefined,
91
91
  ): boolean {
92
92
  return is_bot(raw.user) || (is_trusted === true && (raw.body?.includes(RUN_MARKER) ?? false))
@@ -228,6 +228,7 @@ const issue_watch_diff = {
228
228
  RUN_MARKER,
229
229
  WITHHELD_BODY_EDIT,
230
230
  baseline_of,
231
+ is_automated,
231
232
  landed_times,
232
233
  parse_comments,
233
234
  unread_diff,
@@ -444,7 +444,7 @@ const AI_COMMANDS: Record<string, CommandEntry> = {
444
444
  "Record a lane child's planned files; yield its lane, naming file and holder, when an earlier-planned running lane declares or plans one; `--size-approval` bounds lines/files",
445
445
  category: 'AI tools',
446
446
  reference: [
447
- '<issue> <path>... [--probe] [--single] [--size-approval <json-file>] [--imports <path>...]',
447
+ '<issue> <path>... [--probe] [--single] [--estimate <json-file>] [--size-approval <json-file>] [--imports <path>...]',
448
448
  'automation',
449
449
  ['files', 'network'],
450
450
  ],
@@ -512,7 +512,7 @@ const AI_COMMANDS: Record<string, CommandEntry> = {
512
512
  'lane:stats': {
513
513
  ...MEASURE_ARGUMENTS,
514
514
  description:
515
- 'Print period lane throughput, stage, stop, check and machine-load statistics; --sinks shows stage totals, --over lane chains, --why cause groups above a net-minute threshold, and --pairs scoped pair runs',
515
+ 'Print period lane throughput, stage, stop (by failed CI check, longest first), check and machine-load statistics; --sinks shows stage totals, --over lane chains, --why cause groups above a net-minute threshold, and --pairs scoped pair runs',
516
516
  category: 'AI tools',
517
517
  reference: [
518
518
  '(--period <days> | --since <instant>) [--limit <lane-limit> | --sinks [<minutes>] | --over <minutes> | --why <minutes> | --pairs]',
@@ -6,6 +6,7 @@ import { AGENT_HOOK_COMMANDS } from './josh-commands-agent-hooks'
6
6
  import { TEST_CHECK_COMMANDS } from './josh-commands-test-check'
7
7
 
8
8
  const NARROWED = { arguments: 'scripts/thing.ts', note: 'narrow by the given files instead' }
9
+ const FORWARDED_TO_VITEST = 'flags are forwarded to vitest'
9
10
  // The unseeded ports are read from `ports/index.js`, their one definition (#818).
10
11
  const UNSEEDED: Readonly<Record<string, string | undefined>> = {}
11
12
 
@@ -50,13 +51,14 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
50
51
  script: 'scripts/lint/lint-parallel-main.ts',
51
52
  description: 'Check code with prettier and eslint (skips a tool a basic project lacks)',
52
53
  category: 'Development',
53
- reference: ['[--changed]', 'developer', ['processes']],
54
+ reference: ['[--changed] [--shard=<n>]', 'developer', ['processes']],
54
55
  core_weight: core_weights.CORE_WEIGHTS.lint,
55
56
  memory_mb: core_weights.MEMORY_MB.lint,
56
57
  usage: {
57
58
  examples: [
58
59
  { arguments: '' },
59
60
  { arguments: '--changed', note: "the branch's changed files — the gate's form" },
61
+ { arguments: '--shard=1', note: 'one of two fixed halves of the tree (1 or 2) — a CI leg' },
60
62
  ],
61
63
  },
62
64
  },
@@ -129,7 +131,11 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
129
131
  description:
130
132
  "Print each delivered rule's unaided compliance — runs reached, kept rate, refusals",
131
133
  category: 'AI tools',
132
- reference: ['[--fresh | --refresh | --prose]', 'developer', ['files']],
134
+ reference: [
135
+ '[--fresh | --refresh | --period <days> | --weekly <rule-id>... | --prose]',
136
+ 'developer',
137
+ ['files'],
138
+ ],
133
139
  usage: {
134
140
  examples: [
135
141
  { arguments: '', note: 'a reading cached under 15 minutes ago, else measure' },
@@ -138,6 +144,14 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
138
144
  arguments: '--refresh',
139
145
  note: 'write the reading to the loop-head cache instead of stdout',
140
146
  },
147
+ {
148
+ arguments: '--period 7',
149
+ note: 'measure only the transcripts written in the last 7 days, cache untouched',
150
+ },
151
+ {
152
+ arguments: '--weekly <rule-id>...',
153
+ note: 'reached / refused / rephrased of the named rules, one line per week',
154
+ },
141
155
  { arguments: '--prose', note: 'class each prose rule: enforced, measured or prose only' },
142
156
  ],
143
157
  },
@@ -229,7 +243,9 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
229
243
  category: 'Development',
230
244
  reference: [FILTER_ARGUMENTS, 'developer', ['processes']],
231
245
  ...gate_plan.DIRECT_UNIT_CLAIM,
232
- usage: { examples: [{ arguments: '' }] },
246
+ usage: {
247
+ examples: [{ arguments: '' }, { arguments: '--shard=1/3', note: FORWARDED_TO_VITEST }],
248
+ },
233
249
  },
234
250
  'test:related': {
235
251
  script: 'scripts/test/test-related-main.ts',
@@ -240,8 +256,8 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
240
256
  examples: [
241
257
  { arguments: '' },
242
258
  NARROWED,
243
- { arguments: '--touched', note: "only the diff's tests and its modules' same-named ones" },
244
- { arguments: '--silent', note: 'flags are forwarded to vitest' },
259
+ { arguments: '--touched', note: 'diff tests, same-named tests and direct test importers' },
260
+ { arguments: '--silent', note: FORWARDED_TO_VITEST },
245
261
  ],
246
262
  },
247
263
  },
@@ -263,7 +263,8 @@ const ISSUE_WRITE_COMMANDS: Record<string, CommandEntry> = {
263
263
  },
264
264
  {
265
265
  names: ['--label <name>'],
266
- description: 'an extra label (for example `epic`). Repeatable.',
266
+ description:
267
+ 'an extra label (e.g. `epic`). Repeatable. With `josh.worker`, `worker:<name>` names a printed profile.',
267
268
  },
268
269
  {
269
270
  names: ['--defect / --verification / --every-run <yes|no|unknown>'],
@@ -290,7 +291,7 @@ const ISSUE_WRITE_COMMANDS: Record<string, CommandEntry> = {
290
291
  },
291
292
  {
292
293
  names: ['--no-auto-ok'],
293
- description: "needs a person's judgement (Tier B / C); no `auto-ok`.",
294
+ description: 'needs human judgement or a verified user prohibition; no `auto-ok`.',
294
295
  },
295
296
  {
296
297
  names: ['--release'],
@@ -81,7 +81,7 @@ const LINT_COMMANDS: Record<string, CommandEntry> = {
81
81
  description:
82
82
  "Print a work summary's inputs in one call: the run:prep skeleton, planned files near the line limit, the test:declared verdict, the owed cases and the plan:consumers draft",
83
83
  category: 'AI tools',
84
- reference: ['<issue> [<path>...]', 'automation', ['network']],
84
+ reference: ['<issue> [<path>...] [--estimate <json-file>]', 'automation', ['network']],
85
85
  usage: {
86
86
  examples: [
87
87
  { arguments: '123', note: 'planned files from the issue body' },
@@ -135,8 +135,13 @@ const PROJECT_COMMANDS: Record<string, CommandEntry> = {
135
135
  script: 'scripts/sync/sync-main.ts',
136
136
  description: 'Sync config files',
137
137
  category: 'Project',
138
- reference: ['', 'developer', ['files']],
139
- usage: { examples: [{ arguments: '', note: 'overwrite managed files' }] },
138
+ reference: ['[--force]', 'developer', ['files']],
139
+ usage: {
140
+ examples: [
141
+ { arguments: '', note: 'overwrite managed files' },
142
+ { arguments: '--force', note: 'also replace a file you added to, dropping your additions' },
143
+ ],
144
+ },
140
145
  },
141
146
  uninstall: {
142
147
  script: 'scripts/uninstall/uninstall.ts',
@@ -185,10 +185,14 @@ const RUN_COMMANDS: Record<string, CommandEntry> = {
185
185
  },
186
186
  'run:park': {
187
187
  script: 'scripts/run/park/run-park-cli.ts',
188
- description: 'Park a lane child for a decision, or clear the park',
188
+ description: 'Park a lane child for a decision or an escalation, or clear the park',
189
189
  category: 'AI tools',
190
190
  tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
191
- reference: ['<issue> --body-file <path> | <issue> --clear', 'automation', ['files', 'network']],
191
+ reference: [
192
+ '<issue> --body-file <path> | <issue> --clear | <issue> --escalate <reason>',
193
+ 'automation',
194
+ ['files', 'network'],
195
+ ],
192
196
  usage: {
193
197
  examples: [
194
198
  {
@@ -196,6 +200,10 @@ const RUN_COMMANDS: Record<string, CommandEntry> = {
196
200
  note: 'options, tiers and a recommendation; then needs-decision, the record, run:release',
197
201
  },
198
202
  { arguments: '1839 --clear', note: 'remove needs-decision and the record' },
203
+ {
204
+ arguments: '1839 --escalate "needs a stronger model"',
205
+ note: 'josh.worker.escalate only: run:stalled with the reason, resumed one profile up',
206
+ },
199
207
  ],
200
208
  },
201
209
  },
@@ -40,6 +40,11 @@ const WORKFLOW_COMMANDS: Record<string, CommandEntry> = {
40
40
  names: [SKIP_COMMIT, SKIP_PUSH],
41
41
  description: 'recover/open a PR without a new commit or push.',
42
42
  },
43
+ {
44
+ names: ['--body-file <path>'],
45
+ description:
46
+ 'extra PR body text after `closes #N`, from a file (`-` = stdin); use it when the text holds a backtick or `$`.',
47
+ },
43
48
  ],
44
49
  },
45
50
  },
@@ -32,7 +32,7 @@ import { session_language, type Resolution } from './session-language'
32
32
  const { DEFAULT_SESSION_LANG, ENV_KEY, resolve_session_lang } = session_language
33
33
 
34
34
  const BOARD_LINE =
35
- 'A backlogrun is live here: answer a progress question with `pnpm josh run:board --chat`, verbatim in one code block.'
35
+ 'Live backlogrun: for progress-only questions, run `pnpm josh run:board --chat`; relay output verbatim in one code block. For cause or improvement questions, investigate state, logs and code; cite evidence and uncertainty, even with quoted board lines. For mixed questions, do both.'
36
36
 
37
37
  interface LivePorts {
38
38
  // The common git directory the run's records are keyed on; `undefined` outside a repository.
@@ -63,12 +63,22 @@ async function print_timeline(issue: string): Promise<number> {
63
63
  records.events,
64
64
  Number(issue),
65
65
  )
66
- const timeline =
67
- breakdown === undefined ? undefined : lane_timeline.of(records, Number(issue), breakdown)
66
+ if (breakdown === undefined) return missing(issue)
67
+ const timeline = lane_timeline.of(records, Number(issue), breakdown)
68
68
 
69
69
  if (timeline === undefined) return missing(issue)
70
70
 
71
- const lines = [records.notice, lane_timeline.text(session_cite.issue(issue), timeline)]
71
+ const report = lane_breakdown_text.report_of(
72
+ Number(issue),
73
+ breakdown,
74
+ records.entries,
75
+ records.events,
76
+ )
77
+ const lines = [
78
+ records.notice,
79
+ lane_timeline.text(session_cite.issue(issue), timeline),
80
+ report.elapsed ?? '',
81
+ ]
72
82
 
73
83
  console.info(lines.filter((line) => line !== '').join('\n'))
74
84
 
@@ -84,7 +94,7 @@ async function print(issue: string): Promise<number> {
84
94
 
85
95
  if (minutes === undefined || breakdown === undefined) return missing(issue)
86
96
 
87
- const report = lane_breakdown_text.report_of(Number(issue), breakdown, entries)
97
+ const report = lane_breakdown_text.report_of(Number(issue), breakdown, entries, events)
88
98
 
89
99
  console.info(
90
100
  [
@@ -1,3 +1,4 @@
1
+ import type { RunEvent } from '#scripts/run/event/run-event-stream'
1
2
  import { lane_breakdown, type Breakdown, type Stage } from './lane-breakdown'
2
3
  import { lane_breakdown_calls, type CallGroup } from './lane-breakdown-calls'
3
4
  import {
@@ -9,6 +10,7 @@ import { lane_breakdown_laps, type Laps } from './lane-breakdown-laps'
9
10
  import { lane_breakdown_pinned } from './lane-breakdown-pinned'
10
11
  import { lane_breakdown_related } from './lane-breakdown-related'
11
12
  import { lane_ci_path_stats } from './lane-ci-path-stats'
13
+ import { lane_elapsed_time } from './lane-elapsed-time'
12
14
  import type { LedgerEntry } from './lane-ledger'
13
15
  import { lane_stage_budget, type BudgetStage } from './lane-stage-budget'
14
16
 
@@ -27,6 +29,7 @@ const OUTSIDE = 'outside calls'
27
29
  const DRIVER = '(outside lane net)'
28
30
 
29
31
  interface Report {
32
+ elapsed?: string | undefined
30
33
  breakdown: Breakdown
31
34
  detail: ImplementDetail
32
35
  // The ship pre-detach line's `test:pinned` detail, `''` when none (joshuafolkken/kit#5078).
@@ -217,11 +220,14 @@ function report_of(
217
220
  issue: number,
218
221
  breakdown: Breakdown,
219
222
  entries: ReadonlyArray<LedgerEntry>,
223
+ events: ReadonlyArray<RunEvent> = [],
220
224
  ): Report {
221
225
  const calls = lane_breakdown_implement.read(issue, breakdown)
222
226
  const rows = lane_breakdown_pinned.rows_of(entries, issue, breakdown)
227
+ const timing = lane_elapsed_time.of(entries, events, issue, calls)
223
228
 
224
229
  return {
230
+ elapsed: timing === undefined ? undefined : lane_elapsed_time.text(timing),
225
231
  breakdown,
226
232
  detail: lane_breakdown_implement.of(calls, breakdown),
227
233
  laps: lane_breakdown_laps.of(entries, issue, breakdown, calls),
@@ -243,6 +249,7 @@ function comment(issue: number, minutes: number, report: Report): string {
243
249
  `${lead} ${source}`,
244
250
  '',
245
251
  ...entries_of(report).flatMap((entry) => bullets_of(entry)),
252
+ ...(report.elapsed === undefined ? [] : [report.elapsed]),
246
253
  ].join('\n')
247
254
  }
248
255
 
@@ -5,6 +5,7 @@ import { lane_breakdown_pause, type PauseMark } from './lane-breakdown-pause'
5
5
  import { lane_ledger, type LedgerEntry } from './lane-ledger'
6
6
  import { lane_net_time, type LaneSpan } from './lane-net-time'
7
7
  import { lane_plan_wait_event } from './lane-plan-wait-event'
8
+ import { lane_stage_events } from './lane-stage-events'
8
9
  import { lane_stop_stats } from './lane-stop-stats'
9
10
  import { lane_yield_split, type YieldShare } from './lane-yield-split'
10
11
 
@@ -329,7 +330,7 @@ function driver_of(ms: number): Array<Stage> {
329
330
  * span and intervals `lane_net_time.net_ms` reads, so the stages add up to it and the driver's followup
330
331
  * stands apart. `edit_ms`, the lane's first edit, opens the implementation where no event did.
331
332
  */
332
- function of(
333
+ function breakdown_of(
333
334
  entries: ReadonlyArray<LedgerEntry>,
334
335
  events: ReadonlyArray<RunEvent>,
335
336
  issue: number,
@@ -358,6 +359,25 @@ function of(
358
359
  }
359
360
  }
360
361
 
362
+ function of(
363
+ entries: ReadonlyArray<LedgerEntry>,
364
+ events: ReadonlyArray<RunEvent>,
365
+ issue: number,
366
+ edit_ms?: number,
367
+ ): Breakdown | undefined {
368
+ const span = lane_net_time.span_of(entries, issue)
369
+ const breakdown = breakdown_of(
370
+ entries,
371
+ lane_stage_events.of(entries, events, issue),
372
+ issue,
373
+ edit_ms,
374
+ )
375
+
376
+ return breakdown === undefined || span === undefined
377
+ ? undefined
378
+ : { ...breakdown, reasons: reasons_of(events, issue, span) }
379
+ }
380
+
361
381
  // The stage `at_ms` fell in — the plan, the implementation or a ship stage, by the spans `of` cut — or
362
382
  // `undefined` outside them; `josh cost:audit` attributes a request's tokens by it
363
383
  // (joshuafolkken/kit#5936).