@joshuafolkken/kit 1.3099.0 → 1.3125.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.
- package/.claude/skills/workflow-commands/split-assessment.md +2 -3
- package/.github/actions/setup-pnpm/action.yml +12 -4
- package/dist/.inputs-verified.json +1 -1
- package/dist/commands/adopt.js +20 -20
- package/dist/commands/auto-ok-judge-cli.js +30 -30
- package/dist/commands/auto-ok-main.js +64 -63
- package/dist/commands/backlog-budget-main.js +5 -5
- package/dist/commands/backlog-drive-cli.js +220 -203
- package/dist/commands/backlog-next-main.js +157 -101
- package/dist/commands/backlog-offer-main.js +168 -120
- package/dist/commands/backlog-plan-cli.js +159 -110
- package/dist/commands/backlog-triage-cli.js +171 -115
- package/dist/commands/backlogrun-cli.js +255 -245
- package/dist/commands/behavior-cli.js +16 -15
- package/dist/commands/bytes-command.js +41 -41
- package/dist/commands/cases-cli.js +3 -3
- package/dist/commands/check-commit-message-main.js +3 -3
- package/dist/commands/check-related.js +93 -93
- package/dist/commands/chunk-23PU6FAC.js +140 -0
- package/dist/commands/chunk-23TWJOAI.js +172 -0
- package/dist/commands/chunk-24MXEDSJ.js +81 -0
- package/dist/commands/chunk-25LVQDOF.js +183 -0
- package/dist/commands/chunk-25LYH5QR.js +85 -0
- package/dist/commands/chunk-2AH73ZTW.js +84 -0
- package/dist/commands/chunk-2BNLPPP4.js +42 -0
- package/dist/commands/chunk-2FD3N3OX.js +119 -0
- package/dist/commands/chunk-2GJ3WJVT.js +117 -0
- package/dist/commands/chunk-2JGOKYJQ.js +426 -0
- package/dist/commands/chunk-2MDLCJZ4.js +389 -0
- package/dist/commands/chunk-2ROVUERM.js +99 -0
- package/dist/commands/chunk-2TI22UNK.js +137 -0
- package/dist/commands/chunk-2TUA6V4F.js +191 -0
- package/dist/commands/chunk-2UXSF5YF.js +49 -0
- package/dist/commands/chunk-2ZDVX64H.js +66 -0
- package/dist/commands/chunk-33N7SBIU.js +18 -0
- package/dist/commands/chunk-373P5MM2.js +353 -0
- package/dist/commands/chunk-37RULO76.js +220 -0
- package/dist/commands/chunk-3EYRE3GI.js +173 -0
- package/dist/commands/chunk-3IXIYDC3.js +179 -0
- package/dist/commands/chunk-3OFJCJN4.js +30 -0
- package/dist/commands/chunk-3OSUM6DM.js +53 -0
- package/dist/commands/chunk-3PGB2RKZ.js +333 -0
- package/dist/commands/chunk-3QNEEG5O.js +117 -0
- package/dist/commands/chunk-3TN76RWK.js +156 -0
- package/dist/commands/chunk-3W2TJZMD.js +77 -0
- package/dist/commands/chunk-3Y32BYLU.js +1244 -0
- package/dist/commands/chunk-3ZQOMI5A.js +245 -0
- package/dist/commands/chunk-42W6WARP.js +263 -0
- package/dist/commands/chunk-44UIURBQ.js +130 -0
- package/dist/commands/chunk-45RCSJGE.js +321 -0
- package/dist/commands/chunk-4DNAAFF4.js +159 -0
- package/dist/commands/chunk-4E5WBWG7.js +70 -0
- package/dist/commands/chunk-4MRBLCDB.js +96 -0
- package/dist/commands/chunk-4NIHTEGD.js +332 -0
- package/dist/commands/chunk-4ODXKJJT.js +566 -0
- package/dist/commands/chunk-4P5F7CLB.js +47 -0
- package/dist/commands/chunk-52CGT2IN.js +119 -0
- package/dist/commands/chunk-54ZLBLLE.js +74 -0
- package/dist/commands/chunk-56344LLX.js +114 -0
- package/dist/commands/chunk-56GR7L5L.js +36 -0
- package/dist/commands/chunk-5ADJDGFT.js +126 -0
- package/dist/commands/chunk-5CMXAHCL.js +161 -0
- package/dist/commands/chunk-5DMFMP4V.js +121 -0
- package/dist/commands/chunk-5I3M4B3H.js +185 -0
- package/dist/commands/chunk-5JIMCETI.js +104 -0
- package/dist/commands/chunk-5KEESWMC.js +138 -0
- package/dist/commands/chunk-5LNRVX2R.js +214 -0
- package/dist/commands/chunk-5PLKHUQD.js +492 -0
- package/dist/commands/chunk-5QICRFVL.js +167 -0
- package/dist/commands/chunk-5RCBXYYD.js +101 -0
- package/dist/commands/chunk-5SOU366I.js +252 -0
- package/dist/commands/chunk-5VUHAXPI.js +77 -0
- package/dist/commands/chunk-5XJUUZ6U.js +773 -0
- package/dist/commands/chunk-5ZMVRU3U.js +46 -0
- package/dist/commands/chunk-5ZWU2B7T.js +507 -0
- package/dist/commands/chunk-5ZXR36N7.js +67 -0
- package/dist/commands/chunk-623LFKFM.js +60 -0
- package/dist/commands/chunk-64II6P7B.js +81 -0
- package/dist/commands/chunk-6DJT64DN.js +342 -0
- package/dist/commands/chunk-6HJ5CJSJ.js +121 -0
- package/dist/commands/chunk-6LGMEJRN.js +67 -0
- package/dist/commands/chunk-6LHMR3CR.js +126 -0
- package/dist/commands/chunk-6NXTP5JT.js +114 -0
- package/dist/commands/chunk-6OKVY2E3.js +128 -0
- package/dist/commands/chunk-6OUQZC6V.js +1153 -0
- package/dist/commands/chunk-6PL2AK3C.js +204 -0
- package/dist/commands/chunk-6PLIQCBG.js +326 -0
- package/dist/commands/chunk-6QVDEMGB.js +118 -0
- package/dist/commands/chunk-6T67GZMJ.js +60 -0
- package/dist/commands/chunk-6TC2ZMNB.js +64 -0
- package/dist/commands/chunk-6TOHJZ4J.js +224 -0
- package/dist/commands/chunk-6TOWGIY2.js +127 -0
- package/dist/commands/chunk-6TPGDOOD.js +48 -0
- package/dist/commands/chunk-6XXEW3NQ.js +159 -0
- package/dist/commands/chunk-72HZ2APA.js +229 -0
- package/dist/commands/chunk-72LAYP5S.js +46 -0
- package/dist/commands/chunk-72Y7PXUJ.js +83 -0
- package/dist/commands/chunk-77R6JEET.js +128 -0
- package/dist/commands/chunk-7GICNM73.js +137 -0
- package/dist/commands/chunk-7OZT74HR.js +78 -0
- package/dist/commands/chunk-7QAYL2RH.js +555 -0
- package/dist/commands/chunk-7T7GIZYW.js +92 -0
- package/dist/commands/chunk-7VXSMXVE.js +79 -0
- package/dist/commands/chunk-7WTVADW4.js +33 -0
- package/dist/commands/chunk-7YXCOW3X.js +114 -0
- package/dist/commands/chunk-7YYI3OX6.js +104 -0
- package/dist/commands/chunk-7Z25RNTV.js +516 -0
- package/dist/commands/chunk-A73RWSHJ.js +126 -0
- package/dist/commands/chunk-AAIZ2H66.js +58 -0
- package/dist/commands/chunk-AFGEGGIF.js +17 -0
- package/dist/commands/chunk-AJTXSSRD.js +29 -0
- package/dist/commands/chunk-AKM3BHVJ.js +48 -0
- package/dist/commands/chunk-AL2H63BP.js +48 -0
- package/dist/commands/chunk-AMQNHTDN.js +60 -0
- package/dist/commands/chunk-AQGVQMWF.js +168 -0
- package/dist/commands/chunk-B4OZF4XL.js +89 -0
- package/dist/commands/chunk-B4W77FVS.js +704 -0
- package/dist/commands/chunk-B4YBGU2C.js +580 -0
- package/dist/commands/chunk-B636LL4X.js +239 -0
- package/dist/commands/chunk-B762PNT6.js +66 -0
- package/dist/commands/chunk-B7UY7EOD.js +72 -0
- package/dist/commands/chunk-BAJABWKW.js +43 -0
- package/dist/commands/chunk-BAQRD3TC.js +105 -0
- package/dist/commands/chunk-BBPESBU3.js +85 -0
- package/dist/commands/chunk-BGKUZJT7.js +25 -0
- package/dist/commands/chunk-BIVM6OTE.js +19 -0
- package/dist/commands/chunk-BJQDQAQU.js +167 -0
- package/dist/commands/chunk-BU3WIUDD.js +230 -0
- package/dist/commands/chunk-C2WXQPF3.js +34 -0
- package/dist/commands/chunk-C3V6H6TW.js +183 -0
- package/dist/commands/chunk-C3Y42PHX.js +229 -0
- package/dist/commands/chunk-C7CDGSMW.js +112 -0
- package/dist/commands/chunk-C7JEMYPV.js +102 -0
- package/dist/commands/chunk-CCAVK7HN.js +4221 -0
- package/dist/commands/chunk-CFLCZ2WO.js +63 -0
- package/dist/commands/chunk-CGA2K3XV.js +137 -0
- package/dist/commands/chunk-CHQQ3VTL.js +184 -0
- package/dist/commands/chunk-CKD2G35M.js +86 -0
- package/dist/commands/chunk-CMTTDS7F.js +77 -0
- package/dist/commands/chunk-CRCQOA4Z.js +77 -0
- package/dist/commands/chunk-CT773QBI.js +161 -0
- package/dist/commands/chunk-CVZXDKCV.js +525 -0
- package/dist/commands/chunk-CXFN5W7O.js +116 -0
- package/dist/commands/chunk-CXVNQ7DS.js +88 -0
- package/dist/commands/chunk-CYYJLRIW.js +85 -0
- package/dist/commands/chunk-D6UXGFJ7.js +44 -0
- package/dist/commands/chunk-DIXUXHZ2.js +207 -0
- package/dist/commands/chunk-DM6I4PYD.js +110 -0
- package/dist/commands/chunk-DOM6HJL3.js +769 -0
- package/dist/commands/chunk-DVIOBFU7.js +210 -0
- package/dist/commands/chunk-E5CGA7FC.js +114 -0
- package/dist/commands/chunk-EG44IWNI.js +88 -0
- package/dist/commands/chunk-EHVFQQO6.js +45 -0
- package/dist/commands/chunk-EJG5ZJKD.js +1629 -0
- package/dist/commands/chunk-EKKUHXFD.js +241 -0
- package/dist/commands/chunk-ELCYNBZO.js +430 -0
- package/dist/commands/chunk-ELZQL6M3.js +100 -0
- package/dist/commands/chunk-EOPRRSCY.js +1891 -0
- package/dist/commands/chunk-EQTDNFPF.js +123 -0
- package/dist/commands/chunk-ERAABGU7.js +93 -0
- package/dist/commands/chunk-ESMIFITZ.js +715 -0
- package/dist/commands/chunk-EWBEYTVS.js +50 -0
- package/dist/commands/chunk-EYR2X5MZ.js +53 -0
- package/dist/commands/chunk-F546BPG3.js +74 -0
- package/dist/commands/chunk-F7SAHNGR.js +34 -0
- package/dist/commands/chunk-FBWNL3UA.js +209 -0
- package/dist/commands/chunk-FBZD6LOK.js +225 -0
- package/dist/commands/chunk-FDSSBZC7.js +75 -0
- package/dist/commands/chunk-FFLZPLWC.js +59 -0
- package/dist/commands/chunk-FHLV5BII.js +170 -0
- package/dist/commands/chunk-FITTCICF.js +247 -0
- package/dist/commands/chunk-FJ622XHY.js +179 -0
- package/dist/commands/chunk-FQPL6T66.js +80 -0
- package/dist/commands/chunk-FSM3WPTR.js +73 -0
- package/dist/commands/chunk-FSZA4DME.js +268 -0
- package/dist/commands/chunk-FVPRBMHE.js +38 -0
- package/dist/commands/chunk-FZ62KJXP.js +75 -0
- package/dist/commands/chunk-FZNYKSQS.js +335 -0
- package/dist/commands/chunk-FZYFGHRY.js +72 -0
- package/dist/commands/chunk-G4UVY3TO.js +90 -0
- package/dist/commands/chunk-G6H2TOAA.js +18 -0
- package/dist/commands/chunk-GC73YEU7.js +119 -0
- package/dist/commands/chunk-GHVL6IJA.js +653 -0
- package/dist/commands/chunk-GIGXVOKR.js +208 -0
- package/dist/commands/chunk-GL2DZXYD.js +103 -0
- package/dist/commands/chunk-GL3VOBWB.js +170 -0
- package/dist/commands/chunk-GLXOLYZE.js +64 -0
- package/dist/commands/chunk-GNRTFRSL.js +41 -0
- package/dist/commands/chunk-GX5XHW2F.js +132 -0
- package/dist/commands/chunk-GXXWRH6F.js +98 -0
- package/dist/commands/chunk-GY6O2WYG.js +120 -0
- package/dist/commands/chunk-H4IDKP55.js +37 -0
- package/dist/commands/chunk-H5WWD3TX.js +719 -0
- package/dist/commands/chunk-H6MHUR2Y.js +114 -0
- package/dist/commands/chunk-H6TBBVC2.js +73 -0
- package/dist/commands/chunk-HF52YP56.js +178 -0
- package/dist/commands/chunk-HKHGX7TW.js +173 -0
- package/dist/commands/chunk-HLQVLQEB.js +177 -0
- package/dist/commands/chunk-HN3EGYAI.js +169 -0
- package/dist/commands/chunk-HNZLKGKJ.js +43 -0
- package/dist/commands/chunk-HQ5U6OZR.js +315 -0
- package/dist/commands/chunk-HUCOQ4PI.js +161 -0
- package/dist/commands/chunk-HXAVYXUS.js +307 -0
- package/dist/commands/chunk-HXM26K3O.js +67 -0
- package/dist/commands/chunk-HYQ5Q6AE.js +304 -0
- package/dist/commands/chunk-HYVAEK6M.js +155 -0
- package/dist/commands/chunk-I2HHXZVG.js +46 -0
- package/dist/commands/chunk-I2RBOH4F.js +469 -0
- package/dist/commands/chunk-I36PDO6I.js +258 -0
- package/dist/commands/chunk-IAA73DWD.js +212 -0
- package/dist/commands/chunk-IBOCPSPK.js +103 -0
- package/dist/commands/chunk-IC5XLIE2.js +68 -0
- package/dist/commands/chunk-ICKP5W3Q.js +41 -0
- package/dist/commands/chunk-IHQHHNYR.js +1314 -0
- package/dist/commands/chunk-ILQU26IF.js +408 -0
- package/dist/commands/chunk-INOXSDDC.js +7712 -0
- package/dist/commands/chunk-IQMMYORJ.js +554 -0
- package/dist/commands/chunk-ISNZX75X.js +168 -0
- package/dist/commands/chunk-ISY5TFYT.js +80 -0
- package/dist/commands/chunk-IT2O5MOW.js +37 -0
- package/dist/commands/chunk-IV6ETHVB.js +155 -0
- package/dist/commands/chunk-IZPMBGAI.js +202 -0
- package/dist/commands/chunk-J56TYLAL.js +77 -0
- package/dist/commands/chunk-JGC4B5JR.js +94 -0
- package/dist/commands/chunk-JKPYLZ6T.js +198 -0
- package/dist/commands/chunk-JM3EJYA3.js +65 -0
- package/dist/commands/chunk-JN7IG7HT.js +426 -0
- package/dist/commands/chunk-JSJS3OT7.js +679 -0
- package/dist/commands/chunk-JUQN3OXG.js +351 -0
- package/dist/commands/chunk-JUXKVN77.js +100 -0
- package/dist/commands/chunk-JZZURWZH.js +33 -0
- package/dist/commands/chunk-K2FXMBIU.js +95 -0
- package/dist/commands/chunk-K2VIKG5M.js +34 -0
- package/dist/commands/chunk-K3LHBJDY.js +1223 -0
- package/dist/commands/chunk-K3TPIV56.js +480 -0
- package/dist/commands/chunk-K6QAQSCJ.js +98 -0
- package/dist/commands/chunk-KJ2ZIDQP.js +92 -0
- package/dist/commands/chunk-KMED24C4.js +459 -0
- package/dist/commands/chunk-KMVJKK43.js +88 -0
- package/dist/commands/chunk-KXZR7UAE.js +302 -0
- package/dist/commands/chunk-L7GYJHDX.js +223 -0
- package/dist/commands/chunk-LAQZJX5C.js +49 -0
- package/dist/commands/chunk-LAUKNN57.js +530 -0
- package/dist/commands/chunk-LDYDRXOY.js +88 -0
- package/dist/commands/chunk-LZNACCHR.js +174 -0
- package/dist/commands/chunk-MEJ2CQK2.js +102 -0
- package/dist/commands/chunk-MHTKSRAH.js +278 -0
- package/dist/commands/chunk-MI4NHZWO.js +65 -0
- package/dist/commands/chunk-MIDWHXJZ.js +46 -0
- package/dist/commands/chunk-MIZLGSHI.js +419 -0
- package/dist/commands/chunk-MKIHWQ65.js +218 -0
- package/dist/commands/chunk-MOAPWO34.js +292 -0
- package/dist/commands/chunk-MOLXF5KO.js +51 -0
- package/dist/commands/chunk-MQNKIKJ6.js +288 -0
- package/dist/commands/chunk-MT6TRLFD.js +91 -0
- package/dist/commands/chunk-MTPFNRYF.js +213 -0
- package/dist/commands/chunk-N2EE7MMH.js +305 -0
- package/dist/commands/chunk-N5FT5LYP.js +272 -0
- package/dist/commands/chunk-N5YPDLZM.js +114 -0
- package/dist/commands/chunk-NASUAXRJ.js +45 -0
- package/dist/commands/chunk-NAZ753DE.js +540 -0
- package/dist/commands/chunk-NDPR5U4U.js +897 -0
- package/dist/commands/chunk-NFRDCRDI.js +285 -0
- package/dist/commands/chunk-NHXMWRBI.js +16 -0
- package/dist/commands/chunk-NMG65AFQ.js +20 -0
- package/dist/commands/chunk-NQ4D2XZY.js +213 -0
- package/dist/commands/chunk-NQFQVSHV.js +56 -0
- package/dist/commands/chunk-NR4BD5DD.js +38 -0
- package/dist/commands/chunk-NV6Y4U37.js +338 -0
- package/dist/commands/chunk-NWMY2QJJ.js +133 -0
- package/dist/commands/chunk-NXWVWI4U.js +1062 -0
- package/dist/commands/chunk-NZ2UKIY5.js +445 -0
- package/dist/commands/chunk-OB3WF3DW.js +24 -0
- package/dist/commands/chunk-OBMXXG5D.js +181 -0
- package/dist/commands/chunk-OHZ6GLEJ.js +74 -0
- package/dist/commands/chunk-OJO5AADO.js +322 -0
- package/dist/commands/chunk-ORFXTHXU.js +108 -0
- package/dist/commands/chunk-OTCWA4QE.js +910 -0
- package/dist/commands/chunk-OYGNL5RO.js +290 -0
- package/dist/commands/chunk-OYZP5ANC.js +48 -0
- package/dist/commands/chunk-P35FFJXA.js +73 -0
- package/dist/commands/chunk-P3UODIMZ.js +272 -0
- package/dist/commands/chunk-PF2HZHJG.js +94 -0
- package/dist/commands/chunk-PIAVFPYB.js +52 -0
- package/dist/commands/chunk-PLE3MBGO.js +85 -0
- package/dist/commands/chunk-PM3YCN46.js +39 -0
- package/dist/commands/chunk-PMC2N6JK.js +91 -0
- package/dist/commands/chunk-PTJ6X3QK.js +330 -0
- package/dist/commands/chunk-PTRK3NBC.js +211 -0
- package/dist/commands/chunk-Q2VV3WT7.js +120 -0
- package/dist/commands/chunk-Q67SPFHV.js +44 -0
- package/dist/commands/chunk-Q7GMTDMG.js +44 -0
- package/dist/commands/chunk-QA44M56F.js +333 -0
- package/dist/commands/chunk-QDUWBRQC.js +61 -0
- package/dist/commands/chunk-QGTLTPXT.js +58 -0
- package/dist/commands/chunk-QHWQJCV5.js +250 -0
- package/dist/commands/chunk-QI72D6NY.js +54 -0
- package/dist/commands/chunk-QN3FWRDW.js +122 -0
- package/dist/commands/chunk-QQ2JKDSV.js +144 -0
- package/dist/commands/chunk-QRY55H5U.js +48 -0
- package/dist/commands/chunk-QUO5B2JH.js +260 -0
- package/dist/commands/chunk-QY7RITZQ.js +99 -0
- package/dist/commands/chunk-R4GZWGIN.js +160 -0
- package/dist/commands/chunk-RETTGONB.js +84 -0
- package/dist/commands/chunk-RH4LJ4D6.js +69 -0
- package/dist/commands/chunk-RKCENL5P.js +271 -0
- package/dist/commands/chunk-RLWK2CP3.js +82 -0
- package/dist/commands/chunk-RMDQQKXD.js +179 -0
- package/dist/commands/chunk-RRNC3QEB.js +449 -0
- package/dist/commands/chunk-RUCV7UYK.js +341 -0
- package/dist/commands/chunk-RVFE7JDZ.js +126 -0
- package/dist/commands/chunk-RVKFX3FD.js +70 -0
- package/dist/commands/chunk-RW7OILP7.js +71 -0
- package/dist/commands/chunk-S23MUFND.js +122 -0
- package/dist/commands/chunk-S3DRNZRT.js +74 -0
- package/dist/commands/chunk-SB3R6E3R.js +49 -0
- package/dist/commands/chunk-SCCUBRDO.js +237 -0
- package/dist/commands/chunk-SIPHEZXP.js +72 -0
- package/dist/commands/chunk-SK3GDQOI.js +20 -0
- package/dist/commands/chunk-SNXSRNFI.js +1052 -0
- package/dist/commands/chunk-SWHN7TNT.js +59 -0
- package/dist/commands/chunk-T5D3BW3D.js +85 -0
- package/dist/commands/chunk-T76CS2AQ.js +307 -0
- package/dist/commands/chunk-TBIX42IT.js +144 -0
- package/dist/commands/chunk-TGCIRQG5.js +109 -0
- package/dist/commands/chunk-TJAGKUS2.js +84 -0
- package/dist/commands/chunk-TKRUZZXG.js +103 -0
- package/dist/commands/chunk-TLCFZAL4.js +63 -0
- package/dist/commands/chunk-TNPFVNKX.js +585 -0
- package/dist/commands/chunk-TNU3IEAP.js +151 -0
- package/dist/commands/chunk-TQ6M5ICK.js +49 -0
- package/dist/commands/chunk-TR6NTNWR.js +128 -0
- package/dist/commands/chunk-TSS2RKBC.js +271 -0
- package/dist/commands/chunk-TWI7UTVE.js +799 -0
- package/dist/commands/chunk-TXXEXJAV.js +390 -0
- package/dist/commands/chunk-U6SMBYTN.js +472 -0
- package/dist/commands/chunk-U7JJGYYY.js +30 -0
- package/dist/commands/chunk-UACWDTJ5.js +106 -0
- package/dist/commands/chunk-UBWYGOEC.js +86 -0
- package/dist/commands/chunk-UC5ZOPKX.js +3983 -0
- package/dist/commands/chunk-UJFEMO6X.js +153 -0
- package/dist/commands/chunk-ULL3OIAG.js +59 -0
- package/dist/commands/chunk-UN6BPKQ5.js +922 -0
- package/dist/commands/chunk-UW3KES66.js +32 -0
- package/dist/commands/chunk-UWLANGIR.js +817 -0
- package/dist/commands/chunk-UYHREBT7.js +99 -0
- package/dist/commands/chunk-V2KHY4UQ.js +393 -0
- package/dist/commands/chunk-V36OV7AP.js +191 -0
- package/dist/commands/chunk-V37AWEYE.js +62 -0
- package/dist/commands/chunk-V4D4YV4B.js +110 -0
- package/dist/commands/chunk-V56NLG7I.js +217 -0
- package/dist/commands/chunk-V6WHDQAZ.js +74 -0
- package/dist/commands/chunk-V6WWW6HX.js +140 -0
- package/dist/commands/chunk-V7QOC5NV.js +51 -0
- package/dist/commands/chunk-VA4M733Q.js +127 -0
- package/dist/commands/chunk-VBZ47BVH.js +64 -0
- package/dist/commands/chunk-VD4ELMDA.js +158 -0
- package/dist/commands/chunk-VFW6XZH7.js +469 -0
- package/dist/commands/chunk-VHSGVCRM.js +244 -0
- package/dist/commands/chunk-VJNE7W7O.js +1153 -0
- package/dist/commands/chunk-VLDPUHGE.js +134 -0
- package/dist/commands/chunk-VMMNYTET.js +61 -0
- package/dist/commands/chunk-VO2GSW5P.js +99 -0
- package/dist/commands/chunk-VP3P7FLJ.js +168 -0
- package/dist/commands/chunk-VRS252GW.js +88 -0
- package/dist/commands/chunk-VWNVKWLV.js +298 -0
- package/dist/commands/chunk-VXWGPQJX.js +140 -0
- package/dist/commands/chunk-W4R6ZBLO.js +197 -0
- package/dist/commands/chunk-WE2UMZXX.js +47 -0
- package/dist/commands/chunk-WEEJU3EH.js +109 -0
- package/dist/commands/chunk-WHXGUOYP.js +48 -0
- package/dist/commands/chunk-WHYYBPIC.js +113 -0
- package/dist/commands/chunk-WKXMY7MW.js +84 -0
- package/dist/commands/chunk-WPSCCUTE.js +119 -0
- package/dist/commands/chunk-WQ3O7IKL.js +289 -0
- package/dist/commands/chunk-WSTNBBR3.js +22 -0
- package/dist/commands/chunk-WX3HQXBK.js +124 -0
- package/dist/commands/chunk-WYAY6CQI.js +541 -0
- package/dist/commands/chunk-XBXY3R4K.js +74 -0
- package/dist/commands/chunk-XDWCF4XH.js +347 -0
- package/dist/commands/chunk-XHLSJPV7.js +69 -0
- package/dist/commands/chunk-XHR7O2DE.js +52 -0
- package/dist/commands/chunk-XIV3UDHV.js +119 -0
- package/dist/commands/chunk-XMNPU3J5.js +469 -0
- package/dist/commands/chunk-XMZJB7JP.js +100 -0
- package/dist/commands/chunk-XO7S2BTY.js +365 -0
- package/dist/commands/chunk-XQDG56LP.js +47 -0
- package/dist/commands/chunk-XSBLCTDI.js +143 -0
- package/dist/commands/chunk-XT3W32DO.js +977 -0
- package/dist/commands/chunk-XUA7QZET.js +1263 -0
- package/dist/commands/chunk-XZQHP4JR.js +145 -0
- package/dist/commands/chunk-YDVFQL3G.js +23 -0
- package/dist/commands/chunk-YFD46GB2.js +45 -0
- package/dist/commands/chunk-YJMOFRL7.js +269 -0
- package/dist/commands/chunk-YPCMBQYP.js +88 -0
- package/dist/commands/chunk-YR5RS4YT.js +38 -0
- package/dist/commands/chunk-YSBLGTDZ.js +339 -0
- package/dist/commands/chunk-YSDBY2G7.js +186 -0
- package/dist/commands/chunk-YSL43R4Y.js +149 -0
- package/dist/commands/chunk-YUAIWKOM.js +132 -0
- package/dist/commands/chunk-YVNYX4UA.js +74 -0
- package/dist/commands/chunk-Z2GZIWAU.js +33 -0
- package/dist/commands/chunk-Z3XNSXQH.js +47 -0
- package/dist/commands/chunk-Z4E7V7YJ.js +18 -0
- package/dist/commands/chunk-Z7C2O5JC.js +299 -0
- package/dist/commands/chunk-Z7R6JWN7.js +1077 -0
- package/dist/commands/chunk-ZB25RO3U.js +208 -0
- package/dist/commands/chunk-ZBRUCKLP.js +133 -0
- package/dist/commands/chunk-ZCWBZOBM.js +61 -0
- package/dist/commands/chunk-ZDP6SKBK.js +246 -0
- package/dist/commands/chunk-ZEVI2ZGI.js +145 -0
- package/dist/commands/chunk-ZF3SZQRJ.js +44 -0
- package/dist/commands/chunk-ZHEUK3ZX.js +16 -0
- package/dist/commands/chunk-ZJ5C6KVM.js +1072 -0
- package/dist/commands/chunk-ZMDHJ6QF.js +42 -0
- package/dist/commands/chunk-ZMS3EFW3.js +1250 -0
- package/dist/commands/chunk-ZMWL7LZM.js +210 -0
- package/dist/commands/chunk-ZNFVJETO.js +263 -0
- package/dist/commands/chunk-ZQEKIMBV.js +82 -0
- package/dist/commands/chunk-ZW6DLYS4.js +646 -0
- package/dist/commands/ci-timing-cli.js +10 -10
- package/dist/commands/code-symbol-cli.js +11 -11
- package/dist/commands/codex-hook-adapter.js +105 -106
- package/dist/commands/command-derive.js +5 -5
- package/dist/commands/cost-audit-main.js +139 -99
- package/dist/commands/cspell-cached.js +38 -37
- package/dist/commands/defect-origin-main.js +32 -32
- package/dist/commands/defect-report-main.js +29 -29
- package/dist/commands/diff-summary-cli.js +3 -3
- package/dist/commands/disposition-cli.js +108 -96
- package/dist/commands/doctor.js +13 -13
- package/dist/commands/document-read-cli.js +35 -35
- package/dist/commands/document-section-main.js +35 -35
- package/dist/commands/dogfood-commit-cli.js +11 -11
- package/dist/commands/effect-audit-cli.js +41 -35
- package/dist/commands/epic-audit-main.js +77 -76
- package/dist/commands/epic-bundle-main.js +167 -111
- package/dist/commands/epic-check.js +29 -29
- package/dist/commands/epic-main.js +170 -117
- package/dist/commands/epic-next-main.js +73 -72
- package/dist/commands/format-edited-cli.js +43 -43
- package/dist/commands/format.js +21 -21
- package/dist/commands/fresh-machine-cli.js +9 -9
- package/dist/commands/gh-usage-cli.js +13 -13
- package/dist/commands/git-followup-workflow.js +130 -130
- package/dist/commands/git-gh-checks-failed-main.js +16 -16
- package/dist/commands/git-workflow.js +47 -47
- package/dist/commands/hook-ledger-cli.js +113 -74
- package/dist/commands/init-main.js +28 -28
- package/dist/commands/inputs.json +2011 -2001
- package/dist/commands/issue-ack-cli.js +17 -17
- package/dist/commands/issue-already-done-cli.js +88 -87
- package/dist/commands/issue-body-cli.js +78 -64
- package/dist/commands/issue-cite-main.js +26 -26
- package/dist/commands/issue-comment-main.js +29 -29
- package/dist/commands/issue-consolidate-cli.js +43 -43
- package/dist/commands/issue-file-main.js +181 -133
- package/dist/commands/issue-fold-existing-cli.js +169 -113
- package/dist/commands/issue-fold-main.js +44 -43
- package/dist/commands/issue-lint-main.js +55 -54
- package/dist/commands/issue-measured-cli.js +91 -90
- package/dist/commands/issue-plan-cli.js +136 -135
- package/dist/commands/issue-premise-unmet-cli.js +91 -90
- package/dist/commands/issue-priority-cli.js +28 -28
- package/dist/commands/issue-read-main.js +30 -30
- package/dist/commands/issue-release-class-cli.js +26 -26
- package/dist/commands/issue-release-main.js +28 -28
- package/dist/commands/issue-scout-main.js +168 -112
- package/dist/commands/issue-spill-main.js +194 -135
- package/dist/commands/issue-state-main.js +28 -28
- package/dist/commands/issue-tick-cli.js +28 -28
- package/dist/commands/josh-completion.js +12 -12
- package/dist/commands/lane-adopt-cli.js +38 -37
- package/dist/commands/lane-breakdown-cli.js +176 -166
- package/dist/commands/lane-cli.js +163 -163
- package/dist/commands/lane-launch-main.js +71 -70
- package/dist/commands/lane-limit-cli.js +162 -106
- package/dist/commands/lane-measure-cli.js +386 -254
- package/dist/commands/lane-pause-cli.js +33 -32
- package/dist/commands/lane-plan-cli.js +134 -133
- package/dist/commands/lane-resolve-cli.js +35 -35
- package/dist/commands/lane-restart-cli.js +157 -157
- package/dist/commands/lane-why-cli.js +131 -102
- package/dist/commands/lane-withdraw-cli.js +66 -65
- package/dist/commands/latest-if-required-cli.js +5 -5
- package/dist/commands/lines-command.js +3 -3
- package/dist/commands/lint-parallel-main.js +47 -46
- package/dist/commands/lint-related.js +86 -86
- package/dist/commands/lint-rule.js +46 -45
- package/dist/commands/lockfile-policy.js +18 -18
- package/dist/commands/main-merge-main.js +12 -12
- package/dist/commands/main-sync-main.js +12 -12
- package/dist/commands/managed-config-scope-cli.js +7 -7
- package/dist/commands/measure-rerun-cli.js +23 -23
- package/dist/commands/metrics-command.js +67 -67
- package/dist/commands/observation-record-cli.js +13 -13
- package/dist/commands/observations-flush-cli.js +41 -41
- package/dist/commands/package-scout-cli.js +52 -52
- package/dist/commands/pin-verify-cli.js +9 -9
- package/dist/commands/plan-consumers-main.js +6 -6
- package/dist/commands/plan-scaffold-cli.js +125 -125
- package/dist/commands/pr-classification-main.js +12 -12
- package/dist/commands/pre-commit-lint.js +14 -15
- package/dist/commands/pre-commit-type-check.js +46 -46
- package/dist/commands/pre-push-unit.js +51 -52
- package/dist/commands/pretool-guard-cli.js +94 -94
- package/dist/commands/prevent-main-commit.js +2 -2
- package/dist/commands/project-profile-cli.js +13 -13
- package/dist/commands/propagate.js +22 -22
- package/dist/commands/prose-stale-cli.js +32 -32
- package/dist/commands/read-set-cli.js +39 -39
- package/dist/commands/refactor-scan-cli.js +5 -5
- package/dist/commands/release-cli.js +95 -43
- package/dist/commands/release-scope-main.js +34 -34
- package/dist/commands/rename-cli.js +39 -38
- package/dist/commands/report-template-cli.js +3 -3
- package/dist/commands/reserved-run.js +10 -10
- package/dist/commands/retrospective-cli.js +141 -102
- package/dist/commands/review-attest-cli.js +19 -19
- package/dist/commands/review-brief-main.js +159 -159
- package/dist/commands/review-findings-cli.js +12 -12
- package/dist/commands/review-pair-cli.js +145 -145
- package/dist/commands/review-record-main.js +145 -145
- package/dist/commands/review-round2-cli.js +66 -65
- package/dist/commands/review-stops-cli.js +35 -34
- package/dist/commands/review-submit-cli.js +159 -159
- package/dist/commands/rule-list.js +59 -59
- package/dist/commands/rule-value-cli.js +129 -93
- package/dist/commands/ruleset-check-cli.js +12 -12
- package/dist/commands/run-add-cli.js +61 -61
- package/dist/commands/run-board-main.js +197 -156
- package/dist/commands/run-carry-cli.js +182 -150
- package/dist/commands/run-chain-cli.js +153 -153
- package/dist/commands/run-cut-cli.js +160 -160
- package/dist/commands/run-ending-cli.js +34 -34
- package/dist/commands/run-entry-cli.js +210 -201
- package/dist/commands/run-event-cli.js +9 -8
- package/dist/commands/run-handoff-cli.js +50 -50
- package/dist/commands/run-handoff-lanes-cli.js +34 -33
- package/dist/commands/run-hold-main.js +87 -86
- package/dist/commands/run-liveness-cli.js +31 -30
- package/dist/commands/run-merge-main.js +171 -139
- package/dist/commands/run-next-cli.js +110 -110
- package/dist/commands/run-park-cli.js +109 -109
- package/dist/commands/run-pause-cli.js +189 -165
- package/dist/commands/run-pickup-cli.js +34 -33
- package/dist/commands/run-prep-main.js +106 -106
- package/dist/commands/run-prime-cli.js +136 -136
- package/dist/commands/run-progress-main.js +174 -127
- package/dist/commands/run-report-cli.js +45 -44
- package/dist/commands/run-review-cli.js +188 -188
- package/dist/commands/run-ship-cli.js +239 -234
- package/dist/commands/run-ship-evidence-cli.js +53 -54
- package/dist/commands/run-ship-lap-DGUAMCPY.js +28 -0
- package/dist/commands/run-ship-wait-main.js +64 -63
- package/dist/commands/run-split-cli.js +183 -156
- package/dist/commands/run-stale-main.js +55 -54
- package/dist/commands/run-status-cli.js +28 -28
- package/dist/commands/run-step-cli.js +192 -190
- package/dist/commands/run-tail-cli.js +9 -9
- package/dist/commands/run-tidy-main.js +53 -52
- package/dist/commands/run-wake-main.js +178 -178
- package/dist/commands/run-watcher-guard-cli.js +51 -50
- package/dist/commands/security-audit-main.js +8 -8
- package/dist/commands/security-audit-provision-main.js +5 -5
- package/dist/commands/selfcheck-cli.js +47 -47
- package/dist/commands/session-language-main.js +51 -51
- package/dist/commands/sonar-hotspots-cli.js +5 -5
- package/dist/commands/sonar-new-code-cli.js +3 -3
- package/dist/commands/split-assess-cli.js +42 -41
- package/dist/commands/split-child-recover-cli.js +28 -28
- package/dist/commands/start.js +53 -53
- package/dist/commands/stash-pop-main.js +3 -3
- package/dist/commands/stash-push-main.js +4 -4
- package/dist/commands/stop-guard.js +183 -159
- package/dist/commands/sync-main.js +18 -18
- package/dist/commands/telegram-test-main.js +20 -20
- package/dist/commands/test-declared.js +15 -15
- package/dist/commands/test-e2e-guard.js +41 -41
- package/dist/commands/test-pinned-main.js +43 -43
- package/dist/commands/test-reach-cli.js +27 -27
- package/dist/commands/test-red-main.js +12 -12
- package/dist/commands/test-related-UHUIUC7X.js +112 -0
- package/dist/commands/test-related-main.js +75 -76
- package/dist/commands/test-unit-guard-main.js +21 -21
- package/dist/commands/time-cli.js +34 -34
- package/dist/commands/time-density-cli.js +13 -12
- package/dist/commands/tree-status-cli.js +4 -4
- package/dist/commands/type-check-command.js +14 -14
- package/dist/commands/ui-routes-cli.js +4 -4
- package/dist/commands/uninstall.js +30 -30
- package/dist/commands/unused-members-LOSERD3C.js +329 -0
- package/dist/commands/unused-members-cli.js +15 -15
- package/dist/commands/upstream-interrupt-main.js +183 -136
- package/dist/commands/verification-gate.js +71 -72
- package/dist/commands/version-check.js +12 -12
- package/dist/hooks/audit-provision.js +4 -4
- package/dist/hooks/chunk-2R62D5UU.js +12 -0
- package/dist/hooks/chunk-3J5M7SXZ.js +1059 -0
- package/dist/hooks/chunk-4UAA2YFC.js +258 -0
- package/dist/hooks/chunk-74D3EJGW.js +5204 -0
- package/dist/hooks/chunk-74FYAI2L.js +43 -0
- package/dist/hooks/chunk-ALY5AW75.js +1953 -0
- package/dist/hooks/chunk-FBDC6KVJ.js +77 -0
- package/dist/hooks/chunk-HKUR6WKR.js +6874 -0
- package/dist/hooks/chunk-NFTDYUN3.js +1915 -0
- package/dist/hooks/chunk-NP6BVTR3.js +9176 -0
- package/dist/hooks/chunk-OOEG63LD.js +321 -0
- package/dist/hooks/chunk-RWVA2SFN.js +28584 -0
- package/dist/hooks/chunk-U55QDXSC.js +32 -0
- package/dist/hooks/chunk-VWZOPSZX.js +5092 -0
- package/dist/hooks/chunk-Z6W64J64.js +11254 -0
- package/dist/hooks/codex-hook-adapter.js +12 -12
- package/dist/hooks/daemon.js +112 -40
- package/dist/hooks/format-edited.js +7 -7
- package/dist/hooks/inputs.json +612 -556
- package/dist/hooks/pretool-guard.js +10 -10
- package/dist/hooks/run-ship-lap-XDLXQIS3.js +8 -0
- package/dist/hooks/session-lang.js +7 -7
- package/dist/hooks/stop-guard.js +8396 -4497
- package/dist/inputs.json +76 -76
- package/dist/josh.js +31 -15
- package/dist/registry-migrate.mjs +32 -8
- package/dist/version/index.js +48 -19
- package/package.json +1 -1
- package/prompts/collaboration-workflow/issue-template.en.md +5 -0
- package/prompts/collaboration-workflow/issue-template.md +14 -1
- package/scripts/backlog/backlog-drive-cli.ts +2 -1
- package/scripts/backlog/backlog-drive-listing.ts +20 -6
- package/scripts/backlog/backlog-hold-text.ts +1 -0
- package/scripts/backlog/backlog-listing-trace.ts +35 -0
- package/scripts/backlog/backlog-offer-timing.ts +10 -2
- package/scripts/backlog/backlog-wait-cause.ts +10 -2
- package/scripts/document/document-byte-budget.ts +2 -2
- package/scripts/git/git-command.ts +7 -3
- package/scripts/git/git-pre-push-hook.ts +9 -5
- package/scripts/git/git-spawn.ts +20 -4
- package/scripts/hooks/implementation-shell-deny-git.ts +17 -3
- package/scripts/hooks/pre-push-related-switch.ts +3 -2
- package/scripts/hooks/pre-push-unit.ts +3 -1
- package/scripts/issue/effect-audit.ts +7 -0
- package/scripts/issue/issue-body-cli.ts +18 -2
- package/scripts/issue/issue-body-keys.ts +1 -0
- package/scripts/issue/issue-file-pass.ts +1 -0
- package/scripts/issue/issue-lint-cli.ts +16 -2
- package/scripts/issue/issue-lint.ts +16 -0
- package/scripts/issue/issue-publication-state.ts +82 -6
- package/scripts/issue/issue-spill.ts +18 -4
- package/scripts/issue/issue-template-section.ts +7 -1
- package/scripts/josh/josh-commands-ai.ts +3 -2
- package/scripts/lane/lane-chain-stop-stats.ts +19 -7
- package/scripts/lane/lane-concurrency-stats.ts +39 -14
- package/scripts/lane/lane-concurrency-wait.ts +64 -0
- package/scripts/lane/lane-core-wait-stats.ts +13 -4
- package/scripts/lane/lane-implement-read-calls.ts +123 -0
- package/scripts/lane/lane-implement-read.ts +8 -3
- package/scripts/lane/lane-implement-stats.ts +33 -6
- package/scripts/lane/lane-ledger-schema-ship.ts +17 -3
- package/scripts/lane/lane-measure-cli.ts +5 -3
- package/scripts/lane/lane-plan-size.ts +1 -1
- package/scripts/lane/lane-size-record.ts +4 -3
- package/scripts/lane/lane-size-stats.ts +21 -9
- package/scripts/lane/lane-stats-request.ts +12 -3
- package/scripts/lane/lane-stats-tables.ts +30 -9
- package/scripts/lane/lane-stop-stats.ts +10 -1
- package/scripts/lane/lane-table-rows.ts +26 -0
- package/scripts/lib/timeouts.ts +4 -3
- package/scripts/registry-migration/migrate-lock.ts +40 -8
- package/scripts/registry-migration/migrate.ts +6 -3
- package/scripts/release/release-publish.ts +23 -3
- package/scripts/release/release-step-time.ts +61 -0
- package/scripts/review/disposition-batch-filing.ts +13 -0
- package/scripts/rules/git-argv.ts +10 -3
- package/scripts/run/board/run-board-closed-pace.ts +76 -0
- package/scripts/run/board/run-board-github.ts +17 -28
- package/scripts/run/board/run-board-labels.ts +5 -2
- package/scripts/run/board/run-board-reason.ts +10 -0
- package/scripts/run/entry/run-entry-sync.ts +17 -5
- package/scripts/run/hold/run-hold-cli.ts +8 -2
- package/scripts/run/merge/run-merge-health.ts +9 -2
- package/scripts/run/review/run-review-pinned-accepted.ts +24 -1
- package/scripts/run/run-preflight.ts +81 -17
- package/scripts/run/ship/run-ship-pre-detach-pinned.ts +14 -9
- package/scripts/run/ship/run-ship-pre-detach.ts +16 -7
- package/scripts/run/ship/run-ship-stop-cause.ts +13 -2
- package/scripts/run/ship/run-ship.ts +7 -1
- package/scripts/split/split-assess.ts +7 -22
- package/scripts/split/split-cap.ts +31 -0
- package/scripts/test/direct-importers.ts +46 -3
- package/scripts/test/lockfile-changed-packages.ts +155 -0
- package/scripts/test/package-version-only.ts +30 -0
- package/scripts/test/pure-files-entries.ts +1 -27
- package/scripts/test/test-related-scope.ts +30 -5
- package/scripts/test/test-related.ts +3 -3
- package/scripts/test/test-unit-guard.ts +9 -9
- package/scripts/test/unit-worker-share.ts +21 -0
- package/scripts/test/whole-suite-files.ts +23 -2
- package/scripts/test/whole-suite-narrowing.ts +108 -0
- package/dist/commands/chunk-26JL4UU4.js +0 -365
- package/dist/commands/chunk-2BC33QPY.js +0 -183
- package/dist/commands/chunk-2BIVHPCA.js +0 -85
- package/dist/commands/chunk-2CKJODCK.js +0 -245
- package/dist/commands/chunk-2CNVIA35.js +0 -335
- package/dist/commands/chunk-2E6PSONB.js +0 -46
- package/dist/commands/chunk-2GA4775H.js +0 -77
- package/dist/commands/chunk-2O64H5UJ.js +0 -462
- package/dist/commands/chunk-2OEXY4GM.js +0 -252
- package/dist/commands/chunk-2ONSHOAY.js +0 -46
- package/dist/commands/chunk-2SA3W4JF.js +0 -41
- package/dist/commands/chunk-2VY7CJ2R.js +0 -212
- package/dist/commands/chunk-2WRDAQPJ.js +0 -74
- package/dist/commands/chunk-2XLR7R6E.js +0 -541
- package/dist/commands/chunk-34JJYCIY.js +0 -117
- package/dist/commands/chunk-36XHHYNU.js +0 -158
- package/dist/commands/chunk-3CJNQU7P.js +0 -179
- package/dist/commands/chunk-3D5T6KMW.js +0 -59
- package/dist/commands/chunk-3EW5LTN3.js +0 -114
- package/dist/commands/chunk-3F3RNIG2.js +0 -128
- package/dist/commands/chunk-3FLTEJZY.js +0 -74
- package/dist/commands/chunk-3JWPTRNI.js +0 -60
- package/dist/commands/chunk-3LUPGBW4.js +0 -137
- package/dist/commands/chunk-3PCUERXE.js +0 -19
- package/dist/commands/chunk-3U6A5WON.js +0 -173
- package/dist/commands/chunk-3VLDFM5I.js +0 -426
- package/dist/commands/chunk-3YT3RCSI.js +0 -140
- package/dist/commands/chunk-43DU7DYZ.js +0 -540
- package/dist/commands/chunk-43H725LG.js +0 -132
- package/dist/commands/chunk-46STCE6Q.js +0 -48
- package/dist/commands/chunk-46WEC6HZ.js +0 -82
- package/dist/commands/chunk-47J4KOZP.js +0 -46
- package/dist/commands/chunk-47W7PF4T.js +0 -22
- package/dist/commands/chunk-4F4KARQN.js +0 -229
- package/dist/commands/chunk-4HB7NWXP.js +0 -263
- package/dist/commands/chunk-4I5AA4P5.js +0 -237
- package/dist/commands/chunk-4IDINPBE.js +0 -525
- package/dist/commands/chunk-4NSIW3UB.js +0 -104
- package/dist/commands/chunk-4YTKV6WV.js +0 -37
- package/dist/commands/chunk-5ARNFMQK.js +0 -1263
- package/dist/commands/chunk-5AZTSESD.js +0 -114
- package/dist/commands/chunk-5FUI2MLY.js +0 -89
- package/dist/commands/chunk-5IHEBIPD.js +0 -333
- package/dist/commands/chunk-5KAW5GPF.js +0 -44
- package/dist/commands/chunk-5KSJEWXR.js +0 -77
- package/dist/commands/chunk-5PCK53WP.js +0 -168
- package/dist/commands/chunk-5PPWXOCF.js +0 -64
- package/dist/commands/chunk-5Y7FOJLX.js +0 -186
- package/dist/commands/chunk-5YTEMF4O.js +0 -110
- package/dist/commands/chunk-6AHAY5VZ.js +0 -69
- package/dist/commands/chunk-6FN37DER.js +0 -330
- package/dist/commands/chunk-6JD4VNO4.js +0 -124
- package/dist/commands/chunk-6KUA7MRG.js +0 -64
- package/dist/commands/chunk-6LDEZFYR.js +0 -88
- package/dist/commands/chunk-6NXIZMIK.js +0 -122
- package/dist/commands/chunk-6O45F6YI.js +0 -86
- package/dist/commands/chunk-6OHJBQDE.js +0 -184
- package/dist/commands/chunk-6TIVDEKG.js +0 -34
- package/dist/commands/chunk-6WDCCG3M.js +0 -1249
- package/dist/commands/chunk-6ZHXEQAI.js +0 -715
- package/dist/commands/chunk-736NECRD.js +0 -16
- package/dist/commands/chunk-77LEKVEE.js +0 -32
- package/dist/commands/chunk-7DGHFBU7.js +0 -247
- package/dist/commands/chunk-7EAYFMDN.js +0 -235
- package/dist/commands/chunk-7HYYHCTN.js +0 -402
- package/dist/commands/chunk-7JOOMFDI.js +0 -155
- package/dist/commands/chunk-7K5ITPHR.js +0 -338
- package/dist/commands/chunk-7OEBSPPU.js +0 -321
- package/dist/commands/chunk-7ULYLGUK.js +0 -492
- package/dist/commands/chunk-A3JYZWBS.js +0 -803
- package/dist/commands/chunk-A3LCN4KA.js +0 -84
- package/dist/commands/chunk-ABLXBG6C.js +0 -98
- package/dist/commands/chunk-ABM2MZBF.js +0 -161
- package/dist/commands/chunk-AN7BFVHU.js +0 -244
- package/dist/commands/chunk-AQCVEQSM.js +0 -99
- package/dist/commands/chunk-AU563VKH.js +0 -75
- package/dist/commands/chunk-AUTD5FV2.js +0 -1077
- package/dist/commands/chunk-AV26CMY6.js +0 -304
- package/dist/commands/chunk-B2PJEV3S.js +0 -246
- package/dist/commands/chunk-B545ENGY.js +0 -214
- package/dist/commands/chunk-B5HP6T4L.js +0 -170
- package/dist/commands/chunk-B73IIRMS.js +0 -207
- package/dist/commands/chunk-BBLEC4YQ.js +0 -109
- package/dist/commands/chunk-BDSG6JKH.js +0 -977
- package/dist/commands/chunk-BFKTUD3V.js +0 -33
- package/dist/commands/chunk-BLRXHK2V.js +0 -17
- package/dist/commands/chunk-BML6MEUB.js +0 -326
- package/dist/commands/chunk-BMM4RHCG.js +0 -69
- package/dist/commands/chunk-BPDNGJXY.js +0 -63
- package/dist/commands/chunk-BQLKWGGC.js +0 -118
- package/dist/commands/chunk-BRMJVCP7.js +0 -167
- package/dist/commands/chunk-BRWR5YKU.js +0 -268
- package/dist/commands/chunk-BUZAYEBD.js +0 -319
- package/dist/commands/chunk-C7FGDZWP.js +0 -224
- package/dist/commands/chunk-CC4BIGCA.js +0 -20
- package/dist/commands/chunk-CCHJZEF5.js +0 -4220
- package/dist/commands/chunk-CDK7QZWG.js +0 -44
- package/dist/commands/chunk-CDYFUCDC.js +0 -72
- package/dist/commands/chunk-CEADAQIL.js +0 -170
- package/dist/commands/chunk-CNL3SLM6.js +0 -116
- package/dist/commands/chunk-CNQ7D2GZ.js +0 -104
- package/dist/commands/chunk-COGKULQH.js +0 -119
- package/dist/commands/chunk-CQUZ6TNQ.js +0 -120
- package/dist/commands/chunk-CTXJVMHW.js +0 -48
- package/dist/commands/chunk-CUWT6UQO.js +0 -13
- package/dist/commands/chunk-D6CF5QGM.js +0 -80
- package/dist/commands/chunk-DACNQAXC.js +0 -20
- package/dist/commands/chunk-DDOS32JU.js +0 -74
- package/dist/commands/chunk-DF6QD4AF.js +0 -52
- package/dist/commands/chunk-DFEXNB44.js +0 -159
- package/dist/commands/chunk-DHDKG5HZ.js +0 -151
- package/dist/commands/chunk-DHJRFBKO.js +0 -223
- package/dist/commands/chunk-DKO5VTEH.js +0 -65
- package/dist/commands/chunk-DLHH3MLS.js +0 -85
- package/dist/commands/chunk-DOYNK72G.js +0 -81
- package/dist/commands/chunk-DS53UUDH.js +0 -679
- package/dist/commands/chunk-DUA4E4ES.js +0 -230
- package/dist/commands/chunk-DVCMQMRN.js +0 -191
- package/dist/commands/chunk-E3YKMCCJ.js +0 -108
- package/dist/commands/chunk-E4F2RTKC.js +0 -272
- package/dist/commands/chunk-E4PFCTXN.js +0 -127
- package/dist/commands/chunk-EAOTR2WL.js +0 -24
- package/dist/commands/chunk-EHPTXSAT.js +0 -315
- package/dist/commands/chunk-EHVEWJQ4.js +0 -33
- package/dist/commands/chunk-EMFSPPMH.js +0 -98
- package/dist/commands/chunk-EPICTV2P.js +0 -46
- package/dist/commands/chunk-ES42XPAD.js +0 -123
- package/dist/commands/chunk-ESUY7KTZ.js +0 -137
- package/dist/commands/chunk-EVVQJJFV.js +0 -507
- package/dist/commands/chunk-EWXXEGXL.js +0 -149
- package/dist/commands/chunk-F2U46HAE.js +0 -52
- package/dist/commands/chunk-F2VYWU6Z.js +0 -653
- package/dist/commands/chunk-F4SGOTUF.js +0 -36
- package/dist/commands/chunk-F4YMLVWN.js +0 -183
- package/dist/commands/chunk-F57LACNC.js +0 -84
- package/dist/commands/chunk-F5N2QIFD.js +0 -213
- package/dist/commands/chunk-FA7CN75F.js +0 -160
- package/dist/commands/chunk-FDASVHZD.js +0 -241
- package/dist/commands/chunk-FEYZ575X.js +0 -278
- package/dist/commands/chunk-FJM2HWKW.js +0 -299
- package/dist/commands/chunk-FJMXUDEY.js +0 -3985
- package/dist/commands/chunk-FM7VVAK6.js +0 -426
- package/dist/commands/chunk-FQWRM5FC.js +0 -67
- package/dist/commands/chunk-FT33ZCSB.js +0 -298
- package/dist/commands/chunk-FTAWHAI7.js +0 -170
- package/dist/commands/chunk-G2DNS74C.js +0 -53
- package/dist/commands/chunk-G3BBCAAH.js +0 -90
- package/dist/commands/chunk-G6BXCWPH.js +0 -141
- package/dist/commands/chunk-GABDPTDK.js +0 -907
- package/dist/commands/chunk-GAVSK6P6.js +0 -230
- package/dist/commands/chunk-GB2BRQVL.js +0 -300
- package/dist/commands/chunk-GBMZXFFC.js +0 -44
- package/dist/commands/chunk-GGWXF7RJ.js +0 -70
- package/dist/commands/chunk-GHOTKHI4.js +0 -30
- package/dist/commands/chunk-GMVN6ZP2.js +0 -48
- package/dist/commands/chunk-GNTTGRCX.js +0 -133
- package/dist/commands/chunk-GOY5JECO.js +0 -130
- package/dist/commands/chunk-GZL6ISVM.js +0 -72
- package/dist/commands/chunk-HALHQILI.js +0 -51
- package/dist/commands/chunk-HAT7AFBF.js +0 -85
- package/dist/commands/chunk-HDVSZ6CZ.js +0 -292
- package/dist/commands/chunk-HE3GOMR7.js +0 -88
- package/dist/commands/chunk-HEFUC4ZW.js +0 -65
- package/dist/commands/chunk-HHS3LYLV.js +0 -30
- package/dist/commands/chunk-HQSWPRUF.js +0 -61
- package/dist/commands/chunk-HQZ65PJE.js +0 -167
- package/dist/commands/chunk-HRN73FQJ.js +0 -77
- package/dist/commands/chunk-HSZECERZ.js +0 -271
- package/dist/commands/chunk-HYE3MBAN.js +0 -113
- package/dist/commands/chunk-IAB6LCJL.js +0 -18
- package/dist/commands/chunk-IAGENI2U.js +0 -42
- package/dist/commands/chunk-ICPVBHIX.js +0 -48
- package/dist/commands/chunk-ILIITIMQ.js +0 -126
- package/dist/commands/chunk-IONGJJYM.js +0 -179
- package/dist/commands/chunk-IP23WOWP.js +0 -126
- package/dist/commands/chunk-IPS7EBE5.js +0 -140
- package/dist/commands/chunk-IXZZSST7.js +0 -459
- package/dist/commands/chunk-IY3DSDRW.js +0 -173
- package/dist/commands/chunk-J2RUI4KN.js +0 -47
- package/dist/commands/chunk-J3PCRUVY.js +0 -1223
- package/dist/commands/chunk-J4XHEOOW.js +0 -156
- package/dist/commands/chunk-JDHLHYJJ.js +0 -208
- package/dist/commands/chunk-JGX7JIW4.js +0 -126
- package/dist/commands/chunk-JHIGDFBS.js +0 -59
- package/dist/commands/chunk-JI2EGXZX.js +0 -53
- package/dist/commands/chunk-JNV3VRK2.js +0 -47
- package/dist/commands/chunk-JPMAW2VZ.js +0 -91
- package/dist/commands/chunk-JQEY6KDP.js +0 -90
- package/dist/commands/chunk-JSJDIEGZ.js +0 -88
- package/dist/commands/chunk-JT5ICRFF.js +0 -44
- package/dist/commands/chunk-JU2MAYQ3.js +0 -997
- package/dist/commands/chunk-JUCJ4Y42.js +0 -77
- package/dist/commands/chunk-JZK33TA5.js +0 -99
- package/dist/commands/chunk-K3OZBV3L.js +0 -49
- package/dist/commands/chunk-K6P5PISC.js +0 -114
- package/dist/commands/chunk-KDCHY7XO.js +0 -88
- package/dist/commands/chunk-KDGX3JTV.js +0 -51
- package/dist/commands/chunk-KGSEWOKI.js +0 -353
- package/dist/commands/chunk-KIS7JFNP.js +0 -217
- package/dist/commands/chunk-KJPZPTS4.js +0 -245
- package/dist/commands/chunk-KKHD3C2P.js +0 -114
- package/dist/commands/chunk-KKIIY5I5.js +0 -67
- package/dist/commands/chunk-KN46UC77.js +0 -114
- package/dist/commands/chunk-KP2BVAS5.js +0 -125
- package/dist/commands/chunk-KPAJBJXG.js +0 -63
- package/dist/commands/chunk-KPMAJP6D.js +0 -145
- package/dist/commands/chunk-KR6WUAJM.js +0 -122
- package/dist/commands/chunk-KWLNK2NJ.js +0 -391
- package/dist/commands/chunk-KXK2A2HB.js +0 -158
- package/dist/commands/chunk-L2CLCNXW.js +0 -144
- package/dist/commands/chunk-L7MDU6D7.js +0 -155
- package/dist/commands/chunk-L7VD4MLF.js +0 -78
- package/dist/commands/chunk-LBVYFW3I.js +0 -38
- package/dist/commands/chunk-LIPUSINQ.js +0 -140
- package/dist/commands/chunk-LJVZWE3A.js +0 -1885
- package/dist/commands/chunk-LKSSQVDA.js +0 -49
- package/dist/commands/chunk-LNQOL2CL.js +0 -321
- package/dist/commands/chunk-LS7P324N.js +0 -72
- package/dist/commands/chunk-LU5EOGFQ.js +0 -50
- package/dist/commands/chunk-LX2ENXHZ.js +0 -197
- package/dist/commands/chunk-M3UGRNNB.js +0 -103
- package/dist/commands/chunk-M3ZDYCUF.js +0 -117
- package/dist/commands/chunk-MDGPJOLK.js +0 -351
- package/dist/commands/chunk-MDKRTUE4.js +0 -288
- package/dist/commands/chunk-MFZVRWRS.js +0 -34
- package/dist/commands/chunk-MHF6BDQI.js +0 -128
- package/dist/commands/chunk-MLJDW7YN.js +0 -64
- package/dist/commands/chunk-MNLHYAJO.js +0 -80
- package/dist/commands/chunk-MOD3FG4V.js +0 -419
- package/dist/commands/chunk-MRAEJLXL.js +0 -83
- package/dist/commands/chunk-MRW2WYJS.js +0 -68
- package/dist/commands/chunk-N2XH7QBY.js +0 -103
- package/dist/commands/chunk-N2ZF6T4E.js +0 -332
- package/dist/commands/chunk-N36NZMAL.js +0 -79
- package/dist/commands/chunk-N4EMFHQ6.js +0 -114
- package/dist/commands/chunk-N4P64UIH.js +0 -211
- package/dist/commands/chunk-NABSSY4P.js +0 -204
- package/dist/commands/chunk-NDQIJBRQ.js +0 -100
- package/dist/commands/chunk-NDR4PCVG.js +0 -29
- package/dist/commands/chunk-NEOCCN6D.js +0 -302
- package/dist/commands/chunk-NFKWFOFM.js +0 -45
- package/dist/commands/chunk-NFUPJBBG.js +0 -516
- package/dist/commands/chunk-NHEBKL7X.js +0 -170
- package/dist/commands/chunk-NHTEC5U4.js +0 -99
- package/dist/commands/chunk-NOSODWWK.js +0 -1132
- package/dist/commands/chunk-NPXXYG6Z.js +0 -580
- package/dist/commands/chunk-NR2JDBPV.js +0 -75
- package/dist/commands/chunk-NRULNBYI.js +0 -1153
- package/dist/commands/chunk-NTGF5N3N.js +0 -110
- package/dist/commands/chunk-NTIVNQKF.js +0 -73
- package/dist/commands/chunk-NUCFIYZL.js +0 -119
- package/dist/commands/chunk-NVMV7BYX.js +0 -88
- package/dist/commands/chunk-NYWPTYGL.js +0 -169
- package/dist/commands/chunk-O45BX4EL.js +0 -39
- package/dist/commands/chunk-O46T4ANI.js +0 -229
- package/dist/commands/chunk-O7ESC4HL.js +0 -566
- package/dist/commands/chunk-OBYLXHCH.js +0 -86
- package/dist/commands/chunk-OHN3QARP.js +0 -769
- package/dist/commands/chunk-OKBZGLD5.js +0 -393
- package/dist/commands/chunk-OKN63ZH5.js +0 -109
- package/dist/commands/chunk-ON4IKRGS.js +0 -469
- package/dist/commands/chunk-OT74RSQO.js +0 -82
- package/dist/commands/chunk-OVCVINYW.js +0 -143
- package/dist/commands/chunk-OZKLVTYI.js +0 -342
- package/dist/commands/chunk-OZN4HOZT.js +0 -74
- package/dist/commands/chunk-P3LJ2Q4N.js +0 -555
- package/dist/commands/chunk-P43GWYR6.js +0 -185
- package/dist/commands/chunk-P6ASP2DY.js +0 -132
- package/dist/commands/chunk-PBAEJ5PT.js +0 -38
- package/dist/commands/chunk-PCZROH3R.js +0 -100
- package/dist/commands/chunk-PJYTUUTH.js +0 -34
- package/dist/commands/chunk-PKXTISWR.js +0 -58
- package/dist/commands/chunk-PSGLUBSB.js +0 -74
- package/dist/commands/chunk-PVRDJU2B.js +0 -126
- package/dist/commands/chunk-Q42NF2TL.js +0 -47
- package/dist/commands/chunk-Q4ULMZAS.js +0 -106
- package/dist/commands/chunk-QCRUPRQ2.js +0 -207
- package/dist/commands/chunk-QGATHT4S.js +0 -114
- package/dist/commands/chunk-QKTTKAXM.js +0 -119
- package/dist/commands/chunk-QSBYULSS.js +0 -100
- package/dist/commands/chunk-QSJCZATC.js +0 -18
- package/dist/commands/chunk-QTJPCXEW.js +0 -23
- package/dist/commands/chunk-QTQAI2M2.js +0 -179
- package/dist/commands/chunk-QTVVFV4Q.js +0 -127
- package/dist/commands/chunk-QVOFWFWC.js +0 -134
- package/dist/commands/chunk-QX2EMUXV.js +0 -102
- package/dist/commands/chunk-QXBOECGL.js +0 -272
- package/dist/commands/chunk-QXCG3SG4.js +0 -88
- package/dist/commands/chunk-QZVMGAWV.js +0 -307
- package/dist/commands/chunk-R2THGPI3.js +0 -99
- package/dist/commands/chunk-R36VZIKU.js +0 -53
- package/dist/commands/chunk-R3F7F3TX.js +0 -94
- package/dist/commands/chunk-R5AABJZJ.js +0 -1062
- package/dist/commands/chunk-R7PYR4HW.js +0 -389
- package/dist/commands/chunk-RAQ3E6OT.js +0 -258
- package/dist/commands/chunk-RESNXNDG.js +0 -54
- package/dist/commands/chunk-RFIOZTXY.js +0 -305
- package/dist/commands/chunk-RFWB2KAV.js +0 -102
- package/dist/commands/chunk-RFXON3FK.js +0 -25
- package/dist/commands/chunk-RGEB5L37.js +0 -66
- package/dist/commands/chunk-RGRLLF2J.js +0 -119
- package/dist/commands/chunk-RLRIMYXM.js +0 -178
- package/dist/commands/chunk-RNB3DQOZ.js +0 -70
- package/dist/commands/chunk-RO4QEZJO.js +0 -172
- package/dist/commands/chunk-RS5HBJY6.js +0 -161
- package/dist/commands/chunk-RV7EQIE4.js +0 -202
- package/dist/commands/chunk-RWPCK3CO.js +0 -41
- package/dist/commands/chunk-RWYSVFIA.js +0 -250
- package/dist/commands/chunk-RYKK75YT.js +0 -289
- package/dist/commands/chunk-S4JE63QE.js +0 -704
- package/dist/commands/chunk-S5GX3H4P.js +0 -91
- package/dist/commands/chunk-SC57VV6A.js +0 -60
- package/dist/commands/chunk-SD4EX75H.js +0 -177
- package/dist/commands/chunk-SJITWFNY.js +0 -480
- package/dist/commands/chunk-SKGDMAIA.js +0 -33
- package/dist/commands/chunk-SNSZ25XZ.js +0 -393
- package/dist/commands/chunk-SOETJZWH.js +0 -7672
- package/dist/commands/chunk-SQZZHK6X.js +0 -119
- package/dist/commands/chunk-SRG6PKVS.js +0 -49
- package/dist/commands/chunk-SRTEE34O.js +0 -93
- package/dist/commands/chunk-SVTS7ACS.js +0 -18
- package/dist/commands/chunk-SYTCTLMD.js +0 -285
- package/dist/commands/chunk-T6JUDQMW.js +0 -181
- package/dist/commands/chunk-TEXUEBGE.js +0 -208
- package/dist/commands/chunk-TFDVTU6O.js +0 -910
- package/dist/commands/chunk-TFYYXETQ.js +0 -472
- package/dist/commands/chunk-TMFKVJUW.js +0 -121
- package/dist/commands/chunk-TRHWBUWE.js +0 -61
- package/dist/commands/chunk-TROCFVCU.js +0 -45
- package/dist/commands/chunk-TUBBESHU.js +0 -85
- package/dist/commands/chunk-TVZIFZZN.js +0 -62
- package/dist/commands/chunk-TXRWAL63.js +0 -144
- package/dist/commands/chunk-U46YTYJQ.js +0 -92
- package/dist/commands/chunk-U5EO4QEV.js +0 -48
- package/dist/commands/chunk-U7Y6RKLK.js +0 -168
- package/dist/commands/chunk-UCO333EX.js +0 -47
- package/dist/commands/chunk-UIXQ4IYT.js +0 -445
- package/dist/commands/chunk-UJGNYPMD.js +0 -716
- package/dist/commands/chunk-UREXZJDB.js +0 -210
- package/dist/commands/chunk-URZ4RDC4.js +0 -220
- package/dist/commands/chunk-UUA63LCI.js +0 -77
- package/dist/commands/chunk-UVY5ODCM.js +0 -60
- package/dist/commands/chunk-UWMB6EOU.js +0 -45
- package/dist/commands/chunk-UY62WJV6.js +0 -120
- package/dist/commands/chunk-UZDKCGDC.js +0 -198
- package/dist/commands/chunk-VAHQ4AFM.js +0 -585
- package/dist/commands/chunk-VL5I2IOD.js +0 -332
- package/dist/commands/chunk-VMG3QB6C.js +0 -81
- package/dist/commands/chunk-VO25PMGS.js +0 -58
- package/dist/commands/chunk-VPRQFM2T.js +0 -37
- package/dist/commands/chunk-VTLWODJ2.js +0 -133
- package/dist/commands/chunk-VUCDGQ6Y.js +0 -260
- package/dist/commands/chunk-VY7ZJMDT.js +0 -469
- package/dist/commands/chunk-W4BR6QNU.js +0 -1241
- package/dist/commands/chunk-W7X7MZZN.js +0 -449
- package/dist/commands/chunk-WCYRNNKF.js +0 -76
- package/dist/commands/chunk-WEUUJIWQ.js +0 -84
- package/dist/commands/chunk-WNBJK6QE.js +0 -84
- package/dist/commands/chunk-WORHUJ6T.js +0 -73
- package/dist/commands/chunk-WR5PKCQW.js +0 -61
- package/dist/commands/chunk-WR73HTRG.js +0 -121
- package/dist/commands/chunk-WRNMUQTD.js +0 -95
- package/dist/commands/chunk-WROJTXWZ.js +0 -138
- package/dist/commands/chunk-WTIPX5NG.js +0 -43
- package/dist/commands/chunk-WWLCQREY.js +0 -225
- package/dist/commands/chunk-WXLW7S4M.js +0 -71
- package/dist/commands/chunk-WXXLJQBO.js +0 -67
- package/dist/commands/chunk-X4LYH6Q4.js +0 -56
- package/dist/commands/chunk-XAEL24EG.js +0 -66
- package/dist/commands/chunk-XI2ABCRX.js +0 -209
- package/dist/commands/chunk-XRQMVAB4.js +0 -85
- package/dist/commands/chunk-XUXCFPDK.js +0 -218
- package/dist/commands/chunk-XZQWEVR3.js +0 -84
- package/dist/commands/chunk-Y6OGDG5I.js +0 -49
- package/dist/commands/chunk-YANDBVAT.js +0 -430
- package/dist/commands/chunk-YD7XK2TX.js +0 -550
- package/dist/commands/chunk-YEAE46TS.js +0 -98
- package/dist/commands/chunk-YEQFAEVW.js +0 -112
- package/dist/commands/chunk-YJZAD4Z5.js +0 -103
- package/dist/commands/chunk-YNCF66RK.js +0 -1052
- package/dist/commands/chunk-YOA25SII.js +0 -210
- package/dist/commands/chunk-YOZTZMAT.js +0 -38
- package/dist/commands/chunk-YSGRHVZG.js +0 -897
- package/dist/commands/chunk-YSLGWRQN.js +0 -646
- package/dist/commands/chunk-YT5JR2CB.js +0 -105
- package/dist/commands/chunk-YTXCLGGL.js +0 -168
- package/dist/commands/chunk-YVHJN2HS.js +0 -74
- package/dist/commands/chunk-YY7XVVSB.js +0 -43
- package/dist/commands/chunk-Z2NUK47W.js +0 -1314
- package/dist/commands/chunk-Z5GZV4DV.js +0 -16
- package/dist/commands/chunk-ZB52ZIEA.js +0 -1629
- package/dist/commands/chunk-ZCD4AV2P.js +0 -73
- package/dist/commands/chunk-ZCHZU6NX.js +0 -799
- package/dist/commands/chunk-ZEH2B3DF.js +0 -239
- package/dist/commands/chunk-ZGANVZCA.js +0 -92
- package/dist/commands/chunk-ZGEUWHFF.js +0 -297
- package/dist/commands/chunk-ZHSNQ2F7.js +0 -161
- package/dist/commands/chunk-ZI3SABMH.js +0 -347
- package/dist/commands/chunk-ZIIUBGON.js +0 -773
- package/dist/commands/chunk-ZJJLROJY.js +0 -269
- package/dist/commands/chunk-ZNIIA275.js +0 -59
- package/dist/commands/chunk-ZV6BZZJ2.js +0 -271
- package/dist/commands/run-ship-lap-W66LTXJJ.js +0 -28
- package/dist/commands/test-related-XBDH2IOH.js +0 -113
- package/dist/commands/unused-members-KVKZDTXD.js +0 -329
- package/dist/hooks/chunk-3SA3FIQC.js +0 -6869
- package/dist/hooks/chunk-46PTTMGE.js +0 -1625
- package/dist/hooks/chunk-5NIBRHWG.js +0 -77
- package/dist/hooks/chunk-76QKN2K3.js +0 -258
- package/dist/hooks/chunk-CHEKMGFP.js +0 -321
- package/dist/hooks/chunk-CY3ADSDR.js +0 -28580
- package/dist/hooks/chunk-DCILEVDR.js +0 -5173
- package/dist/hooks/chunk-HVNGIM5W.js +0 -5092
- package/dist/hooks/chunk-L6IZZ2IL.js +0 -11219
- package/dist/hooks/chunk-SAAPRHTK.js +0 -43
- package/dist/hooks/chunk-U3ON2GBN.js +0 -12
- package/dist/hooks/chunk-UZXMFOVK.js +0 -9170
- package/dist/hooks/chunk-WCJ2GWYJ.js +0 -1381
- package/dist/hooks/chunk-YEURBB4L.js +0 -32
- package/dist/hooks/chunk-YRKS5ZKE.js +0 -1915
- package/dist/hooks/run-ship-lap-P5555IG7.js +0 -8
|
@@ -0,0 +1,1953 @@
|
|
|
1
|
+
import {
|
|
2
|
+
core_weights,
|
|
3
|
+
direct_launch,
|
|
4
|
+
package_version_schema,
|
|
5
|
+
pnpm_reach,
|
|
6
|
+
project_checks,
|
|
7
|
+
resolve_local_bin,
|
|
8
|
+
resolve_package_bin,
|
|
9
|
+
unit_worker_share
|
|
10
|
+
} from "./chunk-Z6W64J64.js";
|
|
11
|
+
import {
|
|
12
|
+
ESLINT_RELATED_CACHE_FILE,
|
|
13
|
+
ESLINT_RELATED_CACHE_FLAGS,
|
|
14
|
+
PRETTIER_RELATED_CACHE_FLAGS,
|
|
15
|
+
changed_paths,
|
|
16
|
+
find_package_directory,
|
|
17
|
+
package_manifest,
|
|
18
|
+
poll,
|
|
19
|
+
process_owner_schema
|
|
20
|
+
} from "./chunk-NP6BVTR3.js";
|
|
21
|
+
import {
|
|
22
|
+
file_reader,
|
|
23
|
+
lane_ledger_write,
|
|
24
|
+
lane_paths,
|
|
25
|
+
process_identity
|
|
26
|
+
} from "./chunk-NFTDYUN3.js";
|
|
27
|
+
import {
|
|
28
|
+
MS_PER_SECOND,
|
|
29
|
+
PLATFORM_TEMP_ROOT,
|
|
30
|
+
PROBE_TIMEOUT_MS,
|
|
31
|
+
SUITE_TIMEOUT_MS,
|
|
32
|
+
atomic_write,
|
|
33
|
+
execa,
|
|
34
|
+
external_exports,
|
|
35
|
+
git_command,
|
|
36
|
+
git_common_directory,
|
|
37
|
+
json_value,
|
|
38
|
+
stamp_file
|
|
39
|
+
} from "./chunk-RWVA2SFN.js";
|
|
40
|
+
|
|
41
|
+
// scripts/gate/toolchain-inputs.ts
|
|
42
|
+
import { createHash } from "node:crypto";
|
|
43
|
+
import { existsSync, readdirSync, readFileSync } from "node:fs";
|
|
44
|
+
import path from "node:path";
|
|
45
|
+
var PACKAGE_FILES = [
|
|
46
|
+
"package.json",
|
|
47
|
+
"pnpm-lock.yaml",
|
|
48
|
+
"pnpm-workspace.yaml",
|
|
49
|
+
"package-lock.json",
|
|
50
|
+
"yarn.lock",
|
|
51
|
+
"bun.lock",
|
|
52
|
+
"bun.lockb",
|
|
53
|
+
".npmrc",
|
|
54
|
+
"node_modules/.modules.yaml"
|
|
55
|
+
];
|
|
56
|
+
var CONFIG_ENTRIES = [
|
|
57
|
+
/^eslint\.config\.[cm]?[jt]s$/u,
|
|
58
|
+
/^tsconfig(?:\.[\w-]+)?\.json$/u
|
|
59
|
+
];
|
|
60
|
+
var CONFIG_DIRECTORIES = /* @__PURE__ */ new Set(["eslint", "tsconfig"]);
|
|
61
|
+
var TEST_MARKER = ".test.";
|
|
62
|
+
var SEPARATOR = "/";
|
|
63
|
+
var DIGEST_ALGORITHM = "sha256";
|
|
64
|
+
function by_code_unit(left, right) {
|
|
65
|
+
if (left === right) return 0;
|
|
66
|
+
return left < right ? -1 : 1;
|
|
67
|
+
}
|
|
68
|
+
function to_posix(relative) {
|
|
69
|
+
return relative.split(path.sep).join(SEPARATOR);
|
|
70
|
+
}
|
|
71
|
+
function is_config_entry(name) {
|
|
72
|
+
return CONFIG_ENTRIES.some((entry) => entry.test(name));
|
|
73
|
+
}
|
|
74
|
+
function is_config_module(relative) {
|
|
75
|
+
const [top = ""] = relative.split(SEPARATOR, 1);
|
|
76
|
+
return CONFIG_DIRECTORIES.has(top) && !path.basename(relative).includes(TEST_MARKER);
|
|
77
|
+
}
|
|
78
|
+
function is_input(relative) {
|
|
79
|
+
const posix = to_posix(relative);
|
|
80
|
+
if (PACKAGE_FILES.includes(posix)) return true;
|
|
81
|
+
return is_config_entry(posix) || is_config_module(posix);
|
|
82
|
+
}
|
|
83
|
+
function modules_under(root, directory) {
|
|
84
|
+
const absolute = path.join(root, directory);
|
|
85
|
+
if (!existsSync(absolute)) return [];
|
|
86
|
+
return readdirSync(absolute, { recursive: true, withFileTypes: true }).filter((entry) => entry.isFile()).map((entry) => to_posix(path.relative(root, path.join(entry.parentPath, entry.name)))).filter((relative) => is_config_module(relative));
|
|
87
|
+
}
|
|
88
|
+
function paths(root) {
|
|
89
|
+
const present = PACKAGE_FILES.filter((relative) => existsSync(path.join(root, relative)));
|
|
90
|
+
const entries = readdirSync(root).filter((name) => is_config_entry(name));
|
|
91
|
+
const modules = [...CONFIG_DIRECTORIES].flatMap((directory) => modules_under(root, directory));
|
|
92
|
+
return [...present, ...entries, ...modules].toSorted(by_code_unit);
|
|
93
|
+
}
|
|
94
|
+
function read_or_empty(file) {
|
|
95
|
+
try {
|
|
96
|
+
return readFileSync(file);
|
|
97
|
+
} catch {
|
|
98
|
+
return new Uint8Array();
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
function digest(root) {
|
|
102
|
+
const hash = createHash(DIGEST_ALGORITHM);
|
|
103
|
+
for (const relative of paths(root)) {
|
|
104
|
+
hash.update(`${relative}\0`).update(read_or_empty(path.join(root, relative))).update("\0");
|
|
105
|
+
}
|
|
106
|
+
return hash.digest("hex");
|
|
107
|
+
}
|
|
108
|
+
var toolchain_inputs = { digest, is_input, PACKAGE_FILES, paths };
|
|
109
|
+
|
|
110
|
+
// scripts/run/board/run-board-usage-rusage.ts
|
|
111
|
+
var PROC_LIBRARY = "/usr/lib/libproc.dylib";
|
|
112
|
+
var SYSTEM_LIBRARY = "/usr/lib/libSystem.B.dylib";
|
|
113
|
+
var RUSAGE_INFO_V2 = 2;
|
|
114
|
+
var RUSAGE_INFO_V2_BYTES = 160;
|
|
115
|
+
var USER_TIME_OFFSET = 16;
|
|
116
|
+
var SYSTEM_TIME_OFFSET = 24;
|
|
117
|
+
var CHILD_USER_TIME_OFFSET = 96;
|
|
118
|
+
var CHILD_SYSTEM_TIME_OFFSET = 104;
|
|
119
|
+
var PHYS_FOOTPRINT_OFFSET = 72;
|
|
120
|
+
var TIME_OFFSETS = [
|
|
121
|
+
USER_TIME_OFFSET,
|
|
122
|
+
SYSTEM_TIME_OFFSET,
|
|
123
|
+
CHILD_USER_TIME_OFFSET,
|
|
124
|
+
CHILD_SYSTEM_TIME_OFFSET
|
|
125
|
+
];
|
|
126
|
+
var TIMEBASE_BYTES = 8;
|
|
127
|
+
var DENOM_OFFSET = 4;
|
|
128
|
+
var NS_PER_MS = 1e6;
|
|
129
|
+
var EXPERIMENTAL_WARNING = "ExperimentalWarning";
|
|
130
|
+
var DARWIN = "darwin";
|
|
131
|
+
var PROC_PID_RUSAGE = {
|
|
132
|
+
proc_pid_rusage: { arguments: ["int32", "int32", "buffer"], return: "int32" }
|
|
133
|
+
};
|
|
134
|
+
var MACH_TIMEBASE_INFO = {
|
|
135
|
+
mach_timebase_info: { arguments: ["buffer"], return: "int32" }
|
|
136
|
+
};
|
|
137
|
+
function cpu_ms_of(buffer, timebase) {
|
|
138
|
+
const ticks = TIME_OFFSETS.reduce(
|
|
139
|
+
(sum, offset) => sum + Number(buffer.readBigUInt64LE(offset)),
|
|
140
|
+
0
|
|
141
|
+
);
|
|
142
|
+
return ticks * timebase.numer / timebase.denom / NS_PER_MS;
|
|
143
|
+
}
|
|
144
|
+
function quiet_ffi(load) {
|
|
145
|
+
const emit_warning = process.emitWarning;
|
|
146
|
+
process.emitWarning = function quiet(warning, ...rest) {
|
|
147
|
+
if (rest[0] !== EXPERIMENTAL_WARNING) Reflect.apply(emit_warning, process, [warning, ...rest]);
|
|
148
|
+
};
|
|
149
|
+
try {
|
|
150
|
+
return load("node:ffi");
|
|
151
|
+
} finally {
|
|
152
|
+
process.emitWarning = emit_warning;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
function timebase_of(ffi) {
|
|
156
|
+
const buffer = Buffer.alloc(TIMEBASE_BYTES);
|
|
157
|
+
ffi.dlopen(SYSTEM_LIBRARY, MACH_TIMEBASE_INFO).functions.mach_timebase_info(buffer);
|
|
158
|
+
return { numer: buffer.readUInt32LE(0), denom: buffer.readUInt32LE(DENOM_OFFSET) };
|
|
159
|
+
}
|
|
160
|
+
function reader_of(ffi) {
|
|
161
|
+
const timebase = timebase_of(ffi);
|
|
162
|
+
const { proc_pid_rusage } = ffi.dlopen(PROC_LIBRARY, PROC_PID_RUSAGE).functions;
|
|
163
|
+
const buffer = Buffer.alloc(RUSAGE_INFO_V2_BYTES);
|
|
164
|
+
return function read(pid) {
|
|
165
|
+
if (proc_pid_rusage(pid, RUSAGE_INFO_V2, buffer) !== 0) return void 0;
|
|
166
|
+
const footprint_bytes = Number(buffer.readBigUInt64LE(PHYS_FOOTPRINT_OFFSET));
|
|
167
|
+
return { cpu_ms: cpu_ms_of(buffer, timebase), footprint_bytes };
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
function load_builtin(id) {
|
|
171
|
+
return process.getBuiltinModule(id);
|
|
172
|
+
}
|
|
173
|
+
function rusage_reader(platform, load) {
|
|
174
|
+
if (platform !== DARWIN) return void 0;
|
|
175
|
+
try {
|
|
176
|
+
const ffi = quiet_ffi(load);
|
|
177
|
+
return ffi === void 0 ? void 0 : reader_of(ffi);
|
|
178
|
+
} catch {
|
|
179
|
+
return void 0;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
var run_board_usage_rusage = { cpu_ms_of, load_builtin, quiet_ffi, rusage_reader };
|
|
183
|
+
|
|
184
|
+
// scripts/lint/lint-related-scope.ts
|
|
185
|
+
import path3 from "node:path";
|
|
186
|
+
|
|
187
|
+
// scripts/git/changed-file-scope.ts
|
|
188
|
+
import path2 from "node:path";
|
|
189
|
+
var UNREADABLE_REASON = "the changed files could not be read";
|
|
190
|
+
var LISTED_FILE_LIMIT = 10;
|
|
191
|
+
async function repository_root_or_cwd() {
|
|
192
|
+
try {
|
|
193
|
+
return await git_command.repository_root();
|
|
194
|
+
} catch {
|
|
195
|
+
return process.cwd();
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
async function read_changed_files(root) {
|
|
199
|
+
try {
|
|
200
|
+
const relative_paths = await changed_paths.read_changed_paths(false);
|
|
201
|
+
return relative_paths.map((relative) => path2.join(root, relative));
|
|
202
|
+
} catch {
|
|
203
|
+
return void 0;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
function select_files(paths2, inputs) {
|
|
207
|
+
return paths2.filter(
|
|
208
|
+
(file_path) => inputs.is_selectable(file_path) && inputs.is_present(file_path)
|
|
209
|
+
);
|
|
210
|
+
}
|
|
211
|
+
function all_scope(reason) {
|
|
212
|
+
return { mode: "all", files: [], reason };
|
|
213
|
+
}
|
|
214
|
+
function resolve_scope(paths2, inputs) {
|
|
215
|
+
if (paths2 === void 0) return all_scope(UNREADABLE_REASON);
|
|
216
|
+
const files = select_files(paths2, inputs);
|
|
217
|
+
if (files.length === 0) return all_scope(inputs.nothing_reason);
|
|
218
|
+
return { mode: "related", files, reason: `${String(files.length)} changed file(s)` };
|
|
219
|
+
}
|
|
220
|
+
function format_file_list(files, root) {
|
|
221
|
+
const listed = files.slice(0, LISTED_FILE_LIMIT).map((file) => ` - ${path2.relative(root, file)}`);
|
|
222
|
+
const hidden = files.length - listed.length;
|
|
223
|
+
if (hidden > 0) listed.push(` \u2026 and ${String(hidden)} more`);
|
|
224
|
+
return listed.join("\n");
|
|
225
|
+
}
|
|
226
|
+
function describe_scope(scope, root, vocabulary) {
|
|
227
|
+
if (scope.mode === "all") {
|
|
228
|
+
return `${vocabulary.label}: ${scope.reason} \u2014 ${vocabulary.fallback_suffix}.`;
|
|
229
|
+
}
|
|
230
|
+
return `${vocabulary.label}: ${scope.reason} \u2014 ${vocabulary.narrowed_suffix}.
|
|
231
|
+
${format_file_list(scope.files, root)}`;
|
|
232
|
+
}
|
|
233
|
+
var ARGV_START = 2;
|
|
234
|
+
var FLAG_PREFIX = "-";
|
|
235
|
+
function is_flag(argument) {
|
|
236
|
+
return argument.startsWith(FLAG_PREFIX);
|
|
237
|
+
}
|
|
238
|
+
function explicit_files_of(command_arguments) {
|
|
239
|
+
return command_arguments.filter((argument) => !is_flag(argument));
|
|
240
|
+
}
|
|
241
|
+
function flags_of(command_arguments) {
|
|
242
|
+
return command_arguments.filter((argument) => is_flag(argument));
|
|
243
|
+
}
|
|
244
|
+
async function resolve_command_scope(request) {
|
|
245
|
+
const explicit_files = explicit_files_of(request.command_arguments);
|
|
246
|
+
if (explicit_files.length === 0) {
|
|
247
|
+
return resolve_scope(await read_changed_files(request.root), request.inputs);
|
|
248
|
+
}
|
|
249
|
+
return resolve_scope(
|
|
250
|
+
explicit_files.map((file) => path2.resolve(file)),
|
|
251
|
+
request.inputs
|
|
252
|
+
);
|
|
253
|
+
}
|
|
254
|
+
function report_unusable_arguments(command_arguments, scope, label) {
|
|
255
|
+
const narrowed = new Set(scope.files);
|
|
256
|
+
const unusable = explicit_files_of(command_arguments).filter(
|
|
257
|
+
(file) => !narrowed.has(path2.resolve(file))
|
|
258
|
+
);
|
|
259
|
+
if (unusable.length === 0) return;
|
|
260
|
+
process.stdout.write(`${label}: ignored \u2014 not a file this check reads: ${unusable.join(" ")}
|
|
261
|
+
`);
|
|
262
|
+
}
|
|
263
|
+
var changed_file_scope = {
|
|
264
|
+
ARGV_START,
|
|
265
|
+
LISTED_FILE_LIMIT,
|
|
266
|
+
UNREADABLE_REASON,
|
|
267
|
+
describe_scope,
|
|
268
|
+
flags_of,
|
|
269
|
+
format_file_list,
|
|
270
|
+
is_flag,
|
|
271
|
+
read_changed_files,
|
|
272
|
+
report_unusable_arguments,
|
|
273
|
+
repository_root_or_cwd,
|
|
274
|
+
resolve_command_scope,
|
|
275
|
+
resolve_scope,
|
|
276
|
+
select_files
|
|
277
|
+
};
|
|
278
|
+
|
|
279
|
+
// scripts/lint/lint-related-scope.ts
|
|
280
|
+
var LINTABLE_EXTENSIONS = /* @__PURE__ */ new Set([
|
|
281
|
+
".ts",
|
|
282
|
+
".tsx",
|
|
283
|
+
".mts",
|
|
284
|
+
".cts",
|
|
285
|
+
".js",
|
|
286
|
+
".jsx",
|
|
287
|
+
".mjs",
|
|
288
|
+
".cjs",
|
|
289
|
+
".svelte",
|
|
290
|
+
".vue",
|
|
291
|
+
".md",
|
|
292
|
+
".mdx",
|
|
293
|
+
".json",
|
|
294
|
+
".jsonc",
|
|
295
|
+
".json5",
|
|
296
|
+
".yaml",
|
|
297
|
+
".yml",
|
|
298
|
+
".css",
|
|
299
|
+
".scss",
|
|
300
|
+
".less",
|
|
301
|
+
".html",
|
|
302
|
+
".graphql",
|
|
303
|
+
".gql"
|
|
304
|
+
]);
|
|
305
|
+
var NOTHING_LINTABLE_REASON = "no changed file is one prettier or eslint reads";
|
|
306
|
+
var COMMAND_NAME = "lint:related";
|
|
307
|
+
var COMMAND_LABEL = `josh ${COMMAND_NAME}`;
|
|
308
|
+
var VOCABULARY = {
|
|
309
|
+
label: COMMAND_LABEL,
|
|
310
|
+
fallback_suffix: "checking the whole tree instead",
|
|
311
|
+
narrowed_suffix: "checking only them"
|
|
312
|
+
};
|
|
313
|
+
var PRETTIER_ARGS = ["exec", "prettier", "--check", "--ignore-unknown"];
|
|
314
|
+
var ESLINT_ARGS = ["exec", "eslint"];
|
|
315
|
+
var ESLINT_SCOPED_FLAGS = ["--no-warn-ignored"];
|
|
316
|
+
function is_lintable(file_path) {
|
|
317
|
+
return LINTABLE_EXTENSIONS.has(path3.extname(file_path));
|
|
318
|
+
}
|
|
319
|
+
function scope_inputs(is_present) {
|
|
320
|
+
return { is_present, is_selectable: is_lintable, nothing_reason: NOTHING_LINTABLE_REASON };
|
|
321
|
+
}
|
|
322
|
+
function describe_scope2(scope, root) {
|
|
323
|
+
return changed_file_scope.describe_scope(scope, root, VOCABULARY);
|
|
324
|
+
}
|
|
325
|
+
var RELATED_CACHES = {
|
|
326
|
+
eslint_file: ESLINT_RELATED_CACHE_FILE,
|
|
327
|
+
eslint_flags: ESLINT_RELATED_CACHE_FLAGS,
|
|
328
|
+
prettier_flags: PRETTIER_RELATED_CACHE_FLAGS
|
|
329
|
+
};
|
|
330
|
+
function prettier_arguments(files, caches = RELATED_CACHES, directory = process.cwd()) {
|
|
331
|
+
const targets = project_checks.prettier_targets(directory, files);
|
|
332
|
+
return [...PRETTIER_ARGS, ...targets, ...caches.prettier_flags];
|
|
333
|
+
}
|
|
334
|
+
function eslint_arguments(files, caches = RELATED_CACHES) {
|
|
335
|
+
return [...ESLINT_ARGS, ...files, ...caches.eslint_flags, ...ESLINT_SCOPED_FLAGS];
|
|
336
|
+
}
|
|
337
|
+
var lint_related_scope = {
|
|
338
|
+
COMMAND_LABEL,
|
|
339
|
+
NOTHING_LINTABLE_REASON,
|
|
340
|
+
RELATED_CACHES,
|
|
341
|
+
describe_scope: describe_scope2,
|
|
342
|
+
eslint_arguments,
|
|
343
|
+
is_lintable,
|
|
344
|
+
prettier_arguments,
|
|
345
|
+
scope_inputs
|
|
346
|
+
};
|
|
347
|
+
|
|
348
|
+
// scripts/lib/buffered-process.ts
|
|
349
|
+
import { existsSync as existsSync2 } from "node:fs";
|
|
350
|
+
var { PNPM } = pnpm_reach;
|
|
351
|
+
var FORCE_COLOR = "1";
|
|
352
|
+
function is_pnpm_missing(result, cwd) {
|
|
353
|
+
return pnpm_reach.is_not_found(result) && existsSync2(cwd ?? process.cwd());
|
|
354
|
+
}
|
|
355
|
+
function unfinished_reason(result, cwd) {
|
|
356
|
+
if (result.exitCode !== void 0) return [];
|
|
357
|
+
const reason = [result.shortMessage ?? ""];
|
|
358
|
+
if (is_pnpm_missing(result, cwd)) reason.push(pnpm_reach.NOT_ON_PATH_NOTICE);
|
|
359
|
+
return reason;
|
|
360
|
+
}
|
|
361
|
+
function collect_output(all, reason) {
|
|
362
|
+
return [all, ...reason].filter((part) => part !== "").join("\n");
|
|
363
|
+
}
|
|
364
|
+
function child_environment() {
|
|
365
|
+
const environment = { ...process.env };
|
|
366
|
+
if (environment["NO_COLOR"] === void 0) environment["FORCE_COLOR"] = FORCE_COLOR;
|
|
367
|
+
else delete environment["FORCE_COLOR"];
|
|
368
|
+
return environment;
|
|
369
|
+
}
|
|
370
|
+
async function run_buffered_launch(launch, options) {
|
|
371
|
+
const started_at = performance.now();
|
|
372
|
+
const result = await execa(launch.file, [...launch.args], {
|
|
373
|
+
env: options.environment ?? child_environment(),
|
|
374
|
+
extendEnv: false,
|
|
375
|
+
all: true,
|
|
376
|
+
reject: false,
|
|
377
|
+
...options.cwd !== void 0 && { cwd: options.cwd },
|
|
378
|
+
timeout: options.timeout_ms ?? SUITE_TIMEOUT_MS
|
|
379
|
+
});
|
|
380
|
+
return {
|
|
381
|
+
output: collect_output(result.all, unfinished_reason(result, options.cwd)),
|
|
382
|
+
exit_code: result.exitCode,
|
|
383
|
+
elapsed_ms: performance.now() - started_at
|
|
384
|
+
};
|
|
385
|
+
}
|
|
386
|
+
async function run_buffered_process(command_args, options = {}) {
|
|
387
|
+
return await run_buffered_launch({ file: PNPM, args: command_args }, options);
|
|
388
|
+
}
|
|
389
|
+
async function run_buffered_direct(pnpm_arguments, options = {}) {
|
|
390
|
+
const launch = direct_launch(options.cwd ?? process.cwd(), pnpm_arguments);
|
|
391
|
+
return await run_buffered_launch(launch, options);
|
|
392
|
+
}
|
|
393
|
+
function is_process_failed(result) {
|
|
394
|
+
return result.exit_code !== 0;
|
|
395
|
+
}
|
|
396
|
+
var buffered_process = {
|
|
397
|
+
child_environment,
|
|
398
|
+
is_process_failed,
|
|
399
|
+
run_buffered_direct,
|
|
400
|
+
run_buffered_process
|
|
401
|
+
};
|
|
402
|
+
|
|
403
|
+
// scripts/josh/josh-logic.ts
|
|
404
|
+
import { existsSync as existsSync4 } from "node:fs";
|
|
405
|
+
import path8 from "node:path";
|
|
406
|
+
import { fileURLToPath } from "node:url";
|
|
407
|
+
|
|
408
|
+
// scripts/gate/core-budget.ts
|
|
409
|
+
import { randomUUID } from "node:crypto";
|
|
410
|
+
import { readdirSync as readdirSync2 } from "node:fs";
|
|
411
|
+
import { availableParallelism as availableParallelism2 } from "node:os";
|
|
412
|
+
import path5 from "node:path";
|
|
413
|
+
|
|
414
|
+
// scripts/gate/core-budget-timing.ts
|
|
415
|
+
var POLL_INTERVAL_MS = 50;
|
|
416
|
+
var WAIT_CAP_MS = 12e4;
|
|
417
|
+
var EASE_WINDOW_MS = 3e4;
|
|
418
|
+
async function default_sleep(ms) {
|
|
419
|
+
await new Promise((resolve) => {
|
|
420
|
+
setTimeout(resolve, ms);
|
|
421
|
+
});
|
|
422
|
+
}
|
|
423
|
+
function resolve_cadence(options) {
|
|
424
|
+
return {
|
|
425
|
+
poll_interval_ms: options.poll_interval_ms ?? POLL_INTERVAL_MS,
|
|
426
|
+
wait_cap_ms: options.wait_cap_ms ?? WAIT_CAP_MS,
|
|
427
|
+
ease_window_ms: options.ease_window_ms ?? EASE_WINDOW_MS
|
|
428
|
+
};
|
|
429
|
+
}
|
|
430
|
+
function resolve_timing(options) {
|
|
431
|
+
return {
|
|
432
|
+
now: options.now ?? Date.now,
|
|
433
|
+
sleep: options.sleep ?? default_sleep,
|
|
434
|
+
...resolve_cadence(options)
|
|
435
|
+
};
|
|
436
|
+
}
|
|
437
|
+
var core_budget_timing = { WAIT_CAP_MS, resolve_timing };
|
|
438
|
+
|
|
439
|
+
// scripts/gate/core-admission.ts
|
|
440
|
+
var RAMP_UP_MS = 3e4;
|
|
441
|
+
var BYPASS_WINDOW_MS = 3e4;
|
|
442
|
+
var WAIT_CAP_SHARE = 0.5;
|
|
443
|
+
var HEAVIER_BYPASS_WINDOW_MS = core_budget_timing.WAIT_CAP_MS * WAIT_CAP_SHARE;
|
|
444
|
+
var MIN_GRANT = 1;
|
|
445
|
+
var NARROW_DIVISOR = 2;
|
|
446
|
+
function priority_rank(reservation) {
|
|
447
|
+
return reservation.is_priority === true ? 0 : 1;
|
|
448
|
+
}
|
|
449
|
+
function compare_claim(left, right) {
|
|
450
|
+
const by_priority = priority_rank(left.reservation) - priority_rank(right.reservation);
|
|
451
|
+
if (by_priority !== 0) return by_priority;
|
|
452
|
+
const by_time = left.reservation.claimed_at - right.reservation.claimed_at;
|
|
453
|
+
return by_time === 0 ? left.key.localeCompare(right.key) : by_time;
|
|
454
|
+
}
|
|
455
|
+
function add_load(totals, reservation) {
|
|
456
|
+
totals.cores += reservation.granted ?? reservation.weight;
|
|
457
|
+
totals.memory_mb += reservation.memory_mb ?? 0;
|
|
458
|
+
}
|
|
459
|
+
function exceeds(totals, budget) {
|
|
460
|
+
return totals.cores > budget.cores || totals.memory_mb > budget.memory_mb;
|
|
461
|
+
}
|
|
462
|
+
function sum_load(reservations) {
|
|
463
|
+
const load = { cores: 0, memory_mb: 0 };
|
|
464
|
+
for (const entry of reservations) add_load(load, entry.reservation);
|
|
465
|
+
return load;
|
|
466
|
+
}
|
|
467
|
+
function is_waiting(entry) {
|
|
468
|
+
return entry.reservation.admitted_at === void 0;
|
|
469
|
+
}
|
|
470
|
+
function fits(entries, limit) {
|
|
471
|
+
return !exceeds(sum_load(entries), limit);
|
|
472
|
+
}
|
|
473
|
+
function place(key, reservations) {
|
|
474
|
+
const ordered = reservations.toSorted(compare_claim);
|
|
475
|
+
const index = ordered.findIndex((entry) => entry.key === key);
|
|
476
|
+
const own = ordered[index];
|
|
477
|
+
if (own === void 0) return void 0;
|
|
478
|
+
return {
|
|
479
|
+
own,
|
|
480
|
+
is_oldest: index === 0,
|
|
481
|
+
ahead: ordered.slice(0, index).filter((entry) => is_waiting(entry)),
|
|
482
|
+
running: ordered.filter((entry) => entry.key !== key && !is_waiting(entry))
|
|
483
|
+
};
|
|
484
|
+
}
|
|
485
|
+
function first_waiter_limit(budget) {
|
|
486
|
+
if (budget.is_overloaded === true) return budget;
|
|
487
|
+
return { cores: budget.cores + (budget.busy_excess ?? 0), memory_mb: budget.memory_mb };
|
|
488
|
+
}
|
|
489
|
+
function may_pass_waiter(own, waiter) {
|
|
490
|
+
const since_ms = own.claimed_at - waiter.claimed_at;
|
|
491
|
+
if (priority_rank(waiter) < priority_rank(own)) return false;
|
|
492
|
+
if (since_ms < BYPASS_WINDOW_MS) return true;
|
|
493
|
+
return waiter.weight > own.weight && since_ms < HEAVIER_BYPASS_WINDOW_MS;
|
|
494
|
+
}
|
|
495
|
+
function may_pass({ own, ahead, running }, budget) {
|
|
496
|
+
const is_passable = ahead.every((entry) => may_pass_waiter(own.reservation, entry.reservation));
|
|
497
|
+
return is_passable && fits([...running, own], budget);
|
|
498
|
+
}
|
|
499
|
+
function fits_in_order({ own, ahead, running }, budget) {
|
|
500
|
+
const limit = ahead.length === 0 ? first_waiter_limit(budget) : budget;
|
|
501
|
+
return fits([...running, ...ahead, own], limit);
|
|
502
|
+
}
|
|
503
|
+
function is_memory_held(key, reservations, budget) {
|
|
504
|
+
const placement = place(key, reservations);
|
|
505
|
+
if (placement === void 0) return false;
|
|
506
|
+
if (placement.own.reservation.is_unit === true && budget.memory_pressured !== true) return false;
|
|
507
|
+
return !fits([...placement.running, placement.own], {
|
|
508
|
+
cores: Infinity,
|
|
509
|
+
memory_mb: budget.memory_mb
|
|
510
|
+
});
|
|
511
|
+
}
|
|
512
|
+
function runs_alone(placement, budget) {
|
|
513
|
+
if (!placement.is_oldest || placement.running.length > 0 || placement.own.reservation.is_strict_admission === true) {
|
|
514
|
+
return false;
|
|
515
|
+
}
|
|
516
|
+
return budget.is_overloaded !== true;
|
|
517
|
+
}
|
|
518
|
+
function is_admitted(key, reservations, budget) {
|
|
519
|
+
const placement = place(key, reservations);
|
|
520
|
+
if (placement === void 0 || is_memory_held(key, reservations, budget)) return false;
|
|
521
|
+
if (runs_alone(placement, budget)) return true;
|
|
522
|
+
return fits_in_order(placement, budget) || may_pass(placement, budget);
|
|
523
|
+
}
|
|
524
|
+
function mark_admitted(entries, key) {
|
|
525
|
+
const index = entries.findIndex((entry2) => entry2.key === key);
|
|
526
|
+
const entry = entries[index];
|
|
527
|
+
if (entry === void 0) return;
|
|
528
|
+
entries[index] = {
|
|
529
|
+
...entry,
|
|
530
|
+
reservation: { ...entry.reservation, admitted_at: entry.reservation.claimed_at }
|
|
531
|
+
};
|
|
532
|
+
}
|
|
533
|
+
function admitted_keys(reservations, budget, memory_budget = Infinity) {
|
|
534
|
+
const limit = { cores: budget, memory_mb: memory_budget };
|
|
535
|
+
const ledger = [...reservations];
|
|
536
|
+
const admitted = /* @__PURE__ */ new Set();
|
|
537
|
+
for (const { key } of reservations.toSorted(compare_claim)) {
|
|
538
|
+
if (!is_admitted(key, ledger, limit)) continue;
|
|
539
|
+
admitted.add(key);
|
|
540
|
+
mark_admitted(ledger, key);
|
|
541
|
+
}
|
|
542
|
+
return admitted;
|
|
543
|
+
}
|
|
544
|
+
function is_ramped(reservation, now) {
|
|
545
|
+
const { admitted_at } = reservation;
|
|
546
|
+
return reservation.is_memory_pending !== true && admitted_at !== void 0 && now - admitted_at >= RAMP_UP_MS;
|
|
547
|
+
}
|
|
548
|
+
function ledger_load(reservations, now) {
|
|
549
|
+
const admitted = reservations.filter((entry) => entry.reservation.admitted_at !== void 0);
|
|
550
|
+
const ramped = admitted.filter((entry) => is_ramped(entry.reservation, now));
|
|
551
|
+
return { cores: sum_load(admitted).cores, memory_mb: sum_load(ramped).memory_mb };
|
|
552
|
+
}
|
|
553
|
+
function total_weight(reservations) {
|
|
554
|
+
return sum_load(reservations).cores;
|
|
555
|
+
}
|
|
556
|
+
function narrowed_weight(key, reservations, budget) {
|
|
557
|
+
const own = reservations.find((entry) => entry.key === key)?.reservation;
|
|
558
|
+
if (own?.is_unit !== true) return void 0;
|
|
559
|
+
const others = reservations.filter(
|
|
560
|
+
(entry) => entry.key !== key && entry.reservation.admitted_at !== void 0
|
|
561
|
+
);
|
|
562
|
+
const room = Math.max(MIN_GRANT, Math.floor(budget - total_weight(others)));
|
|
563
|
+
return room >= own.weight ? void 0 : room;
|
|
564
|
+
}
|
|
565
|
+
function is_too_narrow(key, reservations, granted) {
|
|
566
|
+
if (granted === void 0) return false;
|
|
567
|
+
const own = reservations.find((entry) => entry.key === key)?.reservation;
|
|
568
|
+
return own !== void 0 && granted * NARROW_DIVISOR < own.weight;
|
|
569
|
+
}
|
|
570
|
+
function with_grant(key, reservations, granted) {
|
|
571
|
+
if (granted === void 0) return [...reservations];
|
|
572
|
+
return reservations.map(
|
|
573
|
+
(entry) => entry.key === key ? { ...entry, reservation: { ...entry.reservation, granted } } : entry
|
|
574
|
+
);
|
|
575
|
+
}
|
|
576
|
+
function admitted_load(reservations, budget) {
|
|
577
|
+
const admitted = admitted_keys(reservations, budget);
|
|
578
|
+
return total_weight(reservations.filter((entry) => admitted.has(entry.key)));
|
|
579
|
+
}
|
|
580
|
+
function describe_memory(ledger, budget) {
|
|
581
|
+
if (!Number.isFinite(budget.memory_mb)) return "";
|
|
582
|
+
return ` and ${String(Math.round(ledger.memory_mb))} MB of memory against ${String(Math.round(budget.memory_mb))} MB`;
|
|
583
|
+
}
|
|
584
|
+
function describe_overflow(admission) {
|
|
585
|
+
const { overflow } = admission;
|
|
586
|
+
if (overflow === void 0) return void 0;
|
|
587
|
+
const { ledger, budget } = overflow;
|
|
588
|
+
const waited = String(Math.round(overflow.waited_ms / MS_PER_SECOND));
|
|
589
|
+
const cores = `the ledger held ${String(ledger.cores)} cores against a budget of ${String(budget.cores)}`;
|
|
590
|
+
return `started past the core budget after ${waited}s \u2014 ${cores}${describe_memory(ledger, budget)}`;
|
|
591
|
+
}
|
|
592
|
+
var core_admission = {
|
|
593
|
+
BYPASS_WINDOW_MS,
|
|
594
|
+
HEAVIER_BYPASS_WINDOW_MS,
|
|
595
|
+
RAMP_UP_MS,
|
|
596
|
+
admitted_keys,
|
|
597
|
+
admitted_load,
|
|
598
|
+
compare_claim,
|
|
599
|
+
describe_overflow,
|
|
600
|
+
is_admitted,
|
|
601
|
+
is_memory_held,
|
|
602
|
+
is_too_narrow,
|
|
603
|
+
ledger_load,
|
|
604
|
+
narrowed_weight,
|
|
605
|
+
sum_load,
|
|
606
|
+
with_grant
|
|
607
|
+
};
|
|
608
|
+
|
|
609
|
+
// scripts/gate/busy-average.ts
|
|
610
|
+
var AVERAGE_WINDOW_MS = 3e3;
|
|
611
|
+
function with_reading(samples, reading, ledger_cores, now) {
|
|
612
|
+
const kept = samples.filter((sample) => now - sample.at < AVERAGE_WINDOW_MS);
|
|
613
|
+
const { busy_cores } = reading;
|
|
614
|
+
if (busy_cores === void 0) return kept;
|
|
615
|
+
return [...kept, { at: now, external_cores: Math.max(0, busy_cores - ledger_cores), busy_cores }];
|
|
616
|
+
}
|
|
617
|
+
function mean_busy(samples) {
|
|
618
|
+
if (samples.length === 0) return void 0;
|
|
619
|
+
let total = 0;
|
|
620
|
+
for (const sample of samples) total += sample.busy_cores;
|
|
621
|
+
return total / samples.length;
|
|
622
|
+
}
|
|
623
|
+
function averaged(reading, samples, ledger_cores) {
|
|
624
|
+
if (reading.busy_cores === void 0 || samples.length === 0) return reading;
|
|
625
|
+
let total = 0;
|
|
626
|
+
for (const sample of samples) total += sample.external_cores;
|
|
627
|
+
return { ...reading, busy_cores: ledger_cores + total / samples.length };
|
|
628
|
+
}
|
|
629
|
+
var EASE_CORES = 1;
|
|
630
|
+
function with_ease(ease, busy_cores, now) {
|
|
631
|
+
if (busy_cores === void 0) return ease;
|
|
632
|
+
if (ease === void 0 || busy_cores <= ease.level - EASE_CORES) {
|
|
633
|
+
return { level: busy_cores, eased_at: now };
|
|
634
|
+
}
|
|
635
|
+
return ease;
|
|
636
|
+
}
|
|
637
|
+
function is_unrelieved(ease, now, window_ms) {
|
|
638
|
+
return ease !== void 0 && now - ease.eased_at >= window_ms;
|
|
639
|
+
}
|
|
640
|
+
var busy_average = {
|
|
641
|
+
AVERAGE_WINDOW_MS,
|
|
642
|
+
averaged,
|
|
643
|
+
is_unrelieved,
|
|
644
|
+
mean_busy,
|
|
645
|
+
with_ease,
|
|
646
|
+
with_reading
|
|
647
|
+
};
|
|
648
|
+
|
|
649
|
+
// scripts/gate/core-priority.ts
|
|
650
|
+
var PRIORITY_KEY = "JOSH_CORE_PRIORITY";
|
|
651
|
+
var PRIORITY_VALUE = "1";
|
|
652
|
+
var PRIORITY_ENVIRONMENT = { [PRIORITY_KEY]: PRIORITY_VALUE };
|
|
653
|
+
var UNMARKED_ENVIRONMENT = { [PRIORITY_KEY]: void 0 };
|
|
654
|
+
function marker_field({ is_unit, is_suite }) {
|
|
655
|
+
const is_marked = process.env[PRIORITY_KEY] === PRIORITY_VALUE;
|
|
656
|
+
return is_marked && is_unit !== true && is_suite !== true ? true : void 0;
|
|
657
|
+
}
|
|
658
|
+
var core_priority = { PRIORITY_ENVIRONMENT, PRIORITY_KEY, UNMARKED_ENVIRONMENT, marker_field };
|
|
659
|
+
|
|
660
|
+
// scripts/gate/core-wait.ts
|
|
661
|
+
import path4 from "node:path";
|
|
662
|
+
var WAIT_REASONS = ["cores", "cpu", "memory", "pressure"];
|
|
663
|
+
var REASON_TEXT = {
|
|
664
|
+
cores: "not enough free cores",
|
|
665
|
+
cpu: "CPU saturated",
|
|
666
|
+
memory: "not enough free memory",
|
|
667
|
+
pressure: "memory under pressure"
|
|
668
|
+
};
|
|
669
|
+
function core_reason(key, reservations, budget) {
|
|
670
|
+
const declared = { cores: budget.cores + (budget.busy_excess ?? 0), memory_mb: Infinity };
|
|
671
|
+
return core_admission.is_admitted(key, reservations, declared) ? "cpu" : "cores";
|
|
672
|
+
}
|
|
673
|
+
function wait_reason(key, reservations, budget) {
|
|
674
|
+
const cores_only = { ...budget, memory_mb: Infinity };
|
|
675
|
+
if (!core_admission.is_admitted(key, reservations, cores_only)) {
|
|
676
|
+
return core_reason(key, reservations, budget);
|
|
677
|
+
}
|
|
678
|
+
return budget.memory_pressured === true ? "pressure" : "memory";
|
|
679
|
+
}
|
|
680
|
+
function hold_reason(key, reservations, budget, granted) {
|
|
681
|
+
if (!core_admission.is_admitted(key, reservations, budget)) {
|
|
682
|
+
return wait_reason(key, reservations, budget);
|
|
683
|
+
}
|
|
684
|
+
return core_admission.is_too_narrow(key, reservations, granted) ? "cpu" : void 0;
|
|
685
|
+
}
|
|
686
|
+
function is_outside_held(key, reservations, budget) {
|
|
687
|
+
const unloaded = {
|
|
688
|
+
...budget,
|
|
689
|
+
cores: budget.cores + (budget.busy_excess ?? 0),
|
|
690
|
+
busy_excess: 0,
|
|
691
|
+
is_overloaded: false
|
|
692
|
+
};
|
|
693
|
+
const granted = core_admission.narrowed_weight(key, reservations, unloaded.cores);
|
|
694
|
+
return hold_reason(key, reservations, unloaded, granted) === void 0;
|
|
695
|
+
}
|
|
696
|
+
var SMALL_CLAIM_CORES = core_weights.CORE_WEIGHTS.lint;
|
|
697
|
+
function unseen_cores(own, reservations, now) {
|
|
698
|
+
const fresh = reservations.filter((entry) => {
|
|
699
|
+
const { admitted_at } = entry.reservation;
|
|
700
|
+
if (admitted_at === void 0) return core_admission.compare_claim(entry, own) < 0;
|
|
701
|
+
return now - admitted_at < busy_average.AVERAGE_WINDOW_MS;
|
|
702
|
+
});
|
|
703
|
+
return core_admission.sum_load(fresh).cores;
|
|
704
|
+
}
|
|
705
|
+
function has_room(weight, budget, room, unseen) {
|
|
706
|
+
if (weight > SMALL_CLAIM_CORES || budget.is_overloaded === true) return false;
|
|
707
|
+
return room.busy_cores !== void 0 && room.busy_cores + unseen + weight <= room.cores;
|
|
708
|
+
}
|
|
709
|
+
function is_ledger_held_small(key, reservations, budget, room) {
|
|
710
|
+
const own = reservations.find((entry) => entry.key === key);
|
|
711
|
+
if (own === void 0) return false;
|
|
712
|
+
const unseen = unseen_cores(own, reservations, room.now);
|
|
713
|
+
if (!has_room(own.reservation.weight, budget, room, unseen)) return false;
|
|
714
|
+
return core_admission.is_admitted(key, reservations, { ...budget, cores: Infinity });
|
|
715
|
+
}
|
|
716
|
+
function is_held_in_vain(key, reservations, budget, room) {
|
|
717
|
+
if (is_outside_held(key, reservations, budget)) return true;
|
|
718
|
+
return is_ledger_held_small(key, reservations, budget, room);
|
|
719
|
+
}
|
|
720
|
+
function wait_line(command, reason) {
|
|
721
|
+
return `\u23F3 ${command ?? "a step"} waits for the core budget \u2014 ${REASON_TEXT[reason]}`;
|
|
722
|
+
}
|
|
723
|
+
function where_of(checkout) {
|
|
724
|
+
return {
|
|
725
|
+
checkout,
|
|
726
|
+
lane: lane_paths.lane_issue_of(checkout),
|
|
727
|
+
lanes_root: lane_paths.lanes_root_of(checkout)
|
|
728
|
+
};
|
|
729
|
+
}
|
|
730
|
+
function place_of(marker, home_root) {
|
|
731
|
+
const { checkout, lane, lanes_root } = marker;
|
|
732
|
+
if (checkout === void 0 || lanes_root === void 0 || lanes_root === home_root) {
|
|
733
|
+
return { lane, elsewhere: void 0 };
|
|
734
|
+
}
|
|
735
|
+
const name = lane === void 0 ? path4.basename(checkout) : `${path4.basename(lanes_root)}/${lane}`;
|
|
736
|
+
return { lane: void 0, elsewhere: name };
|
|
737
|
+
}
|
|
738
|
+
function wait_of(marker, now, home_root) {
|
|
739
|
+
const { command, wait_reason: reason } = marker;
|
|
740
|
+
if (reason === void 0 || marker.admitted_at !== void 0) return [];
|
|
741
|
+
return [{ command, ...place_of(marker, home_root), waited_ms: now - marker.claimed_at, reason }];
|
|
742
|
+
}
|
|
743
|
+
function waits_of(entries, now, home) {
|
|
744
|
+
const home_root = lane_paths.lanes_root_of(home);
|
|
745
|
+
return entries.flatMap((entry) => wait_of(entry.reservation, now, home_root)).toSorted((left, right) => right.waited_ms - left.waited_ms);
|
|
746
|
+
}
|
|
747
|
+
var core_wait = {
|
|
748
|
+
WAIT_REASONS,
|
|
749
|
+
hold_reason,
|
|
750
|
+
is_held_in_vain,
|
|
751
|
+
is_outside_held,
|
|
752
|
+
wait_line,
|
|
753
|
+
wait_reason,
|
|
754
|
+
waits_of,
|
|
755
|
+
where_of
|
|
756
|
+
};
|
|
757
|
+
|
|
758
|
+
// scripts/gate/core-reservation.ts
|
|
759
|
+
var reservation_schema = process_owner_schema.extend({
|
|
760
|
+
weight: external_exports.number(),
|
|
761
|
+
claimed_at: external_exports.number(),
|
|
762
|
+
memory_mb: external_exports.number().optional(),
|
|
763
|
+
admitted_at: external_exports.number().optional(),
|
|
764
|
+
is_unit: external_exports.boolean().optional(),
|
|
765
|
+
is_strict_admission: external_exports.boolean().optional(),
|
|
766
|
+
is_memory_pending: external_exports.boolean().optional(),
|
|
767
|
+
is_priority: external_exports.boolean().optional(),
|
|
768
|
+
granted: external_exports.number().optional(),
|
|
769
|
+
command: external_exports.string().optional(),
|
|
770
|
+
checkout: external_exports.string().optional(),
|
|
771
|
+
lane: external_exports.string().optional(),
|
|
772
|
+
lanes_root: external_exports.string().optional(),
|
|
773
|
+
wait_reason: external_exports.enum(core_wait.WAIT_REASONS).optional()
|
|
774
|
+
});
|
|
775
|
+
function claim_fields(weight, claimed_at, options) {
|
|
776
|
+
const { memory_mb, command, is_unit, is_strict_admission, is_memory_pending } = options;
|
|
777
|
+
return {
|
|
778
|
+
weight,
|
|
779
|
+
claimed_at,
|
|
780
|
+
memory_mb,
|
|
781
|
+
command,
|
|
782
|
+
is_unit,
|
|
783
|
+
is_strict_admission,
|
|
784
|
+
is_memory_pending,
|
|
785
|
+
is_priority: core_priority.marker_field(options),
|
|
786
|
+
...core_wait.where_of(options.checkout ?? process.cwd())
|
|
787
|
+
};
|
|
788
|
+
}
|
|
789
|
+
function read_reservation(source) {
|
|
790
|
+
const raw = stamp_file.read_stamp_text(source);
|
|
791
|
+
return raw === void 0 ? void 0 : json_value.parse_with(raw, reservation_schema);
|
|
792
|
+
}
|
|
793
|
+
function write_reservation(target, fields) {
|
|
794
|
+
stamp_file.replace_stamp(target, { ...process_identity.own_fields(), ...fields });
|
|
795
|
+
}
|
|
796
|
+
function transfer(handle, pid) {
|
|
797
|
+
const reservation = read_reservation(handle.target);
|
|
798
|
+
if (reservation === void 0) {
|
|
799
|
+
throw new Error("The admitted reservation disappeared before transfer");
|
|
800
|
+
}
|
|
801
|
+
stamp_file.replace_stamp(handle.target, {
|
|
802
|
+
...reservation,
|
|
803
|
+
pid,
|
|
804
|
+
process_start: process_identity.read_start(pid),
|
|
805
|
+
is_memory_pending: false,
|
|
806
|
+
admitted_at: Date.now()
|
|
807
|
+
});
|
|
808
|
+
}
|
|
809
|
+
var core_reservation = { claim_fields, read_reservation, transfer, write_reservation };
|
|
810
|
+
|
|
811
|
+
// scripts/gate/machine-capacity.ts
|
|
812
|
+
import { readFile } from "node:fs/promises";
|
|
813
|
+
import { availableParallelism, cpus, loadavg, totalmem } from "node:os";
|
|
814
|
+
var SAMPLE_WINDOW_MS = 250;
|
|
815
|
+
var OVERLOAD_FACTOR = 2;
|
|
816
|
+
var BYTES_PER_MB = 1048576;
|
|
817
|
+
var KB_PER_MB = 1024;
|
|
818
|
+
var PERCENT = 100;
|
|
819
|
+
var MEMINFO_PATH = "/proc/meminfo";
|
|
820
|
+
var VMSTAT_PATH = "/proc/vmstat";
|
|
821
|
+
var LINUX_AVAILABLE = /^MemAvailable:\s+(?<kb>\d+) kB/mu;
|
|
822
|
+
var LINUX_SWAP_IN = /^pswpin (?<pages>\d+)$/mu;
|
|
823
|
+
var LINUX_SWAP_OUT = /^pswpout (?<pages>\d+)$/mu;
|
|
824
|
+
var PAGE_SIZE_ARGUMENTS = ["PAGESIZE"];
|
|
825
|
+
var LEVEL_NAME = "kern.memorystatus_level";
|
|
826
|
+
var SWAP_IN_NAME = "vm.compressor.swapper.swapins_total";
|
|
827
|
+
var SWAP_OUT_NAME = "vm.compressor.swapper.swapouts_total";
|
|
828
|
+
var COMPRESSED_NAME = "vm.compressor_input_bytes";
|
|
829
|
+
var PAGE_SIZE_NAME = "hw.pagesize";
|
|
830
|
+
var PRESSURE_NAME = "kern.memorystatus_vm_pressure_level";
|
|
831
|
+
var PRESSURE_HOLD = 4;
|
|
832
|
+
var SWAP_PRESSURE_MB = 16;
|
|
833
|
+
var COMPRESSION_PRESSURE_MB = 64;
|
|
834
|
+
var SYSCTL_ARGUMENTS = [
|
|
835
|
+
LEVEL_NAME,
|
|
836
|
+
SWAP_IN_NAME,
|
|
837
|
+
SWAP_OUT_NAME,
|
|
838
|
+
COMPRESSED_NAME,
|
|
839
|
+
PAGE_SIZE_NAME,
|
|
840
|
+
PRESSURE_NAME
|
|
841
|
+
];
|
|
842
|
+
var SYSCTL_LINE = /^(?<name>[\w.]+): (?<value>\d+)$/gmu;
|
|
843
|
+
function cpu_times() {
|
|
844
|
+
let busy = 0;
|
|
845
|
+
let idle = 0;
|
|
846
|
+
for (const { times } of cpus()) {
|
|
847
|
+
busy += times.user + times.nice + times.sys + times.irq;
|
|
848
|
+
idle += times.idle;
|
|
849
|
+
}
|
|
850
|
+
return { busy, total: busy + idle };
|
|
851
|
+
}
|
|
852
|
+
function busy_share_between(before, after) {
|
|
853
|
+
const total = after.total - before.total;
|
|
854
|
+
if (total <= 0) return void 0;
|
|
855
|
+
return (after.busy - before.busy) / total;
|
|
856
|
+
}
|
|
857
|
+
function busy_cores_between(before, after, cores) {
|
|
858
|
+
const share = busy_share_between(before, after);
|
|
859
|
+
return share === void 0 ? void 0 : share * cores;
|
|
860
|
+
}
|
|
861
|
+
function sysctl_values(output) {
|
|
862
|
+
const values = [...output.matchAll(SYSCTL_LINE)].map(
|
|
863
|
+
(match) => [match.groups?.["name"] ?? "", Number(match.groups?.["value"])]
|
|
864
|
+
);
|
|
865
|
+
return new Map(values);
|
|
866
|
+
}
|
|
867
|
+
function swapped_pages(pages_in, pages_out) {
|
|
868
|
+
return pages_in === void 0 || pages_out === void 0 ? void 0 : pages_in + pages_out;
|
|
869
|
+
}
|
|
870
|
+
function mb_of(units, unit_bytes) {
|
|
871
|
+
if (units === void 0 || unit_bytes === void 0) return void 0;
|
|
872
|
+
return units * unit_bytes / BYTES_PER_MB;
|
|
873
|
+
}
|
|
874
|
+
function swapped_between(from, to) {
|
|
875
|
+
if (from === void 0 || to === void 0) return void 0;
|
|
876
|
+
return Math.max(0, to - from);
|
|
877
|
+
}
|
|
878
|
+
function parse_darwin_memory(output, total_bytes) {
|
|
879
|
+
const values = sysctl_values(output);
|
|
880
|
+
const level = values.get(LEVEL_NAME);
|
|
881
|
+
return {
|
|
882
|
+
available_mb: level === void 0 ? void 0 : level / PERCENT * (total_bytes / BYTES_PER_MB),
|
|
883
|
+
swapped_mb: mb_of(
|
|
884
|
+
swapped_pages(values.get(SWAP_IN_NAME), values.get(SWAP_OUT_NAME)),
|
|
885
|
+
values.get(PAGE_SIZE_NAME)
|
|
886
|
+
),
|
|
887
|
+
pressure_level: values.get(PRESSURE_NAME),
|
|
888
|
+
compressed_mb: mb_of(values.get(COMPRESSED_NAME), 1)
|
|
889
|
+
};
|
|
890
|
+
}
|
|
891
|
+
function parse_linux_available(meminfo) {
|
|
892
|
+
const kb = LINUX_AVAILABLE.exec(meminfo)?.groups?.["kb"];
|
|
893
|
+
return kb === void 0 ? void 0 : Number(kb) / KB_PER_MB;
|
|
894
|
+
}
|
|
895
|
+
function pages_of(pattern, vmstat) {
|
|
896
|
+
const pages = pattern.exec(vmstat)?.groups?.["pages"];
|
|
897
|
+
return pages === void 0 ? void 0 : Number(pages);
|
|
898
|
+
}
|
|
899
|
+
function parse_linux_swapped(vmstat, page_bytes) {
|
|
900
|
+
const pages = swapped_pages(pages_of(LINUX_SWAP_IN, vmstat), pages_of(LINUX_SWAP_OUT, vmstat));
|
|
901
|
+
return mb_of(pages, page_bytes);
|
|
902
|
+
}
|
|
903
|
+
async function settled(read) {
|
|
904
|
+
try {
|
|
905
|
+
return await read();
|
|
906
|
+
} catch {
|
|
907
|
+
return void 0;
|
|
908
|
+
}
|
|
909
|
+
}
|
|
910
|
+
async function read_darwin_memory() {
|
|
911
|
+
const { stdout } = await execa("sysctl", SYSCTL_ARGUMENTS, {
|
|
912
|
+
reject: false,
|
|
913
|
+
timeout: PROBE_TIMEOUT_MS
|
|
914
|
+
});
|
|
915
|
+
return parse_darwin_memory(stdout, totalmem());
|
|
916
|
+
}
|
|
917
|
+
async function read_page_size() {
|
|
918
|
+
const { stdout } = await execa("getconf", PAGE_SIZE_ARGUMENTS, { timeout: PROBE_TIMEOUT_MS });
|
|
919
|
+
return stdout;
|
|
920
|
+
}
|
|
921
|
+
async function read_linux_memory() {
|
|
922
|
+
const [meminfo, vmstat, page_size] = await Promise.all([
|
|
923
|
+
settled(async () => await readFile(MEMINFO_PATH, "utf8")),
|
|
924
|
+
settled(async () => await readFile(VMSTAT_PATH, "utf8")),
|
|
925
|
+
settled(read_page_size)
|
|
926
|
+
]);
|
|
927
|
+
const page_bytes = page_size === void 0 ? void 0 : Number(page_size);
|
|
928
|
+
return {
|
|
929
|
+
available_mb: meminfo === void 0 ? void 0 : parse_linux_available(meminfo),
|
|
930
|
+
swapped_mb: vmstat === void 0 || page_bytes === void 0 ? void 0 : parse_linux_swapped(vmstat, page_bytes),
|
|
931
|
+
pressure_level: void 0
|
|
932
|
+
};
|
|
933
|
+
}
|
|
934
|
+
var UNREAD_MEMORY = {
|
|
935
|
+
available_mb: void 0,
|
|
936
|
+
swapped_mb: void 0,
|
|
937
|
+
pressure_level: void 0
|
|
938
|
+
};
|
|
939
|
+
async function read_memory() {
|
|
940
|
+
if (process.platform === "darwin") return await settled(read_darwin_memory) ?? UNREAD_MEMORY;
|
|
941
|
+
return process.platform === "linux" ? await read_linux_memory() : UNREAD_MEMORY;
|
|
942
|
+
}
|
|
943
|
+
function is_unquoted() {
|
|
944
|
+
return cpus().length > 0 && cpus().length === availableParallelism();
|
|
945
|
+
}
|
|
946
|
+
async function default_sleep2(ms) {
|
|
947
|
+
await new Promise((resolve) => {
|
|
948
|
+
setTimeout(resolve, ms);
|
|
949
|
+
});
|
|
950
|
+
}
|
|
951
|
+
function moved_over(from, to, limit) {
|
|
952
|
+
return (swapped_between(from, to) ?? 0) > limit;
|
|
953
|
+
}
|
|
954
|
+
function is_swapping(before, after) {
|
|
955
|
+
return moved_over(before?.swapped_mb, after.swapped_mb, SWAP_PRESSURE_MB);
|
|
956
|
+
}
|
|
957
|
+
function is_pressured(before, after) {
|
|
958
|
+
return (after.pressure_level ?? 0) >= PRESSURE_HOLD || is_swapping(before, after) || moved_over(before.compressed_mb, after.compressed_mb, COMPRESSION_PRESSURE_MB);
|
|
959
|
+
}
|
|
960
|
+
function pressured_available(after, before) {
|
|
961
|
+
if (after.available_mb === void 0) return void 0;
|
|
962
|
+
if (is_swapping(before, after)) return 0;
|
|
963
|
+
return (after.pressure_level ?? 0) >= PRESSURE_HOLD ? 0 : after.available_mb;
|
|
964
|
+
}
|
|
965
|
+
async function read_machine(sleep = default_sleep2) {
|
|
966
|
+
const before = cpu_times();
|
|
967
|
+
const [memory_before] = await Promise.all([read_memory(), sleep(SAMPLE_WINDOW_MS)]);
|
|
968
|
+
const memory_after = await read_memory();
|
|
969
|
+
const is_host = is_unquoted();
|
|
970
|
+
const busy_cores = is_host ? busy_cores_between(before, cpu_times(), cpus().length) : void 0;
|
|
971
|
+
return {
|
|
972
|
+
busy_cores,
|
|
973
|
+
run_queue: is_host ? loadavg()[0] : void 0,
|
|
974
|
+
available_mb: pressured_available(memory_after, memory_before),
|
|
975
|
+
memory_pressured: is_pressured(memory_before, memory_after),
|
|
976
|
+
memory_supported: process.platform === "darwin" || process.platform === "linux",
|
|
977
|
+
total_mb: totalmem() / BYTES_PER_MB
|
|
978
|
+
};
|
|
979
|
+
}
|
|
980
|
+
async function read_sample() {
|
|
981
|
+
return { cpu: cpu_times(), memory: await read_memory(), total_mb: totalmem() / BYTES_PER_MB };
|
|
982
|
+
}
|
|
983
|
+
function external_cores(busy_cores, ledger_cores) {
|
|
984
|
+
if (busy_cores === void 0) return 0;
|
|
985
|
+
return Math.floor(Math.max(0, busy_cores - ledger_cores));
|
|
986
|
+
}
|
|
987
|
+
function is_overloaded(run_queue, ledger_cores, cores) {
|
|
988
|
+
if (run_queue === void 0) return false;
|
|
989
|
+
return run_queue - ledger_cores > cores * OVERLOAD_FACTOR;
|
|
990
|
+
}
|
|
991
|
+
function machine_budget(cores, reading, ledger) {
|
|
992
|
+
const busy_excess = external_cores(reading.busy_cores, ledger.cores);
|
|
993
|
+
return {
|
|
994
|
+
cores: Math.max(0, cores - busy_excess),
|
|
995
|
+
memory_mb: reading.available_mb === void 0 ? Infinity : reading.available_mb + ledger.memory_mb,
|
|
996
|
+
memory_pressured: reading.memory_pressured,
|
|
997
|
+
busy_excess,
|
|
998
|
+
is_overloaded: is_overloaded(reading.run_queue, ledger.cores, cores)
|
|
999
|
+
};
|
|
1000
|
+
}
|
|
1001
|
+
var machine_capacity = {
|
|
1002
|
+
busy_cores_between,
|
|
1003
|
+
busy_share_between,
|
|
1004
|
+
COMPRESSION_PRESSURE_MB,
|
|
1005
|
+
external_cores,
|
|
1006
|
+
machine_budget,
|
|
1007
|
+
parse_darwin_memory,
|
|
1008
|
+
parse_linux_available,
|
|
1009
|
+
parse_linux_swapped,
|
|
1010
|
+
PRESSURE_HOLD,
|
|
1011
|
+
pressured_available,
|
|
1012
|
+
read_machine,
|
|
1013
|
+
read_memory,
|
|
1014
|
+
read_sample,
|
|
1015
|
+
SWAP_PRESSURE_MB,
|
|
1016
|
+
swapped_between
|
|
1017
|
+
};
|
|
1018
|
+
|
|
1019
|
+
// scripts/gate/core-budget-poll.ts
|
|
1020
|
+
function check_measurement(command, reading) {
|
|
1021
|
+
if (reading.memory_supported === true && !Number.isFinite(reading.available_mb)) {
|
|
1022
|
+
throw new Error(`${command}: memory measurement failed; admission refused`);
|
|
1023
|
+
}
|
|
1024
|
+
}
|
|
1025
|
+
function check_capacity(command, requested, total_mb) {
|
|
1026
|
+
if (total_mb === void 0) return;
|
|
1027
|
+
if (requested > total_mb) {
|
|
1028
|
+
throw new Error(
|
|
1029
|
+
`${command}: requested ${String(requested)} MB exceeds physical memory ${String(total_mb)} MB`
|
|
1030
|
+
);
|
|
1031
|
+
}
|
|
1032
|
+
}
|
|
1033
|
+
function check_memory(context, reading) {
|
|
1034
|
+
const requested = context.fields.memory_mb ?? 0;
|
|
1035
|
+
if (requested === 0) return;
|
|
1036
|
+
const command = context.fields.command ?? "a step";
|
|
1037
|
+
const minimum = context.fields.is_unit === true ? requested / Math.max(1, context.fields.weight) : requested;
|
|
1038
|
+
check_measurement(command, reading);
|
|
1039
|
+
check_capacity(command, minimum, reading.total_mb);
|
|
1040
|
+
}
|
|
1041
|
+
async function current_reading(context, reservations) {
|
|
1042
|
+
const reading = await context.read_machine();
|
|
1043
|
+
const ledger = core_admission.ledger_load(reservations, context.now());
|
|
1044
|
+
check_memory(context, reading);
|
|
1045
|
+
context.busy_samples = busy_average.with_reading(
|
|
1046
|
+
context.busy_samples,
|
|
1047
|
+
reading,
|
|
1048
|
+
ledger.cores,
|
|
1049
|
+
context.now()
|
|
1050
|
+
);
|
|
1051
|
+
const mean = busy_average.averaged(reading, context.busy_samples, ledger.cores);
|
|
1052
|
+
context.ease = busy_average.with_ease(context.ease, mean.busy_cores, context.now());
|
|
1053
|
+
return { budget: machine_capacity.machine_budget(context.budget, mean, ledger), reading };
|
|
1054
|
+
}
|
|
1055
|
+
function admit(context, decision) {
|
|
1056
|
+
const admitted_at = context.now();
|
|
1057
|
+
const { granted, overflow, reason, budget, reading } = decision;
|
|
1058
|
+
core_reservation.write_reservation(context.target, { ...context.fields, admitted_at, granted });
|
|
1059
|
+
return {
|
|
1060
|
+
overflow,
|
|
1061
|
+
granted,
|
|
1062
|
+
waited_ms: admitted_at - context.fields.claimed_at,
|
|
1063
|
+
decision: { reason, budget, reading }
|
|
1064
|
+
};
|
|
1065
|
+
}
|
|
1066
|
+
function mark_waiting(context, reason) {
|
|
1067
|
+
const previous = context.fields.wait_reason;
|
|
1068
|
+
if (previous === reason) return;
|
|
1069
|
+
context.fields = { ...context.fields, wait_reason: reason };
|
|
1070
|
+
core_reservation.write_reservation(context.target, context.fields);
|
|
1071
|
+
if (previous === void 0) context.report(core_wait.wait_line(context.fields.command, reason));
|
|
1072
|
+
}
|
|
1073
|
+
function spent_reason(context, reservations, budget) {
|
|
1074
|
+
const now = context.now();
|
|
1075
|
+
if (now >= context.deadline) return "cpu-deadline";
|
|
1076
|
+
const busy_cores = busy_average.mean_busy(context.busy_samples);
|
|
1077
|
+
const room = { busy_cores, cores: context.budget, now };
|
|
1078
|
+
return busy_average.is_unrelieved(context.ease, now, context.ease_window_ms) && core_wait.is_held_in_vain(context.key, reservations, budget, room) ? "cpu-unrelieved" : void 0;
|
|
1079
|
+
}
|
|
1080
|
+
function overflow_reason(context, reservations, budget) {
|
|
1081
|
+
if (context.fields.is_strict_admission === true || core_admission.is_memory_held(context.key, reservations, budget)) {
|
|
1082
|
+
return void 0;
|
|
1083
|
+
}
|
|
1084
|
+
return spent_reason(context, reservations, budget);
|
|
1085
|
+
}
|
|
1086
|
+
function overflow_of(context, reservations, decision) {
|
|
1087
|
+
const held = core_admission.with_grant(context.key, reservations, decision.granted);
|
|
1088
|
+
const overflow = {
|
|
1089
|
+
waited_ms: context.now() - context.fields.claimed_at,
|
|
1090
|
+
ledger: core_admission.sum_load(held),
|
|
1091
|
+
budget: decision.budget
|
|
1092
|
+
};
|
|
1093
|
+
return admit(context, { ...decision, overflow });
|
|
1094
|
+
}
|
|
1095
|
+
function fit_reason(context, reservations, budget) {
|
|
1096
|
+
const requested = context.fields.memory_mb ?? 0;
|
|
1097
|
+
if (context.fields.is_unit === true && requested > budget.memory_mb) {
|
|
1098
|
+
return "unit-memory-narrowing";
|
|
1099
|
+
}
|
|
1100
|
+
const strict = { ...budget, busy_excess: 0, is_overloaded: true };
|
|
1101
|
+
return core_admission.is_admitted(context.key, reservations, strict) ? "budget-fit" : "cpu-first-waiter";
|
|
1102
|
+
}
|
|
1103
|
+
async function poll_admission(context, reservations) {
|
|
1104
|
+
const { budget, reading } = await current_reading(context, reservations);
|
|
1105
|
+
const granted = core_admission.narrowed_weight(context.key, reservations, budget.cores);
|
|
1106
|
+
const reason = core_wait.hold_reason(context.key, reservations, budget, granted);
|
|
1107
|
+
if (reason === void 0) {
|
|
1108
|
+
return admit(context, {
|
|
1109
|
+
budget,
|
|
1110
|
+
reading,
|
|
1111
|
+
granted,
|
|
1112
|
+
reason: fit_reason(context, reservations, budget)
|
|
1113
|
+
});
|
|
1114
|
+
}
|
|
1115
|
+
const overflow = overflow_reason(context, reservations, budget);
|
|
1116
|
+
if (overflow !== void 0) {
|
|
1117
|
+
return overflow_of(context, reservations, { budget, reading, granted, reason: overflow });
|
|
1118
|
+
}
|
|
1119
|
+
mark_waiting(context, reason);
|
|
1120
|
+
return void 0;
|
|
1121
|
+
}
|
|
1122
|
+
var core_budget_poll = { poll_admission };
|
|
1123
|
+
|
|
1124
|
+
// scripts/gate/core-wait-record.ts
|
|
1125
|
+
var UNNAMED_COMMAND = "a step";
|
|
1126
|
+
async function to_ledger(wait) {
|
|
1127
|
+
await lane_ledger_write.record_core_wait(wait);
|
|
1128
|
+
}
|
|
1129
|
+
function request_fields(claim2, admission) {
|
|
1130
|
+
return {
|
|
1131
|
+
requested_cores: claim2.weight,
|
|
1132
|
+
granted_cores: admission?.granted ?? claim2.weight,
|
|
1133
|
+
memory_mb: claim2.memory_mb ?? 0,
|
|
1134
|
+
wait_reason: claim2.wait_reason,
|
|
1135
|
+
admission_waited_ms: admission?.waited_ms
|
|
1136
|
+
};
|
|
1137
|
+
}
|
|
1138
|
+
function admission_fields(claim2, admission) {
|
|
1139
|
+
const decision = admission?.decision;
|
|
1140
|
+
if (decision === void 0) return {};
|
|
1141
|
+
return {
|
|
1142
|
+
...request_fields(claim2, admission),
|
|
1143
|
+
admission_reason: decision.reason,
|
|
1144
|
+
overflow: admission?.overflow !== void 0,
|
|
1145
|
+
budget_cores: decision.budget.cores,
|
|
1146
|
+
budget_memory_mb: Number.isFinite(decision.budget.memory_mb) ? decision.budget.memory_mb : void 0,
|
|
1147
|
+
available_mb: decision.reading.available_mb,
|
|
1148
|
+
busy_cores: decision.reading.busy_cores,
|
|
1149
|
+
memory_pressured: decision.reading.memory_pressured
|
|
1150
|
+
};
|
|
1151
|
+
}
|
|
1152
|
+
function should_record(claim2, admission) {
|
|
1153
|
+
return claim2.wait_reason !== void 0 || admission?.decision !== void 0;
|
|
1154
|
+
}
|
|
1155
|
+
function wait_of2(claim2, now, admission) {
|
|
1156
|
+
if (!should_record(claim2, admission)) return void 0;
|
|
1157
|
+
const waited_ms = claim2.wait_reason === void 0 ? 0 : now - claim2.claimed_at;
|
|
1158
|
+
const wait = {
|
|
1159
|
+
command: claim2.command ?? UNNAMED_COMMAND,
|
|
1160
|
+
waited_ms,
|
|
1161
|
+
...admission_fields(claim2, admission)
|
|
1162
|
+
};
|
|
1163
|
+
return claim2.lane === void 0 ? wait : { ...wait, issue: Number(claim2.lane) };
|
|
1164
|
+
}
|
|
1165
|
+
async function record_admitted(claim2, now, sink = to_ledger, admission) {
|
|
1166
|
+
const wait = wait_of2(claim2, now, admission);
|
|
1167
|
+
if (wait !== void 0) await sink(wait);
|
|
1168
|
+
}
|
|
1169
|
+
var core_wait_record = { record_admitted, wait_of: wait_of2 };
|
|
1170
|
+
|
|
1171
|
+
// scripts/gate/held-mark.ts
|
|
1172
|
+
var HELD_KEY = "JOSH_CORE_RESERVED";
|
|
1173
|
+
var HELD_VALUE = "1";
|
|
1174
|
+
var HELD_RESERVATION_KEY = "JOSH_CORE_RESERVATION";
|
|
1175
|
+
function is_held() {
|
|
1176
|
+
return process.env[HELD_KEY] === HELD_VALUE;
|
|
1177
|
+
}
|
|
1178
|
+
function held_reservation() {
|
|
1179
|
+
const key = process.env[HELD_RESERVATION_KEY] ?? "";
|
|
1180
|
+
return key === "" ? void 0 : key;
|
|
1181
|
+
}
|
|
1182
|
+
function set_held_mark(value, reservation) {
|
|
1183
|
+
process.env[HELD_KEY] = value;
|
|
1184
|
+
process.env[HELD_RESERVATION_KEY] = reservation;
|
|
1185
|
+
}
|
|
1186
|
+
async function with_held_mark(run, reservation = "") {
|
|
1187
|
+
const previous = process.env[HELD_KEY] ?? "";
|
|
1188
|
+
const previous_reservation = process.env[HELD_RESERVATION_KEY] ?? "";
|
|
1189
|
+
set_held_mark(HELD_VALUE, reservation);
|
|
1190
|
+
try {
|
|
1191
|
+
return await run();
|
|
1192
|
+
} finally {
|
|
1193
|
+
set_held_mark(previous, previous_reservation);
|
|
1194
|
+
}
|
|
1195
|
+
}
|
|
1196
|
+
var held_mark = {
|
|
1197
|
+
HELD_KEY,
|
|
1198
|
+
HELD_RESERVATION_KEY,
|
|
1199
|
+
HELD_VALUE,
|
|
1200
|
+
held_reservation,
|
|
1201
|
+
is_held,
|
|
1202
|
+
with_held_mark
|
|
1203
|
+
};
|
|
1204
|
+
|
|
1205
|
+
// scripts/gate/core-budget.ts
|
|
1206
|
+
var RESERVED_PREFIX = "josh-core-reserved-";
|
|
1207
|
+
var RESERVED_SUFFIX = ".json";
|
|
1208
|
+
var MIN_BUDGET = 1;
|
|
1209
|
+
var { claim_fields: claim_fields2, read_reservation: read_reservation2, write_reservation: write_reservation2 } = core_reservation;
|
|
1210
|
+
function marker_name(key) {
|
|
1211
|
+
return `${RESERVED_PREFIX}${key}${RESERVED_SUFFIX}`;
|
|
1212
|
+
}
|
|
1213
|
+
function is_running(reservation) {
|
|
1214
|
+
return process_identity.is_same_process(reservation.pid, reservation.process_start) !== false;
|
|
1215
|
+
}
|
|
1216
|
+
function sweep_marker(source) {
|
|
1217
|
+
try {
|
|
1218
|
+
stamp_file.remove_stamp(source);
|
|
1219
|
+
} catch {
|
|
1220
|
+
}
|
|
1221
|
+
}
|
|
1222
|
+
function live_reservation(source) {
|
|
1223
|
+
const reservation = read_reservation2(source);
|
|
1224
|
+
if (reservation === void 0) return void 0;
|
|
1225
|
+
if (is_running(reservation)) return reservation;
|
|
1226
|
+
sweep_marker(source);
|
|
1227
|
+
return void 0;
|
|
1228
|
+
}
|
|
1229
|
+
function marker_files(directory) {
|
|
1230
|
+
try {
|
|
1231
|
+
return readdirSync2(directory).filter(
|
|
1232
|
+
(name) => name.startsWith(RESERVED_PREFIX) && name.endsWith(RESERVED_SUFFIX)
|
|
1233
|
+
);
|
|
1234
|
+
} catch {
|
|
1235
|
+
return [];
|
|
1236
|
+
}
|
|
1237
|
+
}
|
|
1238
|
+
function live_reservations(directory = PLATFORM_TEMP_ROOT) {
|
|
1239
|
+
return marker_files(directory).flatMap((name) => {
|
|
1240
|
+
const reservation = live_reservation(path5.join(directory, name));
|
|
1241
|
+
return reservation === void 0 ? [] : { key: name, reservation };
|
|
1242
|
+
});
|
|
1243
|
+
}
|
|
1244
|
+
function normalize_budget(budget) {
|
|
1245
|
+
return Number.isFinite(budget) ? Math.max(MIN_BUDGET, Math.floor(budget)) : MIN_BUDGET;
|
|
1246
|
+
}
|
|
1247
|
+
function report_wait(line) {
|
|
1248
|
+
process.stderr.write(`${line}
|
|
1249
|
+
`);
|
|
1250
|
+
}
|
|
1251
|
+
async function poll_admission2(context) {
|
|
1252
|
+
try {
|
|
1253
|
+
return await core_budget_poll.poll_admission(context, live_reservations(context.directory));
|
|
1254
|
+
} catch (error) {
|
|
1255
|
+
sweep_marker(context.target);
|
|
1256
|
+
throw error;
|
|
1257
|
+
}
|
|
1258
|
+
}
|
|
1259
|
+
async function await_admission(context) {
|
|
1260
|
+
const admission = await poll.wait_for(async () => await poll_admission2(context), {
|
|
1261
|
+
interval_ms: context.poll_interval_ms,
|
|
1262
|
+
sleeper: context.sleep
|
|
1263
|
+
});
|
|
1264
|
+
await core_wait_record.record_admitted(
|
|
1265
|
+
context.fields,
|
|
1266
|
+
context.now(),
|
|
1267
|
+
context.record_wait,
|
|
1268
|
+
admission
|
|
1269
|
+
);
|
|
1270
|
+
return admission;
|
|
1271
|
+
}
|
|
1272
|
+
function resolve_ports(options) {
|
|
1273
|
+
return {
|
|
1274
|
+
read_machine: options.read_machine ?? machine_capacity.read_machine,
|
|
1275
|
+
report: options.report ?? report_wait,
|
|
1276
|
+
record_wait: options.record_wait
|
|
1277
|
+
};
|
|
1278
|
+
}
|
|
1279
|
+
function claim(weight, options = {}) {
|
|
1280
|
+
const timing = core_budget_timing.resolve_timing(options);
|
|
1281
|
+
const directory = options.directory ?? PLATFORM_TEMP_ROOT;
|
|
1282
|
+
const claimed_at = timing.now();
|
|
1283
|
+
const name = marker_name(randomUUID());
|
|
1284
|
+
const target = path5.join(directory, name);
|
|
1285
|
+
const fields = claim_fields2(weight, claimed_at, options);
|
|
1286
|
+
write_reservation2(target, fields);
|
|
1287
|
+
return {
|
|
1288
|
+
...timing,
|
|
1289
|
+
key: name,
|
|
1290
|
+
target,
|
|
1291
|
+
directory,
|
|
1292
|
+
budget: normalize_budget(options.budget ?? availableParallelism2()),
|
|
1293
|
+
deadline: claimed_at + timing.wait_cap_ms,
|
|
1294
|
+
fields,
|
|
1295
|
+
busy_samples: [],
|
|
1296
|
+
...resolve_ports(options)
|
|
1297
|
+
};
|
|
1298
|
+
}
|
|
1299
|
+
async function reserve(weight, options = {}) {
|
|
1300
|
+
const context = claim(weight, options);
|
|
1301
|
+
const admission = await await_admission(context);
|
|
1302
|
+
return { target: context.target, admission };
|
|
1303
|
+
}
|
|
1304
|
+
async function poll_claim(context) {
|
|
1305
|
+
const admission = await poll_admission2(context);
|
|
1306
|
+
if (admission === void 0) return void 0;
|
|
1307
|
+
await core_wait_record.record_admitted(
|
|
1308
|
+
context.fields,
|
|
1309
|
+
context.now(),
|
|
1310
|
+
context.record_wait,
|
|
1311
|
+
admission
|
|
1312
|
+
);
|
|
1313
|
+
return { target: context.target, admission };
|
|
1314
|
+
}
|
|
1315
|
+
function budget_waits(directory = PLATFORM_TEMP_ROOT, now = Date.now(), home = process.cwd()) {
|
|
1316
|
+
return core_wait.waits_of(live_reservations(directory), now, home);
|
|
1317
|
+
}
|
|
1318
|
+
function release(handle) {
|
|
1319
|
+
sweep_marker(handle.target);
|
|
1320
|
+
}
|
|
1321
|
+
async function with_core_reservation(weight, run, options = {}) {
|
|
1322
|
+
const handle = await reserve(weight, options);
|
|
1323
|
+
try {
|
|
1324
|
+
return await run(handle.admission, path5.basename(handle.target));
|
|
1325
|
+
} finally {
|
|
1326
|
+
release(handle);
|
|
1327
|
+
}
|
|
1328
|
+
}
|
|
1329
|
+
function is_covered() {
|
|
1330
|
+
return held_mark.is_held() || unit_worker_share.is_nested_run();
|
|
1331
|
+
}
|
|
1332
|
+
async function with_command_reservation(weight, run, options = {}) {
|
|
1333
|
+
if (is_covered()) return await run();
|
|
1334
|
+
return await with_core_reservation(
|
|
1335
|
+
weight,
|
|
1336
|
+
async (_admission, key) => await held_mark.with_held_mark(run, key),
|
|
1337
|
+
options
|
|
1338
|
+
);
|
|
1339
|
+
}
|
|
1340
|
+
function held_unit_claim(directory = PLATFORM_TEMP_ROOT) {
|
|
1341
|
+
const key = held_mark.held_reservation();
|
|
1342
|
+
if (key === void 0) return void 0;
|
|
1343
|
+
const held = live_reservations(directory).find((entry) => entry.key === key);
|
|
1344
|
+
return held?.reservation.is_unit === true ? held.reservation : void 0;
|
|
1345
|
+
}
|
|
1346
|
+
var core_budget = {
|
|
1347
|
+
CORE_WEIGHTS: core_weights.CORE_WEIGHTS,
|
|
1348
|
+
HELD_KEY: held_mark.HELD_KEY,
|
|
1349
|
+
HELD_VALUE: held_mark.HELD_VALUE,
|
|
1350
|
+
MEMORY_MB: core_weights.MEMORY_MB,
|
|
1351
|
+
RESERVED_PREFIX,
|
|
1352
|
+
admitted_keys: core_admission.admitted_keys,
|
|
1353
|
+
admitted_load: core_admission.admitted_load,
|
|
1354
|
+
budget_waits,
|
|
1355
|
+
claim,
|
|
1356
|
+
describe_overflow: core_admission.describe_overflow,
|
|
1357
|
+
held_unit_claim,
|
|
1358
|
+
is_covered,
|
|
1359
|
+
is_held: held_mark.is_held,
|
|
1360
|
+
live_reservations,
|
|
1361
|
+
poll_claim,
|
|
1362
|
+
release,
|
|
1363
|
+
reserve,
|
|
1364
|
+
transfer: core_reservation.transfer,
|
|
1365
|
+
with_command_reservation,
|
|
1366
|
+
with_core_reservation,
|
|
1367
|
+
with_held_mark: held_mark.with_held_mark
|
|
1368
|
+
};
|
|
1369
|
+
|
|
1370
|
+
// scripts/josh/josh-in-process.ts
|
|
1371
|
+
import { realpathSync } from "node:fs";
|
|
1372
|
+
import path6 from "node:path";
|
|
1373
|
+
import { pathToFileURL } from "node:url";
|
|
1374
|
+
var BUNDLED_COMMAND_DIRECTORY = path6.join("dist", "commands");
|
|
1375
|
+
|
|
1376
|
+
// scripts/josh/run-github-prerequisite.ts
|
|
1377
|
+
import { existsSync as existsSync3 } from "node:fs";
|
|
1378
|
+
import path7 from "node:path";
|
|
1379
|
+
|
|
1380
|
+
// scripts/josh/josh-logic.ts
|
|
1381
|
+
var TSX_BIN = "tsx";
|
|
1382
|
+
var TSX_PACKAGE = "tsx";
|
|
1383
|
+
var PACKAGE_DIR = find_package_directory(path8.dirname(fileURLToPath(import.meta.url)));
|
|
1384
|
+
function resolve_tsx_executable() {
|
|
1385
|
+
const candidates = [
|
|
1386
|
+
resolve_local_bin(PACKAGE_DIR, TSX_BIN),
|
|
1387
|
+
resolve_local_bin(process.cwd(), TSX_BIN)
|
|
1388
|
+
];
|
|
1389
|
+
return candidates.find(existsSync4) ?? TSX_BIN;
|
|
1390
|
+
}
|
|
1391
|
+
function resolve_tsx_cli_entry() {
|
|
1392
|
+
for (const base_directory of [PACKAGE_DIR, process.cwd()]) {
|
|
1393
|
+
const cli_entry = resolve_package_bin(base_directory, TSX_PACKAGE, TSX_BIN);
|
|
1394
|
+
if (cli_entry !== void 0) return cli_entry;
|
|
1395
|
+
}
|
|
1396
|
+
return void 0;
|
|
1397
|
+
}
|
|
1398
|
+
function resolve_tsx_runner() {
|
|
1399
|
+
const cli_entry = resolve_tsx_cli_entry();
|
|
1400
|
+
if (cli_entry !== void 0) {
|
|
1401
|
+
return { executable: process.execPath, leading_arguments: [cli_entry] };
|
|
1402
|
+
}
|
|
1403
|
+
return { executable: resolve_tsx_executable(), leading_arguments: [] };
|
|
1404
|
+
}
|
|
1405
|
+
function read_package_version() {
|
|
1406
|
+
return package_manifest.read_manifest(PACKAGE_DIR, package_version_schema).version;
|
|
1407
|
+
}
|
|
1408
|
+
var HEADER = `josh v${read_package_version()} \u2014 Joshua Folkken's dev toolkit`;
|
|
1409
|
+
|
|
1410
|
+
// scripts/lint/import-graph.ts
|
|
1411
|
+
import path11 from "node:path";
|
|
1412
|
+
|
|
1413
|
+
// scripts/gate/input-fingerprint.ts
|
|
1414
|
+
import { readFileSync as readFileSync2 } from "node:fs";
|
|
1415
|
+
import path9 from "node:path";
|
|
1416
|
+
var ABSENT = "absent";
|
|
1417
|
+
function of_content(content) {
|
|
1418
|
+
return stamp_file.digest(content);
|
|
1419
|
+
}
|
|
1420
|
+
function of_entries(entries) {
|
|
1421
|
+
return of_content([...entries].toSorted((left, right) => left.localeCompare(right)).join("\n"));
|
|
1422
|
+
}
|
|
1423
|
+
function of_file(file_path) {
|
|
1424
|
+
try {
|
|
1425
|
+
return of_content(readFileSync2(file_path));
|
|
1426
|
+
} catch {
|
|
1427
|
+
return ABSENT;
|
|
1428
|
+
}
|
|
1429
|
+
}
|
|
1430
|
+
function of_files(root, relatives) {
|
|
1431
|
+
const sorted = [...new Set(relatives)].toSorted((left, right) => left.localeCompare(right));
|
|
1432
|
+
return Object.fromEntries(
|
|
1433
|
+
sorted.map((relative) => [relative, of_file(path9.join(root, relative))])
|
|
1434
|
+
);
|
|
1435
|
+
}
|
|
1436
|
+
var input_fingerprint = { ABSENT, of_entries, of_file, of_files };
|
|
1437
|
+
|
|
1438
|
+
// scripts/lint/import-graph-store.ts
|
|
1439
|
+
import { existsSync as existsSync5 } from "node:fs";
|
|
1440
|
+
import path10 from "node:path";
|
|
1441
|
+
var STORE_VERSION = 1;
|
|
1442
|
+
var STORE_NAME = `import-graph.v${String(STORE_VERSION)}.json`;
|
|
1443
|
+
var ENVIRONMENT_FILES = ["package.json", "pnpm-lock.yaml"];
|
|
1444
|
+
var EXTENSION = /(?:\.d)?\.[^./]+$/u;
|
|
1445
|
+
var INDEX = "index";
|
|
1446
|
+
var stored_dependency = external_exports.tuple([external_exports.string(), external_exports.boolean()]);
|
|
1447
|
+
var stored_file = external_exports.object({
|
|
1448
|
+
hash: external_exports.string(),
|
|
1449
|
+
all: external_exports.array(stored_dependency).optional(),
|
|
1450
|
+
runtime: external_exports.array(stored_dependency).optional()
|
|
1451
|
+
});
|
|
1452
|
+
var stored_graph = external_exports.object({
|
|
1453
|
+
version: external_exports.literal(STORE_VERSION),
|
|
1454
|
+
environment: external_exports.string(),
|
|
1455
|
+
files: external_exports.record(external_exports.string(), stored_file)
|
|
1456
|
+
});
|
|
1457
|
+
function store_path(root) {
|
|
1458
|
+
const common = git_common_directory.repository(root);
|
|
1459
|
+
return common === void 0 ? void 0 : path10.join(common, git_common_directory.STATE_DIRECTORY, STORE_NAME);
|
|
1460
|
+
}
|
|
1461
|
+
function environment_of(root, config_files) {
|
|
1462
|
+
const relatives = [...config_files.map((file) => path10.relative(root, file)), ...ENVIRONMENT_FILES];
|
|
1463
|
+
const digests = Object.entries(input_fingerprint.of_files(root, relatives));
|
|
1464
|
+
return input_fingerprint.of_entries(digests.map(([file, digest2]) => `${file}:${digest2}`));
|
|
1465
|
+
}
|
|
1466
|
+
function open(root, config_files) {
|
|
1467
|
+
return {
|
|
1468
|
+
root,
|
|
1469
|
+
environment: environment_of(root, config_files),
|
|
1470
|
+
file_path: store_path(root),
|
|
1471
|
+
files: void 0,
|
|
1472
|
+
seeded: /* @__PURE__ */ new Set(),
|
|
1473
|
+
memo: { all: /* @__PURE__ */ new Map(), runtime: /* @__PURE__ */ new Map() },
|
|
1474
|
+
unresolved: { all: /* @__PURE__ */ new Set(), runtime: /* @__PURE__ */ new Set() },
|
|
1475
|
+
content_hashes: /* @__PURE__ */ new Map()
|
|
1476
|
+
};
|
|
1477
|
+
}
|
|
1478
|
+
function remember(store, name, file, references) {
|
|
1479
|
+
const found = references.filter((dependency) => dependency !== void 0);
|
|
1480
|
+
if (found.length < references.length) store.unresolved[name].add(file);
|
|
1481
|
+
store.memo[name].set(file, found);
|
|
1482
|
+
return found;
|
|
1483
|
+
}
|
|
1484
|
+
function content_hash(store, file) {
|
|
1485
|
+
const known = store.content_hashes.get(file);
|
|
1486
|
+
if (known !== void 0) return known;
|
|
1487
|
+
const computed = input_fingerprint.of_file(file);
|
|
1488
|
+
store.content_hashes.set(file, computed);
|
|
1489
|
+
return computed;
|
|
1490
|
+
}
|
|
1491
|
+
function read_files(store) {
|
|
1492
|
+
const text = store.file_path === void 0 ? void 0 : file_reader.read_if_readable(store.file_path);
|
|
1493
|
+
const stored = text === void 0 ? void 0 : json_value.parse_with(text, stored_graph);
|
|
1494
|
+
return stored?.environment === store.environment ? stored.files : {};
|
|
1495
|
+
}
|
|
1496
|
+
function files_of(store) {
|
|
1497
|
+
store.files ??= read_files(store);
|
|
1498
|
+
return store.files;
|
|
1499
|
+
}
|
|
1500
|
+
function module_stem(file) {
|
|
1501
|
+
const stem = file.replace(EXTENSION, "");
|
|
1502
|
+
return path10.basename(stem) === INDEX ? path10.dirname(stem) : stem;
|
|
1503
|
+
}
|
|
1504
|
+
function added_stems(store, universe) {
|
|
1505
|
+
const files = files_of(store);
|
|
1506
|
+
const added = universe.filter((file) => !Object.hasOwn(files, path10.relative(store.root, file)));
|
|
1507
|
+
return new Set(added.map((file) => module_stem(file)));
|
|
1508
|
+
}
|
|
1509
|
+
function rebased(store, stored) {
|
|
1510
|
+
return stored.map(([file, external]) => ({ file: path10.join(store.root, file), external }));
|
|
1511
|
+
}
|
|
1512
|
+
function is_standing(dependency, seeding) {
|
|
1513
|
+
return existsSync5(dependency.file) && !seeding.added.has(module_stem(dependency.file));
|
|
1514
|
+
}
|
|
1515
|
+
function stored_edges(store, name, file, seeding) {
|
|
1516
|
+
const entry = seeding.files[path10.relative(store.root, file)];
|
|
1517
|
+
const stored = entry?.hash === content_hash(store, file) ? entry[name] : void 0;
|
|
1518
|
+
if (stored === void 0) return void 0;
|
|
1519
|
+
const dependencies = rebased(store, stored);
|
|
1520
|
+
return dependencies.every((dependency) => is_standing(dependency, seeding)) ? dependencies : void 0;
|
|
1521
|
+
}
|
|
1522
|
+
function seed(store, name, universe) {
|
|
1523
|
+
if (store.seeded.has(name)) return [];
|
|
1524
|
+
store.seeded.add(name);
|
|
1525
|
+
const seeding = { files: files_of(store), added: added_stems(store, universe) };
|
|
1526
|
+
const memo = store.memo[name];
|
|
1527
|
+
return universe.filter((file) => {
|
|
1528
|
+
const stored = stored_edges(store, name, file, seeding);
|
|
1529
|
+
if (stored !== void 0 && !memo.has(file)) memo.set(file, stored);
|
|
1530
|
+
return stored === void 0;
|
|
1531
|
+
});
|
|
1532
|
+
}
|
|
1533
|
+
function entry_of(store, name, file) {
|
|
1534
|
+
const dependencies = store.memo[name].get(file);
|
|
1535
|
+
if (dependencies === void 0 || store.unresolved[name].has(file)) return void 0;
|
|
1536
|
+
const hash = content_hash(store, file);
|
|
1537
|
+
const known = files_of(store)[path10.relative(store.root, file)];
|
|
1538
|
+
const entry = known?.hash === hash ? { ...known } : { hash };
|
|
1539
|
+
entry[name] = dependencies.map((dependency) => [
|
|
1540
|
+
path10.relative(store.root, dependency.file),
|
|
1541
|
+
dependency.external
|
|
1542
|
+
]);
|
|
1543
|
+
return entry;
|
|
1544
|
+
}
|
|
1545
|
+
function write(store, file_path) {
|
|
1546
|
+
const files = Object.entries(files_of(store)).filter(
|
|
1547
|
+
([file]) => existsSync5(path10.join(store.root, file))
|
|
1548
|
+
);
|
|
1549
|
+
const graph = {
|
|
1550
|
+
version: STORE_VERSION,
|
|
1551
|
+
environment: store.environment,
|
|
1552
|
+
files: Object.fromEntries(files)
|
|
1553
|
+
};
|
|
1554
|
+
atomic_write.replace_file(file_path, JSON.stringify(graph));
|
|
1555
|
+
}
|
|
1556
|
+
function keep(store, name, missing) {
|
|
1557
|
+
if (missing.length === 0 || store.file_path === void 0) return;
|
|
1558
|
+
const files = files_of(store);
|
|
1559
|
+
for (const file of missing) {
|
|
1560
|
+
const entry = entry_of(store, name, file);
|
|
1561
|
+
if (entry !== void 0) files[path10.relative(store.root, file)] = entry;
|
|
1562
|
+
}
|
|
1563
|
+
write(store, store.file_path);
|
|
1564
|
+
}
|
|
1565
|
+
var import_graph_store = { content_hash, keep, open, remember, seed, store_path };
|
|
1566
|
+
|
|
1567
|
+
// scripts/test/test-inputs.ts
|
|
1568
|
+
var GLOBALS = /* @__PURE__ */ new Set([
|
|
1569
|
+
"undefined",
|
|
1570
|
+
"NaN",
|
|
1571
|
+
"Infinity",
|
|
1572
|
+
"Array",
|
|
1573
|
+
"Object",
|
|
1574
|
+
"String",
|
|
1575
|
+
"Number",
|
|
1576
|
+
"Boolean",
|
|
1577
|
+
"BigInt",
|
|
1578
|
+
"Symbol",
|
|
1579
|
+
"Map",
|
|
1580
|
+
"Set",
|
|
1581
|
+
"WeakMap",
|
|
1582
|
+
"WeakSet",
|
|
1583
|
+
"JSON",
|
|
1584
|
+
"RegExp",
|
|
1585
|
+
"Error",
|
|
1586
|
+
"TypeError",
|
|
1587
|
+
"RangeError",
|
|
1588
|
+
"Promise",
|
|
1589
|
+
"parseInt",
|
|
1590
|
+
"parseFloat",
|
|
1591
|
+
"isNaN",
|
|
1592
|
+
"isFinite"
|
|
1593
|
+
]);
|
|
1594
|
+
var UNSAFE = /* @__PURE__ */ new Set([
|
|
1595
|
+
"process",
|
|
1596
|
+
"global",
|
|
1597
|
+
"globalThis",
|
|
1598
|
+
"eval",
|
|
1599
|
+
"Function",
|
|
1600
|
+
"require",
|
|
1601
|
+
"constructor",
|
|
1602
|
+
"__proto__",
|
|
1603
|
+
"prototype",
|
|
1604
|
+
"vi",
|
|
1605
|
+
"vitest",
|
|
1606
|
+
"inject",
|
|
1607
|
+
"provide",
|
|
1608
|
+
"toMatchSnapshot",
|
|
1609
|
+
"toMatchFileSnapshot",
|
|
1610
|
+
"toThrowErrorMatchingSnapshot",
|
|
1611
|
+
"matchSnapshot"
|
|
1612
|
+
]);
|
|
1613
|
+
function is_property(typescript, node) {
|
|
1614
|
+
const { parent } = node;
|
|
1615
|
+
return typescript.isPropertyAccessExpression(parent) && parent.name === node || (typescript.isPropertyAssignment(parent) || typescript.isMethodDeclaration(parent)) && parent.name === node;
|
|
1616
|
+
}
|
|
1617
|
+
function is_unsafe_syntax(typescript, node) {
|
|
1618
|
+
return [
|
|
1619
|
+
typescript.isNamespaceImport(node),
|
|
1620
|
+
typescript.isElementAccessExpression(node),
|
|
1621
|
+
node.kind === typescript.SyntaxKind.ThisKeyword,
|
|
1622
|
+
typescript.isMetaProperty(node)
|
|
1623
|
+
].includes(true);
|
|
1624
|
+
}
|
|
1625
|
+
function is_dynamic_import(typescript, node) {
|
|
1626
|
+
return typescript.isCallExpression(node) && node.expression.kind === typescript.SyntaxKind.ImportKeyword;
|
|
1627
|
+
}
|
|
1628
|
+
function is_unknown_identifier(typescript, node, checker) {
|
|
1629
|
+
if (UNSAFE.has(node.text)) return true;
|
|
1630
|
+
return !is_property(typescript, node) && checker.getSymbolAtLocation(node) === void 0 && !GLOBALS.has(node.text);
|
|
1631
|
+
}
|
|
1632
|
+
function is_unknown(typescript, node, checker) {
|
|
1633
|
+
if (is_unsafe_syntax(typescript, node) || is_dynamic_import(typescript, node)) return true;
|
|
1634
|
+
if (!typescript.isIdentifier(node)) return false;
|
|
1635
|
+
return is_unknown_identifier(typescript, node, checker);
|
|
1636
|
+
}
|
|
1637
|
+
function is_closed(typescript, file, content) {
|
|
1638
|
+
const source = typescript.createSourceFile(file, content, typescript.ScriptTarget.Latest, true);
|
|
1639
|
+
const host = typescript.createCompilerHost({});
|
|
1640
|
+
host.getSourceFile = (name) => name === file ? source : void 0;
|
|
1641
|
+
const program = typescript.createProgram([file], { noLib: true, noResolve: true }, host);
|
|
1642
|
+
const checker = program.getTypeChecker();
|
|
1643
|
+
function unknown(node) {
|
|
1644
|
+
if (typescript.isTypeNode(node)) return false;
|
|
1645
|
+
return is_unknown(typescript, node, checker) || typescript.forEachChild(node, unknown) === true;
|
|
1646
|
+
}
|
|
1647
|
+
return program.getSyntacticDiagnostics(source).length === 0 && !unknown(source);
|
|
1648
|
+
}
|
|
1649
|
+
var test_inputs = { is_closed };
|
|
1650
|
+
|
|
1651
|
+
// scripts/lint/type-only-imports.ts
|
|
1652
|
+
function declaration_of(typescript, statement) {
|
|
1653
|
+
if (typescript.isImportDeclaration(statement)) return statement;
|
|
1654
|
+
if (typescript.isExportDeclaration(statement)) return statement;
|
|
1655
|
+
return void 0;
|
|
1656
|
+
}
|
|
1657
|
+
function is_type_only(typescript, declaration) {
|
|
1658
|
+
if (typescript.isExportDeclaration(declaration)) return declaration.isTypeOnly;
|
|
1659
|
+
return declaration.importClause?.phaseModifier === typescript.SyntaxKind.TypeKeyword;
|
|
1660
|
+
}
|
|
1661
|
+
function type_only_position(typescript, source, statement) {
|
|
1662
|
+
const declaration = declaration_of(typescript, statement);
|
|
1663
|
+
if (declaration === void 0 || !is_type_only(typescript, declaration)) return void 0;
|
|
1664
|
+
const specifier = declaration.moduleSpecifier;
|
|
1665
|
+
if (specifier === void 0 || !typescript.isStringLiteral(specifier)) return void 0;
|
|
1666
|
+
return specifier.getStart(source);
|
|
1667
|
+
}
|
|
1668
|
+
function runtime_specifiers(typescript, file, content) {
|
|
1669
|
+
const source = typescript.createSourceFile(file, content, typescript.ScriptTarget.Latest);
|
|
1670
|
+
const type_only = new Set(
|
|
1671
|
+
source.statements.map((statement) => type_only_position(typescript, source, statement))
|
|
1672
|
+
);
|
|
1673
|
+
return typescript.preProcessFile(content, true, true).importedFiles.filter((reference) => !type_only.has(reference.pos)).map((reference) => reference.fileName);
|
|
1674
|
+
}
|
|
1675
|
+
function strings(typescript, file) {
|
|
1676
|
+
const content = file_reader.read_if_readable(file) ?? "";
|
|
1677
|
+
const source = typescript.createSourceFile(file, content, typescript.ScriptTarget.Latest);
|
|
1678
|
+
const found = [];
|
|
1679
|
+
function visit(node) {
|
|
1680
|
+
if (typescript.isStringLiteralLike(node) || typescript.isTemplateLiteralToken(node)) {
|
|
1681
|
+
found.push(node.text);
|
|
1682
|
+
}
|
|
1683
|
+
typescript.forEachChild(node, visit);
|
|
1684
|
+
}
|
|
1685
|
+
visit(source);
|
|
1686
|
+
return found;
|
|
1687
|
+
}
|
|
1688
|
+
var type_only_imports = { runtime_specifiers, strings };
|
|
1689
|
+
|
|
1690
|
+
// scripts/lint/import-test-inputs.ts
|
|
1691
|
+
var DECLARATION_EXTENSION = /\.d\.[cm]?ts$/u;
|
|
1692
|
+
var TYPESCRIPT_EXTENSION = /\.[cm]?tsx?$/u;
|
|
1693
|
+
var JAVASCRIPT_EXTENSIONS = ["js", "jsx", "mjs", "cjs"];
|
|
1694
|
+
function is_runtime_source(typescript, file) {
|
|
1695
|
+
if (DECLARATION_EXTENSION.test(file)) return false;
|
|
1696
|
+
if (!TYPESCRIPT_EXTENSION.test(file)) return true;
|
|
1697
|
+
return JAVASCRIPT_EXTENSIONS.every(
|
|
1698
|
+
(extension) => !typescript.sys.fileExists(file.replace(TYPESCRIPT_EXTENSION, () => `.${extension}`))
|
|
1699
|
+
);
|
|
1700
|
+
}
|
|
1701
|
+
function dependencies_of(typescript, resolve, file, content) {
|
|
1702
|
+
const specifiers = type_only_imports.runtime_specifiers(typescript, file, content);
|
|
1703
|
+
const dependencies = specifiers.filter((name) => name !== "vitest").map((name) => name.startsWith(".") ? resolve(name, file) : void 0);
|
|
1704
|
+
if (dependencies.some((dependency) => dependency === void 0 || dependency.external)) {
|
|
1705
|
+
return void 0;
|
|
1706
|
+
}
|
|
1707
|
+
return dependencies.flatMap((dependency) => dependency?.file ?? []);
|
|
1708
|
+
}
|
|
1709
|
+
function read_source(typescript, resolve, file) {
|
|
1710
|
+
if (!is_runtime_source(typescript, file)) return void 0;
|
|
1711
|
+
const content = file_reader.read_if_readable(file);
|
|
1712
|
+
if (content === void 0 || !test_inputs.is_closed(typescript, file, content)) return void 0;
|
|
1713
|
+
return dependencies_of(typescript, resolve, file, content);
|
|
1714
|
+
}
|
|
1715
|
+
function unvisited(file, reached, read) {
|
|
1716
|
+
return reached.has(file) ? [] : read(file);
|
|
1717
|
+
}
|
|
1718
|
+
function closure(file, read) {
|
|
1719
|
+
const reached = /* @__PURE__ */ new Set();
|
|
1720
|
+
const pending = [file];
|
|
1721
|
+
for (let current = pending.pop(); current !== void 0; current = pending.pop()) {
|
|
1722
|
+
const dependencies = unvisited(current, reached, read);
|
|
1723
|
+
if (dependencies === void 0) return void 0;
|
|
1724
|
+
reached.add(current);
|
|
1725
|
+
pending.push(...dependencies);
|
|
1726
|
+
}
|
|
1727
|
+
return [...reached];
|
|
1728
|
+
}
|
|
1729
|
+
function create(typescript, resolve) {
|
|
1730
|
+
const cache = /* @__PURE__ */ new Map();
|
|
1731
|
+
function read(file) {
|
|
1732
|
+
if (!cache.has(file)) cache.set(file, read_source(typescript, resolve, file));
|
|
1733
|
+
return cache.get(file);
|
|
1734
|
+
}
|
|
1735
|
+
return (file) => closure(file, read);
|
|
1736
|
+
}
|
|
1737
|
+
var import_test_inputs2 = { create };
|
|
1738
|
+
|
|
1739
|
+
// scripts/lint/import-graph.ts
|
|
1740
|
+
var TSCONFIG = "tsconfig.json";
|
|
1741
|
+
var NODE_MODULES = "node_modules";
|
|
1742
|
+
var MODULE_STATEMENT = /^(?:import|export)\b/mu;
|
|
1743
|
+
var GLOBAL_DECLARATION = /^declare (?:global|module|namespace)\b/mu;
|
|
1744
|
+
async function load_typescript() {
|
|
1745
|
+
try {
|
|
1746
|
+
const module = await import("typescript");
|
|
1747
|
+
return module.default;
|
|
1748
|
+
} catch {
|
|
1749
|
+
return void 0;
|
|
1750
|
+
}
|
|
1751
|
+
}
|
|
1752
|
+
function parsed_config(typescript, root) {
|
|
1753
|
+
const config_file = path11.join(root, TSCONFIG);
|
|
1754
|
+
if (!typescript.sys.fileExists(config_file)) return void 0;
|
|
1755
|
+
const source = typescript.readJsonConfigFile(config_file, typescript.sys.readFile);
|
|
1756
|
+
const parsed = typescript.parseJsonSourceFileConfigFileContent(
|
|
1757
|
+
source,
|
|
1758
|
+
typescript.sys,
|
|
1759
|
+
root,
|
|
1760
|
+
void 0,
|
|
1761
|
+
config_file
|
|
1762
|
+
);
|
|
1763
|
+
return {
|
|
1764
|
+
options: parsed.options,
|
|
1765
|
+
file_names: parsed.fileNames,
|
|
1766
|
+
config_files: [config_file, ...source.extendedSourceFiles ?? []]
|
|
1767
|
+
};
|
|
1768
|
+
}
|
|
1769
|
+
function is_installed(file) {
|
|
1770
|
+
return file.split(path11.sep).includes(NODE_MODULES);
|
|
1771
|
+
}
|
|
1772
|
+
function as_dependency(file, external) {
|
|
1773
|
+
if (file === void 0) return void 0;
|
|
1774
|
+
return { file, external: external === true && is_installed(file) };
|
|
1775
|
+
}
|
|
1776
|
+
function relative_to(specifier, file) {
|
|
1777
|
+
return { file: path11.resolve(path11.dirname(file), specifier), external: false };
|
|
1778
|
+
}
|
|
1779
|
+
function resolve_module(context, specifier, file) {
|
|
1780
|
+
const { typescript, options, resolution_cache } = context;
|
|
1781
|
+
const resolved = typescript.resolveModuleName(
|
|
1782
|
+
specifier,
|
|
1783
|
+
file,
|
|
1784
|
+
options,
|
|
1785
|
+
typescript.sys,
|
|
1786
|
+
resolution_cache
|
|
1787
|
+
).resolvedModule;
|
|
1788
|
+
if (resolved !== void 0) {
|
|
1789
|
+
return as_dependency(resolved.resolvedFileName, resolved.isExternalLibraryImport);
|
|
1790
|
+
}
|
|
1791
|
+
if (!specifier.startsWith(".")) return void 0;
|
|
1792
|
+
return relative_to(specifier, file);
|
|
1793
|
+
}
|
|
1794
|
+
function resolve_type(resolver, name, file) {
|
|
1795
|
+
const { typescript, options } = resolver;
|
|
1796
|
+
const resolved = typescript.resolveTypeReferenceDirective(
|
|
1797
|
+
name,
|
|
1798
|
+
file,
|
|
1799
|
+
options,
|
|
1800
|
+
typescript.sys
|
|
1801
|
+
).resolvedTypeReferenceDirective;
|
|
1802
|
+
return as_dependency(resolved?.resolvedFileName, resolved?.isExternalLibraryImport);
|
|
1803
|
+
}
|
|
1804
|
+
function references_of(context, file, content) {
|
|
1805
|
+
const processed = context.typescript.preProcessFile(content, true, true);
|
|
1806
|
+
return [
|
|
1807
|
+
...processed.importedFiles.map(
|
|
1808
|
+
(reference) => resolve_module(context, reference.fileName, file)
|
|
1809
|
+
),
|
|
1810
|
+
...processed.referencedFiles.map((reference) => relative_to(reference.fileName, file)),
|
|
1811
|
+
...processed.typeReferenceDirectives.map(
|
|
1812
|
+
(reference) => resolve_type(context, reference.fileName, file)
|
|
1813
|
+
)
|
|
1814
|
+
];
|
|
1815
|
+
}
|
|
1816
|
+
function direct_dependencies(context, file) {
|
|
1817
|
+
const known = context.store.memo.all.get(file);
|
|
1818
|
+
if (known !== void 0) return known;
|
|
1819
|
+
const references = references_of(context, file, file_reader.read_if_readable(file) ?? "");
|
|
1820
|
+
return import_graph_store.remember(context.store, "all", file, references);
|
|
1821
|
+
}
|
|
1822
|
+
function runtime_dependencies(context, file) {
|
|
1823
|
+
const known = context.store.memo.runtime.get(file);
|
|
1824
|
+
if (known !== void 0) return known;
|
|
1825
|
+
const content = file_reader.read_if_readable(file) ?? "";
|
|
1826
|
+
const references = type_only_imports.runtime_specifiers(context.typescript, file, content).map((specifier) => resolve_module(context, specifier, file));
|
|
1827
|
+
return import_graph_store.remember(context.store, "runtime", file, references);
|
|
1828
|
+
}
|
|
1829
|
+
function is_ambient(file) {
|
|
1830
|
+
const content = file_reader.read_if_readable(file) ?? "";
|
|
1831
|
+
return GLOBAL_DECLARATION.test(content) || !MODULE_STATEMENT.test(content);
|
|
1832
|
+
}
|
|
1833
|
+
function ambient_of(resolver, root, config) {
|
|
1834
|
+
const config_file = path11.join(root, TSCONFIG);
|
|
1835
|
+
const declarations = [
|
|
1836
|
+
...config.file_names.filter((file) => is_ambient(file)),
|
|
1837
|
+
...config.config_files
|
|
1838
|
+
].map((file) => ({ file, external: false }));
|
|
1839
|
+
const types = resolver.typescript.getAutomaticTypeDirectiveNames(resolver.options, resolver.typescript.sys).map((name) => resolve_type(resolver, name, config_file)).filter((dependency) => dependency !== void 0);
|
|
1840
|
+
return [...declarations, ...types];
|
|
1841
|
+
}
|
|
1842
|
+
function is_unvisited(dependency, start, reached) {
|
|
1843
|
+
return dependency.file !== start && !reached.has(dependency.file);
|
|
1844
|
+
}
|
|
1845
|
+
function join(dependencies, start, reached) {
|
|
1846
|
+
const next = dependencies.filter((dependency) => is_unvisited(dependency, start, reached));
|
|
1847
|
+
for (const dependency of next) reached.set(dependency.file, dependency);
|
|
1848
|
+
return next.filter((dependency) => !dependency.external).map((dependency) => dependency.file);
|
|
1849
|
+
}
|
|
1850
|
+
function reachable(context, file) {
|
|
1851
|
+
const reached = /* @__PURE__ */ new Map();
|
|
1852
|
+
const pending = [file, ...join(context.ambient, file, reached)];
|
|
1853
|
+
for (let current = pending.pop(); current !== void 0; current = pending.pop()) {
|
|
1854
|
+
pending.push(...join(direct_dependencies(context, current), file, reached));
|
|
1855
|
+
}
|
|
1856
|
+
return reached;
|
|
1857
|
+
}
|
|
1858
|
+
function token_of(context, dependency) {
|
|
1859
|
+
const name = path11.relative(context.root, dependency.file);
|
|
1860
|
+
if (dependency.external) return name;
|
|
1861
|
+
return `${name}:${import_graph_store.content_hash(context.store, dependency.file)}`;
|
|
1862
|
+
}
|
|
1863
|
+
function closure_hash(context, file) {
|
|
1864
|
+
const tokens = [...reachable(context, file).values()].map(
|
|
1865
|
+
(dependency) => token_of(context, dependency)
|
|
1866
|
+
);
|
|
1867
|
+
return input_fingerprint.of_entries(tokens);
|
|
1868
|
+
}
|
|
1869
|
+
function closure2(context, file) {
|
|
1870
|
+
return [...reachable(context, file).values()].filter((dependency) => !dependency.external).map((dependency) => dependency.file);
|
|
1871
|
+
}
|
|
1872
|
+
function imports(context, file, content) {
|
|
1873
|
+
const dependencies = content === void 0 ? direct_dependencies(context, file) : references_of(context, file, content).filter((dependency) => dependency !== void 0);
|
|
1874
|
+
return dependencies.filter((dependency) => !dependency.external).map((dependency) => dependency.file);
|
|
1875
|
+
}
|
|
1876
|
+
function append(map, key, value) {
|
|
1877
|
+
const known = map.get(key);
|
|
1878
|
+
if (known === void 0) map.set(key, [value]);
|
|
1879
|
+
else known.push(value);
|
|
1880
|
+
}
|
|
1881
|
+
function reverse_edges(context, universe, edges) {
|
|
1882
|
+
const reverse = /* @__PURE__ */ new Map();
|
|
1883
|
+
const missing = import_graph_store.seed(context.store, edges.name, universe);
|
|
1884
|
+
for (const file of universe) {
|
|
1885
|
+
for (const dependency of edges.of(context, file)) {
|
|
1886
|
+
append(reverse, dependency.file, file);
|
|
1887
|
+
}
|
|
1888
|
+
}
|
|
1889
|
+
import_graph_store.keep(context.store, edges.name, missing);
|
|
1890
|
+
return reverse;
|
|
1891
|
+
}
|
|
1892
|
+
function importers(context, files, universe, edges) {
|
|
1893
|
+
const reverse = reverse_edges(context, universe, edges);
|
|
1894
|
+
const reached = new Set(files);
|
|
1895
|
+
const pending = [...files];
|
|
1896
|
+
for (let current = pending.pop(); current !== void 0; current = pending.pop()) {
|
|
1897
|
+
const next = (reverse.get(current) ?? []).filter((file) => !reached.has(file));
|
|
1898
|
+
for (const file of next) reached.add(file);
|
|
1899
|
+
pending.push(...next);
|
|
1900
|
+
}
|
|
1901
|
+
return reached;
|
|
1902
|
+
}
|
|
1903
|
+
function project_module(context, specifier, file) {
|
|
1904
|
+
const dependency = resolve_module(context, specifier, file);
|
|
1905
|
+
if (dependency === void 0) return void 0;
|
|
1906
|
+
const relative = path11.relative(context.root, dependency.file);
|
|
1907
|
+
return relative.startsWith(`..${path11.sep}`) || path11.isAbsolute(relative) ? void 0 : dependency;
|
|
1908
|
+
}
|
|
1909
|
+
function graph_of(context) {
|
|
1910
|
+
return {
|
|
1911
|
+
// Type-checker suffixes need not select the source the runner executes.
|
|
1912
|
+
test_inputs: context.options.moduleSuffixes === void 0 ? import_test_inputs2.create(
|
|
1913
|
+
context.typescript,
|
|
1914
|
+
(specifier, file) => project_module(context, specifier, file)
|
|
1915
|
+
) : void 0,
|
|
1916
|
+
closure: (file) => closure2(context, file),
|
|
1917
|
+
closure_hash: (file) => closure_hash(context, file),
|
|
1918
|
+
imports: (file, content) => imports(context, file, content),
|
|
1919
|
+
importers: (files, universe) => importers(context, files, universe, { name: "all", of: direct_dependencies }),
|
|
1920
|
+
runtime_importers: (files, universe) => importers(context, files, universe, { name: "runtime", of: runtime_dependencies }),
|
|
1921
|
+
strings: (file) => type_only_imports.strings(context.typescript, file)
|
|
1922
|
+
};
|
|
1923
|
+
}
|
|
1924
|
+
async function create2(root) {
|
|
1925
|
+
const typescript = await load_typescript();
|
|
1926
|
+
if (typescript === void 0) return void 0;
|
|
1927
|
+
const parsed = parsed_config(typescript, root);
|
|
1928
|
+
if (parsed === void 0) return void 0;
|
|
1929
|
+
return graph_of({
|
|
1930
|
+
root,
|
|
1931
|
+
typescript,
|
|
1932
|
+
options: parsed.options,
|
|
1933
|
+
resolution_cache: typescript.createModuleResolutionCache(root, (name) => name, parsed.options),
|
|
1934
|
+
ambient: ambient_of({ typescript, options: parsed.options }, root, parsed),
|
|
1935
|
+
store: import_graph_store.open(root, parsed.config_files)
|
|
1936
|
+
});
|
|
1937
|
+
}
|
|
1938
|
+
var import_graph = { create: create2 };
|
|
1939
|
+
|
|
1940
|
+
export {
|
|
1941
|
+
toolchain_inputs,
|
|
1942
|
+
buffered_process,
|
|
1943
|
+
run_board_usage_rusage,
|
|
1944
|
+
core_admission,
|
|
1945
|
+
machine_capacity,
|
|
1946
|
+
held_mark,
|
|
1947
|
+
core_budget,
|
|
1948
|
+
resolve_tsx_runner,
|
|
1949
|
+
input_fingerprint,
|
|
1950
|
+
import_graph,
|
|
1951
|
+
changed_file_scope,
|
|
1952
|
+
lint_related_scope
|
|
1953
|
+
};
|