@joshuafolkken/kit 1.3101.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/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 +2050 -2040
- 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 +515 -459
- 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 +73 -73
- 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
|
@@ -1,1223 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
test_red
|
|
3
|
-
} from "./chunk-RWYSVFIA.js";
|
|
4
|
-
import {
|
|
5
|
-
related_heavy_tests
|
|
6
|
-
} from "./chunk-MNLHYAJO.js";
|
|
7
|
-
import {
|
|
8
|
-
direct_importers
|
|
9
|
-
} from "./chunk-N4EMFHQ6.js";
|
|
10
|
-
import {
|
|
11
|
-
test_pinned_logic,
|
|
12
|
-
test_pinned_stage
|
|
13
|
-
} from "./chunk-RAQ3E6OT.js";
|
|
14
|
-
import {
|
|
15
|
-
test_pinned_cache_logic,
|
|
16
|
-
test_pinned_reach
|
|
17
|
-
} from "./chunk-6FN37DER.js";
|
|
18
|
-
import {
|
|
19
|
-
related_scope
|
|
20
|
-
} from "./chunk-KJPZPTS4.js";
|
|
21
|
-
import {
|
|
22
|
-
review_code_tree
|
|
23
|
-
} from "./chunk-FDASVHZD.js";
|
|
24
|
-
import {
|
|
25
|
-
test_unit_guard
|
|
26
|
-
} from "./chunk-KWLNK2NJ.js";
|
|
27
|
-
import {
|
|
28
|
-
gate_log
|
|
29
|
-
} from "./chunk-VCWNMRH7.js";
|
|
30
|
-
import {
|
|
31
|
-
run_record_path
|
|
32
|
-
} from "./chunk-WL5JHB3I.js";
|
|
33
|
-
import {
|
|
34
|
-
config_fingerprint,
|
|
35
|
-
test_runner_config
|
|
36
|
-
} from "./chunk-EHPTXSAT.js";
|
|
37
|
-
import {
|
|
38
|
-
import_graph
|
|
39
|
-
} from "./chunk-4IDINPBE.js";
|
|
40
|
-
import {
|
|
41
|
-
input_fingerprint
|
|
42
|
-
} from "./chunk-GA2YSPFH.js";
|
|
43
|
-
import {
|
|
44
|
-
base_tree
|
|
45
|
-
} from "./chunk-NTIVNQKF.js";
|
|
46
|
-
import {
|
|
47
|
-
lane_ledger_pinned_origin
|
|
48
|
-
} from "./chunk-Y2RNUX4W.js";
|
|
49
|
-
import {
|
|
50
|
-
test_declared_logic
|
|
51
|
-
} from "./chunk-7HCPRVMB.js";
|
|
52
|
-
import {
|
|
53
|
-
unit_worker_share
|
|
54
|
-
} from "./chunk-B73IIRMS.js";
|
|
55
|
-
import {
|
|
56
|
-
lane_ledger_write
|
|
57
|
-
} from "./chunk-KIS7JFNP.js";
|
|
58
|
-
import {
|
|
59
|
-
lane_paths
|
|
60
|
-
} from "./chunk-G75GWNNY.js";
|
|
61
|
-
import {
|
|
62
|
-
stamp_file
|
|
63
|
-
} from "./chunk-VLN6TSPJ.js";
|
|
64
|
-
import {
|
|
65
|
-
PROJECT_ROOT
|
|
66
|
-
} from "./chunk-3CCGKX7Y.js";
|
|
67
|
-
import {
|
|
68
|
-
atomic_write
|
|
69
|
-
} from "./chunk-KSR23NYN.js";
|
|
70
|
-
import {
|
|
71
|
-
changed_paths
|
|
72
|
-
} from "./chunk-U5EO4QEV.js";
|
|
73
|
-
import {
|
|
74
|
-
change_base
|
|
75
|
-
} from "./chunk-LBVYFW3I.js";
|
|
76
|
-
import {
|
|
77
|
-
git_spawn
|
|
78
|
-
} from "./chunk-B5HP6T4L.js";
|
|
79
|
-
import {
|
|
80
|
-
git_spawn_sync
|
|
81
|
-
} from "./chunk-B77ZMVHS.js";
|
|
82
|
-
import {
|
|
83
|
-
json_value
|
|
84
|
-
} from "./chunk-HIU2WXB6.js";
|
|
85
|
-
|
|
86
|
-
// scripts/test/test-pinned-snapshot.ts
|
|
87
|
-
import { existsSync } from "node:fs";
|
|
88
|
-
import { rm } from "node:fs/promises";
|
|
89
|
-
import path from "node:path";
|
|
90
|
-
var PREFIX = "josh-pinned-snapshot-";
|
|
91
|
-
var CACHE_NAME = "josh-test-pinned-verdicts.json";
|
|
92
|
-
var IDENTITY = ["-c", "user.name=Snapshot", "-c", "user.email=snapshot@localhost"];
|
|
93
|
-
function read(args, options) {
|
|
94
|
-
const result = git_spawn_sync.run(args, options);
|
|
95
|
-
if (result.exit_code !== 0) throw new Error(`Snapshot git failed: ${result.stderr}`);
|
|
96
|
-
return result.stdout.trimEnd();
|
|
97
|
-
}
|
|
98
|
-
function identity(root, head, index) {
|
|
99
|
-
const tracked = read(["diff", "--name-only", "-z", head, "--"], { cwd: root });
|
|
100
|
-
const untracked = read(["ls-files", "--others", "--exclude-standard", "-z"], { cwd: root });
|
|
101
|
-
const paths = `${tracked}\0${untracked}`.split("\0").filter((file) => file !== "");
|
|
102
|
-
const contents = input_fingerprint.of_files(root, paths);
|
|
103
|
-
return input_fingerprint.of_entries([head, index, JSON.stringify(contents)]);
|
|
104
|
-
}
|
|
105
|
-
function current_hash(root) {
|
|
106
|
-
try {
|
|
107
|
-
return identity(
|
|
108
|
-
root,
|
|
109
|
-
read(["rev-parse", "HEAD"], { cwd: root }),
|
|
110
|
-
read(["ls-files", "--stage", "-z"], { cwd: root })
|
|
111
|
-
);
|
|
112
|
-
} catch {
|
|
113
|
-
return void 0;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
async function in_tree(tree, action) {
|
|
117
|
-
const original = process.cwd();
|
|
118
|
-
process.chdir(tree);
|
|
119
|
-
try {
|
|
120
|
-
return await action();
|
|
121
|
-
} finally {
|
|
122
|
-
process.chdir(original);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
async function copy_changes(tree, head) {
|
|
126
|
-
const paths = await changed_paths.read_changed_since(head);
|
|
127
|
-
const present = paths.filter((file) => existsSync(file));
|
|
128
|
-
const deleted = paths.filter((file) => !existsSync(file));
|
|
129
|
-
await base_tree.copy_in(tree, present);
|
|
130
|
-
await Promise.all(
|
|
131
|
-
deleted.map(async (file) => {
|
|
132
|
-
await rm(path.join(tree, file), { force: true });
|
|
133
|
-
})
|
|
134
|
-
);
|
|
135
|
-
if (present.length > 0) read(["add", "--force", "--", ...present], { cwd: tree });
|
|
136
|
-
}
|
|
137
|
-
function seal(root, head, index, cache_file) {
|
|
138
|
-
const tree_hash = identity(root, head, index);
|
|
139
|
-
read(["add", "--all"], { cwd: root });
|
|
140
|
-
const tree = read(["write-tree"], { cwd: root });
|
|
141
|
-
const commit = read([...IDENTITY, "commit-tree", tree, "-p", head, "-m", "Pinned snapshot"], {
|
|
142
|
-
cwd: root
|
|
143
|
-
});
|
|
144
|
-
read(["update-ref", "HEAD", commit], { cwd: root });
|
|
145
|
-
return { head, tree, tree_hash, cache_file };
|
|
146
|
-
}
|
|
147
|
-
async function with_snapshot(action) {
|
|
148
|
-
const root = process.cwd();
|
|
149
|
-
const head = read(["rev-parse", "HEAD"], { cwd: root });
|
|
150
|
-
const index = read(["ls-files", "--stage", "-z"], { cwd: root });
|
|
151
|
-
const cache_file = path.resolve(
|
|
152
|
-
root,
|
|
153
|
-
read(["rev-parse", "--git-path", CACHE_NAME], { cwd: root })
|
|
154
|
-
);
|
|
155
|
-
return await base_tree.with_tree(PREFIX, head, async (tree) => {
|
|
156
|
-
await copy_changes(tree.tree, head);
|
|
157
|
-
const snapshot = seal(tree.tree, head, index, cache_file);
|
|
158
|
-
return await in_tree(tree.tree, async () => await action(snapshot));
|
|
159
|
-
});
|
|
160
|
-
}
|
|
161
|
-
var test_pinned_snapshot = { current_hash, with_snapshot };
|
|
162
|
-
|
|
163
|
-
// scripts/test/test-pinned-record.ts
|
|
164
|
-
var RECORD_PREFIX = "josh-test-pinned-record-";
|
|
165
|
-
var TOKEN_KEY_LENGTH = 16;
|
|
166
|
-
var SITE_KEY_LENGTH = 16;
|
|
167
|
-
var NOT_RUN_NOTE = "`josh test:pinned` could not run, so nothing was checked: ";
|
|
168
|
-
var FIRST_UNPINNED_FLAG = "--first-unpinned";
|
|
169
|
-
var LIST_PREFIX = "josh-test-pinned-list-";
|
|
170
|
-
var LIST_SUFFIX = ".log";
|
|
171
|
-
var LIST_HEADER = "josh test:pinned \u2014 every unpinned and unchecked place";
|
|
172
|
-
var UNCHECKED_NOTE = "Unchecked places are not verified: map each listed place to its related regression test before ship; reuse the pending probe or cached verdicts, and fix unresolved places with the round-1 findings.\n";
|
|
173
|
-
function site_of(hunk) {
|
|
174
|
-
if (hunk.parts !== void 0) {
|
|
175
|
-
return stamp_file.digest(
|
|
176
|
-
JSON.stringify(hunk.parts.map((part) => site_of({ ...part, is_green: hunk.is_green })))
|
|
177
|
-
);
|
|
178
|
-
}
|
|
179
|
-
const body = JSON.stringify([hunk.new_count, hunk.old_lines, hunk.new_lines ?? []]);
|
|
180
|
-
const key = stamp_file.digest(body).slice(0, SITE_KEY_LENGTH);
|
|
181
|
-
const place = hunk.function_name === void 0 ? hunk.file : `${hunk.file} ${hunk.function_name}`;
|
|
182
|
-
return `${place} ${key}`;
|
|
183
|
-
}
|
|
184
|
-
function kept_log(report2, root) {
|
|
185
|
-
if (!test_pinned_logic.has_unchecked(report2)) return void 0;
|
|
186
|
-
const output = test_pinned_logic.format(report2);
|
|
187
|
-
const target = stamp_file.stamp_path(LIST_PREFIX, root, LIST_SUFFIX);
|
|
188
|
-
return { path: gate_log.write_gate_log([{ header: LIST_HEADER, output }], target) };
|
|
189
|
-
}
|
|
190
|
-
function summary_with(report2, log) {
|
|
191
|
-
const summary = {
|
|
192
|
-
...test_pinned_logic.report_parts(report2),
|
|
193
|
-
...test_pinned_logic.has_unchecked(report2) && { is_unchecked: true },
|
|
194
|
-
log,
|
|
195
|
-
unpinned: test_pinned_cache_logic.distinct(report2.unpinned.map((hunk) => site_of(hunk)))
|
|
196
|
-
};
|
|
197
|
-
return report2.cut === void 0 ? summary : { ...summary, is_cut: true, remaining: report2.cut.length };
|
|
198
|
-
}
|
|
199
|
-
function summary_of(report2, root = PROJECT_ROOT) {
|
|
200
|
-
return summary_with(report2, kept_log(report2, root));
|
|
201
|
-
}
|
|
202
|
-
function partial_summary(report2, note) {
|
|
203
|
-
const summary = summary_with(report2, void 0);
|
|
204
|
-
const places = test_pinned_logic.format(report2);
|
|
205
|
-
const next = summary.is_unchecked === true ? UNCHECKED_NOTE : "";
|
|
206
|
-
return { ...summary, text: `${note}
|
|
207
|
-
${places}
|
|
208
|
-
${next}`, is_partial: true };
|
|
209
|
-
}
|
|
210
|
-
function not_run_summary(error) {
|
|
211
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
212
|
-
return { text: `${NOT_RUN_NOTE}${message}
|
|
213
|
-
`, unpinned: [], is_unchecked: true };
|
|
214
|
-
}
|
|
215
|
-
function record_path(token, root = PROJECT_ROOT) {
|
|
216
|
-
const key = stamp_file.digest(token).slice(0, TOKEN_KEY_LENGTH);
|
|
217
|
-
return stamp_file.stamp_path(`${RECORD_PREFIX}${key}-`, root);
|
|
218
|
-
}
|
|
219
|
-
function write(token, summary, root = PROJECT_ROOT) {
|
|
220
|
-
stamp_file.write_stamp(record_path(token, root), { token, ...summary });
|
|
221
|
-
}
|
|
222
|
-
function is_text_list(value) {
|
|
223
|
-
return Array.isArray(value) && value.every((item) => typeof item === "string");
|
|
224
|
-
}
|
|
225
|
-
function log_of(value) {
|
|
226
|
-
if (typeof value !== "object" || value === null) return void 0;
|
|
227
|
-
const kept = value;
|
|
228
|
-
return { path: typeof kept["path"] === "string" ? kept["path"] : void 0 };
|
|
229
|
-
}
|
|
230
|
-
function tail_of(record3) {
|
|
231
|
-
const { counts, log } = record3;
|
|
232
|
-
return typeof counts === "string" ? { counts, log: log_of(log) } : {};
|
|
233
|
-
}
|
|
234
|
-
function remaining_of(record3) {
|
|
235
|
-
const { remaining } = record3;
|
|
236
|
-
return typeof remaining === "number" ? { remaining } : {};
|
|
237
|
-
}
|
|
238
|
-
function snapshot_of(record3) {
|
|
239
|
-
return typeof record3["tree_hash"] === "string" ? { tree_hash: record3["tree_hash"] } : {};
|
|
240
|
-
}
|
|
241
|
-
function to_summary(record3) {
|
|
242
|
-
const { text, unpinned, is_cut } = record3;
|
|
243
|
-
if (typeof text !== "string" || !is_text_list(unpinned)) return void 0;
|
|
244
|
-
const unchecked = record3["is_unchecked"] === true ? { is_unchecked: true } : {};
|
|
245
|
-
const summary = { text, unpinned, ...tail_of(record3), ...unchecked, ...snapshot_of(record3) };
|
|
246
|
-
return is_cut === true ? { ...summary, is_cut, ...remaining_of(record3) } : summary;
|
|
247
|
-
}
|
|
248
|
-
function parsed(raw) {
|
|
249
|
-
try {
|
|
250
|
-
const value = JSON.parse(raw);
|
|
251
|
-
return typeof value === "object" && value !== null ? value : void 0;
|
|
252
|
-
} catch {
|
|
253
|
-
return void 0;
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
function read_summary(token, root) {
|
|
257
|
-
const raw = stamp_file.read_stamp_text(record_path(token, root));
|
|
258
|
-
const record3 = raw === void 0 ? void 0 : parsed(raw);
|
|
259
|
-
if (record3?.["token"] !== token) return void 0;
|
|
260
|
-
return to_summary(record3);
|
|
261
|
-
}
|
|
262
|
-
function fresh_summary(summary, root) {
|
|
263
|
-
if (summary.tree_hash === void 0) return summary;
|
|
264
|
-
return { ...summary, is_stale: test_pinned_snapshot.current_hash(root) !== summary.tree_hash };
|
|
265
|
-
}
|
|
266
|
-
function read2(token, root = PROJECT_ROOT) {
|
|
267
|
-
const summary = read_summary(token, root);
|
|
268
|
-
return summary === void 0 ? void 0 : fresh_summary(summary, root);
|
|
269
|
-
}
|
|
270
|
-
function clear(token, root = PROJECT_ROOT) {
|
|
271
|
-
stamp_file.remove_stamp(record_path(token, root));
|
|
272
|
-
}
|
|
273
|
-
function launch_argv(token, reason, origin, is_whole = false) {
|
|
274
|
-
const cut = reason === void 0 && !is_whole ? [FIRST_UNPINNED_FLAG] : [];
|
|
275
|
-
return ["test:pinned", ...cut, "--origin", origin, "--record", token];
|
|
276
|
-
}
|
|
277
|
-
var test_pinned_record = {
|
|
278
|
-
UNCHECKED_NOTE,
|
|
279
|
-
clear,
|
|
280
|
-
launch_argv,
|
|
281
|
-
is_text_list,
|
|
282
|
-
not_run_summary,
|
|
283
|
-
parsed,
|
|
284
|
-
partial_summary,
|
|
285
|
-
read: read2,
|
|
286
|
-
record_path,
|
|
287
|
-
summary_of,
|
|
288
|
-
write
|
|
289
|
-
};
|
|
290
|
-
|
|
291
|
-
// scripts/test/test-pinned-ledger.ts
|
|
292
|
-
function time_of(hunk, verdict, elapsed_ms) {
|
|
293
|
-
const time = { file: hunk.file, tests: verdict.ran, elapsed_ms };
|
|
294
|
-
return verdict.pinned_by === void 0 ? time : { ...time, pinned_by: verdict.pinned_by };
|
|
295
|
-
}
|
|
296
|
-
var MANUAL_ORIGIN = "manual";
|
|
297
|
-
var BACKGROUND_ORIGIN = "run-review";
|
|
298
|
-
function origin_of(raw) {
|
|
299
|
-
if (raw === void 0) return MANUAL_ORIGIN;
|
|
300
|
-
const parsed2 = lane_ledger_pinned_origin.pinned_origin_schema.safeParse(raw);
|
|
301
|
-
return parsed2.success ? parsed2.data : void 0;
|
|
302
|
-
}
|
|
303
|
-
async function record(skipped, probes, elapsed_ms) {
|
|
304
|
-
await lane_ledger_write.record_test_pinned({
|
|
305
|
-
issue: lane_paths.issue_here(PROJECT_ROOT),
|
|
306
|
-
held: skipped.held,
|
|
307
|
-
rewired: skipped.rewired,
|
|
308
|
-
over_cap: skipped.over_cap ?? 0,
|
|
309
|
-
probes: [...probes],
|
|
310
|
-
elapsed_ms,
|
|
311
|
-
origin: skipped.origin ?? MANUAL_ORIGIN
|
|
312
|
-
});
|
|
313
|
-
}
|
|
314
|
-
async function record_discarded(elapsed_ms, origin = BACKGROUND_ORIGIN) {
|
|
315
|
-
await lane_ledger_write.record_test_pinned({
|
|
316
|
-
issue: lane_paths.issue_here(PROJECT_ROOT),
|
|
317
|
-
held: 0,
|
|
318
|
-
probes: [],
|
|
319
|
-
elapsed_ms,
|
|
320
|
-
origin,
|
|
321
|
-
discarded: true
|
|
322
|
-
});
|
|
323
|
-
}
|
|
324
|
-
var test_pinned_ledger = { BACKGROUND_ORIGIN, origin_of, record, record_discarded, time_of };
|
|
325
|
-
|
|
326
|
-
// scripts/test/test-pinned.ts
|
|
327
|
-
import { existsSync as existsSync3 } from "node:fs";
|
|
328
|
-
import { readFile as readFile4 } from "node:fs/promises";
|
|
329
|
-
|
|
330
|
-
// scripts/test/test-pinned-cache.ts
|
|
331
|
-
import { existsSync as existsSync2 } from "node:fs";
|
|
332
|
-
import { readFile } from "node:fs/promises";
|
|
333
|
-
import path2 from "node:path";
|
|
334
|
-
|
|
335
|
-
// scripts/test/test-pinned-prune-logic.ts
|
|
336
|
-
function is_line_hunk(hunk) {
|
|
337
|
-
return hunk.function_name === void 0 && hunk.parts === void 0;
|
|
338
|
-
}
|
|
339
|
-
function greens_reached(hunks, verdicts) {
|
|
340
|
-
return hunks.filter((hunk, index) => verdicts[index] === "green" && is_line_hunk(hunk));
|
|
341
|
-
}
|
|
342
|
-
function record_of(hunk) {
|
|
343
|
-
return { file: hunk.file, old_lines: hunk.old_lines, new_lines: hunk.new_lines ?? [] };
|
|
344
|
-
}
|
|
345
|
-
function is_subsequence(part, whole) {
|
|
346
|
-
const remaining = [...whole];
|
|
347
|
-
return part.every((line) => remaining.splice(0, remaining.indexOf(line) + 1).at(-1) === line);
|
|
348
|
-
}
|
|
349
|
-
function is_same_lines(left, right) {
|
|
350
|
-
return JSON.stringify(left) === JSON.stringify(right);
|
|
351
|
-
}
|
|
352
|
-
function is_remnant(hunk, green) {
|
|
353
|
-
if (!is_line_hunk(hunk) || hunk.file !== green.file) return false;
|
|
354
|
-
return is_same_lines(hunk.old_lines, green.old_lines) && is_subsequence(hunk.new_lines ?? [], green.new_lines);
|
|
355
|
-
}
|
|
356
|
-
function reverted(content, hunks) {
|
|
357
|
-
const order = hunks.toSorted((left, right) => right.new_start - left.new_start);
|
|
358
|
-
let text = content;
|
|
359
|
-
for (const hunk of order) {
|
|
360
|
-
text = test_pinned_logic.revert(text, hunk);
|
|
361
|
-
}
|
|
362
|
-
return text;
|
|
363
|
-
}
|
|
364
|
-
function remnants_of(hunks, greens) {
|
|
365
|
-
return hunks.filter((hunk) => greens.some((green) => is_remnant(hunk, green)));
|
|
366
|
-
}
|
|
367
|
-
function pruned_digests(contents, reverts, greens) {
|
|
368
|
-
const files = [...new Set(greens.map((green) => green.file))];
|
|
369
|
-
const pairs = files.flatMap((file) => {
|
|
370
|
-
const content = contents.get(file);
|
|
371
|
-
if (content === void 0) return [];
|
|
372
|
-
const own = reverts.filter((hunk) => hunk.file === file);
|
|
373
|
-
return [[file, test_pinned_cache_logic.digest_of(reverted(content, own))]];
|
|
374
|
-
});
|
|
375
|
-
return new Map(pairs);
|
|
376
|
-
}
|
|
377
|
-
function pruned_of(code, contents, reverts, greens) {
|
|
378
|
-
const pruned = pruned_digests(contents, reverts, greens);
|
|
379
|
-
const digests = new Map([...code.digests, ...pruned]);
|
|
380
|
-
const paths = [.../* @__PURE__ */ new Set([...code.code, ...pruned.keys()])];
|
|
381
|
-
return test_pinned_cache_logic.change_of(code.commit, paths, digests);
|
|
382
|
-
}
|
|
383
|
-
var test_pinned_prune_logic = { greens_reached, record_of, is_remnant, remnants_of, pruned_of };
|
|
384
|
-
|
|
385
|
-
// scripts/test/test-pinned-cache.ts
|
|
386
|
-
var CACHE_NAME2 = "josh-test-pinned-verdicts.json";
|
|
387
|
-
var LINE_BREAK = "\n";
|
|
388
|
-
var AS_COMMIT = "^{commit}";
|
|
389
|
-
async function read_text(file) {
|
|
390
|
-
return existsSync2(file) ? await readFile(file, "utf8") : "";
|
|
391
|
-
}
|
|
392
|
-
async function contents_of(files) {
|
|
393
|
-
const existing = [...new Set(files)].filter((file) => existsSync2(file));
|
|
394
|
-
const texts = await Promise.all(existing.map(async (file) => await readFile(file, "utf8")));
|
|
395
|
-
return new Map(existing.map((file, index) => [file, texts[index] ?? ""]));
|
|
396
|
-
}
|
|
397
|
-
async function work_tree_files(is_kept) {
|
|
398
|
-
const listed = await test_pinned_reach.work_tree_files();
|
|
399
|
-
return listed.filter((file) => is_kept(file));
|
|
400
|
-
}
|
|
401
|
-
async function digests_of(files) {
|
|
402
|
-
const contents = await contents_of(files);
|
|
403
|
-
return new Map(
|
|
404
|
-
[...contents].map(([file, text]) => [file, test_pinned_cache_logic.digest_of(text)])
|
|
405
|
-
);
|
|
406
|
-
}
|
|
407
|
-
async function kept_digests_of(is_kept) {
|
|
408
|
-
return await digests_of(await work_tree_files(is_kept));
|
|
409
|
-
}
|
|
410
|
-
async function config_digests_of() {
|
|
411
|
-
const configs = await work_tree_files((file) => test_runner_config.is_config(file));
|
|
412
|
-
const reached = config_fingerprint.list_reachable_modules(
|
|
413
|
-
configs.map((file) => path2.resolve(file))
|
|
414
|
-
);
|
|
415
|
-
return await digests_of([...reached].map((file) => path2.relative(process.cwd(), file)));
|
|
416
|
-
}
|
|
417
|
-
function contents_digest(digests) {
|
|
418
|
-
return test_pinned_cache_logic.test_set_of(
|
|
419
|
-
[...digests].map(([file, digest]) => `${file} ${digest}`)
|
|
420
|
-
);
|
|
421
|
-
}
|
|
422
|
-
async function code_change(base) {
|
|
423
|
-
const [commit, paths] = await Promise.all([
|
|
424
|
-
git_spawn.read(["rev-parse", "--verify", `${base}${AS_COMMIT}`]),
|
|
425
|
-
changed_paths.read_changed_since(base)
|
|
426
|
-
]);
|
|
427
|
-
const code = paths.filter(
|
|
428
|
-
(file) => !test_declared_logic.is_test_file(file) && !run_record_path.is_run_record(file)
|
|
429
|
-
);
|
|
430
|
-
return { commit: commit.trim(), code, digests: await digests_of(code) };
|
|
431
|
-
}
|
|
432
|
-
async function read_tree(base) {
|
|
433
|
-
const [test_digests, configs, code] = await Promise.all([
|
|
434
|
-
kept_digests_of((file) => test_declared_logic.is_test_file(file)),
|
|
435
|
-
config_digests_of(),
|
|
436
|
-
code_change(base)
|
|
437
|
-
]);
|
|
438
|
-
const test_contents = contents_digest(new Map([...test_digests, ...configs]));
|
|
439
|
-
const change = test_pinned_cache_logic.change_of(code.commit, code.code, code.digests);
|
|
440
|
-
return { test_digests, code, config: contents_digest(configs), test_contents, change };
|
|
441
|
-
}
|
|
442
|
-
async function read_all(file, base, hunks) {
|
|
443
|
-
const text = await read_text(file);
|
|
444
|
-
const greens = test_pinned_cache_logic.greens_of(text);
|
|
445
|
-
const files = [...hunks, ...greens].map((hunk) => hunk.file);
|
|
446
|
-
return [text, ...await Promise.all([read_tree(base), contents_of(files)])];
|
|
447
|
-
}
|
|
448
|
-
async function load(base, hunks, cache_file) {
|
|
449
|
-
const file = cache_file ?? path2.resolve(await git_spawn.read(["rev-parse", "--git-path", CACHE_NAME2]));
|
|
450
|
-
const [text, tree, contents] = await read_all(file, base, hunks);
|
|
451
|
-
const { test_digests, code, test_contents, change } = tree;
|
|
452
|
-
const greens = test_pinned_cache_logic.greens_of(text);
|
|
453
|
-
const remnants = test_pinned_prune_logic.remnants_of(hunks, greens);
|
|
454
|
-
const pruned = test_pinned_prune_logic.pruned_of(code, contents, remnants, greens);
|
|
455
|
-
const freshness = test_pinned_cache_logic.freshness_of(text, { change, pruned, test_contents });
|
|
456
|
-
const reach = test_pinned_reach.create({ ...code, test_digests });
|
|
457
|
-
const entries = test_pinned_cache_logic.entries_of(text);
|
|
458
|
-
return { file, base, ...tree, entries, freshness, reach, hunks, contents };
|
|
459
|
-
}
|
|
460
|
-
async function basis_of(cache, probe, file) {
|
|
461
|
-
if (probe.verdict !== "red") {
|
|
462
|
-
const tests = await cache.reach.related(file);
|
|
463
|
-
return tests && test_pinned_cache_logic.related_basis(tests, cache.test_digests, cache.config);
|
|
464
|
-
}
|
|
465
|
-
const digest = await cache.reach.failed(probe.failed);
|
|
466
|
-
return digest === void 0 ? void 0 : { digest };
|
|
467
|
-
}
|
|
468
|
-
async function known_by_basis(cache, entry, file) {
|
|
469
|
-
const { freshness, test_digests } = cache;
|
|
470
|
-
const stored = { verdict: entry.verdict, failed: Object.keys(entry.tests) };
|
|
471
|
-
const basis = await basis_of(cache, stored, file);
|
|
472
|
-
const held = test_pinned_cache_logic.fresh_verdict(entry, freshness, test_digests, basis?.digest);
|
|
473
|
-
return held ?? test_pinned_cache_logic.recheck_of(entry, freshness, basis, test_digests);
|
|
474
|
-
}
|
|
475
|
-
async function known_one(cache, key, file) {
|
|
476
|
-
const { freshness, test_digests } = cache;
|
|
477
|
-
const entry = cache.entries[key];
|
|
478
|
-
const kept = test_pinned_cache_logic.fresh_verdict(entry, freshness, test_digests);
|
|
479
|
-
if (kept !== void 0 || entry === void 0) return kept;
|
|
480
|
-
if (entry.basis === void 0) {
|
|
481
|
-
return test_pinned_cache_logic.recheck_of(entry, freshness, void 0, test_digests);
|
|
482
|
-
}
|
|
483
|
-
return await known_by_basis(cache, entry, file);
|
|
484
|
-
}
|
|
485
|
-
async function known(cache, keys2, files) {
|
|
486
|
-
return await Promise.all(
|
|
487
|
-
keys2.map(async (key, index) => await known_one(cache, key, files[index] ?? ""))
|
|
488
|
-
);
|
|
489
|
-
}
|
|
490
|
-
async function stored_basis(cache, key, probe, file) {
|
|
491
|
-
const entry = cache.entries[key];
|
|
492
|
-
const kept = test_pinned_cache_logic.fresh_verdict(entry, cache.freshness, cache.test_digests);
|
|
493
|
-
if (kept?.verdict === probe.verdict && entry?.basis !== void 0) {
|
|
494
|
-
return { digest: entry.basis, related: entry.related };
|
|
495
|
-
}
|
|
496
|
-
const failed = Object.keys(test_pinned_cache_logic.tests_of(probe.failed, cache.test_digests));
|
|
497
|
-
return await basis_of(cache, { ...probe, failed }, file);
|
|
498
|
-
}
|
|
499
|
-
async function is_steady(cache) {
|
|
500
|
-
const now = await read_tree(cache.base);
|
|
501
|
-
return now.change === cache.change && now.test_contents === cache.test_contents;
|
|
502
|
-
}
|
|
503
|
-
function write2(cache, entries, probes) {
|
|
504
|
-
const { code, contents, hunks } = cache;
|
|
505
|
-
const reached = test_pinned_prune_logic.greens_reached(
|
|
506
|
-
hunks,
|
|
507
|
-
probes.map((probe) => probe?.verdict)
|
|
508
|
-
);
|
|
509
|
-
const green = reached.map((hunk) => test_pinned_prune_logic.record_of(hunk));
|
|
510
|
-
const pruned = test_pinned_prune_logic.pruned_of(code, contents, reached, green);
|
|
511
|
-
const content = {
|
|
512
|
-
test_contents: cache.test_contents,
|
|
513
|
-
change: cache.change,
|
|
514
|
-
entries,
|
|
515
|
-
pruned,
|
|
516
|
-
green
|
|
517
|
-
};
|
|
518
|
-
atomic_write.replace_file(cache.file, `${JSON.stringify(content)}${LINE_BREAK}`);
|
|
519
|
-
}
|
|
520
|
-
async function settle(state, reached) {
|
|
521
|
-
const { cache, keys: keys2, files, probes, bases } = state;
|
|
522
|
-
const read3 = await Promise.all(
|
|
523
|
-
reached.map(
|
|
524
|
-
async ([index, probe]) => await stored_basis(cache, keys2[index] ?? "", probe, files[index] ?? "")
|
|
525
|
-
)
|
|
526
|
-
);
|
|
527
|
-
const is_kept = await is_steady(cache);
|
|
528
|
-
for (const [position, [index, probe]] of reached.entries()) {
|
|
529
|
-
probes[index] = probe;
|
|
530
|
-
bases[index] = is_kept ? read3[position] : void 0;
|
|
531
|
-
}
|
|
532
|
-
write2(cache, test_pinned_cache_logic.stored(keys2, probes, cache.test_digests, bases), probes);
|
|
533
|
-
}
|
|
534
|
-
function writer(cache, keys2) {
|
|
535
|
-
const files = cache.hunks.map((hunk) => hunk.file);
|
|
536
|
-
const state = { cache, keys: keys2, files, probes: [], bases: [] };
|
|
537
|
-
const queue = { last: Promise.resolve() };
|
|
538
|
-
async function record3(reached) {
|
|
539
|
-
const previous = queue.last;
|
|
540
|
-
const current = (async () => {
|
|
541
|
-
await previous;
|
|
542
|
-
await settle(state, reached);
|
|
543
|
-
})();
|
|
544
|
-
queue.last = current;
|
|
545
|
-
await current;
|
|
546
|
-
}
|
|
547
|
-
return { record: record3 };
|
|
548
|
-
}
|
|
549
|
-
var test_pinned_cache = { known, load, writer };
|
|
550
|
-
|
|
551
|
-
// scripts/test/test-pinned-carry.ts
|
|
552
|
-
import { readFile as readFile2 } from "node:fs/promises";
|
|
553
|
-
import path3 from "node:path";
|
|
554
|
-
import { z } from "zod";
|
|
555
|
-
var CARRY_NAME = "josh-test-pinned-carry.json";
|
|
556
|
-
var SCHEMA = z.object({ tree: z.string(), pending: z.array(z.string()) });
|
|
557
|
-
function tree_of(cache) {
|
|
558
|
-
return test_pinned_cache_logic.digest_of(`${cache.change}:${cache.test_contents}`);
|
|
559
|
-
}
|
|
560
|
-
function file_of(cache) {
|
|
561
|
-
return path3.join(path3.dirname(cache.file), CARRY_NAME);
|
|
562
|
-
}
|
|
563
|
-
async function pending_of(cache) {
|
|
564
|
-
try {
|
|
565
|
-
const text = await readFile2(file_of(cache), "utf8");
|
|
566
|
-
const stored = json_value.parse_with(text, SCHEMA);
|
|
567
|
-
return stored?.tree === tree_of(cache) ? stored.pending : [];
|
|
568
|
-
} catch {
|
|
569
|
-
return [];
|
|
570
|
-
}
|
|
571
|
-
}
|
|
572
|
-
function keys_of(cache) {
|
|
573
|
-
return test_pinned_cache_logic.distinct(
|
|
574
|
-
cache.hunks.map(
|
|
575
|
-
(hunk) => test_pinned_cache_logic.hunk_key(hunk, cache.contents.get(hunk.file) ?? "")
|
|
576
|
-
)
|
|
577
|
-
);
|
|
578
|
-
}
|
|
579
|
-
function is_held(known2) {
|
|
580
|
-
return known2 !== void 0 && !test_pinned_cache_logic.is_recheck(known2);
|
|
581
|
-
}
|
|
582
|
-
function keyed_of(cache) {
|
|
583
|
-
const identifiers = keys_of(cache);
|
|
584
|
-
return new Map(cache.hunks.map((hunk, index) => [hunk, identifiers[index] ?? ""]));
|
|
585
|
-
}
|
|
586
|
-
function keys(cache, hunks) {
|
|
587
|
-
const keyed = keyed_of(cache);
|
|
588
|
-
return hunks.map((hunk) => keyed.get(hunk) ?? "");
|
|
589
|
-
}
|
|
590
|
-
function ordered_of(cache, pending) {
|
|
591
|
-
const keyed = keyed_of(cache);
|
|
592
|
-
return cache.hunks.toSorted(
|
|
593
|
-
(left, right) => Number(pending.has(keyed.get(right) ?? "")) - Number(pending.has(keyed.get(left) ?? ""))
|
|
594
|
-
);
|
|
595
|
-
}
|
|
596
|
-
async function select(cache, max_hunks) {
|
|
597
|
-
const identifiers = keys_of(cache);
|
|
598
|
-
const pending = new Set(await pending_of(cache));
|
|
599
|
-
const known2 = await test_pinned_cache.known(
|
|
600
|
-
cache,
|
|
601
|
-
identifiers,
|
|
602
|
-
cache.hunks.map((hunk) => hunk.file)
|
|
603
|
-
);
|
|
604
|
-
const held = cache.hunks.filter((_hunk, index) => is_held(known2[index]));
|
|
605
|
-
const held_set = new Set(held);
|
|
606
|
-
const ordered = ordered_of(cache, pending).filter((hunk) => !held_set.has(hunk));
|
|
607
|
-
const split = test_pinned_logic.split(ordered, max_hunks);
|
|
608
|
-
return { checked: [...held, ...split.checked], unchecked: split.unchecked };
|
|
609
|
-
}
|
|
610
|
-
function record2(cache, hunks) {
|
|
611
|
-
const pending = keys(cache, hunks);
|
|
612
|
-
atomic_write.replace_file(file_of(cache), JSON.stringify({ tree: tree_of(cache), pending }));
|
|
613
|
-
}
|
|
614
|
-
var test_pinned_carry = { select, record: record2, keys };
|
|
615
|
-
|
|
616
|
-
// scripts/test/test-pinned-functions.ts
|
|
617
|
-
var STUB_BODY = "{ throw new Error('josh test:pinned') }";
|
|
618
|
-
var SCRIPT_FILE = /\.[cm]?[jt]sx?$/u;
|
|
619
|
-
var LINE_BREAK2 = "\n";
|
|
620
|
-
var DEFAULT_NAME = "default";
|
|
621
|
-
function is_script(file) {
|
|
622
|
-
return SCRIPT_FILE.test(file);
|
|
623
|
-
}
|
|
624
|
-
function is_function_value(api, node) {
|
|
625
|
-
if (node === void 0) return false;
|
|
626
|
-
return api.isArrowFunction(node) || api.isFunctionExpression(node);
|
|
627
|
-
}
|
|
628
|
-
function member_site(api, owner, member) {
|
|
629
|
-
if (api.isMethodDeclaration(member) && member.body !== void 0) {
|
|
630
|
-
return [{ name: `${owner}.${member.name.getText()}`, extent: member, body: member.body }];
|
|
631
|
-
}
|
|
632
|
-
if (!api.isPropertyAssignment(member) || !is_function_value(api, member.initializer)) return [];
|
|
633
|
-
return [
|
|
634
|
-
{ name: `${owner}.${member.name.getText()}`, extent: member, body: member.initializer.body }
|
|
635
|
-
];
|
|
636
|
-
}
|
|
637
|
-
function declaration_sites(api, declaration) {
|
|
638
|
-
const { initializer } = declaration;
|
|
639
|
-
const name = declaration.name.getText();
|
|
640
|
-
if (is_function_value(api, initializer)) {
|
|
641
|
-
return [{ name, extent: declaration, body: initializer.body }];
|
|
642
|
-
}
|
|
643
|
-
if (initializer === void 0 || !api.isObjectLiteralExpression(initializer)) return [];
|
|
644
|
-
return initializer.properties.flatMap((member) => member_site(api, name, member));
|
|
645
|
-
}
|
|
646
|
-
function function_site(statement) {
|
|
647
|
-
if (statement.body === void 0) return [];
|
|
648
|
-
return [{ name: statement.name?.text ?? DEFAULT_NAME, extent: statement, body: statement.body }];
|
|
649
|
-
}
|
|
650
|
-
function statement_sites(api, statement) {
|
|
651
|
-
if (api.isFunctionDeclaration(statement)) return function_site(statement);
|
|
652
|
-
if (!api.isVariableStatement(statement)) return [];
|
|
653
|
-
return statement.declarationList.declarations.flatMap(
|
|
654
|
-
(declaration) => declaration_sites(api, declaration)
|
|
655
|
-
);
|
|
656
|
-
}
|
|
657
|
-
function stub_hunk(file, source, site) {
|
|
658
|
-
const start = site.extent.getStart(source);
|
|
659
|
-
const first = source.getLineAndCharacterOfPosition(start).line;
|
|
660
|
-
const last = source.getLineAndCharacterOfPosition(site.extent.getEnd()).line;
|
|
661
|
-
const offset = start - source.getLineAndCharacterOfPosition(start).character;
|
|
662
|
-
const lines = source.text.slice(offset, source.getLineEndOfPosition(site.extent.getEnd()));
|
|
663
|
-
const before = lines.slice(0, site.body.getStart(source) - offset);
|
|
664
|
-
const stubbed = `${before}${STUB_BODY}${lines.slice(site.body.getEnd() - offset)}`;
|
|
665
|
-
return {
|
|
666
|
-
file,
|
|
667
|
-
new_start: first + 1,
|
|
668
|
-
new_count: last - first + 1,
|
|
669
|
-
old_lines: stubbed.split(LINE_BREAK2),
|
|
670
|
-
new_lines: lines.split(LINE_BREAK2),
|
|
671
|
-
function_name: site.name
|
|
672
|
-
};
|
|
673
|
-
}
|
|
674
|
-
function stub_hunks(api, file, content) {
|
|
675
|
-
const source = api.createSourceFile(file, content, api.ScriptTarget.Latest, true);
|
|
676
|
-
return source.statements.flatMap((statement) => statement_sites(api, statement)).map((site) => stub_hunk(file, source, site));
|
|
677
|
-
}
|
|
678
|
-
var test_pinned_functions = { STUB_BODY, is_script, stub_hunks };
|
|
679
|
-
|
|
680
|
-
// scripts/test/test-pinned-rewire.ts
|
|
681
|
-
function is_called(api, parent, node) {
|
|
682
|
-
if (!api.isCallExpression(parent) && !api.isNewExpression(parent)) return false;
|
|
683
|
-
return parent.expression === node || parent.arguments?.includes(node) === true;
|
|
684
|
-
}
|
|
685
|
-
function is_use(api, node) {
|
|
686
|
-
const { parent } = node;
|
|
687
|
-
if (api.isPropertyAccessExpression(parent)) return parent.expression === node;
|
|
688
|
-
return is_called(api, parent, node);
|
|
689
|
-
}
|
|
690
|
-
function is_import(api, parent) {
|
|
691
|
-
return api.isImportSpecifier(parent) || api.isImportClause(parent) || api.isNamespaceImport(parent);
|
|
692
|
-
}
|
|
693
|
-
function add_name(api, node, names) {
|
|
694
|
-
const { parent } = node;
|
|
695
|
-
if (is_use(api, node)) names.used.add(node.text);
|
|
696
|
-
if (!("name" in parent) || parent.name !== node) return;
|
|
697
|
-
names.bound.add(node.text);
|
|
698
|
-
if (is_import(api, parent)) names.imported.add(node.text);
|
|
699
|
-
}
|
|
700
|
-
function names_in(api, node, names) {
|
|
701
|
-
if (api.isIdentifier(node)) add_name(api, node, names);
|
|
702
|
-
api.forEachChild(node, (child) => {
|
|
703
|
-
names_in(api, child, names);
|
|
704
|
-
});
|
|
705
|
-
}
|
|
706
|
-
function names_of(api, file, content) {
|
|
707
|
-
const names = { bound: /* @__PURE__ */ new Set(), used: /* @__PURE__ */ new Set(), imported: /* @__PURE__ */ new Set() };
|
|
708
|
-
names_in(api, api.createSourceFile(file, content, api.ScriptTarget.ESNext, true), names);
|
|
709
|
-
return names;
|
|
710
|
-
}
|
|
711
|
-
function unbound_of(names) {
|
|
712
|
-
return [...names.used].filter(
|
|
713
|
-
(name) => !names.bound.has(name) && !Object.hasOwn(globalThis, name)
|
|
714
|
-
);
|
|
715
|
-
}
|
|
716
|
-
function tokens_of(api, text) {
|
|
717
|
-
const target = api.ScriptTarget.ESNext;
|
|
718
|
-
const scanner = api.createScanner(target, true, api.LanguageVariant.Standard, text);
|
|
719
|
-
const end = api.SyntaxKind.EndOfFileToken;
|
|
720
|
-
const tokens = [];
|
|
721
|
-
for (let kind = scanner.scan(); kind !== end; kind = scanner.scan()) {
|
|
722
|
-
tokens.push({ kind, text: scanner.getTokenText() });
|
|
723
|
-
}
|
|
724
|
-
return tokens;
|
|
725
|
-
}
|
|
726
|
-
function is_same_token(token, other, swap) {
|
|
727
|
-
if (other?.kind !== token.kind) return false;
|
|
728
|
-
return token.text === other.text || swap.from.has(token.text) && swap.to.has(other.text);
|
|
729
|
-
}
|
|
730
|
-
function is_renamed_only(olds, news, swap) {
|
|
731
|
-
if (olds.length !== news.length) return false;
|
|
732
|
-
return olds.every((token, index) => is_same_token(token, news[index], swap));
|
|
733
|
-
}
|
|
734
|
-
function is_import_only(api, file, text) {
|
|
735
|
-
const source = api.createSourceFile(file, text, api.ScriptTarget.ESNext, true);
|
|
736
|
-
return source.statements.every((statement) => api.isImportDeclaration(statement));
|
|
737
|
-
}
|
|
738
|
-
function new_text_of(content, hunk) {
|
|
739
|
-
const start = hunk.new_start - 1;
|
|
740
|
-
return content.split("\n").slice(start, start + hunk.new_count).join("\n");
|
|
741
|
-
}
|
|
742
|
-
function is_name_swap(api, hunk, new_text, swap) {
|
|
743
|
-
const old_text = hunk.old_lines.join("\n");
|
|
744
|
-
const is_imports = is_import_only(api, hunk.file, old_text);
|
|
745
|
-
if (is_imports && is_import_only(api, hunk.file, new_text)) return true;
|
|
746
|
-
return is_renamed_only(tokens_of(api, old_text), tokens_of(api, new_text), swap);
|
|
747
|
-
}
|
|
748
|
-
function is_rewire(api, content, hunk) {
|
|
749
|
-
if (!test_pinned_functions.is_script(hunk.file)) return false;
|
|
750
|
-
const after = names_of(api, hunk.file, content);
|
|
751
|
-
const before = names_of(api, hunk.file, test_pinned_logic.revert(content, hunk));
|
|
752
|
-
const unbound_now = new Set(unbound_of(after));
|
|
753
|
-
const unbound = unbound_of(before).filter((name) => !unbound_now.has(name));
|
|
754
|
-
if (unbound.length === 0) return false;
|
|
755
|
-
const swap = { from: new Set(unbound), to: after.imported };
|
|
756
|
-
return is_name_swap(api, hunk, new_text_of(content, hunk), swap);
|
|
757
|
-
}
|
|
758
|
-
var test_pinned_rewire = { is_rewire };
|
|
759
|
-
|
|
760
|
-
// scripts/test/test-pinned-emit.ts
|
|
761
|
-
function emitted(api, file, content) {
|
|
762
|
-
const compiler_options = { removeComments: true, target: api.ScriptTarget.ESNext };
|
|
763
|
-
return api.transpileModule(content, { compilerOptions: compiler_options, fileName: file }).outputText;
|
|
764
|
-
}
|
|
765
|
-
function changes_runtime(api, content, hunk) {
|
|
766
|
-
if (!test_pinned_functions.is_script(hunk.file)) return true;
|
|
767
|
-
const reverted2 = test_pinned_logic.revert(content, hunk);
|
|
768
|
-
return emitted(api, hunk.file, reverted2) !== emitted(api, hunk.file, content);
|
|
769
|
-
}
|
|
770
|
-
function probed_of(api, hunks, contents) {
|
|
771
|
-
const runtime = hunks.map((hunk, index) => ({ hunk, content: contents[index] ?? "" })).filter((read3) => changes_runtime(api, read3.content, read3.hunk));
|
|
772
|
-
const probed = runtime.filter(
|
|
773
|
-
(read3) => read3.hunk.parts !== void 0 || !test_pinned_rewire.is_rewire(api, read3.content, read3.hunk)
|
|
774
|
-
);
|
|
775
|
-
return { hunks: probed.map((read3) => read3.hunk), rewired: runtime.length - probed.length };
|
|
776
|
-
}
|
|
777
|
-
var test_pinned_emit = { changes_runtime, probed_of };
|
|
778
|
-
|
|
779
|
-
// scripts/test/test-pinned-moves.ts
|
|
780
|
-
function is_deletion(hunk) {
|
|
781
|
-
return hunk.new_count === 0 && hunk.old_lines.length > 0;
|
|
782
|
-
}
|
|
783
|
-
function moves_between(deletion, insertion) {
|
|
784
|
-
if (deletion.file !== insertion.file || !is_deletion(deletion)) return false;
|
|
785
|
-
return insertion.old_lines.length === 0 && JSON.stringify(deletion.old_lines) === JSON.stringify(insertion.new_lines);
|
|
786
|
-
}
|
|
787
|
-
function is_move(first, second) {
|
|
788
|
-
return moves_between(first, second) || moves_between(second, first);
|
|
789
|
-
}
|
|
790
|
-
function take_pair(hunk, remaining) {
|
|
791
|
-
const index = remaining.findIndex((candidate) => is_move(hunk, candidate));
|
|
792
|
-
if (index === -1) return hunk;
|
|
793
|
-
const partner = remaining.splice(index, 1).at(0);
|
|
794
|
-
return partner === void 0 ? hunk : { ...hunk, parts: [hunk, partner] };
|
|
795
|
-
}
|
|
796
|
-
function group(hunks) {
|
|
797
|
-
const result = [];
|
|
798
|
-
const remaining = [...hunks];
|
|
799
|
-
while (remaining.length > 0) {
|
|
800
|
-
const hunk = remaining.shift();
|
|
801
|
-
if (hunk !== void 0) result.push(take_pair(hunk, remaining));
|
|
802
|
-
}
|
|
803
|
-
return result;
|
|
804
|
-
}
|
|
805
|
-
var test_pinned_moves = { group };
|
|
806
|
-
|
|
807
|
-
// scripts/test/test-pinned-probe.ts
|
|
808
|
-
import { readFile as readFile3, writeFile as writeFile2 } from "node:fs/promises";
|
|
809
|
-
import path5 from "node:path";
|
|
810
|
-
|
|
811
|
-
// scripts/test/test-pinned-pool.ts
|
|
812
|
-
var MAX_TREES = 4;
|
|
813
|
-
var UNREAD_BUDGET = 1;
|
|
814
|
-
function lane_plan(count, budget = UNREAD_BUDGET) {
|
|
815
|
-
const lanes = Math.max(1, Math.min(count, budget, MAX_TREES));
|
|
816
|
-
return { lanes, workers: Math.max(1, Math.floor(budget / lanes)) };
|
|
817
|
-
}
|
|
818
|
-
function deal(items, lanes) {
|
|
819
|
-
const groups = Array.from({ length: lanes }, () => []);
|
|
820
|
-
for (const [index, item] of items.entries()) groups[index % lanes]?.push(item);
|
|
821
|
-
return groups.filter((group2) => group2.length > 0);
|
|
822
|
-
}
|
|
823
|
-
function settled(outcomes) {
|
|
824
|
-
const failed = outcomes.find((outcome) => outcome.status === "rejected");
|
|
825
|
-
if (failed !== void 0) throw failed.reason;
|
|
826
|
-
return outcomes.flatMap((outcome) => outcome.status === "fulfilled" ? [outcome.value] : []);
|
|
827
|
-
}
|
|
828
|
-
async function run_lanes(items, lanes, run_lane) {
|
|
829
|
-
return settled(
|
|
830
|
-
await Promise.allSettled(deal(items, lanes).map(async (group2) => await run_lane(group2)))
|
|
831
|
-
);
|
|
832
|
-
}
|
|
833
|
-
function at(index, lanes) {
|
|
834
|
-
const position = Math.floor(index / lanes);
|
|
835
|
-
return [position, position + 1];
|
|
836
|
-
}
|
|
837
|
-
async function run_pool(items, lanes, run_lane) {
|
|
838
|
-
const results = await run_lanes(items, lanes, run_lane);
|
|
839
|
-
return items.flatMap((_item, index) => results[index % lanes]?.slice(...at(index, lanes)) ?? []);
|
|
840
|
-
}
|
|
841
|
-
var test_pinned_pool = { MAX_TREES, deal, lane_plan, run_pool };
|
|
842
|
-
|
|
843
|
-
// scripts/test/test-pinned-type-check.ts
|
|
844
|
-
import { writeFile } from "node:fs/promises";
|
|
845
|
-
import path4 from "node:path";
|
|
846
|
-
import { execa } from "execa";
|
|
847
|
-
var CONFIG_NAME = "tsconfig.josh-pinned.json";
|
|
848
|
-
var BASE_CONFIG = "./tsconfig.json";
|
|
849
|
-
var BUILD_INFO = "josh-pinned.tsbuildinfo";
|
|
850
|
-
var TSC_BIN = path4.join("node_modules", ".bin", "tsc");
|
|
851
|
-
var TYPED_FILE = /\.[cm]?tsx?$/u;
|
|
852
|
-
var TYPE_ERROR = /error TS\d+/u;
|
|
853
|
-
var LINT_OPTIONS_OFF = {
|
|
854
|
-
noUnusedLocals: false,
|
|
855
|
-
noUnusedParameters: false,
|
|
856
|
-
allowUnreachableCode: true
|
|
857
|
-
};
|
|
858
|
-
function is_typed(file) {
|
|
859
|
-
return TYPED_FILE.test(file);
|
|
860
|
-
}
|
|
861
|
-
async function scope_of(file) {
|
|
862
|
-
if (!is_typed(file)) return [];
|
|
863
|
-
const graph = await import_graph.create(process.cwd());
|
|
864
|
-
if (graph === void 0) return [];
|
|
865
|
-
const target = path4.resolve(file);
|
|
866
|
-
const universe = await test_pinned_reach.code_universe();
|
|
867
|
-
const readers = universe.filter(
|
|
868
|
-
(reader) => is_typed(reader) && graph.imports(reader).includes(target)
|
|
869
|
-
);
|
|
870
|
-
return [file, ...readers.map((reader) => path4.relative(process.cwd(), reader))];
|
|
871
|
-
}
|
|
872
|
-
function config_text(scope, build_info) {
|
|
873
|
-
const compiler_options = {
|
|
874
|
-
...LINT_OPTIONS_OFF,
|
|
875
|
-
noEmit: true,
|
|
876
|
-
incremental: true,
|
|
877
|
-
tsBuildInfoFile: build_info
|
|
878
|
-
};
|
|
879
|
-
const config = {
|
|
880
|
-
extends: BASE_CONFIG,
|
|
881
|
-
compilerOptions: compiler_options,
|
|
882
|
-
include: [],
|
|
883
|
-
files: scope
|
|
884
|
-
};
|
|
885
|
-
return `${JSON.stringify(config, void 0, " ")}
|
|
886
|
-
`;
|
|
887
|
-
}
|
|
888
|
-
async function check(tree, scope) {
|
|
889
|
-
const build_info = path4.join(tree.parent, BUILD_INFO);
|
|
890
|
-
await writeFile(path4.join(tree.tree, CONFIG_NAME), config_text(scope, build_info));
|
|
891
|
-
const result = await execa(
|
|
892
|
-
path4.join(tree.tree, TSC_BIN),
|
|
893
|
-
["-p", CONFIG_NAME, "--pretty", "false"],
|
|
894
|
-
{
|
|
895
|
-
cwd: tree.tree,
|
|
896
|
-
reject: false,
|
|
897
|
-
all: true
|
|
898
|
-
}
|
|
899
|
-
);
|
|
900
|
-
return { ran: result.exitCode !== void 0, red: TYPE_ERROR.test(result.all) };
|
|
901
|
-
}
|
|
902
|
-
async function is_red(tree, scope) {
|
|
903
|
-
if (scope.length === 0) return false;
|
|
904
|
-
const outcome = await check(tree, scope);
|
|
905
|
-
return outcome.red;
|
|
906
|
-
}
|
|
907
|
-
var test_pinned_type_check = { check, config_text, is_red, scope_of, CONFIG_NAME };
|
|
908
|
-
|
|
909
|
-
// scripts/test/test-pinned-probe.ts
|
|
910
|
-
var TREE_PREFIX = "josh-test-pinned-";
|
|
911
|
-
var HEAD = "HEAD";
|
|
912
|
-
var NO_TEST = { verdict: "no-test", failed: [], ran: 0 };
|
|
913
|
-
async function direct_of(root, file) {
|
|
914
|
-
const importers = await direct_importers.importers_of(root, [file]);
|
|
915
|
-
return importers.get(file) ?? [];
|
|
916
|
-
}
|
|
917
|
-
async function import_plan(root, probe) {
|
|
918
|
-
const { file } = probe.hunk;
|
|
919
|
-
if (direct_importers.every_test_imports_of([file]).length > 0) {
|
|
920
|
-
return { reach: await direct_of(root, file) };
|
|
921
|
-
}
|
|
922
|
-
if (probe.reach === void 0) return { reach: [file] };
|
|
923
|
-
return test_pinned_stage.plan_over(file, await direct_of(root, file), probe.reach);
|
|
924
|
-
}
|
|
925
|
-
async function plan_of(root, probe) {
|
|
926
|
-
const plan = await import_plan(root, probe);
|
|
927
|
-
const spawned = probe.spawned ?? [];
|
|
928
|
-
return {
|
|
929
|
-
...plan,
|
|
930
|
-
direct: plan.direct?.concat(spawned),
|
|
931
|
-
reach: [.../* @__PURE__ */ new Set([...plan.reach, ...spawned])]
|
|
932
|
-
};
|
|
933
|
-
}
|
|
934
|
-
function selection_over(root, files, workers) {
|
|
935
|
-
if (files.length === 0) return void 0;
|
|
936
|
-
const scope = { mode: "related", files, reason: "" };
|
|
937
|
-
const placed = { ...scope, files: files.map((test) => path5.join(root, test)) };
|
|
938
|
-
const flags = related_heavy_tests.exclude_flags(placed, root);
|
|
939
|
-
return [
|
|
940
|
-
...related_scope.vitest_arguments(scope, flags),
|
|
941
|
-
...unit_worker_share.worker_arguments([], workers)
|
|
942
|
-
];
|
|
943
|
-
}
|
|
944
|
-
function recheck_selection(recheck, workers) {
|
|
945
|
-
return ["run", ...recheck.recheck, ...unit_worker_share.worker_arguments([], workers)];
|
|
946
|
-
}
|
|
947
|
-
async function selection_of(root, probe, workers) {
|
|
948
|
-
if (probe.recheck !== void 0) return recheck_selection(probe.recheck, workers);
|
|
949
|
-
const plan = await plan_of(root, probe);
|
|
950
|
-
return selection_over(root, plan.direct ?? plan.reach, workers);
|
|
951
|
-
}
|
|
952
|
-
async function with_revert(tree, hunk, action) {
|
|
953
|
-
const target = path5.join(tree.tree, hunk.file);
|
|
954
|
-
const content = await readFile3(target, "utf8");
|
|
955
|
-
await writeFile2(target, test_pinned_logic.revert(content, hunk));
|
|
956
|
-
try {
|
|
957
|
-
return await action();
|
|
958
|
-
} finally {
|
|
959
|
-
await writeFile2(target, content);
|
|
960
|
-
}
|
|
961
|
-
}
|
|
962
|
-
async function reverted_run(tree, hunk, selection) {
|
|
963
|
-
if (selection === void 0) return NO_TEST;
|
|
964
|
-
return await with_revert(tree, hunk, async () => await test_red.probe_in(tree, selection));
|
|
965
|
-
}
|
|
966
|
-
async function is_reverted_type_red(tree, hunk) {
|
|
967
|
-
const scope = await test_pinned_type_check.scope_of(hunk.file);
|
|
968
|
-
if (scope.length === 0 || await test_pinned_type_check.is_red(tree, scope)) return false;
|
|
969
|
-
return await with_revert(tree, hunk, async () => await test_pinned_type_check.is_red(tree, scope));
|
|
970
|
-
}
|
|
971
|
-
async function fresh_verdict(tree, probe, lane) {
|
|
972
|
-
const plan = await plan_of(tree.tree, probe);
|
|
973
|
-
async function run2(files) {
|
|
974
|
-
return await reverted_run(tree, probe.hunk, selection_over(tree.tree, files, lane.workers));
|
|
975
|
-
}
|
|
976
|
-
async function is_type_red() {
|
|
977
|
-
return await is_reverted_type_red(tree, probe.hunk);
|
|
978
|
-
}
|
|
979
|
-
return await test_pinned_stage.staged_verdict(plan, run2, is_type_red, lane.staged);
|
|
980
|
-
}
|
|
981
|
-
async function verdict_of(tree, probe, lane) {
|
|
982
|
-
if (probe.recheck === void 0) return await fresh_verdict(tree, probe, lane);
|
|
983
|
-
const selection = recheck_selection(probe.recheck, lane.workers);
|
|
984
|
-
const run2 = await reverted_run(tree, probe.hunk, selection);
|
|
985
|
-
return test_pinned_cache_logic.rechecked(probe.recheck, run2) ?? await fresh_verdict(tree, probe, lane);
|
|
986
|
-
}
|
|
987
|
-
function halt_on(lane, verdict) {
|
|
988
|
-
if (lane.halt !== void 0 && test_pinned_logic.is_unpinned(verdict)) lane.halt.is_set = true;
|
|
989
|
-
}
|
|
990
|
-
async function timed_verdict(tree, probe, lane) {
|
|
991
|
-
const started = Date.now();
|
|
992
|
-
const verdict = await verdict_of(tree, probe, lane);
|
|
993
|
-
lane.times.push(test_pinned_ledger.time_of(probe.hunk, verdict, Date.now() - started));
|
|
994
|
-
return verdict;
|
|
995
|
-
}
|
|
996
|
-
async function verdicts_in(tree, probes, lane) {
|
|
997
|
-
const verdicts = [];
|
|
998
|
-
for (const probe of probes) {
|
|
999
|
-
if (lane.halt?.is_set === true) break;
|
|
1000
|
-
const verdict = await timed_verdict(tree, probe, lane);
|
|
1001
|
-
halt_on(lane, verdict);
|
|
1002
|
-
await lane.on_verdict(probe.index, verdict);
|
|
1003
|
-
verdicts.push(verdict);
|
|
1004
|
-
}
|
|
1005
|
-
return verdicts;
|
|
1006
|
-
}
|
|
1007
|
-
async function pooled(paths, probes, lane) {
|
|
1008
|
-
if (probes.length === 0) return [];
|
|
1009
|
-
const plan = test_pinned_pool.lane_plan(probes.length, await test_unit_guard.vitest_share([]));
|
|
1010
|
-
return await test_pinned_pool.run_pool(
|
|
1011
|
-
probes,
|
|
1012
|
-
plan.lanes,
|
|
1013
|
-
async (group2) => await base_tree.with_tree(TREE_PREFIX, HEAD, async (tree) => {
|
|
1014
|
-
await base_tree.copy_in(tree.tree, paths);
|
|
1015
|
-
return await verdicts_in(tree, group2, { ...lane, workers: plan.workers });
|
|
1016
|
-
})
|
|
1017
|
-
);
|
|
1018
|
-
}
|
|
1019
|
-
function skipped_of(options) {
|
|
1020
|
-
return {
|
|
1021
|
-
held: options.held ?? 0,
|
|
1022
|
-
rewired: options.rewired ?? 0,
|
|
1023
|
-
over_cap: options.over_cap ?? 0,
|
|
1024
|
-
origin: options.origin
|
|
1025
|
-
};
|
|
1026
|
-
}
|
|
1027
|
-
async function checked_on(paths, probes, on_verdict, options = {}) {
|
|
1028
|
-
const started = Date.now();
|
|
1029
|
-
const times = [];
|
|
1030
|
-
const staged = test_pinned_stage.none();
|
|
1031
|
-
const halt = options.is_first_unpinned === true ? { is_set: false } : void 0;
|
|
1032
|
-
const verdicts = await pooled(paths, probes, { on_verdict, times, staged, halt });
|
|
1033
|
-
await test_pinned_ledger.record(skipped_of(options), times, Date.now() - started);
|
|
1034
|
-
return { verdicts, staged };
|
|
1035
|
-
}
|
|
1036
|
-
var test_pinned_probe = { checked_on, selection_of };
|
|
1037
|
-
|
|
1038
|
-
// scripts/test/test-pinned.ts
|
|
1039
|
-
var HEAD2 = "HEAD";
|
|
1040
|
-
var NO_OUTCOME = { unpinned: [], stopped: [] };
|
|
1041
|
-
var NO_REPORT = { ...NO_OUTCOME, unchecked: [], unparsed: [] };
|
|
1042
|
-
async function read_hunks(base, files) {
|
|
1043
|
-
if (files.length === 0) return [];
|
|
1044
|
-
const diff_args = ["diff", "-U0", "--no-color", "--no-ext-diff", "--diff-filter=M"];
|
|
1045
|
-
const prefix_args = ["--src-prefix=a/", "--dst-prefix=b/", base, "--"];
|
|
1046
|
-
return test_pinned_logic.parse_hunks(
|
|
1047
|
-
await git_spawn.read([...diff_args, ...prefix_args, ...files])
|
|
1048
|
-
);
|
|
1049
|
-
}
|
|
1050
|
-
function held_of(known2) {
|
|
1051
|
-
return test_pinned_cache_logic.is_recheck(known2) ? void 0 : known2;
|
|
1052
|
-
}
|
|
1053
|
-
function recheck_of(known2) {
|
|
1054
|
-
return test_pinned_cache_logic.is_recheck(known2) ? known2 : void 0;
|
|
1055
|
-
}
|
|
1056
|
-
function probes_of(hunks, known2) {
|
|
1057
|
-
return hunks.map((hunk, index) => ({ hunk, index, recheck: recheck_of(known2[index]) })).filter((probe) => held_of(known2[probe.index]) === void 0);
|
|
1058
|
-
}
|
|
1059
|
-
async function counts_of(hunks, reach) {
|
|
1060
|
-
const files = test_pinned_cache_logic.distinct(hunks.map((hunk) => hunk.file));
|
|
1061
|
-
const related = await Promise.all(files.map(async (file) => await reach.related(file)));
|
|
1062
|
-
return new Map(files.map((file, index) => [file, related[index]?.length ?? 0]));
|
|
1063
|
-
}
|
|
1064
|
-
function by_reach(probes, counts) {
|
|
1065
|
-
const counted = probes.map((probe) => ({ ...probe, reach: counts.get(probe.hunk.file) }));
|
|
1066
|
-
return test_pinned_logic.by_reach(counted, counts);
|
|
1067
|
-
}
|
|
1068
|
-
function reached_of(verdicts) {
|
|
1069
|
-
return verdicts.flatMap((verdict, index) => verdict === void 0 ? [] : [[index, verdict]]);
|
|
1070
|
-
}
|
|
1071
|
-
function check_options(held, options) {
|
|
1072
|
-
return {
|
|
1073
|
-
held,
|
|
1074
|
-
rewired: options.rewired ?? 0,
|
|
1075
|
-
over_cap: options.over_cap ?? 0,
|
|
1076
|
-
is_first_unpinned: options.is_first_unpinned === true,
|
|
1077
|
-
origin: options.origin
|
|
1078
|
-
};
|
|
1079
|
-
}
|
|
1080
|
-
async function with_spawned(probes, reach) {
|
|
1081
|
-
const files = [...new Set(probes.map((probe) => probe.hunk.file))];
|
|
1082
|
-
const spawned = await Promise.all(files.map(async (file) => await reach.spawned(file)));
|
|
1083
|
-
const by_file = new Map(files.map((file, index) => [file, spawned[index]]));
|
|
1084
|
-
return probes.map((probe) => ({ ...probe, spawned: by_file.get(probe.hunk.file) }));
|
|
1085
|
-
}
|
|
1086
|
-
async function verdicts_on(paths, probing) {
|
|
1087
|
-
const verdicts = probing.known.map((entry) => held_of(entry));
|
|
1088
|
-
const reached = reached_of(verdicts);
|
|
1089
|
-
const probes = await with_spawned(
|
|
1090
|
-
by_reach(probes_of(probing.hunks, probing.known), probing.counts),
|
|
1091
|
-
probing.cache.reach
|
|
1092
|
-
);
|
|
1093
|
-
const writer2 = test_pinned_cache.writer({ ...probing.cache, hunks: probing.hunks }, probing.keys);
|
|
1094
|
-
const options = check_options(reached.length, probing.options);
|
|
1095
|
-
await writer2.record(reached);
|
|
1096
|
-
const checked = await test_pinned_probe.checked_on(
|
|
1097
|
-
paths,
|
|
1098
|
-
probes,
|
|
1099
|
-
async (index, verdict) => {
|
|
1100
|
-
verdicts[index] = verdict;
|
|
1101
|
-
await writer2.record([[index, verdict]]);
|
|
1102
|
-
},
|
|
1103
|
-
options
|
|
1104
|
-
);
|
|
1105
|
-
return { verdicts, staged: checked.staged };
|
|
1106
|
-
}
|
|
1107
|
-
function outcome_of(hunks, verdicts) {
|
|
1108
|
-
const is_held2 = verdicts.every((verdict) => verdict !== void 0);
|
|
1109
|
-
return { ...test_pinned_logic.outcome(hunks, verdicts), is_held: is_held2 };
|
|
1110
|
-
}
|
|
1111
|
-
function cut_of(hunks, verdicts) {
|
|
1112
|
-
const cut = hunks.filter((_hunk, index) => verdicts[index] === void 0);
|
|
1113
|
-
return cut.length === 0 ? {} : { cut };
|
|
1114
|
-
}
|
|
1115
|
-
function over_cap_of(over_cap) {
|
|
1116
|
-
return over_cap.length === 0 ? {} : { over_cap };
|
|
1117
|
-
}
|
|
1118
|
-
async function checked_outcome(paths, read3, options) {
|
|
1119
|
-
const { hunks, cache } = read3;
|
|
1120
|
-
const keys2 = test_pinned_carry.keys(cache, hunks);
|
|
1121
|
-
const known2 = await test_pinned_cache.known(
|
|
1122
|
-
cache,
|
|
1123
|
-
keys2,
|
|
1124
|
-
hunks.map((hunk) => hunk.file)
|
|
1125
|
-
);
|
|
1126
|
-
if (options.is_cached_only) {
|
|
1127
|
-
return outcome_of(
|
|
1128
|
-
hunks,
|
|
1129
|
-
known2.map((entry) => held_of(entry))
|
|
1130
|
-
);
|
|
1131
|
-
}
|
|
1132
|
-
const { verdicts, staged } = await verdicts_on(paths, { ...read3, known: known2, keys: keys2, options });
|
|
1133
|
-
return { ...outcome_of(hunks, verdicts), ...cut_of(hunks, verdicts), staged };
|
|
1134
|
-
}
|
|
1135
|
-
async function hinted_hunks(outcome, reach) {
|
|
1136
|
-
return await Promise.all(
|
|
1137
|
-
outcome.unpinned.map(async (hunk) => ({
|
|
1138
|
-
...hunk,
|
|
1139
|
-
related_tests: await reach.related(hunk.file)
|
|
1140
|
-
}))
|
|
1141
|
-
);
|
|
1142
|
-
}
|
|
1143
|
-
async function outcome_on(cache, paths, changed, options) {
|
|
1144
|
-
if (changed.length === 0) return NO_OUTCOME;
|
|
1145
|
-
const counts = await counts_of(changed, cache.reach);
|
|
1146
|
-
const { checked, unchecked } = test_pinned_logic.capped(changed, counts);
|
|
1147
|
-
const capped_options = { ...options, over_cap: unchecked.length };
|
|
1148
|
-
const outcome = await checked_outcome(paths, { hunks: checked, counts, cache }, capped_options);
|
|
1149
|
-
const unpinned = await hinted_hunks(outcome, cache.reach);
|
|
1150
|
-
return { ...outcome, unpinned, ...over_cap_of(unchecked) };
|
|
1151
|
-
}
|
|
1152
|
-
async function added_scripts(base, targets) {
|
|
1153
|
-
const held = new Set(await changed_paths.read_held_at(base, targets));
|
|
1154
|
-
return targets.filter((file) => !held.has(file) && test_pinned_functions.is_script(file));
|
|
1155
|
-
}
|
|
1156
|
-
async function stub_hunks_of(added) {
|
|
1157
|
-
const api = review_code_tree.load_typescript(process.cwd());
|
|
1158
|
-
if (api === void 0) return { hunks: [], unparsed: added };
|
|
1159
|
-
const contents = await Promise.all(added.map(async (file) => await readFile4(file, "utf8")));
|
|
1160
|
-
const hunks = added.flatMap(
|
|
1161
|
-
(file, index) => test_pinned_functions.stub_hunks(api, file, contents[index] ?? "")
|
|
1162
|
-
);
|
|
1163
|
-
return { hunks, unparsed: [] };
|
|
1164
|
-
}
|
|
1165
|
-
async function runtime_hunks(hunks) {
|
|
1166
|
-
const grouped = test_pinned_moves.group(hunks);
|
|
1167
|
-
const api = review_code_tree.load_typescript(process.cwd());
|
|
1168
|
-
if (api === void 0) return { hunks: grouped, unparsed: [], rewired: 0 };
|
|
1169
|
-
const contents = await Promise.all(grouped.map(async (hunk) => await readFile4(hunk.file, "utf8")));
|
|
1170
|
-
return { ...test_pinned_emit.probed_of(api, grouped, contents), unparsed: [] };
|
|
1171
|
-
}
|
|
1172
|
-
async function read_probes(base, targets) {
|
|
1173
|
-
const stubs = await stub_hunks_of(await added_scripts(base, targets));
|
|
1174
|
-
const changed = await runtime_hunks(await read_hunks(base, targets));
|
|
1175
|
-
const hunks = [...changed.hunks, ...stubs.hunks];
|
|
1176
|
-
return { hunks, unparsed: stubs.unparsed, rewired: changed.rewired };
|
|
1177
|
-
}
|
|
1178
|
-
async function existing_since(commit) {
|
|
1179
|
-
const changed = await changed_paths.read_changed_since(commit);
|
|
1180
|
-
return changed.filter((file) => existsSync3(file));
|
|
1181
|
-
}
|
|
1182
|
-
async function report_on(base, options, has_runner) {
|
|
1183
|
-
const { max_hunks } = options;
|
|
1184
|
-
const paths = await existing_since(HEAD2);
|
|
1185
|
-
const changed = await existing_since(base);
|
|
1186
|
-
const targets = await test_pinned_reach.probed_files(
|
|
1187
|
-
changed.filter((file) => test_pinned_logic.is_target(file))
|
|
1188
|
-
);
|
|
1189
|
-
const probes = await read_probes(base, targets);
|
|
1190
|
-
const cache = await test_pinned_cache.load(base, probes.hunks, options.cache_file);
|
|
1191
|
-
const { checked, unchecked } = await test_pinned_carry.select(cache, has_runner ? max_hunks : 0);
|
|
1192
|
-
if (!options.is_cached_only) test_pinned_carry.record(cache, unchecked);
|
|
1193
|
-
const outcome = await outcome_on(cache, paths, checked, { ...options, rewired: probes.rewired });
|
|
1194
|
-
return { ...outcome, unchecked, unparsed: probes.unparsed, max_hunks, has_runner };
|
|
1195
|
-
}
|
|
1196
|
-
async function report(options) {
|
|
1197
|
-
const base = await change_base.resolved_through_merge();
|
|
1198
|
-
const has_runner = test_red.has_runner();
|
|
1199
|
-
if (base === void 0) return { ...NO_REPORT, max_hunks: options.max_hunks, has_runner };
|
|
1200
|
-
const root = process.cwd();
|
|
1201
|
-
const result = await test_pinned_snapshot.with_snapshot(async (snapshot) => ({
|
|
1202
|
-
...await report_on(base, { ...options, cache_file: snapshot.cache_file }, has_runner),
|
|
1203
|
-
tree_hash: snapshot.tree_hash
|
|
1204
|
-
}));
|
|
1205
|
-
return { ...result, is_stale: test_pinned_snapshot.current_hash(root) !== result.tree_hash };
|
|
1206
|
-
}
|
|
1207
|
-
async function run(max_hunks, is_first_unpinned = false, origin) {
|
|
1208
|
-
return await report({ max_hunks, is_cached_only: false, is_first_unpinned, origin });
|
|
1209
|
-
}
|
|
1210
|
-
async function cached(max_hunks) {
|
|
1211
|
-
return await report({ max_hunks, is_cached_only: true });
|
|
1212
|
-
}
|
|
1213
|
-
async function held_report(max_hunks) {
|
|
1214
|
-
const read3 = await cached(max_hunks);
|
|
1215
|
-
return read3.is_held === true ? read3 : void 0;
|
|
1216
|
-
}
|
|
1217
|
-
var test_pinned = { cached, held_report, run };
|
|
1218
|
-
|
|
1219
|
-
export {
|
|
1220
|
-
test_pinned_record,
|
|
1221
|
-
test_pinned_ledger,
|
|
1222
|
-
test_pinned
|
|
1223
|
-
};
|