@joshuafolkken/kit 1.3044.0 → 1.3099.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1250) hide show
  1. package/.claude/skills/workflow-commands/backlogrun-steps.md +1 -1
  2. package/.claude/skills/workflow-commands/fullrun-steps.md +3 -3
  3. package/.claude/skills/workflow-commands/halfrun.md +3 -2
  4. package/.claude/skills/workflow-commands/kickoff.md +9 -2
  5. package/.claude/skills/workflow-commands/prerequisite.md +2 -0
  6. package/.claude/skills/workflow-commands/retrospective.md +2 -1
  7. package/.claude/skills/workflow-commands/split-assessment.md +4 -0
  8. package/.github/workflows/ci.yml +0 -20
  9. package/.github/workflows/pr-classification.yml +0 -5
  10. package/.github/workflows/publish.yml +0 -1
  11. package/.github/workflows/sonar-qube.yml +0 -5
  12. package/README.md +2 -0
  13. package/SECURITY.md +2 -1
  14. package/dist/.inputs-verified.json +1 -1
  15. package/dist/commands/adopt.js +29 -20
  16. package/dist/commands/auto-ok-judge-cli.js +43 -33
  17. package/dist/commands/auto-ok-main.js +73 -74
  18. package/dist/commands/backlog-budget-main.js +5 -6
  19. package/dist/commands/backlog-drive-cli.js +286 -305
  20. package/dist/commands/backlog-next-main.js +111 -108
  21. package/dist/commands/backlog-offer-main.js +148 -112
  22. package/dist/commands/backlog-plan-cli.js +123 -120
  23. package/dist/commands/backlog-triage-cli.js +131 -128
  24. package/dist/commands/backlogrun-cli.js +274 -264
  25. package/dist/commands/behavior-cli.js +23 -26
  26. package/dist/commands/bytes-command.js +56 -59
  27. package/dist/commands/cases-cli.js +4 -5
  28. package/dist/commands/check-commit-message-main.js +3 -4
  29. package/dist/commands/check-related.js +125 -119
  30. package/dist/commands/chunk-26JL4UU4.js +365 -0
  31. package/dist/commands/chunk-2BIVHPCA.js +85 -0
  32. package/dist/commands/chunk-2CKJODCK.js +245 -0
  33. package/dist/commands/chunk-2CNVIA35.js +335 -0
  34. package/dist/commands/chunk-2E6PSONB.js +46 -0
  35. package/dist/commands/chunk-2GA4775H.js +77 -0
  36. package/dist/commands/chunk-2O64H5UJ.js +462 -0
  37. package/dist/commands/chunk-2OEXY4GM.js +252 -0
  38. package/dist/commands/chunk-2OMIHPPE.js +51 -0
  39. package/dist/commands/chunk-2ONSHOAY.js +46 -0
  40. package/dist/commands/chunk-2SA3W4JF.js +41 -0
  41. package/dist/commands/chunk-2VY7CJ2R.js +212 -0
  42. package/dist/commands/chunk-2WRDAQPJ.js +74 -0
  43. package/dist/commands/chunk-2XLR7R6E.js +541 -0
  44. package/dist/commands/chunk-33TAOZUE.js +29 -0
  45. package/dist/commands/chunk-36XHHYNU.js +158 -0
  46. package/dist/commands/chunk-3CJNQU7P.js +179 -0
  47. package/dist/commands/chunk-3D5T6KMW.js +59 -0
  48. package/dist/commands/chunk-3EW5LTN3.js +114 -0
  49. package/dist/commands/chunk-3F3RNIG2.js +128 -0
  50. package/dist/commands/chunk-3FLTEJZY.js +74 -0
  51. package/dist/commands/chunk-3JWPTRNI.js +60 -0
  52. package/dist/commands/chunk-3LUPGBW4.js +137 -0
  53. package/dist/commands/chunk-3MQTOUXT.js +94 -0
  54. package/dist/commands/chunk-3PCUERXE.js +19 -0
  55. package/dist/commands/chunk-3U6A5WON.js +173 -0
  56. package/dist/commands/chunk-3VLDFM5I.js +426 -0
  57. package/dist/commands/chunk-3YT3RCSI.js +140 -0
  58. package/dist/commands/chunk-43DU7DYZ.js +540 -0
  59. package/dist/commands/chunk-43H725LG.js +132 -0
  60. package/dist/commands/chunk-46STCE6Q.js +48 -0
  61. package/dist/commands/chunk-46WEC6HZ.js +82 -0
  62. package/dist/commands/chunk-47J4KOZP.js +46 -0
  63. package/dist/commands/chunk-47W7PF4T.js +22 -0
  64. package/dist/commands/chunk-4F4KARQN.js +229 -0
  65. package/dist/commands/chunk-4HB7NWXP.js +263 -0
  66. package/dist/commands/chunk-4HOTJAO6.js +89 -0
  67. package/dist/commands/chunk-4I5AA4P5.js +237 -0
  68. package/dist/commands/chunk-4IDINPBE.js +525 -0
  69. package/dist/commands/chunk-4NSIW3UB.js +104 -0
  70. package/dist/commands/chunk-4YTKV6WV.js +37 -0
  71. package/dist/commands/chunk-5ARNFMQK.js +1263 -0
  72. package/dist/commands/chunk-5AZTSESD.js +114 -0
  73. package/dist/commands/chunk-5FUI2MLY.js +89 -0
  74. package/dist/commands/chunk-5GI5GLC4.js +214 -0
  75. package/dist/commands/chunk-5IHEBIPD.js +333 -0
  76. package/dist/commands/chunk-5KAW5GPF.js +44 -0
  77. package/dist/commands/chunk-5KSJEWXR.js +77 -0
  78. package/dist/commands/chunk-5OF2B4BF.js +35 -0
  79. package/dist/commands/chunk-5PLJ7R3D.js +126 -0
  80. package/dist/commands/chunk-5PPWXOCF.js +64 -0
  81. package/dist/commands/chunk-5VQCL33M.js +46 -0
  82. package/dist/commands/chunk-5Y7FOJLX.js +186 -0
  83. package/dist/commands/chunk-5YTEMF4O.js +110 -0
  84. package/dist/commands/chunk-6AHAY5VZ.js +69 -0
  85. package/dist/commands/chunk-6FN37DER.js +330 -0
  86. package/dist/commands/chunk-6JD4VNO4.js +124 -0
  87. package/dist/commands/chunk-6KUA7MRG.js +64 -0
  88. package/dist/commands/chunk-6LDEZFYR.js +88 -0
  89. package/dist/commands/chunk-6NXIZMIK.js +122 -0
  90. package/dist/commands/chunk-6O45F6YI.js +86 -0
  91. package/dist/commands/chunk-6OHJBQDE.js +184 -0
  92. package/dist/commands/chunk-6WDCCG3M.js +1249 -0
  93. package/dist/commands/chunk-6ZHXEQAI.js +715 -0
  94. package/dist/commands/chunk-736NECRD.js +16 -0
  95. package/dist/commands/chunk-77LEKVEE.js +32 -0
  96. package/dist/commands/chunk-7CX5VYOL.js +50 -0
  97. package/dist/commands/chunk-7DGHFBU7.js +247 -0
  98. package/dist/commands/chunk-7EAYFMDN.js +235 -0
  99. package/dist/commands/chunk-7HP3FQGQ.js +51 -0
  100. package/dist/commands/chunk-7HYYHCTN.js +402 -0
  101. package/dist/commands/chunk-7JOOMFDI.js +155 -0
  102. package/dist/commands/chunk-7K5ITPHR.js +338 -0
  103. package/dist/commands/chunk-7OEBSPPU.js +321 -0
  104. package/dist/commands/chunk-7ULYLGUK.js +492 -0
  105. package/dist/commands/chunk-A3JYZWBS.js +803 -0
  106. package/dist/commands/chunk-A3LCN4KA.js +84 -0
  107. package/dist/commands/chunk-ABLXBG6C.js +98 -0
  108. package/dist/commands/chunk-ABM2MZBF.js +161 -0
  109. package/dist/commands/chunk-AN7BFVHU.js +244 -0
  110. package/dist/commands/chunk-AQCVEQSM.js +99 -0
  111. package/dist/commands/chunk-AU563VKH.js +75 -0
  112. package/dist/commands/chunk-AUTD5FV2.js +1077 -0
  113. package/dist/commands/chunk-AV26CMY6.js +304 -0
  114. package/dist/commands/chunk-B2PJEV3S.js +246 -0
  115. package/dist/commands/chunk-B545ENGY.js +214 -0
  116. package/dist/commands/chunk-B5HP6T4L.js +170 -0
  117. package/dist/commands/chunk-B73IIRMS.js +207 -0
  118. package/dist/commands/chunk-BBLEC4YQ.js +109 -0
  119. package/dist/commands/chunk-BDSG6JKH.js +977 -0
  120. package/dist/commands/chunk-BFKTUD3V.js +33 -0
  121. package/dist/commands/chunk-BLRXHK2V.js +17 -0
  122. package/dist/commands/chunk-BML6MEUB.js +326 -0
  123. package/dist/commands/chunk-BPDNGJXY.js +63 -0
  124. package/dist/commands/chunk-BQLKWGGC.js +118 -0
  125. package/dist/commands/chunk-BRMJVCP7.js +167 -0
  126. package/dist/commands/chunk-BRWR5YKU.js +268 -0
  127. package/dist/commands/chunk-BUZAYEBD.js +319 -0
  128. package/dist/commands/chunk-BVUL57IX.js +139 -0
  129. package/dist/commands/chunk-C7FGDZWP.js +224 -0
  130. package/dist/commands/chunk-CC4BIGCA.js +20 -0
  131. package/dist/commands/chunk-CCHJZEF5.js +4220 -0
  132. package/dist/commands/chunk-CDK7QZWG.js +44 -0
  133. package/dist/commands/chunk-CDYFUCDC.js +72 -0
  134. package/dist/commands/chunk-CEADAQIL.js +170 -0
  135. package/dist/commands/chunk-CNL3SLM6.js +116 -0
  136. package/dist/commands/chunk-CNQ7D2GZ.js +104 -0
  137. package/dist/commands/chunk-CTXJVMHW.js +48 -0
  138. package/dist/commands/chunk-CUWT6UQO.js +13 -0
  139. package/dist/commands/chunk-CVRDJCOE.js +125 -0
  140. package/dist/commands/chunk-D6CF5QGM.js +80 -0
  141. package/dist/commands/chunk-DACNQAXC.js +20 -0
  142. package/dist/commands/chunk-DDOS32JU.js +74 -0
  143. package/dist/commands/chunk-DDZVMXZD.js +481 -0
  144. package/dist/commands/chunk-DF6QD4AF.js +52 -0
  145. package/dist/commands/chunk-DFEXNB44.js +159 -0
  146. package/dist/commands/chunk-DHDKG5HZ.js +151 -0
  147. package/dist/commands/chunk-DHJRFBKO.js +223 -0
  148. package/dist/commands/chunk-DKDWOE3C.js +78 -0
  149. package/dist/commands/chunk-DKO5VTEH.js +65 -0
  150. package/dist/commands/chunk-DLHH3MLS.js +85 -0
  151. package/dist/commands/chunk-DOYNK72G.js +81 -0
  152. package/dist/commands/chunk-DS53UUDH.js +679 -0
  153. package/dist/commands/chunk-DUA4E4ES.js +230 -0
  154. package/dist/commands/chunk-DURHGVRC.js +33 -0
  155. package/dist/commands/chunk-DVCMQMRN.js +191 -0
  156. package/dist/commands/chunk-E3YKMCCJ.js +108 -0
  157. package/dist/commands/chunk-E4F2RTKC.js +272 -0
  158. package/dist/commands/chunk-E4PFCTXN.js +127 -0
  159. package/dist/commands/chunk-EAOTR2WL.js +24 -0
  160. package/dist/commands/chunk-EHPTXSAT.js +315 -0
  161. package/dist/commands/chunk-EHVEWJQ4.js +33 -0
  162. package/dist/commands/chunk-EMFSPPMH.js +98 -0
  163. package/dist/commands/chunk-EPICTV2P.js +46 -0
  164. package/dist/commands/chunk-ES42XPAD.js +123 -0
  165. package/dist/commands/chunk-ESUY7KTZ.js +137 -0
  166. package/dist/commands/chunk-EVVQJJFV.js +507 -0
  167. package/dist/commands/chunk-EWXXEGXL.js +149 -0
  168. package/dist/commands/chunk-F2RDEF2J.js +205 -0
  169. package/dist/commands/chunk-F2U46HAE.js +52 -0
  170. package/dist/commands/chunk-F2VYWU6Z.js +653 -0
  171. package/dist/commands/chunk-F4SGOTUF.js +36 -0
  172. package/dist/commands/chunk-F4YMLVWN.js +183 -0
  173. package/dist/commands/chunk-F57LACNC.js +84 -0
  174. package/dist/commands/chunk-F5N2QIFD.js +213 -0
  175. package/dist/commands/chunk-F7B4ESZE.js +80 -0
  176. package/dist/commands/chunk-FA7CN75F.js +160 -0
  177. package/dist/commands/chunk-FDASVHZD.js +241 -0
  178. package/dist/commands/chunk-FEYZ575X.js +278 -0
  179. package/dist/commands/chunk-FJM2HWKW.js +299 -0
  180. package/dist/commands/chunk-FJMXUDEY.js +3985 -0
  181. package/dist/commands/chunk-FM7VVAK6.js +426 -0
  182. package/dist/commands/chunk-FQWRM5FC.js +67 -0
  183. package/dist/commands/chunk-FT33ZCSB.js +298 -0
  184. package/dist/commands/chunk-FTAWHAI7.js +170 -0
  185. package/dist/commands/chunk-G2DNS74C.js +53 -0
  186. package/dist/commands/chunk-G3BBCAAH.js +90 -0
  187. package/dist/commands/chunk-G75GWNNY.js +101 -0
  188. package/dist/commands/chunk-GA2YSPFH.js +32 -0
  189. package/dist/commands/chunk-GABDPTDK.js +907 -0
  190. package/dist/commands/chunk-GAVSK6P6.js +230 -0
  191. package/dist/commands/chunk-GB2BRQVL.js +300 -0
  192. package/dist/commands/chunk-GBMZXFFC.js +44 -0
  193. package/dist/commands/chunk-GDP7QXYE.js +76 -0
  194. package/dist/commands/chunk-GGWXF7RJ.js +70 -0
  195. package/dist/commands/chunk-GHOTKHI4.js +30 -0
  196. package/dist/commands/chunk-GMVN6ZP2.js +48 -0
  197. package/dist/commands/chunk-GNTTGRCX.js +133 -0
  198. package/dist/commands/chunk-GOY5JECO.js +130 -0
  199. package/dist/commands/chunk-GZL6ISVM.js +72 -0
  200. package/dist/commands/chunk-HALHQILI.js +51 -0
  201. package/dist/commands/chunk-HAT7AFBF.js +85 -0
  202. package/dist/commands/chunk-HDVSZ6CZ.js +292 -0
  203. package/dist/commands/chunk-HE3GOMR7.js +88 -0
  204. package/dist/commands/chunk-HEFUC4ZW.js +65 -0
  205. package/dist/commands/chunk-HHS3LYLV.js +30 -0
  206. package/dist/commands/chunk-HQZ65PJE.js +167 -0
  207. package/dist/commands/chunk-HRN73FQJ.js +77 -0
  208. package/dist/commands/chunk-HSZECERZ.js +271 -0
  209. package/dist/commands/chunk-HYE3MBAN.js +113 -0
  210. package/dist/commands/chunk-IAB6LCJL.js +18 -0
  211. package/dist/commands/chunk-IAGENI2U.js +42 -0
  212. package/dist/commands/chunk-ICPVBHIX.js +48 -0
  213. package/dist/commands/chunk-IONGJJYM.js +179 -0
  214. package/dist/commands/chunk-IP23WOWP.js +126 -0
  215. package/dist/commands/chunk-IPS7EBE5.js +140 -0
  216. package/dist/commands/chunk-IXZZSST7.js +459 -0
  217. package/dist/commands/chunk-IY3DSDRW.js +173 -0
  218. package/dist/commands/chunk-J2RUI4KN.js +47 -0
  219. package/dist/commands/chunk-J3PCRUVY.js +1223 -0
  220. package/dist/commands/chunk-J4XHEOOW.js +156 -0
  221. package/dist/commands/chunk-JDHLHYJJ.js +208 -0
  222. package/dist/commands/chunk-JEYITIWB.js +423 -0
  223. package/dist/commands/chunk-JGX7JIW4.js +126 -0
  224. package/dist/commands/chunk-JHIGDFBS.js +59 -0
  225. package/dist/commands/chunk-JI2EGXZX.js +53 -0
  226. package/dist/commands/chunk-JNV3VRK2.js +47 -0
  227. package/dist/commands/chunk-JPMAW2VZ.js +91 -0
  228. package/dist/commands/chunk-JQEY6KDP.js +90 -0
  229. package/dist/commands/chunk-JSJDIEGZ.js +88 -0
  230. package/dist/commands/chunk-JT5ICRFF.js +44 -0
  231. package/dist/commands/chunk-JU2MAYQ3.js +997 -0
  232. package/dist/commands/chunk-JUCJ4Y42.js +77 -0
  233. package/dist/commands/chunk-K3OZBV3L.js +49 -0
  234. package/dist/commands/chunk-K6P5PISC.js +114 -0
  235. package/dist/commands/chunk-KDCHY7XO.js +88 -0
  236. package/dist/commands/chunk-KDGX3JTV.js +51 -0
  237. package/dist/commands/chunk-KGSEWOKI.js +353 -0
  238. package/dist/commands/chunk-KIS7JFNP.js +217 -0
  239. package/dist/commands/chunk-KJPZPTS4.js +245 -0
  240. package/dist/commands/chunk-KKHD3C2P.js +114 -0
  241. package/dist/commands/chunk-KKIIY5I5.js +67 -0
  242. package/dist/commands/chunk-KN46UC77.js +114 -0
  243. package/dist/commands/chunk-KP2BVAS5.js +125 -0
  244. package/dist/commands/chunk-KPAJBJXG.js +63 -0
  245. package/dist/commands/chunk-KPMAJP6D.js +145 -0
  246. package/dist/commands/chunk-KR6WUAJM.js +122 -0
  247. package/dist/commands/chunk-KWLNK2NJ.js +391 -0
  248. package/dist/commands/chunk-L2CLCNXW.js +144 -0
  249. package/dist/commands/chunk-L7MDU6D7.js +155 -0
  250. package/dist/commands/chunk-L7VD4MLF.js +78 -0
  251. package/dist/commands/chunk-LBVYFW3I.js +38 -0
  252. package/dist/commands/chunk-LE3M42CF.js +350 -0
  253. package/dist/commands/chunk-LIPUSINQ.js +140 -0
  254. package/dist/commands/chunk-LJVZWE3A.js +1885 -0
  255. package/dist/commands/chunk-LKSSQVDA.js +49 -0
  256. package/dist/commands/chunk-LL6G34MF.js +93 -0
  257. package/dist/commands/chunk-LNQOL2CL.js +321 -0
  258. package/dist/commands/chunk-LS7P324N.js +72 -0
  259. package/dist/commands/chunk-LU5EOGFQ.js +50 -0
  260. package/dist/commands/chunk-LX2ENXHZ.js +197 -0
  261. package/dist/commands/chunk-M32UPB2D.js +110 -0
  262. package/dist/commands/chunk-M3UGRNNB.js +103 -0
  263. package/dist/commands/chunk-MDGPJOLK.js +351 -0
  264. package/dist/commands/chunk-MDKRTUE4.js +288 -0
  265. package/dist/commands/chunk-MFZVRWRS.js +34 -0
  266. package/dist/commands/chunk-MHF6BDQI.js +128 -0
  267. package/dist/commands/chunk-MLJDW7YN.js +64 -0
  268. package/dist/commands/chunk-MNLHYAJO.js +80 -0
  269. package/dist/commands/chunk-MOD3FG4V.js +419 -0
  270. package/dist/commands/chunk-MRAEJLXL.js +83 -0
  271. package/dist/commands/chunk-MRW2WYJS.js +68 -0
  272. package/dist/commands/chunk-MXPCEZL5.js +23 -0
  273. package/dist/commands/chunk-N2XH7QBY.js +103 -0
  274. package/dist/commands/chunk-N2ZF6T4E.js +332 -0
  275. package/dist/commands/chunk-N36NZMAL.js +79 -0
  276. package/dist/commands/chunk-N4EMFHQ6.js +114 -0
  277. package/dist/commands/chunk-N4P64UIH.js +211 -0
  278. package/dist/commands/chunk-NABSSY4P.js +204 -0
  279. package/dist/commands/chunk-NDQIJBRQ.js +100 -0
  280. package/dist/commands/chunk-NDR4PCVG.js +29 -0
  281. package/dist/commands/chunk-NEOCCN6D.js +302 -0
  282. package/dist/commands/chunk-NFKWFOFM.js +45 -0
  283. package/dist/commands/chunk-NFUPJBBG.js +516 -0
  284. package/dist/commands/chunk-NHEBKL7X.js +170 -0
  285. package/dist/commands/chunk-NHTEC5U4.js +99 -0
  286. package/dist/commands/chunk-NOSODWWK.js +1132 -0
  287. package/dist/commands/chunk-NPXXYG6Z.js +580 -0
  288. package/dist/commands/chunk-NR2JDBPV.js +75 -0
  289. package/dist/commands/chunk-NRULNBYI.js +1153 -0
  290. package/dist/commands/chunk-NTGF5N3N.js +110 -0
  291. package/dist/commands/chunk-NTIVNQKF.js +73 -0
  292. package/dist/commands/chunk-NUCFIYZL.js +119 -0
  293. package/dist/commands/chunk-NVMV7BYX.js +88 -0
  294. package/dist/commands/chunk-NYWPTYGL.js +169 -0
  295. package/dist/commands/chunk-NZ45KOLL.js +104 -0
  296. package/dist/commands/chunk-O45BX4EL.js +39 -0
  297. package/dist/commands/chunk-O46T4ANI.js +229 -0
  298. package/dist/commands/chunk-O5JGV7NA.js +245 -0
  299. package/dist/commands/chunk-O7ESC4HL.js +566 -0
  300. package/dist/commands/chunk-OBYLXHCH.js +86 -0
  301. package/dist/commands/chunk-OHN3QARP.js +769 -0
  302. package/dist/commands/chunk-OKBZGLD5.js +393 -0
  303. package/dist/commands/chunk-OKN63ZH5.js +109 -0
  304. package/dist/commands/chunk-ON4IKRGS.js +469 -0
  305. package/dist/commands/chunk-OT74RSQO.js +82 -0
  306. package/dist/commands/chunk-OVCVINYW.js +143 -0
  307. package/dist/commands/chunk-OZKLVTYI.js +342 -0
  308. package/dist/commands/chunk-OZN4HOZT.js +74 -0
  309. package/dist/commands/chunk-P3LJ2Q4N.js +555 -0
  310. package/dist/commands/chunk-P43GWYR6.js +185 -0
  311. package/dist/commands/chunk-P6ASP2DY.js +132 -0
  312. package/dist/commands/chunk-PBAEJ5PT.js +38 -0
  313. package/dist/commands/chunk-PCZROH3R.js +100 -0
  314. package/dist/commands/chunk-PJYTUUTH.js +34 -0
  315. package/dist/commands/chunk-PKXTISWR.js +58 -0
  316. package/dist/commands/chunk-PSGLUBSB.js +74 -0
  317. package/dist/commands/chunk-PUQA7F6Y.js +186 -0
  318. package/dist/commands/chunk-PVRDJU2B.js +126 -0
  319. package/dist/commands/chunk-Q3HM2BEH.js +45 -0
  320. package/dist/commands/chunk-Q42NF2TL.js +47 -0
  321. package/dist/commands/chunk-Q4ULMZAS.js +106 -0
  322. package/dist/commands/chunk-QCRUPRQ2.js +207 -0
  323. package/dist/commands/chunk-QFIKPGMC.js +280 -0
  324. package/dist/commands/chunk-QSBYULSS.js +100 -0
  325. package/dist/commands/chunk-QSJCZATC.js +18 -0
  326. package/dist/commands/chunk-QTJPCXEW.js +23 -0
  327. package/dist/commands/chunk-QTQAI2M2.js +179 -0
  328. package/dist/commands/chunk-QTVVFV4Q.js +127 -0
  329. package/dist/commands/chunk-QX2EMUXV.js +102 -0
  330. package/dist/commands/chunk-QXBOECGL.js +272 -0
  331. package/dist/commands/chunk-QXCG3SG4.js +88 -0
  332. package/dist/commands/chunk-QZVMGAWV.js +307 -0
  333. package/dist/commands/chunk-R36VZIKU.js +53 -0
  334. package/dist/commands/chunk-R3F7F3TX.js +94 -0
  335. package/dist/commands/chunk-R5AABJZJ.js +1062 -0
  336. package/dist/commands/chunk-R7PYR4HW.js +389 -0
  337. package/dist/commands/chunk-RAQ3E6OT.js +258 -0
  338. package/dist/commands/chunk-RESNXNDG.js +54 -0
  339. package/dist/commands/chunk-RFIOZTXY.js +305 -0
  340. package/dist/commands/chunk-RFWB2KAV.js +102 -0
  341. package/dist/commands/chunk-RFXON3FK.js +25 -0
  342. package/dist/commands/chunk-RGEB5L37.js +66 -0
  343. package/dist/commands/chunk-RGRLLF2J.js +119 -0
  344. package/dist/commands/chunk-RLRIMYXM.js +178 -0
  345. package/dist/commands/chunk-RNB3DQOZ.js +70 -0
  346. package/dist/commands/chunk-RO4QEZJO.js +172 -0
  347. package/dist/commands/chunk-RS5HBJY6.js +161 -0
  348. package/dist/commands/chunk-RV7EQIE4.js +202 -0
  349. package/dist/commands/chunk-RWPCK3CO.js +41 -0
  350. package/dist/commands/chunk-RWYSVFIA.js +250 -0
  351. package/dist/commands/chunk-RYKK75YT.js +289 -0
  352. package/dist/commands/chunk-S4JE63QE.js +704 -0
  353. package/dist/commands/chunk-S4OZJIXD.js +134 -0
  354. package/dist/commands/chunk-S5GX3H4P.js +91 -0
  355. package/dist/commands/chunk-SC57VV6A.js +60 -0
  356. package/dist/commands/chunk-SD4EX75H.js +177 -0
  357. package/dist/commands/chunk-SJITWFNY.js +480 -0
  358. package/dist/commands/chunk-SKGDMAIA.js +33 -0
  359. package/dist/commands/chunk-SNSZ25XZ.js +393 -0
  360. package/dist/commands/chunk-SOETJZWH.js +7672 -0
  361. package/dist/commands/chunk-SQZZHK6X.js +119 -0
  362. package/dist/commands/chunk-SRTEE34O.js +93 -0
  363. package/dist/commands/chunk-SYTCTLMD.js +285 -0
  364. package/dist/commands/chunk-T6JUDQMW.js +181 -0
  365. package/dist/commands/chunk-TEXUEBGE.js +208 -0
  366. package/dist/commands/chunk-TFDVTU6O.js +910 -0
  367. package/dist/commands/chunk-TFYYXETQ.js +472 -0
  368. package/dist/commands/chunk-TMFKVJUW.js +121 -0
  369. package/dist/commands/chunk-TNJU4CXD.js +32 -0
  370. package/dist/commands/chunk-TRHWBUWE.js +61 -0
  371. package/dist/commands/chunk-TROCFVCU.js +45 -0
  372. package/dist/commands/chunk-TUBBESHU.js +85 -0
  373. package/dist/commands/chunk-TVZIFZZN.js +62 -0
  374. package/dist/commands/chunk-TXRWAL63.js +144 -0
  375. package/dist/commands/chunk-U46YTYJQ.js +92 -0
  376. package/dist/commands/chunk-U5EO4QEV.js +48 -0
  377. package/dist/commands/chunk-UCO333EX.js +47 -0
  378. package/dist/commands/chunk-UIXQ4IYT.js +445 -0
  379. package/dist/commands/chunk-UJGNYPMD.js +716 -0
  380. package/dist/commands/chunk-URZ4RDC4.js +220 -0
  381. package/dist/commands/chunk-UUA63LCI.js +77 -0
  382. package/dist/commands/chunk-UUH3DE77.js +57 -0
  383. package/dist/commands/chunk-UVY5ODCM.js +60 -0
  384. package/dist/commands/chunk-UWMB6EOU.js +45 -0
  385. package/dist/commands/chunk-UY62WJV6.js +120 -0
  386. package/dist/commands/chunk-UZDKCGDC.js +198 -0
  387. package/dist/commands/chunk-VAHQ4AFM.js +585 -0
  388. package/dist/commands/chunk-VCWNMRH7.js +71 -0
  389. package/dist/commands/chunk-VL5I2IOD.js +332 -0
  390. package/dist/commands/chunk-VLN6TSPJ.js +139 -0
  391. package/dist/commands/chunk-VMG3QB6C.js +81 -0
  392. package/dist/commands/chunk-VO25PMGS.js +58 -0
  393. package/dist/commands/chunk-VPRQFM2T.js +37 -0
  394. package/dist/commands/chunk-VTLWODJ2.js +133 -0
  395. package/dist/commands/chunk-VUCDGQ6Y.js +260 -0
  396. package/dist/commands/chunk-VY7ZJMDT.js +469 -0
  397. package/dist/commands/chunk-W4BR6QNU.js +1241 -0
  398. package/dist/commands/chunk-W7X7MZZN.js +449 -0
  399. package/dist/commands/chunk-WCYRNNKF.js +76 -0
  400. package/dist/commands/chunk-WEUUJIWQ.js +84 -0
  401. package/dist/commands/chunk-WNBJK6QE.js +84 -0
  402. package/dist/commands/chunk-WORHUJ6T.js +73 -0
  403. package/dist/commands/chunk-WR5PKCQW.js +61 -0
  404. package/dist/commands/chunk-WR73HTRG.js +121 -0
  405. package/dist/commands/chunk-WRHMYSW7.js +36 -0
  406. package/dist/commands/chunk-WRNMUQTD.js +95 -0
  407. package/dist/commands/chunk-WROJTXWZ.js +138 -0
  408. package/dist/commands/chunk-WTIPX5NG.js +43 -0
  409. package/dist/commands/chunk-WWLCQREY.js +225 -0
  410. package/dist/commands/chunk-WXLW7S4M.js +71 -0
  411. package/dist/commands/chunk-WXXLJQBO.js +67 -0
  412. package/dist/commands/chunk-X4LYH6Q4.js +56 -0
  413. package/dist/commands/chunk-XAEL24EG.js +66 -0
  414. package/dist/commands/chunk-XDR2BRDL.js +216 -0
  415. package/dist/commands/chunk-XRQMVAB4.js +85 -0
  416. package/dist/commands/chunk-XUXCFPDK.js +218 -0
  417. package/dist/commands/chunk-XXPDFJRI.js +48 -0
  418. package/dist/commands/chunk-Y6OGDG5I.js +49 -0
  419. package/dist/commands/chunk-YANDBVAT.js +430 -0
  420. package/dist/commands/chunk-YD7XK2TX.js +550 -0
  421. package/dist/commands/chunk-YEAE46TS.js +98 -0
  422. package/dist/commands/chunk-YEQFAEVW.js +112 -0
  423. package/dist/commands/chunk-YJZAD4Z5.js +103 -0
  424. package/dist/commands/chunk-YNCF66RK.js +1052 -0
  425. package/dist/commands/chunk-YOA25SII.js +210 -0
  426. package/dist/commands/chunk-YOZTZMAT.js +38 -0
  427. package/dist/commands/chunk-YSGRHVZG.js +897 -0
  428. package/dist/commands/chunk-YSLGWRQN.js +646 -0
  429. package/dist/commands/chunk-YT5JR2CB.js +105 -0
  430. package/dist/commands/chunk-YTXCLGGL.js +168 -0
  431. package/dist/commands/chunk-YVHJN2HS.js +74 -0
  432. package/dist/commands/chunk-YY7XVVSB.js +43 -0
  433. package/dist/commands/chunk-Z2NUK47W.js +1314 -0
  434. package/dist/commands/chunk-Z5GZV4DV.js +16 -0
  435. package/dist/commands/chunk-ZB52ZIEA.js +1629 -0
  436. package/dist/commands/chunk-ZCD4AV2P.js +73 -0
  437. package/dist/commands/chunk-ZCHZU6NX.js +799 -0
  438. package/dist/commands/chunk-ZEH2B3DF.js +239 -0
  439. package/dist/commands/chunk-ZGANVZCA.js +92 -0
  440. package/dist/commands/chunk-ZGEUWHFF.js +297 -0
  441. package/dist/commands/chunk-ZHSNQ2F7.js +161 -0
  442. package/dist/commands/chunk-ZI3SABMH.js +347 -0
  443. package/dist/commands/chunk-ZIIUBGON.js +773 -0
  444. package/dist/commands/chunk-ZJJLROJY.js +269 -0
  445. package/dist/commands/chunk-ZNIIA275.js +59 -0
  446. package/dist/commands/chunk-ZV6BZZJ2.js +271 -0
  447. package/dist/commands/ci-timing-cli.js +22 -3
  448. package/dist/commands/code-symbol-cli.js +21 -7
  449. package/dist/commands/codex-hook-adapter.js +124 -119
  450. package/dist/commands/command-derive.js +9 -11
  451. package/dist/commands/cost-audit-main.js +118 -119
  452. package/dist/commands/cost-main.js +5 -7
  453. package/dist/commands/cspell-cached.js +55 -57
  454. package/dist/commands/defect-origin-main.js +42 -37
  455. package/dist/commands/defect-report-main.js +33 -25
  456. package/dist/commands/diff-summary-cli.js +3 -4
  457. package/dist/commands/disposition-cli.js +117 -118
  458. package/dist/commands/doctor.js +24 -11
  459. package/dist/commands/document-read-cli.js +50 -53
  460. package/dist/commands/document-section-main.js +50 -53
  461. package/dist/commands/dogfood-commit-cli.js +19 -4
  462. package/dist/commands/effect-audit-cli.js +40 -41
  463. package/dist/commands/epic-audit-main.js +88 -86
  464. package/dist/commands/epic-bundle-main.js +122 -119
  465. package/dist/commands/epic-check.js +37 -31
  466. package/dist/commands/epic-main.js +129 -126
  467. package/dist/commands/epic-next-main.js +85 -83
  468. package/dist/commands/eval-run.js +6 -7
  469. package/dist/commands/format-edited-cli.js +71 -46
  470. package/dist/commands/format.js +41 -56
  471. package/dist/commands/fresh-machine-cli.js +24 -7
  472. package/dist/commands/gh-usage-cli.js +22 -22
  473. package/dist/commands/git-followup-workflow.js +170 -159
  474. package/dist/commands/git-gh-checks-failed-main.js +23 -15
  475. package/dist/commands/git-workflow.js +52 -53
  476. package/dist/commands/github-release-cli.js +3 -3
  477. package/dist/commands/hook-ledger-cli.js +93 -94
  478. package/dist/commands/init-main.js +40 -40
  479. package/dist/commands/inputs.json +1999 -1954
  480. package/dist/commands/issue-ack-cli.js +28 -21
  481. package/dist/commands/issue-already-done-cli.js +107 -110
  482. package/dist/commands/issue-body-cli.js +71 -73
  483. package/dist/commands/issue-cite-main.js +35 -28
  484. package/dist/commands/issue-comment-main.js +36 -30
  485. package/dist/commands/issue-consolidate-cli.js +54 -54
  486. package/dist/commands/issue-file-main.js +274 -148
  487. package/dist/commands/issue-fold-existing-cli.js +126 -123
  488. package/dist/commands/issue-fold-main.js +57 -60
  489. package/dist/commands/issue-lint-main.js +59 -61
  490. package/dist/commands/issue-measured-cli.js +108 -110
  491. package/dist/commands/issue-plan-cli.js +156 -155
  492. package/dist/commands/issue-premise-unmet-cli.js +111 -113
  493. package/dist/commands/issue-priority-cli.js +38 -32
  494. package/dist/commands/issue-read-main.js +38 -33
  495. package/dist/commands/issue-release-class-cli.js +37 -31
  496. package/dist/commands/issue-release-main.js +35 -29
  497. package/dist/commands/issue-scout-main.js +123 -120
  498. package/dist/commands/issue-spill-main.js +149 -144
  499. package/dist/commands/issue-state-main.js +36 -31
  500. package/dist/commands/issue-tick-cli.js +37 -31
  501. package/dist/commands/josh-completion.js +21 -24
  502. package/dist/commands/lane-adopt-cli.js +53 -55
  503. package/dist/commands/lane-breakdown-cli.js +193 -172
  504. package/dist/commands/lane-cli.js +199 -180
  505. package/dist/commands/lane-launch-main.js +106 -56
  506. package/dist/commands/lane-limit-cli.js +119 -116
  507. package/dist/commands/lane-measure-cli.js +408 -245
  508. package/dist/commands/lane-pause-cli.js +51 -54
  509. package/dist/commands/lane-plan-cli.js +148 -147
  510. package/dist/commands/lane-resolve-cli.js +48 -50
  511. package/dist/commands/lane-restart-cli.js +185 -168
  512. package/dist/commands/lane-why-cli.js +121 -122
  513. package/dist/commands/lane-withdraw-cli.js +84 -86
  514. package/dist/commands/latest-corepack.js +3 -2
  515. package/dist/commands/latest-if-required-cli.js +12 -15
  516. package/dist/commands/latest-lane-guard-main.js +2 -3
  517. package/dist/commands/latest-scope-main.js +5 -7
  518. package/dist/commands/latest-update.js +3 -2
  519. package/dist/commands/lines-command.js +8 -10
  520. package/dist/commands/lint-parallel-main.js +65 -67
  521. package/dist/commands/lint-related.js +149 -133
  522. package/dist/commands/lint-rule.js +64 -66
  523. package/dist/commands/lockfile-policy.js +29 -32
  524. package/dist/commands/main-merge-main.js +23 -25
  525. package/dist/commands/main-sync-main.js +23 -24
  526. package/dist/commands/managed-config-scope-cli.js +11 -10
  527. package/dist/commands/measure-rerun-cli.js +31 -26
  528. package/dist/commands/metrics-command.js +97 -100
  529. package/dist/commands/observation-record-cli.js +24 -14
  530. package/dist/commands/observations-flush-cli.js +50 -52
  531. package/dist/commands/overrides-check.js +1 -1
  532. package/dist/commands/package-scout-cli.js +70 -73
  533. package/dist/commands/pin-verify-cli.js +21 -2
  534. package/dist/commands/plan-consumers-main.js +3 -4
  535. package/dist/commands/plan-scaffold-cli.js +145 -146
  536. package/dist/commands/pr-classification-main.js +22 -3
  537. package/dist/commands/pre-commit-lint.js +30 -34
  538. package/dist/commands/pre-commit-type-check.js +55 -55
  539. package/dist/commands/pre-push-unit.js +69 -70
  540. package/dist/commands/pretool-guard-cli.js +111 -113
  541. package/dist/commands/prevent-main-commit.js +2 -3
  542. package/dist/commands/project-profile-cli.js +24 -9
  543. package/dist/commands/propagate.js +31 -23
  544. package/dist/commands/prose-stale-cli.js +48 -42
  545. package/dist/commands/publishable-range-check.js +3 -3
  546. package/dist/commands/read-set-cli.js +58 -61
  547. package/dist/commands/refactor-scan-cli.js +8 -9
  548. package/dist/commands/release-cli.js +57 -57
  549. package/dist/commands/release-scope-main.js +41 -36
  550. package/dist/commands/rename-cli.js +64 -36
  551. package/dist/commands/repo-party-cli.js +3 -4
  552. package/dist/commands/report-template-cli.js +4 -5
  553. package/dist/commands/reserved-run.js +17 -20
  554. package/dist/commands/retrospective-cli.js +126 -127
  555. package/dist/commands/review-attest-cli.js +28 -20
  556. package/dist/commands/review-brief-main.js +184 -167
  557. package/dist/commands/review-findings-cli.js +23 -13
  558. package/dist/commands/review-pair-cli.js +180 -156
  559. package/dist/commands/review-record-main.js +171 -147
  560. package/dist/commands/review-round2-cli.js +89 -91
  561. package/dist/commands/review-stops-cli.js +51 -54
  562. package/dist/commands/review-submit-cli.js +184 -167
  563. package/dist/commands/rule-list.js +78 -80
  564. package/dist/commands/rule-value-cli.js +115 -116
  565. package/dist/commands/ruleset-check-cli.js +23 -6
  566. package/dist/commands/run-add-cli.js +115 -75
  567. package/dist/commands/run-board-main.js +173 -169
  568. package/dist/commands/run-carry-cli.js +182 -174
  569. package/dist/commands/run-chain-cli.js +184 -160
  570. package/dist/commands/run-cut-cli.js +206 -168
  571. package/dist/commands/run-ending-cli.js +51 -54
  572. package/dist/commands/run-entry-cli.js +230 -283
  573. package/dist/commands/run-event-cli.js +18 -21
  574. package/dist/commands/run-handoff-cli.js +75 -78
  575. package/dist/commands/run-handoff-lanes-cli.js +48 -51
  576. package/dist/commands/run-hold-main.js +105 -107
  577. package/dist/commands/run-liveness-cli.js +47 -49
  578. package/dist/commands/run-merge-main.js +159 -151
  579. package/dist/commands/run-next-cli.js +128 -129
  580. package/dist/commands/run-park-cli.js +137 -140
  581. package/dist/commands/run-pause-cli.js +190 -186
  582. package/dist/commands/run-pickup-cli.js +49 -52
  583. package/dist/commands/run-prep-main.js +124 -125
  584. package/dist/commands/run-prime-cli.js +175 -147
  585. package/dist/commands/run-progress-main.js +149 -146
  586. package/dist/commands/run-report-cli.js +60 -60
  587. package/dist/commands/run-review-cli.js +229 -214
  588. package/dist/commands/run-ship-cli.js +258 -252
  589. package/dist/commands/run-ship-evidence-cli.js +71 -72
  590. package/dist/commands/run-ship-lap-W66LTXJJ.js +28 -0
  591. package/dist/commands/run-ship-wait-main.js +83 -85
  592. package/dist/commands/run-split-cli.js +176 -172
  593. package/dist/commands/run-stale-main.js +72 -75
  594. package/dist/commands/run-status-cli.js +44 -44
  595. package/dist/commands/run-step-cli.js +213 -211
  596. package/dist/commands/run-tail-cli.js +23 -18
  597. package/dist/commands/run-tidy-main.js +67 -69
  598. package/dist/commands/run-wake-main.js +206 -187
  599. package/dist/commands/run-watcher-guard-cli.js +63 -66
  600. package/dist/commands/security-audit-main.js +21 -24
  601. package/dist/commands/security-audit-provision-main.js +9 -11
  602. package/dist/commands/selfcheck-cli.js +63 -57
  603. package/dist/commands/session-language-main.js +70 -73
  604. package/dist/commands/sonar-hotspots-cli.js +9 -8
  605. package/dist/commands/sonar-new-code-cli.js +3 -4
  606. package/dist/commands/split-assess-cli.js +55 -58
  607. package/dist/commands/split-child-recover-cli.js +38 -39
  608. package/dist/commands/start.js +64 -64
  609. package/dist/commands/stash-pop-main.js +4 -5
  610. package/dist/commands/stash-push-main.js +7 -9
  611. package/dist/commands/stop-guard.js +180 -176
  612. package/dist/commands/sync-main.js +30 -15
  613. package/dist/commands/telegram-test-main.js +29 -22
  614. package/dist/commands/test-declared.js +29 -15
  615. package/dist/commands/test-e2e-guard.js +54 -54
  616. package/dist/commands/test-pinned-main.js +57 -56
  617. package/dist/commands/test-reach-cli.js +40 -32
  618. package/dist/commands/test-red-main.js +12 -14
  619. package/dist/commands/test-related-XBDH2IOH.js +113 -0
  620. package/dist/commands/test-related-main.js +89 -89
  621. package/dist/commands/test-unit-guard-main.js +37 -37
  622. package/dist/commands/time-cli.js +54 -57
  623. package/dist/commands/time-density-cli.js +26 -29
  624. package/dist/commands/tree-status-cli.js +6 -8
  625. package/dist/commands/type-check-command.js +26 -11
  626. package/dist/commands/ui-routes-cli.js +5 -6
  627. package/dist/commands/ui-shot-cli.js +1 -1
  628. package/dist/commands/uninstall.js +44 -43
  629. package/dist/commands/unused-members-KVKZDTXD.js +329 -0
  630. package/dist/commands/unused-members-cli.js +27 -12
  631. package/dist/commands/upstream-interrupt-main.js +159 -151
  632. package/dist/commands/verification-gate.js +85 -86
  633. package/dist/commands/version-check.js +25 -8
  634. package/dist/hooks/chunk-3SA3FIQC.js +6869 -0
  635. package/dist/hooks/chunk-46PTTMGE.js +1625 -0
  636. package/dist/hooks/chunk-5NIBRHWG.js +77 -0
  637. package/dist/hooks/chunk-76QKN2K3.js +258 -0
  638. package/dist/hooks/chunk-CHEKMGFP.js +321 -0
  639. package/dist/hooks/chunk-DCILEVDR.js +5173 -0
  640. package/dist/hooks/chunk-HVNGIM5W.js +5092 -0
  641. package/dist/hooks/chunk-L6IZZ2IL.js +11219 -0
  642. package/dist/hooks/chunk-UZXMFOVK.js +9170 -0
  643. package/dist/hooks/chunk-WCJ2GWYJ.js +1381 -0
  644. package/dist/hooks/chunk-YRKS5ZKE.js +1915 -0
  645. package/dist/hooks/codex-hook-adapter.js +11 -12
  646. package/dist/hooks/daemon.js +2140 -1387
  647. package/dist/hooks/format-edited.js +6 -6
  648. package/dist/hooks/inputs.json +543 -518
  649. package/dist/hooks/pretool-guard.js +8 -8
  650. package/dist/hooks/run-ship-lap-P5555IG7.js +8 -0
  651. package/dist/hooks/session-lang.js +9 -7
  652. package/dist/hooks/stop-guard.js +970 -668
  653. package/dist/inputs.json +77 -68
  654. package/dist/josh.js +1029 -577
  655. package/dist/registry-migrate.mjs +33938 -0
  656. package/dist/version/index.js +4251 -175
  657. package/package.json +4 -1
  658. package/prompts/collaboration-workflow/principles.md +4 -1
  659. package/prompts/collaboration-workflow/rule-delivery.md +1 -1
  660. package/scripts/agent/codex-launch-identity.ts +70 -0
  661. package/scripts/auto-ok/auto-ok-cli.ts +2 -0
  662. package/scripts/auto-ok/auto-ok-judge-write.ts +2 -0
  663. package/scripts/auto-ok/auto-ok-judge.ts +3 -1
  664. package/scripts/backlog/backlog-arrival.ts +1 -1
  665. package/scripts/backlog/backlog-budget.ts +5 -2
  666. package/scripts/backlog/backlog-defect-priority.ts +1 -1
  667. package/scripts/backlog/backlog-dispatch-bound.ts +17 -0
  668. package/scripts/backlog/backlog-drain-flush.ts +38 -3
  669. package/scripts/backlog/backlog-drive-cli.ts +1 -1
  670. package/scripts/backlog/backlog-drive-hold.ts +28 -5
  671. package/scripts/backlog/backlog-drive-launch.ts +37 -15
  672. package/scripts/backlog/backlog-drive-listing.ts +39 -23
  673. package/scripts/backlog/backlog-drive-retrospective-unit.ts +3 -2
  674. package/scripts/backlog/backlog-drive-split-unit.ts +1 -0
  675. package/scripts/backlog/backlog-hold-codes.ts +7 -0
  676. package/scripts/backlog/backlog-hold-text.ts +14 -1
  677. package/scripts/backlog/backlog-measure-close.ts +6 -0
  678. package/scripts/backlog/backlog-next-shared.ts +20 -2
  679. package/scripts/backlog/backlog-next.ts +24 -3
  680. package/scripts/backlog/backlog-offer-cli.ts +69 -16
  681. package/scripts/build/build-migration.ts +25 -0
  682. package/scripts/build/build.ts +2 -0
  683. package/scripts/epic/epic-classify.ts +6 -1
  684. package/scripts/epic/epic-live.ts +46 -0
  685. package/scripts/followup/followup-failed-tests.ts +71 -10
  686. package/scripts/followup/followup-job-rerun.ts +2 -2
  687. package/scripts/followup/git-followup-finish.ts +16 -1
  688. package/scripts/gate/change-scope-action.integration.test.ts +88 -0
  689. package/scripts/gate/change-scope-action.ts +2 -0
  690. package/scripts/gate/check-related-order.ts +6 -7
  691. package/scripts/gate/check-related.ts +18 -8
  692. package/scripts/gate/core-admission.ts +17 -30
  693. package/scripts/gate/core-budget-poll.ts +183 -0
  694. package/scripts/gate/core-budget-timing.ts +1 -1
  695. package/scripts/gate/core-budget.ts +24 -112
  696. package/scripts/gate/core-wait-record.ts +52 -7
  697. package/scripts/gate/machine-capacity.ts +6 -2
  698. package/scripts/gate/metrics-totals.ts +11 -0
  699. package/scripts/gate/path-glob.test.ts +18 -0
  700. package/scripts/gate/toolchain-inputs.consumer.test.ts +36 -0
  701. package/scripts/gate/verification-inputs.ts +2 -1
  702. package/scripts/gh/fix-gh-packages-logic.ts +22 -15
  703. package/scripts/gh/gh-request-tally.ts +4 -0
  704. package/scripts/hooks/bash-revert.ts +79 -31
  705. package/scripts/hooks/format-edited-file.ts +6 -8
  706. package/scripts/hooks/implementation-shell.ts +3 -2
  707. package/scripts/init/distributed-paths.ts +18 -5
  708. package/scripts/init/init-actions.ts +16 -1
  709. package/scripts/init/init-bootstrap.ts +2 -0
  710. package/scripts/init/init-logic.ts +40 -8
  711. package/scripts/init/init.ts +11 -3
  712. package/scripts/issue/defect-rate-cli.ts +19 -13
  713. package/scripts/issue/issue-file-batch.ts +7 -3
  714. package/scripts/issue/issue-file-cli.ts +19 -6
  715. package/scripts/issue/issue-file-main.ts +6 -1
  716. package/scripts/issue/issue-file-pass.ts +17 -0
  717. package/scripts/issue/issue-file.ts +3 -0
  718. package/scripts/issue/issue-not-before.ts +9 -2
  719. package/scripts/issue/issue-observation-gate.ts +141 -0
  720. package/scripts/issue/issue-observation-prime.ts +83 -0
  721. package/scripts/issue/issue-publication-state.ts +61 -0
  722. package/scripts/issue/issue-publication.ts +144 -0
  723. package/scripts/issue/issue-sample-prime.ts +2 -0
  724. package/scripts/issue/issue-search-count.ts +26 -0
  725. package/scripts/issue/issue-search.ts +128 -3
  726. package/scripts/issue/issue-spill-cli.ts +4 -0
  727. package/scripts/issue/upstream-interrupt-cli.ts +21 -5
  728. package/scripts/josh/josh-commands-ai.ts +1 -1
  729. package/scripts/josh/josh-commands-development.ts +1 -1
  730. package/scripts/josh/josh-commands-issue-write.ts +9 -0
  731. package/scripts/josh/josh-commands-run.ts +6 -1
  732. package/scripts/josh/josh-commands-ship.ts +5 -5
  733. package/scripts/josh/josh-run.ts +5 -2
  734. package/scripts/josh/shared-cache.ts +16 -1
  735. package/scripts/lane/lane-await.ts +15 -0
  736. package/scripts/lane/lane-cli.ts +2 -0
  737. package/scripts/lane/lane-dispatch-dependency.ts +102 -0
  738. package/scripts/lane/lane-dispatch-wait-stats.ts +239 -0
  739. package/scripts/lane/lane-dispatch.ts +44 -5
  740. package/scripts/lane/lane-early-push-count.ts +21 -0
  741. package/scripts/lane/lane-install.ts +15 -5
  742. package/scripts/lane/lane-launch-cli.ts +35 -14
  743. package/scripts/lane/lane-ledger-kind.ts +2 -0
  744. package/scripts/lane/lane-ledger-schema-ship.ts +5 -1
  745. package/scripts/lane/lane-ledger-schema.ts +15 -1
  746. package/scripts/lane/lane-ledger-write.ts +4 -1
  747. package/scripts/lane/lane-relaunch.ts +25 -2
  748. package/scripts/lane/lane-state-record.ts +2 -0
  749. package/scripts/lane/lane-state.ts +8 -1
  750. package/scripts/lane/lane-stats-tables.ts +2 -0
  751. package/scripts/lane/openai-lane-supervisor.ts +16 -1
  752. package/scripts/lib/inherited-scope.ts +48 -0
  753. package/scripts/lint/format-steps.ts +93 -0
  754. package/scripts/lint/format.ts +6 -49
  755. package/scripts/lint/lint-related-fix.ts +35 -0
  756. package/scripts/lint/lint-related.ts +22 -35
  757. package/scripts/propagate/propagate-steps.ts +9 -4
  758. package/scripts/registry-migration/migrate-cli.ts +50 -0
  759. package/scripts/registry-migration/migrate-files.ts +154 -0
  760. package/scripts/registry-migration/migrate-lock.ts +147 -0
  761. package/scripts/registry-migration/migrate.ts +235 -0
  762. package/scripts/registry-migration/npm-acquisition.ts +118 -0
  763. package/scripts/review/review-record-cli.ts +27 -13
  764. package/scripts/review/review-record-pinned.ts +15 -6
  765. package/scripts/run/add/run-add-cli.ts +21 -3
  766. package/scripts/run/add/run-add.ts +26 -9
  767. package/scripts/run/board/run-board-layout.ts +11 -6
  768. package/scripts/run/board/run-board-read.ts +29 -69
  769. package/scripts/run/board/run-board-reason.ts +12 -0
  770. package/scripts/run/board/run-board-render-lanes.ts +26 -9
  771. package/scripts/run/board/run-board-render-lead.ts +9 -0
  772. package/scripts/run/board/run-board-retry-wait.ts +35 -0
  773. package/scripts/run/board/run-board-root-layout.ts +69 -0
  774. package/scripts/run/board/run-board-seat.ts +9 -2
  775. package/scripts/run/board/run-board-setup.ts +6 -4
  776. package/scripts/run/board/run-board-single.ts +69 -4
  777. package/scripts/run/board/run-board-span-read.ts +85 -0
  778. package/scripts/run/board/run-board-tick.ts +12 -4
  779. package/scripts/run/carry/run-carry-reclaim.ts +12 -2
  780. package/scripts/run/carry/run-carry-session.ts +48 -0
  781. package/scripts/run/carry/run-carry.ts +21 -14
  782. package/scripts/run/cut/run-cut-resume.ts +15 -3
  783. package/scripts/run/cut/run-cut.ts +1 -1
  784. package/scripts/run/detached-launch.ts +14 -5
  785. package/scripts/run/early-push-record.ts +6 -2
  786. package/scripts/run/event/run-event-setup.ts +2 -0
  787. package/scripts/run/event/run-event-stream-emit.ts +27 -7
  788. package/scripts/run/hold/run-hold-cli.ts +40 -5
  789. package/scripts/run/hold/run-hold-ended.ts +50 -0
  790. package/scripts/run/merge/run-merge-cut-release.ts +17 -0
  791. package/scripts/run/merge/run-merge-human-review.ts +6 -0
  792. package/scripts/run/merge/run-merge-steps.ts +4 -57
  793. package/scripts/run/merge/run-merge-waits.ts +54 -0
  794. package/scripts/run/prime/run-prime-cli.ts +16 -2
  795. package/scripts/run/review/run-review-cli.ts +5 -7
  796. package/scripts/run/review/run-review-early-push.ts +19 -8
  797. package/scripts/run/review/run-review-join-read.ts +33 -6
  798. package/scripts/run/review/run-review-pinned-remaining.ts +124 -0
  799. package/scripts/run/review/run-review-pinned-steps.ts +7 -1
  800. package/scripts/run/run-halfrun-resume.ts +49 -6
  801. package/scripts/run/run-headless.ts +3 -0
  802. package/scripts/run/run-pr-return.ts +14 -5
  803. package/scripts/run/run-repair-attempt.ts +219 -0
  804. package/scripts/run/ship/run-ship-lap.ts +5 -17
  805. package/scripts/run/ship/run-ship-pre-detach-pinned.ts +4 -13
  806. package/scripts/run/ship/run-ship-scoped.ts +66 -30
  807. package/scripts/run/startup/run-startup-schema.ts +31 -0
  808. package/scripts/run/startup/run-startup-store.ts +130 -0
  809. package/scripts/run/startup/run-startup.ts +119 -0
  810. package/scripts/run/wake/run-wake-codex.ts +144 -0
  811. package/scripts/run/wake/run-wake-driver.ts +32 -7
  812. package/scripts/run/wake/run-wake-handoff.ts +9 -8
  813. package/scripts/run/wake/run-wake-loop.ts +23 -3
  814. package/scripts/run/wake/run-wake-ports.ts +17 -3
  815. package/scripts/run/wake/run-wake-takeover.ts +6 -3
  816. package/scripts/run/wake/run-wake-window.ts +4 -1
  817. package/scripts/run/wake/run-wake.ts +5 -0
  818. package/scripts/sync/sync-ai-files.ts +17 -0
  819. package/scripts/sync/sync-configs.ts +11 -1
  820. package/scripts/sync/sync.ts +5 -1
  821. package/scripts/test/test-pinned-cache-logic.ts +13 -7
  822. package/scripts/test/test-pinned-cache.ts +33 -11
  823. package/scripts/test/test-related-cap.ts +7 -3
  824. package/scripts/test/test-related-imports.ts +92 -0
  825. package/scripts/test/test-runner-config.ts +19 -0
  826. package/scripts/test/vitest-failure-summary.ts +7 -0
  827. package/scripts/version/npm-registry.ts +45 -7
  828. package/scripts/version/upgrade-shell-command.ts +34 -2
  829. package/templates/workflows/ci.yml +0 -15
  830. package/templates/workflows/github-release.yml +0 -5
  831. package/dist/commands/chunk-23GH6B3D.js +0 -333
  832. package/dist/commands/chunk-24OATKOF.js +0 -7534
  833. package/dist/commands/chunk-24ZDAWML.js +0 -48
  834. package/dist/commands/chunk-2BB5ZR2F.js +0 -128
  835. package/dist/commands/chunk-2BJJUTZA.js +0 -59
  836. package/dist/commands/chunk-2CXT6MBR.js +0 -51
  837. package/dist/commands/chunk-2DJLAUYB.js +0 -109
  838. package/dist/commands/chunk-2EZTYLO4.js +0 -179
  839. package/dist/commands/chunk-2FJJYCBD.js +0 -149
  840. package/dist/commands/chunk-2PHOLX62.js +0 -43
  841. package/dist/commands/chunk-2QM72JCJ.js +0 -338
  842. package/dist/commands/chunk-2VRITY55.js +0 -41
  843. package/dist/commands/chunk-2XAH3MHV.js +0 -23
  844. package/dist/commands/chunk-34KZDKQJ.js +0 -304
  845. package/dist/commands/chunk-352KLSFX.js +0 -67
  846. package/dist/commands/chunk-36LOGVJ7.js +0 -38
  847. package/dist/commands/chunk-3AEDZZNL.js +0 -223
  848. package/dist/commands/chunk-3B2HEFNO.js +0 -51
  849. package/dist/commands/chunk-3PEXBHRN.js +0 -33
  850. package/dist/commands/chunk-3Z425MM3.js +0 -61
  851. package/dist/commands/chunk-3ZOX4G4U.js +0 -88
  852. package/dist/commands/chunk-452HWOJ7.js +0 -395
  853. package/dist/commands/chunk-475EFIJV.js +0 -178
  854. package/dist/commands/chunk-47UZB54M.js +0 -73
  855. package/dist/commands/chunk-4DN4XVPL.js +0 -716
  856. package/dist/commands/chunk-4DVM57T7.js +0 -86
  857. package/dist/commands/chunk-4EADHJVC.js +0 -247
  858. package/dist/commands/chunk-4HERA2GY.js +0 -95
  859. package/dist/commands/chunk-4JI35CVO.js +0 -70
  860. package/dist/commands/chunk-4L4LNWZ7.js +0 -143
  861. package/dist/commands/chunk-4N32QKJZ.js +0 -170
  862. package/dist/commands/chunk-4NRSFLG7.js +0 -185
  863. package/dist/commands/chunk-4OKRPAUT.js +0 -98
  864. package/dist/commands/chunk-4PUKDAXL.js +0 -42
  865. package/dist/commands/chunk-4Q64PG46.js +0 -478
  866. package/dist/commands/chunk-4UDTQVDD.js +0 -278
  867. package/dist/commands/chunk-4WR2LEZL.js +0 -123
  868. package/dist/commands/chunk-4ZJOC6OK.js +0 -298
  869. package/dist/commands/chunk-4ZQM4I7R.js +0 -533
  870. package/dist/commands/chunk-54X37JEJ.js +0 -170
  871. package/dist/commands/chunk-56KW5EOK.js +0 -85
  872. package/dist/commands/chunk-5CG3XU3O.js +0 -74
  873. package/dist/commands/chunk-5ESZLHDZ.js +0 -514
  874. package/dist/commands/chunk-5FBRMARM.js +0 -578
  875. package/dist/commands/chunk-5RG4S66L.js +0 -47
  876. package/dist/commands/chunk-5UJGACVN.js +0 -137
  877. package/dist/commands/chunk-5Y7B7FDL.js +0 -44
  878. package/dist/commands/chunk-5Z6E5ZUV.js +0 -89
  879. package/dist/commands/chunk-5ZNUH4LV.js +0 -1722
  880. package/dist/commands/chunk-5ZTQX7OS.js +0 -125
  881. package/dist/commands/chunk-66NX6EXR.js +0 -29
  882. package/dist/commands/chunk-66TGK5XL.js +0 -84
  883. package/dist/commands/chunk-6CFHLMKM.js +0 -555
  884. package/dist/commands/chunk-6DDK5XWK.js +0 -74
  885. package/dist/commands/chunk-6GQX752S.js +0 -145
  886. package/dist/commands/chunk-6HRRZANN.js +0 -55
  887. package/dist/commands/chunk-6MAZ55GF.js +0 -1241
  888. package/dist/commands/chunk-6OP63TBT.js +0 -78
  889. package/dist/commands/chunk-6Q3XUCLM.js +0 -204
  890. package/dist/commands/chunk-6RUWU2SB.js +0 -45
  891. package/dist/commands/chunk-6UCWAFQY.js +0 -245
  892. package/dist/commands/chunk-6WKJ3GDA.js +0 -408
  893. package/dist/commands/chunk-6YURRFRU.js +0 -461
  894. package/dist/commands/chunk-6YVURZAJ.js +0 -350
  895. package/dist/commands/chunk-6Z4YZG7P.js +0 -169
  896. package/dist/commands/chunk-77BIN247.js +0 -122
  897. package/dist/commands/chunk-7ABHNNY3.js +0 -529
  898. package/dist/commands/chunk-7C7FOKJK.js +0 -115
  899. package/dist/commands/chunk-7HAGC6SW.js +0 -1062
  900. package/dist/commands/chunk-7KKUFLH5.js +0 -56
  901. package/dist/commands/chunk-7LJQMM2K.js +0 -102
  902. package/dist/commands/chunk-7MJYLUF4.js +0 -99
  903. package/dist/commands/chunk-7NHZCI5Y.js +0 -704
  904. package/dist/commands/chunk-7OQ56DVW.js +0 -239
  905. package/dist/commands/chunk-7VWPGTZO.js +0 -260
  906. package/dist/commands/chunk-7YZXS3AK.js +0 -30
  907. package/dist/commands/chunk-A4HOQKOG.js +0 -85
  908. package/dist/commands/chunk-A6T2N7VC.js +0 -159
  909. package/dist/commands/chunk-AAUDI7WJ.js +0 -250
  910. package/dist/commands/chunk-AC26ZUG5.js +0 -259
  911. package/dist/commands/chunk-ACZ52JPI.js +0 -140
  912. package/dist/commands/chunk-AJ65WNJB.js +0 -230
  913. package/dist/commands/chunk-AK7SEO4Y.js +0 -177
  914. package/dist/commands/chunk-AKK56GNX.js +0 -205
  915. package/dist/commands/chunk-AKQYYHP2.js +0 -461
  916. package/dist/commands/chunk-ALDAS2WG.js +0 -137
  917. package/dist/commands/chunk-ANUTT56I.js +0 -85
  918. package/dist/commands/chunk-AVVMDVGO.js +0 -68
  919. package/dist/commands/chunk-B3M5WSGN.js +0 -72
  920. package/dist/commands/chunk-B7ZNIEDV.js +0 -351
  921. package/dist/commands/chunk-BCUDQWYK.js +0 -77
  922. package/dist/commands/chunk-BF6YX4HE.js +0 -70
  923. package/dist/commands/chunk-BHRS7HAM.js +0 -272
  924. package/dist/commands/chunk-BIKGPT52.js +0 -29
  925. package/dist/commands/chunk-BJA5U4Q7.js +0 -75
  926. package/dist/commands/chunk-BMKWSWWE.js +0 -126
  927. package/dist/commands/chunk-BMTYUJNT.js +0 -59
  928. package/dist/commands/chunk-BRHPRDDV.js +0 -127
  929. package/dist/commands/chunk-BRUBX64M.js +0 -33
  930. package/dist/commands/chunk-BTZJDHQT.js +0 -46
  931. package/dist/commands/chunk-BYFC6MD2.js +0 -72
  932. package/dist/commands/chunk-BYGJ3BCJ.js +0 -803
  933. package/dist/commands/chunk-C2SEDMZ3.js +0 -238
  934. package/dist/commands/chunk-C54QXJD6.js +0 -4208
  935. package/dist/commands/chunk-C6QSVO5K.js +0 -56
  936. package/dist/commands/chunk-CBAKBWSZ.js +0 -332
  937. package/dist/commands/chunk-CFHRNTE5.js +0 -326
  938. package/dist/commands/chunk-CGLLAEKZ.js +0 -110
  939. package/dist/commands/chunk-CHKYPF5O.js +0 -82
  940. package/dist/commands/chunk-CJBW6BWG.js +0 -800
  941. package/dist/commands/chunk-CJKPF5DJ.js +0 -156
  942. package/dist/commands/chunk-CKUKK7JG.js +0 -252
  943. package/dist/commands/chunk-CMHGDCGN.js +0 -263
  944. package/dist/commands/chunk-CNGTHSUS.js +0 -750
  945. package/dist/commands/chunk-CP2J4RV2.js +0 -3987
  946. package/dist/commands/chunk-CQZI7RIK.js +0 -72
  947. package/dist/commands/chunk-CWCKCZS6.js +0 -188
  948. package/dist/commands/chunk-D5HIP4HT.js +0 -289
  949. package/dist/commands/chunk-D6D6WQR6.js +0 -125
  950. package/dist/commands/chunk-D7JRJI44.js +0 -297
  951. package/dist/commands/chunk-D7OAU32Z.js +0 -119
  952. package/dist/commands/chunk-DAAX7XDS.js +0 -1208
  953. package/dist/commands/chunk-DBKTFB5V.js +0 -18
  954. package/dist/commands/chunk-DEZF7QZZ.js +0 -184
  955. package/dist/commands/chunk-DMD74E3F.js +0 -39
  956. package/dist/commands/chunk-DPJVKTO4.js +0 -41
  957. package/dist/commands/chunk-DXJQHJQ4.js +0 -73
  958. package/dist/commands/chunk-DYZOOWVW.js +0 -912
  959. package/dist/commands/chunk-EBI2BAKQ.js +0 -47
  960. package/dist/commands/chunk-EDKOSZ3K.js +0 -88
  961. package/dist/commands/chunk-EFDVE5P5.js +0 -121
  962. package/dist/commands/chunk-EGIHAEMT.js +0 -72
  963. package/dist/commands/chunk-EKLU6QR7.js +0 -507
  964. package/dist/commands/chunk-ELY76WAR.js +0 -65
  965. package/dist/commands/chunk-EM3HAZF6.js +0 -52
  966. package/dist/commands/chunk-EMTZAGT5.js +0 -51
  967. package/dist/commands/chunk-ENKFCOVY.js +0 -472
  968. package/dist/commands/chunk-ERG4QRNG.js +0 -224
  969. package/dist/commands/chunk-EUGNQCYK.js +0 -139
  970. package/dist/commands/chunk-EW4NPUMQ.js +0 -363
  971. package/dist/commands/chunk-EWVR5AEX.js +0 -140
  972. package/dist/commands/chunk-EXDFKKMH.js +0 -113
  973. package/dist/commands/chunk-EXWB34R2.js +0 -238
  974. package/dist/commands/chunk-EYMPBHDN.js +0 -61
  975. package/dist/commands/chunk-EZ7IPKIH.js +0 -20
  976. package/dist/commands/chunk-EZSO25UZ.js +0 -80
  977. package/dist/commands/chunk-F6IQHZYY.js +0 -94
  978. package/dist/commands/chunk-FDS65XOJ.js +0 -212
  979. package/dist/commands/chunk-FFHEGWPK.js +0 -91
  980. package/dist/commands/chunk-FGL6DBZU.js +0 -71
  981. package/dist/commands/chunk-FHFWNNUC.js +0 -144
  982. package/dist/commands/chunk-FIUCHMCF.js +0 -32
  983. package/dist/commands/chunk-FJX7AENO.js +0 -74
  984. package/dist/commands/chunk-FKZ5E4JD.js +0 -97
  985. package/dist/commands/chunk-FMZWRDKH.js +0 -302
  986. package/dist/commands/chunk-FOKCRIAN.js +0 -67
  987. package/dist/commands/chunk-FQGWO2ZH.js +0 -43
  988. package/dist/commands/chunk-FROACLVU.js +0 -525
  989. package/dist/commands/chunk-FURNDIT3.js +0 -34
  990. package/dist/commands/chunk-FVDQNMP6.js +0 -93
  991. package/dist/commands/chunk-FVVZIJUC.js +0 -425
  992. package/dist/commands/chunk-FWU3H4TX.js +0 -17
  993. package/dist/commands/chunk-G3HBYHFA.js +0 -16
  994. package/dist/commands/chunk-G4E4M2P4.js +0 -299
  995. package/dist/commands/chunk-G5KSL2Q2.js +0 -151
  996. package/dist/commands/chunk-G6XC7V6Y.js +0 -58
  997. package/dist/commands/chunk-GCPP5XIG.js +0 -90
  998. package/dist/commands/chunk-GITT5A5A.js +0 -198
  999. package/dist/commands/chunk-GJYMI2CM.js +0 -48
  1000. package/dist/commands/chunk-GLC47H7I.js +0 -285
  1001. package/dist/commands/chunk-GUR54ELE.js +0 -328
  1002. package/dist/commands/chunk-GW4UWR3O.js +0 -126
  1003. package/dist/commands/chunk-GY4DMCKS.js +0 -306
  1004. package/dist/commands/chunk-H6JQRHDC.js +0 -80
  1005. package/dist/commands/chunk-HATKF6VX.js +0 -173
  1006. package/dist/commands/chunk-HG2NZQD5.js +0 -135
  1007. package/dist/commands/chunk-HH3CVIFU.js +0 -93
  1008. package/dist/commands/chunk-HHMMGDMP.js +0 -469
  1009. package/dist/commands/chunk-HI5WPM6C.js +0 -127
  1010. package/dist/commands/chunk-HQGNXR6I.js +0 -245
  1011. package/dist/commands/chunk-HTIDHEEN.js +0 -108
  1012. package/dist/commands/chunk-HVCQYZVD.js +0 -38
  1013. package/dist/commands/chunk-HWEZRNPL.js +0 -66
  1014. package/dist/commands/chunk-HX3FFIO5.js +0 -74
  1015. package/dist/commands/chunk-HXDTA5VU.js +0 -208
  1016. package/dist/commands/chunk-I2KCGKJI.js +0 -107
  1017. package/dist/commands/chunk-I63RNFFR.js +0 -213
  1018. package/dist/commands/chunk-IAD4WLLI.js +0 -98
  1019. package/dist/commands/chunk-IB5TT73I.js +0 -177
  1020. package/dist/commands/chunk-IBAYXCMU.js +0 -156
  1021. package/dist/commands/chunk-IGDJNXX2.js +0 -49
  1022. package/dist/commands/chunk-ILGPZ47M.js +0 -33
  1023. package/dist/commands/chunk-IYJEBWW5.js +0 -44
  1024. package/dist/commands/chunk-J22PSIXR.js +0 -418
  1025. package/dist/commands/chunk-J66YBAAM.js +0 -161
  1026. package/dist/commands/chunk-J6WKZRV2.js +0 -391
  1027. package/dist/commands/chunk-J7IO3AYH.js +0 -179
  1028. package/dist/commands/chunk-JAKC2BHX.js +0 -88
  1029. package/dist/commands/chunk-JCAQ7B6J.js +0 -124
  1030. package/dist/commands/chunk-JHN6RCE6.js +0 -123
  1031. package/dist/commands/chunk-JIGBNCDR.js +0 -88
  1032. package/dist/commands/chunk-JJHWTFWQ.js +0 -76
  1033. package/dist/commands/chunk-JJRKTWLK.js +0 -64
  1034. package/dist/commands/chunk-JKOGWGQM.js +0 -92
  1035. package/dist/commands/chunk-JM6EVOFN.js +0 -172
  1036. package/dist/commands/chunk-JQXPLMCO.js +0 -81
  1037. package/dist/commands/chunk-JV24VP2O.js +0 -81
  1038. package/dist/commands/chunk-JVKXJ763.js +0 -45
  1039. package/dist/commands/chunk-K275REYP.js +0 -37
  1040. package/dist/commands/chunk-K4G3HOKS.js +0 -105
  1041. package/dist/commands/chunk-K64EIHD2.js +0 -138
  1042. package/dist/commands/chunk-KB3OQWDT.js +0 -71
  1043. package/dist/commands/chunk-KCFOP5RI.js +0 -1310
  1044. package/dist/commands/chunk-KGE4AS2Y.js +0 -134
  1045. package/dist/commands/chunk-KIILCKQR.js +0 -220
  1046. package/dist/commands/chunk-KK2SL42W.js +0 -241
  1047. package/dist/commands/chunk-KKIMVXAP.js +0 -280
  1048. package/dist/commands/chunk-KODXWMBX.js +0 -77
  1049. package/dist/commands/chunk-KPSKWTOS.js +0 -208
  1050. package/dist/commands/chunk-KVHNQHX3.js +0 -100
  1051. package/dist/commands/chunk-KWYQR5MK.js +0 -269
  1052. package/dist/commands/chunk-KXHXMERX.js +0 -214
  1053. package/dist/commands/chunk-KZ5BBBMO.js +0 -271
  1054. package/dist/commands/chunk-KZ7HD37E.js +0 -121
  1055. package/dist/commands/chunk-KZSM5M5P.js +0 -89
  1056. package/dist/commands/chunk-KZZWPUJW.js +0 -25
  1057. package/dist/commands/chunk-L7DAL54N.js +0 -347
  1058. package/dist/commands/chunk-LAR76BFA.js +0 -114
  1059. package/dist/commands/chunk-LB557AHJ.js +0 -192
  1060. package/dist/commands/chunk-LJXKVLYI.js +0 -229
  1061. package/dist/commands/chunk-LOOFYHUM.js +0 -773
  1062. package/dist/commands/chunk-LQXFVZTS.js +0 -13
  1063. package/dist/commands/chunk-LT7QSHR4.js +0 -995
  1064. package/dist/commands/chunk-LUXWDMKI.js +0 -426
  1065. package/dist/commands/chunk-LWAXXZPS.js +0 -118
  1066. package/dist/commands/chunk-LX7TIEMI.js +0 -1612
  1067. package/dist/commands/chunk-LZ5QXE5N.js +0 -244
  1068. package/dist/commands/chunk-LZPPSOTP.js +0 -122
  1069. package/dist/commands/chunk-M4UV3BEV.js +0 -313
  1070. package/dist/commands/chunk-M6JDU5EK.js +0 -133
  1071. package/dist/commands/chunk-MDLOETXL.js +0 -211
  1072. package/dist/commands/chunk-MFBNNTBM.js +0 -44
  1073. package/dist/commands/chunk-MGF64OHV.js +0 -32
  1074. package/dist/commands/chunk-MI2OS6TL.js +0 -132
  1075. package/dist/commands/chunk-MLW4S35K.js +0 -389
  1076. package/dist/commands/chunk-MN425CU6.js +0 -63
  1077. package/dist/commands/chunk-MPGJ4ONJ.js +0 -634
  1078. package/dist/commands/chunk-MRORPFSO.js +0 -402
  1079. package/dist/commands/chunk-MUGTOJUL.js +0 -319
  1080. package/dist/commands/chunk-MVHPRYHE.js +0 -91
  1081. package/dist/commands/chunk-MWO6FOSZ.js +0 -393
  1082. package/dist/commands/chunk-MXC4IBZ7.js +0 -104
  1083. package/dist/commands/chunk-N7QTMTST.js +0 -210
  1084. package/dist/commands/chunk-NDBX7LSS.js +0 -32
  1085. package/dist/commands/chunk-NEGJ77RV.js +0 -173
  1086. package/dist/commands/chunk-NEGRE5VW.js +0 -101
  1087. package/dist/commands/chunk-NFPD2P3V.js +0 -53
  1088. package/dist/commands/chunk-NHIW7JE6.js +0 -335
  1089. package/dist/commands/chunk-NILSN7A4.js +0 -158
  1090. package/dist/commands/chunk-NOLFSPOB.js +0 -74
  1091. package/dist/commands/chunk-NSAVEXVR.js +0 -353
  1092. package/dist/commands/chunk-NT67QTZO.js +0 -65
  1093. package/dist/commands/chunk-NU7W6QGT.js +0 -155
  1094. package/dist/commands/chunk-NYWGJLBU.js +0 -19
  1095. package/dist/commands/chunk-OAAVY2JK.js +0 -49
  1096. package/dist/commands/chunk-OGS2DK7I.js +0 -47
  1097. package/dist/commands/chunk-OHNP3QL2.js +0 -186
  1098. package/dist/commands/chunk-OIPV3PWW.js +0 -870
  1099. package/dist/commands/chunk-OIX2363L.js +0 -16
  1100. package/dist/commands/chunk-OJ65BZBV.js +0 -646
  1101. package/dist/commands/chunk-OKZWEVR4.js +0 -352
  1102. package/dist/commands/chunk-OL6IF4JC.js +0 -20
  1103. package/dist/commands/chunk-OMPRILFH.js +0 -29
  1104. package/dist/commands/chunk-OOWGH2RG.js +0 -85
  1105. package/dist/commands/chunk-OP2RFVLS.js +0 -102
  1106. package/dist/commands/chunk-ORKVN2LO.js +0 -56
  1107. package/dist/commands/chunk-OSBWXZJ4.js +0 -492
  1108. package/dist/commands/chunk-OT3UMEWK.js +0 -47
  1109. package/dist/commands/chunk-OVWPZDWP.js +0 -64
  1110. package/dist/commands/chunk-OWYK2BEJ.js +0 -1222
  1111. package/dist/commands/chunk-OX3VQLV2.js +0 -488
  1112. package/dist/commands/chunk-OZJP77UM.js +0 -103
  1113. package/dist/commands/chunk-OZZWRJQI.js +0 -246
  1114. package/dist/commands/chunk-P3H3DKTE.js +0 -69
  1115. package/dist/commands/chunk-P4D5RESF.js +0 -88
  1116. package/dist/commands/chunk-P4KIQRSL.js +0 -119
  1117. package/dist/commands/chunk-P5SOYWH2.js +0 -37
  1118. package/dist/commands/chunk-P7FPXAHP.js +0 -29
  1119. package/dist/commands/chunk-PE7B7242.js +0 -84
  1120. package/dist/commands/chunk-PFO7EYAP.js +0 -45
  1121. package/dist/commands/chunk-PHLOTUB7.js +0 -366
  1122. package/dist/commands/chunk-PTNQCCIB.js +0 -41
  1123. package/dist/commands/chunk-PTZEFQUX.js +0 -211
  1124. package/dist/commands/chunk-Q5Q2QYVU.js +0 -112
  1125. package/dist/commands/chunk-Q7EEIOAD.js +0 -120
  1126. package/dist/commands/chunk-QABRNGQV.js +0 -88
  1127. package/dist/commands/chunk-QAHFPCFR.js +0 -50
  1128. package/dist/commands/chunk-QDFVVRQP.js +0 -92
  1129. package/dist/commands/chunk-QGAERR7D.js +0 -99
  1130. package/dist/commands/chunk-QHWJJ6X5.js +0 -53
  1131. package/dist/commands/chunk-QJRVDE7T.js +0 -307
  1132. package/dist/commands/chunk-QMDKDQKW.js +0 -114
  1133. package/dist/commands/chunk-QOSC5RKD.js +0 -18
  1134. package/dist/commands/chunk-QQ4CIYMF.js +0 -132
  1135. package/dist/commands/chunk-QV5FKMOU.js +0 -80
  1136. package/dist/commands/chunk-QWWTC3XR.js +0 -109
  1137. package/dist/commands/chunk-QXQ56E56.js +0 -27
  1138. package/dist/commands/chunk-R54Z2Z3X.js +0 -114
  1139. package/dist/commands/chunk-R6QE5VJG.js +0 -46
  1140. package/dist/commands/chunk-RG53UFNW.js +0 -418
  1141. package/dist/commands/chunk-RGGEQM6G.js +0 -140
  1142. package/dist/commands/chunk-RH6ZWJOA.js +0 -77
  1143. package/dist/commands/chunk-RHKCWJQX.js +0 -62
  1144. package/dist/commands/chunk-RKIAX4DZ.js +0 -191
  1145. package/dist/commands/chunk-RLBFEHHC.js +0 -300
  1146. package/dist/commands/chunk-RN2YDNLF.js +0 -229
  1147. package/dist/commands/chunk-RRAIRS2T.js +0 -54
  1148. package/dist/commands/chunk-RS764ZMU.js +0 -46
  1149. package/dist/commands/chunk-RUIBQMOV.js +0 -38
  1150. package/dist/commands/chunk-RUQY5TS3.js +0 -83
  1151. package/dist/commands/chunk-RVUJ6F5L.js +0 -181
  1152. package/dist/commands/chunk-RW64VHEB.js +0 -130
  1153. package/dist/commands/chunk-RXYMJPJB.js +0 -114
  1154. package/dist/commands/chunk-S4M6UWR2.js +0 -103
  1155. package/dist/commands/chunk-SASX3W2M.js +0 -99
  1156. package/dist/commands/chunk-SFNBUB6D.js +0 -110
  1157. package/dist/commands/chunk-SJ2ZN575.js +0 -90
  1158. package/dist/commands/chunk-SP7DKYGU.js +0 -1263
  1159. package/dist/commands/chunk-SSL6A3Y4.js +0 -165
  1160. package/dist/commands/chunk-SVAKCXZ7.js +0 -44
  1161. package/dist/commands/chunk-SYOXIKB7.js +0 -705
  1162. package/dist/commands/chunk-SZG5HDNP.js +0 -321
  1163. package/dist/commands/chunk-T25S4QHL.js +0 -52
  1164. package/dist/commands/chunk-T4F33UKZ.js +0 -114
  1165. package/dist/commands/chunk-T4UYEHWG.js +0 -50
  1166. package/dist/commands/chunk-TAEGXID2.js +0 -58
  1167. package/dist/commands/chunk-TCBUX52E.js +0 -701
  1168. package/dist/commands/chunk-TEPYEUYG.js +0 -585
  1169. package/dist/commands/chunk-TFLHYC2F.js +0 -141
  1170. package/dist/commands/chunk-TJKM56WJ.js +0 -109
  1171. package/dist/commands/chunk-TLAB552K.js +0 -445
  1172. package/dist/commands/chunk-TP6L4W3W.js +0 -82
  1173. package/dist/commands/chunk-TR7WWYD5.js +0 -60
  1174. package/dist/commands/chunk-TVZXG4Y4.js +0 -197
  1175. package/dist/commands/chunk-TYNH2R66.js +0 -1150
  1176. package/dist/commands/chunk-U3IVVR4W.js +0 -33
  1177. package/dist/commands/chunk-U5P6G3UV.js +0 -77
  1178. package/dist/commands/chunk-U7XU5RG3.js +0 -86
  1179. package/dist/commands/chunk-UKBBWMLE.js +0 -1189
  1180. package/dist/commands/chunk-ULVVGGTY.js +0 -64
  1181. package/dist/commands/chunk-UNMSZGSG.js +0 -269
  1182. package/dist/commands/chunk-URDT2O2K.js +0 -36
  1183. package/dist/commands/chunk-UTHUX7VU.js +0 -88
  1184. package/dist/commands/chunk-V4Z7G4UH.js +0 -73
  1185. package/dist/commands/chunk-V5FD7DVV.js +0 -48
  1186. package/dist/commands/chunk-VCPGFBMN.js +0 -655
  1187. package/dist/commands/chunk-VGPIQNDB.js +0 -24
  1188. package/dist/commands/chunk-VJE3RJAX.js +0 -23
  1189. package/dist/commands/chunk-VK6D5CWA.js +0 -161
  1190. package/dist/commands/chunk-VOF3N4WO.js +0 -114
  1191. package/dist/commands/chunk-VQVPAVQ3.js +0 -45
  1192. package/dist/commands/chunk-VV4TQYGD.js +0 -38
  1193. package/dist/commands/chunk-W3FX7FYN.js +0 -84
  1194. package/dist/commands/chunk-W7DRUOF7.js +0 -122
  1195. package/dist/commands/chunk-WAEN2RTT.js +0 -161
  1196. package/dist/commands/chunk-WCEUMOKK.js +0 -84
  1197. package/dist/commands/chunk-WJ4NEDNI.js +0 -288
  1198. package/dist/commands/chunk-WMMGXJXP.js +0 -92
  1199. package/dist/commands/chunk-WOFLW2LX.js +0 -26
  1200. package/dist/commands/chunk-WTH6NTXU.js +0 -128
  1201. package/dist/commands/chunk-WWVYEHQT.js +0 -272
  1202. package/dist/commands/chunk-X3TNPALI.js +0 -213
  1203. package/dist/commands/chunk-XC6GG5JR.js +0 -78
  1204. package/dist/commands/chunk-XDF25GSU.js +0 -536
  1205. package/dist/commands/chunk-XFPEUYDV.js +0 -67
  1206. package/dist/commands/chunk-XFWI6WHH.js +0 -60
  1207. package/dist/commands/chunk-XGMRAKSL.js +0 -85
  1208. package/dist/commands/chunk-XHGWMD3L.js +0 -104
  1209. package/dist/commands/chunk-XKSUBUIH.js +0 -116
  1210. package/dist/commands/chunk-XPBF5DG3.js +0 -419
  1211. package/dist/commands/chunk-XUMYPESL.js +0 -160
  1212. package/dist/commands/chunk-XXC32PVL.js +0 -541
  1213. package/dist/commands/chunk-XXN2EZBY.js +0 -133
  1214. package/dist/commands/chunk-XXNEY4B3.js +0 -110
  1215. package/dist/commands/chunk-Y27PTXXI.js +0 -258
  1216. package/dist/commands/chunk-Y4EBUI6M.js +0 -237
  1217. package/dist/commands/chunk-YAU3LYNF.js +0 -60
  1218. package/dist/commands/chunk-YDURQICF.js +0 -204
  1219. package/dist/commands/chunk-YGFOGA7C.js +0 -1153
  1220. package/dist/commands/chunk-YHJ2AJMA.js +0 -66
  1221. package/dist/commands/chunk-YIA6FC3K.js +0 -78
  1222. package/dist/commands/chunk-YM77CF4D.js +0 -183
  1223. package/dist/commands/chunk-YNPRJCEO.js +0 -81
  1224. package/dist/commands/chunk-YTBQAD5W.js +0 -170
  1225. package/dist/commands/chunk-YVH2OLDS.js +0 -104
  1226. package/dist/commands/chunk-ZAAHZY2A.js +0 -19
  1227. package/dist/commands/chunk-ZBZ5DDCH.js +0 -1866
  1228. package/dist/commands/chunk-ZLRUHSOP.js +0 -48
  1229. package/dist/commands/chunk-ZNR75OXP.js +0 -444
  1230. package/dist/commands/chunk-ZSOR4ISJ.js +0 -75
  1231. package/dist/commands/chunk-ZVAIIHBE.js +0 -63
  1232. package/dist/commands/chunk-ZYFHYQA7.js +0 -51
  1233. package/dist/commands/chunk-ZZFFSQF4.js +0 -218
  1234. package/dist/commands/chunk-ZZULXNC2.js +0 -47
  1235. package/dist/commands/chunk-ZZXO6TFH.js +0 -232
  1236. package/dist/commands/run-ship-lap-W5T2VHFC.js +0 -30
  1237. package/dist/commands/test-related-ZCNC46MS.js +0 -113
  1238. package/dist/commands/unused-members-STULPRBU.js +0 -331
  1239. package/dist/hooks/chunk-5CUXGQT6.js +0 -8353
  1240. package/dist/hooks/chunk-5R5YFQR5.js +0 -931
  1241. package/dist/hooks/chunk-6RLY27FT.js +0 -232
  1242. package/dist/hooks/chunk-6YGMIODI.js +0 -86
  1243. package/dist/hooks/chunk-AO4TOV4V.js +0 -5026
  1244. package/dist/hooks/chunk-FOW4B7OQ.js +0 -1795
  1245. package/dist/hooks/chunk-G5WSPYJ6.js +0 -5663
  1246. package/dist/hooks/chunk-HHIVWGHX.js +0 -6869
  1247. package/dist/hooks/chunk-IURJANNZ.js +0 -1082
  1248. package/dist/hooks/chunk-OV22V63P.js +0 -10980
  1249. package/dist/hooks/chunk-SXABK6UV.js +0 -321
  1250. package/dist/hooks/run-ship-lap-VCEOUHQI.js +0 -8
@@ -0,0 +1,1625 @@
1
+ import {
2
+ input_fingerprint,
3
+ lint_related_scope,
4
+ resolve_tsx_runner,
5
+ run_board_usage_rusage,
6
+ toolchain_inputs
7
+ } from "./chunk-WCJ2GWYJ.js";
8
+ import {
9
+ core_weights,
10
+ direct_launch,
11
+ pnpm_reach,
12
+ project_checks,
13
+ resolve_package_bin
14
+ } from "./chunk-L6IZZ2IL.js";
15
+ import {
16
+ ESLINT_EDIT_CACHE_FLAGS,
17
+ cost_blocks,
18
+ find_package_directory,
19
+ time_batch_guard,
20
+ time_hook_transcript,
21
+ time_round_trips,
22
+ time_spans,
23
+ transcript_tail
24
+ } from "./chunk-UZXMFOVK.js";
25
+ import {
26
+ file_reader
27
+ } from "./chunk-YRKS5ZKE.js";
28
+ import {
29
+ HOOK_PROCESS_TIMEOUT_MS,
30
+ LINT_TIMEOUT_MS,
31
+ SUITE_TIMEOUT_MS,
32
+ atomic_write,
33
+ execa,
34
+ external_exports,
35
+ git_common_directory,
36
+ git_spawn_sync,
37
+ json_value,
38
+ stamp_file
39
+ } from "./chunk-CY3ADSDR.js";
40
+
41
+ // scripts/time-runtime/time-density.ts
42
+ var MIN_ROUND_TRIPS = 10;
43
+ var NOTICE_INTERVAL_MS = 3e5;
44
+ var ONE_CALL = 1;
45
+ var NONE = 0;
46
+ function has_whole_tail(text) {
47
+ const last = text.split("\n").findLast((line) => line.trim() !== "");
48
+ return last !== void 0 && time_spans.parse_line(last) !== void 0;
49
+ }
50
+ function assistant_lines(text) {
51
+ return text.split("\n").map((line) => time_spans.parse_line(line)).filter((line) => line?.type === time_spans.ASSISTANT_TYPE);
52
+ }
53
+ function last_turn_calls(text) {
54
+ if (!has_whole_tail(text)) return NONE;
55
+ const lines = assistant_lines(text);
56
+ const message_id = lines.at(-1)?.message_id;
57
+ if (message_id === void 0 || message_id === time_spans.NO_MESSAGE_ID) return NONE;
58
+ return lines.filter((line) => line.message_id === message_id).flatMap((line) => line.blocks).filter((block) => block.type === cost_blocks.TOOL_USE_TYPE).length;
59
+ }
60
+ function read_window(text) {
61
+ const { spans } = time_spans.parse_timeline(text);
62
+ const round_trip_count = time_round_trips.count_round_trips(spans);
63
+ const call_count = time_round_trips.count_calls(spans);
64
+ return {
65
+ density: time_round_trips.per_round_trip(call_count, round_trip_count),
66
+ round_trip_count,
67
+ turn_calls: last_turn_calls(text)
68
+ };
69
+ }
70
+ function is_due(reading, since_last_ms) {
71
+ if (reading.round_trip_count < MIN_ROUND_TRIPS || reading.turn_calls !== ONE_CALL || !time_round_trips.is_below_floor(reading.density)) {
72
+ return false;
73
+ }
74
+ return since_last_ms >= NOTICE_INTERVAL_MS;
75
+ }
76
+ function format_notice(reading, candidates = "") {
77
+ const density = time_round_trips.format_density(reading.density);
78
+ const floor = time_round_trips.format_density(time_round_trips.CALLS_PER_ROUND_TRIP_FLOOR);
79
+ return `\u26A0 batching: ${density} calls per round trip over the last ${String(reading.round_trip_count)}, under the ${floor} floor, and this turn issued one call. Independent reads, greps, gh queries and edits go out together; the criterion is whether this call's input needs another call's result, not what kind of call it is \u2014 prompts/collaboration-workflow/turn-batching.md.${candidates}`;
80
+ }
81
+ var time_density = {
82
+ MIN_ROUND_TRIPS,
83
+ NOTICE_INTERVAL_MS,
84
+ format_notice,
85
+ is_due,
86
+ last_turn_calls,
87
+ read_window
88
+ };
89
+
90
+ // scripts/time-runtime/time-density-hook.ts
91
+ var NOTICE_PREFIX = "josh-density-notice-";
92
+ var NEVER_MS = 0;
93
+ var payload_schema = external_exports.object({
94
+ transcript_path: external_exports.string().min(1).optional(),
95
+ // **`nullish`, not `optional`.** A payload spelling the absent agent as `null` has to read as "no
96
+ // fork"; rejected, it would fail `safeParse` for the whole payload and silence the line for every
97
+ // edit of the main line — the opposite of this module's stated failure direction.
98
+ agent_id: external_exports.string().nullish()
99
+ });
100
+ var notice_schema = external_exports.object({ notified_at_ms: external_exports.number() });
101
+ var call_schema = external_exports.object({ tool_name: external_exports.string().min(1), tool_input: external_exports.unknown() });
102
+ function parse_transcript_path(raw_payload) {
103
+ const payload = json_value.parse_with(raw_payload, payload_schema);
104
+ if (payload?.transcript_path === void 0) return void 0;
105
+ return time_hook_transcript.transcript_of(payload.transcript_path, payload.agent_id);
106
+ }
107
+ function parse_call(raw_payload) {
108
+ const call = json_value.parse_with(raw_payload, call_schema);
109
+ if (call === void 0) return void 0;
110
+ return { name: call.tool_name, input: call.tool_input };
111
+ }
112
+ function notice_path(transcript_path) {
113
+ return stamp_file.stamp_path(NOTICE_PREFIX, transcript_path);
114
+ }
115
+ function last_notice_ms(source) {
116
+ const raw = stamp_file.read_stamp_text(source);
117
+ if (raw === void 0) return NEVER_MS;
118
+ return json_value.parse_with(raw, notice_schema)?.notified_at_ms ?? NEVER_MS;
119
+ }
120
+ function arm_throttle(target, now_ms) {
121
+ try {
122
+ stamp_file.write_stamp(target, { notified_at_ms: now_ms });
123
+ } catch {
124
+ }
125
+ }
126
+ function notice_for(raw_payload, now_ms) {
127
+ const transcript_path = parse_transcript_path(raw_payload);
128
+ if (transcript_path === void 0) return void 0;
129
+ const tail = transcript_tail.read_tail(transcript_path);
130
+ const reading = time_density.read_window(tail);
131
+ const target = notice_path(transcript_path);
132
+ if (!time_density.is_due(reading, now_ms - last_notice_ms(target))) return void 0;
133
+ const candidates = time_batch_guard.pairing_candidates(tail, parse_call(raw_payload));
134
+ if (candidates === "") return void 0;
135
+ arm_throttle(target, now_ms);
136
+ return time_density.format_notice(reading, candidates);
137
+ }
138
+ function density_notice(raw_payload, now_ms = Date.now()) {
139
+ try {
140
+ return notice_for(raw_payload, now_ms);
141
+ } catch {
142
+ return void 0;
143
+ }
144
+ }
145
+ var time_density_hook = {
146
+ density_notice,
147
+ notice_path,
148
+ parse_call,
149
+ parse_transcript_path
150
+ };
151
+
152
+ // scripts/hooks/format-edited-file.ts
153
+ import { existsSync as existsSync4 } from "node:fs";
154
+ import path9 from "node:path";
155
+
156
+ // scripts/lint/eslint-daemon.ts
157
+ import { createHash as createHash2 } from "node:crypto";
158
+ import { lstatSync, readFileSync as readFileSync3 } from "node:fs";
159
+ import { createRequire } from "node:module";
160
+ import path4 from "node:path";
161
+ import { fileURLToPath as fileURLToPath2 } from "node:url";
162
+
163
+ // eslint/untyped-environment.js
164
+ var ENVIRONMENT_VARIABLE = "JOSH_ESLINT_UNTYPED";
165
+ var ENABLED = "1";
166
+ function is_requested(variables) {
167
+ return variables[ENVIRONMENT_VARIABLE] === ENABLED;
168
+ }
169
+ function environment() {
170
+ return { [ENVIRONMENT_VARIABLE]: ENABLED };
171
+ }
172
+ var untyped_environment = { environment, is_requested, ENVIRONMENT_VARIABLE };
173
+
174
+ // scripts/lint/eslint-daemon-calls.ts
175
+ import { appendFileSync, readFileSync } from "node:fs";
176
+ import path from "node:path";
177
+ var CALLS_RECORD = ".eslint_d-calls";
178
+ var LINE_SEPARATOR = "\n";
179
+ var DAEMON_RECORD_PID = /^\S+ \S+ (?<pid>\d+)/u;
180
+ var LAST_LINE = /total=(?<total>\d+) pid=(?<pid>\d+)$/u;
181
+ var DAEMON_CALLER = {
182
+ EDIT_HOOK: "edit-hook",
183
+ WARM: "warm",
184
+ PRE_COMMIT: "pre-commit",
185
+ LINT_RELATED: "lint:related"
186
+ };
187
+ function pid_of(daemon_record = "") {
188
+ return DAEMON_RECORD_PID.exec(daemon_record)?.groups?.["pid"];
189
+ }
190
+ function read_text(file) {
191
+ try {
192
+ return readFileSync(file, "utf8");
193
+ } catch {
194
+ return "";
195
+ }
196
+ }
197
+ function previous_total(text, pid) {
198
+ const groups = LAST_LINE.exec(text.trimEnd())?.groups;
199
+ if (groups?.["pid"] !== pid) return void 0;
200
+ return Number(groups["total"]);
201
+ }
202
+ function line_of(call, total, pid, now) {
203
+ const { caller, files } = call;
204
+ return `${now.toISOString()} caller=${caller} files=${String(files)} total=${String(total)} pid=${pid}${LINE_SEPARATOR}`;
205
+ }
206
+ function write_line(file, line, is_new_daemon) {
207
+ try {
208
+ if (is_new_daemon) atomic_write.replace_file(file, line);
209
+ else appendFileSync(file, line);
210
+ } catch {
211
+ }
212
+ }
213
+ function record(directory, daemon_record, call, now = /* @__PURE__ */ new Date()) {
214
+ const pid = pid_of(daemon_record);
215
+ if (pid === void 0) return;
216
+ const file = path.join(directory, CALLS_RECORD);
217
+ const previous = previous_total(read_text(file), pid);
218
+ write_line(file, line_of(call, (previous ?? 0) + call.files, pid, now), previous === void 0);
219
+ }
220
+ var eslint_daemon_calls = { pid_of, record, CALLS_RECORD, DAEMON_CALLER };
221
+
222
+ // scripts/lint/eslint-daemon-sources.ts
223
+ import { createHash } from "node:crypto";
224
+ import { readFileSync as readFileSync2 } from "node:fs";
225
+ import path2 from "node:path";
226
+ var CHANGED_FILES = ["diff", "HEAD", "--name-only", "--relative", "-z"];
227
+ var NEW_FILES = ["ls-files", "--others", "--exclude-standard", "-z"];
228
+ var PATH_SEPARATOR = "\0";
229
+ var LINE_SEPARATOR2 = "\n";
230
+ var ENTRY_SEPARATOR = " ";
231
+ var DIGEST_ALGORITHM = "sha256";
232
+ var ABSENT = "absent";
233
+ var UNREAD = ":unread";
234
+ function by_text(left, right) {
235
+ return left.localeCompare(right);
236
+ }
237
+ function lines_of(text) {
238
+ return text.split(LINE_SEPARATOR2).filter((line) => line !== "");
239
+ }
240
+ function content_digest(file) {
241
+ try {
242
+ return createHash(DIGEST_ALGORITHM).update(readFileSync2(file)).digest("hex");
243
+ } catch {
244
+ return ABSENT;
245
+ }
246
+ }
247
+ function changed_paths(project_root) {
248
+ const listed = [CHANGED_FILES, NEW_FILES].map(
249
+ (git_arguments) => git_spawn_sync.read(git_arguments, { cwd: project_root }) ?? UNREAD
250
+ );
251
+ const paths = listed.join(PATH_SEPARATOR).split(PATH_SEPARATOR);
252
+ return [...new Set(paths.filter((relative) => relative !== ""))];
253
+ }
254
+ function snapshot(project_root) {
255
+ return changed_paths(project_root).map(
256
+ (relative) => `${relative}${ENTRY_SEPARATOR}${content_digest(path2.join(project_root, relative))}`
257
+ ).toSorted(by_text).join(LINE_SEPARATOR2);
258
+ }
259
+ function refresh(recorded, current, relative) {
260
+ const prefix = `${relative}${ENTRY_SEPARATOR}`;
261
+ const [inputs = "", ...entries] = lines_of(recorded);
262
+ const others = entries.filter((line) => !line.startsWith(prefix));
263
+ const fresh = lines_of(current).filter((line) => line.startsWith(prefix));
264
+ return [inputs, ...[...others, ...fresh].toSorted(by_text)].join(LINE_SEPARATOR2);
265
+ }
266
+ var eslint_daemon_sources = { refresh, snapshot, LINE_SEPARATOR: LINE_SEPARATOR2 };
267
+
268
+ // scripts/lint/eslint-heap.ts
269
+ import path3 from "node:path";
270
+ import { fileURLToPath, pathToFileURL } from "node:url";
271
+
272
+ // scripts/lib/buffered-process.ts
273
+ import { existsSync } from "node:fs";
274
+ var { PNPM } = pnpm_reach;
275
+ var FORCE_COLOR = "1";
276
+ function is_pnpm_missing(result, cwd) {
277
+ return pnpm_reach.is_not_found(result) && existsSync(cwd ?? process.cwd());
278
+ }
279
+ function unfinished_reason(result, cwd) {
280
+ if (result.exitCode !== void 0) return [];
281
+ const reason = [result.shortMessage ?? ""];
282
+ if (is_pnpm_missing(result, cwd)) reason.push(pnpm_reach.NOT_ON_PATH_NOTICE);
283
+ return reason;
284
+ }
285
+ function collect_output(all, reason) {
286
+ return [all, ...reason].filter((part) => part !== "").join("\n");
287
+ }
288
+ function child_environment() {
289
+ const environment3 = { ...process.env };
290
+ if (environment3["NO_COLOR"] === void 0) environment3["FORCE_COLOR"] = FORCE_COLOR;
291
+ else delete environment3["FORCE_COLOR"];
292
+ return environment3;
293
+ }
294
+ async function run_buffered_launch(launch, options) {
295
+ const started_at = performance.now();
296
+ const result = await execa(launch.file, [...launch.args], {
297
+ env: options.environment ?? child_environment(),
298
+ extendEnv: false,
299
+ all: true,
300
+ reject: false,
301
+ ...options.cwd !== void 0 && { cwd: options.cwd },
302
+ timeout: options.timeout_ms ?? SUITE_TIMEOUT_MS
303
+ });
304
+ return {
305
+ output: collect_output(result.all, unfinished_reason(result, options.cwd)),
306
+ exit_code: result.exitCode,
307
+ elapsed_ms: performance.now() - started_at
308
+ };
309
+ }
310
+ async function run_buffered_process(command_args, options = {}) {
311
+ return await run_buffered_launch({ file: PNPM, args: command_args }, options);
312
+ }
313
+ async function run_buffered_direct(pnpm_arguments, options = {}) {
314
+ const launch = direct_launch(options.cwd ?? process.cwd(), pnpm_arguments);
315
+ return await run_buffered_launch(launch, options);
316
+ }
317
+ function is_process_failed(result) {
318
+ return result.exit_code !== 0;
319
+ }
320
+ var buffered_process = {
321
+ child_environment,
322
+ is_process_failed,
323
+ run_buffered_direct,
324
+ run_buffered_process
325
+ };
326
+
327
+ // scripts/lint/eslint-heap.ts
328
+ var { ESLINT_HEAP_MIB } = core_weights;
329
+ var HEAP_FLAG = /--max[-_]old[-_]space[-_]size\b/u;
330
+ var NODE_OPTIONS = "NODE_OPTIONS";
331
+ var MODULE_DIRECTORY = path3.dirname(fileURLToPath(import.meta.url));
332
+ var MEMORY_PATH = path3.join(
333
+ find_package_directory(MODULE_DIRECTORY),
334
+ "scripts/lint/eslint-memory.js"
335
+ );
336
+ var MEMORY_IMPORT = `--import=${pathToFileURL(MEMORY_PATH).href}`;
337
+ function with_heap(given_options) {
338
+ const current = given_options?.trim() ?? "";
339
+ if (HEAP_FLAG.test(current)) return current;
340
+ const heap = `--max-old-space-size=${String(ESLINT_HEAP_MIB)}`;
341
+ return current === "" ? heap : `${current} ${heap}`;
342
+ }
343
+ function environment2() {
344
+ const child = buffered_process.child_environment();
345
+ return { ...child, [NODE_OPTIONS]: with_heap(child[NODE_OPTIONS]) };
346
+ }
347
+ async function run_cold(pnpm_arguments) {
348
+ const child = environment2();
349
+ return await buffered_process.run_buffered_direct(pnpm_arguments, {
350
+ environment: { ...child, [NODE_OPTIONS]: `${child[NODE_OPTIONS] ?? ""} ${MEMORY_IMPORT}` }
351
+ });
352
+ }
353
+ var eslint_heap = { environment: environment2, run_cold, with_heap };
354
+
355
+ // scripts/lint/eslint-daemon.ts
356
+ var ESLINT_DAEMON = "eslint_d";
357
+ var DAEMON_STOP = "stop";
358
+ var STOP_TIMEOUT_MS = 1e4;
359
+ var PNPM_EXEC = "exec";
360
+ var ESLINT_BIN = "eslint";
361
+ var PNPM_ESLINT_PREFIX_LENGTH = 2;
362
+ var NODE_MODULES = "node_modules";
363
+ var DAEMON_RECORD = ".eslint_d";
364
+ var FINGERPRINT_RECORD = ".eslint_d-toolchain";
365
+ var RECORD_SEPARATOR = "\n";
366
+ var NO_HEAD = "no-head";
367
+ var LIST_FILES = ["ls-files", "--cached", "--others", "--exclude-standard"];
368
+ var DIGEST_ALGORITHM2 = "sha256";
369
+ var MODULE_DIRECTORY2 = path4.dirname(fileURLToPath2(import.meta.url));
370
+ var DAEMON_STATE = {
371
+ REUSED: "daemon reused",
372
+ RESTARTED: "daemon restarted",
373
+ STARTED: "daemon started",
374
+ COLD_FALLBACK: "daemon unreachable, cold process"
375
+ };
376
+ function is_borrowed_install(project_root) {
377
+ return lstatSync(path4.join(project_root, NODE_MODULES), {
378
+ throwIfNoEntry: false
379
+ })?.isSymbolicLink() === true;
380
+ }
381
+ function resolve_daemon_cli(project_root) {
382
+ if (is_borrowed_install(project_root)) return void 0;
383
+ return resolve_package_bin(MODULE_DIRECTORY2, ESLINT_DAEMON, ESLINT_DAEMON) ?? resolve_package_bin(project_root, ESLINT_DAEMON, ESLINT_DAEMON);
384
+ }
385
+ function is_config_input(relative_path) {
386
+ return toolchain_inputs.is_input(relative_path);
387
+ }
388
+ function eslint_arguments_of(pnpm_arguments) {
389
+ if (pnpm_arguments[0] !== PNPM_EXEC || pnpm_arguments[1] !== ESLINT_BIN) return void 0;
390
+ return pnpm_arguments.slice(PNPM_ESLINT_PREFIX_LENGTH);
391
+ }
392
+ function digest_of(text) {
393
+ return createHash2(DIGEST_ALGORITHM2).update(text).digest("hex");
394
+ }
395
+ function fingerprint(project_root) {
396
+ const head = git_spawn_sync.read(["rev-parse", "HEAD"], { cwd: project_root }) ?? NO_HEAD;
397
+ const files = git_spawn_sync.read(LIST_FILES, { cwd: project_root }) ?? NO_HEAD;
398
+ const inputs = `${toolchain_inputs.digest(project_root)}:${head}:${digest_of(files)}`;
399
+ const sources = eslint_daemon_sources.snapshot(project_root);
400
+ return sources === "" ? inputs : `${inputs}${eslint_daemon_sources.LINE_SEPARATOR}${sources}`;
401
+ }
402
+ function eslint_directory(project_root) {
403
+ try {
404
+ return path4.dirname(
405
+ createRequire(path4.join(project_root, "package.json")).resolve("eslint/package.json")
406
+ );
407
+ } catch {
408
+ return void 0;
409
+ }
410
+ }
411
+ function read_text2(file) {
412
+ try {
413
+ return readFileSync3(file, "utf8");
414
+ } catch {
415
+ return void 0;
416
+ }
417
+ }
418
+ function read_record(project_root) {
419
+ const directory = eslint_directory(project_root);
420
+ if (directory === void 0) return { daemon: void 0, recorded: void 0 };
421
+ return {
422
+ daemon: read_text2(path4.join(directory, DAEMON_RECORD)),
423
+ recorded: read_text2(path4.join(directory, FINGERPRINT_RECORD))
424
+ };
425
+ }
426
+ function record_text(daemon, current) {
427
+ return `${daemon}${RECORD_SEPARATOR}${current}`;
428
+ }
429
+ function is_stale(record3, current) {
430
+ if (record3.daemon === void 0) return false;
431
+ return record3.recorded !== record_text(record3.daemon, current);
432
+ }
433
+ function state_of(record3, current) {
434
+ if (record3.daemon === void 0) return DAEMON_STATE.STARTED;
435
+ return is_stale(record3, current) ? DAEMON_STATE.RESTARTED : DAEMON_STATE.REUSED;
436
+ }
437
+ function remember(project_root, current) {
438
+ const directory = eslint_directory(project_root);
439
+ if (directory === void 0) return;
440
+ const daemon = read_text2(path4.join(directory, DAEMON_RECORD));
441
+ if (daemon === void 0) return;
442
+ try {
443
+ atomic_write.replace_file(
444
+ path4.join(directory, FINGERPRINT_RECORD),
445
+ record_text(daemon, current)
446
+ );
447
+ } catch {
448
+ }
449
+ }
450
+ function remember_read(project_root, record3, relative) {
451
+ const { daemon, recorded } = record3;
452
+ if (daemon === void 0 || recorded === void 0 || is_borrowed_install(project_root)) return;
453
+ const prefix = record_text(daemon, "");
454
+ if (!recorded.startsWith(prefix)) return;
455
+ const current = eslint_daemon_sources.snapshot(project_root);
456
+ remember(
457
+ project_root,
458
+ eslint_daemon_sources.refresh(recorded.slice(prefix.length), current, relative)
459
+ );
460
+ }
461
+ function remember_after_edit(project_root, before, edited) {
462
+ const after = read_record(project_root);
463
+ if (after.daemon !== before.daemon) remember(project_root, fingerprint(project_root));
464
+ else if (edited !== void 0) remember_read(project_root, after, edited);
465
+ }
466
+ function record_call(project_root, call) {
467
+ const directory = eslint_directory(project_root);
468
+ if (call === void 0 || directory === void 0 || is_borrowed_install(project_root)) return;
469
+ eslint_daemon_calls.record(directory, read_text2(path4.join(directory, DAEMON_RECORD)), call);
470
+ }
471
+ function launch_environment() {
472
+ return {
473
+ NODE_OPTIONS: eslint_heap.with_heap(process.env["NODE_OPTIONS"]),
474
+ ESLINT_D_MISS: "fail",
475
+ ...untyped_environment.environment()
476
+ };
477
+ }
478
+ function daemon_environment() {
479
+ return { ...eslint_heap.environment(), ...launch_environment() };
480
+ }
481
+ async function spawn_daemon(cli, cli_arguments, options) {
482
+ const result = await execa(process.execPath, [cli, ...cli_arguments], {
483
+ reject: false,
484
+ all: true,
485
+ cwd: options.project_root,
486
+ env: daemon_environment(),
487
+ extendEnv: false,
488
+ ...options.timeout_ms !== void 0 && { timeout: options.timeout_ms }
489
+ });
490
+ return { exit_code: result.exitCode ?? 1, stdout: result.stdout, output: result.all };
491
+ }
492
+ function is_start_failure(outcome) {
493
+ return outcome.exit_code !== 0 && outcome.stdout.length === 0;
494
+ }
495
+ async function run_current(cli, eslint_arguments, options) {
496
+ const { project_root } = options;
497
+ const current = fingerprint(project_root);
498
+ const daemon = state_of(read_record(project_root), current);
499
+ if (daemon === DAEMON_STATE.RESTARTED) await spawn_daemon(cli, [DAEMON_STOP], options);
500
+ const outcome = await spawn_daemon(cli, eslint_arguments, options);
501
+ if (is_start_failure(outcome)) return void 0;
502
+ remember(project_root, current);
503
+ record_call(project_root, options.call);
504
+ return { ...outcome, daemon };
505
+ }
506
+ async function stop(project_root) {
507
+ const cli = resolve_daemon_cli(project_root);
508
+ if (cli === void 0) return false;
509
+ const outcome = await spawn_daemon(cli, [DAEMON_STOP], {
510
+ project_root,
511
+ timeout_ms: STOP_TIMEOUT_MS
512
+ });
513
+ return outcome.exit_code === 0;
514
+ }
515
+ async function run(pnpm_arguments, options) {
516
+ const eslint_arguments = eslint_arguments_of(pnpm_arguments);
517
+ if (eslint_arguments === void 0) return void 0;
518
+ const cli = resolve_daemon_cli(options.project_root);
519
+ if (cli === void 0) return void 0;
520
+ return await run_current(cli, eslint_arguments, options);
521
+ }
522
+ async function run_or_cold(pnpm_arguments, call) {
523
+ const started_at = performance.now();
524
+ const outcome = await run(pnpm_arguments, { project_root: process.cwd(), call });
525
+ if (outcome === void 0) {
526
+ const cold = await eslint_heap.run_cold(pnpm_arguments);
527
+ return { ...cold, daemon: DAEMON_STATE.COLD_FALLBACK };
528
+ }
529
+ return {
530
+ output: outcome.output,
531
+ exit_code: outcome.exit_code,
532
+ elapsed_ms: performance.now() - started_at,
533
+ daemon: outcome.daemon
534
+ };
535
+ }
536
+ var eslint_daemon = {
537
+ eslint_arguments_of,
538
+ fingerprint,
539
+ is_config_input,
540
+ is_stale,
541
+ launch_environment,
542
+ read_record,
543
+ record_call,
544
+ record_text,
545
+ remember_after_edit,
546
+ resolve_daemon_cli,
547
+ run,
548
+ run_or_cold,
549
+ stop,
550
+ ESLINT_DAEMON
551
+ };
552
+
553
+ // scripts/lint/eslint-warm.ts
554
+ import { spawn } from "node:child_process";
555
+ import { fileURLToPath as fileURLToPath3 } from "node:url";
556
+ var WARM_CLI = fileURLToPath3(new URL("eslint-warm-cli.ts", import.meta.url));
557
+ var TYPED_SOURCES = ["ls-files", "--", "*.ts", ":!*.d.ts"];
558
+ var FALLBACK_TARGET = "eslint.config.js";
559
+ var LINE_SEPARATOR3 = "\n";
560
+ function warm_target(project_root) {
561
+ const listed = git_spawn_sync.read(TYPED_SOURCES, { cwd: project_root }) ?? "";
562
+ const [first] = listed.split(LINE_SEPARATOR3);
563
+ return first === void 0 || first === "" ? FALLBACK_TARGET : first;
564
+ }
565
+ async function warm(project_root) {
566
+ await eslint_daemon.run(["exec", "eslint", warm_target(project_root)], {
567
+ project_root,
568
+ timeout_ms: LINT_TIMEOUT_MS,
569
+ call: { caller: eslint_daemon_calls.DAEMON_CALLER.WARM, files: 1 }
570
+ });
571
+ }
572
+ function ignore_error() {
573
+ }
574
+ function start(project_root) {
575
+ if (process.env["VITEST"] !== void 0) return;
576
+ try {
577
+ const runner = resolve_tsx_runner();
578
+ const options = { cwd: project_root, detached: true, stdio: "ignore" };
579
+ const child = spawn(runner.executable, [...runner.leading_arguments, WARM_CLI], options);
580
+ child.on("error", ignore_error);
581
+ child.unref();
582
+ } catch {
583
+ ignore_error();
584
+ }
585
+ }
586
+ var eslint_warm = { start, warm };
587
+
588
+ // scripts/lint/eslint-trim.ts
589
+ var FOOTPRINT_LIMIT_MB = 600;
590
+ var BYTES_PER_KB = 1024;
591
+ var BYTES_PER_MB = BYTES_PER_KB * BYTES_PER_KB;
592
+ function default_reader() {
593
+ return run_board_usage_rusage.rusage_reader(process.platform, run_board_usage_rusage.load_builtin);
594
+ }
595
+ function is_heavy(project_root, reader) {
596
+ const pid = eslint_daemon_calls.pid_of(eslint_daemon.read_record(project_root).daemon);
597
+ if (pid === void 0 || reader === void 0) return false;
598
+ const footprint_bytes = reader(Number(pid))?.footprint_bytes ?? 0;
599
+ return footprint_bytes > FOOTPRINT_LIMIT_MB * BYTES_PER_MB;
600
+ }
601
+ async function trim(project_root, reader = default_reader()) {
602
+ if (!is_heavy(project_root, reader) || !await eslint_daemon.stop(project_root)) return false;
603
+ eslint_warm.start(project_root);
604
+ return true;
605
+ }
606
+ var eslint_trim = { trim, BYTES_PER_MB, FOOTPRINT_LIMIT_MB };
607
+
608
+ // scripts/lint/eslint-cache-dependencies.ts
609
+ import { rmSync, writeFileSync } from "node:fs";
610
+ import path7 from "node:path";
611
+ import { parse, stringify } from "flatted";
612
+
613
+ // scripts/lint/import-graph.ts
614
+ import path6 from "node:path";
615
+
616
+ // scripts/lint/import-graph-store.ts
617
+ import { existsSync as existsSync2 } from "node:fs";
618
+ import path5 from "node:path";
619
+ var STORE_VERSION = 1;
620
+ var STORE_NAME = `import-graph.v${String(STORE_VERSION)}.json`;
621
+ var ENVIRONMENT_FILES = ["package.json", "pnpm-lock.yaml"];
622
+ var EXTENSION = /(?:\.d)?\.[^./]+$/u;
623
+ var INDEX = "index";
624
+ var stored_dependency = external_exports.tuple([external_exports.string(), external_exports.boolean()]);
625
+ var stored_file = external_exports.object({
626
+ hash: external_exports.string(),
627
+ all: external_exports.array(stored_dependency).optional(),
628
+ runtime: external_exports.array(stored_dependency).optional()
629
+ });
630
+ var stored_graph = external_exports.object({
631
+ version: external_exports.literal(STORE_VERSION),
632
+ environment: external_exports.string(),
633
+ files: external_exports.record(external_exports.string(), stored_file)
634
+ });
635
+ function store_path(root) {
636
+ const common = git_common_directory.repository(root);
637
+ return common === void 0 ? void 0 : path5.join(common, git_common_directory.STATE_DIRECTORY, STORE_NAME);
638
+ }
639
+ function environment_of(root, config_files) {
640
+ const relatives = [...config_files.map((file) => path5.relative(root, file)), ...ENVIRONMENT_FILES];
641
+ const digests = Object.entries(input_fingerprint.of_files(root, relatives));
642
+ return input_fingerprint.of_entries(digests.map(([file, digest]) => `${file}:${digest}`));
643
+ }
644
+ function open(root, config_files) {
645
+ return {
646
+ root,
647
+ environment: environment_of(root, config_files),
648
+ file_path: store_path(root),
649
+ files: void 0,
650
+ seeded: /* @__PURE__ */ new Set(),
651
+ memo: { all: /* @__PURE__ */ new Map(), runtime: /* @__PURE__ */ new Map() },
652
+ unresolved: { all: /* @__PURE__ */ new Set(), runtime: /* @__PURE__ */ new Set() },
653
+ content_hashes: /* @__PURE__ */ new Map()
654
+ };
655
+ }
656
+ function remember2(store, name, file, references) {
657
+ const found = references.filter((dependency) => dependency !== void 0);
658
+ if (found.length < references.length) store.unresolved[name].add(file);
659
+ store.memo[name].set(file, found);
660
+ return found;
661
+ }
662
+ function content_hash(store, file) {
663
+ const known = store.content_hashes.get(file);
664
+ if (known !== void 0) return known;
665
+ const computed = input_fingerprint.of_file(file);
666
+ store.content_hashes.set(file, computed);
667
+ return computed;
668
+ }
669
+ function read_files(store) {
670
+ const text = store.file_path === void 0 ? void 0 : file_reader.read_if_readable(store.file_path);
671
+ const stored = text === void 0 ? void 0 : json_value.parse_with(text, stored_graph);
672
+ return stored?.environment === store.environment ? stored.files : {};
673
+ }
674
+ function files_of(store) {
675
+ store.files ??= read_files(store);
676
+ return store.files;
677
+ }
678
+ function module_stem(file) {
679
+ const stem = file.replace(EXTENSION, "");
680
+ return path5.basename(stem) === INDEX ? path5.dirname(stem) : stem;
681
+ }
682
+ function added_stems(store, universe) {
683
+ const files = files_of(store);
684
+ const added = universe.filter((file) => !Object.hasOwn(files, path5.relative(store.root, file)));
685
+ return new Set(added.map((file) => module_stem(file)));
686
+ }
687
+ function rebased(store, stored) {
688
+ return stored.map(([file, external]) => ({ file: path5.join(store.root, file), external }));
689
+ }
690
+ function is_standing(dependency, seeding) {
691
+ return existsSync2(dependency.file) && !seeding.added.has(module_stem(dependency.file));
692
+ }
693
+ function stored_edges(store, name, file, seeding) {
694
+ const entry = seeding.files[path5.relative(store.root, file)];
695
+ const stored = entry?.hash === content_hash(store, file) ? entry[name] : void 0;
696
+ if (stored === void 0) return void 0;
697
+ const dependencies = rebased(store, stored);
698
+ return dependencies.every((dependency) => is_standing(dependency, seeding)) ? dependencies : void 0;
699
+ }
700
+ function seed(store, name, universe) {
701
+ if (store.seeded.has(name)) return [];
702
+ store.seeded.add(name);
703
+ const seeding = { files: files_of(store), added: added_stems(store, universe) };
704
+ const memo = store.memo[name];
705
+ return universe.filter((file) => {
706
+ const stored = stored_edges(store, name, file, seeding);
707
+ if (stored !== void 0 && !memo.has(file)) memo.set(file, stored);
708
+ return stored === void 0;
709
+ });
710
+ }
711
+ function entry_of(store, name, file) {
712
+ const dependencies = store.memo[name].get(file);
713
+ if (dependencies === void 0 || store.unresolved[name].has(file)) return void 0;
714
+ const hash = content_hash(store, file);
715
+ const known = files_of(store)[path5.relative(store.root, file)];
716
+ const entry = known?.hash === hash ? { ...known } : { hash };
717
+ entry[name] = dependencies.map((dependency) => [
718
+ path5.relative(store.root, dependency.file),
719
+ dependency.external
720
+ ]);
721
+ return entry;
722
+ }
723
+ function write(store, file_path) {
724
+ const files = Object.entries(files_of(store)).filter(
725
+ ([file]) => existsSync2(path5.join(store.root, file))
726
+ );
727
+ const graph = {
728
+ version: STORE_VERSION,
729
+ environment: store.environment,
730
+ files: Object.fromEntries(files)
731
+ };
732
+ atomic_write.replace_file(file_path, JSON.stringify(graph));
733
+ }
734
+ function keep(store, name, missing) {
735
+ if (missing.length === 0 || store.file_path === void 0) return;
736
+ const files = files_of(store);
737
+ for (const file of missing) {
738
+ const entry = entry_of(store, name, file);
739
+ if (entry !== void 0) files[path5.relative(store.root, file)] = entry;
740
+ }
741
+ write(store, store.file_path);
742
+ }
743
+ var import_graph_store = { content_hash, keep, open, remember: remember2, seed, store_path };
744
+
745
+ // scripts/test/test-inputs.ts
746
+ var GLOBALS = /* @__PURE__ */ new Set([
747
+ "undefined",
748
+ "NaN",
749
+ "Infinity",
750
+ "Array",
751
+ "Object",
752
+ "String",
753
+ "Number",
754
+ "Boolean",
755
+ "BigInt",
756
+ "Symbol",
757
+ "Map",
758
+ "Set",
759
+ "WeakMap",
760
+ "WeakSet",
761
+ "JSON",
762
+ "RegExp",
763
+ "Error",
764
+ "TypeError",
765
+ "RangeError",
766
+ "Promise",
767
+ "parseInt",
768
+ "parseFloat",
769
+ "isNaN",
770
+ "isFinite"
771
+ ]);
772
+ var UNSAFE = /* @__PURE__ */ new Set([
773
+ "process",
774
+ "global",
775
+ "globalThis",
776
+ "eval",
777
+ "Function",
778
+ "require",
779
+ "constructor",
780
+ "__proto__",
781
+ "prototype",
782
+ "vi",
783
+ "vitest",
784
+ "inject",
785
+ "provide",
786
+ "toMatchSnapshot",
787
+ "toMatchFileSnapshot",
788
+ "toThrowErrorMatchingSnapshot",
789
+ "matchSnapshot"
790
+ ]);
791
+ function is_property(typescript, node) {
792
+ const { parent } = node;
793
+ return typescript.isPropertyAccessExpression(parent) && parent.name === node || (typescript.isPropertyAssignment(parent) || typescript.isMethodDeclaration(parent)) && parent.name === node;
794
+ }
795
+ function is_unsafe_syntax(typescript, node) {
796
+ return [
797
+ typescript.isNamespaceImport(node),
798
+ typescript.isElementAccessExpression(node),
799
+ node.kind === typescript.SyntaxKind.ThisKeyword,
800
+ typescript.isMetaProperty(node)
801
+ ].includes(true);
802
+ }
803
+ function is_dynamic_import(typescript, node) {
804
+ return typescript.isCallExpression(node) && node.expression.kind === typescript.SyntaxKind.ImportKeyword;
805
+ }
806
+ function is_unknown_identifier(typescript, node, checker) {
807
+ if (UNSAFE.has(node.text)) return true;
808
+ return !is_property(typescript, node) && checker.getSymbolAtLocation(node) === void 0 && !GLOBALS.has(node.text);
809
+ }
810
+ function is_unknown(typescript, node, checker) {
811
+ if (is_unsafe_syntax(typescript, node) || is_dynamic_import(typescript, node)) return true;
812
+ if (!typescript.isIdentifier(node)) return false;
813
+ return is_unknown_identifier(typescript, node, checker);
814
+ }
815
+ function is_closed(typescript, file, content) {
816
+ const source = typescript.createSourceFile(file, content, typescript.ScriptTarget.Latest, true);
817
+ const host = typescript.createCompilerHost({});
818
+ host.getSourceFile = (name) => name === file ? source : void 0;
819
+ const program = typescript.createProgram([file], { noLib: true, noResolve: true }, host);
820
+ const checker = program.getTypeChecker();
821
+ function unknown(node) {
822
+ if (typescript.isTypeNode(node)) return false;
823
+ return is_unknown(typescript, node, checker) || typescript.forEachChild(node, unknown) === true;
824
+ }
825
+ return program.getSyntacticDiagnostics(source).length === 0 && !unknown(source);
826
+ }
827
+ var test_inputs = { is_closed };
828
+
829
+ // scripts/lint/type-only-imports.ts
830
+ function declaration_of(typescript, statement) {
831
+ if (typescript.isImportDeclaration(statement)) return statement;
832
+ if (typescript.isExportDeclaration(statement)) return statement;
833
+ return void 0;
834
+ }
835
+ function is_type_only(typescript, declaration) {
836
+ if (typescript.isExportDeclaration(declaration)) return declaration.isTypeOnly;
837
+ return declaration.importClause?.phaseModifier === typescript.SyntaxKind.TypeKeyword;
838
+ }
839
+ function type_only_position(typescript, source, statement) {
840
+ const declaration = declaration_of(typescript, statement);
841
+ if (declaration === void 0 || !is_type_only(typescript, declaration)) return void 0;
842
+ const specifier = declaration.moduleSpecifier;
843
+ if (specifier === void 0 || !typescript.isStringLiteral(specifier)) return void 0;
844
+ return specifier.getStart(source);
845
+ }
846
+ function runtime_specifiers(typescript, file, content) {
847
+ const source = typescript.createSourceFile(file, content, typescript.ScriptTarget.Latest);
848
+ const type_only = new Set(
849
+ source.statements.map((statement) => type_only_position(typescript, source, statement))
850
+ );
851
+ return typescript.preProcessFile(content, true, true).importedFiles.filter((reference) => !type_only.has(reference.pos)).map((reference) => reference.fileName);
852
+ }
853
+ function strings(typescript, file) {
854
+ const content = file_reader.read_if_readable(file) ?? "";
855
+ const source = typescript.createSourceFile(file, content, typescript.ScriptTarget.Latest);
856
+ const found = [];
857
+ function visit(node) {
858
+ if (typescript.isStringLiteralLike(node) || typescript.isTemplateLiteralToken(node)) {
859
+ found.push(node.text);
860
+ }
861
+ typescript.forEachChild(node, visit);
862
+ }
863
+ visit(source);
864
+ return found;
865
+ }
866
+ var type_only_imports = { runtime_specifiers, strings };
867
+
868
+ // scripts/lint/import-test-inputs.ts
869
+ var DECLARATION_EXTENSION = /\.d\.[cm]?ts$/u;
870
+ var TYPESCRIPT_EXTENSION = /\.[cm]?tsx?$/u;
871
+ var JAVASCRIPT_EXTENSIONS = ["js", "jsx", "mjs", "cjs"];
872
+ function is_runtime_source(typescript, file) {
873
+ if (DECLARATION_EXTENSION.test(file)) return false;
874
+ if (!TYPESCRIPT_EXTENSION.test(file)) return true;
875
+ return JAVASCRIPT_EXTENSIONS.every(
876
+ (extension) => !typescript.sys.fileExists(file.replace(TYPESCRIPT_EXTENSION, () => `.${extension}`))
877
+ );
878
+ }
879
+ function dependencies_of(typescript, resolve, file, content) {
880
+ const specifiers = type_only_imports.runtime_specifiers(typescript, file, content);
881
+ const dependencies = specifiers.filter((name) => name !== "vitest").map((name) => name.startsWith(".") ? resolve(name, file) : void 0);
882
+ if (dependencies.some((dependency) => dependency === void 0 || dependency.external)) {
883
+ return void 0;
884
+ }
885
+ return dependencies.flatMap((dependency) => dependency?.file ?? []);
886
+ }
887
+ function read_source(typescript, resolve, file) {
888
+ if (!is_runtime_source(typescript, file)) return void 0;
889
+ const content = file_reader.read_if_readable(file);
890
+ if (content === void 0 || !test_inputs.is_closed(typescript, file, content)) return void 0;
891
+ return dependencies_of(typescript, resolve, file, content);
892
+ }
893
+ function unvisited(file, reached, read) {
894
+ return reached.has(file) ? [] : read(file);
895
+ }
896
+ function closure(file, read) {
897
+ const reached = /* @__PURE__ */ new Set();
898
+ const pending = [file];
899
+ for (let current = pending.pop(); current !== void 0; current = pending.pop()) {
900
+ const dependencies = unvisited(current, reached, read);
901
+ if (dependencies === void 0) return void 0;
902
+ reached.add(current);
903
+ pending.push(...dependencies);
904
+ }
905
+ return [...reached];
906
+ }
907
+ function create(typescript, resolve) {
908
+ const cache = /* @__PURE__ */ new Map();
909
+ function read(file) {
910
+ if (!cache.has(file)) cache.set(file, read_source(typescript, resolve, file));
911
+ return cache.get(file);
912
+ }
913
+ return (file) => closure(file, read);
914
+ }
915
+ var import_test_inputs2 = { create };
916
+
917
+ // scripts/lint/import-graph.ts
918
+ var TSCONFIG = "tsconfig.json";
919
+ var NODE_MODULES2 = "node_modules";
920
+ var MODULE_STATEMENT = /^(?:import|export)\b/mu;
921
+ var GLOBAL_DECLARATION = /^declare (?:global|module|namespace)\b/mu;
922
+ async function load_typescript() {
923
+ try {
924
+ const module = await import("typescript");
925
+ return module.default;
926
+ } catch {
927
+ return void 0;
928
+ }
929
+ }
930
+ function parsed_config(typescript, root) {
931
+ const config_file = path6.join(root, TSCONFIG);
932
+ if (!typescript.sys.fileExists(config_file)) return void 0;
933
+ const source = typescript.readJsonConfigFile(config_file, typescript.sys.readFile);
934
+ const parsed = typescript.parseJsonSourceFileConfigFileContent(
935
+ source,
936
+ typescript.sys,
937
+ root,
938
+ void 0,
939
+ config_file
940
+ );
941
+ return {
942
+ options: parsed.options,
943
+ file_names: parsed.fileNames,
944
+ config_files: [config_file, ...source.extendedSourceFiles ?? []]
945
+ };
946
+ }
947
+ function is_installed(file) {
948
+ return file.split(path6.sep).includes(NODE_MODULES2);
949
+ }
950
+ function as_dependency(file, external) {
951
+ if (file === void 0) return void 0;
952
+ return { file, external: external === true && is_installed(file) };
953
+ }
954
+ function relative_to(specifier, file) {
955
+ return { file: path6.resolve(path6.dirname(file), specifier), external: false };
956
+ }
957
+ function resolve_module(context, specifier, file) {
958
+ const { typescript, options, resolution_cache } = context;
959
+ const resolved = typescript.resolveModuleName(
960
+ specifier,
961
+ file,
962
+ options,
963
+ typescript.sys,
964
+ resolution_cache
965
+ ).resolvedModule;
966
+ if (resolved !== void 0) {
967
+ return as_dependency(resolved.resolvedFileName, resolved.isExternalLibraryImport);
968
+ }
969
+ if (!specifier.startsWith(".")) return void 0;
970
+ return relative_to(specifier, file);
971
+ }
972
+ function resolve_type(resolver, name, file) {
973
+ const { typescript, options } = resolver;
974
+ const resolved = typescript.resolveTypeReferenceDirective(
975
+ name,
976
+ file,
977
+ options,
978
+ typescript.sys
979
+ ).resolvedTypeReferenceDirective;
980
+ return as_dependency(resolved?.resolvedFileName, resolved?.isExternalLibraryImport);
981
+ }
982
+ function references_of(context, file, content) {
983
+ const processed = context.typescript.preProcessFile(content, true, true);
984
+ return [
985
+ ...processed.importedFiles.map(
986
+ (reference) => resolve_module(context, reference.fileName, file)
987
+ ),
988
+ ...processed.referencedFiles.map((reference) => relative_to(reference.fileName, file)),
989
+ ...processed.typeReferenceDirectives.map(
990
+ (reference) => resolve_type(context, reference.fileName, file)
991
+ )
992
+ ];
993
+ }
994
+ function direct_dependencies(context, file) {
995
+ const known = context.store.memo.all.get(file);
996
+ if (known !== void 0) return known;
997
+ const references = references_of(context, file, file_reader.read_if_readable(file) ?? "");
998
+ return import_graph_store.remember(context.store, "all", file, references);
999
+ }
1000
+ function runtime_dependencies(context, file) {
1001
+ const known = context.store.memo.runtime.get(file);
1002
+ if (known !== void 0) return known;
1003
+ const content = file_reader.read_if_readable(file) ?? "";
1004
+ const references = type_only_imports.runtime_specifiers(context.typescript, file, content).map((specifier) => resolve_module(context, specifier, file));
1005
+ return import_graph_store.remember(context.store, "runtime", file, references);
1006
+ }
1007
+ function is_ambient(file) {
1008
+ const content = file_reader.read_if_readable(file) ?? "";
1009
+ return GLOBAL_DECLARATION.test(content) || !MODULE_STATEMENT.test(content);
1010
+ }
1011
+ function ambient_of(resolver, root, config) {
1012
+ const config_file = path6.join(root, TSCONFIG);
1013
+ const declarations = [
1014
+ ...config.file_names.filter((file) => is_ambient(file)),
1015
+ ...config.config_files
1016
+ ].map((file) => ({ file, external: false }));
1017
+ const types = resolver.typescript.getAutomaticTypeDirectiveNames(resolver.options, resolver.typescript.sys).map((name) => resolve_type(resolver, name, config_file)).filter((dependency) => dependency !== void 0);
1018
+ return [...declarations, ...types];
1019
+ }
1020
+ function is_unvisited(dependency, start2, reached) {
1021
+ return dependency.file !== start2 && !reached.has(dependency.file);
1022
+ }
1023
+ function join(dependencies, start2, reached) {
1024
+ const next = dependencies.filter((dependency) => is_unvisited(dependency, start2, reached));
1025
+ for (const dependency of next) reached.set(dependency.file, dependency);
1026
+ return next.filter((dependency) => !dependency.external).map((dependency) => dependency.file);
1027
+ }
1028
+ function reachable(context, file) {
1029
+ const reached = /* @__PURE__ */ new Map();
1030
+ const pending = [file, ...join(context.ambient, file, reached)];
1031
+ for (let current = pending.pop(); current !== void 0; current = pending.pop()) {
1032
+ pending.push(...join(direct_dependencies(context, current), file, reached));
1033
+ }
1034
+ return reached;
1035
+ }
1036
+ function token_of(context, dependency) {
1037
+ const name = path6.relative(context.root, dependency.file);
1038
+ if (dependency.external) return name;
1039
+ return `${name}:${import_graph_store.content_hash(context.store, dependency.file)}`;
1040
+ }
1041
+ function closure_hash(context, file) {
1042
+ const tokens = [...reachable(context, file).values()].map(
1043
+ (dependency) => token_of(context, dependency)
1044
+ );
1045
+ return input_fingerprint.of_entries(tokens);
1046
+ }
1047
+ function closure2(context, file) {
1048
+ return [...reachable(context, file).values()].filter((dependency) => !dependency.external).map((dependency) => dependency.file);
1049
+ }
1050
+ function imports(context, file, content) {
1051
+ const dependencies = content === void 0 ? direct_dependencies(context, file) : references_of(context, file, content).filter((dependency) => dependency !== void 0);
1052
+ return dependencies.filter((dependency) => !dependency.external).map((dependency) => dependency.file);
1053
+ }
1054
+ function append(map, key, value) {
1055
+ const known = map.get(key);
1056
+ if (known === void 0) map.set(key, [value]);
1057
+ else known.push(value);
1058
+ }
1059
+ function reverse_edges(context, universe, edges) {
1060
+ const reverse = /* @__PURE__ */ new Map();
1061
+ const missing = import_graph_store.seed(context.store, edges.name, universe);
1062
+ for (const file of universe) {
1063
+ for (const dependency of edges.of(context, file)) {
1064
+ append(reverse, dependency.file, file);
1065
+ }
1066
+ }
1067
+ import_graph_store.keep(context.store, edges.name, missing);
1068
+ return reverse;
1069
+ }
1070
+ function importers(context, files, universe, edges) {
1071
+ const reverse = reverse_edges(context, universe, edges);
1072
+ const reached = new Set(files);
1073
+ const pending = [...files];
1074
+ for (let current = pending.pop(); current !== void 0; current = pending.pop()) {
1075
+ const next = (reverse.get(current) ?? []).filter((file) => !reached.has(file));
1076
+ for (const file of next) reached.add(file);
1077
+ pending.push(...next);
1078
+ }
1079
+ return reached;
1080
+ }
1081
+ function project_module(context, specifier, file) {
1082
+ const dependency = resolve_module(context, specifier, file);
1083
+ if (dependency === void 0) return void 0;
1084
+ const relative = path6.relative(context.root, dependency.file);
1085
+ return relative.startsWith(`..${path6.sep}`) || path6.isAbsolute(relative) ? void 0 : dependency;
1086
+ }
1087
+ function graph_of(context) {
1088
+ return {
1089
+ // Type-checker suffixes need not select the source the runner executes.
1090
+ test_inputs: context.options.moduleSuffixes === void 0 ? import_test_inputs2.create(
1091
+ context.typescript,
1092
+ (specifier, file) => project_module(context, specifier, file)
1093
+ ) : void 0,
1094
+ closure: (file) => closure2(context, file),
1095
+ closure_hash: (file) => closure_hash(context, file),
1096
+ imports: (file, content) => imports(context, file, content),
1097
+ importers: (files, universe) => importers(context, files, universe, { name: "all", of: direct_dependencies }),
1098
+ runtime_importers: (files, universe) => importers(context, files, universe, { name: "runtime", of: runtime_dependencies }),
1099
+ strings: (file) => type_only_imports.strings(context.typescript, file)
1100
+ };
1101
+ }
1102
+ async function create2(root) {
1103
+ const typescript = await load_typescript();
1104
+ if (typescript === void 0) return void 0;
1105
+ const parsed = parsed_config(typescript, root);
1106
+ if (parsed === void 0) return void 0;
1107
+ return graph_of({
1108
+ root,
1109
+ typescript,
1110
+ options: parsed.options,
1111
+ resolution_cache: typescript.createModuleResolutionCache(root, (name) => name, parsed.options),
1112
+ ambient: ambient_of({ typescript, options: parsed.options }, root, parsed),
1113
+ store: import_graph_store.open(root, parsed.config_files)
1114
+ });
1115
+ }
1116
+ var import_graph = { create: create2 };
1117
+
1118
+ // scripts/lint/eslint-cache-dependencies.ts
1119
+ function is_record(value) {
1120
+ return typeof value === "object" && value !== null && !Array.isArray(value);
1121
+ }
1122
+ function is_entry(item) {
1123
+ if (!is_record(item)) return false;
1124
+ const { key, value } = item;
1125
+ return typeof key === "string" && is_record(value);
1126
+ }
1127
+ function is_entries(value) {
1128
+ return Array.isArray(value) && value.every((item) => is_entry(item));
1129
+ }
1130
+ function parsed_or_undefined(content) {
1131
+ try {
1132
+ return parse(content);
1133
+ } catch {
1134
+ return void 0;
1135
+ }
1136
+ }
1137
+ function read_entries(cache_file) {
1138
+ const content = file_reader.read_optional(cache_file);
1139
+ if (content === void 0) return void 0;
1140
+ const parsed = parsed_or_undefined(content);
1141
+ return is_entries(parsed) ? parsed : void 0;
1142
+ }
1143
+ function read_or_discard(cache_file) {
1144
+ const entries = read_entries(cache_file);
1145
+ if (entries === void 0) rmSync(cache_file, { force: true });
1146
+ return entries ?? [];
1147
+ }
1148
+ function write_entries(cache_file, entries) {
1149
+ writeFileSync(cache_file, stringify(entries));
1150
+ }
1151
+ function recorded_hash(entry) {
1152
+ const { data } = entry.value;
1153
+ if (!is_record(data)) return void 0;
1154
+ const { dependencies } = data;
1155
+ return typeof dependencies === "string" ? dependencies : void 0;
1156
+ }
1157
+ function drop_stale(cache_file, graph) {
1158
+ const entries = read_or_discard(cache_file);
1159
+ const hashes = new Map(entries.map((entry) => [entry.key, graph.closure_hash(entry.key)]));
1160
+ const kept = entries.filter((entry) => recorded_hash(entry) === hashes.get(entry.key));
1161
+ if (kept.length !== entries.length) write_entries(cache_file, kept);
1162
+ return { hashes, drop: { dropped: entries.length - kept.length, total: entries.length } };
1163
+ }
1164
+ function record_entry(entry, hashes, graph) {
1165
+ const { data } = entry.value;
1166
+ if (!is_record(data) || "dependencies" in data) return false;
1167
+ Object.assign(data, { dependencies: hashes.get(entry.key) ?? graph.closure_hash(entry.key) });
1168
+ return true;
1169
+ }
1170
+ function record2(cache_file, hashes, graph) {
1171
+ const entries = read_entries(cache_file);
1172
+ if (entries === void 0) return;
1173
+ const recorded = entries.filter((entry) => record_entry(entry, hashes, graph));
1174
+ if (recorded.length > 0) write_entries(cache_file, entries);
1175
+ }
1176
+ async function guard_counted(cache_file, run3, root = process.cwd()) {
1177
+ const graph = await import_graph.create(root);
1178
+ if (graph === void 0) return { result: await run3() };
1179
+ const location = path7.resolve(root, cache_file);
1180
+ const { hashes, drop } = drop_stale(location, graph);
1181
+ const result = await run3();
1182
+ record2(location, hashes, graph);
1183
+ return { result, drop };
1184
+ }
1185
+ async function guard(cache_file, run3, root = process.cwd()) {
1186
+ const { result } = await guard_counted(cache_file, run3, root);
1187
+ return result;
1188
+ }
1189
+ var eslint_cache_dependencies = { guard, guard_counted };
1190
+
1191
+ // scripts/lint/lint-shard.ts
1192
+ var SHARD_FLAG_PREFIX = "--shard=";
1193
+ var FIRST_SHARD = 1;
1194
+ var SECOND_SHARD = 2;
1195
+ var WHOLE_TREE = ".";
1196
+ var IGNORE_PATTERN_FLAG = "--ignore-pattern";
1197
+ var FORMATTING_SHARD_REASON = `shard ${String(FIRST_SHARD)} checks the whole tree's formatting`;
1198
+ var FIRST_SHARD_DIRECTORIES = [
1199
+ "scripts/run",
1200
+ "scripts/issue",
1201
+ "scripts/epic",
1202
+ "scripts/review"
1203
+ ];
1204
+ var SHARDS = [FIRST_SHARD, SECOND_SHARD];
1205
+ function parse_shard(value) {
1206
+ const shard = Number(value);
1207
+ if (shard === FIRST_SHARD || shard === SECOND_SHARD) return shard;
1208
+ throw new Error(
1209
+ `josh lint: unknown shard "${value}" \u2014 use --shard=${String(FIRST_SHARD)} or --shard=${String(SECOND_SHARD)}`
1210
+ );
1211
+ }
1212
+ function shard_of(arguments_) {
1213
+ const flag = arguments_.find((argument) => argument.startsWith(SHARD_FLAG_PREFIX));
1214
+ return flag === void 0 ? void 0 : parse_shard(flag.slice(SHARD_FLAG_PREFIX.length));
1215
+ }
1216
+ function shard_flag(shard) {
1217
+ return `${SHARD_FLAG_PREFIX}${String(shard)}`;
1218
+ }
1219
+ function second_shard_targets() {
1220
+ return [
1221
+ WHOLE_TREE,
1222
+ ...FIRST_SHARD_DIRECTORIES.flatMap((directory) => [IGNORE_PATTERN_FLAG, `${directory}/`])
1223
+ ];
1224
+ }
1225
+ function eslint_targets(shard) {
1226
+ if (shard === void 0) return [WHOLE_TREE];
1227
+ return shard === FIRST_SHARD ? FIRST_SHARD_DIRECTORIES : second_shard_targets();
1228
+ }
1229
+ function checks_formatting(shard) {
1230
+ return shard !== SECOND_SHARD;
1231
+ }
1232
+ function describe(shard) {
1233
+ if (shard === void 0) return "";
1234
+ return ` \xB7 shard ${String(shard)} of ${String(SECOND_SHARD)}`;
1235
+ }
1236
+ var lint_shard = {
1237
+ FIRST_SHARD_DIRECTORIES,
1238
+ FORMATTING_SHARD_REASON,
1239
+ SHARDS,
1240
+ WHOLE_TREE,
1241
+ checks_formatting,
1242
+ describe,
1243
+ eslint_targets,
1244
+ shard_flag,
1245
+ shard_of
1246
+ };
1247
+
1248
+ // scripts/lint/format-steps.ts
1249
+ async function in_order(steps, execute) {
1250
+ const results = [];
1251
+ for (const step of steps) {
1252
+ results.push(await execute(step));
1253
+ }
1254
+ return results;
1255
+ }
1256
+ async function run_step(step, directory) {
1257
+ const environment3 = step.check === "eslint" ? { env: eslint_heap.environment(), extendEnv: false } : {};
1258
+ const launch = direct_launch(directory, step.args);
1259
+ const result = await execa(launch.file, [...launch.args], {
1260
+ cwd: directory,
1261
+ stdio: "inherit",
1262
+ reject: false,
1263
+ ...environment3
1264
+ });
1265
+ return result.exitCode ?? 1;
1266
+ }
1267
+ async function run_unless_skipped(step, directory) {
1268
+ const reason = step.check === "eslint" ? project_checks.eslint_skip_reason(directory) : project_checks.prettier_skip_reason(directory);
1269
+ if (reason === void 0) return await run_step(step, directory);
1270
+ console.info(project_checks.skip_notice(step.check, reason));
1271
+ return 0;
1272
+ }
1273
+ async function run2(steps, cache_file, directory) {
1274
+ const results = await in_order(steps, async (step) => {
1275
+ if (step.check !== "eslint") return await run_unless_skipped(step, directory);
1276
+ return await eslint_cache_dependencies.guard(
1277
+ cache_file,
1278
+ async () => await run_unless_skipped(step, directory),
1279
+ directory
1280
+ );
1281
+ });
1282
+ return results.find((code) => code !== 0) ?? 0;
1283
+ }
1284
+ async function run_scoped(scope, directory) {
1285
+ const files = scope.mode === "all" ? [lint_shard.WHOLE_TREE] : scope.files;
1286
+ const eslint = [...lint_related_scope.eslint_arguments(files), "--fix"];
1287
+ const prettier = lint_related_scope.prettier_arguments(files, void 0, directory);
1288
+ const steps = [{ check: "eslint", args: eslint }];
1289
+ if (scope.mode === "all" || !prettier.includes(project_checks.WEB_FILES)) {
1290
+ steps.push({
1291
+ check: "prettier",
1292
+ args: prettier.map((argument) => argument === "--check" ? "--write" : argument)
1293
+ });
1294
+ }
1295
+ return await run2(steps, lint_related_scope.RELATED_CACHES.eslint_file, directory);
1296
+ }
1297
+ var format_steps = { in_order, run: run2, run_scoped };
1298
+
1299
+ // scripts/hooks/edited-cspell.ts
1300
+ import { existsSync as existsSync3 } from "node:fs";
1301
+ import path8 from "node:path";
1302
+ var CSPELL_EXTENSIONS = /* @__PURE__ */ new Set([
1303
+ ".ts",
1304
+ ".tsx",
1305
+ ".js",
1306
+ ".jsx",
1307
+ ".mjs",
1308
+ ".cjs",
1309
+ ".svelte",
1310
+ ".md",
1311
+ ".mdx",
1312
+ ".txt",
1313
+ ".json",
1314
+ ".jsonc",
1315
+ ".yml",
1316
+ ".yaml",
1317
+ ".html",
1318
+ ".css"
1319
+ ]);
1320
+ var CSPELL_ARGS = [
1321
+ "lint",
1322
+ "--words-only",
1323
+ "--unique",
1324
+ "--no-progress",
1325
+ "--no-summary"
1326
+ ];
1327
+ var CSPELL_BIN = "cspell";
1328
+ var STDIN_SCHEME = "stdin://";
1329
+ var HEADER = "The edit hook found words cspell does not know; fix them or add them to `cspell.config.yaml` now rather than at the gate:";
1330
+ var MAX_DIAGNOSTIC_CHARS = 4e3;
1331
+ var TRUNCATION_NOTICE = "\n\u2026(unknown words truncated)";
1332
+ function is_checkable(file_path, project_root) {
1333
+ if (!existsSync3(file_path) || !CSPELL_EXTENSIONS.has(path8.extname(file_path).toLowerCase())) {
1334
+ return false;
1335
+ }
1336
+ const relative = path8.relative(path8.resolve(project_root), path8.resolve(file_path));
1337
+ return relative !== "" && !relative.startsWith("..") && !path8.isAbsolute(relative);
1338
+ }
1339
+ function cspell_command(project_root) {
1340
+ return direct_launch(project_root, ["exec", CSPELL_BIN]);
1341
+ }
1342
+ async function run_cspell(request) {
1343
+ const launch = cspell_command(request.project_root);
1344
+ const target = `${STDIN_SCHEME}${path8.resolve(request.file_path)}`;
1345
+ const result = await execa(launch.file, [...launch.args, ...CSPELL_ARGS, target], {
1346
+ reject: false,
1347
+ cwd: request.project_root,
1348
+ input: request.text,
1349
+ stdout: "pipe",
1350
+ stderr: "ignore",
1351
+ timeout: HOOK_PROCESS_TIMEOUT_MS
1352
+ });
1353
+ return result.stdout;
1354
+ }
1355
+ function format_unknown_words(stdout) {
1356
+ const words = stdout.split("\n").map((word) => word.trim()).filter((word) => word.length > 0);
1357
+ if (words.length === 0) return void 0;
1358
+ const joined = words.join("\n");
1359
+ const body = joined.length > MAX_DIAGNOSTIC_CHARS ? `${joined.slice(0, MAX_DIAGNOSTIC_CHARS)}${TRUNCATION_NOTICE}` : joined;
1360
+ return `${HEADER}
1361
+ ${body}`;
1362
+ }
1363
+ async function spelling_diagnostics(file_path, project_root, text, runner = run_cspell) {
1364
+ if (file_path === void 0 || !is_checkable(file_path, project_root)) return void 0;
1365
+ try {
1366
+ return format_unknown_words(await runner({ file_path, project_root, text }));
1367
+ } catch {
1368
+ return void 0;
1369
+ }
1370
+ }
1371
+ var edited_cspell = { cspell_command, format_unknown_words, run_cspell, spelling_diagnostics };
1372
+
1373
+ // scripts/hooks/format-rewrite-notice.ts
1374
+ var MAX_REWRITE_CHARS = 600;
1375
+ var REWRITE_TRUNCATION_NOTICE = "\n\u2026(truncated)";
1376
+ var REWRITE_HEADER = "The format hook rewrote this file, so your copy is stale; re-read these lines before the next Edit.";
1377
+ var REWRITE_RANGE_PREFIX = "Lines ";
1378
+ var LINE_SEPARATOR4 = "\n";
1379
+ var FIRST_LINE = 1;
1380
+ function common_prefix_length(before, after) {
1381
+ const limit = Math.min(before.length, after.length);
1382
+ let index = 0;
1383
+ while (index < limit && before[index] === after[index]) index += 1;
1384
+ return index;
1385
+ }
1386
+ function common_suffix_length(before, after, prefix) {
1387
+ const limit = Math.min(before.length, after.length) - prefix;
1388
+ let index = 0;
1389
+ while (index < limit && before.at(-1 - index) === after.at(-1 - index)) index += 1;
1390
+ return index;
1391
+ }
1392
+ function changed_range(before, after) {
1393
+ const before_lines = before.split(LINE_SEPARATOR4);
1394
+ const after_lines = after.split(LINE_SEPARATOR4);
1395
+ const prefix = common_prefix_length(before_lines, after_lines);
1396
+ const last = after_lines.length - common_suffix_length(before_lines, after_lines, prefix);
1397
+ return {
1398
+ start_line: prefix + FIRST_LINE,
1399
+ end_line: Math.max(prefix + FIRST_LINE, last),
1400
+ body: after_lines.slice(prefix, last).join(LINE_SEPARATOR4)
1401
+ };
1402
+ }
1403
+ function cap_body(body, budget) {
1404
+ if (body.length <= budget) return body;
1405
+ return `${body.slice(0, Math.max(0, budget - REWRITE_TRUNCATION_NOTICE.length))}${REWRITE_TRUNCATION_NOTICE}`;
1406
+ }
1407
+ function build(before, after) {
1408
+ if (before === after) return void 0;
1409
+ const range = changed_range(before, after);
1410
+ const head = `${REWRITE_HEADER}
1411
+ ${REWRITE_RANGE_PREFIX}${String(range.start_line)}-${String(range.end_line)}:
1412
+ `;
1413
+ return `${head}${cap_body(range.body, MAX_REWRITE_CHARS - head.length)}`;
1414
+ }
1415
+ function read_text3(file_path) {
1416
+ return file_path === void 0 ? "" : file_reader.read_if_readable(file_path) ?? "";
1417
+ }
1418
+ var rewrite_notice = { build, read_text: read_text3 };
1419
+
1420
+ // scripts/hooks/format-edited-file.ts
1421
+ var hook_payload_schema = external_exports.object({
1422
+ tool_input: external_exports.object({ file_path: external_exports.string().min(1) }).optional()
1423
+ });
1424
+ var PRETTIER_EXTENSIONS = /* @__PURE__ */ new Set([
1425
+ ".ts",
1426
+ ".tsx",
1427
+ ".js",
1428
+ ".jsx",
1429
+ ".mjs",
1430
+ ".cjs",
1431
+ ".svelte",
1432
+ ".json",
1433
+ ".jsonc",
1434
+ ".md",
1435
+ ".yml",
1436
+ ".yaml",
1437
+ ".css",
1438
+ ".html"
1439
+ ]);
1440
+ var ESLINT_EXTENSIONS = /* @__PURE__ */ new Set([".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs", ".svelte"]);
1441
+ var EXCLUDED_ANYWHERE = /* @__PURE__ */ new Set(["node_modules", ".git"]);
1442
+ var EXCLUDED_AT_ROOT = /* @__PURE__ */ new Set(["dist", "build"]);
1443
+ var PARENT_SEGMENT = "..";
1444
+ var PRETTIER_BIN = "prettier";
1445
+ var PRETTIER_ARGUMENTS = ["--write", "--ignore-unknown"];
1446
+ var ESLINT_BIN2 = "eslint";
1447
+ var ESLINT_ARGUMENTS = [
1448
+ "--fix",
1449
+ "--no-error-on-unmatched-pattern",
1450
+ ...ESLINT_EDIT_CACHE_FLAGS
1451
+ ];
1452
+ var { ESLINT_DAEMON: ESLINT_DAEMON2 } = eslint_daemon;
1453
+ var DAEMON_RESTART = "restart";
1454
+ var DIAGNOSTIC_HEADER = "The edit hook could not auto-fix these lint problems; address them now rather than at the gate:";
1455
+ var MAX_DIAGNOSTIC_CHARS2 = 4e3;
1456
+ var DIAGNOSTIC_TRUNCATION_NOTICE = "\n\u2026(diagnostics truncated)";
1457
+ var SECTION_SEPARATOR = "\n\n";
1458
+ function parse_edited_path(raw_payload) {
1459
+ return json_value.parse_with(raw_payload, hook_payload_schema)?.tool_input?.file_path;
1460
+ }
1461
+ function is_excluded(relative_path) {
1462
+ const segments = relative_path.split(path9.sep);
1463
+ return segments.some((segment) => EXCLUDED_ANYWHERE.has(segment)) || EXCLUDED_AT_ROOT.has(segments[0] ?? "");
1464
+ }
1465
+ function relative_to_root(project_root, file_path) {
1466
+ const relative = path9.relative(path9.resolve(project_root), path9.resolve(file_path));
1467
+ const is_inside_root = relative !== "" && relative.split(path9.sep)[0] !== PARENT_SEGMENT && !path9.isAbsolute(relative);
1468
+ return is_inside_root ? relative : void 0;
1469
+ }
1470
+ function is_formattable(file_path, project_root) {
1471
+ const relative = relative_to_root(project_root, file_path);
1472
+ return relative !== void 0 && !is_excluded(relative) && existsSync4(file_path);
1473
+ }
1474
+ function plan_commands(file_path, project_root) {
1475
+ if (!is_formattable(file_path, project_root)) return [];
1476
+ const extension = path9.extname(file_path).toLowerCase();
1477
+ const commands = [];
1478
+ if (ESLINT_EXTENSIONS.has(extension)) {
1479
+ commands.push({ bin: ESLINT_BIN2, command_arguments: [...ESLINT_ARGUMENTS, file_path] });
1480
+ }
1481
+ if (PRETTIER_EXTENSIONS.has(extension)) {
1482
+ commands.push({ bin: PRETTIER_BIN, command_arguments: [...PRETTIER_ARGUMENTS, file_path] });
1483
+ }
1484
+ return commands;
1485
+ }
1486
+ function select_invocation(command, routes) {
1487
+ if (routes.daemon_cli !== void 0) {
1488
+ return {
1489
+ bin: process.execPath,
1490
+ command_arguments: [routes.daemon_cli, ...command.command_arguments]
1491
+ };
1492
+ }
1493
+ return { bin: routes.launch.file, command_arguments: routes.launch.args };
1494
+ }
1495
+ var DAEMON_BINS = /* @__PURE__ */ new Set([ESLINT_BIN2, ESLINT_DAEMON2]);
1496
+ function resolve_daemon_cli2(bin, project_root) {
1497
+ if (!DAEMON_BINS.has(bin)) return void 0;
1498
+ return eslint_daemon.resolve_daemon_cli(project_root);
1499
+ }
1500
+ function plan_daemon_restart(file_path, project_root) {
1501
+ const relative = relative_to_root(project_root, file_path);
1502
+ if (relative === void 0 || !eslint_daemon.is_config_input(relative) || resolve_daemon_cli2(ESLINT_DAEMON2, project_root) === void 0) {
1503
+ return [];
1504
+ }
1505
+ return [{ bin: ESLINT_DAEMON2, command_arguments: [DAEMON_RESTART] }];
1506
+ }
1507
+ function resolve_invocations(command, project_root) {
1508
+ const routes = {
1509
+ daemon_cli: resolve_daemon_cli2(command.bin, project_root),
1510
+ launch: direct_launch(project_root, ["exec", command.bin, ...command.command_arguments])
1511
+ };
1512
+ const without_daemon = select_invocation(command, { ...routes, daemon_cli: void 0 });
1513
+ if (routes.daemon_cli === void 0) return [without_daemon];
1514
+ return [select_invocation(command, routes), without_daemon];
1515
+ }
1516
+ function is_start_failure2(outcome) {
1517
+ return outcome.exit_code !== 0 && outcome.stdout.length === 0;
1518
+ }
1519
+ async function spawn_invocation(invocation, project_root) {
1520
+ const result = await execa(invocation.bin, [...invocation.command_arguments], {
1521
+ reject: false,
1522
+ cwd: project_root,
1523
+ env: eslint_daemon.launch_environment(),
1524
+ stdout: "pipe",
1525
+ stderr: "ignore",
1526
+ timeout: HOOK_PROCESS_TIMEOUT_MS
1527
+ });
1528
+ return { exit_code: result.exitCode ?? 1, stdout: result.stdout };
1529
+ }
1530
+ async function run_command(command, project_root) {
1531
+ let outcome = { exit_code: 0, stdout: "" };
1532
+ for (const invocation of resolve_invocations(command, project_root)) {
1533
+ outcome = await spawn_invocation(invocation, project_root);
1534
+ if (!is_start_failure2(outcome)) return outcome;
1535
+ }
1536
+ return outcome;
1537
+ }
1538
+ function eslint_unfixed(command, outcome) {
1539
+ if (command.bin !== ESLINT_BIN2 || outcome.exit_code === 0 || outcome.stdout.length === 0) {
1540
+ return void 0;
1541
+ }
1542
+ return outcome.stdout;
1543
+ }
1544
+ function format_diagnostics(unfixed) {
1545
+ if (unfixed === void 0) return void 0;
1546
+ const is_over = unfixed.length > MAX_DIAGNOSTIC_CHARS2;
1547
+ const body = is_over ? `${unfixed.slice(0, MAX_DIAGNOSTIC_CHARS2)}${DIAGNOSTIC_TRUNCATION_NOTICE}` : unfixed;
1548
+ return `${DIAGNOSTIC_HEADER}
1549
+ ${body}`;
1550
+ }
1551
+ async function collect_unfixed(plan, runner, project_root) {
1552
+ const results = await format_steps.in_order(plan, async (command) => {
1553
+ try {
1554
+ return eslint_unfixed(command, await runner(command, project_root));
1555
+ } catch {
1556
+ return "";
1557
+ }
1558
+ });
1559
+ return results.findLast(Boolean) ?? "";
1560
+ }
1561
+ function linted_path(plan, file_path, project_root) {
1562
+ if (plan.every((command) => command.bin !== ESLINT_BIN2)) return void 0;
1563
+ return relative_to_root(project_root, file_path);
1564
+ }
1565
+ async function record_lint(project_root) {
1566
+ const call = { caller: eslint_daemon_calls.DAEMON_CALLER.EDIT_HOOK, files: 1 };
1567
+ eslint_daemon.record_call(project_root, call);
1568
+ await eslint_trim.trim(project_root);
1569
+ }
1570
+ async function format_edited_file(raw_payload, runner, project_root) {
1571
+ const file_path = parse_edited_path(raw_payload);
1572
+ if (file_path === void 0) return void 0;
1573
+ const plan = [
1574
+ ...plan_commands(file_path, project_root),
1575
+ ...plan_daemon_restart(file_path, project_root)
1576
+ ];
1577
+ const daemon_before = eslint_daemon.read_record(project_root);
1578
+ const unfixed = await collect_unfixed(plan, runner, project_root);
1579
+ const linted = linted_path(plan, file_path, project_root);
1580
+ eslint_daemon.remember_after_edit(project_root, daemon_before, linted);
1581
+ if (linted !== void 0) await record_lint(project_root);
1582
+ return format_diagnostics(unfixed === "" ? void 0 : unfixed);
1583
+ }
1584
+ async function format_edited_payload(raw_payload, project_root) {
1585
+ return await format_edited_file(raw_payload, run_command, project_root);
1586
+ }
1587
+ var HOOK_EVENT_NAME = "PostToolUse";
1588
+ function build_envelope(additional_context) {
1589
+ return JSON.stringify({
1590
+ hookSpecificOutput: { hookEventName: HOOK_EVENT_NAME, additionalContext: additional_context }
1591
+ });
1592
+ }
1593
+ function compose_context(notice, diagnostics) {
1594
+ const sections = [notice, diagnostics].filter(
1595
+ (section) => section !== void 0
1596
+ );
1597
+ return sections.length === 0 ? void 0 : sections.join(SECTION_SEPARATOR);
1598
+ }
1599
+ function report_no_payload() {
1600
+ process.stderr.write(
1601
+ "format:edited reads a Claude Code PostToolUse payload on stdin; it is not run by hand.\n"
1602
+ );
1603
+ }
1604
+ async function run_hook(payload) {
1605
+ const notice = time_density_hook.density_notice(payload);
1606
+ const file_path = parse_edited_path(payload);
1607
+ const before = rewrite_notice.read_text(file_path);
1608
+ const pending_spelling = edited_cspell.spelling_diagnostics(file_path, process.cwd(), before);
1609
+ const lint = await format_edited_payload(payload, process.cwd());
1610
+ const rewrite = rewrite_notice.build(before, rewrite_notice.read_text(file_path));
1611
+ const spelling = await pending_spelling;
1612
+ const parts = compose_context(rewrite, compose_context(lint, spelling));
1613
+ const context = compose_context(notice, parts);
1614
+ if (context !== void 0) process.stdout.write(`${build_envelope(context)}
1615
+ `);
1616
+ }
1617
+
1618
+ export {
1619
+ time_density_hook,
1620
+ format_edited_payload,
1621
+ build_envelope,
1622
+ compose_context,
1623
+ report_no_payload,
1624
+ run_hook
1625
+ };