@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
|
@@ -0,0 +1,1915 @@
|
|
|
1
|
+
import {
|
|
2
|
+
PLATFORM_TEMP_ROOT,
|
|
3
|
+
PROBE_TIMEOUT_MS,
|
|
4
|
+
durable_state_root,
|
|
5
|
+
external_exports,
|
|
6
|
+
git_command,
|
|
7
|
+
git_common_directory,
|
|
8
|
+
json_value,
|
|
9
|
+
stamp_file
|
|
10
|
+
} from "./chunk-RWVA2SFN.js";
|
|
11
|
+
|
|
12
|
+
// scripts/issue/issue-number-shape.ts
|
|
13
|
+
var ISSUE_NUMBER_PATTERN = /^[1-9]\d*$/u;
|
|
14
|
+
var BAD_ISSUE_MESSAGE = "Not an issue number: ";
|
|
15
|
+
var ISSUE_PREFIX = "#";
|
|
16
|
+
function is_issue_number(value) {
|
|
17
|
+
return ISSUE_NUMBER_PATTERN.test(value);
|
|
18
|
+
}
|
|
19
|
+
function require_issue_number(issue) {
|
|
20
|
+
if (!is_issue_number(issue)) throw new Error(`${BAD_ISSUE_MESSAGE}${issue}`);
|
|
21
|
+
}
|
|
22
|
+
function single_of(positionals) {
|
|
23
|
+
const [issue_number, ...rest] = positionals;
|
|
24
|
+
const is_single = rest.length === 0 && issue_number !== void 0;
|
|
25
|
+
return is_single && ISSUE_NUMBER_PATTERN.test(issue_number) ? issue_number : void 0;
|
|
26
|
+
}
|
|
27
|
+
function issue_token(token) {
|
|
28
|
+
return ISSUE_NUMBER_PATTERN.test(token) ? `${ISSUE_PREFIX}${token}` : token;
|
|
29
|
+
}
|
|
30
|
+
var issue_number_shape = {
|
|
31
|
+
ISSUE_NUMBER_PATTERN,
|
|
32
|
+
is_issue_number,
|
|
33
|
+
issue_token,
|
|
34
|
+
require_issue_number,
|
|
35
|
+
single_of
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
// scripts/lane/lane-child-mark-keys.ts
|
|
39
|
+
var KEY = "JOSH_LANE_CHILD";
|
|
40
|
+
var OVERRUN_KEY = "JOSH_LANE_OVERRUN";
|
|
41
|
+
var MARK_KEYS = [KEY, OVERRUN_KEY];
|
|
42
|
+
var lane_child_mark_keys = { KEY, MARK_KEYS, OVERRUN_KEY };
|
|
43
|
+
|
|
44
|
+
// scripts/lane/lane-paths.ts
|
|
45
|
+
import path from "node:path";
|
|
46
|
+
var LANE_ROOT_KEY = "JOSH_LANE_ROOT";
|
|
47
|
+
var LANE_DIRECTORY_SUFFIX = "-lanes";
|
|
48
|
+
var LANE_BRANCH_SUFFIX = "-lane";
|
|
49
|
+
function default_lane_root(repository_root) {
|
|
50
|
+
const name = path.basename(repository_root);
|
|
51
|
+
return path.join(path.dirname(repository_root), `.${name}${LANE_DIRECTORY_SUFFIX}`);
|
|
52
|
+
}
|
|
53
|
+
function lane_root(repository_root, environment = process.env) {
|
|
54
|
+
const configured = environment[LANE_ROOT_KEY]?.trim() ?? "";
|
|
55
|
+
return configured.length === 0 ? default_lane_root(repository_root) : path.resolve(configured);
|
|
56
|
+
}
|
|
57
|
+
function lane_directory(root2, issue) {
|
|
58
|
+
return path.join(root2, issue);
|
|
59
|
+
}
|
|
60
|
+
var DEFAULT_LANE_ROOT_PATTERN = new RegExp(String.raw`^\..+${LANE_DIRECTORY_SUFFIX}$`, "u");
|
|
61
|
+
var DEFAULT_LANE_FILE_PATTERN = new RegExp(
|
|
62
|
+
String.raw`([/\\])\.([^/\\]+)${LANE_DIRECTORY_SUFFIX}[/\\]\d+(?=[/\\]|$)`,
|
|
63
|
+
"u"
|
|
64
|
+
);
|
|
65
|
+
function main_checkout_path(file) {
|
|
66
|
+
return file.replace(DEFAULT_LANE_FILE_PATTERN, "$1$2");
|
|
67
|
+
}
|
|
68
|
+
function is_lane_root(directory, environment) {
|
|
69
|
+
const configured = environment[LANE_ROOT_KEY]?.trim() ?? "";
|
|
70
|
+
if (configured.length > 0) return path.resolve(configured) === directory;
|
|
71
|
+
return DEFAULT_LANE_ROOT_PATTERN.test(path.basename(directory));
|
|
72
|
+
}
|
|
73
|
+
var CLAUDE_WORKTREES_PATTERN = /[/\\]\.claude[/\\]worktrees[/\\][^/\\]+(?:[/\\].*)?$/u;
|
|
74
|
+
function checkout_of(directory) {
|
|
75
|
+
return directory.replace(CLAUDE_WORKTREES_PATTERN, "");
|
|
76
|
+
}
|
|
77
|
+
function lane_issue_of(directory, environment = process.env) {
|
|
78
|
+
const resolved = checkout_of(path.resolve(directory));
|
|
79
|
+
const issue = path.basename(resolved);
|
|
80
|
+
if (!issue_number_shape.ISSUE_NUMBER_PATTERN.test(issue)) return void 0;
|
|
81
|
+
return is_lane_root(path.dirname(resolved), environment) ? issue : void 0;
|
|
82
|
+
}
|
|
83
|
+
function lanes_root_of(checkout, environment = process.env) {
|
|
84
|
+
const resolved = checkout_of(path.resolve(checkout));
|
|
85
|
+
if (lane_issue_of(resolved, environment) === void 0) return lane_root(resolved, environment);
|
|
86
|
+
return path.dirname(resolved);
|
|
87
|
+
}
|
|
88
|
+
function issue_here(directory = process.cwd(), environment = process.env) {
|
|
89
|
+
const lane = lane_issue_of(directory, environment);
|
|
90
|
+
return lane === void 0 ? void 0 : Number(lane);
|
|
91
|
+
}
|
|
92
|
+
function lane_branch(issue) {
|
|
93
|
+
return `${issue}${LANE_BRANCH_SUFFIX}`;
|
|
94
|
+
}
|
|
95
|
+
var SEAT_LOCK_DIR = ".seat-locks";
|
|
96
|
+
function is_lane_entry(name) {
|
|
97
|
+
return issue_number_shape.ISSUE_NUMBER_PATTERN.test(name) || DEFAULT_LANE_ROOT_PATTERN.test(name);
|
|
98
|
+
}
|
|
99
|
+
var lane_paths = {
|
|
100
|
+
LANE_BRANCH_SUFFIX,
|
|
101
|
+
LANE_ROOT_KEY,
|
|
102
|
+
SEAT_LOCK_DIR,
|
|
103
|
+
checkout_of,
|
|
104
|
+
default_lane_root,
|
|
105
|
+
is_lane_entry,
|
|
106
|
+
issue_here,
|
|
107
|
+
lane_branch,
|
|
108
|
+
lane_directory,
|
|
109
|
+
lane_issue_of,
|
|
110
|
+
lane_root,
|
|
111
|
+
lanes_root_of,
|
|
112
|
+
main_checkout_path
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
// scripts/lane/lane-child-marker.ts
|
|
116
|
+
var { KEY: KEY2, OVERRUN_KEY: OVERRUN_KEY2 } = lane_child_mark_keys;
|
|
117
|
+
var CACHE_TTL_KEY = "CLAUDE_CODE_PROMPT_CACHE_TTL";
|
|
118
|
+
var CACHE_TTL = "5m";
|
|
119
|
+
var OVERRUN_VALUE = "1";
|
|
120
|
+
function environment_for(issue) {
|
|
121
|
+
issue_number_shape.require_issue_number(issue);
|
|
122
|
+
return { [KEY2]: issue, [CACHE_TTL_KEY]: CACHE_TTL };
|
|
123
|
+
}
|
|
124
|
+
function marked_issue(source = process.env) {
|
|
125
|
+
const value = source[KEY2];
|
|
126
|
+
if (value === void 0) return void 0;
|
|
127
|
+
return issue_number_shape.ISSUE_NUMBER_PATTERN.test(value) ? value : void 0;
|
|
128
|
+
}
|
|
129
|
+
function overrun_environment_for(issue) {
|
|
130
|
+
return { ...environment_for(issue), [OVERRUN_KEY2]: OVERRUN_VALUE };
|
|
131
|
+
}
|
|
132
|
+
function is_overrun(source = process.env) {
|
|
133
|
+
return source[OVERRUN_KEY2] === OVERRUN_VALUE && marked_issue(source) !== void 0;
|
|
134
|
+
}
|
|
135
|
+
function is_child_of(directory, source = process.env) {
|
|
136
|
+
const marked = marked_issue(source);
|
|
137
|
+
return marked !== void 0 && marked === lane_paths.lane_issue_of(directory, { ...source });
|
|
138
|
+
}
|
|
139
|
+
var lane_child_marker = {
|
|
140
|
+
KEY: KEY2,
|
|
141
|
+
OVERRUN_KEY: OVERRUN_KEY2,
|
|
142
|
+
env_for: environment_for,
|
|
143
|
+
overrun_env_for: overrun_environment_for,
|
|
144
|
+
is_child_of,
|
|
145
|
+
is_overrun,
|
|
146
|
+
marked_issue
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
// scripts/josh/agent-session-environment.ts
|
|
150
|
+
var SESSION_ID_KEY = "CLAUDE_CODE_SESSION_ID";
|
|
151
|
+
var AGENT_PID_KEY = "CLAUDE_PID";
|
|
152
|
+
function session_pid(environment = process.env) {
|
|
153
|
+
const pid = Number(environment[AGENT_PID_KEY]);
|
|
154
|
+
return Number.isSafeInteger(pid) && pid > 0 ? pid : void 0;
|
|
155
|
+
}
|
|
156
|
+
function own_session_pid(environment = process.env) {
|
|
157
|
+
return environment[SESSION_ID_KEY] === void 0 ? void 0 : session_pid(environment);
|
|
158
|
+
}
|
|
159
|
+
var PARENT_SESSION_KEYS = [
|
|
160
|
+
"CLAUDE_CODE_MESSAGING_SOCKET",
|
|
161
|
+
"CLAUDE_CODE_MESSAGING_TOKEN",
|
|
162
|
+
SESSION_ID_KEY,
|
|
163
|
+
"CLAUDE_CODE_CHILD_SESSION"
|
|
164
|
+
];
|
|
165
|
+
var PROXY_KEYS = [
|
|
166
|
+
"ALL_PROXY",
|
|
167
|
+
"HTTP_PROXY",
|
|
168
|
+
"HTTPS_PROXY",
|
|
169
|
+
"all_proxy",
|
|
170
|
+
"http_proxy",
|
|
171
|
+
"https_proxy",
|
|
172
|
+
"GLOBAL_AGENT_HTTP_PROXY",
|
|
173
|
+
"GLOBAL_AGENT_HTTPS_PROXY"
|
|
174
|
+
];
|
|
175
|
+
var PROXY_CERTIFICATE_KEY = "NODE_EXTRA_CA_CERTS";
|
|
176
|
+
var LOOPBACK_HOSTS = ["localhost", "ip6-localhost", "[::1]"];
|
|
177
|
+
var LOOPBACK_PREFIX = "127.";
|
|
178
|
+
var NO_HOST = "";
|
|
179
|
+
function parsed_host(value) {
|
|
180
|
+
try {
|
|
181
|
+
return new URL(value).hostname;
|
|
182
|
+
} catch {
|
|
183
|
+
return NO_HOST;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
function proxy_host(value) {
|
|
187
|
+
const direct = parsed_host(value);
|
|
188
|
+
return direct === NO_HOST ? parsed_host(`http://${value}`) : direct;
|
|
189
|
+
}
|
|
190
|
+
function is_loopback_host(host) {
|
|
191
|
+
return host.startsWith(LOOPBACK_PREFIX) || LOOPBACK_HOSTS.includes(host);
|
|
192
|
+
}
|
|
193
|
+
function is_loopback_proxy(value) {
|
|
194
|
+
if (value === void 0 || value === NO_HOST) return false;
|
|
195
|
+
return is_loopback_host(proxy_host(value));
|
|
196
|
+
}
|
|
197
|
+
function is_declared(value) {
|
|
198
|
+
return value !== void 0 && value !== NO_HOST;
|
|
199
|
+
}
|
|
200
|
+
function loopback_proxy_keys(source, is_removed = is_loopback_proxy) {
|
|
201
|
+
const declared = PROXY_KEYS.filter((key) => is_declared(source[key]));
|
|
202
|
+
const matched = declared.filter((key) => is_removed(source[key]));
|
|
203
|
+
const is_certificate_included = matched.length > 0 && matched.length === declared.length;
|
|
204
|
+
return is_certificate_included ? [...matched, PROXY_CERTIFICATE_KEY] : matched;
|
|
205
|
+
}
|
|
206
|
+
function to_removed(keys) {
|
|
207
|
+
return Object.fromEntries(keys.map((key) => [key, void 0]));
|
|
208
|
+
}
|
|
209
|
+
function removed_environment(source = process.env) {
|
|
210
|
+
return to_removed([...PARENT_SESSION_KEYS, ...loopback_proxy_keys(source)]);
|
|
211
|
+
}
|
|
212
|
+
var SCANNER_DIRECTORY = ".safe-chain";
|
|
213
|
+
var PATH_SEPARATOR = /[/\\]/u;
|
|
214
|
+
function is_scanner_certificate(value) {
|
|
215
|
+
return value?.split(PATH_SEPARATOR).includes(SCANNER_DIRECTORY) ?? false;
|
|
216
|
+
}
|
|
217
|
+
var SCANNER_PROXY_KEY = "HTTPS_PROXY";
|
|
218
|
+
function is_scanner_proxy(source) {
|
|
219
|
+
const scanner_proxy = source[SCANNER_PROXY_KEY];
|
|
220
|
+
return function is_match(value) {
|
|
221
|
+
return value === scanner_proxy && is_loopback_proxy(value);
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
function removed_proxy_environment(source = process.env) {
|
|
225
|
+
if (!is_scanner_certificate(source[PROXY_CERTIFICATE_KEY])) return {};
|
|
226
|
+
return to_removed(loopback_proxy_keys(source, is_scanner_proxy(source)));
|
|
227
|
+
}
|
|
228
|
+
var agent_session_environment = {
|
|
229
|
+
AGENT_PID_KEY,
|
|
230
|
+
LOOPBACK_HOSTS,
|
|
231
|
+
PARENT_SESSION_KEYS,
|
|
232
|
+
PROXY_CERTIFICATE_KEY,
|
|
233
|
+
PROXY_KEYS,
|
|
234
|
+
SESSION_ID_KEY,
|
|
235
|
+
own_session_pid,
|
|
236
|
+
removed_environment,
|
|
237
|
+
removed_proxy_environment,
|
|
238
|
+
session_pid
|
|
239
|
+
};
|
|
240
|
+
|
|
241
|
+
// scripts/agent/agent-provider.ts
|
|
242
|
+
var EMPTY_LENGTH = 0;
|
|
243
|
+
var PROVIDER_SCHEMA = external_exports.enum(["anthropic", "openai"]);
|
|
244
|
+
var ANTHROPIC_PROVIDER = "anthropic";
|
|
245
|
+
var OPENAI_PROVIDER = "openai";
|
|
246
|
+
var CODEX_SESSION_KEY = "CODEX_THREAD_ID";
|
|
247
|
+
function trimmed(value) {
|
|
248
|
+
const result = value?.trim();
|
|
249
|
+
return result === void 0 || result.length === EMPTY_LENGTH ? void 0 : result;
|
|
250
|
+
}
|
|
251
|
+
function rejection(key, value, expected) {
|
|
252
|
+
return { kind: "rejected", note: `${key}=${value} ${expected}, so the agent was not started` };
|
|
253
|
+
}
|
|
254
|
+
function has_session(environment, keys) {
|
|
255
|
+
return keys.some((key) => trimmed(environment[key]) !== void 0);
|
|
256
|
+
}
|
|
257
|
+
var CONFLICTING_SESSIONS = {
|
|
258
|
+
kind: "rejected",
|
|
259
|
+
note: "both Codex and Claude Code sessions were detected"
|
|
260
|
+
};
|
|
261
|
+
var HANDED_PROVIDER_KEY = "JOSH_AGENT_PROVIDER";
|
|
262
|
+
var DEFAULT_PROVIDER = {
|
|
263
|
+
kind: "provider",
|
|
264
|
+
provider: ANTHROPIC_PROVIDER,
|
|
265
|
+
is_default: true
|
|
266
|
+
};
|
|
267
|
+
var DEFAULT_NOTICE = ` No agent session or ${HANDED_PROVIDER_KEY} was found, so the provider defaulted to ${ANTHROPIC_PROVIDER} (Claude Code).`;
|
|
268
|
+
function handed_provider(environment) {
|
|
269
|
+
const value = trimmed(environment[HANDED_PROVIDER_KEY]);
|
|
270
|
+
if (value === void 0) return DEFAULT_PROVIDER;
|
|
271
|
+
const parsed = PROVIDER_SCHEMA.safeParse(value);
|
|
272
|
+
return parsed.success ? { kind: "provider", provider: parsed.data } : rejection(HANDED_PROVIDER_KEY, value, "is not an allowed provider");
|
|
273
|
+
}
|
|
274
|
+
function detected_provider(environment) {
|
|
275
|
+
const has_codex = has_session(environment, [CODEX_SESSION_KEY]);
|
|
276
|
+
const has_claude = has_session(environment, agent_session_environment.PARENT_SESSION_KEYS);
|
|
277
|
+
if (has_codex === has_claude) return has_codex ? CONFLICTING_SESSIONS : void 0;
|
|
278
|
+
return { kind: "provider", provider: has_codex ? OPENAI_PROVIDER : ANTHROPIC_PROVIDER };
|
|
279
|
+
}
|
|
280
|
+
function resolve_provider(environment = process.env) {
|
|
281
|
+
return detected_provider(environment) ?? handed_provider(environment);
|
|
282
|
+
}
|
|
283
|
+
function default_notice(environment = process.env) {
|
|
284
|
+
const selected = resolve_provider(environment);
|
|
285
|
+
return selected.kind === "provider" && selected.is_default === true ? DEFAULT_NOTICE : "";
|
|
286
|
+
}
|
|
287
|
+
function warn_of_default(environment = process.env) {
|
|
288
|
+
const notice = default_notice(environment).trim();
|
|
289
|
+
if (notice !== "") console.error(notice);
|
|
290
|
+
}
|
|
291
|
+
function has_completion_callback(environment = process.env) {
|
|
292
|
+
const selected = resolve_provider(environment);
|
|
293
|
+
return selected.kind !== "provider" || selected.provider !== OPENAI_PROVIDER;
|
|
294
|
+
}
|
|
295
|
+
function handoff_environment(environment = process.env) {
|
|
296
|
+
const selected = resolve_provider(environment);
|
|
297
|
+
return selected.kind === "provider" ? { [HANDED_PROVIDER_KEY]: selected.provider } : {};
|
|
298
|
+
}
|
|
299
|
+
var agent_provider = {
|
|
300
|
+
ANTHROPIC_PROVIDER,
|
|
301
|
+
CODEX_SESSION_KEY,
|
|
302
|
+
HANDED_PROVIDER_KEY,
|
|
303
|
+
OPENAI_PROVIDER,
|
|
304
|
+
PROVIDER_SCHEMA,
|
|
305
|
+
default_notice,
|
|
306
|
+
handoff_environment,
|
|
307
|
+
has_completion_callback,
|
|
308
|
+
rejection,
|
|
309
|
+
resolve_provider,
|
|
310
|
+
trimmed,
|
|
311
|
+
warn_of_default
|
|
312
|
+
};
|
|
313
|
+
|
|
314
|
+
// scripts/josh/durable-state.ts
|
|
315
|
+
import { mkdirSync } from "node:fs";
|
|
316
|
+
import path3 from "node:path";
|
|
317
|
+
|
|
318
|
+
// scripts/josh/durable-state-migrate.ts
|
|
319
|
+
import { constants, copyFileSync, lstatSync, readdirSync, rmSync, writeFileSync } from "node:fs";
|
|
320
|
+
import path2 from "node:path";
|
|
321
|
+
var COPIED_MARKER = ".legacy-copied";
|
|
322
|
+
var MARKER_MODE = 384;
|
|
323
|
+
var LOG_RETENTION_DAYS = 14;
|
|
324
|
+
var DAY_MS = 864e5;
|
|
325
|
+
var LOG_SUFFIX = ".log";
|
|
326
|
+
var NOTE_SUFFIX = ".md";
|
|
327
|
+
var RECORD_SUFFIXES = [".json", ".jsonl", LOG_SUFFIX, NOTE_SUFFIX];
|
|
328
|
+
var PRUNED_SUFFIXES = [LOG_SUFFIX, NOTE_SUFFIX];
|
|
329
|
+
function is_record_name(name, prefixes) {
|
|
330
|
+
const has_prefix = prefixes.some((prefix) => name.startsWith(prefix));
|
|
331
|
+
return has_prefix && RECORD_SUFFIXES.some((suffix) => name.endsWith(suffix));
|
|
332
|
+
}
|
|
333
|
+
function list_names(directory) {
|
|
334
|
+
try {
|
|
335
|
+
return readdirSync(directory);
|
|
336
|
+
} catch {
|
|
337
|
+
return [];
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
function copy_record(from, to) {
|
|
341
|
+
try {
|
|
342
|
+
if (!stamp_file.is_own_regular_file(from)) return;
|
|
343
|
+
copyFileSync(from, to, constants.COPYFILE_EXCL);
|
|
344
|
+
} catch {
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
function copy_legacy(from, to, prefixes) {
|
|
348
|
+
if (from === to) return;
|
|
349
|
+
for (const name of list_names(from)) {
|
|
350
|
+
if (is_record_name(name, prefixes)) copy_record(path2.join(from, name), path2.join(to, name));
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
function claim_copy(directory) {
|
|
354
|
+
try {
|
|
355
|
+
writeFileSync(path2.join(directory, COPIED_MARKER), "", { flag: "wx", mode: MARKER_MODE });
|
|
356
|
+
return true;
|
|
357
|
+
} catch {
|
|
358
|
+
return false;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
function copy_once(from, to, prefixes) {
|
|
362
|
+
if (claim_copy(to)) copy_legacy(from, to, prefixes);
|
|
363
|
+
}
|
|
364
|
+
function is_stale(target2, now_ms) {
|
|
365
|
+
const age_ms = now_ms - lstatSync(target2).mtimeMs;
|
|
366
|
+
return age_ms > LOG_RETENTION_DAYS * DAY_MS && stamp_file.is_own_regular_file(target2);
|
|
367
|
+
}
|
|
368
|
+
function prune_log(target2, now_ms) {
|
|
369
|
+
try {
|
|
370
|
+
if (is_stale(target2, now_ms)) rmSync(target2, { force: true });
|
|
371
|
+
} catch {
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
function prune_stale_logs(directory, prefixes, now_ms) {
|
|
375
|
+
for (const name of list_names(directory)) {
|
|
376
|
+
const is_pruned = PRUNED_SUFFIXES.some((suffix) => name.endsWith(suffix));
|
|
377
|
+
if (is_pruned && is_record_name(name, prefixes)) {
|
|
378
|
+
prune_log(path2.join(directory, name), now_ms);
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
var durable_state_migrate = { LOG_RETENTION_DAYS, copy_once, is_record_name, prune_stale_logs };
|
|
383
|
+
|
|
384
|
+
// scripts/josh/durable-state.ts
|
|
385
|
+
var STATE_DIRECTORY_MODE = 448;
|
|
386
|
+
var { PREFIX, STATE_ROOT_OVERRIDE, state_root } = durable_state_root;
|
|
387
|
+
function root() {
|
|
388
|
+
return state_root(STATE_ROOT_OVERRIDE, git_common_directory.repository);
|
|
389
|
+
}
|
|
390
|
+
var PREFIXES = Object.values(PREFIX);
|
|
391
|
+
var ensured = /* @__PURE__ */ new Set();
|
|
392
|
+
function prepare(directory) {
|
|
393
|
+
mkdirSync(directory, { recursive: true, mode: STATE_DIRECTORY_MODE });
|
|
394
|
+
durable_state_migrate.copy_once(PLATFORM_TEMP_ROOT, directory, PREFIXES);
|
|
395
|
+
durable_state_migrate.prune_stale_logs(directory, PREFIXES, Date.now());
|
|
396
|
+
}
|
|
397
|
+
function ensure(directory) {
|
|
398
|
+
if (ensured.has(directory)) return directory;
|
|
399
|
+
try {
|
|
400
|
+
prepare(directory);
|
|
401
|
+
} catch {
|
|
402
|
+
return PLATFORM_TEMP_ROOT;
|
|
403
|
+
}
|
|
404
|
+
ensured.add(directory);
|
|
405
|
+
return directory;
|
|
406
|
+
}
|
|
407
|
+
function durable_path(prefix, key_root, suffix) {
|
|
408
|
+
return path3.join(ensure(root()), stamp_file.stamp_name(prefix, key_root, suffix));
|
|
409
|
+
}
|
|
410
|
+
var durable_state = {
|
|
411
|
+
PREFIX,
|
|
412
|
+
ensure,
|
|
413
|
+
path: durable_path,
|
|
414
|
+
root,
|
|
415
|
+
state_root
|
|
416
|
+
};
|
|
417
|
+
|
|
418
|
+
// scripts/josh/process-identity.ts
|
|
419
|
+
import { execFileSync, spawnSync } from "node:child_process";
|
|
420
|
+
import { randomUUID } from "node:crypto";
|
|
421
|
+
import { readFileSync, rmSync as rmSync2 } from "node:fs";
|
|
422
|
+
import { createServer } from "node:net";
|
|
423
|
+
import path4 from "node:path";
|
|
424
|
+
var PS_COMMAND = "/bin/ps";
|
|
425
|
+
var FORMAT_FLAG = "-o";
|
|
426
|
+
var START_TIME_FORMAT = "lstart=";
|
|
427
|
+
var PID_FLAG = "-p";
|
|
428
|
+
var PROBE_ENVIRONMENT = { TZ: "UTC", LC_ALL: "C" };
|
|
429
|
+
var LIVENESS_SIGNAL = 0;
|
|
430
|
+
var NO_SUCH_PROCESS = "ESRCH";
|
|
431
|
+
var LOWEST_REAL_PID = 1;
|
|
432
|
+
var PROC_START_FIELD_INDEX = 19;
|
|
433
|
+
var BEACON_SCHEME = "socket:";
|
|
434
|
+
var BEACON_SUFFIX = ".sock";
|
|
435
|
+
var BEACON_PREFIX = `josh-process-identity-${String(process.getuid?.() ?? "")}-`;
|
|
436
|
+
var BEACON_ID_LENGTH = 36;
|
|
437
|
+
var BEACON_ID_PATTERN = /^[\da-f-]+$/u;
|
|
438
|
+
var WINDOWS_PLATFORM = "win32";
|
|
439
|
+
var BEACON_LIVE_STATUS = 0;
|
|
440
|
+
var BEACON_UNKNOWN_STATUS = 1;
|
|
441
|
+
var BEACON_GONE_STATUS = 2;
|
|
442
|
+
var SOCKET_PROBE_SOURCE = `const net=require('node:net');const socket=net.createConnection(process.argv[1]);socket.once('connect',()=>process.exit(${String(BEACON_LIVE_STATUS)}));socket.once('error',(error)=>process.exit(['ECONNREFUSED','ENOENT'].includes(error.code)?${String(BEACON_GONE_STATUS)}:${String(BEACON_UNKNOWN_STATUS)}));socket.setTimeout(1000,()=>process.exit(${String(BEACON_UNKNOWN_STATUS)}));`;
|
|
443
|
+
var beacons = /* @__PURE__ */ new Map();
|
|
444
|
+
var exit_cleanup = { is_registered: false };
|
|
445
|
+
function signal_refusal(pid) {
|
|
446
|
+
try {
|
|
447
|
+
process.kill(pid, LIVENESS_SIGNAL);
|
|
448
|
+
return void 0;
|
|
449
|
+
} catch (error) {
|
|
450
|
+
return error.code ?? NO_SUCH_PROCESS;
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
function is_live_pid(pid) {
|
|
454
|
+
return pid >= LOWEST_REAL_PID && signal_refusal(pid) === void 0;
|
|
455
|
+
}
|
|
456
|
+
function is_present_pid(pid) {
|
|
457
|
+
return pid >= LOWEST_REAL_PID && signal_refusal(pid) !== NO_SUCH_PROCESS;
|
|
458
|
+
}
|
|
459
|
+
function read_proc_start(pid) {
|
|
460
|
+
try {
|
|
461
|
+
const stat = readFileSync(`/proc/${String(pid)}/stat`, "utf8");
|
|
462
|
+
const fields = stat.slice(stat.lastIndexOf(")") + 1).trim().split(/\s+/u);
|
|
463
|
+
const start = fields[PROC_START_FIELD_INDEX];
|
|
464
|
+
return start === void 0 ? void 0 : `proc:${start}`;
|
|
465
|
+
} catch {
|
|
466
|
+
return void 0;
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
function read_ps_start(pid) {
|
|
470
|
+
try {
|
|
471
|
+
const printed = execFileSync(
|
|
472
|
+
PS_COMMAND,
|
|
473
|
+
[FORMAT_FLAG, START_TIME_FORMAT, PID_FLAG, String(pid)],
|
|
474
|
+
{
|
|
475
|
+
encoding: "utf8",
|
|
476
|
+
timeout: PROBE_TIMEOUT_MS,
|
|
477
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
478
|
+
env: PROBE_ENVIRONMENT
|
|
479
|
+
}
|
|
480
|
+
).trim();
|
|
481
|
+
return printed.length > 0 ? printed : void 0;
|
|
482
|
+
} catch {
|
|
483
|
+
return void 0;
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
var START_PROBES = { read_proc_start, read_ps_start };
|
|
487
|
+
function safe_probe(probe, pid) {
|
|
488
|
+
try {
|
|
489
|
+
return probe(pid);
|
|
490
|
+
} catch {
|
|
491
|
+
return void 0;
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
function read_start(pid, probes = START_PROBES) {
|
|
495
|
+
return safe_probe(probes.read_proc_start, pid) ?? safe_probe(probes.read_ps_start, pid);
|
|
496
|
+
}
|
|
497
|
+
function close_beacon(token) {
|
|
498
|
+
const server = beacons.get(token);
|
|
499
|
+
if (server === void 0) return;
|
|
500
|
+
beacons.delete(token);
|
|
501
|
+
server.close();
|
|
502
|
+
rmSync2(token.slice(BEACON_SCHEME.length), { force: true });
|
|
503
|
+
}
|
|
504
|
+
function close_beacons() {
|
|
505
|
+
for (const token of beacons.keys()) close_beacon(token);
|
|
506
|
+
}
|
|
507
|
+
function ensure_exit_cleanup() {
|
|
508
|
+
if (exit_cleanup.is_registered) return;
|
|
509
|
+
exit_cleanup.is_registered = true;
|
|
510
|
+
process.once("exit", close_beacons);
|
|
511
|
+
}
|
|
512
|
+
function ignore_beacon_error() {
|
|
513
|
+
}
|
|
514
|
+
function bind_beacon(target2) {
|
|
515
|
+
return createServer().on("error", ignore_beacon_error).listen(target2);
|
|
516
|
+
}
|
|
517
|
+
function try_bind_beacon(bind, target2) {
|
|
518
|
+
try {
|
|
519
|
+
const server = bind(target2);
|
|
520
|
+
return server.listening ? server : void 0;
|
|
521
|
+
} catch {
|
|
522
|
+
return void 0;
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
function open_beacon(bind = bind_beacon) {
|
|
526
|
+
const target2 = path4.join(PLATFORM_TEMP_ROOT, `${BEACON_PREFIX}${randomUUID()}${BEACON_SUFFIX}`);
|
|
527
|
+
const token = `${BEACON_SCHEME}${target2}`;
|
|
528
|
+
const server = try_bind_beacon(bind, target2);
|
|
529
|
+
if (server === void 0) return void 0;
|
|
530
|
+
server.unref();
|
|
531
|
+
beacons.set(token, server);
|
|
532
|
+
ensure_exit_cleanup();
|
|
533
|
+
return token;
|
|
534
|
+
}
|
|
535
|
+
function resolve_own_start(probes = START_PROBES, platform = process.platform) {
|
|
536
|
+
const start = read_start(process.pid, probes);
|
|
537
|
+
if (start !== void 0 || platform === WINDOWS_PLATFORM) return start;
|
|
538
|
+
return open_beacon();
|
|
539
|
+
}
|
|
540
|
+
function is_valid_beacon_name(name) {
|
|
541
|
+
if (!name.startsWith(BEACON_PREFIX) || !name.endsWith(BEACON_SUFFIX)) return false;
|
|
542
|
+
const id = name.slice(BEACON_PREFIX.length, -BEACON_SUFFIX.length);
|
|
543
|
+
return id.length === BEACON_ID_LENGTH && BEACON_ID_PATTERN.test(id);
|
|
544
|
+
}
|
|
545
|
+
function beacon_target(token) {
|
|
546
|
+
if (!token.startsWith(BEACON_SCHEME)) return void 0;
|
|
547
|
+
const target2 = token.slice(BEACON_SCHEME.length);
|
|
548
|
+
if (path4.dirname(target2) !== PLATFORM_TEMP_ROOT) return void 0;
|
|
549
|
+
return is_valid_beacon_name(path4.basename(target2)) ? target2 : void 0;
|
|
550
|
+
}
|
|
551
|
+
function run_socket_probe(target2, kill_after_ms = PROBE_TIMEOUT_MS) {
|
|
552
|
+
return spawnSync(process.execPath, ["-e", SOCKET_PROBE_SOURCE, target2], {
|
|
553
|
+
stdio: "ignore",
|
|
554
|
+
timeout: kill_after_ms
|
|
555
|
+
}).status ?? void 0;
|
|
556
|
+
}
|
|
557
|
+
function is_live_beacon(target2, probe = run_socket_probe) {
|
|
558
|
+
const own2 = beacons.get(`${BEACON_SCHEME}${target2}`);
|
|
559
|
+
if (own2 !== void 0) return own2.listening;
|
|
560
|
+
const status = probe(target2);
|
|
561
|
+
if (status === BEACON_LIVE_STATUS) return true;
|
|
562
|
+
return status === BEACON_GONE_STATUS ? false : void 0;
|
|
563
|
+
}
|
|
564
|
+
function has_matching_start(pid, recorded_start, read) {
|
|
565
|
+
const observed = read(pid);
|
|
566
|
+
return observed === void 0 ? void 0 : observed === recorded_start;
|
|
567
|
+
}
|
|
568
|
+
function matches_recorded_start(pid, recorded_start, read) {
|
|
569
|
+
const target2 = beacon_target(recorded_start);
|
|
570
|
+
return target2 === void 0 ? has_matching_start(pid, recorded_start, read) : is_live_beacon(target2);
|
|
571
|
+
}
|
|
572
|
+
var own_probe = /* @__PURE__ */ new Map();
|
|
573
|
+
function own_start() {
|
|
574
|
+
if (!own_probe.has(process.pid)) own_probe.set(process.pid, resolve_own_start());
|
|
575
|
+
return own_probe.get(process.pid);
|
|
576
|
+
}
|
|
577
|
+
function own_fields() {
|
|
578
|
+
const start = own_start();
|
|
579
|
+
return { pid: process.pid, ...start !== void 0 && { process_start: start } };
|
|
580
|
+
}
|
|
581
|
+
function is_same_process(pid, recorded_start, read = read_start) {
|
|
582
|
+
if (pid === void 0 || !is_live_pid(pid)) return false;
|
|
583
|
+
if (recorded_start === void 0) return void 0;
|
|
584
|
+
return matches_recorded_start(pid, recorded_start, read);
|
|
585
|
+
}
|
|
586
|
+
function is_present_process(pid, recorded_start, read = read_start) {
|
|
587
|
+
if (!is_present_pid(pid)) return false;
|
|
588
|
+
if (recorded_start === void 0) return void 0;
|
|
589
|
+
return matches_recorded_start(pid, recorded_start, read);
|
|
590
|
+
}
|
|
591
|
+
function is_own_process(pid, recorded_start) {
|
|
592
|
+
return pid === process.pid && recorded_start === own_start();
|
|
593
|
+
}
|
|
594
|
+
var process_identity = {
|
|
595
|
+
PROBE_ENVIRONMENT,
|
|
596
|
+
START_PROBES,
|
|
597
|
+
START_TIME_FORMAT,
|
|
598
|
+
close_beacon,
|
|
599
|
+
is_live_beacon,
|
|
600
|
+
is_live_pid,
|
|
601
|
+
is_own_process,
|
|
602
|
+
is_present_pid,
|
|
603
|
+
is_present_process,
|
|
604
|
+
is_same_process,
|
|
605
|
+
open_beacon,
|
|
606
|
+
own_fields,
|
|
607
|
+
own_start,
|
|
608
|
+
read_start,
|
|
609
|
+
resolve_own_start,
|
|
610
|
+
run_socket_probe
|
|
611
|
+
};
|
|
612
|
+
|
|
613
|
+
// scripts/lib/cli-flags.ts
|
|
614
|
+
import { parseArgs } from "node:util";
|
|
615
|
+
var HELP_FLAGS = /* @__PURE__ */ new Set(["--help", "-h"]);
|
|
616
|
+
function usage_line(known_flags, command) {
|
|
617
|
+
if (known_flags.length === 0) return `Usage: josh ${command}`;
|
|
618
|
+
return `Usage: josh ${command} [${known_flags.join("] [")}]`;
|
|
619
|
+
}
|
|
620
|
+
function refuse_unknown_flags(argv, known_flags, command) {
|
|
621
|
+
const unknown = argv.filter((argument) => !known_flags.includes(argument));
|
|
622
|
+
if (unknown.length === 0) return void 0;
|
|
623
|
+
return `Unknown argument(s): ${unknown.join(" ")}
|
|
624
|
+
${usage_line(known_flags, command)}`;
|
|
625
|
+
}
|
|
626
|
+
function answer_help_or_unknown(argv, known_flags, command) {
|
|
627
|
+
if (argv.some((argument) => HELP_FLAGS.has(argument))) {
|
|
628
|
+
console.info(usage_line(known_flags, command));
|
|
629
|
+
return 0;
|
|
630
|
+
}
|
|
631
|
+
const refusal = refuse_unknown_flags(argv, known_flags, command);
|
|
632
|
+
if (refusal === void 0) return void 0;
|
|
633
|
+
console.error(refusal);
|
|
634
|
+
return 1;
|
|
635
|
+
}
|
|
636
|
+
function parse_or_undefined(config) {
|
|
637
|
+
try {
|
|
638
|
+
return parseArgs(config);
|
|
639
|
+
} catch {
|
|
640
|
+
return void 0;
|
|
641
|
+
}
|
|
642
|
+
}
|
|
643
|
+
function values_of(argv, options) {
|
|
644
|
+
return parse_or_undefined({ args: [...argv], options })?.values;
|
|
645
|
+
}
|
|
646
|
+
function arguments_of(argv, options) {
|
|
647
|
+
return parse_or_undefined({ args: [...argv], options, allowPositionals: true });
|
|
648
|
+
}
|
|
649
|
+
function string_of(value) {
|
|
650
|
+
return typeof value === "string" ? value : void 0;
|
|
651
|
+
}
|
|
652
|
+
var LONG_FLAG_PREFIX = "--";
|
|
653
|
+
var SHORT_FLAG_PREFIX = "-";
|
|
654
|
+
function option_name(flag) {
|
|
655
|
+
return flag.slice(LONG_FLAG_PREFIX.length);
|
|
656
|
+
}
|
|
657
|
+
function is_unusable_value(value) {
|
|
658
|
+
if (typeof value === "boolean" || value.length === 0) return true;
|
|
659
|
+
return value !== SHORT_FLAG_PREFIX && value.startsWith(SHORT_FLAG_PREFIX);
|
|
660
|
+
}
|
|
661
|
+
function given_values(argv, flag) {
|
|
662
|
+
const name = option_name(flag);
|
|
663
|
+
const given = parse_or_undefined({
|
|
664
|
+
args: [...argv],
|
|
665
|
+
options: { [name]: { type: "string", multiple: true } },
|
|
666
|
+
strict: false,
|
|
667
|
+
allowPositionals: true
|
|
668
|
+
})?.values[name];
|
|
669
|
+
return Array.isArray(given) ? given : [];
|
|
670
|
+
}
|
|
671
|
+
function is_value_unusable(argv, flag) {
|
|
672
|
+
return given_values(argv, flag).some((value) => is_unusable_value(value));
|
|
673
|
+
}
|
|
674
|
+
function attach_one(attached, argument, flags) {
|
|
675
|
+
const previous = attached.at(-1);
|
|
676
|
+
if (previous !== void 0 && flags.includes(previous)) {
|
|
677
|
+
attached[attached.length - 1] = `${previous}=${argument}`;
|
|
678
|
+
} else attached.push(argument);
|
|
679
|
+
}
|
|
680
|
+
function attach_values(argv, flags) {
|
|
681
|
+
const attached = [];
|
|
682
|
+
for (const argument of argv) attach_one(attached, argument, flags);
|
|
683
|
+
return attached;
|
|
684
|
+
}
|
|
685
|
+
var COUNT_PATTERN = /^\d+$/u;
|
|
686
|
+
var POSITIVE_PATTERN = /^[1-9]\d*$/u;
|
|
687
|
+
function to_integer(raw, pattern) {
|
|
688
|
+
if (raw === void 0 || !pattern.test(raw)) return void 0;
|
|
689
|
+
const parsed = Number(raw);
|
|
690
|
+
return Number.isSafeInteger(parsed) ? parsed : void 0;
|
|
691
|
+
}
|
|
692
|
+
function to_count(raw) {
|
|
693
|
+
return to_integer(raw, COUNT_PATTERN);
|
|
694
|
+
}
|
|
695
|
+
function to_positive(raw) {
|
|
696
|
+
return to_integer(raw, POSITIVE_PATTERN);
|
|
697
|
+
}
|
|
698
|
+
function read_positive_setting(raw, name, fallback) {
|
|
699
|
+
const trimmed2 = raw?.trim() ?? "";
|
|
700
|
+
if (trimmed2 === "") return { kind: "limit", limit: fallback };
|
|
701
|
+
const limit = to_positive(trimmed2);
|
|
702
|
+
if (limit !== void 0) return { kind: "limit", limit };
|
|
703
|
+
return { kind: "problem", problem: `${name} must be a positive integer, not "${trimmed2}"` };
|
|
704
|
+
}
|
|
705
|
+
var cli_flags = {
|
|
706
|
+
to_count,
|
|
707
|
+
to_positive,
|
|
708
|
+
read_positive_setting,
|
|
709
|
+
attach_values,
|
|
710
|
+
usage_line,
|
|
711
|
+
refuse_unknown_flags,
|
|
712
|
+
answer_help_or_unknown,
|
|
713
|
+
parse_or_undefined,
|
|
714
|
+
values_of,
|
|
715
|
+
arguments_of,
|
|
716
|
+
string_of,
|
|
717
|
+
option_name,
|
|
718
|
+
given_values,
|
|
719
|
+
is_value_unusable
|
|
720
|
+
};
|
|
721
|
+
|
|
722
|
+
// scripts/run/run-invocation.ts
|
|
723
|
+
var BACKLOG_COMMAND = "backlogrun";
|
|
724
|
+
var KNOWN_FLAGS = ["--max", "--idle"];
|
|
725
|
+
var ONLY_FLAG = "--only";
|
|
726
|
+
var OPTIONS = {
|
|
727
|
+
max: { type: "string" },
|
|
728
|
+
idle: { type: "string" },
|
|
729
|
+
only: { type: "boolean" }
|
|
730
|
+
};
|
|
731
|
+
var ISSUE_PREFIX2 = "#";
|
|
732
|
+
var FLAG_PREFIX = "-";
|
|
733
|
+
var TOKEN_SEPARATOR = " ";
|
|
734
|
+
var FIRST_TOKEN = 0;
|
|
735
|
+
var FIRST_ARGUMENT_INDEX = 1;
|
|
736
|
+
var EMPTY_LENGTH2 = 0;
|
|
737
|
+
var NOT_FOUND = -1;
|
|
738
|
+
function tokens_of(invocation) {
|
|
739
|
+
return invocation.split(TOKEN_SEPARATOR).filter((token) => token.length > EMPTY_LENGTH2);
|
|
740
|
+
}
|
|
741
|
+
function render_option(token) {
|
|
742
|
+
if (token.name === cli_flags.option_name(ONLY_FLAG)) return ONLY_FLAG;
|
|
743
|
+
const flag = KNOWN_FLAGS.find((known) => cli_flags.option_name(known) === token.name);
|
|
744
|
+
const value = cli_flags.to_count(token.value);
|
|
745
|
+
if (flag === void 0 || value === void 0) return void 0;
|
|
746
|
+
return `${flag} ${String(value)}`;
|
|
747
|
+
}
|
|
748
|
+
function rendered_options(tokens) {
|
|
749
|
+
const rendered = [];
|
|
750
|
+
for (const token of tokens) {
|
|
751
|
+
const part = render_option(token);
|
|
752
|
+
if (part === void 0) return void 0;
|
|
753
|
+
rendered.push(part);
|
|
754
|
+
}
|
|
755
|
+
return rendered;
|
|
756
|
+
}
|
|
757
|
+
function issue_of(token) {
|
|
758
|
+
if (!token.startsWith(ISSUE_PREFIX2)) return void 0;
|
|
759
|
+
const digits = token.slice(ISSUE_PREFIX2.length);
|
|
760
|
+
if (!issue_number_shape.ISSUE_NUMBER_PATTERN.test(digits)) return void 0;
|
|
761
|
+
const issue = Number(digits);
|
|
762
|
+
return Number.isSafeInteger(issue) ? issue : void 0;
|
|
763
|
+
}
|
|
764
|
+
function issues_of(tokens) {
|
|
765
|
+
const issues = [];
|
|
766
|
+
for (const token of tokens) {
|
|
767
|
+
const issue = issue_of(token.value ?? "");
|
|
768
|
+
if (issue === void 0) return void 0;
|
|
769
|
+
issues.push(issue);
|
|
770
|
+
}
|
|
771
|
+
return issues;
|
|
772
|
+
}
|
|
773
|
+
function argument_tokens(invocation) {
|
|
774
|
+
const tokens = tokens_of(invocation);
|
|
775
|
+
if (tokens[FIRST_TOKEN] !== BACKLOG_COMMAND) return void 0;
|
|
776
|
+
return cli_flags.parse_or_undefined({
|
|
777
|
+
args: tokens.slice(FIRST_ARGUMENT_INDEX),
|
|
778
|
+
options: OPTIONS,
|
|
779
|
+
allowPositionals: true,
|
|
780
|
+
tokens: true
|
|
781
|
+
})?.tokens;
|
|
782
|
+
}
|
|
783
|
+
function parse(invocation) {
|
|
784
|
+
const tokens = argument_tokens(invocation);
|
|
785
|
+
if (tokens === void 0) return void 0;
|
|
786
|
+
const stop = tokens.findIndex((token) => token.kind !== "positional");
|
|
787
|
+
const split_at = stop === NOT_FOUND ? tokens.length : stop;
|
|
788
|
+
const issues = issues_of(tokens.slice(FIRST_TOKEN, split_at));
|
|
789
|
+
const flags = rendered_options(tokens.slice(split_at));
|
|
790
|
+
if (issues === void 0 || flags === void 0) return void 0;
|
|
791
|
+
return { issues, flags };
|
|
792
|
+
}
|
|
793
|
+
function issue_token2(issue) {
|
|
794
|
+
return `${ISSUE_PREFIX2}${String(issue)}`;
|
|
795
|
+
}
|
|
796
|
+
function joined(command, rendered) {
|
|
797
|
+
return [command, ...rendered].join(TOKEN_SEPARATOR);
|
|
798
|
+
}
|
|
799
|
+
function rebuild(invocation) {
|
|
800
|
+
const parsed = parse(invocation);
|
|
801
|
+
if (parsed === void 0) return void 0;
|
|
802
|
+
return joined(BACKLOG_COMMAND, [
|
|
803
|
+
...parsed.issues.map((issue) => issue_token2(issue)),
|
|
804
|
+
...parsed.flags
|
|
805
|
+
]);
|
|
806
|
+
}
|
|
807
|
+
function issue_numbers(invocation) {
|
|
808
|
+
const tokens = tokens_of(invocation);
|
|
809
|
+
const stop = tokens.findIndex((token) => token.startsWith(FLAG_PREFIX));
|
|
810
|
+
const leading = stop === NOT_FOUND ? tokens : tokens.slice(FIRST_TOKEN, stop);
|
|
811
|
+
const issues = parse(leading.join(TOKEN_SEPARATOR))?.issues;
|
|
812
|
+
if (issues === void 0 || issues.length === EMPTY_LENGTH2) return void 0;
|
|
813
|
+
return issues;
|
|
814
|
+
}
|
|
815
|
+
function has_only(invocation) {
|
|
816
|
+
return parse(invocation)?.flags.includes(ONLY_FLAG) === true;
|
|
817
|
+
}
|
|
818
|
+
var run_invocation = {
|
|
819
|
+
has_only,
|
|
820
|
+
issue_numbers,
|
|
821
|
+
rebuild
|
|
822
|
+
};
|
|
823
|
+
|
|
824
|
+
// scripts/run/carry/run-carry-added.ts
|
|
825
|
+
function issues_of2(added, is_priority) {
|
|
826
|
+
return added.filter((entry) => entry.is_priority === is_priority).map((entry) => entry.issue);
|
|
827
|
+
}
|
|
828
|
+
function ordered(declared, added = []) {
|
|
829
|
+
const sequence = [...issues_of2(added, true), ...declared, ...issues_of2(added, false)];
|
|
830
|
+
return sequence.filter((issue, index) => sequence.indexOf(issue) === index);
|
|
831
|
+
}
|
|
832
|
+
function next_added(carry, additions) {
|
|
833
|
+
const next = [...carry.added ?? []];
|
|
834
|
+
for (const addition of additions) {
|
|
835
|
+
if (next.every((entry) => entry.issue !== addition.issue)) next.push(addition);
|
|
836
|
+
}
|
|
837
|
+
return next;
|
|
838
|
+
}
|
|
839
|
+
function add_issues(target2, carry, additions, retries = []) {
|
|
840
|
+
const next = {
|
|
841
|
+
...carry,
|
|
842
|
+
added: additions.length === 0 ? carry.added : next_added(carry, additions),
|
|
843
|
+
done: carry.done?.filter((issue) => !retries.includes(issue))
|
|
844
|
+
};
|
|
845
|
+
stamp_file.replace_stamp(target2, next);
|
|
846
|
+
return next;
|
|
847
|
+
}
|
|
848
|
+
var run_carry_added = { add_issues, ordered };
|
|
849
|
+
|
|
850
|
+
// scripts/run/carry/run-carry-streak.ts
|
|
851
|
+
var NO_INCREMENT = 0;
|
|
852
|
+
var OUTAGE_FOLD_WINDOW_MS = 12e4;
|
|
853
|
+
function has_increment(value) {
|
|
854
|
+
return (value ?? NO_INCREMENT) > NO_INCREMENT;
|
|
855
|
+
}
|
|
856
|
+
function next_failures(carry, change) {
|
|
857
|
+
if (has_increment(change.merged)) return NO_INCREMENT;
|
|
858
|
+
return carry.failures + (change.failures ?? NO_INCREMENT);
|
|
859
|
+
}
|
|
860
|
+
function is_within_fold_window(last_outage_at, now) {
|
|
861
|
+
if (last_outage_at === void 0) return false;
|
|
862
|
+
const last = Date.parse(last_outage_at);
|
|
863
|
+
if (Number.isNaN(last)) return false;
|
|
864
|
+
return now.getTime() - last <= OUTAGE_FOLD_WINDOW_MS;
|
|
865
|
+
}
|
|
866
|
+
function folded_outage(carry) {
|
|
867
|
+
return { outages: carry.outages, last_outage_at: carry.last_outage_at };
|
|
868
|
+
}
|
|
869
|
+
function counted_outage(carry, change, now) {
|
|
870
|
+
const outages = carry.outages + (change.outages ?? NO_INCREMENT);
|
|
871
|
+
return { outages, last_outage_at: now.toISOString() };
|
|
872
|
+
}
|
|
873
|
+
function next_outage(carry, change, now) {
|
|
874
|
+
if (has_increment(change.outages)) {
|
|
875
|
+
return is_within_fold_window(carry.last_outage_at, now) ? folded_outage(carry) : counted_outage(carry, change, now);
|
|
876
|
+
}
|
|
877
|
+
const is_reachable = has_increment(change.merged) || has_increment(change.failures);
|
|
878
|
+
return is_reachable ? { outages: NO_INCREMENT, last_outage_at: void 0 } : folded_outage(carry);
|
|
879
|
+
}
|
|
880
|
+
function next_state(carry, change, now) {
|
|
881
|
+
const outage = next_outage(carry, change, now);
|
|
882
|
+
return {
|
|
883
|
+
failures: next_failures(carry, change),
|
|
884
|
+
outages: outage.outages,
|
|
885
|
+
last_outage_at: outage.last_outage_at
|
|
886
|
+
};
|
|
887
|
+
}
|
|
888
|
+
var run_carry_streak = { next_state };
|
|
889
|
+
|
|
890
|
+
// scripts/run/carry/run-carry-change.ts
|
|
891
|
+
var NO_INCREMENT2 = 0;
|
|
892
|
+
function next_done(carry, done) {
|
|
893
|
+
if (done === void 0) return carry.done;
|
|
894
|
+
const current = carry.done ?? [];
|
|
895
|
+
return current.includes(done) ? current : [...current, done];
|
|
896
|
+
}
|
|
897
|
+
function next_merged_issues(carry, issue) {
|
|
898
|
+
if (issue === void 0) return carry.merged_issues;
|
|
899
|
+
const current = carry.merged_issues ?? [];
|
|
900
|
+
return current.includes(issue) ? current : [...current, issue];
|
|
901
|
+
}
|
|
902
|
+
function is_duplicate_merge(carry, change) {
|
|
903
|
+
const issue = change.merged_issue;
|
|
904
|
+
return issue !== void 0 && carry.merged_issues?.includes(issue) === true;
|
|
905
|
+
}
|
|
906
|
+
function has_other_change(change) {
|
|
907
|
+
const amounts = [change.filed, change.cuts, change.failures, change.outages];
|
|
908
|
+
const has_amount = amounts.some((amount) => (amount ?? NO_INCREMENT2) > NO_INCREMENT2);
|
|
909
|
+
return has_amount || change.done !== void 0 || change.retrospective === true;
|
|
910
|
+
}
|
|
911
|
+
function effective_change(carry, change) {
|
|
912
|
+
if (!is_duplicate_merge(carry, change)) return change;
|
|
913
|
+
return has_other_change(change) ? { ...change, merged: NO_INCREMENT2 } : void 0;
|
|
914
|
+
}
|
|
915
|
+
function next_counts(carry, change) {
|
|
916
|
+
const cuts = change.cuts ?? NO_INCREMENT2;
|
|
917
|
+
return {
|
|
918
|
+
merged: carry.merged + (change.merged ?? NO_INCREMENT2),
|
|
919
|
+
filed: carry.filed + (change.filed ?? NO_INCREMENT2),
|
|
920
|
+
cuts: carry.cuts + cuts,
|
|
921
|
+
is_handed_off: cuts > NO_INCREMENT2
|
|
922
|
+
};
|
|
923
|
+
}
|
|
924
|
+
function apply_change(target2, carry, change, now = /* @__PURE__ */ new Date()) {
|
|
925
|
+
const effective = effective_change(carry, change);
|
|
926
|
+
if (effective === void 0) return carry;
|
|
927
|
+
const streak = run_carry_streak.next_state(carry, effective, now);
|
|
928
|
+
const next = {
|
|
929
|
+
...carry,
|
|
930
|
+
...next_counts(carry, effective),
|
|
931
|
+
merged_issues: next_merged_issues(carry, effective.merged_issue),
|
|
932
|
+
failures: streak.failures,
|
|
933
|
+
outages: streak.outages,
|
|
934
|
+
last_outage_at: streak.last_outage_at,
|
|
935
|
+
done: next_done(carry, effective.done),
|
|
936
|
+
retrospective: effective.retrospective === true || carry.retrospective
|
|
937
|
+
};
|
|
938
|
+
stamp_file.replace_stamp(target2, next);
|
|
939
|
+
return next;
|
|
940
|
+
}
|
|
941
|
+
var run_carry_change = { apply_change };
|
|
942
|
+
|
|
943
|
+
// scripts/run/carry/run-carry-conversation.ts
|
|
944
|
+
import { existsSync, statSync as statSync2 } from "node:fs";
|
|
945
|
+
import path6 from "node:path";
|
|
946
|
+
|
|
947
|
+
// scripts/cost-runtime/cost-transcript.ts
|
|
948
|
+
import { readdirSync as readdirSync2, readFileSync as readFileSync3, statSync } from "node:fs";
|
|
949
|
+
import { homedir } from "node:os";
|
|
950
|
+
import path5 from "node:path";
|
|
951
|
+
|
|
952
|
+
// scripts/lib/read-file.ts
|
|
953
|
+
import { readFileSync as readFileSync2 } from "node:fs";
|
|
954
|
+
var ABSENT_CODE = "ENOENT";
|
|
955
|
+
function is_absent(error) {
|
|
956
|
+
return error instanceof Error && "code" in error && error.code === ABSENT_CODE;
|
|
957
|
+
}
|
|
958
|
+
function read_optional(path7) {
|
|
959
|
+
try {
|
|
960
|
+
return readFileSync2(path7, "utf8");
|
|
961
|
+
} catch (error) {
|
|
962
|
+
if (is_absent(error)) return void 0;
|
|
963
|
+
throw error;
|
|
964
|
+
}
|
|
965
|
+
}
|
|
966
|
+
function read_file_or_empty(path7) {
|
|
967
|
+
return read_optional(path7) ?? "";
|
|
968
|
+
}
|
|
969
|
+
function read_if_readable(path7) {
|
|
970
|
+
try {
|
|
971
|
+
return readFileSync2(path7, "utf8");
|
|
972
|
+
} catch {
|
|
973
|
+
return void 0;
|
|
974
|
+
}
|
|
975
|
+
}
|
|
976
|
+
var file_reader = { is_absent, read_optional, read_file_or_empty, read_if_readable };
|
|
977
|
+
|
|
978
|
+
// scripts/time-runtime/time-instant.ts
|
|
979
|
+
function parse_instant(raw) {
|
|
980
|
+
if (raw === null || raw === void 0) return void 0;
|
|
981
|
+
const parsed = Date.parse(raw);
|
|
982
|
+
return Number.isNaN(parsed) ? void 0 : parsed;
|
|
983
|
+
}
|
|
984
|
+
var time_instant = { parse_instant };
|
|
985
|
+
|
|
986
|
+
// scripts/cost-runtime/cost-usage.ts
|
|
987
|
+
var CACHE_CREATION_SCHEMA = external_exports.object({
|
|
988
|
+
ephemeral_1h_input_tokens: external_exports.number().nullish(),
|
|
989
|
+
ephemeral_5m_input_tokens: external_exports.number().nullish()
|
|
990
|
+
});
|
|
991
|
+
var USAGE_SCHEMA = external_exports.object({
|
|
992
|
+
input_tokens: external_exports.number(),
|
|
993
|
+
cache_creation_input_tokens: external_exports.number().nullish(),
|
|
994
|
+
cache_read_input_tokens: external_exports.number().nullish(),
|
|
995
|
+
output_tokens: external_exports.number(),
|
|
996
|
+
output_tokens_details: external_exports.object({ thinking_tokens: external_exports.number().nullish() }).nullish(),
|
|
997
|
+
cache_creation: CACHE_CREATION_SCHEMA.nullish()
|
|
998
|
+
});
|
|
999
|
+
var MESSAGE_SCHEMA = external_exports.object({
|
|
1000
|
+
id: external_exports.string().nullish(),
|
|
1001
|
+
model: external_exports.string().nullish(),
|
|
1002
|
+
usage: USAGE_SCHEMA.nullish()
|
|
1003
|
+
});
|
|
1004
|
+
var LINE_SCHEMA = external_exports.object({
|
|
1005
|
+
type: external_exports.string(),
|
|
1006
|
+
requestId: external_exports.string().nullish(),
|
|
1007
|
+
uuid: external_exports.string().nullish(),
|
|
1008
|
+
gitBranch: external_exports.string().nullish(),
|
|
1009
|
+
timestamp: external_exports.string().nullish(),
|
|
1010
|
+
message: MESSAGE_SCHEMA.nullish()
|
|
1011
|
+
});
|
|
1012
|
+
var SYNTHETIC_MODEL = "<synthetic>";
|
|
1013
|
+
var EMPTY_TOTALS = {
|
|
1014
|
+
input_tokens: 0,
|
|
1015
|
+
cache_write_5m_tokens: 0,
|
|
1016
|
+
cache_write_1h_tokens: 0,
|
|
1017
|
+
cache_read_tokens: 0,
|
|
1018
|
+
output_tokens: 0,
|
|
1019
|
+
thinking_tokens: 0,
|
|
1020
|
+
thinking_measured: false
|
|
1021
|
+
};
|
|
1022
|
+
var UNKNOWN_MODEL = "unknown";
|
|
1023
|
+
var UNKNOWN_BRANCH = "";
|
|
1024
|
+
function split_cache_write(usage) {
|
|
1025
|
+
const total = usage.cache_creation_input_tokens ?? 0;
|
|
1026
|
+
const detail = usage.cache_creation;
|
|
1027
|
+
if (!detail) return { write_5m: total, write_1h: 0 };
|
|
1028
|
+
const write_1h = detail.ephemeral_1h_input_tokens ?? 0;
|
|
1029
|
+
return { write_5m: detail.ephemeral_5m_input_tokens ?? total - write_1h, write_1h };
|
|
1030
|
+
}
|
|
1031
|
+
function thinking_usage(usage) {
|
|
1032
|
+
const raw = usage.output_tokens_details?.thinking_tokens;
|
|
1033
|
+
return { tokens: raw ?? 0, measured: raw !== null && raw !== void 0 };
|
|
1034
|
+
}
|
|
1035
|
+
function to_totals(usage) {
|
|
1036
|
+
const { write_5m, write_1h } = split_cache_write(usage);
|
|
1037
|
+
const thinking = thinking_usage(usage);
|
|
1038
|
+
return {
|
|
1039
|
+
input_tokens: usage.input_tokens,
|
|
1040
|
+
cache_write_5m_tokens: write_5m,
|
|
1041
|
+
cache_write_1h_tokens: write_1h,
|
|
1042
|
+
cache_read_tokens: usage.cache_read_input_tokens ?? 0,
|
|
1043
|
+
output_tokens: usage.output_tokens,
|
|
1044
|
+
thinking_tokens: thinking.tokens,
|
|
1045
|
+
thinking_measured: thinking.measured
|
|
1046
|
+
};
|
|
1047
|
+
}
|
|
1048
|
+
function declared_id(data) {
|
|
1049
|
+
return data.requestId ?? data.message?.id ?? data.uuid ?? void 0;
|
|
1050
|
+
}
|
|
1051
|
+
function request_id_of(data, usage) {
|
|
1052
|
+
const fallback = `${data.timestamp ?? ""}-${String(usage.output_tokens)}`;
|
|
1053
|
+
return declared_id(data) ?? fallback;
|
|
1054
|
+
}
|
|
1055
|
+
function to_record(data, usage) {
|
|
1056
|
+
return {
|
|
1057
|
+
request_id: request_id_of(data, usage),
|
|
1058
|
+
model: data.message?.model ?? UNKNOWN_MODEL,
|
|
1059
|
+
branch: data.gitBranch ?? UNKNOWN_BRANCH,
|
|
1060
|
+
at_ms: time_instant.parse_instant(data.timestamp),
|
|
1061
|
+
totals: to_totals(usage)
|
|
1062
|
+
};
|
|
1063
|
+
}
|
|
1064
|
+
var ASSISTANT_TYPE = "assistant";
|
|
1065
|
+
function is_priced_line(data) {
|
|
1066
|
+
return data.type === ASSISTANT_TYPE && data.message?.model !== SYNTHETIC_MODEL;
|
|
1067
|
+
}
|
|
1068
|
+
function classify(data) {
|
|
1069
|
+
if (!is_priced_line(data)) return { kind: "skipped" };
|
|
1070
|
+
const usage = data.message?.usage;
|
|
1071
|
+
return usage ? { kind: "record", record: to_record(data, usage) } : { kind: "no_usage" };
|
|
1072
|
+
}
|
|
1073
|
+
function parse_line(line) {
|
|
1074
|
+
if (line.trim() === "") return { kind: "skipped" };
|
|
1075
|
+
const parsed = LINE_SCHEMA.safeParse(json_value.parse_or_undefined(line));
|
|
1076
|
+
return parsed.success ? classify(parsed.data) : { kind: "malformed" };
|
|
1077
|
+
}
|
|
1078
|
+
function later_instant(left, right) {
|
|
1079
|
+
if (left === void 0) return right;
|
|
1080
|
+
if (right === void 0) return left;
|
|
1081
|
+
return Math.max(left, right);
|
|
1082
|
+
}
|
|
1083
|
+
function dedupe(records) {
|
|
1084
|
+
const by_id = /* @__PURE__ */ new Map();
|
|
1085
|
+
for (const record2 of records) {
|
|
1086
|
+
const seen = by_id.get(record2.request_id);
|
|
1087
|
+
const at_ms = later_instant(seen?.at_ms, record2.at_ms);
|
|
1088
|
+
by_id.set(record2.request_id, { ...seen ?? record2, at_ms });
|
|
1089
|
+
}
|
|
1090
|
+
return [...by_id.values()];
|
|
1091
|
+
}
|
|
1092
|
+
function add_totals(left, right) {
|
|
1093
|
+
return {
|
|
1094
|
+
input_tokens: left.input_tokens + right.input_tokens,
|
|
1095
|
+
cache_write_5m_tokens: left.cache_write_5m_tokens + right.cache_write_5m_tokens,
|
|
1096
|
+
cache_write_1h_tokens: left.cache_write_1h_tokens + right.cache_write_1h_tokens,
|
|
1097
|
+
cache_read_tokens: left.cache_read_tokens + right.cache_read_tokens,
|
|
1098
|
+
output_tokens: left.output_tokens + right.output_tokens,
|
|
1099
|
+
thinking_tokens: left.thinking_tokens + right.thinking_tokens,
|
|
1100
|
+
thinking_measured: left.thinking_measured || right.thinking_measured
|
|
1101
|
+
};
|
|
1102
|
+
}
|
|
1103
|
+
function sum_totals(records) {
|
|
1104
|
+
let total = EMPTY_TOTALS;
|
|
1105
|
+
for (const record2 of records) total = add_totals(total, record2.totals);
|
|
1106
|
+
return total;
|
|
1107
|
+
}
|
|
1108
|
+
function billed_input(totals) {
|
|
1109
|
+
return totals.input_tokens + totals.cache_write_5m_tokens + totals.cache_write_1h_tokens + totals.cache_read_tokens;
|
|
1110
|
+
}
|
|
1111
|
+
var cost_usage = {
|
|
1112
|
+
EMPTY_TOTALS,
|
|
1113
|
+
UNKNOWN_MODEL,
|
|
1114
|
+
SYNTHETIC_MODEL,
|
|
1115
|
+
parse_line,
|
|
1116
|
+
dedupe,
|
|
1117
|
+
add_totals,
|
|
1118
|
+
sum_totals,
|
|
1119
|
+
billed_input
|
|
1120
|
+
};
|
|
1121
|
+
|
|
1122
|
+
// scripts/cost-runtime/cost-transcript.ts
|
|
1123
|
+
var TRANSCRIPT_ROOT = path5.join(".claude", "projects");
|
|
1124
|
+
var TRANSCRIPT_EXTENSION = ".jsonl";
|
|
1125
|
+
var SLUG_PATTERN = /[^a-zA-Z0-9-]/gu;
|
|
1126
|
+
var UNIT_DIRECTORY = "subagents";
|
|
1127
|
+
var UNIT_ID_SEPARATOR = "/";
|
|
1128
|
+
function project_slug(cwd) {
|
|
1129
|
+
return cwd.replaceAll(SLUG_PATTERN, "-");
|
|
1130
|
+
}
|
|
1131
|
+
function transcript_directory(cwd, home = homedir()) {
|
|
1132
|
+
return path5.join(home, TRANSCRIPT_ROOT, project_slug(cwd));
|
|
1133
|
+
}
|
|
1134
|
+
var GIT_ENTRY = ".git";
|
|
1135
|
+
var GITDIR_PREFIX = "gitdir:";
|
|
1136
|
+
var WORKTREE_SEGMENT = `/${GIT_ENTRY}/worktrees/`;
|
|
1137
|
+
var NOT_FOUND2 = -1;
|
|
1138
|
+
function linked_worktree_gitdir(cwd) {
|
|
1139
|
+
try {
|
|
1140
|
+
const contents = readFileSync3(path5.join(cwd, GIT_ENTRY), "utf8").trim();
|
|
1141
|
+
return contents.startsWith(GITDIR_PREFIX) ? contents.slice(GITDIR_PREFIX.length).trim() : "";
|
|
1142
|
+
} catch {
|
|
1143
|
+
return "";
|
|
1144
|
+
}
|
|
1145
|
+
}
|
|
1146
|
+
function session_cwd(cwd) {
|
|
1147
|
+
const gitdir = linked_worktree_gitdir(cwd);
|
|
1148
|
+
const absolute = gitdir === "" ? "" : path5.resolve(cwd, gitdir);
|
|
1149
|
+
const segment = absolute.indexOf(WORKTREE_SEGMENT);
|
|
1150
|
+
return segment === NOT_FOUND2 ? cwd : absolute.slice(0, segment);
|
|
1151
|
+
}
|
|
1152
|
+
function read_directory(directory) {
|
|
1153
|
+
try {
|
|
1154
|
+
return readdirSync2(directory);
|
|
1155
|
+
} catch {
|
|
1156
|
+
return [];
|
|
1157
|
+
}
|
|
1158
|
+
}
|
|
1159
|
+
function lane_transcript_directories(main_cwd, home) {
|
|
1160
|
+
const projects = path5.join(home, TRANSCRIPT_ROOT);
|
|
1161
|
+
const prefix = `${project_slug(lane_paths.lane_root(main_cwd))}-`;
|
|
1162
|
+
return read_directory(projects).filter(
|
|
1163
|
+
(name) => name.startsWith(prefix) && issue_number_shape.ISSUE_NUMBER_PATTERN.test(name.slice(prefix.length))
|
|
1164
|
+
).map((name) => path5.join(projects, name));
|
|
1165
|
+
}
|
|
1166
|
+
function transcript_directories(cwd, home = homedir()) {
|
|
1167
|
+
const own2 = transcript_directory(cwd, home);
|
|
1168
|
+
const lanes = session_cwd(cwd) === cwd ? lane_transcript_directories(cwd, home) : [];
|
|
1169
|
+
return [.../* @__PURE__ */ new Set([own2, ...lanes])];
|
|
1170
|
+
}
|
|
1171
|
+
var OWN_DEPTH = 0;
|
|
1172
|
+
function home_directory() {
|
|
1173
|
+
return homedir();
|
|
1174
|
+
}
|
|
1175
|
+
function to_session_file(full_path, session_id, depth) {
|
|
1176
|
+
try {
|
|
1177
|
+
return {
|
|
1178
|
+
session_id,
|
|
1179
|
+
path: full_path,
|
|
1180
|
+
modified_ms: statSync(full_path).mtimeMs,
|
|
1181
|
+
is_delegated: depth > OWN_DEPTH,
|
|
1182
|
+
depth
|
|
1183
|
+
};
|
|
1184
|
+
} catch {
|
|
1185
|
+
return void 0;
|
|
1186
|
+
}
|
|
1187
|
+
}
|
|
1188
|
+
function is_transcript(name) {
|
|
1189
|
+
return name.endsWith(TRANSCRIPT_EXTENSION);
|
|
1190
|
+
}
|
|
1191
|
+
function without_extension(name) {
|
|
1192
|
+
return name.slice(0, -TRANSCRIPT_EXTENSION.length);
|
|
1193
|
+
}
|
|
1194
|
+
function own_files(directory, names) {
|
|
1195
|
+
return names.filter((name) => is_transcript(name)).map((name) => to_session_file(path5.join(directory, name), without_extension(name), OWN_DEPTH)).filter((file) => file !== void 0);
|
|
1196
|
+
}
|
|
1197
|
+
function unit_directory(directory, session_id) {
|
|
1198
|
+
return path5.join(directory, session_id, UNIT_DIRECTORY);
|
|
1199
|
+
}
|
|
1200
|
+
var UNIT_DEPTH = 1;
|
|
1201
|
+
function level_units(subagents_directory, prefix, depth) {
|
|
1202
|
+
return read_directory(subagents_directory).filter((name) => is_transcript(name)).map(
|
|
1203
|
+
(name) => to_session_file(
|
|
1204
|
+
path5.join(subagents_directory, name),
|
|
1205
|
+
`${prefix}${UNIT_ID_SEPARATOR}${without_extension(name)}`,
|
|
1206
|
+
depth
|
|
1207
|
+
)
|
|
1208
|
+
).filter((file) => file !== void 0);
|
|
1209
|
+
}
|
|
1210
|
+
function collect_units(subagents_directory, prefix, depth) {
|
|
1211
|
+
const nested = read_directory(subagents_directory).filter((name) => !is_transcript(name)).flatMap(
|
|
1212
|
+
(name) => collect_units(
|
|
1213
|
+
unit_directory(subagents_directory, name),
|
|
1214
|
+
`${prefix}${UNIT_ID_SEPARATOR}${name}`,
|
|
1215
|
+
depth + 1
|
|
1216
|
+
)
|
|
1217
|
+
);
|
|
1218
|
+
return [...level_units(subagents_directory, prefix, depth), ...nested];
|
|
1219
|
+
}
|
|
1220
|
+
function unit_files(directory, session_name) {
|
|
1221
|
+
return collect_units(unit_directory(directory, session_name), session_name, UNIT_DEPTH);
|
|
1222
|
+
}
|
|
1223
|
+
function list_sessions(directory) {
|
|
1224
|
+
const names = read_directory(directory);
|
|
1225
|
+
const units = names.filter((name) => !is_transcript(name)).flatMap((name) => unit_files(directory, name));
|
|
1226
|
+
return [...own_files(directory, names), ...units].toSorted(
|
|
1227
|
+
(left, right) => right.modified_ms - left.modified_ms
|
|
1228
|
+
);
|
|
1229
|
+
}
|
|
1230
|
+
function list_sessions_across(directories) {
|
|
1231
|
+
const seen = /* @__PURE__ */ new Set();
|
|
1232
|
+
const merged = directories.flatMap((directory) => list_sessions(directory));
|
|
1233
|
+
const newest_first = merged.toSorted((left, right) => right.modified_ms - left.modified_ms);
|
|
1234
|
+
const kept = [];
|
|
1235
|
+
for (const file of newest_first) {
|
|
1236
|
+
if (seen.has(file.session_id)) continue;
|
|
1237
|
+
seen.add(file.session_id);
|
|
1238
|
+
kept.push(file);
|
|
1239
|
+
}
|
|
1240
|
+
return kept;
|
|
1241
|
+
}
|
|
1242
|
+
function owning_session_id(file) {
|
|
1243
|
+
const [owner] = file.session_id.split(UNIT_ID_SEPARATOR);
|
|
1244
|
+
return owner ?? file.session_id;
|
|
1245
|
+
}
|
|
1246
|
+
function parent_session_id(file) {
|
|
1247
|
+
const separator = file.session_id.lastIndexOf(UNIT_ID_SEPARATOR);
|
|
1248
|
+
return separator === NOT_FOUND2 ? file.session_id : file.session_id.slice(0, separator);
|
|
1249
|
+
}
|
|
1250
|
+
function latest_own_index(files) {
|
|
1251
|
+
const index = files.findIndex((file) => !file.is_delegated);
|
|
1252
|
+
return index === -1 ? 0 : index;
|
|
1253
|
+
}
|
|
1254
|
+
function empty_session() {
|
|
1255
|
+
return {
|
|
1256
|
+
records: [],
|
|
1257
|
+
no_usage_lines: 0,
|
|
1258
|
+
malformed_lines: 0,
|
|
1259
|
+
is_readable: false,
|
|
1260
|
+
baseline_tokens: 0
|
|
1261
|
+
};
|
|
1262
|
+
}
|
|
1263
|
+
function tally(content) {
|
|
1264
|
+
const outcomes = content.split("\n").map((line) => cost_usage.parse_line(line));
|
|
1265
|
+
const records = outcomes.flatMap(
|
|
1266
|
+
(outcome) => outcome.kind === "record" ? [outcome.record] : []
|
|
1267
|
+
);
|
|
1268
|
+
const unique = cost_usage.dedupe(records);
|
|
1269
|
+
const [first] = unique;
|
|
1270
|
+
return {
|
|
1271
|
+
records: unique,
|
|
1272
|
+
no_usage_lines: outcomes.filter((outcome) => outcome.kind === "no_usage").length,
|
|
1273
|
+
malformed_lines: outcomes.filter((outcome) => outcome.kind === "malformed").length,
|
|
1274
|
+
is_readable: true,
|
|
1275
|
+
baseline_tokens: first === void 0 ? 0 : cost_usage.billed_input(first.totals)
|
|
1276
|
+
};
|
|
1277
|
+
}
|
|
1278
|
+
function read_session(file) {
|
|
1279
|
+
const content = file_reader.read_if_readable(file.path);
|
|
1280
|
+
if (content === void 0) return { session_id: file.session_id, ...empty_session() };
|
|
1281
|
+
return { session_id: file.session_id, ...tally(content) };
|
|
1282
|
+
}
|
|
1283
|
+
function read_raw(file) {
|
|
1284
|
+
return file_reader.read_if_readable(file.path) ?? "";
|
|
1285
|
+
}
|
|
1286
|
+
function read_optional2(file) {
|
|
1287
|
+
return file_reader.read_if_readable(file.path);
|
|
1288
|
+
}
|
|
1289
|
+
function directory_exists(directory) {
|
|
1290
|
+
try {
|
|
1291
|
+
return statSync(directory).isDirectory();
|
|
1292
|
+
} catch {
|
|
1293
|
+
return false;
|
|
1294
|
+
}
|
|
1295
|
+
}
|
|
1296
|
+
function searched_directories(directories) {
|
|
1297
|
+
return directories.map((directory) => ({
|
|
1298
|
+
path: directory,
|
|
1299
|
+
exists: directory_exists(directory)
|
|
1300
|
+
}));
|
|
1301
|
+
}
|
|
1302
|
+
function describe_searched(directory) {
|
|
1303
|
+
return ` ${directory.path} \u2014 ${directory.exists ? "no transcripts here" : "no such directory"}`;
|
|
1304
|
+
}
|
|
1305
|
+
function missing_message(searched, session_id) {
|
|
1306
|
+
const lead = session_id === void 0 ? "No transcripts found. Searched:" : `No transcript named ${session_id}. Searched:`;
|
|
1307
|
+
const listed = searched.map((directory) => describe_searched(directory));
|
|
1308
|
+
if (session_id !== void 0) return [lead, ...listed];
|
|
1309
|
+
return [
|
|
1310
|
+
lead,
|
|
1311
|
+
...listed,
|
|
1312
|
+
"Claude Code writes them per project; run this from the project it ran in."
|
|
1313
|
+
];
|
|
1314
|
+
}
|
|
1315
|
+
var cost_transcript = {
|
|
1316
|
+
TRANSCRIPT_EXTENSION,
|
|
1317
|
+
TRANSCRIPT_ROOT,
|
|
1318
|
+
UNIT_DIRECTORY,
|
|
1319
|
+
project_slug,
|
|
1320
|
+
transcript_directory,
|
|
1321
|
+
transcript_directories,
|
|
1322
|
+
session_cwd,
|
|
1323
|
+
lane_transcript_directories,
|
|
1324
|
+
unit_directory,
|
|
1325
|
+
list_sessions,
|
|
1326
|
+
list_sessions_across,
|
|
1327
|
+
searched_directories,
|
|
1328
|
+
owning_session_id,
|
|
1329
|
+
parent_session_id,
|
|
1330
|
+
latest_own_index,
|
|
1331
|
+
tally,
|
|
1332
|
+
read_session,
|
|
1333
|
+
read_raw,
|
|
1334
|
+
read_optional: read_optional2,
|
|
1335
|
+
missing_message,
|
|
1336
|
+
home_directory
|
|
1337
|
+
};
|
|
1338
|
+
|
|
1339
|
+
// scripts/cost-runtime/own-session.ts
|
|
1340
|
+
var NOT_FOUND3 = -1;
|
|
1341
|
+
function session_id_of(environment) {
|
|
1342
|
+
const value = environment[agent_session_environment.SESSION_ID_KEY];
|
|
1343
|
+
return value === void 0 || value === "" ? void 0 : value;
|
|
1344
|
+
}
|
|
1345
|
+
function select_own_session(files, environment) {
|
|
1346
|
+
const session_id = session_id_of(environment);
|
|
1347
|
+
if (session_id === void 0) {
|
|
1348
|
+
return { kind: "own", index: cost_transcript.latest_own_index(files) };
|
|
1349
|
+
}
|
|
1350
|
+
const index = files.findIndex((file) => file.session_id === session_id);
|
|
1351
|
+
return index === NOT_FOUND3 ? { kind: "absent", session_id } : { kind: "own", index };
|
|
1352
|
+
}
|
|
1353
|
+
var own_session = {
|
|
1354
|
+
session_id_of,
|
|
1355
|
+
select_own_session
|
|
1356
|
+
};
|
|
1357
|
+
|
|
1358
|
+
// scripts/run/carry/run-carry-conversation.ts
|
|
1359
|
+
var CONVERSATION_QUIET_MS = 6e5;
|
|
1360
|
+
function transcript_of(session_id, directory) {
|
|
1361
|
+
return path6.join(directory, `${session_id}${cost_transcript.TRANSCRIPT_EXTENSION}`);
|
|
1362
|
+
}
|
|
1363
|
+
function own_transcript(environment = process.env, directories = cost_transcript.transcript_directories(process.cwd())) {
|
|
1364
|
+
const session_id = own_session.session_id_of(environment);
|
|
1365
|
+
if (session_id === void 0) return void 0;
|
|
1366
|
+
return directories.map((directory) => transcript_of(session_id, directory)).find((file) => existsSync(file));
|
|
1367
|
+
}
|
|
1368
|
+
function modified_ms(transcript) {
|
|
1369
|
+
try {
|
|
1370
|
+
return statSync2(transcript).mtimeMs;
|
|
1371
|
+
} catch {
|
|
1372
|
+
return void 0;
|
|
1373
|
+
}
|
|
1374
|
+
}
|
|
1375
|
+
function is_recent(modified, now) {
|
|
1376
|
+
return modified !== void 0 && now.getTime() - modified <= CONVERSATION_QUIET_MS;
|
|
1377
|
+
}
|
|
1378
|
+
function is_conversation_live(carry, now = /* @__PURE__ */ new Date(), read_modified = modified_ms) {
|
|
1379
|
+
if (carry.is_handed_off === true || carry.owner_transcript === void 0) return false;
|
|
1380
|
+
return is_recent(read_modified(carry.owner_transcript), now);
|
|
1381
|
+
}
|
|
1382
|
+
function is_same_conversation(carry, owner) {
|
|
1383
|
+
return owner.transcript !== void 0 && owner.transcript === carry.owner_transcript;
|
|
1384
|
+
}
|
|
1385
|
+
function reclaim_owner(carry, owner) {
|
|
1386
|
+
if (carry.is_handed_off === true || !is_same_conversation(carry, owner) || owner.pid === carry.owner_pid) {
|
|
1387
|
+
return carry;
|
|
1388
|
+
}
|
|
1389
|
+
return { ...carry, owner_pid: owner.pid, owner_start: owner.start };
|
|
1390
|
+
}
|
|
1391
|
+
var run_carry_conversation = {
|
|
1392
|
+
CONVERSATION_QUIET_MS,
|
|
1393
|
+
transcript_of,
|
|
1394
|
+
own_transcript,
|
|
1395
|
+
is_conversation_live,
|
|
1396
|
+
is_same_conversation,
|
|
1397
|
+
reclaim_owner
|
|
1398
|
+
};
|
|
1399
|
+
|
|
1400
|
+
// scripts/run/run-headless-keys.ts
|
|
1401
|
+
var HEADLESS_ENV_KEY = "JOSH_RUN_HEADLESS";
|
|
1402
|
+
var HANDOFF_CHILD_KEY = "JOSH_HANDOFF_CHILD";
|
|
1403
|
+
var BESIDE_CHILD_KEY = "JOSH_BESIDE_CHILD";
|
|
1404
|
+
var MARK_KEYS2 = [HEADLESS_ENV_KEY, HANDOFF_CHILD_KEY, BESIDE_CHILD_KEY];
|
|
1405
|
+
var run_headless_keys = {
|
|
1406
|
+
BESIDE_CHILD_KEY,
|
|
1407
|
+
HANDOFF_CHILD_KEY,
|
|
1408
|
+
HEADLESS_ENV_KEY,
|
|
1409
|
+
MARK_KEYS: MARK_KEYS2
|
|
1410
|
+
};
|
|
1411
|
+
|
|
1412
|
+
// scripts/run/carry/run-carry-session.ts
|
|
1413
|
+
var KEY3 = "JOSH_CARRY_SESSION";
|
|
1414
|
+
function own() {
|
|
1415
|
+
if (lane_child_marker.marked_issue(process.env) !== void 0 || process.env[run_headless_keys.BESIDE_CHILD_KEY] === "1" || process.env[run_headless_keys.HANDOFF_CHILD_KEY] === "1") {
|
|
1416
|
+
return void 0;
|
|
1417
|
+
}
|
|
1418
|
+
return process.env[KEY3];
|
|
1419
|
+
}
|
|
1420
|
+
function is_owned_by(carry, owner) {
|
|
1421
|
+
if (carry.owner_session !== void 0) return carry.owner_session === owner.session;
|
|
1422
|
+
if (run_carry_conversation.is_same_conversation(carry, owner)) return true;
|
|
1423
|
+
return carry.owner_pid === owner.pid && carry.owner_start === owner.start;
|
|
1424
|
+
}
|
|
1425
|
+
function retain_execution(carry, owner) {
|
|
1426
|
+
if (owner.session === void 0 || owner.session !== carry.owner_session || owner.pid !== void 0) {
|
|
1427
|
+
return owner;
|
|
1428
|
+
}
|
|
1429
|
+
return {
|
|
1430
|
+
...owner,
|
|
1431
|
+
pid: carry.owner_pid,
|
|
1432
|
+
start: carry.owner_start,
|
|
1433
|
+
provider: carry.scheduler_provider,
|
|
1434
|
+
is_headless: carry.is_owner_headless
|
|
1435
|
+
};
|
|
1436
|
+
}
|
|
1437
|
+
var run_carry_session = { KEY: KEY3, own, is_owned_by, retain_execution };
|
|
1438
|
+
|
|
1439
|
+
// scripts/run/carry/run-carry.ts
|
|
1440
|
+
var CARRY_PREFIX = durable_state.PREFIX.CARRY;
|
|
1441
|
+
var REPOSITORY_DIRECTORY_INDEX = 1;
|
|
1442
|
+
var NO_INCREMENT3 = 0;
|
|
1443
|
+
var MAX_CUTS = 6;
|
|
1444
|
+
var END_COMMAND = "pnpm josh run:carry --end";
|
|
1445
|
+
var RESUME_COMMAND = "pnpm josh run:carry --resume";
|
|
1446
|
+
var READ_COMMAND = "pnpm josh run:carry --json";
|
|
1447
|
+
var NO_OWNER = {};
|
|
1448
|
+
var carry_addition_schema = external_exports.object({ issue: external_exports.number(), is_priority: external_exports.boolean() });
|
|
1449
|
+
var run_carry_schema = external_exports.object({
|
|
1450
|
+
scheduler_provider: agent_provider.PROVIDER_SCHEMA.optional(),
|
|
1451
|
+
invocation: external_exports.string(),
|
|
1452
|
+
started_at: external_exports.string(),
|
|
1453
|
+
merged: external_exports.number(),
|
|
1454
|
+
merged_issues: external_exports.array(external_exports.number()).optional(),
|
|
1455
|
+
filed: external_exports.number(),
|
|
1456
|
+
cuts: external_exports.number(),
|
|
1457
|
+
// Defaulted, so a record that lacks the streak parses with a zero streak rather than failing to read.
|
|
1458
|
+
failures: external_exports.number().default(0),
|
|
1459
|
+
outages: external_exports.number().default(0),
|
|
1460
|
+
last_outage_at: external_exports.string().optional(),
|
|
1461
|
+
// An absent owner reads as "no owner declared", which is the not-provably-live answer rather than a
|
|
1462
|
+
// live one.
|
|
1463
|
+
owner_pid: external_exports.number().optional(),
|
|
1464
|
+
owner_session: external_exports.string().optional(),
|
|
1465
|
+
owner_start: external_exports.string().optional(),
|
|
1466
|
+
owner_transcript: external_exports.string().optional(),
|
|
1467
|
+
is_owner_headless: external_exports.boolean().optional(),
|
|
1468
|
+
is_handed_off: external_exports.boolean().optional(),
|
|
1469
|
+
done: external_exports.array(external_exports.number()).optional(),
|
|
1470
|
+
retrospective: external_exports.boolean().optional(),
|
|
1471
|
+
added: external_exports.array(carry_addition_schema).optional(),
|
|
1472
|
+
lane_limit: external_exports.number().int().positive().optional(),
|
|
1473
|
+
launch_limit: external_exports.number().int().positive().optional()
|
|
1474
|
+
});
|
|
1475
|
+
function carry_path(git_directory) {
|
|
1476
|
+
return durable_state.path(CARRY_PREFIX, git_directory);
|
|
1477
|
+
}
|
|
1478
|
+
async function repository_directory() {
|
|
1479
|
+
const directories = await git_command.git_directories();
|
|
1480
|
+
return directories[REPOSITORY_DIRECTORY_INDEX];
|
|
1481
|
+
}
|
|
1482
|
+
function parse_carry(raw) {
|
|
1483
|
+
return json_value.parse_with(raw, run_carry_schema);
|
|
1484
|
+
}
|
|
1485
|
+
function classify2(raw) {
|
|
1486
|
+
if (raw === void 0) return { kind: "none" };
|
|
1487
|
+
const carry = parse_carry(raw);
|
|
1488
|
+
if (carry === void 0 || Number.isNaN(Date.parse(carry.started_at))) {
|
|
1489
|
+
return { kind: "unreadable" };
|
|
1490
|
+
}
|
|
1491
|
+
return { kind: "carried", carry };
|
|
1492
|
+
}
|
|
1493
|
+
function read_carry(target2) {
|
|
1494
|
+
return classify2(stamp_file.read_stamp_text(target2));
|
|
1495
|
+
}
|
|
1496
|
+
function owner_of(pid, read = process_identity.read_start, transcript = run_carry_conversation.own_transcript()) {
|
|
1497
|
+
return { pid, start: read(pid), transcript };
|
|
1498
|
+
}
|
|
1499
|
+
function session_owner() {
|
|
1500
|
+
const pid = agent_session_environment.own_session_pid();
|
|
1501
|
+
const owner = pid === void 0 ? NO_OWNER : owner_of(pid);
|
|
1502
|
+
const session = run_carry_session.own();
|
|
1503
|
+
return session === void 0 ? owner : { ...owner, session };
|
|
1504
|
+
}
|
|
1505
|
+
function fresh_carry(invocation, owner, now) {
|
|
1506
|
+
return {
|
|
1507
|
+
...owner.provider && { scheduler_provider: owner.provider },
|
|
1508
|
+
invocation,
|
|
1509
|
+
started_at: now.toISOString(),
|
|
1510
|
+
merged: NO_INCREMENT3,
|
|
1511
|
+
filed: NO_INCREMENT3,
|
|
1512
|
+
cuts: NO_INCREMENT3,
|
|
1513
|
+
failures: NO_INCREMENT3,
|
|
1514
|
+
outages: NO_INCREMENT3,
|
|
1515
|
+
owner_pid: owner.pid,
|
|
1516
|
+
owner_session: owner.session,
|
|
1517
|
+
owner_start: owner.start,
|
|
1518
|
+
owner_transcript: owner.transcript,
|
|
1519
|
+
is_owner_headless: owner.is_headless
|
|
1520
|
+
};
|
|
1521
|
+
}
|
|
1522
|
+
function begin_carry(target2, invocation, owner = NO_OWNER, now = /* @__PURE__ */ new Date()) {
|
|
1523
|
+
const carry = fresh_carry(invocation, owner, now);
|
|
1524
|
+
return stamp_file.create_stamp(target2, carry) ? carry : void 0;
|
|
1525
|
+
}
|
|
1526
|
+
function adopt_carry(target2, carry, owner = NO_OWNER) {
|
|
1527
|
+
const next_owner = run_carry_session.retain_execution(carry, owner);
|
|
1528
|
+
const next = {
|
|
1529
|
+
...carry,
|
|
1530
|
+
scheduler_provider: next_owner.provider,
|
|
1531
|
+
owner_pid: next_owner.pid,
|
|
1532
|
+
owner_session: owner.session,
|
|
1533
|
+
owner_start: next_owner.start,
|
|
1534
|
+
owner_transcript: owner.transcript,
|
|
1535
|
+
is_owner_headless: next_owner.is_headless,
|
|
1536
|
+
is_handed_off: false
|
|
1537
|
+
};
|
|
1538
|
+
stamp_file.remove_stamp(target2);
|
|
1539
|
+
return stamp_file.create_stamp(target2, next) ? next : void 0;
|
|
1540
|
+
}
|
|
1541
|
+
function is_owner_live(carry, now = /* @__PURE__ */ new Date(), same_process = process_identity.is_same_process) {
|
|
1542
|
+
if (same_process(carry.owner_pid, carry.owner_start) !== false) return true;
|
|
1543
|
+
return carry.is_owner_headless !== true && run_carry_conversation.is_conversation_live(carry, now);
|
|
1544
|
+
}
|
|
1545
|
+
var { is_owned_by: is_owned_by2 } = run_carry_session;
|
|
1546
|
+
function is_foreign_live_owner(carry, owner) {
|
|
1547
|
+
return is_owner_live(carry) && !is_owned_by2(carry, owner);
|
|
1548
|
+
}
|
|
1549
|
+
function is_held_by_self(carry, caller = owner_of(process.pid)) {
|
|
1550
|
+
return carry.owner_pid === caller.pid && carry.owner_start === caller.start;
|
|
1551
|
+
}
|
|
1552
|
+
function is_held_by_another(carry, is_live = is_owner_live) {
|
|
1553
|
+
return !is_held_by_self(carry) && is_live(carry);
|
|
1554
|
+
}
|
|
1555
|
+
function is_handed_off_to(carry, invocation) {
|
|
1556
|
+
return carry.is_handed_off === true && carry.invocation === invocation;
|
|
1557
|
+
}
|
|
1558
|
+
function classify_claim(carry, request) {
|
|
1559
|
+
if (is_handed_off_to(carry, request.invocation)) return "resume";
|
|
1560
|
+
if (is_foreign_live_owner(carry, request.owner)) return "busy";
|
|
1561
|
+
if (carry.invocation !== request.invocation) return "mismatch";
|
|
1562
|
+
return request.is_adoption ? "resume" : "standing";
|
|
1563
|
+
}
|
|
1564
|
+
function is_count_refused(carry, owner) {
|
|
1565
|
+
return carry.is_handed_off === true || is_foreign_live_owner(carry, owner);
|
|
1566
|
+
}
|
|
1567
|
+
function is_at_cut_cap(carry) {
|
|
1568
|
+
return carry.cuts >= MAX_CUTS;
|
|
1569
|
+
}
|
|
1570
|
+
function end_carry(target2) {
|
|
1571
|
+
stamp_file.remove_stamp(target2);
|
|
1572
|
+
}
|
|
1573
|
+
function retrospective_done_of(read) {
|
|
1574
|
+
return read.kind === "carried" && read.carry.retrospective === true;
|
|
1575
|
+
}
|
|
1576
|
+
function left_of(carry, declared) {
|
|
1577
|
+
const done = carry.done ?? [];
|
|
1578
|
+
return run_carry_added.ordered(declared, carry.added).filter((issue) => !done.includes(issue));
|
|
1579
|
+
}
|
|
1580
|
+
function remaining_of(carry) {
|
|
1581
|
+
if (carry === void 0) return void 0;
|
|
1582
|
+
const declared = run_invocation.issue_numbers(carry.invocation);
|
|
1583
|
+
const left = left_of(carry, declared ?? []);
|
|
1584
|
+
return declared === void 0 && left.length === 0 ? void 0 : left;
|
|
1585
|
+
}
|
|
1586
|
+
function done_note(carry) {
|
|
1587
|
+
const done = carry.done ?? [];
|
|
1588
|
+
return done.length === 0 ? "" : `, issues ${done.join(", ")} done`;
|
|
1589
|
+
}
|
|
1590
|
+
function describe_carry(carry) {
|
|
1591
|
+
return `${carry.invocation} started ${carry.started_at}; ${String(carry.merged)} merged, ${String(carry.filed)} filed, ${String(carry.failures)} failed in a row, ${String(carry.outages)} outage(s) in a row, ${String(carry.cuts)} cut(s) crossed${done_note(carry)}`;
|
|
1592
|
+
}
|
|
1593
|
+
function mismatch_message(carry, invocation) {
|
|
1594
|
+
return `A different invocation is carried here \u2014 ${describe_carry(carry)}. This one is \`${invocation}\`. End the standing record with \`${END_COMMAND}\` once you know its run is over, then begin again.`;
|
|
1595
|
+
}
|
|
1596
|
+
function busy_message(carry) {
|
|
1597
|
+
return `A live run holds this budget \u2014 ${describe_carry(carry)}, owner pid ${String(carry.owner_pid)} still running. Nothing was established. Wait for that run, or end its record with \`${END_COMMAND}\` once you know it is over.`;
|
|
1598
|
+
}
|
|
1599
|
+
function claim_command(invocation) {
|
|
1600
|
+
return `${RESUME_COMMAND} "${invocation}"`;
|
|
1601
|
+
}
|
|
1602
|
+
function standing_message(carry) {
|
|
1603
|
+
return `A run record is standing here that no cut handed off \u2014 ${describe_carry(carry)}. Nothing was established. Carry that budget with \`${claim_command(carry.invocation)}\`, or discard it with \`${END_COMMAND}\` and begin again.`;
|
|
1604
|
+
}
|
|
1605
|
+
function count_refused_message(carry) {
|
|
1606
|
+
if (carry.is_handed_off === true) {
|
|
1607
|
+
return `This budget was handed off at a cut and is waiting for its successor \u2014 ${describe_carry(carry)}. Nothing was counted; the cutting session must not advance a handed-off budget.`;
|
|
1608
|
+
}
|
|
1609
|
+
return `A live run owns this budget \u2014 ${describe_carry(carry)}, owner pid ${String(carry.owner_pid)} still running. Nothing was counted; only its owner advances the budget.`;
|
|
1610
|
+
}
|
|
1611
|
+
function lost_message() {
|
|
1612
|
+
return `Another process established a run record here first, so nothing was established. Read it with \`${READ_COMMAND}\`.`;
|
|
1613
|
+
}
|
|
1614
|
+
function nothing_to_resume_message() {
|
|
1615
|
+
return `Nothing is carried here, so there is no budget to resume. Begin one with \`pnpm josh run:carry --begin "<invocation>"\`.`;
|
|
1616
|
+
}
|
|
1617
|
+
function unreadable_message() {
|
|
1618
|
+
return `A run record is here but could not be read; clear it with \`${END_COMMAND}\` once you know no run is using it.`;
|
|
1619
|
+
}
|
|
1620
|
+
function unknown_message() {
|
|
1621
|
+
return "This repository\u2019s git directory could not be read, so no run record was established.";
|
|
1622
|
+
}
|
|
1623
|
+
var run_carry = {
|
|
1624
|
+
END_COMMAND,
|
|
1625
|
+
MAX_CUTS,
|
|
1626
|
+
NO_OWNER,
|
|
1627
|
+
RESUME_COMMAND,
|
|
1628
|
+
adopt_carry,
|
|
1629
|
+
apply_change: run_carry_change.apply_change,
|
|
1630
|
+
begin_carry,
|
|
1631
|
+
busy_message,
|
|
1632
|
+
carry_path,
|
|
1633
|
+
claim_command,
|
|
1634
|
+
classify: classify2,
|
|
1635
|
+
classify_claim,
|
|
1636
|
+
count_refused_message,
|
|
1637
|
+
is_at_cut_cap,
|
|
1638
|
+
describe_carry,
|
|
1639
|
+
end_carry,
|
|
1640
|
+
mismatch_message,
|
|
1641
|
+
fresh_carry,
|
|
1642
|
+
is_count_refused,
|
|
1643
|
+
is_foreign_live_owner,
|
|
1644
|
+
is_held_by_another,
|
|
1645
|
+
is_held_by_self,
|
|
1646
|
+
is_owner_live,
|
|
1647
|
+
lost_message,
|
|
1648
|
+
nothing_to_resume_message,
|
|
1649
|
+
owner_of,
|
|
1650
|
+
parse_carry,
|
|
1651
|
+
read_carry,
|
|
1652
|
+
remaining_of,
|
|
1653
|
+
repository_directory,
|
|
1654
|
+
retrospective_done_of,
|
|
1655
|
+
session_owner,
|
|
1656
|
+
standing_message,
|
|
1657
|
+
unknown_message,
|
|
1658
|
+
unreadable_message
|
|
1659
|
+
};
|
|
1660
|
+
|
|
1661
|
+
// scripts/lane/lane-ledger-write.ts
|
|
1662
|
+
import { closeSync, constants as constants2, openSync, writeSync } from "node:fs";
|
|
1663
|
+
|
|
1664
|
+
// scripts/lane/lane-ledger-kind.ts
|
|
1665
|
+
var KIND = {
|
|
1666
|
+
STARTUP: "startup",
|
|
1667
|
+
MERGE: "merge",
|
|
1668
|
+
GATE: "gate",
|
|
1669
|
+
LOAD: "load",
|
|
1670
|
+
DISPATCH: "dispatch",
|
|
1671
|
+
STAGE: "stage",
|
|
1672
|
+
STOP: "stop",
|
|
1673
|
+
CHAIN: "chain",
|
|
1674
|
+
OVERLAP: "overlap",
|
|
1675
|
+
HELD: "held",
|
|
1676
|
+
RELEASED: "released",
|
|
1677
|
+
ROUND_ONE: "round-one",
|
|
1678
|
+
ROUND_TWO: "round-two",
|
|
1679
|
+
OFFERABLE: "offerable",
|
|
1680
|
+
OFFER: "offer",
|
|
1681
|
+
CORE_WAIT: "core-wait",
|
|
1682
|
+
CORE_ADMISSION: "core-admission",
|
|
1683
|
+
UNIT_FILES: "unit-files",
|
|
1684
|
+
TEST_RELATED: "test-related",
|
|
1685
|
+
TEST_PINNED: "test-pinned",
|
|
1686
|
+
SPLIT_NOTICE: "split-notice",
|
|
1687
|
+
SPLIT_FILED: "split-filed",
|
|
1688
|
+
UNPLANNED_NOTICE: "unplanned-notice",
|
|
1689
|
+
LANE_STATE: "lane-state",
|
|
1690
|
+
PUSH_MISS: "push-miss",
|
|
1691
|
+
EARLY_PUSH: "early-push",
|
|
1692
|
+
SHIP_LAP: "ship-lap",
|
|
1693
|
+
SIZE: "size",
|
|
1694
|
+
LIMIT: "limit"
|
|
1695
|
+
};
|
|
1696
|
+
var lane_ledger_kind = { KIND };
|
|
1697
|
+
|
|
1698
|
+
// scripts/lane/lane-ledger-write.ts
|
|
1699
|
+
var LEDGER_PREFIX = durable_state.PREFIX.LANE_LEDGER;
|
|
1700
|
+
var LEDGER_SUFFIX = ".jsonl";
|
|
1701
|
+
var LINE_SEPARATOR = "\n";
|
|
1702
|
+
var CI_WAIT_STAGE = "ci-wait";
|
|
1703
|
+
var CODERABBIT_WAIT_STAGE = "coderabbit-wait";
|
|
1704
|
+
var CODERABBIT_RATE_LIMIT_STAGE = "coderabbit-rate-limit";
|
|
1705
|
+
var CODERABBIT_RETRIGGER_STAGE = "coderabbit-retriggered";
|
|
1706
|
+
var PRE_DETACH_STAGE = "pre-detach";
|
|
1707
|
+
var ROUND_ONE_REUSED = "reused";
|
|
1708
|
+
var LEDGER_FILE_MODE = 384;
|
|
1709
|
+
var { O_APPEND, O_CREAT, O_NOFOLLOW, O_WRONLY } = constants2;
|
|
1710
|
+
var APPEND_FLAGS = O_WRONLY | O_APPEND | O_CREAT | O_NOFOLLOW;
|
|
1711
|
+
var { KIND: KIND2 } = lane_ledger_kind;
|
|
1712
|
+
function target_of(repository) {
|
|
1713
|
+
return durable_state.path(LEDGER_PREFIX, repository, LEDGER_SUFFIX);
|
|
1714
|
+
}
|
|
1715
|
+
async function target() {
|
|
1716
|
+
if (process.env["VITEST"] !== void 0) return void 0;
|
|
1717
|
+
try {
|
|
1718
|
+
const repository = await run_carry.repository_directory();
|
|
1719
|
+
return repository === void 0 ? void 0 : target_of(repository);
|
|
1720
|
+
} catch {
|
|
1721
|
+
return void 0;
|
|
1722
|
+
}
|
|
1723
|
+
}
|
|
1724
|
+
function append(path7, entry) {
|
|
1725
|
+
const descriptor = openSync(path7, APPEND_FLAGS, LEDGER_FILE_MODE);
|
|
1726
|
+
try {
|
|
1727
|
+
if (!stamp_file.is_own_regular_file(path7)) {
|
|
1728
|
+
throw new Error("Ledger is not an owned regular file");
|
|
1729
|
+
}
|
|
1730
|
+
writeSync(descriptor, `${JSON.stringify(entry)}${LINE_SEPARATOR}`);
|
|
1731
|
+
} finally {
|
|
1732
|
+
closeSync(descriptor);
|
|
1733
|
+
}
|
|
1734
|
+
}
|
|
1735
|
+
async function record(entry, path7) {
|
|
1736
|
+
try {
|
|
1737
|
+
const destination = path7 ?? await target();
|
|
1738
|
+
if (destination !== void 0) append(destination, entry);
|
|
1739
|
+
} catch {
|
|
1740
|
+
}
|
|
1741
|
+
}
|
|
1742
|
+
function now_iso() {
|
|
1743
|
+
return (/* @__PURE__ */ new Date()).toISOString();
|
|
1744
|
+
}
|
|
1745
|
+
async function record_gate(path7, gate) {
|
|
1746
|
+
await record({ kind: KIND2.GATE, at: now_iso(), ...gate }, path7);
|
|
1747
|
+
}
|
|
1748
|
+
async function record_merge(issue, at = /* @__PURE__ */ new Date()) {
|
|
1749
|
+
await record({ kind: KIND2.MERGE, at: at.toISOString(), issue });
|
|
1750
|
+
}
|
|
1751
|
+
async function record_dispatch(issue, path7) {
|
|
1752
|
+
await record({ kind: KIND2.DISPATCH, at: now_iso(), issue }, path7);
|
|
1753
|
+
}
|
|
1754
|
+
async function record_stage(stage, path7) {
|
|
1755
|
+
await record({ kind: KIND2.STAGE, at: now_iso(), ...stage }, path7);
|
|
1756
|
+
}
|
|
1757
|
+
async function record_stop(stop, path7) {
|
|
1758
|
+
await record({ kind: KIND2.STOP, at: now_iso(), ...stop }, path7);
|
|
1759
|
+
}
|
|
1760
|
+
async function record_chain(chain, path7) {
|
|
1761
|
+
await record({ kind: KIND2.CHAIN, at: now_iso(), ...chain }, path7);
|
|
1762
|
+
}
|
|
1763
|
+
async function record_overlap(overlap, path7) {
|
|
1764
|
+
await record({ kind: KIND2.OVERLAP, at: now_iso(), ...overlap }, path7);
|
|
1765
|
+
}
|
|
1766
|
+
async function record_held(held, path7) {
|
|
1767
|
+
const waiting = held.waiting ?? [];
|
|
1768
|
+
const named = waiting.length > 0 ? { waiting: [...waiting] } : {};
|
|
1769
|
+
await record({ kind: KIND2.HELD, at: now_iso(), reason: held.reason, ...named }, path7);
|
|
1770
|
+
}
|
|
1771
|
+
async function record_released(path7) {
|
|
1772
|
+
await record({ kind: KIND2.RELEASED, at: now_iso() }, path7);
|
|
1773
|
+
}
|
|
1774
|
+
async function record_lane_state(change, path7) {
|
|
1775
|
+
await record({ kind: KIND2.LANE_STATE, at: now_iso(), ...change }, path7);
|
|
1776
|
+
}
|
|
1777
|
+
async function record_offerable(is_offerable, path7) {
|
|
1778
|
+
await record({ kind: KIND2.OFFERABLE, at: now_iso(), is_offerable }, path7);
|
|
1779
|
+
}
|
|
1780
|
+
async function record_offer(offer, path7) {
|
|
1781
|
+
await record({ kind: KIND2.OFFER, at: now_iso(), ...offer }, path7);
|
|
1782
|
+
}
|
|
1783
|
+
async function record_round_one(round_one, path7) {
|
|
1784
|
+
await record({ kind: KIND2.ROUND_ONE, at: now_iso(), ...round_one }, path7);
|
|
1785
|
+
}
|
|
1786
|
+
async function record_round_two(round_two, path7) {
|
|
1787
|
+
await record({ kind: KIND2.ROUND_TWO, at: now_iso(), ...round_two }, path7);
|
|
1788
|
+
}
|
|
1789
|
+
async function record_core_wait(wait, path7) {
|
|
1790
|
+
const is_immediate = wait.admission_reason !== void 0 && wait.wait_reason === void 0;
|
|
1791
|
+
const kind = is_immediate ? KIND2.CORE_ADMISSION : KIND2.CORE_WAIT;
|
|
1792
|
+
await record({ kind, at: now_iso(), ...wait }, path7);
|
|
1793
|
+
}
|
|
1794
|
+
async function record_unit_files(files, path7) {
|
|
1795
|
+
await record({ kind: KIND2.UNIT_FILES, at: now_iso(), files: [...files] }, path7);
|
|
1796
|
+
}
|
|
1797
|
+
async function record_test_related(run, path7) {
|
|
1798
|
+
await record({ kind: KIND2.TEST_RELATED, at: now_iso(), ...run }, path7);
|
|
1799
|
+
}
|
|
1800
|
+
async function record_test_pinned(run, path7) {
|
|
1801
|
+
await record({ kind: KIND2.TEST_PINNED, at: now_iso(), ...run }, path7);
|
|
1802
|
+
}
|
|
1803
|
+
async function record_split_notice(notice, path7) {
|
|
1804
|
+
await record({ kind: KIND2.SPLIT_NOTICE, at: now_iso(), ...notice }, path7);
|
|
1805
|
+
}
|
|
1806
|
+
async function record_split_filed(filed, path7) {
|
|
1807
|
+
const destination = path7 ?? await target();
|
|
1808
|
+
if (destination === void 0) throw new Error("Could not resolve the split-child ledger");
|
|
1809
|
+
append(destination, { kind: KIND2.SPLIT_FILED, at: now_iso(), ...filed });
|
|
1810
|
+
}
|
|
1811
|
+
async function record_push_miss(miss, path7) {
|
|
1812
|
+
await record({ kind: KIND2.PUSH_MISS, at: now_iso(), ...miss }, path7);
|
|
1813
|
+
}
|
|
1814
|
+
async function record_early_push(push, path7) {
|
|
1815
|
+
await record({ kind: KIND2.EARLY_PUSH, at: now_iso(), ...push }, path7);
|
|
1816
|
+
}
|
|
1817
|
+
async function record_ship_lap(lap, path7) {
|
|
1818
|
+
await record({ kind: KIND2.SHIP_LAP, at: now_iso(), ...lap }, path7);
|
|
1819
|
+
}
|
|
1820
|
+
async function record_size(size, path7) {
|
|
1821
|
+
await record({ kind: KIND2.SIZE, at: now_iso(), ...size }, path7);
|
|
1822
|
+
}
|
|
1823
|
+
async function record_unplanned_notice(notice, path7) {
|
|
1824
|
+
await record({ kind: KIND2.UNPLANNED_NOTICE, at: now_iso(), ...notice }, path7);
|
|
1825
|
+
}
|
|
1826
|
+
var lane_ledger_write = {
|
|
1827
|
+
CI_WAIT_STAGE,
|
|
1828
|
+
CODERABBIT_RATE_LIMIT_STAGE,
|
|
1829
|
+
CODERABBIT_RETRIGGER_STAGE,
|
|
1830
|
+
CODERABBIT_WAIT_STAGE,
|
|
1831
|
+
KIND: KIND2,
|
|
1832
|
+
LINE_SEPARATOR,
|
|
1833
|
+
PRE_DETACH_STAGE,
|
|
1834
|
+
ROUND_ONE_REUSED,
|
|
1835
|
+
append,
|
|
1836
|
+
record,
|
|
1837
|
+
record_chain,
|
|
1838
|
+
record_core_wait,
|
|
1839
|
+
record_dispatch,
|
|
1840
|
+
record_gate,
|
|
1841
|
+
record_held,
|
|
1842
|
+
record_lane_state,
|
|
1843
|
+
record_released,
|
|
1844
|
+
record_merge,
|
|
1845
|
+
record_overlap,
|
|
1846
|
+
record_offer,
|
|
1847
|
+
record_offerable,
|
|
1848
|
+
record_push_miss,
|
|
1849
|
+
record_early_push,
|
|
1850
|
+
record_round_one,
|
|
1851
|
+
record_round_two,
|
|
1852
|
+
record_ship_lap,
|
|
1853
|
+
record_size,
|
|
1854
|
+
record_split_filed,
|
|
1855
|
+
record_split_notice,
|
|
1856
|
+
record_stage,
|
|
1857
|
+
record_stop,
|
|
1858
|
+
record_test_pinned,
|
|
1859
|
+
record_test_related,
|
|
1860
|
+
record_unit_files,
|
|
1861
|
+
record_unplanned_notice,
|
|
1862
|
+
target,
|
|
1863
|
+
target_of
|
|
1864
|
+
};
|
|
1865
|
+
|
|
1866
|
+
// scripts/lib/inherited-scope.ts
|
|
1867
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
1868
|
+
function storage(key) {
|
|
1869
|
+
const symbol = Symbol.for(key);
|
|
1870
|
+
const existing = Reflect.get(globalThis, symbol);
|
|
1871
|
+
const scope = existing instanceof AsyncLocalStorage ? existing : new AsyncLocalStorage();
|
|
1872
|
+
Reflect.set(globalThis, symbol, scope);
|
|
1873
|
+
return scope;
|
|
1874
|
+
}
|
|
1875
|
+
function create(key, schema) {
|
|
1876
|
+
const scope = storage(key);
|
|
1877
|
+
function local() {
|
|
1878
|
+
return schema.safeParse(scope.getStore()).data;
|
|
1879
|
+
}
|
|
1880
|
+
function current() {
|
|
1881
|
+
return local() ?? json_value.parse_with(process.env[key] ?? "", schema);
|
|
1882
|
+
}
|
|
1883
|
+
async function within(value, run) {
|
|
1884
|
+
return await scope.run(value, run);
|
|
1885
|
+
}
|
|
1886
|
+
function environment() {
|
|
1887
|
+
const value = current();
|
|
1888
|
+
return value === void 0 ? {} : { [key]: JSON.stringify(value) };
|
|
1889
|
+
}
|
|
1890
|
+
return { current, local, within, environment };
|
|
1891
|
+
}
|
|
1892
|
+
var inherited_scope = { create };
|
|
1893
|
+
|
|
1894
|
+
export {
|
|
1895
|
+
issue_number_shape,
|
|
1896
|
+
durable_state,
|
|
1897
|
+
agent_session_environment,
|
|
1898
|
+
agent_provider,
|
|
1899
|
+
process_identity,
|
|
1900
|
+
cli_flags,
|
|
1901
|
+
run_invocation,
|
|
1902
|
+
lane_paths,
|
|
1903
|
+
file_reader,
|
|
1904
|
+
time_instant,
|
|
1905
|
+
cost_usage,
|
|
1906
|
+
cost_transcript,
|
|
1907
|
+
own_session,
|
|
1908
|
+
lane_child_marker,
|
|
1909
|
+
run_headless_keys,
|
|
1910
|
+
run_carry_session,
|
|
1911
|
+
run_carry,
|
|
1912
|
+
lane_ledger_kind,
|
|
1913
|
+
lane_ledger_write,
|
|
1914
|
+
inherited_scope
|
|
1915
|
+
};
|