@joshuafolkken/kit 1.2116.0 → 1.3000.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 (2163) hide show
  1. package/.claude/agents/design-consultant.md +19 -0
  2. package/.claude/agents/investigator.md +12 -2
  3. package/.claude/agents/reviewer-verification.md +13 -2
  4. package/.claude/agents/reviewer.md +13 -2
  5. package/.claude/settings.json +32 -9
  6. package/.claude/skills/dependency-update/SKILL.md +11 -14
  7. package/.claude/skills/epic-commands/SKILL.md +8 -6
  8. package/.claude/skills/epic-commands/epic-bundle.md +6 -7
  9. package/.claude/skills/verify-ui/SKILL.md +13 -23
  10. package/.claude/skills/workflow-commands/SKILL.md +19 -18
  11. package/.claude/skills/workflow-commands/background-commands.md +7 -4
  12. package/.claude/skills/workflow-commands/backlogrun-child.md +31 -64
  13. package/.claude/skills/workflow-commands/backlogrun-lanes.md +54 -62
  14. package/.claude/skills/workflow-commands/backlogrun-park.md +65 -64
  15. package/.claude/skills/workflow-commands/backlogrun-progress.md +30 -44
  16. package/.claude/skills/workflow-commands/backlogrun-recovery.md +18 -33
  17. package/.claude/skills/workflow-commands/backlogrun-steps.md +62 -50
  18. package/.claude/skills/workflow-commands/backlogrun.md +13 -18
  19. package/.claude/skills/workflow-commands/chain-rule.md +54 -53
  20. package/.claude/skills/workflow-commands/delegation.md +11 -11
  21. package/.claude/skills/workflow-commands/entry-sequence.md +23 -34
  22. package/.claude/skills/workflow-commands/followup.md +19 -17
  23. package/.claude/skills/workflow-commands/fullrun-lane.md +11 -0
  24. package/.claude/skills/workflow-commands/fullrun-steps.md +27 -34
  25. package/.claude/skills/workflow-commands/fullrun.md +5 -6
  26. package/.claude/skills/workflow-commands/halfrun.md +4 -7
  27. package/.claude/skills/workflow-commands/issue-comments.md +29 -15
  28. package/.claude/skills/workflow-commands/issue-fold-existing.md +9 -14
  29. package/.claude/skills/workflow-commands/issue-scout.md +5 -8
  30. package/.claude/skills/workflow-commands/kickoff.md +25 -34
  31. package/.claude/skills/workflow-commands/latest-gate.md +6 -14
  32. package/.claude/skills/workflow-commands/needs-human-review.md +3 -3
  33. package/.claude/skills/workflow-commands/observation-filing.md +9 -7
  34. package/.claude/skills/workflow-commands/observation-ledger.md +4 -1
  35. package/.claude/skills/workflow-commands/pre-gate-cut.md +21 -26
  36. package/.claude/skills/workflow-commands/prerequisite.md +21 -6
  37. package/.claude/skills/workflow-commands/progress-watcher.md +8 -18
  38. package/.claude/skills/workflow-commands/prrun.md +1 -1
  39. package/.claude/skills/workflow-commands/retrospective.md +16 -15
  40. package/.claude/skills/workflow-commands/split-assessment.md +32 -22
  41. package/.claude/skills/workflow-commands/target-repository.md +2 -2
  42. package/.claude/skills/workflow-commands/working-tree-hold.md +3 -2
  43. package/.codex/hooks.json +18 -8
  44. package/.cursorrules +1 -2
  45. package/.github/actions/change-scope/action.yml +19 -0
  46. package/.github/actions/setup-pnpm/action.yml +87 -14
  47. package/.github/dependabot.yml +1 -0
  48. package/.github/workflows/ci.yml +74 -30
  49. package/.github/workflows/publish.yml +56 -14
  50. package/.github/workflows/sonar-qube.yml +28 -1
  51. package/.prettierignore +2 -0
  52. package/AGENTS.md +1 -2
  53. package/CLAUDE.md +8 -8
  54. package/GEMINI.md +1 -2
  55. package/README.md +1 -1
  56. package/SECURITY.md +11 -1
  57. package/cspell/index.yaml +11 -0
  58. package/dist/.inputs-verified.json +1 -0
  59. package/dist/CLAUDE.md +8 -8
  60. package/dist/commands/adopt.js +222 -0
  61. package/dist/commands/auth-setup-cli.js +127 -0
  62. package/dist/commands/auto-ok-judge-cli.js +223 -0
  63. package/dist/commands/auto-ok-main.js +136 -0
  64. package/dist/commands/backlog-budget-main.js +146 -0
  65. package/dist/commands/backlog-drive-cli.js +1935 -0
  66. package/dist/commands/backlog-next-main.js +186 -0
  67. package/dist/commands/backlog-offer-main.js +190 -0
  68. package/dist/commands/backlog-plan-cli.js +329 -0
  69. package/dist/commands/backlog-triage-cli.js +642 -0
  70. package/dist/commands/backlogrun-cli.js +829 -0
  71. package/dist/commands/behavior-cli.js +216 -0
  72. package/dist/commands/bump-version-main.js +22 -0
  73. package/dist/commands/bytes-command.js +208 -0
  74. package/dist/commands/cases-cli.js +57 -0
  75. package/dist/commands/check-commit-message-main.js +22 -0
  76. package/dist/commands/check-related.js +551 -0
  77. package/dist/commands/chunk-23GH6B3D.js +333 -0
  78. package/dist/commands/chunk-2ADQ5XRD.js +36 -0
  79. package/dist/commands/chunk-2CXAVVST.js +20 -0
  80. package/dist/commands/chunk-2DJLAUYB.js +109 -0
  81. package/dist/commands/chunk-2FE3C4PH.js +112 -0
  82. package/dist/commands/chunk-2FJJYCBD.js +149 -0
  83. package/dist/commands/chunk-2IESYBZH.js +34 -0
  84. package/dist/commands/chunk-2MJ4OCDL.js +188 -0
  85. package/dist/commands/chunk-2NSB5ZYQ.js +26 -0
  86. package/dist/commands/chunk-2OIX4JLA.js +37 -0
  87. package/dist/commands/chunk-2TQXCH2K.js +145 -0
  88. package/dist/commands/chunk-2VLHFILE.js +52 -0
  89. package/dist/commands/chunk-2VRITY55.js +41 -0
  90. package/dist/commands/chunk-2YCKPX3A.js +25 -0
  91. package/dist/commands/chunk-32SNWQJP.js +99 -0
  92. package/dist/commands/chunk-337QQM4C.js +136 -0
  93. package/dist/commands/chunk-34DND4BA.js +104 -0
  94. package/dist/commands/chunk-34LAULSC.js +352 -0
  95. package/dist/commands/chunk-36LOGVJ7.js +38 -0
  96. package/dist/commands/chunk-36M2UV6C.js +80 -0
  97. package/dist/commands/chunk-3BNNMJOT.js +702 -0
  98. package/dist/commands/chunk-3CCGKX7Y.js +20 -0
  99. package/dist/commands/chunk-3EO2XN3A.js +124 -0
  100. package/dist/commands/chunk-3GF52L5F.js +271 -0
  101. package/dist/commands/chunk-3HU3LPIF.js +113 -0
  102. package/dist/commands/chunk-3LZXX5GL.js +50 -0
  103. package/dist/commands/chunk-3NWAGIA6.js +39 -0
  104. package/dist/commands/chunk-3PEXBHRN.js +33 -0
  105. package/dist/commands/chunk-3RIQ36LH.js +110 -0
  106. package/dist/commands/chunk-3UKJFWKS.js +170 -0
  107. package/dist/commands/chunk-3WRQP3QE.js +47 -0
  108. package/dist/commands/chunk-3WWQFCGX.js +18 -0
  109. package/dist/commands/chunk-3ZEO3KOM.js +35 -0
  110. package/dist/commands/chunk-4BEIYKI2.js +76 -0
  111. package/dist/commands/chunk-4D5KWMFL.js +461 -0
  112. package/dist/commands/chunk-4DVM57T7.js +86 -0
  113. package/dist/commands/chunk-4EADHJVC.js +247 -0
  114. package/dist/commands/chunk-4G7NKNAZ.js +114 -0
  115. package/dist/commands/chunk-4HBVHYNL.js +73 -0
  116. package/dist/commands/chunk-4LWRCPS5.js +114 -0
  117. package/dist/commands/chunk-4P2LCVGO.js +211 -0
  118. package/dist/commands/chunk-4PES3BAA.js +263 -0
  119. package/dist/commands/chunk-4PUKDAXL.js +42 -0
  120. package/dist/commands/chunk-4Q4FXBUQ.js +99 -0
  121. package/dist/commands/chunk-4QYW2IL7.js +82 -0
  122. package/dist/commands/chunk-4YI4SLRJ.js +161 -0
  123. package/dist/commands/chunk-4Z5723GA.js +350 -0
  124. package/dist/commands/chunk-4ZHWTTQW.js +99 -0
  125. package/dist/commands/chunk-55I7OYHI.js +98 -0
  126. package/dist/commands/chunk-5GBZ43UA.js +58 -0
  127. package/dist/commands/chunk-5HCPSV45.js +800 -0
  128. package/dist/{hooks/chunk-OPSRGWFU.js → commands/chunk-5HVYOIIK.js} +1 -1
  129. package/dist/commands/chunk-5HWZFL4D.js +4175 -0
  130. package/dist/commands/chunk-5PAEXYIY.js +234 -0
  131. package/dist/commands/chunk-5SB37YDW.js +321 -0
  132. package/dist/commands/chunk-5TMAPYQD.js +19 -0
  133. package/dist/commands/chunk-5WIZR5SC.js +313 -0
  134. package/dist/commands/chunk-5Y7QQYTU.js +232 -0
  135. package/dist/commands/chunk-5ZTQX7OS.js +125 -0
  136. package/dist/commands/chunk-65E4OZJ7.js +9 -0
  137. package/dist/commands/chunk-66NX6EXR.js +29 -0
  138. package/dist/commands/chunk-66TGK5XL.js +84 -0
  139. package/dist/commands/chunk-6CJXLPRI.js +72 -0
  140. package/dist/commands/chunk-6EU5ZCDP.js +402 -0
  141. package/dist/commands/chunk-6FWV56B3.js +40 -0
  142. package/dist/commands/chunk-6HRRZANN.js +55 -0
  143. package/dist/commands/chunk-6I2JM5UX.js +134 -0
  144. package/dist/commands/chunk-6JVNRY5A.js +29 -0
  145. package/dist/commands/chunk-6NGNMIMT.js +20 -0
  146. package/dist/commands/chunk-6NRTLH6I.js +51 -0
  147. package/dist/commands/chunk-6NV2F7QH.js +47 -0
  148. package/dist/commands/chunk-6OP63TBT.js +78 -0
  149. package/dist/commands/chunk-6Q3XUCLM.js +204 -0
  150. package/dist/commands/chunk-6SKMZGER.js +148 -0
  151. package/dist/commands/chunk-6TESOL3L.js +173 -0
  152. package/dist/commands/chunk-6UGFS3EU.js +704 -0
  153. package/dist/commands/chunk-6VTJO5L2.js +38 -0
  154. package/dist/commands/chunk-6WEVLIZE.js +29 -0
  155. package/dist/commands/chunk-6WKJ3GDA.js +408 -0
  156. package/dist/commands/chunk-6WTVAL4D.js +115 -0
  157. package/dist/commands/chunk-72EW7AVI.js +59 -0
  158. package/dist/commands/chunk-72J2G2E7.js +1189 -0
  159. package/dist/commands/chunk-73EBNBUW.js +90 -0
  160. package/dist/commands/chunk-73JOEKIC.js +169 -0
  161. package/dist/commands/chunk-73KBUQKI.js +41 -0
  162. package/dist/commands/chunk-7CHCZBNF.js +555 -0
  163. package/dist/commands/chunk-7EAMUVIO.js +326 -0
  164. package/dist/commands/chunk-7GHOFHUS.js +48 -0
  165. package/dist/commands/chunk-7GMTJDO2.js +469 -0
  166. package/dist/commands/chunk-7HCPRVMB.js +76 -0
  167. package/dist/commands/chunk-7IT23HIR.js +306 -0
  168. package/dist/commands/chunk-7IZJ5MG2.js +72 -0
  169. package/dist/commands/chunk-7LJQMM2K.js +102 -0
  170. package/dist/commands/chunk-7MOZEEFJ.js +350 -0
  171. package/dist/commands/chunk-7P4X4TQL.js +507 -0
  172. package/dist/commands/chunk-7S6VRZOH.js +223 -0
  173. package/dist/commands/chunk-7V5UVKFG.js +20 -0
  174. package/dist/commands/chunk-7W3D3WRW.js +171 -0
  175. package/dist/commands/chunk-7ZECP3J6.js +212 -0
  176. package/dist/commands/chunk-A3D2XHOJ.js +387 -0
  177. package/dist/commands/chunk-A4HOQKOG.js +85 -0
  178. package/dist/commands/chunk-A5V7EWIX.js +85 -0
  179. package/dist/commands/chunk-A6T2N7VC.js +159 -0
  180. package/dist/commands/chunk-AI5K4QJO.js +72 -0
  181. package/dist/commands/chunk-AJWR7D3H.js +15 -0
  182. package/dist/commands/chunk-AKK56GNX.js +205 -0
  183. package/dist/commands/chunk-AKQYYHP2.js +461 -0
  184. package/dist/commands/chunk-AM44D7NF.js +52 -0
  185. package/dist/commands/chunk-ANUTT56I.js +85 -0
  186. package/dist/commands/chunk-AQ3PMSXK.js +76 -0
  187. package/dist/commands/chunk-AS3GWVAN.js +45 -0
  188. package/dist/commands/chunk-ATRMETHT.js +23 -0
  189. package/dist/commands/chunk-AVUGMOHZ.js +210 -0
  190. package/dist/commands/chunk-AWLYN2SP.js +64 -0
  191. package/dist/commands/chunk-AZUE65NT.js +77 -0
  192. package/dist/commands/chunk-B2EA2HCY.js +119 -0
  193. package/dist/commands/chunk-B33BTNB4.js +87 -0
  194. package/dist/commands/chunk-B3XFOHDX.js +71 -0
  195. package/dist/commands/chunk-B5GXZK3E.js +34 -0
  196. package/dist/commands/chunk-B77ZMVHS.js +80 -0
  197. package/dist/commands/chunk-BCK5LW4F.js +45 -0
  198. package/dist/commands/chunk-BEE7OAQ5.js +210 -0
  199. package/dist/commands/chunk-BF6YX4HE.js +70 -0
  200. package/dist/commands/chunk-BFLFPKQQ.js +46 -0
  201. package/dist/commands/chunk-BHRS7HAM.js +272 -0
  202. package/dist/commands/chunk-BIKGPT52.js +29 -0
  203. package/dist/commands/chunk-BJA5U4Q7.js +75 -0
  204. package/dist/commands/chunk-BJKEXXY6.js +15 -0
  205. package/dist/commands/chunk-BK6Q4VCA.js +128 -0
  206. package/dist/commands/chunk-BNXE3NVB.js +107 -0
  207. package/dist/commands/chunk-BPSJSHYD.js +209 -0
  208. package/dist/commands/chunk-BRFQBJ5Y.js +132 -0
  209. package/dist/commands/chunk-BY3POLIQ.js +104 -0
  210. package/dist/commands/chunk-BYSPYVLD.js +130 -0
  211. package/dist/commands/chunk-C26LKDBE.js +60 -0
  212. package/dist/commands/chunk-C2SEDMZ3.js +238 -0
  213. package/dist/commands/chunk-C6QSVO5K.js +56 -0
  214. package/dist/commands/chunk-CA6F5OXK.js +809 -0
  215. package/dist/commands/chunk-CADFBQJJ.js +75 -0
  216. package/dist/commands/chunk-CDY4NFQG.js +15 -0
  217. package/dist/commands/chunk-CGLLAEKZ.js +110 -0
  218. package/dist/commands/chunk-CHX4QTP4.js +133 -0
  219. package/dist/commands/chunk-CJAA5GAF.js +418 -0
  220. package/dist/commands/chunk-CJKPF5DJ.js +156 -0
  221. package/dist/commands/chunk-CJSFC5YI.js +158 -0
  222. package/dist/commands/chunk-CRNPPKP2.js +99 -0
  223. package/dist/commands/chunk-CUR2WNYB.js +42 -0
  224. package/dist/commands/chunk-CYQ3ZF7R.js +372 -0
  225. package/dist/commands/chunk-D3SHCUBC.js +64 -0
  226. package/dist/commands/chunk-D4HNS43Q.js +208 -0
  227. package/dist/commands/chunk-D4SZK7H2.js +34 -0
  228. package/dist/commands/chunk-D5HIP4HT.js +289 -0
  229. package/dist/commands/chunk-D5TAR6TV.js +71 -0
  230. package/dist/commands/chunk-DAJCUSPG.js +127 -0
  231. package/dist/commands/chunk-DBKTFB5V.js +18 -0
  232. package/dist/commands/chunk-DIB2Z2OS.js +307 -0
  233. package/dist/commands/chunk-DJVMC3U2.js +131 -0
  234. package/dist/commands/chunk-DKM4UJQU.js +10 -0
  235. package/dist/commands/chunk-DMD74E3F.js +39 -0
  236. package/dist/commands/chunk-DNJC7X73.js +84 -0
  237. package/dist/commands/chunk-DP7WIGQ4.js +298 -0
  238. package/dist/commands/chunk-DPJVKTO4.js +41 -0
  239. package/dist/commands/chunk-DRCTDVI2.js +83 -0
  240. package/dist/commands/chunk-DSBK66US.js +67 -0
  241. package/dist/commands/chunk-DXJQHJQ4.js +73 -0
  242. package/dist/commands/chunk-DXZW4V7J.js +114 -0
  243. package/dist/commands/chunk-E2ZCUKHT.js +274 -0
  244. package/dist/commands/chunk-E33LSO2W.js +20 -0
  245. package/dist/commands/chunk-E3CXOVPQ.js +258 -0
  246. package/dist/commands/chunk-EBI2BAKQ.js +47 -0
  247. package/dist/commands/chunk-EBNIX2TC.js +81 -0
  248. package/dist/commands/chunk-EBVS2LKX.js +60 -0
  249. package/dist/commands/chunk-EFHSCUFN.js +170 -0
  250. package/dist/commands/chunk-EH3LVYOX.js +72 -0
  251. package/dist/commands/chunk-EI6JG5DF.js +92 -0
  252. package/dist/commands/chunk-EK2Y6B4X.js +140 -0
  253. package/dist/commands/chunk-EK327QOS.js +260 -0
  254. package/dist/commands/chunk-EKCKCX5S.js +291 -0
  255. package/dist/commands/chunk-ELWNRE6E.js +93 -0
  256. package/dist/commands/chunk-ENFPR7J2.js +53 -0
  257. package/dist/commands/chunk-ENLWXAHD.js +80 -0
  258. package/dist/commands/chunk-ERGZPWKP.js +102 -0
  259. package/dist/commands/chunk-ESQEEL4O.js +58 -0
  260. package/dist/commands/chunk-EW4NPUMQ.js +363 -0
  261. package/dist/commands/chunk-EWA72KO7.js +241 -0
  262. package/dist/commands/chunk-EWVR5AEX.js +140 -0
  263. package/dist/commands/chunk-EZSO25UZ.js +80 -0
  264. package/dist/commands/chunk-F22G3VDB.js +183 -0
  265. package/dist/commands/chunk-F2HFWLQR.js +32 -0
  266. package/dist/commands/chunk-F2J6DGDM.js +302 -0
  267. package/dist/commands/chunk-F3WBEEYC.js +68 -0
  268. package/dist/commands/chunk-F6OWP2AY.js +750 -0
  269. package/dist/commands/chunk-F7XLEK55.js +62 -0
  270. package/dist/commands/chunk-FB3D7CX5.js +241 -0
  271. package/dist/commands/chunk-FC33R5UN.js +516 -0
  272. package/dist/commands/chunk-FCINBCKB.js +77 -0
  273. package/dist/commands/chunk-FFHEGWPK.js +91 -0
  274. package/dist/commands/chunk-FGL6DBZU.js +71 -0
  275. package/dist/commands/chunk-FGZQSSGH.js +210 -0
  276. package/dist/{hooks/chunk-VVNYJWEI.js → commands/chunk-FIUCHMCF.js} +4 -2
  277. package/dist/commands/chunk-FNOSSXLG.js +61 -0
  278. package/dist/commands/chunk-FNQW6NY7.js +154 -0
  279. package/dist/commands/chunk-FROACLVU.js +525 -0
  280. package/dist/commands/chunk-FVVZIJUC.js +425 -0
  281. package/dist/commands/chunk-G47ZNQVG.js +17 -0
  282. package/dist/commands/chunk-G6BXCWPH.js +141 -0
  283. package/dist/commands/chunk-GA4VIFHD.js +224 -0
  284. package/dist/commands/chunk-GA6E4VGO.js +328 -0
  285. package/dist/commands/chunk-GDUK5YPO.js +185 -0
  286. package/dist/commands/chunk-GIGKMIPQ.js +72 -0
  287. package/dist/commands/chunk-GJYMI2CM.js +48 -0
  288. package/dist/commands/chunk-GK2KY4MO.js +67 -0
  289. package/dist/commands/chunk-GM3XLC4W.js +63 -0
  290. package/dist/commands/chunk-GO3GH7FG.js +75 -0
  291. package/dist/commands/chunk-GPMSYXYO.js +378 -0
  292. package/dist/commands/chunk-GPTO6IZG.js +29 -0
  293. package/dist/commands/chunk-GQHUFNXN.js +54 -0
  294. package/dist/commands/chunk-GU5ML3Y3.js +263 -0
  295. package/dist/commands/chunk-GW4UWR3O.js +126 -0
  296. package/dist/commands/chunk-H4LYG37R.js +716 -0
  297. package/dist/commands/chunk-HBNB3TLG.js +122 -0
  298. package/dist/commands/chunk-HCA5QG2U.js +299 -0
  299. package/dist/commands/chunk-HE5S4XRE.js +21 -0
  300. package/dist/commands/chunk-HESMKHEB.js +105 -0
  301. package/dist/commands/chunk-HG2NZQD5.js +135 -0
  302. package/dist/commands/chunk-HH2KDLTP.js +161 -0
  303. package/dist/commands/chunk-HHBC6QZE.js +95 -0
  304. package/dist/commands/chunk-HIB5G2X6.js +426 -0
  305. package/dist/commands/chunk-HIPO6HUG.js +45 -0
  306. package/dist/commands/chunk-HIU2WXB6.js +26 -0
  307. package/dist/commands/chunk-HJKZDDDI.js +62 -0
  308. package/dist/commands/chunk-HLKAFSN4.js +76 -0
  309. package/dist/commands/chunk-HLUS2M3D.js +7 -0
  310. package/dist/commands/chunk-HO52D6JY.js +278 -0
  311. package/dist/commands/chunk-HOGFJHBT.js +412 -0
  312. package/dist/commands/chunk-HOSZITJM.js +156 -0
  313. package/dist/commands/chunk-HPVLI26Z.js +123 -0
  314. package/dist/commands/chunk-HQ2HSZBN.js +69 -0
  315. package/dist/commands/chunk-HRLGFRAV.js +21 -0
  316. package/dist/commands/chunk-HRT4KWP4.js +178 -0
  317. package/dist/commands/chunk-HTIDHEEN.js +108 -0
  318. package/dist/commands/chunk-HXCZ3KWS.js +41 -0
  319. package/dist/commands/chunk-HZBTXKT2.js +61 -0
  320. package/dist/commands/chunk-HZSQI6TD.js +18 -0
  321. package/dist/commands/chunk-I63RNFFR.js +213 -0
  322. package/dist/commands/chunk-IBEKFLWG.js +137 -0
  323. package/dist/commands/chunk-ICEMFE2V.js +139 -0
  324. package/dist/commands/chunk-IG22Y5MA.js +56 -0
  325. package/dist/commands/chunk-IGD6QJPH.js +91 -0
  326. package/dist/commands/chunk-ILGPZ47M.js +33 -0
  327. package/dist/commands/chunk-ILQZFUDC.js +65 -0
  328. package/dist/commands/chunk-ISPBJVXM.js +238 -0
  329. package/dist/commands/chunk-IW6NWCSN.js +10 -0
  330. package/dist/commands/chunk-IXX4SXIP.js +53 -0
  331. package/dist/commands/chunk-IZVM2TTH.js +84 -0
  332. package/dist/commands/chunk-J3G2R64I.js +88 -0
  333. package/dist/commands/chunk-J3TKZLHA.js +11 -0
  334. package/dist/commands/chunk-J6GIVMXI.js +59 -0
  335. package/dist/commands/chunk-JB7R3A4A.js +204 -0
  336. package/dist/commands/chunk-JGTLNFFE.js +803 -0
  337. package/dist/commands/chunk-JHN6RCE6.js +123 -0
  338. package/dist/commands/chunk-JJRKTWLK.js +64 -0
  339. package/dist/commands/chunk-JLREFWJ4.js +244 -0
  340. package/dist/commands/chunk-JLYW7CP6.js +43 -0
  341. package/dist/commands/chunk-JNWHX25C.js +36 -0
  342. package/dist/commands/chunk-JOARHU3M.js +137 -0
  343. package/dist/commands/chunk-JQXPLMCO.js +81 -0
  344. package/dist/commands/chunk-JTU5A4JI.js +55 -0
  345. package/dist/commands/chunk-JUJFIATR.js +121 -0
  346. package/dist/commands/chunk-JUUBDYFZ.js +61 -0
  347. package/dist/commands/chunk-JZOTCPX2.js +115 -0
  348. package/dist/commands/chunk-K2WVYHCP.js +18 -0
  349. package/dist/commands/chunk-K7GL3BGI.js +419 -0
  350. package/dist/commands/chunk-KB3OQWDT.js +71 -0
  351. package/dist/commands/chunk-KHWTJ4F7.js +132 -0
  352. package/dist/commands/chunk-KIILCKQR.js +220 -0
  353. package/dist/commands/chunk-KIVOZY2J.js +1864 -0
  354. package/dist/commands/chunk-KQWSENCT.js +94 -0
  355. package/dist/commands/chunk-KSR23NYN.js +33 -0
  356. package/dist/commands/chunk-KTLR4Y32.js +21 -0
  357. package/dist/commands/chunk-KUJQWO6M.js +119 -0
  358. package/dist/commands/chunk-KVHNQHX3.js +100 -0
  359. package/dist/commands/chunk-KVJDDECB.js +51 -0
  360. package/dist/commands/chunk-KVSSLDA3.js +1062 -0
  361. package/dist/commands/chunk-KVURNO74.js +187 -0
  362. package/dist/commands/chunk-KXHXMERX.js +214 -0
  363. package/dist/commands/chunk-KXRFGPZD.js +69 -0
  364. package/dist/commands/chunk-KZSM5M5P.js +89 -0
  365. package/dist/commands/chunk-L6LU2633.js +91 -0
  366. package/dist/commands/chunk-L6TU7FC2.js +103 -0
  367. package/dist/commands/chunk-L6XN3EXI.js +138 -0
  368. package/dist/commands/chunk-LA5WTOAM.js +319 -0
  369. package/dist/commands/chunk-LAKVPOJQ.js +59 -0
  370. package/dist/commands/chunk-LAYSCY4L.js +6 -0
  371. package/dist/commands/chunk-LBLII7BS.js +14 -0
  372. package/dist/commands/chunk-LC7SBONO.js +98 -0
  373. package/dist/commands/chunk-LCEJXF7A.js +101 -0
  374. package/dist/commands/chunk-LE2T3FGJ.js +302 -0
  375. package/dist/commands/chunk-LE7TFPMU.js +88 -0
  376. package/dist/commands/chunk-LHKXJD6L.js +303 -0
  377. package/dist/commands/chunk-LMS6N6GE.js +332 -0
  378. package/dist/commands/chunk-LMSS4ARB.js +32 -0
  379. package/dist/commands/chunk-LNBUIOK6.js +133 -0
  380. package/dist/commands/chunk-LOSOLCCW.js +119 -0
  381. package/dist/commands/chunk-LQXFVZTS.js +13 -0
  382. package/dist/commands/chunk-LRA3PXHS.js +472 -0
  383. package/dist/commands/chunk-LRS2OS5J.js +395 -0
  384. package/dist/commands/chunk-LULJUD6P.js +131 -0
  385. package/dist/commands/chunk-LUMCYDGE.js +141 -0
  386. package/dist/commands/chunk-LWAXXZPS.js +118 -0
  387. package/dist/commands/chunk-LYEKT3IN.js +77 -0
  388. package/dist/commands/chunk-LZNYHWRO.js +78 -0
  389. package/dist/commands/chunk-M3ZDYCUF.js +117 -0
  390. package/dist/commands/chunk-M42SLJCD.js +97 -0
  391. package/dist/commands/chunk-M4PEC7YW.js +349 -0
  392. package/dist/commands/chunk-MAGJFH5T.js +77 -0
  393. package/dist/commands/chunk-MDKDJF2K.js +160 -0
  394. package/dist/commands/chunk-MDLOETXL.js +211 -0
  395. package/dist/commands/chunk-MGF64OHV.js +32 -0
  396. package/dist/commands/chunk-MMTVQOCP.js +211 -0
  397. package/dist/commands/chunk-MMXZKLDU.js +115 -0
  398. package/dist/commands/chunk-MPGJ4ONJ.js +634 -0
  399. package/dist/commands/chunk-MS6Q3Z7V.js +870 -0
  400. package/dist/commands/chunk-MSPIR3OA.js +32 -0
  401. package/dist/commands/chunk-MVPUQLN5.js +183 -0
  402. package/dist/commands/chunk-MXC4IBZ7.js +104 -0
  403. package/dist/commands/chunk-MY3RSOS5.js +52 -0
  404. package/dist/commands/chunk-MYNM3YMR.js +347 -0
  405. package/dist/commands/chunk-MYWRGF5A.js +177 -0
  406. package/dist/commands/chunk-MZHOPRI6.js +529 -0
  407. package/dist/commands/chunk-N4O5I55P.js +655 -0
  408. package/dist/commands/chunk-N6TYL3B2.js +250 -0
  409. package/dist/commands/chunk-NFEBQED3.js +179 -0
  410. package/dist/commands/chunk-NFKULY26.js +48 -0
  411. package/dist/commands/chunk-NGKB632X.js +92 -0
  412. package/dist/commands/chunk-NJ53AWJU.js +122 -0
  413. package/dist/commands/chunk-NJT5L6IC.js +126 -0
  414. package/dist/commands/chunk-NKKH3PBE.js +87 -0
  415. package/dist/commands/chunk-NKOET4FB.js +44 -0
  416. package/dist/commands/chunk-NMLCPYBN.js +134 -0
  417. package/dist/commands/chunk-NOXLKIPR.js +114 -0
  418. package/dist/commands/chunk-NSAVEXVR.js +353 -0
  419. package/dist/commands/chunk-NSZTSCBW.js +1263 -0
  420. package/dist/commands/chunk-NYWGJLBU.js +19 -0
  421. package/dist/commands/chunk-O26Y2FOJ.js +134 -0
  422. package/dist/commands/chunk-O27H6NN6.js +163 -0
  423. package/dist/commands/chunk-O3NDWYNT.js +68 -0
  424. package/dist/commands/chunk-O4WBADCX.js +88 -0
  425. package/dist/commands/chunk-O5FVBIRI.js +271 -0
  426. package/dist/commands/chunk-O5QZ2S6X.js +98 -0
  427. package/dist/commands/chunk-OGNTJ5JB.js +47 -0
  428. package/dist/commands/chunk-OHNP3QL2.js +186 -0
  429. package/dist/commands/chunk-OHVAEJSM.js +184 -0
  430. package/dist/commands/chunk-OI7KM4K3.js +43 -0
  431. package/dist/commands/chunk-OIDMJASD.js +62 -0
  432. package/dist/commands/chunk-OJ4LGBVD.js +126 -0
  433. package/dist/commands/chunk-OKKQI4ZG.js +49 -0
  434. package/dist/commands/chunk-OKYFQJW3.js +22 -0
  435. package/dist/commands/chunk-ORSI7Y55.js +133 -0
  436. package/dist/commands/chunk-OT3UMEWK.js +47 -0
  437. package/dist/commands/chunk-OTZJXU2R.js +170 -0
  438. package/dist/commands/chunk-OVA7STGP.js +578 -0
  439. package/dist/commands/chunk-OWR2TCOY.js +269 -0
  440. package/dist/commands/chunk-OZZWRJQI.js +246 -0
  441. package/dist/commands/chunk-P4CWLRT2.js +213 -0
  442. package/dist/commands/chunk-P4D5RESF.js +88 -0
  443. package/dist/commands/chunk-P4KIQRSL.js +119 -0
  444. package/dist/commands/chunk-P4O67FP5.js +488 -0
  445. package/dist/commands/chunk-P6RGQXHI.js +391 -0
  446. package/dist/commands/chunk-P7FPXAHP.js +29 -0
  447. package/dist/commands/chunk-PBOS7MTW.js +6 -0
  448. package/dist/commands/chunk-PDAY76AN.js +47 -0
  449. package/dist/commands/chunk-PDDKRHHS.js +128 -0
  450. package/dist/commands/chunk-PE7B7242.js +84 -0
  451. package/dist/commands/chunk-PF22VUWB.js +723 -0
  452. package/dist/commands/chunk-PFO7EYAP.js +45 -0
  453. package/dist/commands/chunk-PR3JCPP7.js +126 -0
  454. package/dist/commands/chunk-PWYXY46Y.js +1150 -0
  455. package/dist/commands/chunk-PYOK73QE.js +44 -0
  456. package/dist/commands/chunk-PZ4ITSLG.js +80 -0
  457. package/dist/commands/chunk-PZ6VWHOO.js +144 -0
  458. package/dist/commands/chunk-PZTWQYRI.js +44 -0
  459. package/dist/commands/chunk-PZU6FZO6.js +17 -0
  460. package/dist/commands/chunk-Q3463XNL.js +198 -0
  461. package/dist/commands/chunk-Q5N2J2UF.js +78 -0
  462. package/dist/commands/chunk-Q5Q2QYVU.js +112 -0
  463. package/dist/commands/chunk-Q6SKKQVJ.js +34 -0
  464. package/dist/commands/chunk-Q7TV3OV6.js +218 -0
  465. package/dist/commands/chunk-QA22PBCJ.js +165 -0
  466. package/dist/commands/chunk-QAHFPCFR.js +50 -0
  467. package/dist/commands/chunk-QDFDB4CF.js +478 -0
  468. package/dist/commands/chunk-QEIO2ZNQ.js +324 -0
  469. package/dist/commands/chunk-QF4WC2AE.js +10 -0
  470. package/dist/commands/chunk-QGAERR7D.js +99 -0
  471. package/dist/commands/chunk-QHWJJ6X5.js +53 -0
  472. package/dist/commands/chunk-QQ4CIYMF.js +132 -0
  473. package/dist/commands/chunk-QQBMVC5W.js +227 -0
  474. package/dist/commands/chunk-QQZOQ7AM.js +32 -0
  475. package/dist/commands/chunk-QS5USD4T.js +540 -0
  476. package/dist/commands/chunk-QVOFWFWC.js +134 -0
  477. package/dist/commands/chunk-QWWTC3XR.js +109 -0
  478. package/dist/commands/chunk-QWX7EBC6.js +112 -0
  479. package/dist/commands/chunk-QX2R6UJG.js +15 -0
  480. package/dist/commands/chunk-QXQ56E56.js +27 -0
  481. package/dist/commands/chunk-R2CF6VZE.js +114 -0
  482. package/dist/commands/chunk-R6QE5VJG.js +46 -0
  483. package/dist/commands/chunk-R7IT5VOL.js +27 -0
  484. package/dist/commands/chunk-RBU2NKHF.js +44 -0
  485. package/dist/commands/chunk-RDRN56E4.js +92 -0
  486. package/dist/commands/chunk-REMKUFAC.js +304 -0
  487. package/dist/commands/chunk-REPANBLS.js +168 -0
  488. package/dist/commands/chunk-RGDFWJPZ.js +135 -0
  489. package/dist/commands/chunk-RGGEQM6G.js +140 -0
  490. package/dist/commands/chunk-RH6ZWJOA.js +77 -0
  491. package/dist/commands/chunk-RHII5XI6.js +492 -0
  492. package/dist/commands/chunk-RI7EQYKL.js +60 -0
  493. package/dist/commands/chunk-RINVPTA2.js +1310 -0
  494. package/dist/commands/chunk-RIQ75QWR.js +233 -0
  495. package/dist/commands/chunk-RIUPRMLW.js +63 -0
  496. package/dist/commands/chunk-RK4HE5NW.js +172 -0
  497. package/dist/commands/chunk-ROJXMBXP.js +85 -0
  498. package/dist/commands/chunk-RPDWFUQO.js +239 -0
  499. package/dist/commands/chunk-RQRLW4XK.js +20 -0
  500. package/dist/commands/chunk-RRQFITJE.js +40 -0
  501. package/dist/commands/chunk-RS764ZMU.js +46 -0
  502. package/dist/commands/chunk-RSSJWMQS.js +30 -0
  503. package/dist/commands/chunk-RUIBQMOV.js +38 -0
  504. package/dist/commands/chunk-RUWV4INF.js +245 -0
  505. package/dist/commands/chunk-RVHBWSIG.js +114 -0
  506. package/dist/commands/chunk-RVUJ6F5L.js +181 -0
  507. package/dist/commands/chunk-RX5JSPPH.js +1153 -0
  508. package/dist/commands/chunk-RXAZJMSZ.js +18 -0
  509. package/dist/commands/chunk-RY6ZDHKB.js +1218 -0
  510. package/dist/commands/chunk-RYZ3RQRH.js +16 -0
  511. package/dist/commands/chunk-RZ4OKKPM.js +1722 -0
  512. package/dist/commands/chunk-RZJAUVMI.js +69 -0
  513. package/dist/commands/chunk-S4X5PJV7.js +40 -0
  514. package/dist/commands/chunk-S6SXMBF2.js +66 -0
  515. package/dist/commands/chunk-S7XWXG4M.js +3893 -0
  516. package/dist/commands/chunk-SADJPNDB.js +67 -0
  517. package/dist/commands/chunk-SBGTCT2C.js +89 -0
  518. package/dist/commands/chunk-SFNBUB6D.js +110 -0
  519. package/dist/commands/chunk-SK2LJBFS.js +168 -0
  520. package/dist/commands/chunk-SNFLV7VV.js +45 -0
  521. package/dist/commands/chunk-SNO7CY2B.js +69 -0
  522. package/dist/commands/chunk-ST32OGPY.js +82 -0
  523. package/dist/commands/chunk-SV4FHQE7.js +995 -0
  524. package/dist/commands/chunk-SVAKCXZ7.js +44 -0
  525. package/dist/commands/chunk-SXULS6DX.js +112 -0
  526. package/dist/commands/chunk-T25S4QHL.js +52 -0
  527. package/dist/commands/chunk-T2E724HN.js +117 -0
  528. package/dist/commands/chunk-T2IO4LEB.js +285 -0
  529. package/dist/commands/chunk-T33QDAWD.js +16 -0
  530. package/dist/commands/chunk-T3FD3Q73.js +49 -0
  531. package/dist/commands/chunk-T4UYEHWG.js +50 -0
  532. package/dist/commands/chunk-T57W3UWK.js +88 -0
  533. package/dist/commands/chunk-TAPDXK34.js +48 -0
  534. package/dist/commands/chunk-TBIX5FRN.js +106 -0
  535. package/dist/commands/chunk-TBNQIFWL.js +101 -0
  536. package/dist/commands/chunk-TCBUX52E.js +701 -0
  537. package/dist/commands/chunk-TIXJY22D.js +90 -0
  538. package/dist/commands/chunk-TKGBF75Y.js +88 -0
  539. package/dist/commands/chunk-TMLNI3YW.js +95 -0
  540. package/dist/commands/chunk-TPKFVVJQ.js +125 -0
  541. package/dist/commands/chunk-TS4ZK46L.js +116 -0
  542. package/dist/commands/chunk-TUIFS5E7.js +72 -0
  543. package/dist/commands/chunk-TVJE67O2.js +179 -0
  544. package/dist/commands/chunk-TVZXG4Y4.js +197 -0
  545. package/dist/commands/chunk-TXXYC7EV.js +74 -0
  546. package/dist/commands/chunk-U2UH4VM4.js +229 -0
  547. package/dist/commands/chunk-U3IVVR4W.js +33 -0
  548. package/dist/commands/chunk-U5HQQWRE.js +20 -0
  549. package/dist/commands/chunk-U7XU5RG3.js +86 -0
  550. package/dist/commands/chunk-UCI4AL3Q.js +35 -0
  551. package/dist/commands/chunk-UCQJDYE3.js +21 -0
  552. package/dist/commands/chunk-UCUSCLEK.js +90 -0
  553. package/dist/commands/chunk-UEURNXE5.js +280 -0
  554. package/dist/commands/chunk-UGCUSRZF.js +17 -0
  555. package/dist/commands/chunk-UIWAMLQH.js +49 -0
  556. package/dist/commands/chunk-UJOZ2MGX.js +705 -0
  557. package/dist/commands/chunk-ULVVGGTY.js +64 -0
  558. package/dist/commands/chunk-UOAG2XQT.js +37 -0
  559. package/dist/commands/chunk-US6X7JXC.js +120 -0
  560. package/dist/commands/chunk-UTBVTCQN.js +7401 -0
  561. package/dist/commands/chunk-UU6GCJGM.js +56 -0
  562. package/dist/commands/chunk-UWLLZQJB.js +110 -0
  563. package/dist/commands/chunk-UZAU6UI6.js +33 -0
  564. package/dist/commands/chunk-V4Z7G4UH.js +73 -0
  565. package/dist/commands/chunk-V5FD7DVV.js +48 -0
  566. package/dist/commands/chunk-V5OIPYA6.js +109 -0
  567. package/dist/commands/chunk-VCR77BHO.js +8 -0
  568. package/dist/commands/chunk-VD5674LW.js +127 -0
  569. package/dist/commands/chunk-VD72V5VX.js +230 -0
  570. package/dist/commands/chunk-VDGNXSP3.js +174 -0
  571. package/dist/commands/chunk-VFJYOAOQ.js +339 -0
  572. package/dist/commands/chunk-VGHSZLYQ.js +85 -0
  573. package/dist/commands/chunk-VHRNXWVP.js +28 -0
  574. package/dist/commands/chunk-VJE3RJAX.js +23 -0
  575. package/dist/commands/chunk-VJLZ3IQQ.js +151 -0
  576. package/dist/commands/chunk-VTLL6CKO.js +269 -0
  577. package/dist/commands/chunk-VW5SGE7A.js +18 -0
  578. package/dist/commands/chunk-VZCQZFPH.js +378 -0
  579. package/dist/commands/chunk-VZHC2I3T.js +1208 -0
  580. package/dist/commands/chunk-VZSJCFRT.js +44 -0
  581. package/dist/commands/chunk-W2IA2LV3.js +15 -0
  582. package/dist/commands/chunk-W32DIQEP.js +43 -0
  583. package/dist/commands/chunk-W3FX7FYN.js +84 -0
  584. package/dist/commands/chunk-W47I2KDY.js +47 -0
  585. package/dist/commands/chunk-W4J6YTFE.js +74 -0
  586. package/dist/commands/chunk-W4YH2DF3.js +58 -0
  587. package/dist/commands/chunk-W6MVQEMO.js +109 -0
  588. package/dist/commands/chunk-W6V4DWC5.js +70 -0
  589. package/dist/commands/chunk-WG6GYBRJ.js +271 -0
  590. package/dist/commands/chunk-WGULS5DA.js +129 -0
  591. package/dist/commands/chunk-WIE7VUBE.js +122 -0
  592. package/dist/commands/chunk-WJ4NEDNI.js +288 -0
  593. package/dist/commands/chunk-WL5JHB3I.js +12 -0
  594. package/dist/commands/chunk-WMMGXJXP.js +92 -0
  595. package/dist/commands/chunk-WN7NK3NY.js +24 -0
  596. package/dist/commands/chunk-WOFLW2LX.js +26 -0
  597. package/dist/commands/chunk-WPAQUMHC.js +28 -0
  598. package/dist/commands/chunk-WQ6FS544.js +35 -0
  599. package/dist/commands/chunk-WQJ7O3C3.js +229 -0
  600. package/dist/commands/chunk-WRX3MINT.js +60 -0
  601. package/dist/commands/chunk-WSOF74K4.js +30 -0
  602. package/dist/commands/chunk-WTRDWEUQ.js +533 -0
  603. package/dist/commands/chunk-WVR4RUFP.js +327 -0
  604. package/dist/commands/chunk-WW3TX742.js +122 -0
  605. package/dist/commands/chunk-WWC5L3AO.js +177 -0
  606. package/dist/commands/chunk-X5XYKDOD.js +7 -0
  607. package/dist/commands/chunk-X7PN54LZ.js +143 -0
  608. package/dist/commands/chunk-XBRD2BDL.js +74 -0
  609. package/dist/commands/chunk-XDF25GSU.js +536 -0
  610. package/dist/commands/chunk-XDQOWUVT.js +51 -0
  611. package/dist/commands/chunk-XFPEUYDV.js +67 -0
  612. package/dist/commands/chunk-XGMRAKSL.js +85 -0
  613. package/dist/commands/chunk-XH6BGVVP.js +1639 -0
  614. package/dist/commands/chunk-XMBRXCIE.js +89 -0
  615. package/dist/commands/chunk-XSKB6ZUA.js +123 -0
  616. package/dist/commands/chunk-XXNEY4B3.js +110 -0
  617. package/dist/commands/chunk-XYAK53TK.js +443 -0
  618. package/dist/commands/chunk-Y2RNUX4W.js +8 -0
  619. package/dist/commands/chunk-Y5ZW3KN5.js +58 -0
  620. package/dist/commands/chunk-YGDNUTTI.js +120 -0
  621. package/dist/commands/chunk-YIA6FC3K.js +78 -0
  622. package/dist/commands/chunk-YPNTORQD.js +121 -0
  623. package/dist/commands/chunk-YT342DRV.js +143 -0
  624. package/dist/commands/chunk-YVH2OLDS.js +104 -0
  625. package/dist/commands/chunk-Z4HYBFZD.js +1160 -0
  626. package/dist/commands/chunk-ZA3W73PF.js +192 -0
  627. package/dist/commands/chunk-ZAAHZY2A.js +19 -0
  628. package/dist/commands/chunk-ZAJD6T6E.js +38 -0
  629. package/dist/commands/chunk-ZBFNQUY7.js +12 -0
  630. package/dist/commands/chunk-ZDSDPKCD.js +88 -0
  631. package/dist/commands/chunk-ZECFKW7D.js +60 -0
  632. package/dist/commands/chunk-ZHZSZNE2.js +173 -0
  633. package/dist/commands/chunk-ZNX2LJCQ.js +29 -0
  634. package/dist/commands/chunk-ZQ3CKRMP.js +99 -0
  635. package/dist/commands/chunk-ZVAIIHBE.js +63 -0
  636. package/dist/commands/chunk-ZYGOZT4J.js +39 -0
  637. package/dist/commands/chunk-ZYIMQHCB.js +81 -0
  638. package/dist/commands/chunk-ZZAH3YQP.js +170 -0
  639. package/dist/commands/ci-timing-cli.js +76 -0
  640. package/dist/commands/clone-scan-cli.js +189 -0
  641. package/dist/commands/code-symbol-cli.js +185 -0
  642. package/dist/commands/codex-hook-adapter.js +357 -0
  643. package/dist/commands/command-derive.js +802 -0
  644. package/dist/commands/cost-audit-main.js +207 -0
  645. package/dist/commands/cost-main.js +28 -0
  646. package/dist/commands/cspell-cached.js +158 -0
  647. package/dist/commands/defect-origin-main.js +221 -0
  648. package/dist/commands/defect-report-main.js +288 -0
  649. package/dist/commands/delegation-cli.js +65 -0
  650. package/dist/commands/diff-summary-cli.js +147 -0
  651. package/dist/commands/disposition-cli.js +408 -0
  652. package/dist/commands/doctor.js +267 -0
  653. package/dist/commands/document-read-cli.js +39 -844
  654. package/dist/commands/document-section-main.js +26 -835
  655. package/dist/commands/dogfood-commit-cli.js +102 -0
  656. package/dist/commands/e2e-retry-check.js +79 -0
  657. package/dist/commands/edit-files-cli.js +147 -0
  658. package/dist/commands/effect-audit-cli.js +319 -0
  659. package/dist/commands/epic-audit-main.js +158 -0
  660. package/dist/commands/epic-bundle-main.js +199 -0
  661. package/dist/commands/epic-check.js +90 -0
  662. package/dist/commands/epic-main.js +222 -0
  663. package/dist/commands/epic-next-main.js +157 -0
  664. package/dist/commands/eval-run.js +838 -0
  665. package/dist/commands/fanout-cli.js +86 -0
  666. package/dist/commands/format-edited-cli.js +120 -0
  667. package/dist/commands/format.js +139 -0
  668. package/dist/commands/fresh-machine-cli.js +691 -0
  669. package/dist/commands/gh-usage-cli.js +224 -0
  670. package/dist/commands/git-followup-workflow.js +2012 -0
  671. package/dist/commands/git-gh-checks-failed-main.js +156 -0
  672. package/dist/commands/git-workflow.js +602 -0
  673. package/dist/commands/github-release-cli.js +253 -0
  674. package/dist/commands/hook-ledger-cli.js +416 -0
  675. package/dist/commands/init-main.js +98 -0
  676. package/dist/commands/inputs.json +2764 -0
  677. package/dist/commands/issue-ack-cli.js +106 -0
  678. package/dist/commands/issue-already-done-cli.js +305 -0
  679. package/dist/commands/issue-body-cli.js +184 -0
  680. package/dist/commands/issue-cite-main.js +162 -0
  681. package/dist/commands/issue-comment-main.js +72 -0
  682. package/dist/commands/issue-consolidate-cli.js +329 -0
  683. package/dist/commands/issue-file-main.js +419 -0
  684. package/dist/commands/issue-fold-existing-cli.js +506 -0
  685. package/dist/commands/issue-fold-main.js +113 -0
  686. package/dist/commands/issue-lint-main.js +126 -0
  687. package/dist/commands/issue-measured-cli.js +205 -0
  688. package/dist/commands/issue-plan-cli.js +352 -0
  689. package/dist/commands/issue-premise-unmet-cli.js +268 -0
  690. package/dist/commands/issue-priority-cli.js +184 -0
  691. package/dist/commands/issue-read-main.js +79 -0
  692. package/dist/commands/issue-release-class-cli.js +119 -0
  693. package/dist/commands/issue-release-main.js +71 -0
  694. package/dist/commands/issue-scout-main.js +203 -0
  695. package/dist/commands/issue-spill-main.js +564 -0
  696. package/dist/commands/issue-state-main.js +76 -0
  697. package/dist/commands/issue-tick-cli.js +112 -0
  698. package/dist/commands/josh-completion.js +153 -0
  699. package/dist/commands/lane-adopt-cli.js +275 -0
  700. package/dist/commands/lane-breakdown-cli.js +703 -0
  701. package/dist/commands/lane-cli.js +863 -0
  702. package/dist/commands/lane-launch-main.js +103 -0
  703. package/dist/commands/lane-limit-cli.js +286 -0
  704. package/dist/commands/lane-measure-cli.js +1797 -0
  705. package/dist/commands/lane-pause-cli.js +255 -0
  706. package/dist/commands/lane-plan-cli.js +322 -0
  707. package/dist/commands/lane-resolve-cli.js +300 -0
  708. package/dist/commands/lane-restart-cli.js +387 -0
  709. package/dist/commands/lane-why-cli.js +307 -0
  710. package/dist/commands/lane-withdraw-cli.js +191 -0
  711. package/dist/commands/latest-corepack.js +278 -0
  712. package/dist/commands/latest-if-required-cli.js +124 -0
  713. package/dist/commands/latest-lane-guard-main.js +16 -0
  714. package/dist/commands/latest-scope-main.js +38 -0
  715. package/dist/commands/latest-update.js +449 -0
  716. package/dist/commands/lines-command.js +121 -0
  717. package/dist/commands/lint-parallel-main.js +134 -0
  718. package/dist/commands/lint-related.js +565 -0
  719. package/dist/commands/lint-rule.js +305 -0
  720. package/dist/commands/lockfile-policy.js +107 -0
  721. package/dist/commands/main-merge-main.js +61 -0
  722. package/dist/commands/main-sync-main.js +60 -0
  723. package/dist/commands/managed-config-scope-cli.js +66 -0
  724. package/dist/commands/measure-rerun-cli.js +124 -0
  725. package/dist/commands/metrics-command.js +859 -0
  726. package/dist/commands/observation-depth-cli.js +109 -0
  727. package/dist/commands/observation-record-cli.js +87 -0
  728. package/dist/commands/observations-flush-cli.js +115 -0
  729. package/dist/commands/oracle-list-cli.js +73 -0
  730. package/dist/commands/overrides-check.js +112 -0
  731. package/dist/commands/package-scout-cli.js +496 -0
  732. package/dist/commands/pin-verify-cli.js +88 -0
  733. package/dist/commands/plan-consumers-main.js +49 -0
  734. package/dist/commands/plan-scaffold-cli.js +367 -0
  735. package/dist/commands/port-command.js +64 -0
  736. package/dist/commands/pr-classification-main.js +37 -0
  737. package/dist/commands/pre-commit-lint.js +163 -0
  738. package/dist/commands/pre-commit-type-check.js +210 -0
  739. package/dist/commands/pre-push-unit.js +271 -0
  740. package/dist/commands/pretool-guard-cli.js +205 -0
  741. package/dist/commands/prevent-main-commit.js +42 -0
  742. package/dist/commands/project-profile-cli.js +58 -0
  743. package/dist/commands/propagate.js +368 -0
  744. package/dist/commands/prose-stale-cli.js +128 -0
  745. package/dist/commands/publish-tag-cli.js +30 -0
  746. package/dist/commands/publishable-range-check.js +191 -0
  747. package/dist/commands/read-files-cli.js +81 -0
  748. package/dist/commands/read-set-cli.js +121 -1745
  749. package/dist/commands/reconcile-templates.js +135 -0
  750. package/dist/commands/refactor-scan-cli.js +175 -0
  751. package/dist/commands/release-cli.js +724 -0
  752. package/dist/commands/release-scope-main.js +81 -0
  753. package/dist/commands/rename-cli.js +432 -0
  754. package/dist/commands/repo-party-cli.js +58 -0
  755. package/dist/commands/report-lint-cli.js +124 -0
  756. package/dist/commands/report-template-cli.js +69 -0
  757. package/dist/commands/reserved-run.js +127 -0
  758. package/dist/commands/retrospective-cli.js +555 -0
  759. package/dist/commands/review-attest-cli.js +118 -0
  760. package/dist/commands/review-brief-main.js +247 -0
  761. package/dist/commands/review-findings-cli.js +114 -0
  762. package/dist/commands/review-pair-cli.js +366 -0
  763. package/dist/commands/review-record-main.js +222 -0
  764. package/dist/commands/review-round2-cli.js +349 -0
  765. package/dist/commands/review-stops-cli.js +149 -0
  766. package/dist/commands/review-submit-cli.js +610 -0
  767. package/dist/commands/rule-list.js +184 -0
  768. package/dist/commands/rule-value-cli.js +908 -0
  769. package/dist/commands/ruleset-check-cli.js +67 -0
  770. package/dist/commands/run-add-cli.js +273 -0
  771. package/dist/commands/run-board-main.js +272 -0
  772. package/dist/commands/run-carry-cli.js +641 -0
  773. package/dist/commands/run-chain-cli.js +537 -0
  774. package/dist/commands/run-cut-cli.js +709 -0
  775. package/dist/commands/run-ending-cli.js +169 -0
  776. package/dist/commands/run-entry-cli.js +1060 -0
  777. package/dist/commands/run-event-cli.js +298 -0
  778. package/dist/commands/run-handoff-cli.js +344 -0
  779. package/dist/commands/run-handoff-lanes-cli.js +233 -0
  780. package/dist/commands/run-hold-main.js +203 -0
  781. package/dist/commands/run-liveness-cli.js +190 -0
  782. package/dist/commands/run-merge-main.js +246 -0
  783. package/dist/commands/run-next-cli.js +240 -0
  784. package/dist/commands/run-park-cli.js +393 -0
  785. package/dist/commands/run-pause-cli.js +334 -0
  786. package/dist/commands/run-pickup-cli.js +196 -0
  787. package/dist/commands/run-prep-main.js +209 -21168
  788. package/dist/commands/run-prime-cli.js +281 -0
  789. package/dist/commands/run-progress-main.js +655 -0
  790. package/dist/commands/run-report-cli.js +376 -0
  791. package/dist/commands/run-review-cli.js +777 -0
  792. package/dist/commands/run-ship-cli.js +2615 -0
  793. package/dist/commands/run-ship-evidence-cli.js +288 -0
  794. package/dist/commands/run-ship-lap-W5T2VHFC.js +30 -0
  795. package/dist/commands/run-ship-wait-main.js +145 -0
  796. package/dist/commands/run-split-cli.js +525 -0
  797. package/dist/commands/run-stale-main.js +254 -0
  798. package/dist/commands/run-status-cli.js +216 -0
  799. package/dist/commands/run-step-cli.js +419 -27653
  800. package/dist/commands/run-tail-cli.js +119 -0
  801. package/dist/commands/run-tidy-main.js +402 -0
  802. package/dist/commands/run-wake-main.js +272 -0
  803. package/dist/commands/run-watcher-guard-cli.js +128 -0
  804. package/dist/commands/secretlint-scan.js +84 -0
  805. package/dist/commands/security-audit-main.js +151 -0
  806. package/dist/commands/security-audit-provision-main.js +52 -0
  807. package/dist/commands/selfcheck-cli.js +409 -0
  808. package/dist/commands/session-language-main.js +120 -0
  809. package/dist/commands/sonar-hotspots-cli.js +133 -0
  810. package/dist/commands/sonar-new-code-cli.js +143 -0
  811. package/dist/commands/split-assess-cli.js +138 -0
  812. package/dist/commands/split-child-recover-cli.js +168 -0
  813. package/dist/commands/start.js +707 -0
  814. package/dist/commands/stash-pop-main.js +26 -0
  815. package/dist/commands/stash-push-main.js +30 -0
  816. package/dist/commands/stop-guard.js +567 -0
  817. package/dist/commands/sync-main.js +57 -0
  818. package/dist/commands/telegram-test-main.js +64 -0
  819. package/dist/commands/test-declared.js +255 -0
  820. package/dist/commands/test-e2e-guard.js +200 -0
  821. package/dist/commands/test-pinned-main.js +189 -0
  822. package/dist/commands/test-reach-cli.js +111 -0
  823. package/dist/commands/test-red-main.js +46 -0
  824. package/dist/commands/test-related-ZT2AO62I.js +113 -0
  825. package/dist/commands/test-related-main.js +223 -0
  826. package/dist/commands/test-unit-guard-main.js +87 -0
  827. package/dist/commands/time-cli.js +356 -0
  828. package/dist/commands/time-density-cli.js +183 -0
  829. package/dist/commands/tree-status-cli.js +172 -0
  830. package/dist/commands/type-check-command.js +74 -0
  831. package/dist/commands/ui-routes-cli.js +135 -0
  832. package/dist/commands/ui-shot-cli.js +131 -0
  833. package/dist/commands/uninstall.js +424 -0
  834. package/dist/commands/unused-members-STULPRBU.js +331 -0
  835. package/dist/commands/unused-members-cli.js +54 -0
  836. package/dist/commands/upstream-interrupt-main.js +449 -0
  837. package/dist/commands/usage-tee-cli.js +60 -0
  838. package/dist/commands/verification-gate.js +808 -0
  839. package/dist/commands/version-check.js +497 -0
  840. package/dist/hooks/audit-provision.js +20 -9
  841. package/dist/hooks/{chunk-UJ3FPMMM.js → chunk-4YXV2REH.js} +444 -141
  842. package/dist/hooks/chunk-6RR6JZSB.js +12367 -0
  843. package/dist/hooks/chunk-6YGMIODI.js +86 -0
  844. package/dist/hooks/chunk-CICKRHTB.js +7586 -0
  845. package/dist/hooks/chunk-CY3ADSDR.js +28580 -0
  846. package/dist/hooks/chunk-FOW4B7OQ.js +1795 -0
  847. package/dist/hooks/chunk-LKQBEKBI.js +232 -0
  848. package/dist/hooks/chunk-LRD2ERRI.js +299 -0
  849. package/dist/hooks/chunk-LWD43Z3C.js +6793 -0
  850. package/dist/hooks/chunk-NUPVO7RI.js +3054 -0
  851. package/dist/hooks/chunk-P7BPAU26.js +1082 -0
  852. package/dist/hooks/chunk-RQXECHAS.js +309 -0
  853. package/dist/hooks/chunk-SAAPRHTK.js +43 -0
  854. package/dist/hooks/chunk-U3ON2GBN.js +12 -0
  855. package/dist/hooks/{chunk-CQD4LJE6.js → chunk-UU4PTPEZ.js} +3143 -1257
  856. package/dist/hooks/chunk-YEURBB4L.js +32 -0
  857. package/dist/hooks/codex-hook-adapter.js +61 -25
  858. package/dist/hooks/daemon.js +67304 -0
  859. package/dist/hooks/format-edited.js +15 -5
  860. package/dist/hooks/inputs.json +584 -401
  861. package/dist/hooks/pretool-guard.js +11 -7
  862. package/dist/hooks/ready.js +300 -0
  863. package/dist/hooks/run-ship-lap-VCEOUHQI.js +8 -0
  864. package/dist/hooks/session-lang.js +226 -121
  865. package/dist/hooks/stop-guard.js +9188 -4508
  866. package/dist/inputs.json +169 -0
  867. package/dist/josh.js +9617 -6711
  868. package/dist/self-sync-guard/index.js +68 -14
  869. package/dist/version/index.js +642 -85
  870. package/eslint/base.js +36 -11
  871. package/eslint/config-fingerprint.js +164 -21
  872. package/eslint/rules/code-quality.js +6 -0
  873. package/eslint/rules/comment-why-only.js +40 -16
  874. package/eslint/rules/english-only-prose.js +10 -3
  875. package/eslint/rules/import.js +3 -17
  876. package/eslint/rules/test-helper-bans.js +34 -0
  877. package/eslint/untyped-environment.js +21 -0
  878. package/eslint/untyped.js +60 -0
  879. package/lefthook/base.yml +4 -5
  880. package/package.json +15 -13
  881. package/pnpm-workspace.yaml +15 -0
  882. package/ports/index.js +8 -15
  883. package/prompts/coding-standards.md +4 -43
  884. package/prompts/collaboration-workflow/file-edits.md +10 -10
  885. package/prompts/collaboration-workflow/gh-rest.md +14 -7
  886. package/prompts/collaboration-workflow/issue-template.en.md +125 -0
  887. package/prompts/collaboration-workflow/issue-template.md +49 -56
  888. package/prompts/collaboration-workflow/lane-instructions.md +1 -0
  889. package/prompts/collaboration-workflow/measurement.md +13 -17
  890. package/prompts/collaboration-workflow/operating-rules.md +10 -7
  891. package/prompts/collaboration-workflow/output-bounds.md +3 -3
  892. package/prompts/collaboration-workflow/overview.md +8 -17
  893. package/prompts/collaboration-workflow/plan-comment.md +1 -1
  894. package/prompts/collaboration-workflow/principles.md +17 -19
  895. package/prompts/collaboration-workflow/report-format.md +6 -5
  896. package/prompts/collaboration-workflow/residency.md +1 -0
  897. package/prompts/collaboration-workflow/rule-delivery.md +4 -12
  898. package/prompts/collaboration-workflow/shell-body.md +7 -7
  899. package/prompts/collaboration-workflow/turn-batching.md +2 -2
  900. package/prompts/collaboration-workflow/upstream-interrupt.md +8 -8
  901. package/prompts/collaboration-workflow/wip-cap.md +3 -3
  902. package/prompts/refactoring.md +4 -3
  903. package/prompts/review-rubric.md +8 -21
  904. package/prompts/review.md +52 -80
  905. package/prompts/sonar-hotspot-handling.md +1 -1
  906. package/prompts/testing-guide.md +15 -2
  907. package/scripts/agent/agent-argv.ts +11 -4
  908. package/scripts/agent/agent-consultation-model.ts +47 -0
  909. package/scripts/agent/agent-event.ts +11 -2
  910. package/scripts/agent/agent-launch-environment.ts +6 -57
  911. package/scripts/agent/agent-model-alias.ts +19 -0
  912. package/scripts/agent/agent-profile-schema.ts +98 -0
  913. package/scripts/agent/agent-role-profile.ts +105 -82
  914. package/scripts/agent/agent-safe-text.ts +2 -2
  915. package/scripts/agent/agent-session-role.ts +25 -3
  916. package/scripts/agent/answer-judge.ts +174 -0
  917. package/scripts/agent/answer-verdict.ts +122 -0
  918. package/scripts/agent/claude-agent-argv.ts +12 -6
  919. package/scripts/agent/codex-agent-argv.ts +17 -143
  920. package/scripts/agent/codex-home-source.ts +1 -1
  921. package/scripts/agent/codex-hooks.ts +29 -6
  922. package/scripts/agent/judgment-agent-argv.ts +49 -0
  923. package/scripts/agent/lane-instructions.ts +4 -1
  924. package/scripts/auto-ok/auto-ok-author.ts +14 -3
  925. package/scripts/auto-ok/auto-ok-cli.ts +20 -12
  926. package/scripts/auto-ok/auto-ok-judge-cli.ts +7 -14
  927. package/scripts/auto-ok/auto-ok-judge-read.ts +3 -3
  928. package/scripts/auto-ok/auto-ok-judge-write.ts +18 -16
  929. package/scripts/backlog/backlog-arrival-added.ts +47 -11
  930. package/scripts/backlog/backlog-arrival.ts +90 -23
  931. package/scripts/backlog/backlog-auto-triage.ts +130 -0
  932. package/scripts/backlog/backlog-budget-cli.ts +2 -1
  933. package/scripts/backlog/backlog-budget.ts +31 -5
  934. package/scripts/backlog/backlog-defect-priority.ts +32 -19
  935. package/scripts/backlog/backlog-drain-flush.ts +22 -0
  936. package/scripts/backlog/backlog-drive-adopt.ts +2 -2
  937. package/scripts/backlog/backlog-drive-after-merge.ts +123 -0
  938. package/scripts/backlog/backlog-drive-args.ts +60 -7
  939. package/scripts/backlog/backlog-drive-cli.ts +69 -64
  940. package/scripts/backlog/backlog-drive-collect.ts +46 -0
  941. package/scripts/backlog/backlog-drive-epic.ts +1 -1
  942. package/scripts/backlog/backlog-drive-hold.ts +32 -8
  943. package/scripts/backlog/backlog-drive-idle.ts +21 -10
  944. package/scripts/backlog/backlog-drive-launch-pass.ts +79 -23
  945. package/scripts/backlog/backlog-drive-launch.ts +73 -7
  946. package/scripts/backlog/backlog-drive-listing.ts +59 -0
  947. package/scripts/backlog/backlog-drive-memory.ts +4 -5
  948. package/scripts/backlog/backlog-drive-named-offer.ts +112 -22
  949. package/scripts/backlog/backlog-drive-named.ts +11 -4
  950. package/scripts/backlog/backlog-drive-offer-argv.ts +10 -2
  951. package/scripts/backlog/backlog-drive-park-triage.ts +57 -0
  952. package/scripts/backlog/backlog-drive-paused.ts +2 -1
  953. package/scripts/backlog/backlog-drive-rate-limit.ts +29 -0
  954. package/scripts/backlog/backlog-drive-rate.ts +73 -0
  955. package/scripts/backlog/backlog-drive-record.ts +58 -0
  956. package/scripts/backlog/backlog-drive-restore.ts +38 -8
  957. package/scripts/backlog/backlog-drive-retrospective-unit.ts +80 -0
  958. package/scripts/backlog/backlog-drive-retrospective.ts +35 -1
  959. package/scripts/backlog/backlog-drive-retry.ts +85 -0
  960. package/scripts/backlog/backlog-drive-seats.ts +4 -7
  961. package/scripts/backlog/backlog-drive-split-unit.ts +108 -0
  962. package/scripts/backlog/backlog-drive-stalled-retry.ts +194 -0
  963. package/scripts/backlog/backlog-drive-state.ts +28 -0
  964. package/scripts/backlog/backlog-drive-tick.ts +77 -0
  965. package/scripts/backlog/backlog-drive-token-handling.ts +2 -2
  966. package/scripts/backlog/backlog-drive-trace.ts +45 -0
  967. package/scripts/backlog/backlog-drive-unit.ts +54 -0
  968. package/scripts/backlog/backlog-drive-unread.ts +1 -1
  969. package/scripts/backlog/backlog-drive.ts +142 -99
  970. package/scripts/backlog/backlog-gate-scope.ts +15 -3
  971. package/scripts/backlog/backlog-hold-codes.ts +23 -0
  972. package/scripts/backlog/backlog-hold-text.ts +107 -0
  973. package/scripts/backlog/backlog-measure-close.ts +61 -31
  974. package/scripts/backlog/backlog-named.ts +1 -1
  975. package/scripts/backlog/backlog-next-offer.ts +138 -0
  976. package/scripts/backlog/backlog-next-report.ts +221 -0
  977. package/scripts/backlog/backlog-next-shared.ts +22 -4
  978. package/scripts/backlog/backlog-next-size.ts +108 -0
  979. package/scripts/backlog/backlog-next.ts +52 -187
  980. package/scripts/backlog/backlog-occupied.ts +7 -7
  981. package/scripts/backlog/backlog-offer-cli.ts +13 -2
  982. package/scripts/backlog/backlog-offer-timing.ts +141 -0
  983. package/scripts/backlog/backlog-offer.ts +26 -6
  984. package/scripts/backlog/backlog-overlap.ts +7 -1
  985. package/scripts/backlog/backlog-plan-cli.ts +27 -3
  986. package/scripts/backlog/backlog-plan-comment.ts +36 -14
  987. package/scripts/backlog/backlog-plan-words.ts +69 -0
  988. package/scripts/backlog/backlog-plan.ts +63 -46
  989. package/scripts/backlog/backlog-pool.ts +42 -13
  990. package/scripts/backlog/backlog-preflight.ts +67 -0
  991. package/scripts/backlog/backlog-ready.ts +7 -69
  992. package/scripts/backlog/backlog-resumable.ts +65 -0
  993. package/scripts/backlog/backlog-resume-reads.ts +119 -0
  994. package/scripts/backlog/backlog-stalled-detect.ts +4 -3
  995. package/scripts/backlog/backlog-stalled.ts +3 -2
  996. package/scripts/backlog/backlog-triage-adopt.ts +239 -0
  997. package/scripts/backlog/backlog-triage-approval.ts +94 -0
  998. package/scripts/backlog/backlog-triage-cli.ts +270 -0
  999. package/scripts/backlog/backlog-triage-decision.ts +49 -0
  1000. package/scripts/backlog/backlog-triage-park.ts +53 -0
  1001. package/scripts/backlog/backlog-triage-pass.ts +113 -0
  1002. package/scripts/backlog/backlog-triage-unblock.ts +68 -0
  1003. package/scripts/backlog/backlog-wait-cause.ts +76 -16
  1004. package/scripts/backlog/backlog-yield-cap.ts +108 -0
  1005. package/scripts/backlog/backlogrun-args.ts +45 -16
  1006. package/scripts/backlog/backlogrun-cli.ts +82 -18
  1007. package/scripts/backlog/backlogrun-launch.ts +12 -4
  1008. package/scripts/backlog/backlogrun-replace.ts +44 -4
  1009. package/scripts/build/build-bin.ts +25 -2
  1010. package/scripts/build/build-codex-hooks.ts +2 -2
  1011. package/scripts/build/build-commands.ts +27 -19
  1012. package/scripts/build/build-hooks.ts +117 -22
  1013. package/scripts/build/hook-bundle-stamp.ts +15 -5
  1014. package/scripts/build/local-bin.ts +27 -1
  1015. package/scripts/build/source-location.ts +82 -0
  1016. package/scripts/ci/ci-timing-cli.ts +73 -0
  1017. package/scripts/ci/ci-timing-table.ts +84 -0
  1018. package/scripts/ci/ci-timing.ts +104 -0
  1019. package/scripts/ci/composite-actions.ts +1 -1
  1020. package/scripts/ci/pr-classification.ts +89 -11
  1021. package/scripts/code/code-symbol-cli.ts +121 -0
  1022. package/scripts/code/code-symbol.ts +127 -0
  1023. package/scripts/config-merge/patch-json-key.ts +4 -7
  1024. package/scripts/cost-runtime/cost-blocks.ts +3 -4
  1025. package/scripts/cost-runtime/cost-cli.ts +4 -7
  1026. package/scripts/cost-runtime/cost-pricing.ts +2 -2
  1027. package/scripts/cost-runtime/cost-tokens.ts +7 -6
  1028. package/scripts/delegation/delegation-policy.ts +2 -2
  1029. package/scripts/delegation/duplicate-read-guard.ts +41 -28
  1030. package/scripts/delegation/investigation-guard.ts +13 -5
  1031. package/scripts/delegation/investigation-reads.ts +52 -34
  1032. package/scripts/delegation/large-read-guard.ts +150 -0
  1033. package/scripts/discovery/git-directory.ts +61 -0
  1034. package/scripts/discovery/pin-verify-cli.ts +115 -0
  1035. package/scripts/discovery/repo-discovery.ts +10 -58
  1036. package/scripts/discovery/repo-party.ts +1 -0
  1037. package/scripts/document/backlogrun-parent-read-set.ts +37 -6
  1038. package/scripts/document/capped-print.ts +3 -3
  1039. package/scripts/document/command-reference-line-budget.ts +4 -1
  1040. package/scripts/document/document-byte-budget.ts +34 -16
  1041. package/scripts/document/document-byte-check.ts +1 -1
  1042. package/scripts/document/document-reachability.ts +4 -3
  1043. package/scripts/document/document-scan.ts +2 -5
  1044. package/scripts/document/document-section-cli.ts +13 -1
  1045. package/scripts/document/edit-files-cli.ts +3 -7
  1046. package/scripts/document/entry-read-budget.ts +12 -4
  1047. package/scripts/document/entry-read-set.ts +9 -2
  1048. package/scripts/document/issue-citation-budget.ts +3 -3
  1049. package/scripts/document/lane-child-read-set.ts +21 -29
  1050. package/scripts/document/read-set-cli.ts +17 -10
  1051. package/scripts/document/read-set-point-of-use.ts +13 -9
  1052. package/scripts/document/read-set-trim.ts +42 -2
  1053. package/scripts/epic/epic-audit-checks.ts +1 -1
  1054. package/scripts/epic/epic-audit-cli.ts +19 -21
  1055. package/scripts/epic/epic-audit-main.ts +17 -0
  1056. package/scripts/epic/epic-audit-orphans.ts +1 -1
  1057. package/scripts/epic/epic-audit.ts +6 -3
  1058. package/scripts/epic/epic-blocked-by.ts +198 -0
  1059. package/scripts/epic/epic-body.ts +6 -6
  1060. package/scripts/epic/epic-bundle-apply.ts +41 -10
  1061. package/scripts/epic/epic-bundle-cli.ts +40 -99
  1062. package/scripts/epic/epic-bundle-evidence.ts +2 -2
  1063. package/scripts/epic/epic-bundle-format.ts +21 -7
  1064. package/scripts/epic/epic-bundle-recommend.ts +56 -0
  1065. package/scripts/epic/epic-bundle-referenced.ts +42 -17
  1066. package/scripts/epic/epic-bundle.ts +31 -4
  1067. package/scripts/epic/epic-busy.ts +11 -9
  1068. package/scripts/epic/epic-chains.ts +59 -23
  1069. package/scripts/epic/epic-child-source.ts +111 -0
  1070. package/scripts/epic/epic-cli-untrack.ts +38 -0
  1071. package/scripts/epic/epic-cli.ts +26 -7
  1072. package/scripts/epic/epic-close-comment.ts +4 -2
  1073. package/scripts/epic/epic-close.ts +25 -11
  1074. package/scripts/epic/epic-decide.ts +39 -3
  1075. package/scripts/epic/epic-fetch.ts +116 -24
  1076. package/scripts/epic/epic-graph.ts +1 -0
  1077. package/scripts/epic/epic-label-age.ts +55 -13
  1078. package/scripts/epic/epic-lane-occupancy.ts +75 -0
  1079. package/scripts/epic/epic-lane-offer.ts +49 -13
  1080. package/scripts/epic/epic-main.ts +23 -0
  1081. package/scripts/epic/epic-next-main.ts +2 -4
  1082. package/scripts/epic/epic-next-read.ts +12 -3
  1083. package/scripts/epic/epic-next-views.ts +1 -1
  1084. package/scripts/epic/epic-notify.ts +72 -0
  1085. package/scripts/epic/epic-parse.ts +1 -1
  1086. package/scripts/epic/epic-rank.ts +6 -2
  1087. package/scripts/epic/epic-reference.ts +1 -1
  1088. package/scripts/epic/epic-run.ts +14 -1
  1089. package/scripts/epic/epic-shape.ts +2 -2
  1090. package/scripts/epic/epic-solo-stale.ts +1 -1
  1091. package/scripts/epic/epic-solo.ts +11 -5
  1092. package/scripts/epic/epic-split-reach.ts +107 -0
  1093. package/scripts/epic/epic-triage.ts +29 -5
  1094. package/scripts/epic/epic-untrack-plan.ts +75 -0
  1095. package/scripts/epic/epic-untrack.ts +42 -0
  1096. package/scripts/epic/epic.ts +65 -31
  1097. package/scripts/followup/followup-check-report.ts +70 -0
  1098. package/scripts/followup/followup-ci-path.ts +27 -7
  1099. package/scripts/followup/followup-coderabbit-retrigger.ts +61 -23
  1100. package/scripts/followup/followup-failed-tests.ts +4 -0
  1101. package/scripts/followup/followup-human-merge.ts +109 -0
  1102. package/scripts/followup/followup-job-needs.ts +92 -14
  1103. package/scripts/followup/followup-job-rerun.ts +162 -43
  1104. package/scripts/followup/followup-run-rerun.ts +183 -0
  1105. package/scripts/followup/followup-section.ts +30 -0
  1106. package/scripts/followup/followup-ship-environment.ts +17 -0
  1107. package/scripts/followup/git-followup-finish.ts +52 -1
  1108. package/scripts/followup/git-followup-flush.ts +6 -8
  1109. package/scripts/followup/git-followup-stages.ts +3 -0
  1110. package/scripts/followup/git-followup-workflow.ts +29 -9
  1111. package/scripts/followup/git-pr-followup-checks.ts +65 -8
  1112. package/scripts/followup/git-pr-followup-wrapup.ts +11 -9
  1113. package/scripts/followup/git-pr-followup.ts +18 -12
  1114. package/scripts/fresh-machine/fresh-machine-cli.ts +2 -1
  1115. package/scripts/fresh-machine/fresh-machine-image.ts +3 -1
  1116. package/scripts/fresh-machine/fresh-machine-patterns.ts +25 -4
  1117. package/scripts/fresh-machine/fresh-machine-registry.ts +85 -0
  1118. package/scripts/fresh-machine/fresh-machine-script.ts +3 -1
  1119. package/scripts/fresh-machine/fresh-machine-spec.ts +2 -2
  1120. package/scripts/fresh-machine/specs/kit-test-backlogrun-python.json +0 -1
  1121. package/scripts/fresh-machine/specs/kit-test-backlogrun.json +0 -1
  1122. package/scripts/gate/busy-average.ts +26 -3
  1123. package/scripts/gate/change-scope-action.ts +101 -0
  1124. package/scripts/gate/check-inputs.ts +1 -1
  1125. package/scripts/gate/check-related-order.ts +65 -0
  1126. package/scripts/gate/check-related-pinned.ts +3 -2
  1127. package/scripts/gate/check-related-reuse.ts +34 -6
  1128. package/scripts/gate/check-related-section.ts +8 -1
  1129. package/scripts/gate/check-related-unplanned.ts +11 -1
  1130. package/scripts/gate/check-related.ts +122 -34
  1131. package/scripts/gate/check-reuse.ts +63 -31
  1132. package/scripts/gate/command-memory.ts +10 -4
  1133. package/scripts/gate/core-admission.ts +34 -8
  1134. package/scripts/gate/core-budget.ts +55 -65
  1135. package/scripts/gate/core-priority.ts +28 -0
  1136. package/scripts/gate/core-reservation.ts +85 -0
  1137. package/scripts/gate/core-wait.ts +90 -19
  1138. package/scripts/gate/core-weights.ts +25 -16
  1139. package/scripts/gate/gate-checks.ts +196 -0
  1140. package/scripts/gate/gate-labels.ts +4 -0
  1141. package/scripts/gate/gate-plan.ts +34 -164
  1142. package/scripts/gate/gate-report.ts +14 -10
  1143. package/scripts/gate/gate-run-steps.ts +38 -6
  1144. package/scripts/gate/gate-skip.ts +1 -1
  1145. package/scripts/gate/gate-static-group.ts +35 -6
  1146. package/scripts/gate/machine-capacity.ts +20 -25
  1147. package/scripts/gate/metrics-totals.ts +30 -4
  1148. package/scripts/gate/path-glob.ts +15 -0
  1149. package/scripts/gate/pre-commit-type-check.ts +2 -6
  1150. package/scripts/gate/project-checks.ts +33 -2
  1151. package/scripts/gate/project-gate-steps.ts +206 -0
  1152. package/scripts/gate/project-step-reuse.ts +69 -0
  1153. package/scripts/gate/scoped-green.ts +10 -4
  1154. package/scripts/gate/since-green.ts +76 -20
  1155. package/scripts/gate/tree-verdict.ts +111 -0
  1156. package/scripts/gate/tsc-arguments.ts +9 -0
  1157. package/scripts/gate/type-check-command.ts +4 -7
  1158. package/scripts/gate/type-check-step.ts +4 -1
  1159. package/scripts/gate/type-program-serial.ts +52 -0
  1160. package/scripts/gate/verification-gate.ts +47 -17
  1161. package/scripts/gate/verification-inputs.ts +46 -11
  1162. package/scripts/gate/whole-tree-reuse.ts +24 -0
  1163. package/scripts/gh/gh-author-association.ts +40 -14
  1164. package/scripts/gh/gh-call-kind.ts +97 -0
  1165. package/scripts/gh/gh-comment-input.ts +26 -0
  1166. package/scripts/gh/gh-core-rate-limit.ts +151 -0
  1167. package/scripts/gh/gh-permission-cache.ts +44 -0
  1168. package/scripts/gh/gh-request-tally.ts +143 -0
  1169. package/scripts/gh/gh-spawn.ts +2 -2
  1170. package/scripts/gh/gh-usage-cli.ts +71 -0
  1171. package/scripts/gh/gh-usage-event.ts +82 -0
  1172. package/scripts/gh/gh-usage-log.ts +48 -0
  1173. package/scripts/gh/gh-usage-tally.ts +209 -0
  1174. package/scripts/gh/git-gh-api-path.ts +17 -2
  1175. package/scripts/gh/git-gh-blocked-by-graphql.ts +107 -0
  1176. package/scripts/gh/git-gh-checks-failed-main.ts +24 -0
  1177. package/scripts/gh/git-gh-checks-failed.ts +141 -0
  1178. package/scripts/gh/git-gh-code-scanning.ts +81 -0
  1179. package/scripts/gh/git-gh-conditional.ts +36 -4
  1180. package/scripts/gh/git-gh-etag-read.ts +107 -0
  1181. package/scripts/gh/git-gh-exec.ts +74 -25
  1182. package/scripts/gh/git-gh-failure.ts +16 -2
  1183. package/scripts/gh/git-gh-helpers.ts +2 -6
  1184. package/scripts/gh/git-gh-issue-alias-graphql.ts +113 -0
  1185. package/scripts/gh/git-gh-issue-batch-graphql.ts +155 -0
  1186. package/scripts/gh/git-gh-issue-batch-read.ts +66 -0
  1187. package/scripts/gh/git-gh-issue-graphql.ts +229 -0
  1188. package/scripts/gh/git-gh-issue-list-graphql.ts +103 -0
  1189. package/scripts/gh/git-gh-issue-list.ts +126 -34
  1190. package/scripts/gh/git-gh-issue-memo.ts +53 -0
  1191. package/scripts/gh/git-gh-issue-read.ts +87 -14
  1192. package/scripts/gh/git-gh-issue-rest.ts +5 -8
  1193. package/scripts/gh/git-gh-issue-write.ts +31 -10
  1194. package/scripts/gh/git-gh-issue.ts +25 -4
  1195. package/scripts/gh/git-gh-poll-read.ts +43 -18
  1196. package/scripts/gh/git-gh-pr-auto-merge.ts +1 -4
  1197. package/scripts/gh/git-gh-pr-graphql-snapshot.ts +369 -0
  1198. package/scripts/gh/git-gh-pr-graphql-state.ts +21 -26
  1199. package/scripts/gh/git-gh-pr-read.ts +4 -1
  1200. package/scripts/gh/git-gh-pr-rollup.ts +10 -3
  1201. package/scripts/gh/git-gh-pr-snapshot.ts +78 -22
  1202. package/scripts/gh/git-gh-pr.ts +51 -17
  1203. package/scripts/gh/git-gh-rate-limit.ts +91 -0
  1204. package/scripts/gh/git-gh-repo.ts +37 -20
  1205. package/scripts/gh/git-gh-retry.ts +60 -24
  1206. package/scripts/gh/git-gh-spawn-width.ts +6 -0
  1207. package/scripts/gh/git-gh-transport.ts +213 -0
  1208. package/scripts/gh/git-pr-ai-review.ts +8 -5
  1209. package/scripts/gh/git-pr-checks-eval.ts +16 -17
  1210. package/scripts/gh/git-pr-checks-gate.ts +129 -0
  1211. package/scripts/gh/git-pr-checks-missing.ts +165 -0
  1212. package/scripts/gh/git-pr-checks-parse.ts +4 -0
  1213. package/scripts/gh/git-pr-checks-watch.ts +22 -6
  1214. package/scripts/gh/git-pr-checks.ts +105 -76
  1215. package/scripts/gh/git-pr-merge-checked.ts +26 -12
  1216. package/scripts/gh/git-pr.ts +9 -23
  1217. package/scripts/git/base-tree.ts +18 -10
  1218. package/scripts/git/changed-paths-sync.ts +4 -12
  1219. package/scripts/git/changed-paths.ts +31 -6
  1220. package/scripts/git/git-command.ts +9 -1
  1221. package/scripts/git/git-common-directory.ts +17 -3
  1222. package/scripts/git/git-issue.ts +3 -3
  1223. package/scripts/git/git-merge-conflicts.ts +8 -3
  1224. package/scripts/git/git-path-quoting.ts +54 -0
  1225. package/scripts/git/git-push-transport.ts +8 -10
  1226. package/scripts/git/git-schemas.ts +1 -0
  1227. package/scripts/git/git-spawn-sync.ts +11 -7
  1228. package/scripts/git/git-spawn.ts +1 -1
  1229. package/scripts/git/git-ssh-keepalive.ts +3 -3
  1230. package/scripts/git/git-workflow.ts +32 -9
  1231. package/scripts/git/git-worktree.ts +12 -4
  1232. package/scripts/git/main-merge.ts +3 -36
  1233. package/scripts/git/main-sync.ts +2 -13
  1234. package/scripts/git/repository-lock.ts +8 -7
  1235. package/scripts/git/stash/git-stash.ts +38 -5
  1236. package/scripts/git/stash/stash-pop-cli.ts +43 -6
  1237. package/scripts/hooks/bash-revert.ts +253 -0
  1238. package/scripts/hooks/batch-guard.ts +28 -16
  1239. package/scripts/hooks/check-commit-message.ts +5 -7
  1240. package/scripts/hooks/codex-hook-adapter.ts +58 -13
  1241. package/scripts/hooks/direct-gh-usage.ts +130 -0
  1242. package/scripts/hooks/edited-cspell.ts +8 -11
  1243. package/scripts/hooks/fixtures/claude-Agent.json +16 -0
  1244. package/scripts/hooks/fixtures/claude-Bash.json +12 -0
  1245. package/scripts/hooks/fixtures/claude-Edit.json +17 -0
  1246. package/scripts/hooks/fixtures/claude-Read.json +12 -0
  1247. package/scripts/hooks/fixtures/claude-Write.json +12 -0
  1248. package/scripts/hooks/fixtures/codex-Bash-cat.json +12 -0
  1249. package/scripts/hooks/fixtures/codex-Bash.json +12 -0
  1250. package/scripts/hooks/fixtures/codex-apply_patch.json +14 -0
  1251. package/scripts/hooks/format-edited-cli.ts +8 -1
  1252. package/scripts/hooks/format-edited-file.ts +33 -27
  1253. package/scripts/hooks/hook-context.ts +22 -0
  1254. package/scripts/hooks/hook-demoted.ts +84 -0
  1255. package/scripts/hooks/hook-lap.ts +61 -0
  1256. package/scripts/hooks/hook-ledger-cli.ts +246 -0
  1257. package/scripts/hooks/hook-ledger-demote.ts +58 -0
  1258. package/scripts/hooks/hook-ledger-issues.ts +61 -0
  1259. package/scripts/hooks/hook-ledger-read.ts +97 -0
  1260. package/scripts/hooks/hook-ledger.ts +163 -0
  1261. package/scripts/hooks/implementation-authority.ts +48 -0
  1262. package/scripts/hooks/implementation-shell-deny.ts +344 -0
  1263. package/scripts/hooks/implementation-shell-nested.ts +148 -0
  1264. package/scripts/hooks/implementation-shell.ts +253 -0
  1265. package/scripts/hooks/lane-plan-guard.ts +1 -1
  1266. package/scripts/hooks/pre-commit-lint.ts +10 -5
  1267. package/scripts/hooks/pre-push-unit.ts +49 -13
  1268. package/scripts/hooks/pretool-guard.ts +184 -70
  1269. package/scripts/hooks/reserved-run.ts +13 -13
  1270. package/scripts/hooks/run-hook.sh +84 -30
  1271. package/scripts/hooks/step-zero-notice.ts +52 -14
  1272. package/scripts/hooks/stop-actions.ts +10 -3
  1273. package/scripts/hooks/stop-guard.ts +29 -8
  1274. package/scripts/init/claude-kit-only-settings.ts +1 -1
  1275. package/scripts/init/hook-command-rewrite.ts +90 -65
  1276. package/scripts/init/hook-launch.ts +27 -22
  1277. package/scripts/init/init-ai-copy.ts +14 -4
  1278. package/scripts/init/init-bootstrap.ts +40 -8
  1279. package/scripts/init/init-copy-content.ts +2 -2
  1280. package/scripts/init/init-install.ts +9 -1
  1281. package/scripts/init/init-logic-deploy-vps.ts +5 -3
  1282. package/scripts/init/init-logic-workspace.ts +16 -1
  1283. package/scripts/init/init-logic.ts +11 -18
  1284. package/scripts/init/npm-publish-files.ts +25 -0
  1285. package/scripts/init/start-setup-pr.ts +1 -1
  1286. package/scripts/init/tsconfig-preset-migration.ts +5 -10
  1287. package/scripts/issue/aggregation-split.ts +4 -2
  1288. package/scripts/issue/already-done-citation.ts +103 -0
  1289. package/scripts/issue/baseline-measure.ts +2 -1
  1290. package/scripts/issue/behavior-change-lint.ts +5 -4
  1291. package/scripts/issue/defect-origin-line.ts +11 -10
  1292. package/scripts/issue/defect-origin.ts +4 -3
  1293. package/scripts/issue/defect-rate.ts +2 -1
  1294. package/scripts/issue/defect-report-format.ts +1 -1
  1295. package/scripts/issue/effect-audit.ts +12 -11
  1296. package/scripts/issue/enforcement-lint.ts +48 -0
  1297. package/scripts/issue/expected-effect-lint.ts +6 -5
  1298. package/scripts/issue/figure-source-lint.ts +59 -0
  1299. package/scripts/issue/git-next-issues.ts +15 -17
  1300. package/scripts/issue/issue-already-done-cli.ts +24 -4
  1301. package/scripts/issue/issue-auto-ok.ts +23 -6
  1302. package/scripts/issue/issue-body-cli.ts +75 -0
  1303. package/scripts/issue/issue-body-keys.ts +223 -0
  1304. package/scripts/issue/issue-body-or-comment.ts +1 -1
  1305. package/scripts/issue/issue-bug-label.ts +5 -2
  1306. package/scripts/issue/issue-cap-files.ts +111 -0
  1307. package/scripts/issue/issue-cite-cli.ts +2 -2
  1308. package/scripts/issue/issue-cite.ts +20 -3
  1309. package/scripts/issue/issue-classification.ts +66 -7
  1310. package/scripts/issue/issue-closing-pr.ts +51 -16
  1311. package/scripts/issue/issue-consolidate-cli.ts +81 -0
  1312. package/scripts/issue/issue-consolidate.ts +246 -0
  1313. package/scripts/issue/issue-declared-size.ts +21 -0
  1314. package/scripts/issue/issue-evidence-exit.ts +6 -3
  1315. package/scripts/issue/issue-file-batch-entries.ts +107 -0
  1316. package/scripts/issue/issue-file-batch.ts +206 -0
  1317. package/scripts/issue/issue-file-cli.ts +147 -208
  1318. package/scripts/issue/issue-file-fold.ts +4 -8
  1319. package/scripts/issue/issue-file-interrupt.ts +68 -9
  1320. package/scripts/issue/issue-file-lane-hint.ts +3 -2
  1321. package/scripts/issue/issue-file-main.ts +17 -0
  1322. package/scripts/issue/issue-file-pass.ts +242 -0
  1323. package/scripts/issue/issue-file.ts +24 -5
  1324. package/scripts/issue/issue-fold-apply.ts +102 -0
  1325. package/scripts/issue/issue-fold-existing-cli.ts +226 -19
  1326. package/scripts/issue/issue-human-stops.ts +102 -0
  1327. package/scripts/issue/issue-labels.ts +14 -3
  1328. package/scripts/issue/issue-lint-cli.ts +20 -6
  1329. package/scripts/issue/issue-lint.ts +4 -6
  1330. package/scripts/issue/issue-merged.ts +75 -9
  1331. package/scripts/issue/issue-not-before.ts +34 -4
  1332. package/scripts/issue/issue-number-shape.ts +8 -0
  1333. package/scripts/issue/issue-plan-cli.ts +33 -5
  1334. package/scripts/issue/issue-plan-notify.ts +100 -0
  1335. package/scripts/issue/issue-premise-unmet-cli.ts +110 -0
  1336. package/scripts/issue/issue-priority-cli.ts +103 -16
  1337. package/scripts/issue/issue-priority-instructed.ts +55 -0
  1338. package/scripts/issue/issue-priority-raise.ts +70 -12
  1339. package/scripts/issue/issue-priority.ts +56 -16
  1340. package/scripts/issue/issue-rank.ts +48 -15
  1341. package/scripts/issue/issue-read-cli.ts +66 -33
  1342. package/scripts/issue/issue-read.ts +20 -5
  1343. package/scripts/issue/issue-release-class-cli.ts +79 -0
  1344. package/scripts/issue/issue-report-failures.ts +14 -5
  1345. package/scripts/issue/issue-run-hold.ts +13 -0
  1346. package/scripts/issue/issue-run-verdict.ts +68 -0
  1347. package/scripts/issue/issue-sample-gate.ts +18 -7
  1348. package/scripts/issue/issue-sample-required.ts +20 -3
  1349. package/scripts/issue/issue-sample-source.ts +2 -1
  1350. package/scripts/issue/issue-scout-cli.ts +34 -18
  1351. package/scripts/issue/issue-scout.ts +25 -4
  1352. package/scripts/issue/issue-search.ts +3 -0
  1353. package/scripts/issue/issue-sources.ts +98 -0
  1354. package/scripts/issue/issue-spill-cli.ts +292 -0
  1355. package/scripts/issue/issue-spill-main.ts +11 -0
  1356. package/scripts/issue/issue-spill.ts +193 -0
  1357. package/scripts/issue/issue-state-cli.ts +9 -17
  1358. package/scripts/issue/issue-template-section.ts +8 -3
  1359. package/scripts/issue/issue-tick-cli.ts +59 -0
  1360. package/scripts/issue/issue-watch-diff.ts +22 -7
  1361. package/scripts/issue/issue-watch-hook.ts +11 -9
  1362. package/scripts/issue/issue-watch.ts +25 -5
  1363. package/scripts/issue/issue-wip.ts +44 -9
  1364. package/scripts/issue/markdown-section.ts +66 -10
  1365. package/scripts/issue/measure-declaration.ts +70 -13
  1366. package/scripts/issue/measure-rerun-cli.ts +9 -8
  1367. package/scripts/issue/measure-twin.ts +37 -0
  1368. package/scripts/issue/reproduction-measure.ts +2 -1
  1369. package/scripts/issue/session-cite.ts +1 -1
  1370. package/scripts/issue/size-estimate.ts +317 -22
  1371. package/scripts/issue/trusted-measure-source.ts +43 -0
  1372. package/scripts/issue/trusted-measure.ts +79 -35
  1373. package/scripts/issue/upstream-interrupt-cli.ts +280 -0
  1374. package/scripts/issue/upstream-interrupt-main.ts +11 -0
  1375. package/scripts/josh/agent-session-environment.ts +19 -1
  1376. package/scripts/josh/cli-body.ts +46 -9
  1377. package/scripts/josh/command-usage.ts +3 -0
  1378. package/scripts/josh/durable-state-migrate.ts +11 -4
  1379. package/scripts/josh/durable-state-root.ts +60 -0
  1380. package/scripts/josh/durable-state.ts +9 -44
  1381. package/scripts/josh/hook-decision.ts +55 -113
  1382. package/scripts/josh/hook-envelope.ts +62 -0
  1383. package/scripts/josh/hook-payload-capture.ts +78 -0
  1384. package/scripts/josh/hook-tool-payload.ts +15 -0
  1385. package/scripts/josh/josh-aliases.ts +7 -0
  1386. package/scripts/josh/josh-command-map.ts +15 -0
  1387. package/scripts/josh/josh-command-types.ts +28 -4
  1388. package/scripts/josh/josh-commands-agent-hooks.ts +39 -7
  1389. package/scripts/josh/josh-commands-ai.ts +420 -9
  1390. package/scripts/josh/josh-commands-backlog.ts +79 -11
  1391. package/scripts/josh/josh-commands-clone.ts +2 -5
  1392. package/scripts/josh/josh-commands-development.ts +25 -8
  1393. package/scripts/josh/josh-commands-document.ts +22 -10
  1394. package/scripts/josh/josh-commands-epic.ts +30 -11
  1395. package/scripts/josh/josh-commands-hooks.ts +0 -1
  1396. package/scripts/josh/josh-commands-issue-write.ts +190 -18
  1397. package/scripts/josh/josh-commands-issue.ts +57 -17
  1398. package/scripts/josh/josh-commands-lint.ts +52 -19
  1399. package/scripts/josh/josh-commands-maintenance.ts +37 -4
  1400. package/scripts/josh/josh-commands-pause.ts +53 -5
  1401. package/scripts/josh/josh-commands-prime.ts +28 -0
  1402. package/scripts/josh/josh-commands-progress.ts +59 -7
  1403. package/scripts/josh/josh-commands-project.ts +8 -5
  1404. package/scripts/josh/josh-commands-review.ts +83 -5
  1405. package/scripts/josh/josh-commands-run.ts +20 -31
  1406. package/scripts/josh/josh-commands-ship.ts +95 -13
  1407. package/scripts/josh/josh-commands-test-check.ts +0 -2
  1408. package/scripts/josh/josh-commands-versioning.ts +11 -2
  1409. package/scripts/josh/josh-commands-workflow.ts +41 -11
  1410. package/scripts/josh/josh-completion-scripts.ts +81 -0
  1411. package/scripts/josh/josh-completion.ts +29 -0
  1412. package/scripts/josh/josh-environment-file.ts +8 -10
  1413. package/scripts/josh/josh-gh-usage.ts +53 -0
  1414. package/scripts/josh/josh-in-process.ts +21 -21
  1415. package/scripts/josh/josh-logic.ts +22 -46
  1416. package/scripts/josh/josh-read-only.ts +51 -0
  1417. package/scripts/josh/josh-run.ts +30 -6
  1418. package/scripts/josh/josh.ts +9 -11
  1419. package/scripts/josh/path-decision.ts +2 -2
  1420. package/scripts/josh/process-identity.ts +5 -0
  1421. package/scripts/josh/session-handoff-line.ts +88 -0
  1422. package/scripts/josh/session-language-cli.ts +18 -4
  1423. package/scripts/josh/session-model-record.ts +62 -0
  1424. package/scripts/lane/historical-evidence.ts +136 -0
  1425. package/scripts/lane/historical-log-evidence.ts +47 -0
  1426. package/scripts/lane/lane-adopt-cli.ts +1 -1
  1427. package/scripts/lane/lane-await.ts +8 -3
  1428. package/scripts/lane/lane-breakdown-calls.ts +165 -0
  1429. package/scripts/lane/lane-breakdown-cli.ts +77 -9
  1430. package/scripts/lane/lane-breakdown-estimate.ts +136 -0
  1431. package/scripts/lane/lane-breakdown-implement.ts +166 -29
  1432. package/scripts/lane/lane-breakdown-laps.ts +116 -24
  1433. package/scripts/lane/lane-breakdown-pause.ts +127 -0
  1434. package/scripts/lane/lane-breakdown-pinned.ts +19 -3
  1435. package/scripts/lane/lane-breakdown-related.ts +40 -0
  1436. package/scripts/lane/lane-breakdown-text.ts +129 -15
  1437. package/scripts/lane/lane-breakdown.ts +194 -30
  1438. package/scripts/lane/lane-broker-server.ts +1 -1
  1439. package/scripts/lane/lane-capacity.ts +27 -16
  1440. package/scripts/lane/lane-chain-stop-stats.ts +110 -0
  1441. package/scripts/lane/lane-check-stats.ts +25 -5
  1442. package/scripts/lane/lane-child-invocation.ts +9 -9
  1443. package/scripts/lane/lane-ci-path-stats.ts +15 -4
  1444. package/scripts/lane/lane-cli.ts +2 -2
  1445. package/scripts/lane/lane-concurrency-stats.ts +110 -0
  1446. package/scripts/lane/lane-cut-stats.ts +101 -0
  1447. package/scripts/lane/lane-dispatch.ts +25 -20
  1448. package/scripts/lane/lane-early-push-stats.ts +25 -0
  1449. package/scripts/lane/lane-environment.ts +2 -2
  1450. package/scripts/lane/lane-gap-stats.ts +69 -8
  1451. package/scripts/lane/lane-guard-policy.ts +1 -1
  1452. package/scripts/lane/lane-hand-back-held.ts +51 -0
  1453. package/scripts/lane/lane-hand-back-hold.ts +103 -0
  1454. package/scripts/lane/lane-held-stats.ts +13 -1
  1455. package/scripts/lane/lane-implement-rate-read.ts +50 -0
  1456. package/scripts/lane/lane-implement-rate.ts +74 -0
  1457. package/scripts/lane/lane-implement-read.ts +129 -0
  1458. package/scripts/lane/lane-implement-signals-record.ts +56 -0
  1459. package/scripts/lane/lane-implement-signals.ts +161 -0
  1460. package/scripts/lane/lane-implement-stats.ts +93 -18
  1461. package/scripts/lane/lane-launch-admission.ts +61 -0
  1462. package/scripts/lane/lane-launch-cli.ts +63 -27
  1463. package/scripts/lane/lane-launch-pending.ts +44 -0
  1464. package/scripts/lane/lane-ledger-archive.ts +200 -0
  1465. package/scripts/lane/lane-ledger-kind.ts +5 -0
  1466. package/scripts/lane/lane-ledger-pinned-origin.ts +10 -0
  1467. package/scripts/lane/lane-ledger-schema-load.ts +45 -0
  1468. package/scripts/lane/lane-ledger-schema-offer.ts +30 -0
  1469. package/scripts/lane/lane-ledger-schema-ship.ts +70 -4
  1470. package/scripts/lane/lane-ledger-schema.ts +53 -30
  1471. package/scripts/lane/lane-ledger-tail.ts +124 -0
  1472. package/scripts/lane/lane-ledger-write.ts +60 -27
  1473. package/scripts/lane/lane-ledger.ts +6 -31
  1474. package/scripts/lane/lane-limit-cli.ts +11 -1
  1475. package/scripts/lane/lane-limit-history.ts +77 -0
  1476. package/scripts/lane/lane-limit-override.ts +49 -8
  1477. package/scripts/lane/lane-listening-ports.ts +77 -0
  1478. package/scripts/lane/lane-load.ts +62 -2
  1479. package/scripts/lane/lane-measure-cli.ts +134 -55
  1480. package/scripts/lane/lane-net-read.ts +22 -10
  1481. package/scripts/lane/lane-net-time.ts +103 -18
  1482. package/scripts/lane/lane-open.ts +19 -113
  1483. package/scripts/lane/lane-over-causes.ts +130 -0
  1484. package/scripts/lane/lane-over.ts +177 -0
  1485. package/scripts/lane/lane-overrun-prompt.ts +4 -3
  1486. package/scripts/lane/lane-overrun.ts +22 -9
  1487. package/scripts/lane/lane-pairs.ts +128 -0
  1488. package/scripts/lane/lane-paths.ts +26 -0
  1489. package/scripts/lane/lane-pause-cli.ts +4 -2
  1490. package/scripts/lane/lane-paused-spans.ts +11 -4
  1491. package/scripts/lane/lane-phase.ts +36 -7
  1492. package/scripts/lane/lane-plan-approval.ts +113 -0
  1493. package/scripts/lane/lane-plan-auto.ts +53 -0
  1494. package/scripts/lane/lane-plan-check.ts +196 -54
  1495. package/scripts/lane/lane-plan-cli.ts +37 -10
  1496. package/scripts/lane/lane-plan-imports.ts +53 -0
  1497. package/scripts/lane/lane-plan-premise.ts +83 -0
  1498. package/scripts/lane/lane-plan-probe.ts +115 -0
  1499. package/scripts/lane/lane-plan-signals.ts +119 -0
  1500. package/scripts/lane/lane-plan-size.ts +389 -0
  1501. package/scripts/lane/lane-plan-wait-event.ts +124 -0
  1502. package/scripts/lane/lane-plan-wait-until.ts +22 -0
  1503. package/scripts/lane/lane-plan-wait.ts +125 -0
  1504. package/scripts/lane/lane-plan.ts +113 -14
  1505. package/scripts/lane/lane-preserve.ts +58 -13
  1506. package/scripts/lane/lane-process-load.ts +130 -19
  1507. package/scripts/lane/lane-process-stats.ts +51 -10
  1508. package/scripts/lane/lane-reap.ts +4 -2
  1509. package/scripts/lane/lane-registry.ts +19 -14
  1510. package/scripts/lane/lane-relaunch.ts +32 -14
  1511. package/scripts/lane/lane-report.ts +2 -0
  1512. package/scripts/lane/lane-resolve-cli.ts +88 -0
  1513. package/scripts/lane/lane-resolve-hunks.ts +63 -0
  1514. package/scripts/lane/lane-resolve-record.ts +59 -0
  1515. package/scripts/lane/lane-resolve.ts +122 -0
  1516. package/scripts/lane/lane-restart.ts +1 -1
  1517. package/scripts/lane/lane-room.ts +58 -0
  1518. package/scripts/lane/lane-round-one-stats.ts +2 -1
  1519. package/scripts/lane/lane-sampler.ts +53 -3
  1520. package/scripts/lane/lane-seat-ownership.ts +57 -0
  1521. package/scripts/lane/lane-seat-start.ts +52 -0
  1522. package/scripts/lane/lane-seat-stop.ts +20 -0
  1523. package/scripts/lane/lane-seat.ts +174 -0
  1524. package/scripts/lane/lane-seed.ts +2 -5
  1525. package/scripts/lane/lane-session-action.ts +26 -10
  1526. package/scripts/lane/lane-session-broker.ts +1 -1
  1527. package/scripts/lane/lane-session-reread.ts +2 -1
  1528. package/scripts/lane/lane-setup.ts +59 -0
  1529. package/scripts/lane/lane-ship-lap-stats.ts +3 -1
  1530. package/scripts/lane/lane-sinks-issues.ts +52 -0
  1531. package/scripts/lane/lane-sinks.ts +165 -0
  1532. package/scripts/lane/lane-size-record.ts +39 -0
  1533. package/scripts/lane/lane-size-stats.ts +111 -0
  1534. package/scripts/lane/lane-split-stats.ts +33 -9
  1535. package/scripts/lane/lane-stage-budget.ts +27 -0
  1536. package/scripts/lane/lane-stage-stats.ts +94 -25
  1537. package/scripts/lane/lane-state-record.ts +74 -0
  1538. package/scripts/lane/lane-state.ts +21 -33
  1539. package/scripts/lane/lane-stats-request.ts +163 -0
  1540. package/scripts/lane/lane-stats-tables.ts +44 -3
  1541. package/scripts/lane/lane-stats.ts +9 -2
  1542. package/scripts/lane/lane-stop-stats.ts +3 -2
  1543. package/scripts/lane/lane-test-related-stats.ts +5 -2
  1544. package/scripts/lane/lane-timeline.ts +251 -0
  1545. package/scripts/lane/lane-transcript-calls.ts +73 -4
  1546. package/scripts/lane/lane-transcript-stats.ts +8 -3
  1547. package/scripts/lane/lane-turn-stats.ts +171 -0
  1548. package/scripts/lane/lane-value-cell.ts +87 -13
  1549. package/scripts/lane/lane-value-missing.ts +21 -0
  1550. package/scripts/lane/lane-why-causes.ts +102 -0
  1551. package/scripts/lane/lane-why-ci.ts +50 -0
  1552. package/scripts/lane/lane-why-cli.ts +83 -0
  1553. package/scripts/lane/lane-why-period.ts +187 -0
  1554. package/scripts/lane/lane-why-ship.ts +67 -0
  1555. package/scripts/lane/lane-why.ts +192 -0
  1556. package/scripts/lane/lane-withdraw.ts +12 -1
  1557. package/scripts/lane/lane-yield-split.ts +218 -0
  1558. package/scripts/lane/lane-yield.ts +38 -4
  1559. package/scripts/lane/openai-lane-ship.ts +2 -2
  1560. package/scripts/lane/openai-lane-supervisor-cli.ts +17 -8
  1561. package/scripts/lane/openai-lane-supervisor-decision.ts +10 -4
  1562. package/scripts/lane/openai-lane-supervisor-entry.ts +6 -0
  1563. package/scripts/lane/openai-lane-supervisor-owner.ts +19 -3
  1564. package/scripts/lane/openai-lane-supervisor.ts +26 -4
  1565. package/scripts/lane/process-directories.ts +3 -1
  1566. package/scripts/lane/process-lane-marks.ts +11 -5
  1567. package/scripts/lane/process-linux.ts +81 -0
  1568. package/scripts/lane/process-tools.ts +2 -5
  1569. package/scripts/lib/bounded-pool.ts +38 -7
  1570. package/scripts/lib/buffered-process.ts +34 -9
  1571. package/scripts/lib/claude-installer.ts +29 -0
  1572. package/scripts/lib/import-closure.ts +72 -0
  1573. package/scripts/lib/josh-temporary-directory.ts +7 -0
  1574. package/scripts/lib/main-guard.ts +29 -0
  1575. package/scripts/lib/package-manifest.ts +54 -3
  1576. package/scripts/lib/pnpm-installer.ts +16 -0
  1577. package/scripts/lib/poll.ts +130 -20
  1578. package/scripts/lib/schemas.ts +1 -1
  1579. package/scripts/lib/stamped-memo.ts +1 -1
  1580. package/scripts/lib/stamped-store.ts +82 -0
  1581. package/scripts/lib/stdin-text.ts +68 -0
  1582. package/scripts/lib/timeouts.ts +4 -4
  1583. package/scripts/lib/transcript-record.ts +4 -0
  1584. package/scripts/lib/verified-download.ts +17 -0
  1585. package/scripts/lines/bytes-command.ts +1 -1
  1586. package/scripts/lint/cspell-cached.ts +1 -1
  1587. package/scripts/lint/eslint-cache-dependencies.ts +38 -8
  1588. package/scripts/lint/eslint-daemon-calls.ts +83 -0
  1589. package/scripts/lint/eslint-daemon.ts +101 -13
  1590. package/scripts/lint/eslint-heap.ts +50 -0
  1591. package/scripts/lint/eslint-memory.js +45 -0
  1592. package/scripts/lint/eslint-trim.ts +44 -0
  1593. package/scripts/lint/eslint-warm.ts +5 -2
  1594. package/scripts/lint/format.ts +30 -5
  1595. package/scripts/lint/import-graph-store.ts +245 -0
  1596. package/scripts/lint/import-graph.ts +54 -65
  1597. package/scripts/lint/import-move.ts +275 -0
  1598. package/scripts/lint/import-test-inputs.ts +97 -0
  1599. package/scripts/lint/lint-gate-scope.ts +1 -0
  1600. package/scripts/lint/lint-parallel.ts +148 -43
  1601. package/scripts/lint/lint-related-scope.ts +6 -1
  1602. package/scripts/lint/lint-related.ts +66 -25
  1603. package/scripts/lint/lint-rule.ts +293 -0
  1604. package/scripts/lint/lint-shard.ts +91 -0
  1605. package/scripts/lint/lint-timing.ts +39 -0
  1606. package/scripts/lint/rename-cli.ts +36 -10
  1607. package/scripts/lint/rename-identifier.ts +2 -2
  1608. package/scripts/lint/type-only-imports.ts +20 -1
  1609. package/scripts/notify/git-notify.ts +3 -1
  1610. package/scripts/notify/telegram-notify.ts +33 -35
  1611. package/scripts/notify/telegram-test.ts +9 -4
  1612. package/scripts/observations/observation-depth-cli.ts +78 -0
  1613. package/scripts/observations/observation-depth.ts +85 -0
  1614. package/scripts/observations/observation-ledger-home.ts +14 -7
  1615. package/scripts/observations/observations-flush-landing.ts +1 -1
  1616. package/scripts/overrides/overrides-check.ts +33 -10
  1617. package/scripts/overrides/overrides-diff-report.ts +91 -0
  1618. package/scripts/overrides/overrides-diff.ts +98 -0
  1619. package/scripts/package/package-scout-cli.ts +37 -11
  1620. package/scripts/package/package-scout-format.ts +20 -6
  1621. package/scripts/package/package-scout-reuse.ts +207 -0
  1622. package/scripts/plan/plan-scaffold-cli.ts +125 -0
  1623. package/scripts/plan/plan-scaffold.ts +112 -0
  1624. package/scripts/ports/port-command.ts +2 -5
  1625. package/scripts/propagate/propagate-git.ts +3 -3
  1626. package/scripts/propagate/propagate-publish.ts +8 -7
  1627. package/scripts/propagate/propagate-steps.ts +2 -3
  1628. package/scripts/refactor/import-graph.ts +2 -4
  1629. package/scripts/refactor/refactor-lint.ts +47 -30
  1630. package/scripts/refactor/refactor-scan.ts +16 -9
  1631. package/scripts/refactor/refactor-targets.ts +2 -3
  1632. package/scripts/release/github-release.ts +10 -10
  1633. package/scripts/release/publish-tag-cli.ts +13 -3
  1634. package/scripts/release/release-cli.ts +2 -0
  1635. package/scripts/release/release-progress.ts +44 -36
  1636. package/scripts/release/release-request.ts +42 -0
  1637. package/scripts/release/release-scope-cli.ts +31 -2
  1638. package/scripts/release/release-workflow-check.ts +59 -0
  1639. package/scripts/report/markdown-shape.ts +2 -1
  1640. package/scripts/report/report-template-cli.ts +2 -2
  1641. package/scripts/report/report-template.ts +17 -4
  1642. package/scripts/review/acceptance-map.ts +87 -8
  1643. package/scripts/review/diff-summary-cli.ts +81 -0
  1644. package/scripts/review/diff-summary.ts +109 -0
  1645. package/scripts/review/disposition-batch-filing.ts +150 -0
  1646. package/scripts/review/disposition-batch.ts +103 -0
  1647. package/scripts/review/disposition-cli.ts +35 -1
  1648. package/scripts/review/import-specifiers.ts +38 -0
  1649. package/scripts/review/prose-stale-cli.ts +7 -37
  1650. package/scripts/review/prose-stale-read.ts +105 -0
  1651. package/scripts/review/prose-stale-scan.ts +121 -17
  1652. package/scripts/review/removed-tests-check.ts +28 -4
  1653. package/scripts/review/review-brief-cli.ts +69 -71
  1654. package/scripts/review/review-brief.ts +38 -42
  1655. package/scripts/review/review-code-tree.ts +80 -16
  1656. package/scripts/review/review-comment-carry.ts +30 -0
  1657. package/scripts/review/review-diff-pack.ts +70 -0
  1658. package/scripts/review/review-diff-write.ts +23 -22
  1659. package/scripts/review/review-final-record.ts +47 -0
  1660. package/scripts/review/review-finding-ledger.ts +72 -10
  1661. package/scripts/review/review-findings-cli.ts +88 -8
  1662. package/scripts/review/review-fix-hunks.ts +115 -0
  1663. package/scripts/review/review-fix-round.ts +144 -0
  1664. package/scripts/review/review-gate-mode.ts +25 -0
  1665. package/scripts/review/review-interaction.ts +69 -11
  1666. package/scripts/review/review-lane-handover.ts +29 -4
  1667. package/scripts/review/review-level.ts +35 -34
  1668. package/scripts/review/review-lint-findings.ts +3 -3
  1669. package/scripts/review/review-lint-sections.ts +2 -2
  1670. package/scripts/review/review-lint.ts +7 -1
  1671. package/scripts/review/review-pair-cli.ts +157 -0
  1672. package/scripts/review/review-pair-log.ts +75 -0
  1673. package/scripts/review/review-pair-session.ts +98 -0
  1674. package/scripts/review/review-pair.ts +112 -0
  1675. package/scripts/review/review-prior-findings.ts +2 -4
  1676. package/scripts/review/review-prompt-level.ts +28 -0
  1677. package/scripts/review/review-readers-scan.ts +25 -3
  1678. package/scripts/review/review-record-cli.ts +46 -68
  1679. package/scripts/review/review-record-interaction.ts +2 -2
  1680. package/scripts/review/review-record-main.ts +7 -2
  1681. package/scripts/review/review-record-pinned.ts +5 -0
  1682. package/scripts/review/review-record-slot.ts +155 -0
  1683. package/scripts/review/review-reviewed-tree.ts +60 -13
  1684. package/scripts/review/review-round-one-blobs.ts +43 -9
  1685. package/scripts/review/review-round-one-skip.ts +72 -0
  1686. package/scripts/review/review-round-reuse.ts +13 -6
  1687. package/scripts/review/review-round.ts +57 -0
  1688. package/scripts/review/review-round2-cli.ts +5 -0
  1689. package/scripts/review/review-round2-skip-comment.ts +3 -1
  1690. package/scripts/review/review-round2.ts +18 -6
  1691. package/scripts/review/review-size.ts +92 -0
  1692. package/scripts/review/review-stamps.ts +8 -0
  1693. package/scripts/review/review-submit-args.ts +91 -0
  1694. package/scripts/review/review-submit-cli.ts +55 -29
  1695. package/scripts/review/selfcheck-cli.ts +193 -0
  1696. package/scripts/review/selfcheck-commands.ts +175 -0
  1697. package/scripts/review/selfcheck-report.ts +98 -0
  1698. package/scripts/rules/bash-triggers.ts +24 -13
  1699. package/scripts/rules/broad-investigation-shell.ts +183 -0
  1700. package/scripts/rules/broad-investigation.ts +116 -0
  1701. package/scripts/rules/consultation-handoff.ts +81 -0
  1702. package/scripts/rules/consultation-investigation.ts +99 -0
  1703. package/scripts/rules/decision-oracle.ts +1 -1
  1704. package/scripts/rules/delivered-rules-guard.ts +94 -0
  1705. package/scripts/rules/delivered-rules.ts +46 -87
  1706. package/scripts/rules/destructive-command.ts +2 -1
  1707. package/scripts/rules/direct-git-status.ts +81 -0
  1708. package/scripts/rules/direct-issue-comment.ts +9 -1
  1709. package/scripts/rules/direct-vitest-run.ts +98 -0
  1710. package/scripts/rules/egress-guard.ts +308 -0
  1711. package/scripts/rules/firing-point.ts +9 -12
  1712. package/scripts/rules/gh-api.ts +19 -4
  1713. package/scripts/rules/gh-repo-selector.ts +1 -1
  1714. package/scripts/rules/git-argv.ts +57 -10
  1715. package/scripts/rules/guard-remedy.ts +9 -0
  1716. package/scripts/rules/guard-rule-rows.ts +13 -0
  1717. package/scripts/rules/implementation-cut-verdict.ts +1 -1
  1718. package/scripts/rules/implementation-cut.ts +94 -31
  1719. package/scripts/rules/interpreter-options.ts +179 -0
  1720. package/scripts/rules/investigator-foreground.ts +13 -7
  1721. package/scripts/rules/josh-git-bare.ts +1 -1
  1722. package/scripts/rules/keychain-read.ts +73 -0
  1723. package/scripts/rules/lane-background.ts +15 -14
  1724. package/scripts/rules/lane-carry-conflict.ts +15 -8
  1725. package/scripts/rules/lane-direct-tool.ts +18 -11
  1726. package/scripts/rules/lane-interactive-ask.ts +3 -5
  1727. package/scripts/rules/lane-park.ts +25 -10
  1728. package/scripts/rules/lane-spilled-read.ts +3 -5
  1729. package/scripts/rules/lane-split-park.ts +7 -6
  1730. package/scripts/rules/lane-switch-main.ts +10 -3
  1731. package/scripts/rules/launched-call.ts +135 -0
  1732. package/scripts/rules/main-model.ts +54 -0
  1733. package/scripts/rules/nested-commands.ts +71 -0
  1734. package/scripts/rules/permission-guards.ts +6 -2
  1735. package/scripts/rules/pr-merge.ts +1 -1
  1736. package/scripts/rules/pre-gate-cut.ts +20 -11
  1737. package/scripts/rules/protected-files.ts +34 -98
  1738. package/scripts/rules/repeat-check-related.ts +66 -0
  1739. package/scripts/rules/reviewer-foreground.ts +11 -7
  1740. package/scripts/rules/round-one-check-related.ts +59 -19
  1741. package/scripts/rules/rule-list.ts +3 -4
  1742. package/scripts/rules/rule-rephrase.ts +43 -0
  1743. package/scripts/rules/rule-rewrite.ts +16 -6
  1744. package/scripts/rules/rule-value-cache.ts +10 -1
  1745. package/scripts/rules/rule-value-cli.ts +62 -54
  1746. package/scripts/rules/rule-value-prose.ts +186 -0
  1747. package/scripts/rules/rule-value-runs.ts +171 -0
  1748. package/scripts/rules/rule-value.ts +38 -13
  1749. package/scripts/rules/run-tail-rule.ts +19 -2
  1750. package/scripts/rules/secret-paths.ts +92 -0
  1751. package/scripts/rules/sed-in-place.ts +1 -1
  1752. package/scripts/rules/shell-permissions.ts +91 -0
  1753. package/scripts/rules/shell-redirects.ts +54 -0
  1754. package/scripts/rules/shell-segments.ts +3 -2
  1755. package/scripts/rules/stop-decision.ts +7 -1
  1756. package/scripts/rules/stop-rules.ts +1 -1
  1757. package/scripts/rules/unasked-filing.ts +158 -0
  1758. package/scripts/run/add/run-add-cli.ts +114 -36
  1759. package/scripts/run/add/run-add-epic.ts +45 -0
  1760. package/scripts/run/add/run-add-issue.ts +17 -0
  1761. package/scripts/run/add/run-add.ts +159 -21
  1762. package/scripts/run/attached-log.ts +38 -0
  1763. package/scripts/run/board/run-board-cli.ts +34 -9
  1764. package/scripts/run/board/run-board-closed-graphql.ts +129 -0
  1765. package/scripts/run/board/run-board-closed.ts +68 -10
  1766. package/scripts/run/board/run-board-decision-graphql.ts +136 -0
  1767. package/scripts/run/board/run-board-decision-read.ts +195 -0
  1768. package/scripts/run/board/run-board-decision.ts +92 -0
  1769. package/scripts/run/board/run-board-earlier.ts +27 -3
  1770. package/scripts/run/board/run-board-ending-reason.ts +98 -9
  1771. package/scripts/run/board/run-board-ending-states.ts +34 -0
  1772. package/scripts/run/board/run-board-every.ts +19 -9
  1773. package/scripts/run/board/run-board-first-lane.ts +26 -0
  1774. package/scripts/run/board/run-board-fit.ts +47 -11
  1775. package/scripts/run/board/run-board-fold-store.ts +62 -0
  1776. package/scripts/run/board/run-board-fold.ts +41 -9
  1777. package/scripts/run/board/run-board-gather-live.ts +2 -0
  1778. package/scripts/run/board/run-board-gather-thread.ts +14 -3
  1779. package/scripts/run/board/run-board-gather-worker.ts +10 -8
  1780. package/scripts/run/board/run-board-gather.ts +10 -3
  1781. package/scripts/run/board/run-board-github.ts +117 -29
  1782. package/scripts/run/board/run-board-header.ts +33 -24
  1783. package/scripts/run/board/run-board-held.ts +53 -0
  1784. package/scripts/run/board/run-board-human-merge.ts +113 -0
  1785. package/scripts/run/board/run-board-human.ts +37 -0
  1786. package/scripts/run/board/run-board-idle.ts +9 -6
  1787. package/scripts/run/board/run-board-issue-count.ts +101 -0
  1788. package/scripts/run/board/run-board-keys.ts +19 -4
  1789. package/scripts/run/board/run-board-labels.ts +20 -4
  1790. package/scripts/run/board/run-board-lane-event.ts +23 -2
  1791. package/scripts/run/board/run-board-lane-result.ts +58 -0
  1792. package/scripts/run/board/run-board-lane-state.ts +52 -7
  1793. package/scripts/run/board/run-board-lane-stop.ts +108 -0
  1794. package/scripts/run/board/run-board-lane-time.ts +1 -0
  1795. package/scripts/run/board/run-board-layout.ts +64 -74
  1796. package/scripts/run/board/run-board-link.ts +42 -2
  1797. package/scripts/run/board/run-board-notes.ts +1 -1
  1798. package/scripts/run/board/run-board-now.ts +1 -1
  1799. package/scripts/run/board/run-board-operation-codex.ts +37 -0
  1800. package/scripts/run/board/run-board-operation-read.ts +2 -2
  1801. package/scripts/run/board/run-board-operation.ts +8 -5
  1802. package/scripts/run/board/run-board-plan-shared.ts +3 -0
  1803. package/scripts/run/board/run-board-plan.ts +6 -1
  1804. package/scripts/run/board/run-board-process-groups.ts +1 -1
  1805. package/scripts/run/board/run-board-quota-held.ts +319 -0
  1806. package/scripts/run/board/run-board-quota-lane.ts +23 -0
  1807. package/scripts/run/board/run-board-quota-read.ts +422 -0
  1808. package/scripts/run/board/run-board-quota-spent.ts +162 -0
  1809. package/scripts/run/board/run-board-quota-status.ts +67 -0
  1810. package/scripts/run/board/run-board-read.ts +112 -36
  1811. package/scripts/run/board/run-board-reason.ts +40 -20
  1812. package/scripts/run/board/run-board-render-condition.ts +18 -2
  1813. package/scripts/run/board/run-board-render-drawn.ts +5 -1
  1814. package/scripts/run/board/run-board-render-foot.ts +5 -1
  1815. package/scripts/run/board/run-board-render-found.ts +21 -2
  1816. package/scripts/run/board/run-board-render-icon.ts +3 -6
  1817. package/scripts/run/board/run-board-render-lanes.ts +49 -9
  1818. package/scripts/run/board/run-board-render-lead.ts +20 -1
  1819. package/scripts/run/board/run-board-render-legend.ts +4 -0
  1820. package/scripts/run/board/run-board-render-none.ts +35 -0
  1821. package/scripts/run/board/run-board-render-notes.ts +5 -3
  1822. package/scripts/run/board/run-board-render-processes.ts +6 -5
  1823. package/scripts/run/board/run-board-render-quota-cell.ts +81 -0
  1824. package/scripts/run/board/run-board-render-quota-github.ts +112 -0
  1825. package/scripts/run/board/run-board-render-quota.ts +285 -0
  1826. package/scripts/run/board/run-board-render-section.ts +50 -6
  1827. package/scripts/run/board/run-board-render-tail.ts +53 -7
  1828. package/scripts/run/board/run-board-render-throughput.ts +140 -0
  1829. package/scripts/run/board/run-board-render-title.ts +26 -4
  1830. package/scripts/run/board/run-board-render.ts +59 -57
  1831. package/scripts/run/board/run-board-row-yield.ts +1 -0
  1832. package/scripts/run/board/run-board-scope.ts +13 -6
  1833. package/scripts/run/board/run-board-seat.ts +107 -0
  1834. package/scripts/run/board/run-board-settle.ts +33 -0
  1835. package/scripts/run/board/run-board-setup.ts +30 -15
  1836. package/scripts/run/board/run-board-single.ts +123 -0
  1837. package/scripts/run/board/run-board-snapshot.ts +7 -1
  1838. package/scripts/run/board/run-board-span.ts +18 -3
  1839. package/scripts/run/board/run-board-spin.ts +12 -6
  1840. package/scripts/run/board/run-board-standing-waits.ts +52 -0
  1841. package/scripts/run/board/run-board-state.ts +23 -0
  1842. package/scripts/run/board/run-board-status.ts +86 -99
  1843. package/scripts/run/board/run-board-throughput.ts +215 -0
  1844. package/scripts/run/board/run-board-tick.ts +76 -30
  1845. package/scripts/run/board/run-board-usage-read.ts +3 -3
  1846. package/scripts/run/board/run-board-usage-top.ts +12 -35
  1847. package/scripts/run/board/run-board-usual.ts +18 -1
  1848. package/scripts/run/carry/run-carry-added.ts +6 -1
  1849. package/scripts/run/carry/run-carry-args.ts +22 -8
  1850. package/scripts/run/carry/run-carry-cli.ts +31 -1
  1851. package/scripts/run/carry/run-carry-conversation.ts +12 -4
  1852. package/scripts/run/carry/run-carry-ended.ts +3 -0
  1853. package/scripts/run/carry/run-carry-reclaim.ts +2 -1
  1854. package/scripts/run/carry/run-carry.ts +40 -20
  1855. package/scripts/run/cut/run-cut-adoption.ts +67 -0
  1856. package/scripts/run/cut/run-cut-cli.ts +88 -34
  1857. package/scripts/run/cut/run-cut-decline.ts +1 -1
  1858. package/scripts/run/cut/run-cut-handoff.ts +2 -1
  1859. package/scripts/run/cut/run-cut-next.ts +20 -0
  1860. package/scripts/run/cut/run-cut-ready.ts +7 -5
  1861. package/scripts/run/cut/run-cut-report.ts +13 -14
  1862. package/scripts/run/cut/run-cut-resume.ts +1 -1
  1863. package/scripts/run/cut/run-cut.ts +36 -23
  1864. package/scripts/run/detached-launch.ts +12 -7
  1865. package/scripts/run/early-push-record.ts +22 -0
  1866. package/scripts/run/entry/run-entry-children.ts +126 -0
  1867. package/scripts/run/entry/run-entry-cli.ts +126 -82
  1868. package/scripts/run/entry/run-entry-dispatch.ts +20 -0
  1869. package/scripts/run/entry/run-entry-lane-plan.ts +39 -0
  1870. package/scripts/run/entry/run-entry-spill.ts +67 -22
  1871. package/scripts/run/entry/run-entry-stop.ts +9 -8
  1872. package/scripts/run/entry/run-entry-sync.ts +149 -0
  1873. package/scripts/run/entry/run-entry-trust.ts +1 -1
  1874. package/scripts/run/entry/run-entry.ts +9 -0
  1875. package/scripts/run/event/run-event-checks.ts +1 -1
  1876. package/scripts/run/event/run-event-filed.ts +1 -1
  1877. package/scripts/run/event/run-event-follow.ts +9 -5
  1878. package/scripts/run/event/run-event-overrun.ts +7 -7
  1879. package/scripts/run/event/run-event-plan.ts +1 -1
  1880. package/scripts/run/event/run-event-render.ts +5 -0
  1881. package/scripts/run/event/run-event-retry.ts +34 -0
  1882. package/scripts/run/event/run-event-scope.ts +4 -1
  1883. package/scripts/run/event/run-event-setup.ts +55 -5
  1884. package/scripts/run/event/run-event-step.ts +81 -0
  1885. package/scripts/run/event/run-event-stream-emit.ts +63 -23
  1886. package/scripts/run/event/run-event-stream.ts +69 -21
  1887. package/scripts/run/event/run-event-tail.ts +122 -0
  1888. package/scripts/run/event/run-event-watch.ts +12 -7
  1889. package/scripts/run/handoff/run-handoff-args.ts +93 -0
  1890. package/scripts/run/handoff/run-handoff-cli.ts +320 -0
  1891. package/scripts/run/handoff/run-handoff-final.ts +38 -0
  1892. package/scripts/run/handoff/run-handoff-launch.ts +113 -0
  1893. package/scripts/run/handoff/run-handoff-retrospective.ts +48 -0
  1894. package/scripts/run/handoff-lanes/run-handoff-lanes-cli.ts +31 -0
  1895. package/scripts/run/handoff-lanes/run-handoff-lanes.ts +183 -0
  1896. package/scripts/run/hold/run-hold-block.ts +35 -0
  1897. package/scripts/run/hold/run-hold-cli.ts +20 -36
  1898. package/scripts/run/hold/run-hold-main.ts +16 -1
  1899. package/scripts/run/hold/run-hold.ts +12 -8
  1900. package/scripts/run/hold/run-stop-notify.ts +1 -1
  1901. package/scripts/run/launch-priority.ts +4 -7
  1902. package/scripts/run/merge/run-merge-auth.ts +38 -13
  1903. package/scripts/run/merge/run-merge-cap.ts +11 -6
  1904. package/scripts/run/merge/run-merge-cli.ts +55 -58
  1905. package/scripts/run/merge/run-merge-dated.ts +64 -0
  1906. package/scripts/run/merge/run-merge-decision.ts +183 -0
  1907. package/scripts/run/merge/run-merge-driver.ts +2 -0
  1908. package/scripts/run/merge/run-merge-github-limit.ts +98 -0
  1909. package/scripts/run/merge/run-merge-health.ts +137 -0
  1910. package/scripts/run/merge/run-merge-human-review.ts +26 -0
  1911. package/scripts/run/merge/run-merge-restart.ts +10 -3
  1912. package/scripts/run/merge/run-merge-signals.ts +34 -9
  1913. package/scripts/run/merge/run-merge-steps.ts +49 -50
  1914. package/scripts/run/merge/run-merge-token.ts +3 -4
  1915. package/scripts/run/merge/run-merge-usage-limit.ts +22 -9
  1916. package/scripts/run/merge/run-merge-withdrawn.ts +4 -3
  1917. package/scripts/run/merge/run-merge.ts +36 -18
  1918. package/scripts/run/park/run-park-answered.ts +84 -0
  1919. package/scripts/run/park/run-park-body.ts +346 -0
  1920. package/scripts/run/park/run-park-cli.ts +37 -12
  1921. package/scripts/run/park/run-park-lane.ts +41 -0
  1922. package/scripts/run/park/run-park-release.ts +61 -0
  1923. package/scripts/run/park/run-park-write.ts +41 -0
  1924. package/scripts/run/park/run-park.ts +2 -4
  1925. package/scripts/run/park/run-stalled-park.ts +32 -0
  1926. package/scripts/run/park/run-stalled.ts +75 -12
  1927. package/scripts/run/pause/run-pause-cli.ts +4 -3
  1928. package/scripts/run/pause/run-pause-comment.ts +30 -0
  1929. package/scripts/run/pause/run-pause.ts +35 -223
  1930. package/scripts/run/pause/run-set-aside-commit.ts +52 -0
  1931. package/scripts/run/pause/run-set-aside.ts +139 -0
  1932. package/scripts/run/prime/run-prime-cli.ts +105 -0
  1933. package/scripts/run/progress/run-progress-cli.ts +44 -27
  1934. package/scripts/run/progress/run-progress-config.ts +7 -18
  1935. package/scripts/run/progress/run-progress.ts +16 -7
  1936. package/scripts/run/review/run-chain-cli.ts +162 -0
  1937. package/scripts/run/review/run-chain-join.ts +108 -0
  1938. package/scripts/run/review/run-chain-review-fix.ts +70 -0
  1939. package/scripts/run/review/run-chain.ts +167 -0
  1940. package/scripts/run/review/run-review-cli.ts +127 -53
  1941. package/scripts/run/review/run-review-early-push.ts +41 -7
  1942. package/scripts/run/review/run-review-join-ready.ts +88 -0
  1943. package/scripts/run/review/run-review-pinned-accepted.ts +15 -1
  1944. package/scripts/run/review/run-review-pinned-join.ts +8 -4
  1945. package/scripts/run/review/run-review-pinned-steps.ts +12 -7
  1946. package/scripts/run/review/run-review-pinned.ts +8 -3
  1947. package/scripts/run/review/run-review-steps.ts +29 -14
  1948. package/scripts/run/review/run-review-unplanned.ts +75 -0
  1949. package/scripts/run/review/run-review.ts +4 -4
  1950. package/scripts/run/run-halfrun-resume.ts +9 -1
  1951. package/scripts/run/run-headless-keys.ts +23 -0
  1952. package/scripts/run/run-headless.ts +77 -13
  1953. package/scripts/run/run-investigation-record.ts +66 -0
  1954. package/scripts/run/run-label-main.ts +55 -0
  1955. package/scripts/run/run-label.ts +20 -4
  1956. package/scripts/run/run-liveness-cli.ts +1 -1
  1957. package/scripts/run/run-liveness.ts +6 -5
  1958. package/scripts/run/run-maintenance.ts +66 -0
  1959. package/scripts/run/run-open-pr.ts +19 -0
  1960. package/scripts/run/run-parent-cut-hook.ts +17 -9
  1961. package/scripts/run/run-pickup-cli.ts +86 -0
  1962. package/scripts/run/run-pickup-launch.ts +85 -0
  1963. package/scripts/run/run-poll-hook.ts +14 -7
  1964. package/scripts/run/run-pr-return.ts +99 -0
  1965. package/scripts/run/run-prep-cli.ts +54 -7
  1966. package/scripts/run/run-prep-locate.ts +8 -3
  1967. package/scripts/run/run-prep-summary.ts +55 -0
  1968. package/scripts/run/run-prep.ts +37 -1
  1969. package/scripts/run/run-report-cli.ts +13 -2
  1970. package/scripts/run/run-report-end.ts +133 -0
  1971. package/scripts/run/run-report-handoff.ts +1 -1
  1972. package/scripts/run/run-report.ts +7 -1
  1973. package/scripts/run/run-stage-read.ts +38 -4
  1974. package/scripts/run/run-stage.ts +18 -6
  1975. package/scripts/run/run-status.ts +2 -1
  1976. package/scripts/run/run-step-cli.ts +38 -10
  1977. package/scripts/run/run-step-lane-plan.ts +26 -12
  1978. package/scripts/run/run-step-progress.ts +61 -0
  1979. package/scripts/run/run-step-section-driver.ts +27 -0
  1980. package/scripts/run/run-step-section-once.ts +83 -0
  1981. package/scripts/run/run-step-section-table.ts +120 -0
  1982. package/scripts/run/run-step-section.ts +39 -53
  1983. package/scripts/run/run-step.ts +4 -3
  1984. package/scripts/run/run-stop-notify.ts +1 -1
  1985. package/scripts/run/run-tail-cli.ts +14 -6
  1986. package/scripts/run/run-tail.ts +22 -0
  1987. package/scripts/run/run-watcher-guard.ts +15 -5
  1988. package/scripts/run/run-watcher-hook.ts +12 -6
  1989. package/scripts/run/ship/run-ship-args.ts +8 -1
  1990. package/scripts/run/ship/run-ship-cli.ts +68 -65
  1991. package/scripts/run/ship/run-ship-conflict-probe.ts +12 -14
  1992. package/scripts/run/ship/run-ship-detach-wait.ts +25 -0
  1993. package/scripts/run/ship/run-ship-detach.ts +29 -35
  1994. package/scripts/run/ship/run-ship-early-push.ts +34 -0
  1995. package/scripts/run/ship/run-ship-evidence-cli.ts +133 -0
  1996. package/scripts/run/ship/run-ship-evidence.ts +71 -0
  1997. package/scripts/run/ship/run-ship-final-review.ts +28 -0
  1998. package/scripts/run/ship/run-ship-gate-runs.ts +58 -0
  1999. package/scripts/run/ship/run-ship-group.ts +38 -0
  2000. package/scripts/run/ship/run-ship-handover.ts +1 -1
  2001. package/scripts/run/ship/run-ship-lap.ts +100 -12
  2002. package/scripts/run/ship/run-ship-narrowed.ts +104 -0
  2003. package/scripts/run/ship/run-ship-next.ts +3 -3
  2004. package/scripts/run/ship/run-ship-pair-runs.ts +127 -0
  2005. package/scripts/run/ship/run-ship-place.ts +9 -8
  2006. package/scripts/run/ship/run-ship-planned.ts +1 -1
  2007. package/scripts/run/ship/run-ship-pre-detach-pinned.ts +7 -1
  2008. package/scripts/run/ship/run-ship-pre-detach.ts +18 -12
  2009. package/scripts/run/ship/run-ship-preflight-reuse.ts +53 -0
  2010. package/scripts/run/ship/run-ship-preflight.ts +21 -2
  2011. package/scripts/run/ship/run-ship-probe.ts +5 -15
  2012. package/scripts/run/ship/run-ship-record-wait.ts +30 -0
  2013. package/scripts/run/ship/run-ship-relaunch-cap.ts +107 -14
  2014. package/scripts/run/ship/run-ship-relaunch.ts +7 -1
  2015. package/scripts/run/ship/run-ship-removed-rows.ts +34 -10
  2016. package/scripts/run/ship/run-ship-reship.ts +125 -0
  2017. package/scripts/run/ship/run-ship-return.ts +68 -22
  2018. package/scripts/run/ship/run-ship-review-checkpoint.ts +112 -0
  2019. package/scripts/run/ship/run-ship-review-reason.ts +3 -1
  2020. package/scripts/run/ship/run-ship-review-steps.ts +80 -31
  2021. package/scripts/run/ship/run-ship-review.ts +13 -9
  2022. package/scripts/run/ship/run-ship-reviewer.ts +59 -7
  2023. package/scripts/run/ship/run-ship-scoped.ts +232 -21
  2024. package/scripts/run/ship/run-ship-stage.ts +3 -5
  2025. package/scripts/run/ship/run-ship-steps.ts +65 -20
  2026. package/scripts/run/ship/run-ship-stop-cause.ts +52 -1
  2027. package/scripts/run/ship/run-ship-stop-context.ts +5 -5
  2028. package/scripts/run/ship/run-ship-stop-text.ts +1 -1
  2029. package/scripts/run/ship/run-ship-supervised.ts +38 -0
  2030. package/scripts/run/ship/run-ship-sync.ts +114 -19
  2031. package/scripts/run/ship/run-ship-synced-scope.ts +162 -58
  2032. package/scripts/run/ship/run-ship-tree-stamp.ts +35 -0
  2033. package/scripts/run/ship/run-ship-wait-cli.ts +23 -25
  2034. package/scripts/run/ship/run-ship-wait-main.ts +12 -0
  2035. package/scripts/run/ship/run-ship-waiter.ts +8 -6
  2036. package/scripts/run/ship/run-ship.ts +12 -0
  2037. package/scripts/run/split/run-split-cli.ts +134 -0
  2038. package/scripts/run/split/run-split-prerequisite.ts +75 -0
  2039. package/scripts/run/split/run-split.ts +213 -0
  2040. package/scripts/run/stale/run-stale-cli.ts +86 -0
  2041. package/scripts/run/stale/run-stale-main.ts +7 -0
  2042. package/scripts/run/stale/run-stale.ts +117 -0
  2043. package/scripts/run/tidy/run-tidy-cli.ts +24 -2
  2044. package/scripts/run/tree-status-cli.ts +131 -0
  2045. package/scripts/run/tree-status.ts +77 -0
  2046. package/scripts/run/ts-entry-loader.ts +34 -0
  2047. package/scripts/run/wake/run-wake-await.ts +22 -2
  2048. package/scripts/run/wake/run-wake-cli.ts +3 -3
  2049. package/scripts/run/wake/run-wake-describe.ts +1 -1
  2050. package/scripts/run/wake/run-wake-driver.ts +158 -61
  2051. package/scripts/run/wake/run-wake-handoff.ts +65 -14
  2052. package/scripts/run/wake/run-wake-loop.ts +63 -23
  2053. package/scripts/run/wake/run-wake-ports.ts +99 -17
  2054. package/scripts/run/wake/run-wake-resume.ts +98 -0
  2055. package/scripts/run/wake/run-wake-session.ts +16 -14
  2056. package/scripts/run/wake/run-wake-window.ts +15 -0
  2057. package/scripts/run/wake/run-wake.ts +7 -6
  2058. package/scripts/safe-chain/preinstall-command.ts +3 -6
  2059. package/scripts/safe-chain/project-config.ts +2 -2
  2060. package/scripts/security/security-audit-cache.ts +157 -0
  2061. package/scripts/security/security-audit-main.ts +4 -2
  2062. package/scripts/security/security-audit-provision-logic.ts +4 -4
  2063. package/scripts/security/security-audit-provision-main.ts +19 -5
  2064. package/scripts/split/declared-growth.ts +22 -0
  2065. package/scripts/split/split-assess.ts +220 -37
  2066. package/scripts/split/split-child-recover-cli.ts +118 -0
  2067. package/scripts/split/split-direction.ts +172 -0
  2068. package/scripts/split/split-measure.ts +28 -14
  2069. package/scripts/split/split-relocations.ts +108 -0
  2070. package/scripts/split/split-resolution.ts +63 -61
  2071. package/scripts/sync/claude-settings-merge.ts +8 -4
  2072. package/scripts/sync/managed-config-scope.ts +13 -1
  2073. package/scripts/sync/sync-ai-files.ts +2 -2
  2074. package/scripts/sync/sync-configs.ts +3 -5
  2075. package/scripts/test/test-e2e-guard.ts +2 -1
  2076. package/scripts/test/test-inputs.ts +119 -0
  2077. package/scripts/test/test-no-base.ts +35 -16
  2078. package/scripts/test/test-pinned-cache-logic.ts +4 -0
  2079. package/scripts/test/test-pinned-cache.ts +8 -15
  2080. package/scripts/test/test-pinned-carry.ts +93 -0
  2081. package/scripts/test/test-pinned-emit.ts +2 -1
  2082. package/scripts/test/test-pinned-ledger.ts +15 -9
  2083. package/scripts/test/test-pinned-logic.ts +66 -4
  2084. package/scripts/test/test-pinned-main.ts +6 -30
  2085. package/scripts/test/test-pinned-moves.ts +43 -0
  2086. package/scripts/test/test-pinned-probe.ts +61 -17
  2087. package/scripts/test/test-pinned-prune-logic.ts +2 -1
  2088. package/scripts/test/test-pinned-reach.ts +11 -3
  2089. package/scripts/test/test-pinned-record.ts +36 -4
  2090. package/scripts/test/test-pinned-snapshot.ts +110 -0
  2091. package/scripts/test/test-pinned-spawn.ts +32 -7
  2092. package/scripts/test/test-pinned-stage.ts +43 -16
  2093. package/scripts/test/test-pinned-type-check.ts +110 -0
  2094. package/scripts/test/test-pinned.ts +92 -35
  2095. package/scripts/test/test-red-logic.ts +40 -2
  2096. package/scripts/test/test-red.ts +131 -19
  2097. package/scripts/test/test-related-cap.ts +182 -0
  2098. package/scripts/test/test-related-main.ts +2 -4
  2099. package/scripts/test/test-related-pins.ts +33 -0
  2100. package/scripts/test/test-related-record.ts +84 -8
  2101. package/scripts/test/test-related-red.ts +218 -0
  2102. package/scripts/test/test-related-reuse.ts +167 -0
  2103. package/scripts/test/test-related-run.ts +144 -0
  2104. package/scripts/test/test-related-synced.ts +31 -8
  2105. package/scripts/test/test-related-touched.ts +10 -5
  2106. package/scripts/test/test-related-verdict.ts +127 -0
  2107. package/scripts/test/test-related-whole.ts +22 -0
  2108. package/scripts/test/test-related.ts +123 -146
  2109. package/scripts/test/test-type-logic.ts +1 -2
  2110. package/scripts/test/test-unit-guard.ts +12 -3
  2111. package/scripts/test/unit-count-file.ts +25 -1
  2112. package/scripts/test/unit-lane-count.ts +63 -0
  2113. package/scripts/test/unit-run-marker.ts +11 -1
  2114. package/scripts/test/unit-update-arguments.ts +73 -0
  2115. package/scripts/test/unit-worker-share.ts +28 -13
  2116. package/scripts/test/whole-suite-files.ts +2 -0
  2117. package/scripts/time-runtime/guard-rephrase.ts +66 -0
  2118. package/scripts/time-runtime/time-agent-bundles.ts +5 -5
  2119. package/scripts/time-runtime/time-bundle-call.ts +2 -2
  2120. package/scripts/time-runtime/time-bundles.ts +2 -2
  2121. package/scripts/time-runtime/time-command-key.ts +2 -5
  2122. package/scripts/time-runtime/time-density-hook.ts +2 -31
  2123. package/scripts/time-runtime/time-format.ts +4 -4
  2124. package/scripts/time-runtime/time-josh-names.ts +51 -0
  2125. package/scripts/time-runtime/time-markers.ts +4 -4
  2126. package/scripts/time-runtime/time-phase-names.ts +2 -2
  2127. package/scripts/time-runtime/time-shell.ts +28 -17
  2128. package/scripts/time-runtime/time-single-check.ts +4 -4
  2129. package/scripts/time-runtime/time-spans.ts +8 -8
  2130. package/scripts/time-runtime/time-tool-call.ts +4 -3
  2131. package/scripts/time-runtime/time-transcript-block.ts +172 -0
  2132. package/scripts/time-runtime/time-transcript-line.ts +26 -158
  2133. package/scripts/time-runtime/transcript-tail.ts +39 -0
  2134. package/scripts/ui/ui-shot-cli.ts +90 -0
  2135. package/scripts/ui/ui-shot.ts +95 -0
  2136. package/scripts/usage/usage-state-path.ts +22 -0
  2137. package/scripts/usage/usage-tee-cli.ts +5 -0
  2138. package/scripts/usage/usage-tee.ts +48 -0
  2139. package/scripts/version/development-engines-verdict.ts +7 -1
  2140. package/scripts/version/fresh-metadata-cache.ts +4 -3
  2141. package/scripts/version/latest-corepack.ts +3 -3
  2142. package/scripts/version/latest-if-required-cli.ts +32 -4
  2143. package/scripts/version/latest-scope-cli.ts +12 -2
  2144. package/scripts/version/latest-stamp.ts +5 -4
  2145. package/scripts/version/npm-registry.ts +19 -0
  2146. package/scripts/version/playwright-browsers.ts +1 -1
  2147. package/scripts/version/release-hold.ts +2 -2
  2148. package/scripts/version/upgrade-command-guard.ts +1 -1
  2149. package/templates/prettierignore.basic +3 -0
  2150. package/templates/sonar-project.properties +2 -1
  2151. package/templates/workflows/ci.yml +5 -4
  2152. package/tsconfig/base.json +1 -0
  2153. package/dist/hooks/chunk-3GKE653K.js +0 -6204
  2154. package/dist/hooks/chunk-45CJJOO7.js +0 -1243
  2155. package/dist/hooks/chunk-5PM2JRGV.js +0 -7780
  2156. package/dist/hooks/chunk-7SIUNQXK.js +0 -3591
  2157. package/dist/hooks/chunk-Z6DQJKH3.js +0 -2806
  2158. package/prompts/collaboration-workflow.md +0 -28
  2159. package/scripts/epic/epic-bundle-poll.ts +0 -41
  2160. package/scripts/josh/josh-commands-lane.ts +0 -310
  2161. package/scripts/josh/josh-commands-split.ts +0 -28
  2162. package/scripts/review/review-lint-cli.ts +0 -57
  2163. package/scripts/split/split-early-notice.ts +0 -116
@@ -0,0 +1,2012 @@
1
+ #!/usr/bin/env tsx
2
+ import {
3
+ followup_ship_environment
4
+ } from "./chunk-LBLII7BS.js";
5
+ import {
6
+ acceptance_map_check
7
+ } from "./chunk-PZTWQYRI.js";
8
+ import {
9
+ run_step_section
10
+ } from "./chunk-RVHBWSIG.js";
11
+ import {
12
+ issue_declared_size
13
+ } from "./chunk-7V5UVKFG.js";
14
+ import {
15
+ git_followup_issue_close,
16
+ settled_together
17
+ } from "./chunk-72EW7AVI.js";
18
+ import "./chunk-CADFBQJJ.js";
19
+ import {
20
+ issue_body_or_comment
21
+ } from "./chunk-PDAY76AN.js";
22
+ import {
23
+ epic_close
24
+ } from "./chunk-DP7WIGQ4.js";
25
+ import {
26
+ split_measure
27
+ } from "./chunk-KHWTJ4F7.js";
28
+ import {
29
+ git_followup_pending
30
+ } from "./chunk-73KBUQKI.js";
31
+ import "./chunk-LOSOLCCW.js";
32
+ import {
33
+ observations_flush
34
+ } from "./chunk-QEIO2ZNQ.js";
35
+ import {
36
+ git_pr_merge_checked
37
+ } from "./chunk-HJKZDDDI.js";
38
+ import {
39
+ MAX_CHECK_RERUNS,
40
+ followup_job_rerun
41
+ } from "./chunk-MZHOPRI6.js";
42
+ import "./chunk-XDQOWUVT.js";
43
+ import "./chunk-HRT4KWP4.js";
44
+ import "./chunk-P4D5RESF.js";
45
+ import "./chunk-ZAJD6T6E.js";
46
+ import "./chunk-HIPO6HUG.js";
47
+ import {
48
+ observation_ledger_prepare
49
+ } from "./chunk-RYZ3RQRH.js";
50
+ import "./chunk-6NRTLH6I.js";
51
+ import {
52
+ removed_tests_check
53
+ } from "./chunk-4HBVHYNL.js";
54
+ import {
55
+ live_evidence
56
+ } from "./chunk-KVJDDECB.js";
57
+ import "./chunk-SK2LJBFS.js";
58
+ import {
59
+ review_record
60
+ } from "./chunk-BCK5LW4F.js";
61
+ import "./chunk-HZBTXKT2.js";
62
+ import "./chunk-NMLCPYBN.js";
63
+ import {
64
+ git_followup_label
65
+ } from "./chunk-SNFLV7VV.js";
66
+ import {
67
+ josh_command
68
+ } from "./chunk-2VRITY55.js";
69
+ import {
70
+ git_next_issues
71
+ } from "./chunk-ELWNRE6E.js";
72
+ import "./chunk-HLKAFSN4.js";
73
+ import "./chunk-7ZECP3J6.js";
74
+ import "./chunk-3HU3LPIF.js";
75
+ import "./chunk-2CXAVVST.js";
76
+ import {
77
+ git_closes_keyword
78
+ } from "./chunk-J3TKZLHA.js";
79
+ import "./chunk-IZVM2TTH.js";
80
+ import "./chunk-2IESYBZH.js";
81
+ import {
82
+ split_assess
83
+ } from "./chunk-5PAEXYIY.js";
84
+ import "./chunk-RQRLW4XK.js";
85
+ import "./chunk-TPKFVVJQ.js";
86
+ import "./chunk-BPSJSHYD.js";
87
+ import "./chunk-VDGNXSP3.js";
88
+ import {
89
+ confirmation_options,
90
+ telegram_notify
91
+ } from "./chunk-WJ4NEDNI.js";
92
+ import {
93
+ github_issue_url
94
+ } from "./chunk-S4X5PJV7.js";
95
+ import "./chunk-5HVYOIIK.js";
96
+ import "./chunk-D4SZK7H2.js";
97
+ import "./chunk-OJ4LGBVD.js";
98
+ import "./chunk-3RIQ36LH.js";
99
+ import "./chunk-2ADQ5XRD.js";
100
+ import {
101
+ cli_body
102
+ } from "./chunk-7IZJ5MG2.js";
103
+ import "./chunk-HXCZ3KWS.js";
104
+ import "./chunk-HOSZITJM.js";
105
+ import {
106
+ issue_watch_gate
107
+ } from "./chunk-D3SHCUBC.js";
108
+ import {
109
+ issue_watch
110
+ } from "./chunk-NFEBQED3.js";
111
+ import {
112
+ DEFAULT_STABLE_READS,
113
+ WATCH_CONFIRMED_STABLE_READS,
114
+ git_gh_command,
115
+ git_pr_checks
116
+ } from "./chunk-RX5JSPPH.js";
117
+ import "./chunk-U7XU5RG3.js";
118
+ import "./chunk-GJYMI2CM.js";
119
+ import "./chunk-U2UH4VM4.js";
120
+ import "./chunk-WGULS5DA.js";
121
+ import {
122
+ is_retry_pending,
123
+ note_unreadable_stop,
124
+ require_pr_number
125
+ } from "./chunk-23GH6B3D.js";
126
+ import "./chunk-GU5ML3Y3.js";
127
+ import {
128
+ gh_comment_input
129
+ } from "./chunk-BJKEXXY6.js";
130
+ import {
131
+ run_progress_clock
132
+ } from "./chunk-RGGEQM6G.js";
133
+ import "./chunk-3WWQFCGX.js";
134
+ import "./chunk-LAYSCY4L.js";
135
+ import {
136
+ followup_checks_event,
137
+ followup_ci_path,
138
+ followup_coderabbit_wait,
139
+ git_followup_stages
140
+ } from "./chunk-E2ZCUKHT.js";
141
+ import {
142
+ CHECK_STATUS_FAIL,
143
+ CHECK_STATUS_PASS,
144
+ CODERABBIT_CHECK_NAME,
145
+ FAILURE_MESSAGE_PREFIX,
146
+ MissingContextError,
147
+ PrConflictError,
148
+ is_coderabbit_check,
149
+ is_required_check,
150
+ is_required_match,
151
+ matches_any,
152
+ parse_pr_state_snapshot
153
+ } from "./chunk-WVR4RUFP.js";
154
+ import "./chunk-HH2KDLTP.js";
155
+ import "./chunk-HE5S4XRE.js";
156
+ import {
157
+ review_interaction
158
+ } from "./chunk-V5OIPYA6.js";
159
+ import "./chunk-RVUJ6F5L.js";
160
+ import "./chunk-MY3RSOS5.js";
161
+ import "./chunk-KVURNO74.js";
162
+ import "./chunk-QHWJJ6X5.js";
163
+ import "./chunk-REPANBLS.js";
164
+ import "./chunk-Q6SKKQVJ.js";
165
+ import "./chunk-EWA72KO7.js";
166
+ import {
167
+ review_attest
168
+ } from "./chunk-KIILCKQR.js";
169
+ import "./chunk-WG6GYBRJ.js";
170
+ import "./chunk-CRNPPKP2.js";
171
+ import "./chunk-ZDSDPKCD.js";
172
+ import "./chunk-MVPUQLN5.js";
173
+ import "./chunk-5SB37YDW.js";
174
+ import "./chunk-VW5SGE7A.js";
175
+ import "./chunk-ICEMFE2V.js";
176
+ import "./chunk-BIKGPT52.js";
177
+ import "./chunk-PDDKRHHS.js";
178
+ import "./chunk-55I7OYHI.js";
179
+ import "./chunk-DJVMC3U2.js";
180
+ import "./chunk-MSPIR3OA.js";
181
+ import "./chunk-QQZOQ7AM.js";
182
+ import "./chunk-AWLYN2SP.js";
183
+ import "./chunk-L6XN3EXI.js";
184
+ import "./chunk-KB3OQWDT.js";
185
+ import "./chunk-FGL6DBZU.js";
186
+ import {
187
+ review_stamps
188
+ } from "./chunk-L6LU2633.js";
189
+ import "./chunk-CGLLAEKZ.js";
190
+ import "./chunk-WL5JHB3I.js";
191
+ import {
192
+ observation_ledger
193
+ } from "./chunk-4BEIYKI2.js";
194
+ import "./chunk-LE2T3FGJ.js";
195
+ import "./chunk-LQXFVZTS.js";
196
+ import "./chunk-F2HFWLQR.js";
197
+ import "./chunk-6NV2F7QH.js";
198
+ import "./chunk-REMKUFAC.js";
199
+ import "./chunk-VGHSZLYQ.js";
200
+ import "./chunk-7LJQMM2K.js";
201
+ import "./chunk-MGF64OHV.js";
202
+ import "./chunk-RK4HE5NW.js";
203
+ import "./chunk-O26Y2FOJ.js";
204
+ import "./chunk-XH6BGVVP.js";
205
+ import "./chunk-RXAZJMSZ.js";
206
+ import "./chunk-3PEXBHRN.js";
207
+ import {
208
+ managed_config_scope
209
+ } from "./chunk-RZ4OKKPM.js";
210
+ import "./chunk-PBOS7MTW.js";
211
+ import "./chunk-2NSB5ZYQ.js";
212
+ import "./chunk-2MJ4OCDL.js";
213
+ import "./chunk-IW6NWCSN.js";
214
+ import "./chunk-UCI4AL3Q.js";
215
+ import "./chunk-QS5USD4T.js";
216
+ import "./chunk-WWC5L3AO.js";
217
+ import "./chunk-XYAK53TK.js";
218
+ import "./chunk-Y2RNUX4W.js";
219
+ import "./chunk-FCINBCKB.js";
220
+ import {
221
+ git_branch
222
+ } from "./chunk-Q5Q2QYVU.js";
223
+ import "./chunk-GO3GH7FG.js";
224
+ import {
225
+ git_error
226
+ } from "./chunk-KVHNQHX3.js";
227
+ import "./chunk-7HCPRVMB.js";
228
+ import "./chunk-RSSJWMQS.js";
229
+ import "./chunk-FNQW6NY7.js";
230
+ import "./chunk-337QQM4C.js";
231
+ import "./chunk-BEE7OAQ5.js";
232
+ import "./chunk-DBKTFB5V.js";
233
+ import "./chunk-UCQJDYE3.js";
234
+ import "./chunk-TCBUX52E.js";
235
+ import "./chunk-KXHXMERX.js";
236
+ import "./chunk-MDLOETXL.js";
237
+ import "./chunk-65E4OZJ7.js";
238
+ import {
239
+ josh_environment_file
240
+ } from "./chunk-NFKULY26.js";
241
+ import {
242
+ lane_registry
243
+ } from "./chunk-LRS2OS5J.js";
244
+ import "./chunk-AI5K4QJO.js";
245
+ import "./chunk-7S6VRZOH.js";
246
+ import "./chunk-LULJUD6P.js";
247
+ import "./chunk-TBNQIFWL.js";
248
+ import {
249
+ run_hold
250
+ } from "./chunk-P4CWLRT2.js";
251
+ import "./chunk-XFPEUYDV.js";
252
+ import "./chunk-5ZTQX7OS.js";
253
+ import "./chunk-HCA5QG2U.js";
254
+ import "./chunk-C2SEDMZ3.js";
255
+ import "./chunk-LRA3PXHS.js";
256
+ import "./chunk-6OP63TBT.js";
257
+ import "./chunk-TVZXG4Y4.js";
258
+ import "./chunk-FIUCHMCF.js";
259
+ import "./chunk-XXNEY4B3.js";
260
+ import {
261
+ git_gh_helpers
262
+ } from "./chunk-4PUKDAXL.js";
263
+ import "./chunk-EWVR5AEX.js";
264
+ import "./chunk-C6QSVO5K.js";
265
+ import "./chunk-W3FX7FYN.js";
266
+ import "./chunk-ZBFNQUY7.js";
267
+ import "./chunk-U3IVVR4W.js";
268
+ import "./chunk-O3NDWYNT.js";
269
+ import "./chunk-34LAULSC.js";
270
+ import "./chunk-5Y7QQYTU.js";
271
+ import {
272
+ ai_review_pull_comment_schema,
273
+ pull_comment_schema
274
+ } from "./chunk-34DND4BA.js";
275
+ import "./chunk-NSAVEXVR.js";
276
+ import "./chunk-P4KIQRSL.js";
277
+ import {
278
+ NEEDS_HUMAN_MERGE_LABEL,
279
+ REPOSITORY_LABELS
280
+ } from "./chunk-QQBMVC5W.js";
281
+ import "./chunk-TUIFS5E7.js";
282
+ import "./chunk-QAHFPCFR.js";
283
+ import "./chunk-66TGK5XL.js";
284
+ import "./chunk-EZSO25UZ.js";
285
+ import "./chunk-2DJLAUYB.js";
286
+ import "./chunk-EW4NPUMQ.js";
287
+ import "./chunk-BF6YX4HE.js";
288
+ import "./chunk-3LZXX5GL.js";
289
+ import "./chunk-W2IA2LV3.js";
290
+ import "./chunk-OHNP3QL2.js";
291
+ import "./chunk-X7PN54LZ.js";
292
+ import "./chunk-MDKDJF2K.js";
293
+ import {
294
+ issue_cite
295
+ } from "./chunk-HQ2HSZBN.js";
296
+ import "./chunk-WQ6FS544.js";
297
+ import "./chunk-6HRRZANN.js";
298
+ import {
299
+ lane_ledger_write
300
+ } from "./chunk-I63RNFFR.js";
301
+ import "./chunk-MPGJ4ONJ.js";
302
+ import "./chunk-6WKJ3GDA.js";
303
+ import "./chunk-YIA6FC3K.js";
304
+ import "./chunk-JQXPLMCO.js";
305
+ import {
306
+ issue_number_shape
307
+ } from "./chunk-66NX6EXR.js";
308
+ import "./chunk-3NWAGIA6.js";
309
+ import "./chunk-2FE3C4PH.js";
310
+ import "./chunk-HLUS2M3D.js";
311
+ import {
312
+ PR_POLL_SCHEDULES,
313
+ poll
314
+ } from "./chunk-SBGTCT2C.js";
315
+ import "./chunk-AKK56GNX.js";
316
+ import "./chunk-TBIX5FRN.js";
317
+ import "./chunk-IGD6QJPH.js";
318
+ import "./chunk-FFHEGWPK.js";
319
+ import "./chunk-R6QE5VJG.js";
320
+ import "./chunk-4ZHWTTQW.js";
321
+ import {
322
+ git_gh_api_path
323
+ } from "./chunk-RDRN56E4.js";
324
+ import {
325
+ git_gh_exec,
326
+ parse_json_array_or_undefined
327
+ } from "./chunk-XDF25GSU.js";
328
+ import "./chunk-EBVS2LKX.js";
329
+ import "./chunk-AQ3PMSXK.js";
330
+ import "./chunk-QVOFWFWC.js";
331
+ import "./chunk-G6BXCWPH.js";
332
+ import "./chunk-CDY4NFQG.js";
333
+ import "./chunk-OKYFQJW3.js";
334
+ import "./chunk-HHBC6QZE.js";
335
+ import "./chunk-QWWTC3XR.js";
336
+ import "./chunk-ILGPZ47M.js";
337
+ import "./chunk-3CCGKX7Y.js";
338
+ import "./chunk-KSR23NYN.js";
339
+ import "./chunk-D5TAR6TV.js";
340
+ import "./chunk-G47ZNQVG.js";
341
+ import {
342
+ changed_paths
343
+ } from "./chunk-V5FD7DVV.js";
344
+ import "./chunk-36LOGVJ7.js";
345
+ import "./chunk-ENFPR7J2.js";
346
+ import "./chunk-F7XLEK55.js";
347
+ import "./chunk-UGCUSRZF.js";
348
+ import {
349
+ git_command
350
+ } from "./chunk-AKQYYHP2.js";
351
+ import {
352
+ git_spawn
353
+ } from "./chunk-CJKPF5DJ.js";
354
+ import "./chunk-RBU2NKHF.js";
355
+ import "./chunk-NKKH3PBE.js";
356
+ import "./chunk-B77ZMVHS.js";
357
+ import "./chunk-B5GXZK3E.js";
358
+ import "./chunk-KTLR4Y32.js";
359
+ import "./chunk-ZNX2LJCQ.js";
360
+ import "./chunk-VJE3RJAX.js";
361
+ import "./chunk-WPAQUMHC.js";
362
+ import {
363
+ json_value
364
+ } from "./chunk-HIU2WXB6.js";
365
+
366
+ // scripts/followup/git-followup-workflow.ts
367
+ import { parseArgs } from "node:util";
368
+
369
+ // scripts/lane/lane-size-record.ts
370
+ async function measure_and_record(issue) {
371
+ const declared = await issue_declared_size.read(issue);
372
+ if (declared === void 0) return;
373
+ const measurement = await split_measure.read_branch();
374
+ await lane_ledger_write.record_size({
375
+ issue: Number(issue),
376
+ declared,
377
+ actual: { files: measurement.files, lines: measurement.lines },
378
+ missed: split_assess.notice(measurement, declared) !== void 0
379
+ });
380
+ }
381
+ async function record(should_merge, issue) {
382
+ if (!should_merge || issue === void 0) return;
383
+ try {
384
+ await measure_and_record(issue);
385
+ } catch {
386
+ }
387
+ }
388
+ var lane_size_record = { record };
389
+
390
+ // scripts/notify/git-notify.ts
391
+ var DEFAULT_NOTIFY_MESSAGE = "Implementation is complete. Please review.";
392
+ function parse_notify_target(raw_target) {
393
+ if (raw_target === void 0) return void 0;
394
+ if (raw_target === "pr") return "pr";
395
+ if (raw_target === "issue") return "issue";
396
+ if (raw_target === "both") return "both";
397
+ throw new Error(`Invalid notify target: ${raw_target}. Use pr, issue, or both.`);
398
+ }
399
+ function split_and_trim(value) {
400
+ return value.split(",").map((item) => item.trim()).filter((item) => item.length > 0);
401
+ }
402
+ function normalize_mention(mention) {
403
+ return mention.startsWith("@") ? mention : `@${mention}`;
404
+ }
405
+ function parse_notify_mentions(raw_mentions) {
406
+ if (raw_mentions === void 0) return [];
407
+ return split_and_trim(raw_mentions).map((mention) => normalize_mention(mention));
408
+ }
409
+ function resolve_notify_message(raw_message) {
410
+ if (raw_message === void 0 || raw_message.trim().length === 0) return DEFAULT_NOTIFY_MESSAGE;
411
+ return raw_message;
412
+ }
413
+ function build_notify_config(input) {
414
+ const parsed_target = parse_notify_target(input.raw_target);
415
+ if (parsed_target === void 0) return void 0;
416
+ return {
417
+ target: parsed_target,
418
+ message: resolve_notify_message(input.raw_message),
419
+ mentions: parse_notify_mentions(input.raw_mentions)
420
+ };
421
+ }
422
+ function note_section(notes) {
423
+ if (notes === void 0 || notes.length === 0) return [];
424
+ return ["", ...notes];
425
+ }
426
+ function build_completion_comment_body(input) {
427
+ const base_lines = [`\u2705 ${input.message}`];
428
+ const issue_lines = input.issue_number === void 0 ? [] : [`Issue: ${issue_cite.plain_for("telegram", input.issue_number)}`];
429
+ const pr_lines = input.pr_url === void 0 ? [] : [`PR: ${input.pr_url}`];
430
+ const note_lines = note_section(input.notes);
431
+ const mention_lines = input.mentions.length === 0 ? [] : ["", input.mentions.join(" ")];
432
+ return [...base_lines, ...issue_lines, ...pr_lines, ...note_lines, ...mention_lines].join("\n");
433
+ }
434
+ var git_notify = {
435
+ build_notify_config,
436
+ build_completion_comment_body
437
+ };
438
+
439
+ // scripts/followup/followup-human-merge.ts
440
+ import { z } from "zod";
441
+ var WORKFLOW_PREFIX = ".github/workflows/";
442
+ var FILE_LIMIT = 300;
443
+ var HEAD_CHANGED = "The pull request head changed; rerun followup";
444
+ var FILES_SCHEMA = z.array(
445
+ z.object({ filename: z.string(), previous_filename: z.string().optional() })
446
+ );
447
+ var PULL_SCHEMA = z.object({
448
+ base: z.object({ sha: z.string().min(1) }),
449
+ head: z.object({ sha: z.string().min(1) })
450
+ });
451
+ var COMPARISON_SCHEMA = z.object({ files: FILES_SCHEMA });
452
+ var HumanMergeRequiredError = class extends Error {
453
+ name = "HumanMergeRequiredError";
454
+ };
455
+ function touches_workflow(files) {
456
+ return files.some(
457
+ (file) => file.filename.startsWith(WORKFLOW_PREFIX) || file.previous_filename?.startsWith(WORKFLOW_PREFIX) === true
458
+ );
459
+ }
460
+ async function comparison_path(branch, expected_head) {
461
+ const number = await require_pr_number(branch);
462
+ const pull_raw = await git_gh_exec.exec_gh_api({
463
+ path: git_gh_api_path.pull_api_path(String(number))
464
+ });
465
+ const pull = json_value.parse_with(pull_raw, PULL_SCHEMA);
466
+ if (pull === void 0) throw new Error("Cannot read the pull request comparison commits");
467
+ if (expected_head !== void 0 && pull.head.sha !== expected_head) {
468
+ throw new Error(HEAD_CHANGED);
469
+ }
470
+ return `${git_gh_api_path.repo_api_path()}/compare/${encodeURIComponent(pull.base.sha)}...${encodeURIComponent(pull.head.sha)}?per_page=1`;
471
+ }
472
+ async function read_files(branch, expected_head) {
473
+ const raw = await git_gh_exec.exec_gh_api({ path: await comparison_path(branch, expected_head) });
474
+ const comparison = json_value.parse_with(raw, COMPARISON_SCHEMA);
475
+ if (comparison === void 0 || comparison.files.length >= FILE_LIMIT) {
476
+ throw new Error("Cannot authorize a merge without a complete pull request file listing");
477
+ }
478
+ return comparison.files;
479
+ }
480
+ async function mark_waiting(branch, issue) {
481
+ const number = issue ?? git_closes_keyword.parse_closes_issue_number(await git_gh_command.pr_get_body(branch));
482
+ if (number === void 0) throw new Error("The workflow pull request must identify its Issue");
483
+ const definition = REPOSITORY_LABELS.find((label) => label.name === NEEDS_HUMAN_MERGE_LABEL);
484
+ if (definition === void 0) throw new Error("The human merge label definition is missing");
485
+ await git_gh_command.label_ensure(definition);
486
+ if (!await git_gh_command.issue_add_label(number, NEEDS_HUMAN_MERGE_LABEL)) {
487
+ throw new Error("Could not label the Issue waiting for a human merge");
488
+ }
489
+ }
490
+ async function assert_head(branch, expected_head) {
491
+ if (expected_head === void 0) return;
492
+ const state = await git_gh_command.pr_get_merge_state(branch);
493
+ if (state?.head_sha !== expected_head) {
494
+ throw new Error(HEAD_CHANGED);
495
+ }
496
+ }
497
+ async function assert_allowed(branch, issue, expected_head) {
498
+ const files = await read_files(branch, expected_head);
499
+ await assert_head(branch, expected_head);
500
+ if (!touches_workflow(files)) return;
501
+ const url = await git_gh_command.pr_get_url(branch);
502
+ if (url === void 0) throw new Error("Could not read the workflow pull request URL");
503
+ await mark_waiting(branch, issue);
504
+ throw new HumanMergeRequiredError(
505
+ `Human merge required: ${url}
506
+ Read the diff on GitHub and merge the pull request there.`
507
+ );
508
+ }
509
+ var followup_human_merge = { assert_allowed };
510
+
511
+ // scripts/followup/followup-issue-number.ts
512
+ function parse_issue_number_from_text(input) {
513
+ if (input === void 0) return void 0;
514
+ const trimmed = input.trim();
515
+ const direct_match = /^#?(\d+)$/u.exec(trimmed);
516
+ if (direct_match?.[1] !== void 0) return direct_match[1];
517
+ const title_match = /#(\d+)$/u.exec(trimmed);
518
+ return title_match?.[1];
519
+ }
520
+ function parse_completed_issue_number(raw) {
521
+ const digits = parse_issue_number_from_text(raw);
522
+ return digits === void 0 ? void 0 : Number(digits);
523
+ }
524
+
525
+ // scripts/followup/followup-review-gates.ts
526
+ function is_merge_permitted(status) {
527
+ return status === "ok" || status === "not-required";
528
+ }
529
+ function is_valid_issue(issue_number) {
530
+ return issue_number !== void 0 && issue_number_shape.ISSUE_NUMBER_PATTERN.test(issue_number);
531
+ }
532
+ async function assert_review_attested(should_merge) {
533
+ if (!should_merge) return;
534
+ const verdict = await review_attest.check_here();
535
+ if (!is_merge_permitted(verdict.status)) throw new Error(review_attest.refusal_message(verdict));
536
+ const refusal = await issue_watch_gate.review_refusal_here();
537
+ if (refusal !== void 0) throw new Error(refusal);
538
+ }
539
+ async function assert_review_recorded(should_merge, issue_number) {
540
+ if (!should_merge || !is_valid_issue(issue_number)) return;
541
+ const issue = Number(issue_number);
542
+ const verdict = await review_record.check(issue);
543
+ if (!is_merge_permitted(verdict.status)) throw new Error(review_record.refusal_message(issue));
544
+ const refusal = await review_interaction.refusal(issue);
545
+ if (refusal !== void 0) throw new Error(refusal);
546
+ }
547
+ var followup_review_gates = {
548
+ assert_review_attested,
549
+ assert_review_recorded,
550
+ is_valid_issue
551
+ };
552
+
553
+ // scripts/followup/followup-section.ts
554
+ var SUCCESS_EXIT_CODE = 0;
555
+ var FOLLOWUP = "followup";
556
+ var UNRESOLVED_MESSAGE = "The section that governs `josh followup` could not be printed.";
557
+ var { SHIPPED_ENVIRONMENT, is_ship_run } = followup_ship_environment;
558
+ function print_section(root = process.cwd(), source = process.env) {
559
+ if (is_ship_run(source)) return;
560
+ if (run_step_section.print_once(FOLLOWUP, root) !== SUCCESS_EXIT_CODE) {
561
+ throw new Error(UNRESOLVED_MESSAGE);
562
+ }
563
+ }
564
+ var followup_section = { SHIPPED_ENVIRONMENT, UNRESOLVED_MESSAGE, print_section };
565
+
566
+ // scripts/followup/git-followup-cleanup.ts
567
+ function report_failure(step, error) {
568
+ console.warn("");
569
+ console.warn(
570
+ `\u26A0\uFE0F ${step.label} failed after the merge: ${git_gh_helpers.get_error_message_with_stderr(error)}`
571
+ );
572
+ if (step.recovery !== void 0) console.warn(` Recovery: ${step.recovery}`);
573
+ console.warn("");
574
+ }
575
+ async function run_step(step) {
576
+ try {
577
+ await step.run();
578
+ return true;
579
+ } catch (error) {
580
+ report_failure(step, error);
581
+ return false;
582
+ }
583
+ }
584
+ async function run_guarded_step(is_guarded, step) {
585
+ if (!is_guarded) {
586
+ await step.run();
587
+ return true;
588
+ }
589
+ return await run_step(step);
590
+ }
591
+ async function run_guarded_steps(is_guarded, steps) {
592
+ let is_complete = true;
593
+ for (const step of steps) {
594
+ const is_done = await run_guarded_step(is_guarded, step);
595
+ if (!is_done) is_complete = false;
596
+ }
597
+ return is_complete;
598
+ }
599
+ var git_followup_cleanup = {
600
+ run_step,
601
+ run_guarded_step,
602
+ run_guarded_steps
603
+ };
604
+
605
+ // scripts/followup/git-followup-finish.ts
606
+ var MAIN_SYNC = "main:sync";
607
+ async function read_pending_release() {
608
+ const line = await git_followup_pending.pending_release_line({ is_merge_pending: false });
609
+ return line === void 0 ? [] : [line];
610
+ }
611
+ async function print_pending_release() {
612
+ const lines2 = await read_pending_release();
613
+ for (const line of lines2) console.info(line);
614
+ }
615
+ async function read_next_issues(completed_issue_number, should_merge) {
616
+ if (!should_merge) return [];
617
+ return await git_next_issues.fetch_next_issue_lines(
618
+ parse_completed_issue_number(completed_issue_number)
619
+ );
620
+ }
621
+ async function print_next_issues(completed_issue_number) {
622
+ const lines2 = await read_next_issues(completed_issue_number, true);
623
+ for (const line of lines2) console.info(line);
624
+ }
625
+ async function print_completion(issue_number, should_merge) {
626
+ const started_ms = performance.now();
627
+ const [next_lines, release_lines] = await Promise.all([
628
+ read_next_issues(issue_number, should_merge),
629
+ read_pending_release()
630
+ ]);
631
+ const duration_ms = performance.now() - started_ms;
632
+ console.info(
633
+ git_followup_stages.format_stage({ name: git_followup_stages.STAGE.completion, duration_ms })
634
+ );
635
+ console.info("");
636
+ console.info("\u2705 PR followup completed.");
637
+ for (const line of [...next_lines, ...release_lines]) console.info(line);
638
+ }
639
+ function clear_round_one_snapshot(should_merge) {
640
+ if (should_merge) review_stamps.clear_round_one();
641
+ }
642
+ async function clear_review_target(should_merge) {
643
+ if (!should_merge) return;
644
+ try {
645
+ await review_attest.clear_here();
646
+ } catch {
647
+ }
648
+ }
649
+ async function clear_issue_watch(should_merge) {
650
+ if (!should_merge) return;
651
+ try {
652
+ await issue_watch.clear_here();
653
+ } catch {
654
+ }
655
+ }
656
+ async function clear_review_records(should_merge) {
657
+ clear_round_one_snapshot(should_merge);
658
+ await clear_review_target(should_merge);
659
+ await clear_issue_watch(should_merge);
660
+ }
661
+ async function release_worktree_hold(should_merge) {
662
+ if (!should_merge) return;
663
+ try {
664
+ const directory = await run_hold.worktree_directory();
665
+ if (directory !== void 0) run_hold.release_hold(run_hold.hold_path(directory));
666
+ } catch {
667
+ }
668
+ }
669
+ async function end_progress_watcher(should_merge) {
670
+ if (!should_merge) return;
671
+ try {
672
+ const directory = await run_hold.worktree_directory();
673
+ if (directory === void 0) return;
674
+ run_progress_clock.end_life(run_progress_clock.life_target_of(directory));
675
+ } catch {
676
+ }
677
+ }
678
+ function build_report_steps(issue_number, should_merge) {
679
+ return [
680
+ // No `recovery`: the completion output is console text, which nothing re-prints.
681
+ {
682
+ label: "The completion output",
683
+ recovery: void 0,
684
+ run: async () => {
685
+ await print_completion(issue_number, should_merge);
686
+ }
687
+ }
688
+ ];
689
+ }
690
+ function build_record_steps(should_merge) {
691
+ return [
692
+ {
693
+ label: "The review records",
694
+ recovery: void 0,
695
+ run: async () => {
696
+ await clear_review_records(should_merge);
697
+ }
698
+ },
699
+ {
700
+ label: "The working-tree hold release",
701
+ // **The forced spelling, because the run that wrote the record is this one and it is
702
+ // ending**. A release names the run it belongs to, so a person
703
+ // finishing this step by hand is releasing a record they did not write — the plain form
704
+ // would answer `held` and remove nothing, which is a printed recovery that cannot recover.
705
+ recovery: "pnpm josh run:release --force",
706
+ run: async () => {
707
+ await release_worktree_hold(should_merge);
708
+ }
709
+ },
710
+ {
711
+ label: "The progress watcher",
712
+ // No recovery: the record is presence-only and the watcher's own bound ends it regardless,
713
+ // so there is nothing a person types to finish this step by hand.
714
+ recovery: void 0,
715
+ run: async () => {
716
+ await end_progress_watcher(should_merge);
717
+ }
718
+ }
719
+ ];
720
+ }
721
+ async function is_on_default_branch(root) {
722
+ const [current, default_branch] = await Promise.all([
723
+ git_command.branch_at(root),
724
+ git_command.get_default_branch()
725
+ ]);
726
+ return current === default_branch;
727
+ }
728
+ async function sync_main_checkout(should_merge) {
729
+ if (!should_merge) return;
730
+ const root = await lane_registry.main_repository_root();
731
+ if (!await is_on_default_branch(root)) {
732
+ console.info(`${MAIN_SYNC} skipped: ${root} is not on the default branch`);
733
+ return;
734
+ }
735
+ josh_command.require_success(await josh_command.josh_run_at([MAIN_SYNC], root), MAIN_SYNC);
736
+ }
737
+ function build_sync_steps(should_merge) {
738
+ return [
739
+ {
740
+ label: "The main checkout sync",
741
+ recovery: "pnpm josh main:sync (in the primary checkout)",
742
+ run: async () => {
743
+ await sync_main_checkout(should_merge);
744
+ }
745
+ }
746
+ ];
747
+ }
748
+ function build_finish_steps(issue_number, should_merge) {
749
+ return [
750
+ ...build_report_steps(issue_number, should_merge),
751
+ ...build_record_steps(should_merge),
752
+ ...build_sync_steps(should_merge)
753
+ ];
754
+ }
755
+ async function finish(issue_number, should_merge) {
756
+ return await git_followup_cleanup.run_guarded_steps(
757
+ should_merge,
758
+ build_finish_steps(issue_number, should_merge)
759
+ );
760
+ }
761
+ var git_followup_finish = {
762
+ finish,
763
+ build_finish_steps,
764
+ print_completion,
765
+ print_next_issues,
766
+ print_pending_release,
767
+ clear_review_records,
768
+ release_worktree_hold,
769
+ end_progress_watcher,
770
+ sync_main_checkout
771
+ };
772
+
773
+ // scripts/followup/git-followup-flush.ts
774
+ var COMMIT_MESSAGE_PREFIX = "Record observation ledger entries";
775
+ function commit_message(issue_number) {
776
+ return issue_number === void 0 ? COMMIT_MESSAGE_PREFIX : `${COMMIT_MESSAGE_PREFIX} ${issue_cite.plain_for("github", issue_number)}`;
777
+ }
778
+ async function assert_grammar() {
779
+ const broken = await observation_ledger_prepare.prepare(await git_command.repository_root());
780
+ if (broken.length > 0) throw new Error(observations_flush.broken_lines_message(broken));
781
+ }
782
+ async function push_or_undo_commit() {
783
+ try {
784
+ await git_command.push();
785
+ } catch (error) {
786
+ await git_spawn.read(["reset", "--soft", "HEAD~1"]);
787
+ throw error;
788
+ }
789
+ }
790
+ async function commit_and_push(paths, issue_number) {
791
+ await git_spawn.read(["add", "-A", "--", ...paths]);
792
+ await git_command.commit(commit_message(issue_number));
793
+ await push_or_undo_commit();
794
+ }
795
+ async function commit_ledger_step(should_merge, issue_number) {
796
+ if (!should_merge) return;
797
+ const status_output = await git_command.status();
798
+ if (!observation_ledger.has_pending_append(status_output)) return;
799
+ await assert_grammar();
800
+ const paths = observation_ledger.ledger_paths(await git_command.status()).filter((file_path) => !observation_ledger.is_migration_claim(file_path));
801
+ if (paths.length === 0) return;
802
+ await commit_and_push(paths, issue_number);
803
+ console.info(
804
+ `\u{1F4A1} Committed ${String(paths.length)} observation ledger path(s) to the pull request.`
805
+ );
806
+ }
807
+ var git_followup_flush = { COMMIT_MESSAGE_PREFIX, commit_ledger_step };
808
+
809
+ // scripts/followup/git-followup-merged.ts
810
+ import { z as z2 } from "zod";
811
+ var COMPLETION_MARK = "\u2705 ";
812
+ var PR_LINE_PREFIX = "PR: ";
813
+ var LINE_SEPARATOR = "\n";
814
+ var COMMENTS_SCHEMA = z2.array(
815
+ z2.object({ body: z2.string().nullish(), created_at: z2.string().nullish() })
816
+ );
817
+ function to_merge_plan(state, is_merge_requested) {
818
+ const is_merged = state?.is_merged === true;
819
+ return { is_merged, should_merge: is_merged || is_merge_requested, merged_at: state?.merged_at };
820
+ }
821
+ async function read_merge_plan(branch_name, is_merge_requested) {
822
+ return to_merge_plan(await git_gh_command.pr_get_merge_state(branch_name), is_merge_requested);
823
+ }
824
+ function is_completion_text(text, pr_url) {
825
+ if (typeof text !== "string" || !text.startsWith(COMPLETION_MARK)) return false;
826
+ return text.split(LINE_SEPARATOR).includes(`${PR_LINE_PREFIX}${pr_url}`);
827
+ }
828
+ function is_posted_since(comment, merged_at) {
829
+ if (typeof comment.created_at !== "string") return false;
830
+ return Date.parse(comment.created_at) >= Date.parse(merged_at);
831
+ }
832
+ function parse_comments(comments_json = "") {
833
+ const parsed = COMMENTS_SCHEMA.safeParse(json_value.parse_or_undefined(comments_json));
834
+ return parsed.success ? parsed.data : [];
835
+ }
836
+ function has_completion_record(input) {
837
+ return parse_comments(input.comments_json).some(
838
+ (comment) => is_completion_text(comment.body, input.pr_url) && is_posted_since(comment, input.merged_at)
839
+ );
840
+ }
841
+ async function is_completion_recorded(input) {
842
+ const { merged_at, issue_number, pr_url } = input;
843
+ if (issue_number === void 0 || pr_url === void 0 || merged_at === void 0) return false;
844
+ const comments_json = await git_gh_command.issue_list_comments(issue_number);
845
+ return has_completion_record({ comments_json, pr_url, merged_at });
846
+ }
847
+ var git_followup_merged = {
848
+ has_completion_record,
849
+ is_completion_recorded,
850
+ read_merge_plan,
851
+ to_merge_plan
852
+ };
853
+
854
+ // scripts/gh/git-ai-review-scan.ts
855
+ var CLAUDE_AUTHORS = /* @__PURE__ */ new Set(["claude[bot]"]);
856
+ var CODERABBIT_AUTHORS = /* @__PURE__ */ new Set(["coderabbitai[bot]"]);
857
+ var CLAUDE_BLOCKER_HEADINGS = [
858
+ /^#{2,4}\s+Issues\b/mu,
859
+ /^#{2,4}\s+Problem\b/mu,
860
+ /^#{3,4}\s+Logic bug\b/imu,
861
+ /^#{3,4}\s+\d+\.\s+/mu
862
+ ];
863
+ var CODERABBIT_ACTIONABLE_PATTERN = /Actionable comments posted:\s*(\d+)/iu;
864
+ var CODERABBIT_RATE_LIMIT_PATTERNS = [
865
+ /rate limited by coderabbit\.ai/iu,
866
+ /Rate limit exceeded/iu
867
+ ];
868
+ var HEADING_PREFIX_PATTERN = /^#{2,4}\s+/u;
869
+ var NEWLINE_CHAR = "\n";
870
+ var NOT_FOUND_INDEX = -1;
871
+ var EMPTY_COUNT = 0;
872
+ var CLAUDE_DEFAULT_SUMMARY = "Claude Review finding";
873
+ function is_claude_author(login) {
874
+ return CLAUDE_AUTHORS.has(login);
875
+ }
876
+ function is_coderabbit_author(login) {
877
+ return CODERABBIT_AUTHORS.has(login);
878
+ }
879
+ function is_claude_blocker(body) {
880
+ return CLAUDE_BLOCKER_HEADINGS.some((pattern) => pattern.test(body));
881
+ }
882
+ function parse_coderabbit_actionable(body) {
883
+ const match = CODERABBIT_ACTIONABLE_PATTERN.exec(body);
884
+ const raw = match?.[1];
885
+ if (raw === void 0) return EMPTY_COUNT;
886
+ const count = Number(raw);
887
+ return Number.isFinite(count) ? count : EMPTY_COUNT;
888
+ }
889
+ function is_coderabbit_rate_limit(body) {
890
+ return CODERABBIT_RATE_LIMIT_PATTERNS.some((pattern) => pattern.test(body));
891
+ }
892
+ function slice_line_at(body, start_index) {
893
+ const line_end = body.indexOf(NEWLINE_CHAR, start_index);
894
+ return line_end === NOT_FOUND_INDEX ? body.slice(start_index) : body.slice(start_index, line_end);
895
+ }
896
+ function extract_heading_text(body, pattern) {
897
+ const match = pattern.exec(body);
898
+ if (match === null) return void 0;
899
+ const line = slice_line_at(body, match.index);
900
+ return line.replace(HEADING_PREFIX_PATTERN, "").trim();
901
+ }
902
+ function extract_blocker_heading(body) {
903
+ for (const pattern of CLAUDE_BLOCKER_HEADINGS) {
904
+ const heading = extract_heading_text(body, pattern);
905
+ if (heading !== void 0) return heading;
906
+ }
907
+ return "";
908
+ }
909
+ function build_none_finding(comment) {
910
+ return { author_login: comment.author_login, url: comment.url, kind: "none", summary: "" };
911
+ }
912
+ function claude_summary(body) {
913
+ const heading = extract_blocker_heading(body);
914
+ return heading.length > 0 ? heading : CLAUDE_DEFAULT_SUMMARY;
915
+ }
916
+ function classify_claude_comment(comment) {
917
+ if (!is_claude_blocker(comment.body)) return build_none_finding(comment);
918
+ return {
919
+ author_login: comment.author_login,
920
+ url: comment.url,
921
+ kind: "blocker",
922
+ summary: claude_summary(comment.body)
923
+ };
924
+ }
925
+ function build_coderabbit_info(comment, count) {
926
+ return {
927
+ author_login: comment.author_login,
928
+ url: comment.url,
929
+ kind: "info",
930
+ summary: `CodeRabbit actionable comments posted: ${String(count)}`
931
+ };
932
+ }
933
+ function classify_coderabbit_comment(comment) {
934
+ if (is_coderabbit_rate_limit(comment.body)) return build_none_finding(comment);
935
+ const count = parse_coderabbit_actionable(comment.body);
936
+ if (count === EMPTY_COUNT) return build_none_finding(comment);
937
+ return build_coderabbit_info(comment, count);
938
+ }
939
+ function classify_comment(comment) {
940
+ if (is_claude_author(comment.author_login)) return classify_claude_comment(comment);
941
+ if (is_coderabbit_author(comment.author_login)) return classify_coderabbit_comment(comment);
942
+ return build_none_finding(comment);
943
+ }
944
+ function classify_ai_review_comments(comments) {
945
+ const classified = comments.map((comment) => classify_comment(comment));
946
+ return {
947
+ blockers: classified.filter((entry) => entry.kind === "blocker"),
948
+ infos: classified.filter((entry) => entry.kind === "info")
949
+ };
950
+ }
951
+
952
+ // scripts/gh/git-pr-confirmation.ts
953
+ var CONFIRMATION_RECOVERY = 'send it by hand \u2014 `pnpm josh notify --task-type confirmation --issue-url <url> --body-file <path> --recommended "<choice>"`';
954
+ function build_confirmation_input(input) {
955
+ return {
956
+ task_type: "confirmation",
957
+ repo_name: input.context.repo_name,
958
+ issue_title: input.context.issue_title,
959
+ body: input.body,
960
+ choices: confirmation_options.block(input),
961
+ issue_url: input.context.issue_url,
962
+ pr_url: input.context.pr_url
963
+ };
964
+ }
965
+ async function notify_confirmation(input) {
966
+ await telegram_notify.send_or_report(build_confirmation_input(input), CONFIRMATION_RECOVERY);
967
+ }
968
+ function has_ignore_reason(reason) {
969
+ return reason !== void 0 && reason.trim().length > 0;
970
+ }
971
+ var git_pr_confirmation = {
972
+ notify_confirmation
973
+ };
974
+
975
+ // scripts/gh/git-pr-ai-review.ts
976
+ function parse_ai_review_comments(raw_json) {
977
+ if (raw_json === void 0) return void 0;
978
+ return parse_json_array_or_undefined(raw_json, ai_review_pull_comment_schema);
979
+ }
980
+ function to_review_comment(raw) {
981
+ return {
982
+ body: raw.body ?? "",
983
+ author_login: raw.author?.login ?? "",
984
+ url: raw.url
985
+ };
986
+ }
987
+ function format_ai_review_finding(finding) {
988
+ return gh_comment_input.format({
989
+ author: finding.author_login,
990
+ body: finding.summary,
991
+ url: finding.url
992
+ });
993
+ }
994
+ function log_info_findings(infos) {
995
+ if (infos.length === 0) return [];
996
+ console.warn("\u26A0 CodeRabbit review is non-blocking (temporary policy \u2014 kit#753):");
997
+ for (const info of infos) {
998
+ console.warn(format_ai_review_finding(info));
999
+ }
1000
+ return infos.map((info) => `CodeRabbit skipped (kit#753): ${format_ai_review_finding(info)}`);
1001
+ }
1002
+ function build_ai_review_blocker_body(blockers) {
1003
+ const lines2 = ["AI reviewer findings remain unresolved.", ""];
1004
+ for (const blocker of blockers) {
1005
+ lines2.push(format_ai_review_finding(blocker));
1006
+ }
1007
+ return lines2.join("\n");
1008
+ }
1009
+ function build_ai_review_ignore_comment(reason, blockers) {
1010
+ const lines2 = [
1011
+ "Some AI reviewer findings were intentionally left unresolved.",
1012
+ `Reason: ${reason.trim()}`,
1013
+ "Affected comments:"
1014
+ ];
1015
+ for (const blocker of blockers) {
1016
+ lines2.push(format_ai_review_finding(blocker));
1017
+ }
1018
+ return lines2.join("\n");
1019
+ }
1020
+ async function fetch_review_comments(branch_name) {
1021
+ const parsed = parse_ai_review_comments(await git_gh_command.pr_get_comments(branch_name));
1022
+ return parsed?.map((comment) => to_review_comment(comment));
1023
+ }
1024
+ var IGNORE_ALTERNATIVE = 'Re-run `pnpm josh followup --ai-review-ignore-reason "<reason>"` if the gate does not apply';
1025
+ async function handle_blockers(input) {
1026
+ const body = build_ai_review_blocker_body(input.blockers);
1027
+ if (has_ignore_reason(input.ignore_reason)) {
1028
+ const ignore_comment = build_ai_review_ignore_comment(input.ignore_reason, input.blockers);
1029
+ await git_gh_command.pr_comment(input.branch_name, ignore_comment);
1030
+ return;
1031
+ }
1032
+ await git_pr_confirmation.notify_confirmation({
1033
+ context: input.context,
1034
+ body,
1035
+ recommended: "Fix the findings and re-run `pnpm josh followup`",
1036
+ alternatives: [IGNORE_ALTERNATIVE]
1037
+ });
1038
+ throw new Error(body);
1039
+ }
1040
+ var UNREADABLE_COMMENTS_BODY = "The AI reviewer comments could not be read, so no finding could be ruled out.\nRe-run `pnpm josh followup` once the read succeeds, or pass an ignore reason.";
1041
+ var UNREADABLE_COMMENTS_NOTE = "AI reviewer comments could not be read; the scan was bypassed.";
1042
+ async function confirm_unreadable_stop(context) {
1043
+ note_unreadable_stop();
1044
+ if (is_retry_pending()) return;
1045
+ await git_pr_confirmation.notify_confirmation({
1046
+ context,
1047
+ body: UNREADABLE_COMMENTS_BODY,
1048
+ recommended: "Re-run `pnpm josh followup` once the comments can be read",
1049
+ alternatives: [IGNORE_ALTERNATIVE]
1050
+ });
1051
+ }
1052
+ async function handle_unreadable_comments(input) {
1053
+ if (has_ignore_reason(input.ignore_reason)) {
1054
+ await git_gh_command.pr_comment(
1055
+ input.branch_name,
1056
+ `${UNREADABLE_COMMENTS_BODY}
1057
+ Reason: ${input.ignore_reason.trim()}`
1058
+ );
1059
+ return [UNREADABLE_COMMENTS_NOTE];
1060
+ }
1061
+ await confirm_unreadable_stop(input.context);
1062
+ throw new Error(UNREADABLE_COMMENTS_BODY);
1063
+ }
1064
+ async function handle_ai_review_findings(input) {
1065
+ const review_comments = await fetch_review_comments(input.branch_name);
1066
+ if (review_comments === void 0) return await handle_unreadable_comments(input);
1067
+ const { blockers, infos } = classify_ai_review_comments(review_comments);
1068
+ const skip_notes = log_info_findings(infos);
1069
+ if (blockers.length > 0) await handle_blockers({ ...input, blockers });
1070
+ return skip_notes;
1071
+ }
1072
+ var git_pr_ai_review = {
1073
+ handle_ai_review_findings
1074
+ };
1075
+
1076
+ // scripts/gh/git-pr-coderabbit.ts
1077
+ var CODERABBIT_AUTHOR = "coderabbitai[bot]";
1078
+ var CODERABBIT_FLAG = "_\u26A0\uFE0F Potential issue_";
1079
+ var CODERABBIT_RESOLVED = "\u2705 Addressed in commit";
1080
+ function parse_pull_comments(raw_json) {
1081
+ if (raw_json === void 0) return void 0;
1082
+ return parse_json_array_or_undefined(raw_json, pull_comment_schema);
1083
+ }
1084
+ function read_unresolved_cr_urls(comments) {
1085
+ return comments.filter((comment) => comment.user?.login === CODERABBIT_AUTHOR).filter((comment) => (comment.body ?? "").includes(CODERABBIT_FLAG)).filter((comment) => !(comment.body ?? "").includes(CODERABBIT_RESOLVED)).map((comment) => comment.html_url ?? "").filter((url) => url.length > 0);
1086
+ }
1087
+ function build_ignore_reason_comment(reason, urls) {
1088
+ const lines2 = [
1089
+ "Some CodeRabbit findings were intentionally left unresolved.",
1090
+ `Reason: ${reason.trim()}`,
1091
+ "Affected comments:"
1092
+ ];
1093
+ for (const url of urls) {
1094
+ lines2.push(`- ${url}`);
1095
+ }
1096
+ return lines2.join("\n");
1097
+ }
1098
+ function log_unresolved_coderabbit(urls) {
1099
+ console.warn("\u26A0 Unresolved CodeRabbit comments are non-blocking (temporary policy \u2014 kit#753):");
1100
+ for (const url of urls) {
1101
+ console.warn(`- ${url}`);
1102
+ }
1103
+ }
1104
+ var UNREADABLE_CR_NOTE = "CodeRabbit line comments could not be read; unresolved findings were not checked (kit#753).";
1105
+ async function report_unreadable_cr(input) {
1106
+ console.warn(`\u26A0 ${UNREADABLE_CR_NOTE}`);
1107
+ if (has_ignore_reason(input.ignore_reason)) {
1108
+ const body = `${UNREADABLE_CR_NOTE}
1109
+ Reason: ${input.ignore_reason.trim()}`;
1110
+ await git_gh_command.pr_comment(input.branch_name, body);
1111
+ }
1112
+ return [UNREADABLE_CR_NOTE];
1113
+ }
1114
+ async function record_unresolved_cr(input) {
1115
+ if (!has_ignore_reason(input.ignore_reason)) {
1116
+ log_unresolved_coderabbit(input.unresolved_urls);
1117
+ return;
1118
+ }
1119
+ const reason_comment = build_ignore_reason_comment(input.ignore_reason, input.unresolved_urls);
1120
+ await git_gh_command.pr_comment(input.branch_name, reason_comment);
1121
+ }
1122
+ async function handle_coderabbit_findings(input) {
1123
+ const raw = await git_gh_command.pr_get_review_comments(input.branch_name);
1124
+ const comments = parse_pull_comments(raw);
1125
+ if (comments === void 0) return await report_unreadable_cr(input);
1126
+ const unresolved_urls = read_unresolved_cr_urls(comments);
1127
+ if (unresolved_urls.length === 0) return [];
1128
+ await record_unresolved_cr({ ...input, unresolved_urls });
1129
+ return unresolved_urls.map((url) => `CodeRabbit unresolved comment skipped (kit#753): ${url}`);
1130
+ }
1131
+ var git_pr_coderabbit = {
1132
+ handle_coderabbit_findings
1133
+ };
1134
+
1135
+ // scripts/gh/git-pr-managed-config.ts
1136
+ async function read_branch_paths() {
1137
+ return changed_paths.to_paths(await git_command.diff_main_names());
1138
+ }
1139
+ var REPORT_HEADING = "This pull request changes files that `josh sync` distributes to every consumer project.";
1140
+ var REPORT_PATHS_HEADING = "Distributed paths in this diff:";
1141
+ function build_report(hits) {
1142
+ return [REPORT_HEADING, REPORT_PATHS_HEADING, managed_config_scope.format_hits(hits)];
1143
+ }
1144
+ async function handle_managed_config_changes(input) {
1145
+ if (!input.should_merge) return [];
1146
+ const hits = managed_config_scope.find_managed_paths(await read_branch_paths());
1147
+ if (hits.length === 0) return [];
1148
+ return build_report(hits);
1149
+ }
1150
+ var git_pr_managed_config = {
1151
+ handle_managed_config_changes
1152
+ };
1153
+
1154
+ // scripts/followup/followup-check-report.ts
1155
+ var REPORT_HEADER = "Checks:";
1156
+ function is_required(snapshot, name) {
1157
+ return is_required_check(name) || matches_any(name, snapshot.required_contexts ?? []);
1158
+ }
1159
+ function failed_lines(snapshot) {
1160
+ if (snapshot === void 0) return [];
1161
+ return snapshot.rollup.filter((check) => check.status === CHECK_STATUS_FAIL).map((check) => {
1162
+ const scope = is_required(snapshot, check.name) ? "required" : "not required";
1163
+ return `- ${check.name} \u2014 failed (${scope})`;
1164
+ });
1165
+ }
1166
+ function reran_lines(reran) {
1167
+ return [...new Set(reran)].map(
1168
+ (name) => `- ${name} \u2014 re-run once, judged flaky; green on the re-run`
1169
+ );
1170
+ }
1171
+ function retrigger_lines(is_retriggered) {
1172
+ if (!is_retriggered) return [];
1173
+ return [`- ${CODERABBIT_CHECK_NAME} \u2014 rate limited; review retriggered`];
1174
+ }
1175
+ function lines(input) {
1176
+ const check_lines = [
1177
+ ...failed_lines(input.snapshot),
1178
+ ...reran_lines(input.reran),
1179
+ ...retrigger_lines(input.is_retriggered)
1180
+ ];
1181
+ if (check_lines.length === 0) return [];
1182
+ return [REPORT_HEADER, ...check_lines];
1183
+ }
1184
+ var followup_check_report = {
1185
+ lines
1186
+ };
1187
+
1188
+ // scripts/followup/followup-coderabbit-retrigger.ts
1189
+ var RETRIGGER_BODY = "@coderabbitai review";
1190
+ var WAIT_OPENER = /please wait/iu;
1191
+ var WAIT_CLOSER = /before/iu;
1192
+ var TOKEN = /\d+|[a-z]+/giu;
1193
+ var DIGITS = /^\d+$/u;
1194
+ var SECOND_MS = 1e3;
1195
+ var SECONDS_PER_MINUTE = 60;
1196
+ var MINUTES_PER_HOUR = 60;
1197
+ var MINUTE_MS = SECONDS_PER_MINUTE * SECOND_MS;
1198
+ var UNIT_MS = {
1199
+ h: MINUTES_PER_HOUR * MINUTE_MS,
1200
+ m: MINUTE_MS,
1201
+ s: SECOND_MS
1202
+ };
1203
+ var MARGIN_SECONDS = 15;
1204
+ var MARGIN_MS = MARGIN_SECONDS * SECOND_MS;
1205
+ var WINDOW_CAP_MINUTES = 30;
1206
+ var WINDOW_CAP_MS = WINDOW_CAP_MINUTES * MINUTE_MS;
1207
+ var REVIEW_WAIT_ATTEMPTS = 40;
1208
+ var REVIEW_WAIT_INTERVAL_SECONDS = 30;
1209
+ var REVIEW_WAIT_INTERVAL_MS = REVIEW_WAIT_INTERVAL_SECONDS * SECOND_MS;
1210
+ var NO_TIME = 0;
1211
+ var FIRST = 0;
1212
+ var NEXT = 1;
1213
+ var RATE_LIMITED = "rate-limited";
1214
+ var RETRIGGER_CAP = 3;
1215
+ var NO_BYPASS = "never bypass the check";
1216
+ var BY_HAND = `wait it out, post \`${RETRIGGER_BODY}\` and rerun followup; ${NO_BYPASS}`;
1217
+ var AGAIN_NOTE = `CodeRabbit rate-limited again after \`${RETRIGGER_BODY}\` (kit#7079): rerun followup, which retriggers up to ${String(RETRIGGER_CAP)} times per pull request; ${NO_BYPASS}`;
1218
+ var CAP_NOTE = `CodeRabbit rate-limited after ${String(RETRIGGER_CAP)} \`${RETRIGGER_BODY}\` (kit#7079): end the run unfinished, parked \`run:stalled\` at stage followup; ${NO_BYPASS}`;
1219
+ var UNREADABLE_NOTE = `CodeRabbit rate-limited with no window readable from its comments (kit#5289): no retrigger posted \u2014 ${BY_HAND}`;
1220
+ var UNFINISHED_NOTE = `CodeRabbit still reviewing after \`${RETRIGGER_BODY}\` (kit#5289): the merge goes ahead without it`;
1221
+ function wait_clause_of(body) {
1222
+ const after_opener = body.split(WAIT_OPENER)[NEXT] ?? "";
1223
+ return after_opener.split(WAIT_CLOSER)[FIRST] ?? "";
1224
+ }
1225
+ function token_ms(tokens, index) {
1226
+ const token = tokens[index] ?? "";
1227
+ if (!DIGITS.test(token)) return NO_TIME;
1228
+ const unit = (tokens[index + NEXT] ?? "").charAt(FIRST).toLowerCase();
1229
+ return Number(token) * (UNIT_MS[unit] ?? NO_TIME);
1230
+ }
1231
+ function parse_wait_ms(body) {
1232
+ if (!is_coderabbit_rate_limit(body)) return void 0;
1233
+ const tokens = wait_clause_of(body).match(TOKEN) ?? [];
1234
+ const wait_ms = tokens.reduce((sum, _token, index) => sum + token_ms(tokens, index), NO_TIME);
1235
+ return wait_ms === NO_TIME ? void 0 : wait_ms;
1236
+ }
1237
+ function is_notice(comment) {
1238
+ return is_coderabbit_author(comment.author?.login ?? "") && is_coderabbit_rate_limit(comment.body ?? "");
1239
+ }
1240
+ function is_retrigger(comment) {
1241
+ return comment.body?.trim() === RETRIGGER_BODY;
1242
+ }
1243
+ function written_ms(comment) {
1244
+ return Date.parse(comment.updatedAt ?? "");
1245
+ }
1246
+ function latest_ms(comments, is_match) {
1247
+ const times = comments.filter((comment) => is_match(comment)).map((comment) => written_ms(comment)).filter((ms) => !Number.isNaN(ms));
1248
+ return times.length === 0 ? void 0 : Math.max(...times);
1249
+ }
1250
+ function window_end_ms(comments) {
1251
+ const ends = comments.filter((comment) => is_notice(comment)).map((comment) => written_ms(comment) + (parse_wait_ms(comment.body ?? "") ?? NaN)).filter((ms) => !Number.isNaN(ms));
1252
+ return ends.length === 0 ? void 0 : Math.max(...ends);
1253
+ }
1254
+ function is_awaiting(comments) {
1255
+ const retrigger_ms = latest_ms(comments, is_retrigger) ?? NO_TIME;
1256
+ const notice_ms = latest_ms(comments, is_notice) ?? retrigger_ms;
1257
+ return retrigger_ms > notice_ms;
1258
+ }
1259
+ function too_long_note(wait_ms) {
1260
+ const minutes = String(Math.ceil(wait_ms / MINUTE_MS));
1261
+ return `CodeRabbit rate-limited for ${minutes} more minutes, over followup's ${String(WINDOW_CAP_MINUTES)} minute wait (kit#5289): no retrigger posted \u2014 ${BY_HAND}`;
1262
+ }
1263
+ function decide(comments, now_ms) {
1264
+ if (is_awaiting(comments)) return { kind: "await" };
1265
+ const spent = comments.filter((comment) => is_retrigger(comment)).length;
1266
+ if (spent >= RETRIGGER_CAP) return { kind: "stop", note: CAP_NOTE };
1267
+ const end_ms = window_end_ms(comments);
1268
+ if (end_ms === void 0) return { kind: "stop", note: UNREADABLE_NOTE };
1269
+ const wait_ms = Math.max(NO_TIME, end_ms - now_ms) + MARGIN_MS;
1270
+ return wait_ms > WINDOW_CAP_MS ? { kind: "stop", note: too_long_note(wait_ms) } : { kind: "retrigger", wait_ms };
1271
+ }
1272
+ async function read_comments(branch_name) {
1273
+ const raw = await git_gh_command.pr_get_comments(branch_name);
1274
+ return parse_json_array_or_undefined(raw ?? "", ai_review_pull_comment_schema) ?? [];
1275
+ }
1276
+ async function read_state(branch_name, observe) {
1277
+ const checks = await git_gh_command.pr_get_checks_snapshot(branch_name);
1278
+ const snapshot = parse_pr_state_snapshot(checks.snapshot_json);
1279
+ await observe(snapshot);
1280
+ return followup_checks_event.coderabbit_of(snapshot);
1281
+ }
1282
+ async function wait_for_review(branch_name, wait) {
1283
+ const observe = followup_coderabbit_wait.observer_of(wait);
1284
+ let is_started = false;
1285
+ let state = RATE_LIMITED;
1286
+ const is_settled = await poll.poll_until(
1287
+ async () => {
1288
+ state = await read_state(branch_name, observe);
1289
+ is_started ||= state !== RATE_LIMITED;
1290
+ return is_started && state !== "running";
1291
+ },
1292
+ {
1293
+ attempts: REVIEW_WAIT_ATTEMPTS,
1294
+ interval_ms: REVIEW_WAIT_INTERVAL_MS,
1295
+ sleeper: poll.sleep,
1296
+ backoff: { schedule: PR_POLL_SCHEDULES.checks }
1297
+ }
1298
+ );
1299
+ if (state === RATE_LIMITED) return [AGAIN_NOTE];
1300
+ return is_settled ? [] : [UNFINISHED_NOTE];
1301
+ }
1302
+ async function retrigger(branch_name, wait, wait_ms) {
1303
+ const seconds = String(Math.ceil(wait_ms / SECOND_MS));
1304
+ console.info(`\u23F3 CodeRabbit rate-limited \u2014 waiting ${seconds}s, then \`${RETRIGGER_BODY}\``);
1305
+ await poll.sleep(wait_ms);
1306
+ await git_gh_command.pr_comment(branch_name, RETRIGGER_BODY);
1307
+ await lane_ledger_write.record_stage({
1308
+ stage: lane_ledger_write.CODERABBIT_RETRIGGER_STAGE,
1309
+ elapsed_ms: wait_ms
1310
+ });
1311
+ return { is_retriggered: true, notes: await wait_for_review(branch_name, wait) };
1312
+ }
1313
+ async function follow(branch_name, wait, decision) {
1314
+ if (decision.kind === "retrigger") return await retrigger(branch_name, wait, decision.wait_ms);
1315
+ return { is_retriggered: true, notes: await wait_for_review(branch_name, wait) };
1316
+ }
1317
+ async function attempt(branch_name, wait, rounds_left, is_retriggered) {
1318
+ const decision = decide(await read_comments(branch_name), Date.now());
1319
+ if (decision.kind === "stop") return { is_retriggered, notes: [decision.note] };
1320
+ const outcome = await follow(branch_name, wait, decision);
1321
+ if (!outcome.notes.includes(AGAIN_NOTE)) return outcome;
1322
+ if (rounds_left <= 1) return { is_retriggered: true, notes: [CAP_NOTE] };
1323
+ return await attempt(branch_name, wait, rounds_left - 1, true);
1324
+ }
1325
+ async function run(branch_name, wait) {
1326
+ if (wait.last?.state !== RATE_LIMITED) return { is_retriggered: false, notes: [] };
1327
+ return await attempt(branch_name, wait, RETRIGGER_CAP, false);
1328
+ }
1329
+ async function settle(snapshot, wait_for_green, branch_name, wait) {
1330
+ const { is_retriggered, notes } = await run(branch_name, wait);
1331
+ if (!is_retriggered) return { snapshot, is_retriggered, notes };
1332
+ return { snapshot: await wait_for_green(), is_retriggered, notes };
1333
+ }
1334
+ var followup_coderabbit_retrigger = {
1335
+ AGAIN_NOTE,
1336
+ CAP_NOTE,
1337
+ RETRIGGER_BODY,
1338
+ RETRIGGER_CAP,
1339
+ UNFINISHED_NOTE,
1340
+ UNREADABLE_NOTE,
1341
+ decide,
1342
+ parse_wait_ms,
1343
+ run,
1344
+ settle
1345
+ };
1346
+
1347
+ // scripts/followup/followup-run-rerun.ts
1348
+ import { z as z3 } from "zod";
1349
+ var PAGE = "per_page=100";
1350
+ var FAILED_CONCLUSIONS = /* @__PURE__ */ new Set(["failure", "cancelled", "timed_out"]);
1351
+ var LATEST_ATTEMPTS = 40;
1352
+ var LATEST_INTERVAL_MS = 15e3;
1353
+ var job_schema = z3.looseObject({ name: z3.string(), conclusion: z3.string().nullish() });
1354
+ var jobs_page_schema = z3.looseObject({ jobs: z3.array(job_schema) });
1355
+ var run_schema = z3.looseObject({
1356
+ id: z3.number(),
1357
+ status: z3.string(),
1358
+ conclusion: z3.string().nullish(),
1359
+ run_attempt: z3.number()
1360
+ });
1361
+ var runs_page_schema = z3.looseObject({ workflow_runs: z3.array(run_schema) });
1362
+ async function read_jobs(run_id, filter) {
1363
+ const rest = `runs/${String(run_id)}/jobs?filter=${filter}&${PAGE}`;
1364
+ const { jobs } = await followup_job_rerun.read_actions(rest, jobs_page_schema);
1365
+ return jobs;
1366
+ }
1367
+ async function read_run_jobs(head_sha) {
1368
+ const rest = `runs?head_sha=${head_sha}&${PAGE}`;
1369
+ const { workflow_runs } = await followup_job_rerun.read_actions(rest, runs_page_schema);
1370
+ return await Promise.all(
1371
+ workflow_runs.map(async (run3) => ({
1372
+ run_id: run3.id,
1373
+ run: run3,
1374
+ all: await read_jobs(run3.id, "all"),
1375
+ latest: await read_jobs(run3.id, "latest")
1376
+ }))
1377
+ );
1378
+ }
1379
+ function holds(jobs, context) {
1380
+ return jobs.some((job) => is_required_match(job.name, context));
1381
+ }
1382
+ function holds_every(jobs, contexts) {
1383
+ return contexts.every((context) => holds(jobs, context));
1384
+ }
1385
+ function has_failed_job(run3) {
1386
+ return run3.latest.some((job) => FAILED_CONCLUSIONS.has(job.conclusion ?? ""));
1387
+ }
1388
+ function is_rerun_target(run3, lost) {
1389
+ if (has_failed_job(run3)) return false;
1390
+ return lost.some((context) => holds(run3.all, context) && !holds(run3.latest, context));
1391
+ }
1392
+ function is_truncated(run3) {
1393
+ if (run3.run.status !== "completed" || run3.run.run_attempt > MAX_CHECK_RERUNS) return false;
1394
+ return run3.run.conclusion === "failure" && !has_failed_job(run3);
1395
+ }
1396
+ async function await_latest_jobs(runs, lost) {
1397
+ let latest = [];
1398
+ await poll.poll_until(
1399
+ async () => {
1400
+ const per_run = await Promise.all(
1401
+ runs.map(async ({ run_id }) => await read_jobs(run_id, "latest"))
1402
+ );
1403
+ latest = per_run.flat();
1404
+ return holds_every(latest, lost);
1405
+ },
1406
+ {
1407
+ attempts: LATEST_ATTEMPTS,
1408
+ interval_ms: LATEST_INTERVAL_MS,
1409
+ backoff: {
1410
+ seen: () => JSON.stringify(latest.map(({ name, conclusion }) => [name, conclusion]))
1411
+ }
1412
+ }
1413
+ );
1414
+ }
1415
+ async function rerun_whole(runs, lost) {
1416
+ console.info(`\u{1F501} Rerunning the whole CI run that lost required jobs: ${lost.join(", ")}`);
1417
+ await Promise.all(
1418
+ runs.map(
1419
+ async ({ run_id }) => await git_gh_exec.exec_gh_api({
1420
+ path: followup_job_rerun.actions_api_path(`runs/${String(run_id)}/rerun`),
1421
+ method: "POST",
1422
+ should_retry: false
1423
+ })
1424
+ )
1425
+ );
1426
+ await await_latest_jobs(runs, lost);
1427
+ }
1428
+ async function rerun_truncated(runs, contexts) {
1429
+ const targets = runs.filter((run3) => is_truncated(run3));
1430
+ if (targets.length === 0) return "none";
1431
+ await rerun_whole(targets, contexts);
1432
+ return "rerun";
1433
+ }
1434
+ async function recover(missing) {
1435
+ const runs = await read_run_jobs(missing.head_sha);
1436
+ const lost = missing.contexts.filter((context) => runs.some((run3) => holds(run3.all, context)));
1437
+ if (lost.length === 0) return await rerun_truncated(runs, missing.contexts);
1438
+ const latest = runs.flatMap((run3) => run3.latest);
1439
+ if (holds_every(latest, lost)) return "present";
1440
+ const targets = runs.filter((run3) => is_rerun_target(run3, lost));
1441
+ if (targets.length === 0) return "none";
1442
+ const rerun = lost.filter((context) => targets.some((run3) => holds(run3.all, context)));
1443
+ await rerun_whole(targets, rerun);
1444
+ return "rerun";
1445
+ }
1446
+ async function recover_missing(missing) {
1447
+ try {
1448
+ return await recover(missing);
1449
+ } catch (error) {
1450
+ console.info(`\u26A0\uFE0F CI run rerun failed: ${git_gh_helpers.get_error_message_with_stderr(error)}`);
1451
+ return "none";
1452
+ }
1453
+ }
1454
+ var followup_run_rerun = {
1455
+ recover_missing
1456
+ };
1457
+
1458
+ // scripts/followup/git-pr-followup-checks.ts
1459
+ var WATCH_FAILED_NOTE = "pr checks --watch failed; falling through to polling";
1460
+ function reads_as_empty_rollup(raw_json) {
1461
+ const parsed = json_value.parse_or_undefined(raw_json);
1462
+ if (typeof parsed !== "object" || parsed === null || !("statusCheckRollup" in parsed)) {
1463
+ return false;
1464
+ }
1465
+ const { statusCheckRollup: rollup } = parsed;
1466
+ return Array.isArray(rollup) && rollup.length === 0;
1467
+ }
1468
+ async function has_no_checks(branch_name) {
1469
+ try {
1470
+ const checks = await git_gh_command.pr_get_checks_snapshot(branch_name);
1471
+ return reads_as_empty_rollup(checks.snapshot_json);
1472
+ } catch {
1473
+ return false;
1474
+ }
1475
+ }
1476
+ async function handle_watch_failure(branch_name, error) {
1477
+ if (await has_no_checks(branch_name)) throw error;
1478
+ console.info(`\u26A0\uFE0F ${WATCH_FAILED_NOTE}: ${git_gh_helpers.get_error_message_with_stderr(error)}`);
1479
+ }
1480
+ async function watch_before_polling(branch_name, observe) {
1481
+ console.info("");
1482
+ console.info("\u{1F4CA} Watching PR checks...");
1483
+ try {
1484
+ await git_gh_command.pr_checks_watch(branch_name, observe);
1485
+ return true;
1486
+ } catch (error) {
1487
+ await handle_watch_failure(branch_name, error);
1488
+ return false;
1489
+ }
1490
+ }
1491
+ async function wait_for_checks(input) {
1492
+ const is_watch_returned = !input.is_skip_watch && await watch_before_polling(input.branch_name, input.observe);
1493
+ const stable_reads = is_watch_returned ? WATCH_CONFIRMED_STABLE_READS : DEFAULT_STABLE_READS;
1494
+ return await git_pr_checks.wait_for_pr_success(
1495
+ input.branch_name,
1496
+ stable_reads,
1497
+ issue_watch_gate.assert_read_here,
1498
+ input.observe
1499
+ );
1500
+ }
1501
+ function is_checks_failure(error) {
1502
+ if (error instanceof PrConflictError) return false;
1503
+ return error instanceof Error && error.message.startsWith(FAILURE_MESSAGE_PREFIX);
1504
+ }
1505
+ async function rejudge_missing(input, error) {
1506
+ const outcome = await followup_run_rerun.recover_missing(error.missing);
1507
+ if (outcome === "none") return void 0;
1508
+ if (outcome === "rerun") input.reran?.push(...error.missing.contexts);
1509
+ return await wait_for_checks(input);
1510
+ }
1511
+ async function stop_reruns_spent(branch_name, error) {
1512
+ const names = await followup_job_rerun.read_rerun_names(branch_name);
1513
+ if (names.length === 0) throw error;
1514
+ throw new Error(followup_job_rerun.reruns_spent_message(names));
1515
+ }
1516
+ async function wait_after_rerun(input) {
1517
+ try {
1518
+ return { snapshot: await wait_for_checks(input) };
1519
+ } catch (error) {
1520
+ if (!is_checks_failure(error)) throw error;
1521
+ return { failure: error };
1522
+ }
1523
+ }
1524
+ async function rejudge_failed_jobs(input, error, round) {
1525
+ if (round >= MAX_CHECK_RERUNS) return await stop_reruns_spent(input.branch_name, error);
1526
+ const rerun = await followup_job_rerun.rerun_failed_jobs(input.branch_name, round);
1527
+ if (rerun.length === 0) throw error;
1528
+ input.reran?.push(...rerun);
1529
+ const waited = await wait_after_rerun(input);
1530
+ if ("snapshot" in waited) return waited.snapshot;
1531
+ return await rejudge_failed_jobs(input, waited.failure, round + 1);
1532
+ }
1533
+ async function rejudge_after_rerun(input, error) {
1534
+ if (!is_checks_failure(error)) throw error;
1535
+ const recovered = error instanceof MissingContextError ? await rejudge_missing(input, error) : void 0;
1536
+ return recovered ?? await rejudge_failed_jobs(input, error, 0);
1537
+ }
1538
+ async function run_checks(input) {
1539
+ try {
1540
+ return await wait_for_checks(input);
1541
+ } catch (error) {
1542
+ return await rejudge_after_rerun(input, error);
1543
+ }
1544
+ }
1545
+ function read_coderabbit_skip_notes(snapshot) {
1546
+ return snapshot.rollup.filter((check) => is_coderabbit_check(check.name)).filter((check) => check.status !== CHECK_STATUS_PASS).map(
1547
+ (check) => `CodeRabbit check skipped (kit#753): ${check.name} was ${check.status} at merge time`
1548
+ );
1549
+ }
1550
+ function log_skip_notes(notes) {
1551
+ for (const note of notes) {
1552
+ console.info(`\u23ED ${note}`);
1553
+ }
1554
+ }
1555
+ var git_pr_followup_checks = {
1556
+ run_checks,
1557
+ read_coderabbit_skip_notes,
1558
+ log_skip_notes
1559
+ };
1560
+
1561
+ // scripts/followup/git-pr-followup-wrapup.ts
1562
+ var { STAGE, lap } = git_followup_stages;
1563
+ var COMPLETION_COMMENT_RECOVERY = "post the completion report by hand \u2014 `gh pr comment <branch>` for the pull request, `gh api repos/{owner}/{repo}/issues/<N>/comments` for the issue";
1564
+ var IN_PROGRESS_RECOVERY = "gh api -X DELETE repos/{owner}/{repo}/issues/<N>/labels/in-progress";
1565
+ function build_notify_body(input) {
1566
+ return git_notify.build_completion_comment_body({
1567
+ message: input.notify_config.message,
1568
+ issue_number: input.issue_number,
1569
+ pr_url: input.pr_url,
1570
+ mentions: input.notify_config.mentions,
1571
+ notes: input.report_notes
1572
+ });
1573
+ }
1574
+ async function post_notify_issue(input) {
1575
+ if (input.issue_number === void 0) {
1576
+ throw new Error("Issue number is required for issue notification.");
1577
+ }
1578
+ await issue_body_or_comment.post(input.issue_number, input.body);
1579
+ }
1580
+ function should_notify_pr(target) {
1581
+ return target === "pr" || target === "both";
1582
+ }
1583
+ function should_notify_issue(target) {
1584
+ return target === "issue" || target === "both";
1585
+ }
1586
+ async function post_completion_notification(input) {
1587
+ if (input.notify_config === void 0) return;
1588
+ const body = build_notify_body({
1589
+ notify_config: input.notify_config,
1590
+ issue_number: input.issue_number,
1591
+ pr_url: input.pr_url,
1592
+ report_notes: input.report_notes
1593
+ });
1594
+ const { target } = input.notify_config;
1595
+ if (should_notify_pr(target)) {
1596
+ await git_gh_command.pr_comment(input.branch_name, body);
1597
+ }
1598
+ if (should_notify_issue(target)) {
1599
+ await post_notify_issue({ issue_number: input.issue_number, body });
1600
+ }
1601
+ }
1602
+ async function notify_step(input) {
1603
+ if (input.is_completion_recorded === true) return;
1604
+ await git_followup_cleanup.run_guarded_step(input.should_merge, {
1605
+ label: "The completion comment",
1606
+ recovery: COMPLETION_COMMENT_RECOVERY,
1607
+ run: async () => {
1608
+ await post_completion_notification({
1609
+ branch_name: input.branch_name,
1610
+ issue_number: input.issue_number,
1611
+ notify_config: input.notify_config,
1612
+ pr_url: input.pr_url,
1613
+ report_notes: input.report_notes
1614
+ });
1615
+ }
1616
+ });
1617
+ }
1618
+ async function epic_close_step(input) {
1619
+ await git_followup_cleanup.run_guarded_step(input.should_merge, {
1620
+ label: "The epic auto-close",
1621
+ recovery: void 0,
1622
+ run: async () => {
1623
+ await epic_close.close_completed_epics({
1624
+ issue_number: input.issue_number,
1625
+ is_merged: input.should_merge
1626
+ });
1627
+ }
1628
+ });
1629
+ }
1630
+ async function in_progress_step(input) {
1631
+ if (!input.should_merge) return;
1632
+ await git_followup_cleanup.run_guarded_step(input.should_merge, {
1633
+ label: "The `in-progress` label removal",
1634
+ recovery: IN_PROGRESS_RECOVERY,
1635
+ run: async () => {
1636
+ await git_followup_label.strip_in_progress(input.issue_number);
1637
+ }
1638
+ });
1639
+ }
1640
+ async function issue_close_step(input) {
1641
+ if (!input.should_merge) return;
1642
+ await git_followup_cleanup.run_guarded_step(input.should_merge, {
1643
+ label: "The merged issue close",
1644
+ recovery: git_followup_issue_close.CLOSE_RECOVERY,
1645
+ run: async () => {
1646
+ await git_followup_issue_close.ensure_issue_closed({
1647
+ issue_number: input.closes_number,
1648
+ pr_url: input.pr_url
1649
+ });
1650
+ }
1651
+ });
1652
+ }
1653
+ async function run_tail_steps(input) {
1654
+ if (!input.should_merge) {
1655
+ await notify_step(input);
1656
+ await epic_close_step(input);
1657
+ return;
1658
+ }
1659
+ await Promise.all([
1660
+ notify_step(input),
1661
+ epic_close_step(input),
1662
+ in_progress_step(input),
1663
+ issue_close_step(input)
1664
+ ]);
1665
+ }
1666
+ async function merge_step(input) {
1667
+ await issue_watch_gate.assert_read_here();
1668
+ await git_pr_merge_checked.merge_checked(input);
1669
+ }
1670
+ async function send_beside_merge(input) {
1671
+ if (!input.should_merge || input.is_merged === true) {
1672
+ await input.send_completion();
1673
+ return STAGE.telegram;
1674
+ }
1675
+ await input.before_merge?.(input.checked?.head_sha);
1676
+ await settled_together(input.send_completion(), merge_step(input));
1677
+ return STAGE.telegram_and_merge;
1678
+ }
1679
+ async function run_wrapup(input, log) {
1680
+ lap(log, await send_beside_merge(input));
1681
+ await run_tail_steps(input);
1682
+ lap(log, STAGE.completion_and_epic_close);
1683
+ }
1684
+ var git_pr_followup_wrapup = {
1685
+ run_wrapup
1686
+ };
1687
+
1688
+ // scripts/followup/git-pr-followup.ts
1689
+ var { STAGE: STAGE2, lap: lap2 } = git_followup_stages;
1690
+ var { run_checks: run_checks2, read_coderabbit_skip_notes: read_coderabbit_skip_notes2, log_skip_notes: log_skip_notes2 } = git_pr_followup_checks;
1691
+ var REPO_NAME_SEPARATOR = "/";
1692
+ function parse_repo_name(name_with_owner) {
1693
+ if (name_with_owner === void 0) return void 0;
1694
+ const parts = name_with_owner.split(REPO_NAME_SEPARATOR);
1695
+ return parts.at(-1);
1696
+ }
1697
+ function build_telegram_input(input) {
1698
+ return {
1699
+ task_type: input.task_type,
1700
+ repo_name: input.context.repo_name,
1701
+ issue_title: input.context.issue_title,
1702
+ body: input.body,
1703
+ issue_url: input.context.issue_url,
1704
+ pr_url: input.context.pr_url
1705
+ };
1706
+ }
1707
+ function build_issue_url(pr_url, issue_number) {
1708
+ if (issue_number === void 0) return void 0;
1709
+ const target = github_issue_url.parse_pull(pr_url);
1710
+ if (target === void 0) return void 0;
1711
+ return `${target.base_url}/issues/${issue_number}`;
1712
+ }
1713
+ var { parse_closes_issue_number } = git_closes_keyword;
1714
+ async function warn_if_missing_closes(branch_name) {
1715
+ const body = await git_gh_command.pr_get_body(branch_name);
1716
+ const closes_number = parse_closes_issue_number(body);
1717
+ if (closes_number !== void 0) return closes_number;
1718
+ console.warn("");
1719
+ console.warn(
1720
+ '\u26A0\uFE0F PR body is missing a "closes #N" keyword \u2014 the linked Issue will not auto-close on merge.'
1721
+ );
1722
+ console.warn(" Recovery: pnpm josh pr (or: pnpm josh git -y --skip-commit --skip-push)");
1723
+ console.warn("");
1724
+ return void 0;
1725
+ }
1726
+ async function read_issue_title(issue_number, closes_number) {
1727
+ const number = issue_number ?? await closes_number;
1728
+ if (number === void 0) return void 0;
1729
+ return await git_gh_command.issue_get_title(number);
1730
+ }
1731
+ async function read_run_context(input) {
1732
+ const closes = warn_if_missing_closes(input.branch_name);
1733
+ const [closes_number, name_with_owner, pr_url, issue_title] = await Promise.all([
1734
+ closes,
1735
+ git_gh_command.repo_get_name_with_owner(),
1736
+ git_gh_command.pr_get_url(input.branch_name),
1737
+ read_issue_title(input.issue_number, closes)
1738
+ ]);
1739
+ const issue_number = input.issue_number ?? closes_number;
1740
+ return {
1741
+ issue_number,
1742
+ closes_number,
1743
+ context: {
1744
+ repo_name: parse_repo_name(name_with_owner),
1745
+ issue_title,
1746
+ issue_url: build_issue_url(pr_url, issue_number),
1747
+ pr_url
1748
+ }
1749
+ };
1750
+ }
1751
+ async function completion_sender(context, skip_notes, is_merge_pending) {
1752
+ const pending_line = await git_followup_pending.pending_release_line({ is_merge_pending });
1753
+ const lines2 = pending_line === void 0 ? skip_notes : [pending_line, ...skip_notes];
1754
+ const input = build_telegram_input({ task_type: "completion", context, body: lines2.join("\n") });
1755
+ return async function send_completion() {
1756
+ await telegram_notify.send_or_report(input, void 0);
1757
+ };
1758
+ }
1759
+ async function send_nothing() {
1760
+ }
1761
+ async function run_comment_scans(input, context, log) {
1762
+ const comment_notes = await git_pr_coderabbit.handle_coderabbit_findings({
1763
+ branch_name: input.branch_name,
1764
+ ignore_reason: input.coderabbit_ignore_reason
1765
+ });
1766
+ lap2(log, STAGE2.coderabbit_comments);
1767
+ const ai_review_notes = await git_pr_ai_review.handle_ai_review_findings({
1768
+ branch_name: input.branch_name,
1769
+ ignore_reason: input.ai_review_ignore_reason,
1770
+ context
1771
+ });
1772
+ lap2(log, STAGE2.ai_review_comments);
1773
+ return [...comment_notes, ...ai_review_notes];
1774
+ }
1775
+ function wait_for_green_of(input, context, issue_number, log) {
1776
+ return async function wait_for_green() {
1777
+ return await run_checks2({
1778
+ branch_name: input.branch_name,
1779
+ is_skip_watch: input.is_skip_watch,
1780
+ reran: log.reran,
1781
+ observe: followup_coderabbit_wait.all(
1782
+ followup_checks_event.observer_of(issue_number, context.pr_url),
1783
+ followup_coderabbit_wait.observer_of(log.coderabbit),
1784
+ followup_ci_path.observer_of(log.ci_path)
1785
+ )
1786
+ });
1787
+ };
1788
+ }
1789
+ async function wait_for_review_green(input, context, issue_number, log) {
1790
+ const wait_for_green = wait_for_green_of(input, context, issue_number, log);
1791
+ const checked = await wait_for_green();
1792
+ lap2(log, STAGE2.checks_wait);
1793
+ const settled = await followup_coderabbit_retrigger.settle(
1794
+ checked,
1795
+ wait_for_green,
1796
+ input.branch_name,
1797
+ log.coderabbit
1798
+ );
1799
+ if (settled.is_retriggered) lap2(log, STAGE2.coderabbit_retrigger);
1800
+ return settled;
1801
+ }
1802
+ async function run_review_checks(input, context, log, issue_number) {
1803
+ if (input.is_merged === true) return { notes: [], report: [] };
1804
+ git_followup_stages.hold_issue(log, issue_number);
1805
+ const managed = await git_pr_managed_config.handle_managed_config_changes({
1806
+ should_merge: input.should_merge
1807
+ });
1808
+ const settled = await wait_for_review_green(input, context, issue_number, log);
1809
+ const { snapshot } = settled;
1810
+ const check_notes = [...settled.notes, ...read_coderabbit_skip_notes2(snapshot)];
1811
+ log_skip_notes2(check_notes);
1812
+ const scan_notes = await run_comment_scans(input, context, log);
1813
+ const report = [...managed, ...followup_check_report.lines({ ...settled, reran: log.reran })];
1814
+ return { notes: [...report, ...check_notes, ...scan_notes], report, snapshot };
1815
+ }
1816
+ async function prepare_notify(input, issue_number, context, checks) {
1817
+ const is_recorded = await git_followup_merged.is_completion_recorded({
1818
+ merged_at: input.is_merged === true ? input.merged_at : void 0,
1819
+ issue_number,
1820
+ pr_url: context.pr_url
1821
+ });
1822
+ if (is_recorded) return { is_recorded, send: send_nothing };
1823
+ return { is_recorded, send: await completion_sender(context, checks.notes, input.should_merge) };
1824
+ }
1825
+ async function run_stages(input, log) {
1826
+ const { issue_number, closes_number, context } = await read_run_context(input);
1827
+ lap2(log, STAGE2.closes_and_context);
1828
+ const checks = await run_review_checks(input, context, log, issue_number);
1829
+ const notify = await prepare_notify(input, issue_number, context, checks);
1830
+ await git_pr_followup_wrapup.run_wrapup(
1831
+ {
1832
+ branch_name: input.branch_name,
1833
+ issue_number,
1834
+ closes_number,
1835
+ notify_config: input.notify_config,
1836
+ pr_url: context.pr_url,
1837
+ should_merge: input.should_merge,
1838
+ report_notes: checks.report,
1839
+ is_merged: input.is_merged,
1840
+ is_completion_recorded: notify.is_recorded,
1841
+ send_completion: notify.send,
1842
+ checked: checks.snapshot,
1843
+ wait_for_green: wait_for_green_of(input, context, issue_number, log),
1844
+ before_merge: input.before_merge
1845
+ },
1846
+ log
1847
+ );
1848
+ return issue_number;
1849
+ }
1850
+ async function run2(input) {
1851
+ const log = git_followup_stages.new_log();
1852
+ try {
1853
+ return await run_stages(input, log);
1854
+ } catch (error) {
1855
+ lap2(log, git_followup_stages.stopped_lap(error));
1856
+ throw error;
1857
+ } finally {
1858
+ git_followup_stages.print_stages(log);
1859
+ await git_followup_stages.record_waits(log);
1860
+ }
1861
+ }
1862
+ var git_pr_followup = {
1863
+ run: run2
1864
+ };
1865
+
1866
+ // scripts/followup/git-followup-workflow.ts
1867
+ josh_environment_file.load_environment_file();
1868
+ var HELP_TEXT = `
1869
+ \u{1F6A6} PR Followup Workflow
1870
+
1871
+ Usage:
1872
+ jf-git-followup [issue] [options]
1873
+
1874
+ Options:
1875
+ --branch Target branch name (default: current branch)
1876
+ --issue-number Issue number for completion messages
1877
+ --notify-target pr | issue | both
1878
+ --notify-message Completion message header
1879
+ --notify-message-file Read the completion message from a file (\`-\` reads stdin). Use this
1880
+ whenever the message carries a backtick or a \`$\` \u2014 inside shell
1881
+ double quotes the shell evaluates them before this command runs
1882
+ --notify-mentions Comma-separated mentions (user,org/team)
1883
+ --coderabbit-ignore-reason Reason text when keeping CodeRabbit findings unresolved
1884
+ --ai-review-ignore-reason Reason text when keeping AI reviewer (Claude Review / CodeRabbit
1885
+ summary) findings unresolved
1886
+ --skip-watch Skip the two-minute check look-ahead and only evaluate latest status
1887
+ --no-merge Skip merging the PR (merge is on by default)
1888
+ --merge (Deprecated \u2014 merge is now the default; kept for backward compatibility)
1889
+ -h, --help Show this help
1890
+ `;
1891
+ function display_help() {
1892
+ console.info(HELP_TEXT);
1893
+ }
1894
+ function parse_cli_arguments() {
1895
+ return parseArgs({
1896
+ options: {
1897
+ branch: { type: "string" },
1898
+ "issue-number": { type: "string" },
1899
+ "notify-target": { type: "string" },
1900
+ "notify-message": { type: "string" },
1901
+ "notify-message-file": { type: "string" },
1902
+ "notify-mentions": { type: "string" },
1903
+ "coderabbit-ignore-reason": { type: "string" },
1904
+ "ai-review-ignore-reason": { type: "string" },
1905
+ "skip-watch": { type: "boolean" },
1906
+ "no-merge": { type: "boolean" },
1907
+ merge: { type: "boolean" },
1908
+ help: { type: "boolean", short: "h" }
1909
+ },
1910
+ allowPositionals: true
1911
+ });
1912
+ }
1913
+ async function resolve_branch_name(raw_branch) {
1914
+ if (raw_branch !== void 0 && raw_branch.trim().length > 0) return raw_branch.trim();
1915
+ return await git_branch.current();
1916
+ }
1917
+ function build_notify_config2(values) {
1918
+ return git_notify.build_notify_config({
1919
+ raw_target: values["notify-target"] ?? "issue",
1920
+ raw_message: cli_body.resolve({
1921
+ inline: values["notify-message"],
1922
+ file_path: values["notify-message-file"],
1923
+ inline_flag: "--notify-message",
1924
+ file_flag: "--notify-message-file"
1925
+ }),
1926
+ raw_mentions: values["notify-mentions"]
1927
+ });
1928
+ }
1929
+ function is_merge_resolved(values) {
1930
+ return values["no-merge"] !== true;
1931
+ }
1932
+ var { assert_review_attested: assert_review_attested2, assert_review_recorded: assert_review_recorded2, is_valid_issue: is_valid_issue2 } = followup_review_gates;
1933
+ async function assert_live_evidence(should_merge, branch_name) {
1934
+ if (!should_merge) return;
1935
+ const verdict = await live_evidence.check(branch_name);
1936
+ if (verdict !== "required") return;
1937
+ throw new Error(live_evidence.refusal_message());
1938
+ }
1939
+ async function assert_acceptance_mapped(should_merge, issue_number, branch_name) {
1940
+ if (!should_merge || !is_valid_issue2(issue_number)) return;
1941
+ const refusal = await acceptance_map_check.refusal(issue_number, branch_name);
1942
+ if (refusal !== void 0) throw new Error(refusal);
1943
+ }
1944
+ async function assert_removed_tests_disposed(should_merge, branch_name) {
1945
+ if (!should_merge) return;
1946
+ const refusal = await removed_tests_check.refusal(branch_name);
1947
+ if (refusal !== void 0) throw new Error(refusal);
1948
+ }
1949
+ async function assert_merge_gates(should_merge, issue_number, branch_name) {
1950
+ await assert_review_attested2(should_merge);
1951
+ await assert_review_recorded2(should_merge, issue_number);
1952
+ await assert_live_evidence(should_merge, branch_name);
1953
+ await assert_acceptance_mapped(should_merge, issue_number, branch_name);
1954
+ await assert_removed_tests_disposed(should_merge, branch_name);
1955
+ }
1956
+ async function prepare_merge(plan, issue_number, branch_name) {
1957
+ if (plan.is_merged) return;
1958
+ await assert_merge_gates(plan.should_merge, issue_number, branch_name);
1959
+ if (is_valid_issue2(issue_number)) await lane_size_record.record(plan.should_merge, issue_number);
1960
+ await git_followup_flush.commit_ledger_step(plan.should_merge, issue_number);
1961
+ }
1962
+ function answer_help_or_open(values) {
1963
+ if (values.help !== true) {
1964
+ followup_section.print_section();
1965
+ return false;
1966
+ }
1967
+ display_help();
1968
+ return true;
1969
+ }
1970
+ async function main() {
1971
+ const cli = parse_cli_arguments();
1972
+ if (answer_help_or_open(cli.values)) return;
1973
+ const issue_number = cli.values["issue-number"] ?? parse_issue_number_from_text(cli.positionals[0] ?? void 0);
1974
+ const branch_name = await resolve_branch_name(cli.values.branch);
1975
+ const plan = await git_followup_merged.read_merge_plan(branch_name, is_merge_resolved(cli.values));
1976
+ await prepare_merge(plan, issue_number, branch_name);
1977
+ const used_issue_number = await git_pr_followup.run({
1978
+ branch_name,
1979
+ issue_number,
1980
+ notify_config: build_notify_config2(cli.values),
1981
+ coderabbit_ignore_reason: cli.values["coderabbit-ignore-reason"],
1982
+ ai_review_ignore_reason: cli.values["ai-review-ignore-reason"],
1983
+ is_skip_watch: cli.values["skip-watch"] === true,
1984
+ should_merge: plan.should_merge,
1985
+ is_merged: plan.is_merged,
1986
+ merged_at: plan.merged_at,
1987
+ before_merge: async (head) => {
1988
+ await followup_human_merge.assert_allowed(branch_name, issue_number, head);
1989
+ }
1990
+ });
1991
+ await git_followup_finish.finish(used_issue_number ?? issue_number, plan.should_merge);
1992
+ }
1993
+ try {
1994
+ await main();
1995
+ console.info("");
1996
+ } catch (error) {
1997
+ if (error instanceof HumanMergeRequiredError) console.info(error.message);
1998
+ else git_error.handle(error);
1999
+ }
2000
+ var git_followup_workflow = {
2001
+ answer_help_or_open,
2002
+ assert_acceptance_mapped,
2003
+ assert_live_evidence,
2004
+ assert_removed_tests_disposed,
2005
+ parse_issue_number_from_text,
2006
+ prepare_merge,
2007
+ resolve_branch_name,
2008
+ is_merge_resolved
2009
+ };
2010
+ export {
2011
+ git_followup_workflow
2012
+ };