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