@joshuafolkken/kit 1.3000.0 → 1.3044.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/backlogrun-steps.md +1 -1
- package/.claude/skills/workflow-commands/kickoff.md +6 -0
- package/.claude/skills/workflow-commands/progress-watcher.md +10 -8
- package/dist/.inputs-verified.json +1 -1
- package/dist/commands/adopt.js +12 -12
- package/dist/commands/auto-ok-judge-cli.js +18 -14
- package/dist/commands/auto-ok-main.js +42 -40
- package/dist/commands/backlog-budget-main.js +3 -3
- package/dist/commands/backlog-drive-cli.js +276 -188
- package/dist/commands/backlog-next-main.js +77 -75
- package/dist/commands/backlog-offer-main.js +80 -78
- package/dist/commands/backlog-plan-cli.js +96 -97
- package/dist/commands/backlog-triage-cli.js +94 -92
- package/dist/commands/backlogrun-cli.js +212 -206
- package/dist/commands/behavior-cli.js +12 -13
- package/dist/commands/bump-version-main.js +2 -2
- package/dist/commands/bytes-command.js +61 -22
- package/dist/commands/check-related.js +61 -60
- package/dist/commands/{chunk-X7PN54LZ.js → chunk-22DVQCP6.js} +16 -6
- package/dist/commands/{chunk-UTBVTCQN.js → chunk-24OATKOF.js} +301 -168
- package/dist/commands/{chunk-7GHOFHUS.js → chunk-24ZDAWML.js} +3 -3
- package/dist/commands/{chunk-HBNB3TLG.js → chunk-2BB5ZR2F.js} +13 -7
- package/dist/commands/{chunk-F22G3VDB.js → chunk-2BC33QPY.js} +1 -1
- package/dist/commands/{chunk-72EW7AVI.js → chunk-2BJJUTZA.js} +2 -2
- package/dist/commands/{chunk-XDQOWUVT.js → chunk-2CXT6MBR.js} +4 -4
- package/dist/commands/{chunk-TVJE67O2.js → chunk-2EZTYLO4.js} +6 -6
- package/dist/commands/{chunk-JLYW7CP6.js → chunk-2PHOLX62.js} +1 -1
- package/dist/commands/{chunk-6EU5ZCDP.js → chunk-2QM72JCJ.js} +23 -87
- package/dist/commands/{chunk-EFHSCUFN.js → chunk-2VFPUPSG.js} +2 -2
- package/dist/commands/{chunk-ATRMETHT.js → chunk-2XAH3MHV.js} +1 -1
- package/dist/commands/{chunk-T2E724HN.js → chunk-34JJYCIY.js} +2 -2
- package/dist/commands/{chunk-REMKUFAC.js → chunk-34KZDKQJ.js} +1 -1
- package/dist/commands/{chunk-GK2KY4MO.js → chunk-352KLSFX.js} +3 -3
- package/dist/commands/{chunk-7S6VRZOH.js → chunk-3AEDZZNL.js} +5 -5
- package/dist/commands/{chunk-KVJDDECB.js → chunk-3B2HEFNO.js} +2 -2
- package/dist/commands/{chunk-HZBTXKT2.js → chunk-3Z425MM3.js} +2 -2
- package/dist/commands/{chunk-J3G2R64I.js → chunk-3ZOX4G4U.js} +3 -3
- package/dist/commands/{chunk-LRS2OS5J.js → chunk-452HWOJ7.js} +2 -2
- package/dist/commands/{chunk-HRT4KWP4.js → chunk-475EFIJV.js} +1 -1
- package/dist/commands/{chunk-4HBVHYNL.js → chunk-47UZB54M.js} +3 -3
- package/dist/commands/{chunk-H4LYG37R.js → chunk-4DN4XVPL.js} +6 -6
- package/dist/commands/{chunk-TMLNI3YW.js → chunk-4HERA2GY.js} +1 -1
- package/dist/commands/{chunk-W6V4DWC5.js → chunk-4JI35CVO.js} +1 -1
- package/dist/commands/{chunk-YT342DRV.js → chunk-4L4LNWZ7.js} +2 -2
- package/dist/commands/{chunk-ZZAH3YQP.js → chunk-4N32QKJZ.js} +6 -6
- package/dist/commands/{chunk-GDUK5YPO.js → chunk-4NRSFLG7.js} +12 -12
- package/dist/commands/{chunk-O5QZ2S6X.js → chunk-4OKRPAUT.js} +4 -4
- package/dist/commands/{chunk-QDFDB4CF.js → chunk-4Q64PG46.js} +13 -13
- package/dist/commands/{chunk-HO52D6JY.js → chunk-4UDTQVDD.js} +14 -14
- package/dist/commands/{chunk-HPVLI26Z.js → chunk-4WR2LEZL.js} +6 -6
- package/dist/commands/{chunk-DP7WIGQ4.js → chunk-4ZJOC6OK.js} +4 -4
- package/dist/commands/{chunk-WTRDWEUQ.js → chunk-4ZQM4I7R.js} +12 -12
- package/dist/commands/{chunk-OTZJXU2R.js → chunk-54X37JEJ.js} +8 -8
- package/dist/commands/{chunk-A5V7EWIX.js → chunk-56KW5EOK.js} +2 -2
- package/dist/commands/chunk-5CG3XU3O.js +74 -0
- package/dist/commands/{chunk-FC33R5UN.js → chunk-5ESZLHDZ.js} +13 -15
- package/dist/commands/{chunk-OVA7STGP.js → chunk-5FBRMARM.js} +9 -9
- package/dist/commands/{chunk-SK2LJBFS.js → chunk-5PCK53WP.js} +3 -3
- package/dist/commands/{chunk-6NV2F7QH.js → chunk-5RG4S66L.js} +1 -1
- package/dist/commands/{chunk-JOARHU3M.js → chunk-5UJGACVN.js} +1 -1
- package/dist/commands/{chunk-NKOET4FB.js → chunk-5Y7B7FDL.js} +2 -2
- package/dist/commands/{chunk-XMBRXCIE.js → chunk-5Z6E5ZUV.js} +4 -4
- package/dist/commands/{chunk-RZ4OKKPM.js → chunk-5ZNUH4LV.js} +2 -2
- package/dist/commands/{chunk-7CHCZBNF.js → chunk-6CFHLMKM.js} +4 -4
- package/dist/commands/{chunk-TXXYC7EV.js → chunk-6DDK5XWK.js} +1 -1
- package/dist/commands/{chunk-2TQXCH2K.js → chunk-6GQX752S.js} +3 -3
- package/dist/commands/{chunk-RY6ZDHKB.js → chunk-6MAZ55GF.js} +107 -84
- package/dist/commands/{chunk-SNFLV7VV.js → chunk-6RUWU2SB.js} +2 -2
- package/dist/commands/{chunk-D4SZK7H2.js → chunk-6TIVDEKG.js} +2 -2
- package/dist/commands/{chunk-RIQ75QWR.js → chunk-6UCWAFQY.js} +55 -43
- package/dist/commands/{chunk-4D5KWMFL.js → chunk-6YURRFRU.js} +19 -19
- package/dist/commands/{chunk-7MOZEEFJ.js → chunk-6YVURZAJ.js} +1 -1
- package/dist/commands/{chunk-73JOEKIC.js → chunk-6Z4YZG7P.js} +5 -5
- package/dist/commands/{chunk-NJ53AWJU.js → chunk-77BIN247.js} +9 -9
- package/dist/commands/{chunk-MZHOPRI6.js → chunk-7ABHNNY3.js} +7 -7
- package/dist/commands/{chunk-6WTVAL4D.js → chunk-7C7FOKJK.js} +1 -1
- package/dist/commands/{chunk-KVSSLDA3.js → chunk-7HAGC6SW.js} +5 -5
- package/dist/commands/{chunk-IG22Y5MA.js → chunk-7KKUFLH5.js} +1 -1
- package/dist/commands/{chunk-ZQ3CKRMP.js → chunk-7MJYLUF4.js} +2 -2
- package/dist/commands/{chunk-6UGFS3EU.js → chunk-7NHZCI5Y.js} +11 -11
- package/dist/commands/{chunk-FB3D7CX5.js → chunk-7OQ56DVW.js} +5 -7
- package/dist/commands/{chunk-EK327QOS.js → chunk-7VWPGTZO.js} +10 -10
- package/dist/commands/{chunk-WSOF74K4.js → chunk-7YZXS3AK.js} +3 -3
- package/dist/commands/{chunk-N6TYL3B2.js → chunk-AAUDI7WJ.js} +2 -2
- package/dist/commands/{chunk-3GF52L5F.js → chunk-AC26ZUG5.js} +12 -24
- package/dist/commands/{chunk-EK2Y6B4X.js → chunk-ACZ52JPI.js} +7 -7
- package/dist/commands/{chunk-VD72V5VX.js → chunk-AJ65WNJB.js} +4 -4
- package/dist/commands/{chunk-MYWRGF5A.js → chunk-AK7SEO4Y.js} +2 -2
- package/dist/commands/{chunk-IBEKFLWG.js → chunk-ALDAS2WG.js} +9 -9
- package/dist/commands/{chunk-W32DIQEP.js → chunk-ARFBIJFS.js} +1 -1
- package/dist/commands/{chunk-F3WBEEYC.js → chunk-AVVMDVGO.js} +5 -5
- package/dist/commands/chunk-AXXEMVRJ.js +23 -0
- package/dist/commands/{chunk-GIGKMIPQ.js → chunk-B3M5WSGN.js} +1 -1
- package/dist/commands/{chunk-4Z5723GA.js → chunk-B7ZNIEDV.js} +5 -4
- package/dist/commands/{chunk-B3XFOHDX.js → chunk-BCUDQWYK.js} +10 -4
- package/dist/commands/{chunk-PR3JCPP7.js → chunk-BMKWSWWE.js} +1 -1
- package/dist/commands/{chunk-RZJAUVMI.js → chunk-BMM4RHCG.js} +2 -2
- package/dist/commands/{chunk-LAKVPOJQ.js → chunk-BMTYUJNT.js} +2 -2
- package/dist/commands/{chunk-DAJCUSPG.js → chunk-BRHPRDDV.js} +3 -3
- package/dist/commands/{chunk-UZAU6UI6.js → chunk-BRUBX64M.js} +2 -2
- package/dist/commands/{chunk-BFLFPKQQ.js → chunk-BTZJDHQT.js} +4 -4
- package/dist/commands/{chunk-AI5K4QJO.js → chunk-BYFC6MD2.js} +1 -1
- package/dist/commands/{chunk-JGTLNFFE.js → chunk-BYGJ3BCJ.js} +10 -10
- package/dist/commands/{chunk-5HWZFL4D.js → chunk-C54QXJD6.js} +51 -18
- package/dist/commands/{chunk-LMS6N6GE.js → chunk-CBAKBWSZ.js} +7 -7
- package/dist/commands/{chunk-7EAMUVIO.js → chunk-CFHRNTE5.js} +1 -1
- package/dist/commands/{chunk-UIWAMLQH.js → chunk-CGYDIYHD.js} +2 -2
- package/dist/commands/{chunk-4QYW2IL7.js → chunk-CHKYPF5O.js} +1 -1
- package/dist/commands/{chunk-5HCPSV45.js → chunk-CJBW6BWG.js} +8 -8
- package/dist/commands/chunk-CKUKK7JG.js +252 -0
- package/dist/commands/{chunk-4PES3BAA.js → chunk-CMHGDCGN.js} +3 -3
- package/dist/commands/{chunk-F6OWP2AY.js → chunk-CNGTHSUS.js} +22 -22
- package/dist/commands/{chunk-B2EA2HCY.js → chunk-COGKULQH.js} +4 -4
- package/dist/commands/{chunk-S7XWXG4M.js → chunk-CP2J4RV2.js} +175 -81
- package/dist/commands/{chunk-YGDNUTTI.js → chunk-CQUZ6TNQ.js} +2 -2
- package/dist/commands/chunk-CQZI7RIK.js +72 -0
- package/dist/commands/chunk-CVJHQOI3.js +153 -0
- package/dist/commands/{chunk-2MJ4OCDL.js → chunk-CWCKCZS6.js} +1 -1
- package/dist/commands/chunk-D5OHVIPM.js +17 -0
- package/dist/commands/{chunk-TPKFVVJQ.js → chunk-D6D6WQR6.js} +2 -2
- package/dist/commands/{chunk-5PAEXYIY.js → chunk-D7JRJI44.js} +69 -6
- package/dist/commands/{chunk-LOSOLCCW.js → chunk-D7OAU32Z.js} +1 -1
- package/dist/commands/{chunk-VZHC2I3T.js → chunk-DAAX7XDS.js} +8 -8
- package/dist/commands/{chunk-OHVAEJSM.js → chunk-DEZF7QZZ.js} +5 -5
- package/dist/commands/{chunk-CA6F5OXK.js → chunk-DYZOOWVW.js} +124 -21
- package/dist/commands/{chunk-TKGBF75Y.js → chunk-EDKOSZ3K.js} +5 -5
- package/dist/commands/{chunk-YPNTORQD.js → chunk-EFDVE5P5.js} +1 -1
- package/dist/commands/{chunk-EH3LVYOX.js → chunk-EGIHAEMT.js} +1 -1
- package/dist/commands/{chunk-7P4X4TQL.js → chunk-EKLU6QR7.js} +4 -4
- package/dist/commands/{chunk-ILQZFUDC.js → chunk-ELY76WAR.js} +2 -2
- package/dist/commands/{chunk-2VLHFILE.js → chunk-EM3HAZF6.js} +2 -2
- package/dist/commands/{chunk-F2HFWLQR.js → chunk-EMTZAGT5.js} +20 -1
- package/dist/commands/{chunk-GA4VIFHD.js → chunk-ERG4QRNG.js} +2 -2
- package/dist/commands/{chunk-ICEMFE2V.js → chunk-EUGNQCYK.js} +1 -1
- package/dist/commands/{chunk-3HU3LPIF.js → chunk-EXDFKKMH.js} +2 -2
- package/dist/commands/{chunk-ISPBJVXM.js → chunk-EXWB34R2.js} +7 -7
- package/dist/commands/{chunk-FNOSSXLG.js → chunk-EYMPBHDN.js} +2 -2
- package/dist/commands/{chunk-7V5UVKFG.js → chunk-EZ7IPKIH.js} +2 -2
- package/dist/commands/{chunk-KQWSENCT.js → chunk-F6IQHZYY.js} +3 -3
- package/dist/commands/{chunk-7ZECP3J6.js → chunk-FDS65XOJ.js} +5 -5
- package/dist/commands/{chunk-KXRFGPZD.js → chunk-FGG7V473.js} +21 -5
- package/dist/commands/{chunk-PZ6VWHOO.js → chunk-FHFWNNUC.js} +1 -1
- package/dist/commands/{chunk-XBRD2BDL.js → chunk-FJX7AENO.js} +2 -2
- package/dist/commands/{chunk-M42SLJCD.js → chunk-FKZ5E4JD.js} +4 -4
- package/dist/commands/{chunk-F2J6DGDM.js → chunk-FMZWRDKH.js} +8 -8
- package/dist/commands/{chunk-DSBK66US.js → chunk-FOKCRIAN.js} +10 -10
- package/dist/commands/{chunk-OI7KM4K3.js → chunk-FQGWO2ZH.js} +2 -2
- package/dist/commands/{chunk-2IESYBZH.js → chunk-FURNDIT3.js} +3 -3
- package/dist/commands/chunk-FVDQNMP6.js +93 -0
- package/dist/commands/{chunk-PZU6FZO6.js → chunk-FWU3H4TX.js} +1 -1
- package/dist/commands/{chunk-RYZ3RQRH.js → chunk-G3HBYHFA.js} +1 -1
- package/dist/commands/{chunk-HCA5QG2U.js → chunk-G4E4M2P4.js} +2 -2
- package/dist/commands/{chunk-VJLZ3IQQ.js → chunk-G5KSL2Q2.js} +1 -1
- package/dist/commands/{chunk-Y5ZW3KN5.js → chunk-G6XC7V6Y.js} +2 -2
- package/dist/commands/{chunk-73EBNBUW.js → chunk-GCPP5XIG.js} +1 -1
- package/dist/commands/{chunk-Q3463XNL.js → chunk-GITT5A5A.js} +3 -3
- package/dist/commands/{chunk-T2IO4LEB.js → chunk-GLC47H7I.js} +10 -10
- package/dist/commands/{chunk-GA6E4VGO.js → chunk-GUR54ELE.js} +1 -1
- package/dist/commands/{chunk-7IT23HIR.js → chunk-GY4DMCKS.js} +2 -2
- package/dist/commands/{chunk-PZ4ITSLG.js → chunk-H6JQRHDC.js} +3 -3
- package/dist/commands/{chunk-ZHZSZNE2.js → chunk-HATKF6VX.js} +2 -2
- package/dist/commands/{chunk-ELWNRE6E.js → chunk-HH3CVIFU.js} +5 -5
- package/dist/commands/{chunk-7GMTJDO2.js → chunk-HHMMGDMP.js} +6 -6
- package/dist/commands/{chunk-VD5674LW.js → chunk-HI5WPM6C.js} +2 -2
- package/dist/commands/{chunk-JUUBDYFZ.js → chunk-HQSWPRUF.js} +4 -4
- package/dist/commands/{chunk-ZAJD6T6E.js → chunk-HVCQYZVD.js} +2 -2
- package/dist/commands/chunk-HWEZRNPL.js +66 -0
- package/dist/commands/{chunk-J6GIVMXI.js → chunk-HX3FFIO5.js} +18 -3
- package/dist/commands/{chunk-GU5ML3Y3.js → chunk-HXDTA5VU.js} +13 -68
- package/dist/commands/{chunk-BNXE3NVB.js → chunk-I2KCGKJI.js} +1 -1
- package/dist/commands/{chunk-LC7SBONO.js → chunk-IAD4WLLI.js} +1 -1
- package/dist/commands/{chunk-WWC5L3AO.js → chunk-IB5TT73I.js} +2 -2
- package/dist/commands/{chunk-HOSZITJM.js → chunk-IBAYXCMU.js} +2 -2
- package/dist/commands/chunk-IGDJNXX2.js +49 -0
- package/dist/commands/{chunk-OJ4LGBVD.js → chunk-ILIITIMQ.js} +3 -3
- package/dist/commands/{chunk-CUR2WNYB.js → chunk-IRGDMSTI.js} +3 -3
- package/dist/commands/{chunk-PZTWQYRI.js → chunk-IYJEBWW5.js} +3 -3
- package/dist/commands/{chunk-A3D2XHOJ.js → chunk-J22PSIXR.js} +40 -9
- package/dist/commands/{chunk-O27H6NN6.js → chunk-J66YBAAM.js} +3 -5
- package/dist/commands/{chunk-P6RGQXHI.js → chunk-J6WKZRV2.js} +2 -2
- package/dist/commands/{chunk-NFEBQED3.js → chunk-J7IO3AYH.js} +2 -2
- package/dist/commands/{chunk-T57W3UWK.js → chunk-JAKC2BHX.js} +1 -1
- package/dist/commands/{chunk-3EO2XN3A.js → chunk-JCAQ7B6J.js} +4 -4
- package/dist/commands/{chunk-QQZOQ7AM.js → chunk-JFLFGLE4.js} +1 -1
- package/dist/commands/{chunk-ZDSDPKCD.js → chunk-JIGBNCDR.js} +1 -1
- package/dist/commands/{chunk-Q5N2J2UF.js → chunk-JJHWTFWQ.js} +5 -7
- package/dist/commands/{chunk-EI6JG5DF.js → chunk-JKOGWGQM.js} +1 -1
- package/dist/commands/{chunk-RK4HE5NW.js → chunk-JM6EVOFN.js} +4 -4
- package/dist/commands/{chunk-EBNIX2TC.js → chunk-JV24VP2O.js} +1 -1
- package/dist/commands/{chunk-BCK5LW4F.js → chunk-JVKXJ763.js} +3 -3
- package/dist/commands/{chunk-D5TAR6TV.js → chunk-JZHY7D6D.js} +1 -1
- package/dist/commands/{chunk-CRNPPKP2.js → chunk-JZK33TA5.js} +1 -1
- package/dist/commands/{chunk-UOAG2XQT.js → chunk-K275REYP.js} +3 -3
- package/dist/commands/{chunk-HESMKHEB.js → chunk-K4G3HOKS.js} +2 -2
- package/dist/commands/{chunk-L6XN3EXI.js → chunk-K64EIHD2.js} +1 -1
- package/dist/commands/{chunk-RINVPTA2.js → chunk-KCFOP5RI.js} +28 -28
- package/dist/commands/{chunk-O26Y2FOJ.js → chunk-KGE4AS2Y.js} +1 -1
- package/dist/commands/{chunk-EWA72KO7.js → chunk-KK2SL42W.js} +2 -2
- package/dist/commands/{chunk-MMXZKLDU.js → chunk-KK7TEL5G.js} +10 -4
- package/dist/commands/{chunk-UEURNXE5.js → chunk-KKIMVXAP.js} +2 -2
- package/dist/commands/{chunk-MAGJFH5T.js → chunk-KODXWMBX.js} +6 -6
- package/dist/commands/{chunk-D4HNS43Q.js → chunk-KPSKWTOS.js} +17 -17
- package/dist/commands/{chunk-VFJYOAOQ.js → chunk-KTV2HNWB.js} +2 -2
- package/dist/commands/{chunk-OWR2TCOY.js → chunk-KWYQR5MK.js} +5 -5
- package/dist/commands/{chunk-FNQW6NY7.js → chunk-KXK2A2HB.js} +6 -2
- package/dist/commands/{chunk-O5FVBIRI.js → chunk-KZ5BBBMO.js} +5 -5
- package/dist/commands/{chunk-JUJFIATR.js → chunk-KZ7HD37E.js} +6 -6
- package/dist/commands/{chunk-2YCKPX3A.js → chunk-KZZWPUJW.js} +1 -1
- package/dist/commands/{chunk-MYNM3YMR.js → chunk-L7DAL54N.js} +3 -3
- package/dist/commands/{chunk-NOXLKIPR.js → chunk-LAR76BFA.js} +1 -1
- package/dist/commands/{chunk-ZA3W73PF.js → chunk-LB557AHJ.js} +3 -3
- package/dist/commands/{chunk-LYEKT3IN.js → chunk-LEB2VP7F.js} +1 -1
- package/dist/commands/{chunk-WQJ7O3C3.js → chunk-LJXKVLYI.js} +1 -1
- package/dist/commands/{chunk-CHX4QTP4.js → chunk-LJZERYLG.js} +1 -1
- package/dist/commands/{chunk-PF22VUWB.js → chunk-LOOFYHUM.js} +76 -26
- package/dist/commands/{chunk-HIPO6HUG.js → chunk-LPSULLNK.js} +1 -1
- package/dist/commands/{chunk-G47ZNQVG.js → chunk-LR22UK5W.js} +1 -1
- package/dist/commands/{chunk-SV4FHQE7.js → chunk-LT7QSHR4.js} +14 -14
- package/dist/commands/{chunk-HIB5G2X6.js → chunk-LUXWDMKI.js} +7 -7
- package/dist/commands/{chunk-XH6BGVVP.js → chunk-LX7TIEMI.js} +9 -36
- package/dist/commands/{chunk-OGNTJ5JB.js → chunk-LYO6TX5L.js} +1 -1
- package/dist/commands/{chunk-JLREFWJ4.js → chunk-LZ5QXE5N.js} +6 -6
- package/dist/commands/{chunk-WW3TX742.js → chunk-LZPPSOTP.js} +4 -4
- package/dist/commands/{chunk-5WIZR5SC.js → chunk-M4UV3BEV.js} +11 -11
- package/dist/commands/{chunk-LNBUIOK6.js → chunk-M6JDU5EK.js} +4 -4
- package/dist/commands/{chunk-VZSJCFRT.js → chunk-MFBNNTBM.js} +4 -4
- package/dist/commands/{chunk-KHWTJ4F7.js → chunk-MI2OS6TL.js} +3 -3
- package/dist/commands/{chunk-VZCQZFPH.js → chunk-MLW4S35K.js} +19 -8
- package/dist/commands/{chunk-RIUPRMLW.js → chunk-MN425CU6.js} +1 -1
- package/dist/commands/{chunk-7W3D3WRW.js → chunk-MOIOSCZM.js} +2 -2
- package/dist/commands/{chunk-3BNNMJOT.js → chunk-MRORPFSO.js} +20 -320
- package/dist/commands/{chunk-LA5WTOAM.js → chunk-MUGTOJUL.js} +12 -12
- package/dist/commands/{chunk-L6LU2633.js → chunk-MVHPRYHE.js} +1 -1
- package/dist/commands/{chunk-EKCKCX5S.js → chunk-MWO6FOSZ.js} +123 -21
- package/dist/commands/{chunk-AVUGMOHZ.js → chunk-N7QTMTST.js} +2 -2
- package/dist/commands/{chunk-LMSS4ARB.js → chunk-NDBX7LSS.js} +1 -1
- package/dist/commands/{chunk-BEE7OAQ5.js → chunk-NDWZTWXV.js} +21 -2
- package/dist/commands/{chunk-6TESOL3L.js → chunk-NEGJ77RV.js} +7 -7
- package/dist/commands/{chunk-LCEJXF7A.js → chunk-NEGRE5VW.js} +4 -4
- package/dist/commands/{chunk-IXX4SXIP.js → chunk-NFPD2P3V.js} +1 -1
- package/dist/commands/chunk-NHIW7JE6.js +335 -0
- package/dist/commands/{chunk-CJSFC5YI.js → chunk-NILSN7A4.js} +7 -7
- package/dist/commands/{chunk-W4J6YTFE.js → chunk-NOLFSPOB.js} +2 -2
- package/dist/commands/chunk-NT67QTZO.js +65 -0
- package/dist/commands/{chunk-NJT5L6IC.js → chunk-NU7W6QGT.js} +33 -4
- package/dist/commands/chunk-NUR4FQHM.js +21 -0
- package/dist/commands/{chunk-OKKQI4ZG.js → chunk-OAAVY2JK.js} +1 -1
- package/dist/commands/chunk-OF4BY4N7.js +32 -0
- package/dist/commands/{chunk-W47I2KDY.js → chunk-OGS2DK7I.js} +3 -3
- package/dist/commands/{chunk-MS6Q3Z7V.js → chunk-OIPV3PWW.js} +6 -6
- package/dist/commands/{chunk-T33QDAWD.js → chunk-OIX2363L.js} +1 -1
- package/dist/commands/{chunk-GPMSYXYO.js → chunk-OJ65BZBV.js} +283 -15
- package/dist/commands/{chunk-34LAULSC.js → chunk-OKZWEVR4.js} +3 -3
- package/dist/commands/{chunk-2CXAVVST.js → chunk-OL6IF4JC.js} +1 -1
- package/dist/commands/{chunk-6JVNRY5A.js → chunk-OMPRILFH.js} +1 -1
- package/dist/commands/{chunk-VGHSZLYQ.js → chunk-OOWGH2RG.js} +1 -1
- package/dist/commands/{chunk-ERGZPWKP.js → chunk-OP2RFVLS.js} +1 -1
- package/dist/commands/{chunk-UU6GCJGM.js → chunk-ORKVN2LO.js} +2 -2
- package/dist/commands/{chunk-RHII5XI6.js → chunk-OSBWXZJ4.js} +24 -24
- package/dist/commands/{chunk-D3SHCUBC.js → chunk-OVWPZDWP.js} +2 -2
- package/dist/commands/{chunk-Z4HYBFZD.js → chunk-OWYK2BEJ.js} +108 -46
- package/dist/commands/{chunk-P4O67FP5.js → chunk-OX3VQLV2.js} +6 -6
- package/dist/commands/{chunk-L6TU7FC2.js → chunk-OZJP77UM.js} +4 -4
- package/dist/commands/{chunk-SNO7CY2B.js → chunk-P3H3DKTE.js} +2 -2
- package/dist/commands/{chunk-2OIX4JLA.js → chunk-P5SOYWH2.js} +3 -3
- package/dist/commands/{chunk-M4PEC7YW.js → chunk-PHLOTUB7.js} +54 -37
- package/dist/commands/{chunk-73KBUQKI.js → chunk-PTNQCCIB.js} +2 -2
- package/dist/commands/{chunk-4P2LCVGO.js → chunk-PTZEFQUX.js} +8 -8
- package/dist/commands/{chunk-DJVMC3U2.js → chunk-Q426ZSZ4.js} +1 -1
- package/dist/commands/{chunk-US6X7JXC.js → chunk-Q7EEIOAD.js} +4 -4
- package/dist/commands/{chunk-LE7TFPMU.js → chunk-QABRNGQV.js} +2 -2
- package/dist/commands/{chunk-NGKB632X.js → chunk-QDFVVRQP.js} +3 -3
- package/dist/commands/{chunk-36M2UV6C.js → chunk-QGATHT4S.js} +38 -4
- package/dist/commands/{chunk-DIB2Z2OS.js → chunk-QJRVDE7T.js} +1 -1
- package/dist/commands/{chunk-KUJQWO6M.js → chunk-QKTTKAXM.js} +2 -2
- package/dist/commands/{chunk-DXZW4V7J.js → chunk-QMDKDQKW.js} +3 -3
- package/dist/commands/{chunk-VW5SGE7A.js → chunk-QOSC5RKD.js} +1 -1
- package/dist/commands/{chunk-ENLWXAHD.js → chunk-QV5FKMOU.js} +1 -1
- package/dist/commands/{chunk-32SNWQJP.js → chunk-R2THGPI3.js} +2 -2
- package/dist/commands/{chunk-RVHBWSIG.js → chunk-R54Z2Z3X.js} +2 -2
- package/dist/commands/{chunk-CJAA5GAF.js → chunk-RG53UFNW.js} +15 -15
- package/dist/commands/{chunk-HJKZDDDI.js → chunk-RHKCWJQX.js} +1 -1
- package/dist/commands/{chunk-RPDWFUQO.js → chunk-RKIAX4DZ.js} +36 -84
- package/dist/commands/{chunk-LE2T3FGJ.js → chunk-RLBFEHHC.js} +2 -4
- package/dist/commands/{chunk-5GBZ43UA.js → chunk-RMDLFLPE.js} +1 -1
- package/dist/commands/{chunk-U2UH4VM4.js → chunk-RN2YDNLF.js} +2 -2
- package/dist/commands/{chunk-GQHUFNXN.js → chunk-RRAIRS2T.js} +1 -1
- package/dist/commands/{chunk-DRCTDVI2.js → chunk-RUQY5TS3.js} +3 -3
- package/dist/commands/{chunk-WGULS5DA.js → chunk-RW64VHEB.js} +1 -0
- package/dist/commands/{chunk-4G7NKNAZ.js → chunk-RXYMJPJB.js} +3 -3
- package/dist/commands/{chunk-B33BTNB4.js → chunk-S4M6UWR2.js} +21 -5
- package/dist/commands/{chunk-4Q4FXBUQ.js → chunk-SASX3W2M.js} +2 -2
- package/dist/commands/{chunk-TIXJY22D.js → chunk-SJ2ZN575.js} +5 -5
- package/dist/commands/{chunk-NSZTSCBW.js → chunk-SP7DKYGU.js} +13 -13
- package/dist/commands/{chunk-T3FD3Q73.js → chunk-SRG6PKVS.js} +1 -1
- package/dist/commands/{chunk-QA22PBCJ.js → chunk-SSL6A3Y4.js} +3 -3
- package/dist/commands/{chunk-4BEIYKI2.js → chunk-SV4FZR24.js} +2 -0
- package/dist/commands/{chunk-HZSQI6TD.js → chunk-SVTS7ACS.js} +2 -2
- package/dist/commands/{chunk-F7XLEK55.js → chunk-SVV4U5AR.js} +1 -1
- package/dist/commands/{chunk-RRQFITJE.js → chunk-SXJM4DZ5.js} +1 -1
- package/dist/commands/{chunk-OIDMJASD.js → chunk-SYB3M632.js} +1 -1
- package/dist/commands/{chunk-UJOZ2MGX.js → chunk-SYOXIKB7.js} +6 -6
- package/dist/commands/{chunk-5SB37YDW.js → chunk-SZG5HDNP.js} +3 -3
- package/dist/commands/{chunk-R2CF6VZE.js → chunk-T4F33UKZ.js} +4 -4
- package/dist/commands/{chunk-ESQEEL4O.js → chunk-TAEGXID2.js} +2 -2
- package/dist/commands/chunk-TEPYEUYG.js +585 -0
- package/dist/commands/{chunk-LUMCYDGE.js → chunk-TFLHYC2F.js} +2 -2
- package/dist/commands/{chunk-V5OIPYA6.js → chunk-TJKM56WJ.js} +4 -4
- package/dist/commands/{chunk-CYQ3ZF7R.js → chunk-TLAB552K.js} +86 -13
- package/dist/commands/{chunk-ST32OGPY.js → chunk-TP6L4W3W.js} +5 -5
- package/dist/commands/{chunk-C26LKDBE.js → chunk-TR7WWYD5.js} +1 -1
- package/dist/commands/{chunk-PWYXY46Y.js → chunk-TYNH2R66.js} +15 -15
- package/dist/commands/{chunk-AZUE65NT.js → chunk-U5P6G3UV.js} +2 -2
- package/dist/commands/{chunk-REPANBLS.js → chunk-U7Y6RKLK.js} +1 -1
- package/dist/commands/{chunk-55I7OYHI.js → chunk-UIMMWH7U.js} +1 -1
- package/dist/commands/{chunk-72J2G2E7.js → chunk-UKBBWMLE.js} +20 -20
- package/dist/commands/{chunk-VTLL6CKO.js → chunk-UNMSZGSG.js} +14 -14
- package/dist/commands/chunk-UOVUUVDK.js +18 -0
- package/dist/commands/{chunk-JNWHX25C.js → chunk-URDT2O2K.js} +1 -1
- package/dist/commands/{chunk-FGZQSSGH.js → chunk-UREXZJDB.js} +1 -1
- package/dist/commands/{chunk-O4WBADCX.js → chunk-UTHUX7VU.js} +3 -3
- package/dist/commands/{chunk-PDDKRHHS.js → chunk-V5OUZFWK.js} +3 -3
- package/dist/commands/{chunk-N4O5I55P.js → chunk-VCPGFBMN.js} +8 -8
- package/dist/commands/{chunk-WN7NK3NY.js → chunk-VGPIQNDB.js} +1 -1
- package/dist/commands/{chunk-HOGFJHBT.js → chunk-VJS2MCLA.js} +1 -1
- package/dist/commands/{chunk-4YI4SLRJ.js → chunk-VK6D5CWA.js} +8 -8
- package/dist/commands/{chunk-4LWRCPS5.js → chunk-VOF3N4WO.js} +3 -3
- package/dist/commands/{chunk-AM44D7NF.js → chunk-VQRT32JB.js} +1 -1
- package/dist/commands/{chunk-AS3GWVAN.js → chunk-VQVPAVQ3.js} +1 -1
- package/dist/commands/{chunk-6VTJO5L2.js → chunk-VV4TQYGD.js} +3 -3
- package/dist/commands/{chunk-WIE7VUBE.js → chunk-W7DRUOF7.js} +5 -5
- package/dist/commands/{chunk-HH2KDLTP.js → chunk-WAEN2RTT.js} +2 -2
- package/dist/commands/{chunk-NKKH3PBE.js → chunk-WB4T3VY2.js} +18 -1
- package/dist/commands/{chunk-DNJC7X73.js → chunk-WCEUMOKK.js} +2 -2
- package/dist/commands/{chunk-BK6Q4VCA.js → chunk-WTH6NTXU.js} +4 -4
- package/dist/commands/{chunk-WG6GYBRJ.js → chunk-WWVYEHQT.js} +2 -1
- package/dist/commands/{chunk-P4CWLRT2.js → chunk-X3TNPALI.js} +1 -1
- package/dist/commands/{chunk-LZNYHWRO.js → chunk-XC6GG5JR.js} +3 -3
- package/dist/commands/{chunk-RI7EQYKL.js → chunk-XFWI6WHH.js} +2 -2
- package/dist/commands/{chunk-BY3POLIQ.js → chunk-XHGWMD3L.js} +7 -7
- package/dist/commands/{chunk-BPSJSHYD.js → chunk-XI2ABCRX.js} +2 -2
- package/dist/commands/{chunk-TS4ZK46L.js → chunk-XKSUBUIH.js} +5 -5
- package/dist/commands/{chunk-K7GL3BGI.js → chunk-XPBF5DG3.js} +4 -4
- package/dist/commands/{chunk-6SKMZGER.js → chunk-XUMYPESL.js} +20 -8
- package/dist/commands/{chunk-QS5USD4T.js → chunk-XXC32PVL.js} +5 -4
- package/dist/commands/{chunk-ORSI7Y55.js → chunk-XXN2EZBY.js} +1 -1
- package/dist/commands/{chunk-IZVM2TTH.js → chunk-XZQWEVR3.js} +2 -2
- package/dist/commands/{chunk-E3CXOVPQ.js → chunk-Y27PTXXI.js} +1 -1
- package/dist/commands/{chunk-337QQM4C.js → chunk-Y4EBUI6M.js} +106 -5
- package/dist/commands/{chunk-WRX3MINT.js → chunk-YAU3LYNF.js} +1 -1
- package/dist/commands/{chunk-JB7R3A4A.js → chunk-YDURQICF.js} +4 -4
- package/dist/commands/{chunk-RX5JSPPH.js → chunk-YGFOGA7C.js} +11 -11
- package/dist/commands/{chunk-S6SXMBF2.js → chunk-YHJ2AJMA.js} +2 -2
- package/dist/commands/{chunk-MVPUQLN5.js → chunk-YM77CF4D.js} +4 -4
- package/dist/commands/{chunk-ZYIMQHCB.js → chunk-YNPRJCEO.js} +6 -6
- package/dist/commands/{chunk-3UKJFWKS.js → chunk-YTBQAD5W.js} +3 -3
- package/dist/commands/{chunk-KIVOZY2J.js → chunk-ZBZ5DDCH.js} +66 -64
- package/dist/commands/{chunk-TAPDXK34.js → chunk-ZLRUHSOP.js} +1 -1
- package/dist/commands/{chunk-XYAK53TK.js → chunk-ZNR75OXP.js} +2 -1
- package/dist/commands/{chunk-CADFBQJJ.js → chunk-ZSOR4ISJ.js} +4 -4
- package/dist/commands/{chunk-6NRTLH6I.js → chunk-ZYFHYQA7.js} +1 -1
- package/dist/commands/{chunk-Q7TV3OV6.js → chunk-ZZFFSQF4.js} +4 -4
- package/dist/commands/{chunk-PDAY76AN.js → chunk-ZZULXNC2.js} +1 -1
- package/dist/commands/{chunk-5Y7QQYTU.js → chunk-ZZXO6TFH.js} +1 -1
- package/dist/commands/code-symbol-cli.js +4 -4
- package/dist/commands/codex-hook-adapter.js +99 -100
- package/dist/commands/command-derive.js +10 -10
- package/dist/commands/cost-audit-main.js +94 -92
- package/dist/commands/cspell-cached.js +24 -23
- package/dist/commands/defect-origin-main.js +19 -18
- package/dist/commands/defect-report-main.js +15 -14
- package/dist/commands/disposition-cli.js +67 -64
- package/dist/commands/doctor.js +3 -3
- package/dist/commands/document-read-cli.js +89 -9
- package/dist/commands/document-section-main.js +89 -9
- package/dist/commands/edit-files-cli.js +1 -1
- package/dist/commands/effect-audit-cli.js +20 -19
- package/dist/commands/epic-audit-main.js +55 -53
- package/dist/commands/epic-bundle-main.js +87 -85
- package/dist/commands/epic-check.js +16 -15
- package/dist/commands/epic-main.js +93 -91
- package/dist/commands/epic-next-main.js +51 -49
- package/dist/commands/format-edited-cli.js +30 -32
- package/dist/commands/format.js +11 -10
- package/dist/commands/fresh-machine-cli.js +6 -6
- package/dist/commands/git-followup-workflow.js +137 -122
- package/dist/commands/git-workflow.js +28 -27
- package/dist/commands/github-release-cli.js +26 -3
- package/dist/commands/hook-ledger-cli.js +74 -126
- package/dist/commands/init-main.js +20 -19
- package/dist/commands/inputs.json +1909 -1878
- package/dist/commands/issue-ack-cli.js +5 -5
- package/dist/commands/issue-already-done-cli.js +63 -58
- package/dist/commands/issue-body-cli.js +44 -42
- package/dist/commands/issue-cite-main.js +11 -10
- package/dist/commands/issue-comment-main.js +15 -11
- package/dist/commands/issue-consolidate-cli.js +31 -30
- package/dist/commands/issue-file-main.js +114 -110
- package/dist/commands/issue-fold-existing-cli.js +88 -86
- package/dist/commands/issue-fold-main.js +26 -25
- package/dist/commands/issue-lint-main.js +38 -37
- package/dist/commands/issue-measured-cli.js +66 -61
- package/dist/commands/issue-plan-cli.js +103 -101
- package/dist/commands/issue-premise-unmet-cli.js +66 -61
- package/dist/commands/issue-priority-cli.js +13 -12
- package/dist/commands/issue-read-main.js +18 -17
- package/dist/commands/issue-release-class-cli.js +12 -11
- package/dist/commands/issue-release-main.js +13 -12
- package/dist/commands/issue-scout-main.js +89 -87
- package/dist/commands/issue-spill-main.js +114 -110
- package/dist/commands/issue-state-main.js +16 -15
- package/dist/commands/issue-tick-cli.js +14 -13
- package/dist/commands/josh-completion.js +10 -10
- package/dist/commands/lane-adopt-cli.js +19 -19
- package/dist/commands/lane-breakdown-cli.js +154 -126
- package/dist/commands/lane-cli.js +131 -125
- package/dist/commands/lane-launch-main.js +17 -17
- package/dist/commands/lane-limit-cli.js +81 -79
- package/dist/commands/lane-measure-cli.js +246 -130
- package/dist/commands/lane-pause-cli.js +15 -15
- package/dist/commands/lane-plan-cli.js +108 -101
- package/dist/commands/lane-resolve-cli.js +20 -19
- package/dist/commands/lane-restart-cli.js +124 -118
- package/dist/commands/lane-why-cli.js +85 -82
- package/dist/commands/lane-withdraw-cli.js +49 -48
- package/dist/commands/latest-corepack.js +3 -3
- package/dist/commands/latest-if-required-cli.js +9 -9
- package/dist/commands/latest-scope-main.js +5 -5
- package/dist/commands/latest-update.js +3 -3
- package/dist/commands/lines-command.js +3 -3
- package/dist/commands/lint-parallel-main.js +32 -31
- package/dist/commands/lint-related.js +79 -60
- package/dist/commands/lint-rule.js +32 -31
- package/dist/commands/lockfile-policy.js +11 -11
- package/dist/commands/main-merge-main.js +5 -5
- package/dist/commands/main-sync-main.js +5 -5
- package/dist/commands/managed-config-scope-cli.js +3 -3
- package/dist/commands/measure-rerun-cli.js +10 -10
- package/dist/commands/metrics-command.js +91 -58
- package/dist/commands/observation-record-cli.js +3 -3
- package/dist/commands/observations-flush-cli.js +27 -25
- package/dist/commands/oracle-list-cli.js +2 -2
- package/dist/commands/overrides-check.js +4 -4
- package/dist/commands/package-scout-cli.js +67 -26
- package/dist/commands/plan-consumers-main.js +4 -4
- package/dist/commands/plan-scaffold-cli.js +132 -91
- package/dist/commands/pr-classification-main.js +3 -3
- package/dist/commands/pre-commit-lint.js +11 -12
- package/dist/commands/pre-commit-type-check.js +25 -24
- package/dist/commands/pre-push-unit.js +33 -33
- package/dist/commands/pretool-guard-cli.js +90 -91
- package/dist/commands/project-profile-cli.js +5 -4
- package/dist/commands/propagate.js +15 -15
- package/dist/commands/prose-stale-cli.js +20 -19
- package/dist/commands/publishable-range-check.js +4 -4
- package/dist/commands/read-files-cli.js +2 -2
- package/dist/commands/read-set-cli.js +61 -24
- package/dist/commands/refactor-scan-cli.js +6 -6
- package/dist/commands/release-cli.js +64 -36
- package/dist/commands/release-scope-main.js +19 -18
- package/dist/commands/rename-cli.js +27 -29
- package/dist/commands/reserved-run.js +3 -3
- package/dist/commands/retrospective-cli.js +104 -102
- package/dist/commands/review-attest-cli.js +6 -6
- package/dist/commands/review-brief-main.js +127 -109
- package/dist/commands/review-findings-cli.js +2 -2
- package/dist/commands/review-pair-cli.js +110 -84
- package/dist/commands/review-record-main.js +108 -83
- package/dist/commands/review-round2-cli.js +46 -45
- package/dist/commands/review-stops-cli.js +16 -16
- package/dist/commands/review-submit-cli.js +127 -109
- package/dist/commands/rule-list.js +58 -60
- package/dist/commands/rule-value-cli.js +226 -74
- package/dist/commands/run-add-cli.js +28 -27
- package/dist/commands/run-board-main.js +136 -132
- package/dist/commands/run-carry-cli.js +127 -124
- package/dist/commands/run-chain-cli.js +116 -93
- package/dist/commands/run-cut-cli.js +124 -119
- package/dist/commands/run-ending-cli.js +19 -22
- package/dist/commands/run-entry-cli.js +183 -180
- package/dist/commands/run-event-cli.js +5 -5
- package/dist/commands/run-handoff-cli.js +52 -28
- package/dist/commands/run-handoff-lanes-cli.js +15 -15
- package/dist/commands/run-hold-main.js +64 -62
- package/dist/commands/run-liveness-cli.js +11 -11
- package/dist/commands/run-merge-main.js +119 -116
- package/dist/commands/run-next-cli.js +87 -86
- package/dist/commands/run-park-cli.js +111 -92
- package/dist/commands/run-pause-cli.js +147 -133
- package/dist/commands/run-pickup-cli.js +13 -13
- package/dist/commands/run-prep-main.js +83 -82
- package/dist/commands/run-prime-cli.js +107 -87
- package/dist/commands/run-progress-main.js +123 -107
- package/dist/commands/run-report-cli.js +25 -24
- package/dist/commands/run-review-cli.js +168 -149
- package/dist/commands/run-ship-cli.js +208 -203
- package/dist/commands/run-ship-evidence-cli.js +38 -37
- package/dist/commands/run-ship-wait-main.js +40 -37
- package/dist/commands/run-split-cli.js +127 -125
- package/dist/commands/run-stale-main.js +36 -35
- package/dist/commands/run-status-cli.js +16 -15
- package/dist/commands/run-step-cli.js +173 -164
- package/dist/commands/run-tail-cli.js +1 -1
- package/dist/commands/run-tidy-main.js +30 -29
- package/dist/commands/run-wake-main.js +137 -119
- package/dist/commands/run-watcher-guard-cli.js +30 -29
- package/dist/commands/secretlint-scan.js +2 -2
- package/dist/commands/selfcheck-cli.js +27 -26
- package/dist/commands/session-language-main.js +48 -28
- package/dist/commands/sonar-hotspots-cli.js +3 -3
- package/dist/commands/split-assess-cli.js +24 -23
- package/dist/commands/split-child-recover-cli.js +13 -12
- package/dist/commands/start.js +37 -35
- package/dist/commands/stash-pop-main.js +3 -3
- package/dist/commands/stash-push-main.js +3 -3
- package/dist/commands/stop-guard.js +144 -143
- package/dist/commands/sync-main.js +11 -10
- package/dist/commands/telegram-test-main.js +5 -5
- package/dist/commands/test-declared.js +9 -8
- package/dist/commands/test-e2e-guard.js +23 -22
- package/dist/commands/test-pinned-main.js +26 -25
- package/dist/commands/test-reach-cli.js +15 -14
- package/dist/commands/test-red-main.js +5 -5
- package/dist/commands/{test-related-ZT2AO62I.js → test-related-ZCNC46MS.js} +31 -31
- package/dist/commands/test-related-main.js +51 -50
- package/dist/commands/test-unit-guard-main.js +9 -8
- package/dist/commands/time-cli.js +24 -27
- package/dist/commands/time-density-cli.js +8 -9
- package/dist/commands/tree-status-cli.js +4 -4
- package/dist/commands/type-check-command.js +8 -7
- package/dist/commands/ui-shot-cli.js +4 -4
- package/dist/commands/uninstall.js +20 -19
- package/dist/commands/unused-members-cli.js +9 -8
- package/dist/commands/upstream-interrupt-main.js +115 -111
- package/dist/commands/verification-gate.js +46 -46
- package/dist/commands/version-check.js +5 -5
- package/dist/hooks/{chunk-LWD43Z3C.js → chunk-5CUXGQT6.js} +1667 -107
- package/dist/hooks/{chunk-4YXV2REH.js → chunk-5R5YFQR5.js} +8 -8
- package/dist/hooks/{chunk-LKQBEKBI.js → chunk-6RLY27FT.js} +8 -8
- package/dist/hooks/{chunk-CICKRHTB.js → chunk-AO4TOV4V.js} +119 -2679
- package/dist/hooks/{chunk-NUPVO7RI.js → chunk-G5WSPYJ6.js} +4296 -1687
- package/dist/hooks/{chunk-UU4PTPEZ.js → chunk-HHIVWGHX.js} +250 -125
- package/dist/hooks/{chunk-P7BPAU26.js → chunk-IURJANNZ.js} +2 -2
- package/dist/hooks/{chunk-6RR6JZSB.js → chunk-OV22V63P.js} +357 -1744
- package/dist/hooks/{chunk-RQXECHAS.js → chunk-SXABK6UV.js} +57 -45
- package/dist/hooks/codex-hook-adapter.js +11 -11
- package/dist/hooks/daemon.js +1053 -690
- package/dist/hooks/format-edited.js +5 -5
- package/dist/hooks/inputs.json +542 -527
- package/dist/hooks/pretool-guard.js +7 -7
- package/dist/hooks/session-lang.js +293 -16
- package/dist/hooks/stop-guard.js +225 -48
- package/dist/inputs.json +65 -65
- package/dist/josh.js +73 -19
- package/dist/self-sync-guard/index.js +18 -1
- package/dist/version/index.js +18 -1
- package/package.json +3 -3
- package/pnpm-workspace.yaml +5 -13
- package/prompts/collaboration-workflow/issue-template.en.md +56 -52
- package/scripts/agent/agent-argv.ts +20 -6
- package/scripts/agent/agent-phase-profile.ts +89 -0
- package/scripts/agent/agent-role-profile.ts +3 -71
- package/scripts/agent/agent-ship-cap.ts +44 -0
- package/scripts/agent/agent-worker-profile.ts +154 -0
- package/scripts/agent/claude-agent-argv.ts +1 -1
- package/scripts/agent/lane-instructions.ts +29 -3
- package/scripts/auto-ok/auto-ok-judge-cli.ts +3 -0
- package/scripts/auto-ok/auto-ok-judge-write.ts +2 -1
- package/scripts/auto-ok/auto-ok-judge.ts +4 -2
- package/scripts/backlog/backlog-drive-escalate.ts +115 -0
- package/scripts/backlog/backlog-drive-stalled-retry.ts +48 -10
- package/scripts/document/document-scan.ts +35 -1
- package/scripts/gh/git-pr-checks-failed.ts +24 -0
- package/scripts/hooks/implementation-shell-deny-expansion.ts +20 -0
- package/scripts/hooks/implementation-shell-deny-git.ts +128 -0
- package/scripts/hooks/implementation-shell-deny.ts +14 -138
- package/scripts/hooks/implementation-shell.ts +28 -5
- package/scripts/hooks/step-zero-notice.ts +9 -6
- package/scripts/hooks/stop-actions.ts +4 -2
- package/scripts/init/init-logic-workspace.ts +1 -1
- package/scripts/issue/issue-auto-ok.ts +43 -4
- package/scripts/issue/issue-body-keys.ts +4 -0
- package/scripts/issue/issue-comment-cli.ts +15 -2
- package/scripts/issue/issue-evidence-exit.ts +6 -2
- package/scripts/issue/issue-file-cli.ts +5 -1
- package/scripts/issue/issue-file-pass.ts +14 -7
- package/scripts/issue/issue-file-worker.ts +95 -0
- package/scripts/issue/issue-file.ts +1 -1
- package/scripts/issue/issue-outcome.ts +107 -0
- package/scripts/issue/issue-read.ts +12 -7
- package/scripts/issue/issue-watch-diff.ts +2 -1
- package/scripts/josh/josh-commands-ai.ts +2 -2
- package/scripts/josh/josh-commands-development.ts +21 -5
- package/scripts/josh/josh-commands-issue-write.ts +3 -2
- package/scripts/josh/josh-commands-lint.ts +1 -1
- package/scripts/josh/josh-commands-project.ts +7 -2
- package/scripts/josh/josh-commands-run.ts +10 -2
- package/scripts/josh/josh-commands-workflow.ts +5 -0
- package/scripts/josh/session-language-cli.ts +1 -1
- package/scripts/lane/lane-breakdown-cli.ts +14 -4
- package/scripts/lane/lane-breakdown-text.ts +7 -0
- package/scripts/lane/lane-breakdown.ts +21 -1
- package/scripts/lane/lane-dispatch-prepare.ts +83 -0
- package/scripts/lane/lane-dispatch.ts +3 -53
- package/scripts/lane/lane-elapsed-time.ts +118 -0
- package/scripts/lane/lane-ledger-schema-ship.ts +4 -1
- package/scripts/lane/lane-net-time.ts +35 -7
- package/scripts/lane/lane-overrun.ts +1 -1
- package/scripts/lane/lane-plan-cli.ts +7 -3
- package/scripts/lane/lane-plan-estimate.ts +57 -0
- package/scripts/lane/lane-plan-size.ts +11 -20
- package/scripts/lane/lane-plan.ts +1 -0
- package/scripts/lane/lane-relaunch.ts +9 -4
- package/scripts/lane/lane-stage-budget.ts +6 -1
- package/scripts/lane/lane-stage-events.ts +103 -0
- package/scripts/lane/lane-stats-tables.ts +3 -0
- package/scripts/lane/lane-stop-check-stats.ts +117 -0
- package/scripts/lane/lane-stop-stats.ts +30 -6
- package/scripts/lane/lane-why-causes.ts +3 -11
- package/scripts/lane/openai-lane-supervisor-owner.ts +12 -0
- package/scripts/lane/openai-lane-supervisor.ts +36 -1
- package/scripts/lib/home-tilde.ts +24 -0
- package/scripts/lib/package-manifest.ts +27 -1
- package/scripts/observations/observation-ledger-archive.ts +180 -0
- package/scripts/observations/observation-ledger-home.ts +1 -0
- package/scripts/observations/observation-ledger.ts +5 -0
- package/scripts/observations/observations-flush-transaction.ts +358 -0
- package/scripts/observations/observations-flush.ts +72 -172
- package/scripts/plan/plan-scaffold-cli.ts +17 -6
- package/scripts/plan/plan-scaffold.ts +11 -0
- package/scripts/release/github-release-notes.ts +24 -0
- package/scripts/release/github-release-runs.ts +32 -6
- package/scripts/release/github-release.ts +10 -2
- package/scripts/release/release-progress.ts +22 -10
- package/scripts/release/release-publish-run.ts +39 -6
- package/scripts/repo/repository-labels.ts +23 -11
- package/scripts/review/review-comment-round.ts +10 -5
- package/scripts/rules/broad-investigation-shell.ts +2 -2
- package/scripts/rules/codex-prompt.ts +63 -0
- package/scripts/rules/direct-issue-comment.ts +62 -2
- package/scripts/rules/direct-issue-read.ts +55 -2
- package/scripts/rules/guard-remedy.ts +10 -4
- package/scripts/rules/issue-citation.ts +20 -9
- package/scripts/rules/last-prompt.ts +8 -4
- package/scripts/rules/rule-value-cli.ts +85 -4
- package/scripts/rules/rule-value-trend.ts +108 -0
- package/scripts/rules/shell-redirects.ts +19 -7
- package/scripts/rules/shell-segments.ts +145 -20
- package/scripts/rules/shell-tokens.ts +66 -0
- package/scripts/rules/standalone-gh-call.ts +63 -0
- package/scripts/rules/unasked-filing.ts +12 -4
- package/scripts/run/board/run-board-closed.ts +10 -1
- package/scripts/run/board/run-board-decision-read.ts +52 -12
- package/scripts/run/board/run-board-decision.ts +5 -0
- package/scripts/run/board/run-board-ending-reason.ts +21 -7
- package/scripts/run/board/run-board-github.ts +8 -1
- package/scripts/run/board/run-board-header.ts +4 -5
- package/scripts/run/board/run-board-layout.ts +5 -3
- package/scripts/run/board/run-board-link.ts +2 -0
- package/scripts/run/board/run-board-operation.ts +6 -2
- package/scripts/run/board/run-board-pause-fixture.json +12 -0
- package/scripts/run/board/run-board-pause.ts +87 -0
- package/scripts/run/board/run-board-plan-shared.ts +2 -0
- package/scripts/run/board/run-board-read.ts +7 -1
- package/scripts/run/board/run-board-render-condition.ts +10 -1
- package/scripts/run/board/run-board-render-title.ts +7 -0
- package/scripts/run/board/run-board-roots.ts +25 -2
- package/scripts/run/board/run-board-settle.ts +16 -2
- package/scripts/run/board/run-board-setup.ts +13 -7
- package/scripts/run/board/run-board-snapshot.ts +4 -0
- package/scripts/run/board/run-board-status.ts +13 -1
- package/scripts/run/board/run-board-tick.ts +7 -1
- package/scripts/run/cut/run-cut-cli.ts +2 -1
- package/scripts/run/park/run-park-cli.ts +13 -1
- package/scripts/run/park/run-park-escalate.ts +102 -0
- package/scripts/run/park/run-stalled.ts +29 -7
- package/scripts/run/review/run-review-early-push.ts +6 -6
- package/scripts/run/ship/run-ship-stop-cause.ts +12 -1
- package/scripts/split/split-assess.ts +14 -5
- package/scripts/test/test-related-touched.ts +21 -3
- package/scripts/test/test-related.ts +1 -1
- package/dist/commands/chunk-6WEVLIZE.js +0 -29
- package/dist/commands/chunk-E2ZCUKHT.js +0 -274
- package/dist/commands/chunk-NMLCPYBN.js +0 -134
- package/dist/commands/chunk-QEIO2ZNQ.js +0 -324
- package/dist/commands/chunk-QWX7EBC6.js +0 -112
- package/dist/commands/chunk-RQRLW4XK.js +0 -20
- package/dist/commands/chunk-UCQJDYE3.js +0 -21
- package/dist/commands/chunk-W4YH2DF3.js +0 -58
- package/dist/commands/{chunk-LRA3PXHS.js → chunk-ENKFCOVY.js} +3 -3
- package/dist/commands/{chunk-RUWV4INF.js → chunk-HQGNXR6I.js} +3 -3
|
@@ -1,59 +1,45 @@
|
|
|
1
1
|
import {
|
|
2
|
+
codex_prompt,
|
|
2
3
|
concise_reply,
|
|
3
4
|
cost_cli,
|
|
4
5
|
cost_verdict,
|
|
5
|
-
delegation_policy,
|
|
6
6
|
doctor_consumer,
|
|
7
|
-
duplicate_read_outcome,
|
|
8
|
-
duplicate_reads,
|
|
9
7
|
epic_busy,
|
|
10
8
|
hook_ledger,
|
|
11
|
-
investigation_reads,
|
|
12
|
-
issue_watch_diff,
|
|
13
9
|
lane_background,
|
|
14
|
-
lane_guard_policy,
|
|
15
10
|
lane_park,
|
|
16
11
|
lane_plan,
|
|
17
12
|
last_prompt,
|
|
18
13
|
pre_gate_cut,
|
|
19
14
|
project_checks,
|
|
20
15
|
review_attest,
|
|
21
|
-
run_cut,
|
|
22
|
-
run_cut_handoff,
|
|
23
16
|
run_preflight,
|
|
24
17
|
run_stage,
|
|
25
18
|
run_tail_rule,
|
|
26
19
|
stop_rules,
|
|
27
|
-
tail_commands
|
|
28
|
-
|
|
29
|
-
} from "./chunk-6RR6JZSB.js";
|
|
20
|
+
tail_commands
|
|
21
|
+
} from "./chunk-OV22V63P.js";
|
|
30
22
|
import {
|
|
31
23
|
bash_revert,
|
|
32
24
|
step_zero_notice
|
|
33
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-6RLY27FT.js";
|
|
34
26
|
import {
|
|
35
27
|
COMMAND_MAP,
|
|
36
28
|
core_weights,
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
hook_tool_payload,
|
|
40
|
-
test_declared_logic,
|
|
41
|
-
time_batch_guard,
|
|
42
|
-
time_hook_transcript,
|
|
43
|
-
time_markers,
|
|
44
|
-
time_reported_failure,
|
|
45
|
-
time_spans,
|
|
46
|
-
time_transcript_line
|
|
47
|
-
} from "./chunk-CICKRHTB.js";
|
|
29
|
+
test_declared_logic
|
|
30
|
+
} from "./chunk-AO4TOV4V.js";
|
|
48
31
|
import {
|
|
49
32
|
agent_consultation_model,
|
|
50
33
|
agent_role_profile,
|
|
51
34
|
consultation_handoff,
|
|
52
35
|
main_model_reader
|
|
53
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-SXABK6UV.js";
|
|
54
37
|
import {
|
|
55
38
|
agent_headless,
|
|
56
39
|
bash_triggers,
|
|
40
|
+
delegation_policy,
|
|
41
|
+
duplicate_read_outcome,
|
|
42
|
+
duplicate_reads,
|
|
57
43
|
gh_api,
|
|
58
44
|
gh_author_association,
|
|
59
45
|
gh_call_kind,
|
|
@@ -63,21 +49,31 @@ import {
|
|
|
63
49
|
git_gh_issue_read,
|
|
64
50
|
interactive_ask,
|
|
65
51
|
interpreter_options,
|
|
52
|
+
investigation_reads,
|
|
53
|
+
issue_watch_diff,
|
|
66
54
|
lane_child_marker,
|
|
55
|
+
lane_guard_policy,
|
|
67
56
|
lane_registry,
|
|
68
57
|
repo_party,
|
|
58
|
+
run_cut,
|
|
59
|
+
run_cut_handoff,
|
|
69
60
|
run_headless,
|
|
70
61
|
run_hold,
|
|
71
62
|
run_liveness,
|
|
72
63
|
shell_segments,
|
|
64
|
+
shell_tokens,
|
|
73
65
|
token_shape
|
|
74
|
-
} from "./chunk-
|
|
66
|
+
} from "./chunk-5CUXGQT6.js";
|
|
75
67
|
import {
|
|
76
68
|
PACKAGE_JSON,
|
|
77
69
|
agent_session_role,
|
|
78
70
|
canonical_command,
|
|
79
71
|
cost_blocks,
|
|
80
72
|
find_package_directory,
|
|
73
|
+
hook_context,
|
|
74
|
+
hook_decision,
|
|
75
|
+
hook_tool_payload,
|
|
76
|
+
issue_citation,
|
|
81
77
|
issue_cite,
|
|
82
78
|
lane_reap,
|
|
83
79
|
package_manifest,
|
|
@@ -86,10 +82,16 @@ import {
|
|
|
86
82
|
run_event_stream,
|
|
87
83
|
run_event_stream_emit,
|
|
88
84
|
session_cite,
|
|
85
|
+
time_batch_guard,
|
|
86
|
+
time_hook_transcript,
|
|
89
87
|
time_josh_names,
|
|
88
|
+
time_markers,
|
|
89
|
+
time_reported_failure,
|
|
90
90
|
time_shell,
|
|
91
|
+
time_spans,
|
|
92
|
+
time_transcript_line,
|
|
91
93
|
transcript_tail
|
|
92
|
-
} from "./chunk-
|
|
94
|
+
} from "./chunk-G5WSPYJ6.js";
|
|
93
95
|
import {
|
|
94
96
|
error_text
|
|
95
97
|
} from "./chunk-LRD2ERRI.js";
|
|
@@ -412,8 +414,8 @@ async function review_refusal_here() {
|
|
|
412
414
|
return await review_refusal(await git_command.repository_root());
|
|
413
415
|
}
|
|
414
416
|
async function assert_read_here() {
|
|
415
|
-
const
|
|
416
|
-
if (
|
|
417
|
+
const refusal6 = await unread_refusal(await git_command.repository_root());
|
|
418
|
+
if (refusal6 !== void 0) throw new Error(refusal6);
|
|
417
419
|
}
|
|
418
420
|
var issue_watch_gate = {
|
|
419
421
|
assert_read_here,
|
|
@@ -548,7 +550,6 @@ var LINE_COUNT_PREFIXES = ["--lines=", "-n", "-"];
|
|
|
548
550
|
var DIGITS = /^\d+$/u;
|
|
549
551
|
var FROM_LINE = /^\+\d+$/u;
|
|
550
552
|
var QUOTES = /^['"]|['"]$/gu;
|
|
551
|
-
var WHITESPACE = /\s+/u;
|
|
552
553
|
var ASSIGNMENT = /^\w+=/u;
|
|
553
554
|
var ALWAYS_BROAD = /* @__PURE__ */ new Set(["find", "for", "node", "python", "python3"]);
|
|
554
555
|
var ANALYSIS_PREFIX = "josh cost:";
|
|
@@ -621,7 +622,7 @@ var COMMAND_TESTS = /* @__PURE__ */ new Map([
|
|
|
621
622
|
["cat", cat_reads_past_cap]
|
|
622
623
|
]);
|
|
623
624
|
function words_of(segment) {
|
|
624
|
-
const words =
|
|
625
|
+
const words = shell_tokens.words_of(segment).map((word) => word.text.replaceAll(QUOTES, ""));
|
|
625
626
|
const start = words.findIndex((word) => !ASSIGNMENT.test(word));
|
|
626
627
|
return start === -1 ? [] : words.slice(start);
|
|
627
628
|
}
|
|
@@ -1155,6 +1156,36 @@ var ROW6 = {
|
|
|
1155
1156
|
};
|
|
1156
1157
|
var direct_git_status = { DIRECT_GIT_STATUS_REASON, ROW: ROW6, is_covered_status };
|
|
1157
1158
|
|
|
1159
|
+
// scripts/rules/direct-issue-comment.ts
|
|
1160
|
+
import path3 from "node:path";
|
|
1161
|
+
|
|
1162
|
+
// scripts/rules/standalone-gh-call.ts
|
|
1163
|
+
var WORD_SEPARATOR = " ";
|
|
1164
|
+
var PLAIN_WORD = /^[\w./=-]+$/u;
|
|
1165
|
+
function line_of(words) {
|
|
1166
|
+
return words.join(WORD_SEPARATOR);
|
|
1167
|
+
}
|
|
1168
|
+
function is_plain_word(word) {
|
|
1169
|
+
return PLAIN_WORD.test(word);
|
|
1170
|
+
}
|
|
1171
|
+
function split_issue(rest) {
|
|
1172
|
+
const issues = rest.filter((word) => issue_number_shape.is_issue_number(word));
|
|
1173
|
+
const [issue] = issues;
|
|
1174
|
+
const flags = line_of(rest.filter((word) => !issue_number_shape.is_issue_number(word)));
|
|
1175
|
+
return issue !== void 0 && issues.length === 1 ? { issue, flags } : void 0;
|
|
1176
|
+
}
|
|
1177
|
+
function call_of(line, lead) {
|
|
1178
|
+
const words = line.trim().split(WORD_SEPARATOR);
|
|
1179
|
+
const is_lead = line_of(words.slice(0, lead.length)) === line_of(lead);
|
|
1180
|
+
return is_lead && words.every((word) => is_plain_word(word)) ? split_issue(words.slice(lead.length)) : void 0;
|
|
1181
|
+
}
|
|
1182
|
+
function input_of(call, command_of2) {
|
|
1183
|
+
if (call.name !== cost_blocks.BASH_TOOL || !json_value.is_record(call.input)) return void 0;
|
|
1184
|
+
const command = command_of2(time_shell.bash_command(call.input));
|
|
1185
|
+
return command === void 0 ? void 0 : { ...call.input, command };
|
|
1186
|
+
}
|
|
1187
|
+
var standalone_gh_call = { call_of, input_of, is_plain_word, line_of };
|
|
1188
|
+
|
|
1158
1189
|
// scripts/rules/direct-issue-comment.ts
|
|
1159
1190
|
var ISSUE_GROUP = "issue";
|
|
1160
1191
|
var COMMENT_ACTION = "comment";
|
|
@@ -1214,6 +1245,28 @@ function is_any_comment(command) {
|
|
|
1214
1245
|
return is_direct_issue_comment(command) || is_josh_comment(command);
|
|
1215
1246
|
}
|
|
1216
1247
|
var DIRECT_ISSUE_COMMENT_REASON = "\u26D4 direct issue comment: `gh issue comment` (or a `gh api` write to `\u2026/issues/<N>/comments`) posts without the run marker, so the run reads its own comment as a person updating the issue \u2014 the review goes stale and `pnpm josh followup` refuses the merge. Post with `pnpm josh issue:comment <N> --body-file <path>` instead (`shell-body.md`). **This rule fires on every occurrence, not once per run.**";
|
|
1248
|
+
var COMMENT_WORDS = ["gh", ISSUE_GROUP, COMMENT_ACTION];
|
|
1249
|
+
var BODY_FILE_SPELLING = /^(?:(?:-F|--body-file) |--body-file=)(?<file>[\w./-]+)$/u;
|
|
1250
|
+
var STDIN_PATH = "-";
|
|
1251
|
+
var ISSUE_COMMENT_COMMAND = "pnpm josh issue:comment";
|
|
1252
|
+
var BODY_FILE_FLAG = "--body-file";
|
|
1253
|
+
function body_file_of(flags, cwd) {
|
|
1254
|
+
const file = BODY_FILE_SPELLING.exec(flags)?.groups?.["file"];
|
|
1255
|
+
return file === void 0 || file === STDIN_PATH ? void 0 : path3.resolve(cwd, file);
|
|
1256
|
+
}
|
|
1257
|
+
function issue_comment_of(comment, cwd) {
|
|
1258
|
+
const resolved2 = body_file_of(comment.flags, cwd);
|
|
1259
|
+
return resolved2 !== void 0 && standalone_gh_call.is_plain_word(resolved2) ? standalone_gh_call.line_of([ISSUE_COMMENT_COMMAND, comment.issue, BODY_FILE_FLAG, resolved2]) : void 0;
|
|
1260
|
+
}
|
|
1261
|
+
function issue_comment_command(command, context) {
|
|
1262
|
+
const comment = standalone_gh_call.call_of(command, COMMENT_WORDS);
|
|
1263
|
+
const post = comment === void 0 ? void 0 : issue_comment_of(comment, context.cwd);
|
|
1264
|
+
return post !== void 0 && is_direct_issue_comment_in(command.trim(), context) ? post : void 0;
|
|
1265
|
+
}
|
|
1266
|
+
function issue_comment_input(call, _tail, context) {
|
|
1267
|
+
return standalone_gh_call.input_of(call, (command) => issue_comment_command(command, context));
|
|
1268
|
+
}
|
|
1269
|
+
var ISSUE_COMMENT_NOTE = "\u21BB direct issue comment: this `gh issue comment <N> --body-file <path>` ran as `pnpm josh issue:comment <N> --body-file <path>`, which posts the run marker (`shell-body.md`).";
|
|
1217
1270
|
var ROW7 = {
|
|
1218
1271
|
id: "direct-issue-comment",
|
|
1219
1272
|
is_trigger: bash_triggers.on_bash_command(is_direct_issue_comment_in),
|
|
@@ -1221,14 +1274,22 @@ var ROW7 = {
|
|
|
1221
1274
|
decide: () => true,
|
|
1222
1275
|
keeps: bash_triggers.on_bash_command(is_josh_comment),
|
|
1223
1276
|
reaches: bash_triggers.on_bash_command(is_any_comment),
|
|
1277
|
+
rewrite: issue_comment_input,
|
|
1278
|
+
rewrite_note: ISSUE_COMMENT_NOTE,
|
|
1224
1279
|
about: {
|
|
1225
1280
|
title: "Direct issue comment",
|
|
1226
1281
|
topic: "`shell-body.md`",
|
|
1227
|
-
fires: "a comment to the checkout's own repository outside `josh issue:comment` (`gh issue comment` with no `--repo`, or a `gh api` write to `repos/<owner>/<r>/issues/<N>/comments` whose owner is the `{owner}` placeholder or the checkout's own `owner/repo` spelled out); it points at `pnpm josh issue:comment`.
|
|
1282
|
+
fires: "a comment to the checkout's own repository outside `josh issue:comment` (`gh issue comment` with no `--repo`, or a `gh api` write to `repos/<owner>/<r>/issues/<N>/comments` whose owner is the `{owner}` placeholder or the checkout's own `owner/repo` spelled out); it points at `pnpm josh issue:comment`. A line that is only `gh issue comment <N>` with one `--body-file` / `-F <path>` is rewritten to `pnpm josh issue:comment <N> --body-file <path>`; every other form is refused, every occurrence",
|
|
1228
1283
|
quiet: "`pnpm josh issue:comment`, or reading the comments \u2014 the path that writes the run marker"
|
|
1229
1284
|
}
|
|
1230
1285
|
};
|
|
1231
|
-
var direct_issue_comment = {
|
|
1286
|
+
var direct_issue_comment = {
|
|
1287
|
+
DIRECT_ISSUE_COMMENT_REASON,
|
|
1288
|
+
ISSUE_COMMENT_NOTE,
|
|
1289
|
+
ROW: ROW7,
|
|
1290
|
+
is_direct_issue_comment,
|
|
1291
|
+
issue_comment_command
|
|
1292
|
+
};
|
|
1232
1293
|
|
|
1233
1294
|
// scripts/rules/prior-comment-read.ts
|
|
1234
1295
|
var ISSUE_PATH_NUMBER = /issues\/(\d+)/gu;
|
|
@@ -1321,9 +1382,9 @@ function rewritable_path(command) {
|
|
|
1321
1382
|
}
|
|
1322
1383
|
function comments_command(command) {
|
|
1323
1384
|
if (!is_body_only_issue_read(command)) return void 0;
|
|
1324
|
-
const
|
|
1325
|
-
if (
|
|
1326
|
-
return `gh api --paginate ${
|
|
1385
|
+
const path9 = rewritable_path(command);
|
|
1386
|
+
if (path9 === void 0) return void 0;
|
|
1387
|
+
return `gh api --paginate ${path9}/comments --jq ${COMMENTS_JQ}
|
|
1327
1388
|
${command}`;
|
|
1328
1389
|
}
|
|
1329
1390
|
function comments_input(call, tail) {
|
|
@@ -1451,6 +1512,28 @@ function is_josh_read(command) {
|
|
|
1451
1512
|
function is_any_read(command) {
|
|
1452
1513
|
return is_direct_issue_read(command) || is_josh_read(command);
|
|
1453
1514
|
}
|
|
1515
|
+
var VIEW_WORDS = ["gh", ISSUE_GROUP2, VIEW_ACTION];
|
|
1516
|
+
var REPO_SPELLING = /^(?:(?:-R|--repo) |--repo=)(?<repo>[\w.-]+\/[\w.-]+)$/u;
|
|
1517
|
+
var ISSUE_READ_COMMAND2 = "pnpm josh issue:read";
|
|
1518
|
+
var REPO_FLAG = "--repo";
|
|
1519
|
+
function carried_repo(flags) {
|
|
1520
|
+
if (flags === "") return [];
|
|
1521
|
+
const repo = REPO_SPELLING.exec(flags)?.groups?.["repo"];
|
|
1522
|
+
return repo === void 0 ? void 0 : [REPO_FLAG, repo];
|
|
1523
|
+
}
|
|
1524
|
+
function issue_read_of(view) {
|
|
1525
|
+
const repo = carried_repo(view.flags);
|
|
1526
|
+
return repo === void 0 ? void 0 : standalone_gh_call.line_of([ISSUE_READ_COMMAND2, view.issue, ...repo]);
|
|
1527
|
+
}
|
|
1528
|
+
function issue_read_command(command) {
|
|
1529
|
+
const view = standalone_gh_call.call_of(command, VIEW_WORDS);
|
|
1530
|
+
const read2 = view === void 0 ? void 0 : issue_read_of(view);
|
|
1531
|
+
return read2 !== void 0 && is_direct_issue_read(command.trim()) ? read2 : void 0;
|
|
1532
|
+
}
|
|
1533
|
+
function issue_read_input(call) {
|
|
1534
|
+
return standalone_gh_call.input_of(call, issue_read_command);
|
|
1535
|
+
}
|
|
1536
|
+
var ISSUE_READ_NOTE = "\u21BB direct issue read: this `gh issue view <N>` ran as `pnpm josh issue:read <N>`, which withholds a comment from an author without write access (`issue-comments.md`).";
|
|
1454
1537
|
var DIRECT_ISSUE_READ_REASON = "\u26D4 direct issue read: pnpm josh issue:read <N>\nRun that in place of this read of `\u2026/issues/<N>`, its comments or its timeline (`gh api` or `gh issue view`) \u2014 it withholds a comment from an author without write access and marks an untrusted body as a report, which a raw read prints whole as if it were an instruction (`issue-comments.md`). **This rule fires on every occurrence, not once per run.**";
|
|
1455
1538
|
var ROW9 = {
|
|
1456
1539
|
id: "direct-issue-read",
|
|
@@ -1459,14 +1542,22 @@ var ROW9 = {
|
|
|
1459
1542
|
decide: () => true,
|
|
1460
1543
|
keeps: bash_triggers.on_bash_command(is_josh_read),
|
|
1461
1544
|
reaches: bash_triggers.on_bash_command(is_any_read),
|
|
1545
|
+
rewrite: issue_read_input,
|
|
1546
|
+
rewrite_note: ISSUE_READ_NOTE,
|
|
1462
1547
|
about: {
|
|
1463
1548
|
title: "Direct issue read",
|
|
1464
1549
|
topic: "`issue-comments.md`",
|
|
1465
|
-
fires: "a `gh api` GET of the checkout's own `repos/<o>/<r>/issues/<N>`, `\u2026/comments` or `\u2026/timeline` (the `{owner}` placeholder or the origin spelled out), or a `gh issue view <N>` of it, with no projection or one naming the body (or, for the view, the comments); it points at `pnpm josh issue:read`.
|
|
1550
|
+
fires: "a `gh api` GET of the checkout's own `repos/<o>/<r>/issues/<N>`, `\u2026/comments` or `\u2026/timeline` (the `{owner}` placeholder or the origin spelled out), or a `gh issue view <N>` of it, with no projection or one naming the body (or, for the view, the comments); it points at `pnpm josh issue:read`. A line that is only `gh issue view <N>`, with at most `-R` / `--repo <owner>/<repo>`, is rewritten to `pnpm josh issue:read <N>`; every other form is refused, every occurrence",
|
|
1466
1551
|
quiet: "`pnpm josh issue:read` / `run:prep` / `run:entry`, a `--jq` / `--json` projection without the body or the comments, `gh issue view --web`, or another repository named outright"
|
|
1467
1552
|
}
|
|
1468
1553
|
};
|
|
1469
|
-
var direct_issue_read = {
|
|
1554
|
+
var direct_issue_read = {
|
|
1555
|
+
DIRECT_ISSUE_READ_REASON,
|
|
1556
|
+
ISSUE_READ_NOTE,
|
|
1557
|
+
ROW: ROW9,
|
|
1558
|
+
is_direct_issue_read,
|
|
1559
|
+
issue_read_command
|
|
1560
|
+
};
|
|
1470
1561
|
|
|
1471
1562
|
// scripts/rules/direct-vitest-run.ts
|
|
1472
1563
|
var VITEST_PROGRAM = "vitest";
|
|
@@ -1942,10 +2033,10 @@ function is_interpreter_write(segment, body) {
|
|
|
1942
2033
|
}
|
|
1943
2034
|
var PERL = "perl";
|
|
1944
2035
|
var PERL_IN_PLACE = /^-[A-Za-z0-9]*i/u;
|
|
1945
|
-
var
|
|
2036
|
+
var WHITESPACE = /\s+/u;
|
|
1946
2037
|
function is_in_place_perl(segment) {
|
|
1947
2038
|
if (time_shell.leading_word(segment) !== PERL) return false;
|
|
1948
|
-
return segment.split(
|
|
2039
|
+
return segment.split(WHITESPACE).some((word) => PERL_IN_PLACE.test(word));
|
|
1949
2040
|
}
|
|
1950
2041
|
function has_body_interpreter(line) {
|
|
1951
2042
|
return shell_segments.segments_of(line.text).some((segment) => is_interpreter_write(segment, line.body) || is_in_place_perl(segment));
|
|
@@ -2237,7 +2328,7 @@ var git_force = {
|
|
|
2237
2328
|
};
|
|
2238
2329
|
|
|
2239
2330
|
// scripts/rules/implementation-cut.ts
|
|
2240
|
-
import
|
|
2331
|
+
import path4 from "node:path";
|
|
2241
2332
|
|
|
2242
2333
|
// scripts/run/cut/run-cut-decline.ts
|
|
2243
2334
|
var DECLINE_PREFIX = "josh-run-cut-decline-";
|
|
@@ -2363,7 +2454,7 @@ function environment_for(transcript, source) {
|
|
|
2363
2454
|
}
|
|
2364
2455
|
return {
|
|
2365
2456
|
...source,
|
|
2366
|
-
[agent_session_environment.SESSION_ID_KEY]:
|
|
2457
|
+
[agent_session_environment.SESSION_ID_KEY]: path4.basename(transcript, ".jsonl")
|
|
2367
2458
|
};
|
|
2368
2459
|
}
|
|
2369
2460
|
function session_verdict(transcript, directory, source) {
|
|
@@ -2410,8 +2501,8 @@ function file_path_of(call) {
|
|
|
2410
2501
|
return typeof value === "string" ? value : "";
|
|
2411
2502
|
}
|
|
2412
2503
|
function is_handoff_write(call, directory, issue) {
|
|
2413
|
-
const handoff =
|
|
2414
|
-
return
|
|
2504
|
+
const handoff = path4.resolve(directory, run_cut_handoff.handoff_path_of(issue));
|
|
2505
|
+
return path4.resolve(directory, file_path_of(call)) === handoff;
|
|
2415
2506
|
}
|
|
2416
2507
|
function refusable_issue(call, state) {
|
|
2417
2508
|
const issue = uncut_run_issue(state);
|
|
@@ -3565,17 +3656,17 @@ function word_before(segment, call) {
|
|
|
3565
3656
|
const words = git_argv.words_of(segment);
|
|
3566
3657
|
return words[words.length - call.args.length - BEFORE_PROGRAM] ?? "";
|
|
3567
3658
|
}
|
|
3568
|
-
function
|
|
3659
|
+
function call_of2(segment) {
|
|
3569
3660
|
const call = git_argv.program_of(segment);
|
|
3570
3661
|
if (call === void 0) return void 0;
|
|
3571
3662
|
const is_lookup = LOOKUP_FLAGS.has(call.name) && plain_name(word_before(segment, call)) === LOOKUP_WRAPPER;
|
|
3572
3663
|
return { name: is_lookup ? LOOKUP_WRAPPER : plain_name(call.name), args: call.args };
|
|
3573
3664
|
}
|
|
3574
3665
|
function resolved_call(segment) {
|
|
3575
|
-
let call =
|
|
3666
|
+
let call = call_of2(segment);
|
|
3576
3667
|
let inner = inner_words_of(call);
|
|
3577
3668
|
while (inner !== void 0) {
|
|
3578
|
-
call =
|
|
3669
|
+
call = call_of2(inner.join(" "));
|
|
3579
3670
|
inner = inner_words_of(call);
|
|
3580
3671
|
}
|
|
3581
3672
|
return call;
|
|
@@ -4252,11 +4343,11 @@ var ROW31 = {
|
|
|
4252
4343
|
var index_guard = { INDEX_MUTATION_REASON, ROW: ROW31, is_index_mutation };
|
|
4253
4344
|
|
|
4254
4345
|
// scripts/rules/protected-files.ts
|
|
4255
|
-
import
|
|
4346
|
+
import path6 from "node:path";
|
|
4256
4347
|
|
|
4257
4348
|
// scripts/rules/secret-paths.ts
|
|
4258
4349
|
import os3 from "node:os";
|
|
4259
|
-
import
|
|
4350
|
+
import path5 from "node:path";
|
|
4260
4351
|
var TOKEN_QUOTES = /["']/gu;
|
|
4261
4352
|
var BRACED_VARIABLE = /\$\{(\w+)\}/gu;
|
|
4262
4353
|
var BACKSLASH = /\\/gu;
|
|
@@ -4273,7 +4364,7 @@ var HOME_PREFIXES = ["~/", "$HOME/"];
|
|
|
4273
4364
|
var HOME_SECRET_FILES = /* @__PURE__ */ new Set([".netrc", ".curlrc", ".npmrc"]);
|
|
4274
4365
|
var HOME_SECRET_DIRECTORIES = [".ssh", ".config/gh"];
|
|
4275
4366
|
function is_environment_file(token) {
|
|
4276
|
-
const name =
|
|
4367
|
+
const name = path5.basename(token);
|
|
4277
4368
|
if (TRACKED_VARIANTS.has(name)) return false;
|
|
4278
4369
|
return SECRET_FILES.has(name) || name.startsWith(ENVIRONMENT_VARIANT_PREFIX);
|
|
4279
4370
|
}
|
|
@@ -4298,7 +4389,7 @@ function is_secret_token(token) {
|
|
|
4298
4389
|
function spellings_of(word) {
|
|
4299
4390
|
const token = word.replaceAll(TOKEN_QUOTES, "").replaceAll(BRACED_VARIABLE, "$$$1");
|
|
4300
4391
|
return [token.replaceAll(BACKSLASH, ""), token.replaceAll(BACKSLASH, "/")].map(
|
|
4301
|
-
(spelling) =>
|
|
4392
|
+
(spelling) => path5.posix.normalize(spelling)
|
|
4302
4393
|
);
|
|
4303
4394
|
}
|
|
4304
4395
|
function is_secret_path(word) {
|
|
@@ -4311,7 +4402,7 @@ var READ_MARK = "read";
|
|
|
4311
4402
|
var WRITE_MARK = "write";
|
|
4312
4403
|
var READ_OPERATOR = "<";
|
|
4313
4404
|
var REDIRECT = />\||[<>]/gu;
|
|
4314
|
-
var
|
|
4405
|
+
var PIECE_END = "\0";
|
|
4315
4406
|
var NEXT5 = 1;
|
|
4316
4407
|
var ANY_MARK = /* @__PURE__ */ new Set([READ_MARK, WRITE_MARK]);
|
|
4317
4408
|
var { SHELLS: SHELLS2 } = nested_commands;
|
|
@@ -4322,13 +4413,16 @@ function redirect_marks_of(segment, program) {
|
|
|
4322
4413
|
function mark_of(operator) {
|
|
4323
4414
|
return operator === READ_OPERATOR ? READ_MARK : WRITE_MARK;
|
|
4324
4415
|
}
|
|
4325
|
-
function
|
|
4326
|
-
const
|
|
4327
|
-
const spaced = segment.replaceAll(
|
|
4416
|
+
function marked_pieces(word, marks) {
|
|
4417
|
+
const pieced = word.text.replaceAll(
|
|
4328
4418
|
REDIRECT,
|
|
4329
|
-
(operator, offset) => marks.startsWith(operator, offset) ?
|
|
4419
|
+
(operator, offset) => marks.startsWith(operator, word.begin + offset) ? `${PIECE_END}${mark_of(operator)}${PIECE_END}` : operator
|
|
4330
4420
|
);
|
|
4331
|
-
return
|
|
4421
|
+
return pieced.split(PIECE_END).filter((piece) => piece !== "");
|
|
4422
|
+
}
|
|
4423
|
+
function marked_words(segment, program) {
|
|
4424
|
+
const marks = redirect_marks_of(segment, program);
|
|
4425
|
+
return shell_tokens.words_of(segment).flatMap((word) => marked_pieces(word, marks));
|
|
4332
4426
|
}
|
|
4333
4427
|
function targets_of(segment, program) {
|
|
4334
4428
|
const words = marked_words(segment, program);
|
|
@@ -4342,7 +4436,7 @@ var GREP_TOOL = "Grep";
|
|
|
4342
4436
|
var FILE_TOOLS = /* @__PURE__ */ new Set([READ_TOOL2, GREP_TOOL]);
|
|
4343
4437
|
var { is_edit_tool: is_edit_tool4 } = edit_tool;
|
|
4344
4438
|
var { is_secret_path: is_secret_path2 } = secret_paths;
|
|
4345
|
-
var SETTINGS_FILE =
|
|
4439
|
+
var SETTINGS_FILE = path6.join(".claude", "settings.json");
|
|
4346
4440
|
var SHELL_PROGRAMS = /* @__PURE__ */ new Set([
|
|
4347
4441
|
"cp",
|
|
4348
4442
|
"install",
|
|
@@ -4407,9 +4501,9 @@ function is_secret_access(call) {
|
|
|
4407
4501
|
}
|
|
4408
4502
|
function is_consumer_settings_edit(call, is_kit_consumer) {
|
|
4409
4503
|
if (!is_edit_tool4(call.name)) return false;
|
|
4410
|
-
const file_path =
|
|
4411
|
-
if (!file_path.endsWith(`${
|
|
4412
|
-
return is_kit_consumer(
|
|
4504
|
+
const file_path = path6.resolve(file_path_of2(call));
|
|
4505
|
+
if (!file_path.endsWith(`${path6.sep}${SETTINGS_FILE}`)) return false;
|
|
4506
|
+
return is_kit_consumer(path6.dirname(path6.dirname(file_path)));
|
|
4413
4507
|
}
|
|
4414
4508
|
function is_protected_file_call(call, is_kit_consumer = doctor_consumer.is_kit_consumer) {
|
|
4415
4509
|
return is_secret_access(call) || is_consumer_settings_edit(call, is_kit_consumer);
|
|
@@ -5061,15 +5155,17 @@ var CHECK_FLAG = /\s--check\b/u;
|
|
|
5061
5155
|
var QUOTED = /"[^"]*"|'[^']*'/gu;
|
|
5062
5156
|
var UNASKED_FILING_REASON = "\u26D4 unasked filing: this interactive session files an Issue only on the person\u2019s explicit instruction (\u300C\u8D77\u7968\u300D, \u201Cfile an issue\u201D, or a command whose procedure files, such as `kickoff new`). Propose the Issue in the reply and file it once they confirm. It fires on every occurrence (`.claude/skills/workflow-commands/observation-filing.md`).";
|
|
5063
5157
|
function is_instructed(prompt) {
|
|
5064
|
-
const trimmed = prompt.trim();
|
|
5158
|
+
const trimmed = issue_citation.prose_lines(prompt).join("\n").replaceAll(/(?<!`)(`+)(?!`)[\s\S]*?(?<!`)\1(?!`)/gu, "").replaceAll(/「[^「」\n]*」|『[^『』\n]*』|"[^"\n]*"|'[^'\n]*'/gu, "").trim();
|
|
5065
5159
|
return FILING_WORDS.some((pattern) => pattern.test(trimmed));
|
|
5066
5160
|
}
|
|
5067
5161
|
function reply_text(line) {
|
|
5068
|
-
const parsed = ASSISTANT_LINE_SCHEMA.safeParse(
|
|
5162
|
+
const parsed = ASSISTANT_LINE_SCHEMA.safeParse(
|
|
5163
|
+
json_value.parse_or_undefined(codex_prompt.normalize(line))
|
|
5164
|
+
);
|
|
5069
5165
|
return parsed.success ? time_reported_failure.result_text(parsed.data.message.content) : "";
|
|
5070
5166
|
}
|
|
5071
5167
|
function is_person_line(line) {
|
|
5072
|
-
return
|
|
5168
|
+
return last_prompt.person_prompt(line) !== void 0;
|
|
5073
5169
|
}
|
|
5074
5170
|
function reply_before_prompt(tail) {
|
|
5075
5171
|
const lines = tail.split("\n");
|
|
@@ -5346,6 +5442,7 @@ var HOLD_RELEASE = "the hook releases the hold itself; it blocks only when that
|
|
|
5346
5442
|
var FILING_OFFER = "the filing needs a title and a body only the model can write";
|
|
5347
5443
|
var CONCISE_REPLY = "the shorter reply is prose only the model can write";
|
|
5348
5444
|
var NARROW_ENOUGH = "which reading is narrow enough to keep is the author\u2019s call";
|
|
5445
|
+
var BODY_TO_FILE = "the body moves to a file the call does not name";
|
|
5349
5446
|
function rewrite() {
|
|
5350
5447
|
return { remedy: "rewrite", why: REWRITTEN };
|
|
5351
5448
|
}
|
|
@@ -5371,16 +5468,21 @@ var GUARD_REMEDIES = {
|
|
|
5371
5468
|
"shell-body": judgment(
|
|
5372
5469
|
"which part of the body the shell was meant to expand is the author's, not the hook's"
|
|
5373
5470
|
),
|
|
5374
|
-
"raw-field-body": judgment(
|
|
5471
|
+
"raw-field-body": judgment(BODY_TO_FILE),
|
|
5375
5472
|
"credential-body": judgment(
|
|
5376
5473
|
"which text is the credential, and what replaces it, is the author\u2019s"
|
|
5377
5474
|
),
|
|
5378
5475
|
"rule-body": judgment("a trigger-plus-pointer line is written, not derived"),
|
|
5379
5476
|
"direct-filing": judgment(ANOTHER_COMMAND),
|
|
5380
5477
|
"unasked-filing": judgment(NO_RUN),
|
|
5381
|
-
|
|
5382
|
-
|
|
5383
|
-
"direct-
|
|
5478
|
+
// A standalone `gh issue comment <N> --body-file <path>` run as `pnpm josh issue:comment`; an inline
|
|
5479
|
+
// `--body` is refused, since `issue:comment` trims it and expands `\n` (joshuafolkken/kit#7330).
|
|
5480
|
+
"direct-issue-comment": rewrite(),
|
|
5481
|
+
"direct-issue-read": rewrite(),
|
|
5482
|
+
// a standalone `gh issue view <N>` run as `pnpm josh issue:read <N>`
|
|
5483
|
+
"direct-git-status": judgment(
|
|
5484
|
+
"the refusal is spent once per run and its reissue passes, so a rewrite saves at most one round trip while trading the long-format listing the call asked for for porcelain"
|
|
5485
|
+
),
|
|
5384
5486
|
"direct-vitest-run": judgment(ANOTHER_COMMAND),
|
|
5385
5487
|
"direct-pr-create": judgment(ANOTHER_COMMAND),
|
|
5386
5488
|
"pr-merge": judgment(ANOTHER_COMMAND),
|
|
@@ -5952,7 +6054,7 @@ var direct_gh_usage = { record: record2 };
|
|
|
5952
6054
|
// scripts/hooks/hook-demoted.ts
|
|
5953
6055
|
import { readFileSync as readFileSync3 } from "node:fs";
|
|
5954
6056
|
import { mkdir, writeFile } from "node:fs/promises";
|
|
5955
|
-
import
|
|
6057
|
+
import path7 from "node:path";
|
|
5956
6058
|
var DEMOTED_FILE = ".josh/hook-demoted.json";
|
|
5957
6059
|
var NOTICE_HEADER = "\u2139 Demoted rule \u2014 this call ran; do not reissue it. The refusal it would have given:\n";
|
|
5958
6060
|
var INDENT = " ";
|
|
@@ -5970,7 +6072,7 @@ function rules(environment = process.env) {
|
|
|
5970
6072
|
async function write_rules(demoted, file = DEMOTED_FILE) {
|
|
5971
6073
|
const sorted = [...demoted].toSorted((left, right) => left.localeCompare(right));
|
|
5972
6074
|
const body = JSON.stringify({ rules: sorted }, void 0, INDENT);
|
|
5973
|
-
await mkdir(
|
|
6075
|
+
await mkdir(path7.dirname(file), { recursive: true });
|
|
5974
6076
|
await writeFile(file, `${body}
|
|
5975
6077
|
`);
|
|
5976
6078
|
}
|
|
@@ -5999,7 +6101,7 @@ var hook_demoted = {
|
|
|
5999
6101
|
};
|
|
6000
6102
|
|
|
6001
6103
|
// scripts/hooks/implementation-shell.ts
|
|
6002
|
-
import
|
|
6104
|
+
import path8 from "node:path";
|
|
6003
6105
|
|
|
6004
6106
|
// scripts/josh/josh-read-only.ts
|
|
6005
6107
|
var HELP_COMMANDS = /* @__PURE__ */ new Set(["help", "--help", "-h"]);
|
|
@@ -6027,7 +6129,17 @@ function refusal(args) {
|
|
|
6027
6129
|
}
|
|
6028
6130
|
var josh_read_only = { ALL_FLAG, entry_of: entry_of2, is_help_request, refusal };
|
|
6029
6131
|
|
|
6030
|
-
// scripts/hooks/implementation-shell-deny.ts
|
|
6132
|
+
// scripts/hooks/implementation-shell-deny-expansion.ts
|
|
6133
|
+
var DYNAMIC = /[$`]/u;
|
|
6134
|
+
function is_dynamic(word) {
|
|
6135
|
+
return DYNAMIC.test(word);
|
|
6136
|
+
}
|
|
6137
|
+
function refusal2(program, word) {
|
|
6138
|
+
return `\`${program} ${word}\`, an expansion that may spell a write`;
|
|
6139
|
+
}
|
|
6140
|
+
var implementation_shell_deny_expansion = { is_dynamic, refusal: refusal2 };
|
|
6141
|
+
|
|
6142
|
+
// scripts/hooks/implementation-shell-deny-git.ts
|
|
6031
6143
|
var GIT_WRITES = /* @__PURE__ */ new Set([
|
|
6032
6144
|
"add",
|
|
6033
6145
|
"am",
|
|
@@ -6075,11 +6187,7 @@ var LIST_MODE = /^(?:-l$|--list$|-n\d*$|--contains|--no-contains|--points-at|--m
|
|
|
6075
6187
|
var LIST_VALUE_FLAGS = /* @__PURE__ */ new Set(["--sort", "--format"]);
|
|
6076
6188
|
var REFLOG_WRITES = /* @__PURE__ */ new Set(["expire", "delete"]);
|
|
6077
6189
|
var GIT_WRITE_FLAGS = /^-c$|^--(?:config-env|exec-path|output|ext-diff|textconv)/u;
|
|
6078
|
-
var DYNAMIC = /[$`]/u;
|
|
6079
6190
|
var QUOTES5 = /['"\\]/gu;
|
|
6080
|
-
function is_dynamic(word) {
|
|
6081
|
-
return DYNAMIC.test(word);
|
|
6082
|
-
}
|
|
6083
6191
|
function is_branch_change(argument) {
|
|
6084
6192
|
return BRANCH_CHANGE.test(argument) || git_argv.short_cluster_has(argument, BRANCH_CHANGE_LETTERS);
|
|
6085
6193
|
}
|
|
@@ -6101,6 +6209,32 @@ var GIT_READ_FORMS = /* @__PURE__ */ new Map([
|
|
|
6101
6209
|
["tag", is_listing],
|
|
6102
6210
|
["reflog", (args) => !REFLOG_WRITES.has(args[0] ?? "")]
|
|
6103
6211
|
]);
|
|
6212
|
+
function is_git_write(subcommand, args) {
|
|
6213
|
+
if (GIT_WRITES.has(subcommand)) return true;
|
|
6214
|
+
const read_form = GIT_READ_FORMS.get(subcommand);
|
|
6215
|
+
if (read_form === void 0) return false;
|
|
6216
|
+
return args.some((argument) => implementation_shell_deny_expansion.is_dynamic(argument)) || !read_form(args);
|
|
6217
|
+
}
|
|
6218
|
+
function parsed_git(segment) {
|
|
6219
|
+
return git_argv.parse(segment) ?? git_argv.parse(segment.replaceAll(QUOTES5, ""));
|
|
6220
|
+
}
|
|
6221
|
+
function subcommand_refusal(segment) {
|
|
6222
|
+
const call = parsed_git(segment);
|
|
6223
|
+
if (call?.subcommand === void 0) return void 0;
|
|
6224
|
+
if (implementation_shell_deny_expansion.is_dynamic(call.subcommand)) return implementation_shell_deny_expansion.refusal("git", call.subcommand);
|
|
6225
|
+
const subcommand = call.subcommand.replaceAll(QUOTES5, "");
|
|
6226
|
+
const args = call.args.map((argument) => argument.replaceAll(QUOTES5, ""));
|
|
6227
|
+
return is_git_write(subcommand, args) ? `\`git ${subcommand}\`, a git write` : void 0;
|
|
6228
|
+
}
|
|
6229
|
+
function refusal3(segment, args) {
|
|
6230
|
+
if (args.some((argument) => GIT_WRITE_FLAGS.test(argument))) {
|
|
6231
|
+
return "a git option that rewrites its configuration, runs a program or writes a file";
|
|
6232
|
+
}
|
|
6233
|
+
return subcommand_refusal(segment);
|
|
6234
|
+
}
|
|
6235
|
+
var implementation_shell_deny_git = { refusal: refusal3 };
|
|
6236
|
+
|
|
6237
|
+
// scripts/hooks/implementation-shell-deny.ts
|
|
6104
6238
|
var GH_READS = /* @__PURE__ */ new Set([
|
|
6105
6239
|
"checks",
|
|
6106
6240
|
"code",
|
|
@@ -6210,48 +6344,22 @@ var JOSH_SHARED_WRITES = /* @__PURE__ */ new Set([
|
|
|
6210
6344
|
"sync",
|
|
6211
6345
|
"uninstall"
|
|
6212
6346
|
]);
|
|
6213
|
-
function expansion_refusal(program, word) {
|
|
6214
|
-
return `\`${program} ${word}\`, an expansion that may spell a write`;
|
|
6215
|
-
}
|
|
6216
|
-
function is_git_write(subcommand, args) {
|
|
6217
|
-
if (GIT_WRITES.has(subcommand)) return true;
|
|
6218
|
-
const read_form = GIT_READ_FORMS.get(subcommand);
|
|
6219
|
-
if (read_form === void 0) return false;
|
|
6220
|
-
return args.some((argument) => is_dynamic(argument)) || !read_form(args);
|
|
6221
|
-
}
|
|
6222
|
-
function parsed_git(segment) {
|
|
6223
|
-
return git_argv.parse(segment) ?? git_argv.parse(segment.replaceAll(QUOTES5, ""));
|
|
6224
|
-
}
|
|
6225
|
-
function subcommand_refusal(segment) {
|
|
6226
|
-
const call = parsed_git(segment);
|
|
6227
|
-
if (call?.subcommand === void 0) return void 0;
|
|
6228
|
-
if (is_dynamic(call.subcommand)) return expansion_refusal("git", call.subcommand);
|
|
6229
|
-
const subcommand = call.subcommand.replaceAll(QUOTES5, "");
|
|
6230
|
-
const args = call.args.map((argument) => argument.replaceAll(QUOTES5, ""));
|
|
6231
|
-
return is_git_write(subcommand, args) ? `\`git ${subcommand}\`, a git write` : void 0;
|
|
6232
|
-
}
|
|
6233
|
-
function git_refusal(segment, args) {
|
|
6234
|
-
if (args.some((argument) => GIT_WRITE_FLAGS.test(argument))) {
|
|
6235
|
-
return "a git option that rewrites its configuration, runs a program or writes a file";
|
|
6236
|
-
}
|
|
6237
|
-
return subcommand_refusal(segment);
|
|
6238
|
-
}
|
|
6239
6347
|
function is_gh_api_write(args) {
|
|
6240
6348
|
if (args.includes("graphql")) return args.some((argument) => GRAPHQL_MUTATION2.test(argument));
|
|
6241
6349
|
return gh_api.is_write(["gh", ...args].join(" "));
|
|
6242
6350
|
}
|
|
6243
6351
|
function is_gh_verb(argument) {
|
|
6244
|
-
return GH_WRITES.has(argument) || GH_READS.has(argument) || is_dynamic(argument);
|
|
6352
|
+
return GH_WRITES.has(argument) || GH_READS.has(argument) || implementation_shell_deny_expansion.is_dynamic(argument);
|
|
6245
6353
|
}
|
|
6246
6354
|
function verb_refusal(group, args) {
|
|
6247
6355
|
const verb = args.slice(1).find((argument) => is_gh_verb(argument));
|
|
6248
6356
|
if (verb === void 0 || GH_READS.has(verb)) return void 0;
|
|
6249
|
-
return is_dynamic(verb) ?
|
|
6357
|
+
return implementation_shell_deny_expansion.is_dynamic(verb) ? implementation_shell_deny_expansion.refusal(`gh ${group}`, verb) : `\`gh ${group} ${verb}\`, a GitHub write`;
|
|
6250
6358
|
}
|
|
6251
6359
|
function gh_refusal(args) {
|
|
6252
6360
|
const group = args[0] ?? "";
|
|
6253
6361
|
if (group === "api") return is_gh_api_write(args) ? "a `gh api` call other than GET" : void 0;
|
|
6254
|
-
return is_dynamic(group) ?
|
|
6362
|
+
return implementation_shell_deny_expansion.is_dynamic(group) ? implementation_shell_deny_expansion.refusal("gh", group) : verb_refusal(group, args);
|
|
6255
6363
|
}
|
|
6256
6364
|
function is_flag(argument) {
|
|
6257
6365
|
return argument.startsWith("-");
|
|
@@ -6268,7 +6376,7 @@ function package_actions(call) {
|
|
|
6268
6376
|
return end === -1 && call.name === "yarn" ? [...actions, "install"] : actions;
|
|
6269
6377
|
}
|
|
6270
6378
|
function action_refusal(manager, action) {
|
|
6271
|
-
if (is_dynamic(action)) return
|
|
6379
|
+
if (implementation_shell_deny_expansion.is_dynamic(action)) return implementation_shell_deny_expansion.refusal(manager, action);
|
|
6272
6380
|
return PACKAGE_WRITES.has(action) ? `\`${action}\`, a dependency change` : void 0;
|
|
6273
6381
|
}
|
|
6274
6382
|
function package_refusal(call) {
|
|
@@ -6276,19 +6384,19 @@ function package_refusal(call) {
|
|
|
6276
6384
|
}
|
|
6277
6385
|
function josh_refusal(args) {
|
|
6278
6386
|
const command = canonical_command(args[0] ?? "");
|
|
6279
|
-
if (is_dynamic(command)) return
|
|
6387
|
+
if (implementation_shell_deny_expansion.is_dynamic(command)) return implementation_shell_deny_expansion.refusal("josh", command);
|
|
6280
6388
|
if (!JOSH_SHARED_WRITES.has(command)) return void 0;
|
|
6281
6389
|
const rule = josh_read_only.refusal(args);
|
|
6282
6390
|
return rule === void 0 ? void 0 : `\`josh ${command}\`, a shared-state write: ${rule}`;
|
|
6283
6391
|
}
|
|
6284
|
-
function
|
|
6285
|
-
if (is_dynamic(call.name)) return `\`${call.name}\`, a program an expansion names`;
|
|
6286
|
-
if (call.name === "git") return
|
|
6392
|
+
function refusal4(segment, call) {
|
|
6393
|
+
if (implementation_shell_deny_expansion.is_dynamic(call.name)) return `\`${call.name}\`, a program an expansion names`;
|
|
6394
|
+
if (call.name === "git") return implementation_shell_deny_git.refusal(segment, call.args);
|
|
6287
6395
|
if (call.name === "gh") return gh_refusal(call.args);
|
|
6288
6396
|
if (call.name === "josh") return josh_refusal(call.args);
|
|
6289
6397
|
return package_refusal(call);
|
|
6290
6398
|
}
|
|
6291
|
-
var implementation_shell_deny = { refusal:
|
|
6399
|
+
var implementation_shell_deny = { refusal: refusal4 };
|
|
6292
6400
|
|
|
6293
6401
|
// scripts/hooks/implementation-shell-nested.ts
|
|
6294
6402
|
var SUBSTITUTION3 = /\$\(([^()]*)\)|`([^`]*)`|[<>]\(([^()]*)\)/u;
|
|
@@ -6410,8 +6518,21 @@ var QUOTES6 = /^['"]|['"]$/gu;
|
|
|
6410
6518
|
var DYNAMIC_PATH = /[$`*?{}\\]/u;
|
|
6411
6519
|
var COMPOUND_HEAD = /^\s*(?:[({!]\s*|(?:if|then|else|elif|while|until|do)\s+)+/u;
|
|
6412
6520
|
var COMPOUND_CLOSERS = /* @__PURE__ */ new Set([")", "}", " ", " ", "\n"]);
|
|
6413
|
-
var KEYWORDS = /* @__PURE__ */ new Set([
|
|
6414
|
-
|
|
6521
|
+
var KEYWORDS = /* @__PURE__ */ new Set([
|
|
6522
|
+
"for",
|
|
6523
|
+
"do",
|
|
6524
|
+
"done",
|
|
6525
|
+
"then",
|
|
6526
|
+
"else",
|
|
6527
|
+
"fi",
|
|
6528
|
+
"case",
|
|
6529
|
+
"select",
|
|
6530
|
+
"function",
|
|
6531
|
+
"esac"
|
|
6532
|
+
]);
|
|
6533
|
+
var FUNCTION_START = /^(?:function\s|[\w.:-]+\s*\(\s*\))/u;
|
|
6534
|
+
var FUNCTION_HEAD = /^(?:function\s+)?[\w.:-]+(?:\s*\()?$/u;
|
|
6535
|
+
var UNREAD_ARMS = [/^case\s[\s\S]*\)/u, /^[^\s$`]*\)/u];
|
|
6415
6536
|
var ARGUMENT_QUOTES = /['"\\]/gu;
|
|
6416
6537
|
var TIME_PROGRAM = /(?:^|\/)time$/u;
|
|
6417
6538
|
var TIME_WRITE = /^-(?:[A-Za-z]*o|-o)/u;
|
|
@@ -6459,8 +6580,8 @@ function written_args(call) {
|
|
|
6459
6580
|
return written.map((argument) => argument.slice(argument.indexOf("=") + 1));
|
|
6460
6581
|
}
|
|
6461
6582
|
function is_outside(target, root) {
|
|
6462
|
-
const relative =
|
|
6463
|
-
return relative.startsWith("..") ||
|
|
6583
|
+
const relative = path8.relative(root, path8.resolve(root, target.replaceAll(QUOTES6, "")));
|
|
6584
|
+
return relative.startsWith("..") || path8.isAbsolute(relative);
|
|
6464
6585
|
}
|
|
6465
6586
|
function file_write_refusal(call, root) {
|
|
6466
6587
|
return write_args_are_unsafe(call.args, root) ? `\`${call.name}\` to a runtime path` : void 0;
|
|
@@ -6490,26 +6611,30 @@ function body_of(segment) {
|
|
|
6490
6611
|
while (end > 0 && COMPOUND_CLOSERS.has(body.charAt(end - 1))) end -= 1;
|
|
6491
6612
|
return body.slice(0, end);
|
|
6492
6613
|
}
|
|
6493
|
-
function
|
|
6614
|
+
function call_of3(segment) {
|
|
6494
6615
|
const body = body_of(segment);
|
|
6495
6616
|
if (KEYWORDS.has(git_argv.words_of(body)[0] ?? "")) return void 0;
|
|
6496
6617
|
return git_argv.program_of(body);
|
|
6497
6618
|
}
|
|
6498
6619
|
function command_refusal(segment, root) {
|
|
6499
|
-
const call =
|
|
6620
|
+
const call = call_of3(segment);
|
|
6500
6621
|
return call === void 0 ? void 0 : call_refusal(body_of(segment), call, root);
|
|
6501
6622
|
}
|
|
6623
|
+
function is_unread_body(body) {
|
|
6624
|
+
if (FUNCTION_START.test(body)) return !FUNCTION_HEAD.test(body);
|
|
6625
|
+
return UNREAD_ARMS.some((pattern) => pattern.test(body));
|
|
6626
|
+
}
|
|
6502
6627
|
function segment_refusal(segment, root) {
|
|
6503
6628
|
if (wrapper_writes(segment)) return "a time output file";
|
|
6504
|
-
if (
|
|
6629
|
+
if (is_unread_body(body_of(segment))) return "a `case` arm or function body";
|
|
6505
6630
|
const target = redirected_paths(segment).find((redirected) => unsafe_path(redirected, root));
|
|
6506
6631
|
return target === void 0 ? command_refusal(segment, root) : `redirect to \`${target}\``;
|
|
6507
6632
|
}
|
|
6508
6633
|
function is_cd(segment) {
|
|
6509
|
-
return
|
|
6634
|
+
return call_of3(segment)?.name === "cd";
|
|
6510
6635
|
}
|
|
6511
6636
|
function is_write(segment) {
|
|
6512
|
-
const call =
|
|
6637
|
+
const call = call_of3(segment);
|
|
6513
6638
|
if (call !== void 0 && (FILE_PROGRAMS.has(call.name) || writes_elsewhere(call))) return true;
|
|
6514
6639
|
return redirected_paths(segment).some((redirected) => redirected !== "/dev/null");
|
|
6515
6640
|
}
|
|
@@ -6520,7 +6645,7 @@ function segments_refusal(segments, root) {
|
|
|
6520
6645
|
}
|
|
6521
6646
|
function nested_lines(line, segments) {
|
|
6522
6647
|
const launched = segments.flatMap((segment) => {
|
|
6523
|
-
const call =
|
|
6648
|
+
const call = call_of3(segment);
|
|
6524
6649
|
return call === void 0 ? [] : implementation_shell_nested.call_commands(call);
|
|
6525
6650
|
});
|
|
6526
6651
|
return [...implementation_shell_nested.substitution_bodies(line), ...launched];
|
|
@@ -6541,13 +6666,13 @@ function input_refusal(command) {
|
|
|
6541
6666
|
if (command.trim() === "") return "an empty command";
|
|
6542
6667
|
return time_shell.has_heredoc(command) ? "a heredoc" : void 0;
|
|
6543
6668
|
}
|
|
6544
|
-
function
|
|
6669
|
+
function refusal5(command, root = process.cwd()) {
|
|
6545
6670
|
return input_refusal(command) ?? segments_refusal(segments_of2(command), root);
|
|
6546
6671
|
}
|
|
6547
6672
|
function is_unsafe(command, root = process.cwd()) {
|
|
6548
|
-
return
|
|
6673
|
+
return refusal5(command, root) !== void 0;
|
|
6549
6674
|
}
|
|
6550
|
-
var implementation_shell = { is_unsafe, refusal:
|
|
6675
|
+
var implementation_shell = { is_unsafe, refusal: refusal5 };
|
|
6551
6676
|
|
|
6552
6677
|
// scripts/hooks/implementation-authority.ts
|
|
6553
6678
|
var HANDOFF2 = " Implementation refused before execution. Record the plan with issue:plan or issue:comment and hand it to lane:dispatch; repeating the request does not grant authority.";
|
|
@@ -6717,8 +6842,8 @@ function emit(raw_payload, outcome, rewrite3, context = hook_context.from_proces
|
|
|
6717
6842
|
`);
|
|
6718
6843
|
}
|
|
6719
6844
|
async function record_refusal(judged_payload, outcome, context = hook_context.from_process(), demoted = hook_demoted.rules(context.env)) {
|
|
6720
|
-
const
|
|
6721
|
-
await hook_ledger.record_reason(HOOK_NAME,
|
|
6845
|
+
const refusal6 = outcome.reason ?? hook_demoted.refusal_of(outcome.notice, demoted);
|
|
6846
|
+
await hook_ledger.record_reason(HOOK_NAME, refusal6, judged_payload, context);
|
|
6722
6847
|
if (outcome.reason === void 0) await direct_gh_usage.record(judged_payload, context);
|
|
6723
6848
|
}
|
|
6724
6849
|
async function respond(raw_payload, context = hook_context.from_process()) {
|