@joshuafolkken/kit 1.3041.0 → 1.3092.0

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