@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,7 +1,7 @@
|
|
|
1
1
|
import { process_identity } from '#scripts/josh/process-identity'
|
|
2
2
|
import { lane_process_table, type TableRead } from '#scripts/lane/lane-process-table'
|
|
3
3
|
import type { CarryRead } from '#scripts/run/carry/run-carry'
|
|
4
|
-
import { run_wake } from '#scripts/run/wake/run-wake'
|
|
4
|
+
import { run_wake, type RunWake } from '#scripts/run/wake/run-wake'
|
|
5
5
|
import type { ProcessRoots } from './run-board-process-groups'
|
|
6
6
|
|
|
7
7
|
// The run's own processes the 💻 section names: the supervisor from its wake stamp and the parent
|
|
@@ -38,6 +38,29 @@ function roots_of(
|
|
|
38
38
|
return { supervisor: supervisor_of(repository, is_same), parent: parent_of(read, is_same) }
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
+
// A handed-back budget or the supervisor's own driver is no judgment session. Codex's pid-less
|
|
42
|
+
// carry uses the launch pid already recorded by the wake supervisor instead.
|
|
43
|
+
function is_session_owner(read: CarryRead): boolean {
|
|
44
|
+
return read.kind === 'carried' && read.carry.is_handed_off !== true
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function live_session_pid(
|
|
48
|
+
pid: number | undefined,
|
|
49
|
+
start: string | undefined,
|
|
50
|
+
wake: RunWake | undefined,
|
|
51
|
+
is_same: SameProcess,
|
|
52
|
+
): boolean {
|
|
53
|
+
return pid !== undefined && pid !== wake?.pid && is_same(pid, start) !== false
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function session_is_active(repository: string, read: CarryRead, is_same: SameProcess): boolean {
|
|
57
|
+
if (read.kind !== 'carried' || !is_session_owner(read)) return false
|
|
58
|
+
const wake = run_wake.read_wake(run_wake.wake_path(repository))
|
|
59
|
+
const pid = read.carry.owner_pid ?? wake?.woke_pid
|
|
60
|
+
|
|
61
|
+
return live_session_pid(pid, read.carry.owner_start, wake, is_same)
|
|
62
|
+
}
|
|
63
|
+
|
|
41
64
|
// `is_same_process` with each start time answered from the redraw's own `ps` snapshot, so the board's
|
|
42
65
|
// read runs no `ps` of its own per pid (joshuafolkken/kit#4263). Without a snapshot no start is known,
|
|
43
66
|
// and a recorded start reads as "cannot tell".
|
|
@@ -48,7 +71,7 @@ async function same_in(table: TableRead | undefined): Promise<SameProcess> {
|
|
|
48
71
|
return (pid, start) => process_identity.is_same_process(pid, start, read)
|
|
49
72
|
}
|
|
50
73
|
|
|
51
|
-
const run_board_roots = { roots_of, same_in }
|
|
74
|
+
const run_board_roots = { roots_of, same_in, session_is_active }
|
|
52
75
|
|
|
53
76
|
export { run_board_roots }
|
|
54
77
|
export type { SameProcess }
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { IssueOutcome } from '#scripts/issue/issue-outcome'
|
|
1
2
|
import type { ItemState, ItemStatus } from './run-board-status'
|
|
2
3
|
|
|
3
4
|
// What a child keeps of its run when it settles into a state other than running — shared by the
|
|
@@ -25,9 +26,22 @@ function kept_of(
|
|
|
25
26
|
// The status a child settles into: its start and the track it had reached, so a settled row still
|
|
26
27
|
// draws how it got there.
|
|
27
28
|
function settled_as(previous: ItemStatus | undefined, state: ItemState): ItemStatus {
|
|
28
|
-
return {
|
|
29
|
+
return {
|
|
30
|
+
state,
|
|
31
|
+
started_ms: previous?.started_ms,
|
|
32
|
+
...kept_of(previous),
|
|
33
|
+
...(previous?.outcome !== undefined && { outcome: previous.outcome }),
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const OUTCOME_STATES: ReadonlySet<ItemState> = new Set(['done', 'already_done', 'withdrawn'])
|
|
38
|
+
|
|
39
|
+
function with_outcome(status: ItemStatus, outcome: IssueOutcome | undefined): ItemStatus {
|
|
40
|
+
return outcome === undefined || !OUTCOME_STATES.has(status.state)
|
|
41
|
+
? status
|
|
42
|
+
: { ...status, outcome }
|
|
29
43
|
}
|
|
30
44
|
|
|
31
|
-
const run_board_settle = { relaunch_of, settled_as }
|
|
45
|
+
const run_board_settle = { relaunch_of, settled_as, with_outcome }
|
|
32
46
|
|
|
33
47
|
export { run_board_settle }
|
|
@@ -21,19 +21,25 @@ interface SetupRead {
|
|
|
21
21
|
|
|
22
22
|
const NO_SETUP: SetupRead = { setup: undefined, setup_ms: undefined }
|
|
23
23
|
|
|
24
|
+
// Only these stages depend on the judgment session owning the carry.
|
|
25
|
+
const SESSION_STAGES: ReadonlySet<string> = new Set([STAGE.JUDGING, STAGE.SESSION])
|
|
26
|
+
|
|
24
27
|
// The stages of a hand-back to a session, and of the retrospective unit the driver waits on at a drain
|
|
25
28
|
// (joshuafolkken/kit#6745). Only the run's next stage ends one, whatever the session or the unit writes
|
|
26
29
|
// to the stream meanwhile.
|
|
27
|
-
const
|
|
28
|
-
STAGE.JUDGING,
|
|
29
|
-
STAGE.SESSION,
|
|
30
|
-
STAGE.RETROSPECTIVE,
|
|
31
|
-
])
|
|
30
|
+
const RETAINED_STAGES: ReadonlySet<string> = new Set([...SESSION_STAGES, STAGE.RETROSPECTIVE])
|
|
32
31
|
|
|
33
32
|
function is_setup(event: RunEvent): boolean {
|
|
34
33
|
return event.kind === KIND.SETUP
|
|
35
34
|
}
|
|
36
35
|
|
|
36
|
+
// Session stages describe the last hand-off even after its owner has returned the budget.
|
|
37
|
+
function is_working(setup: string | undefined, is_session_active: boolean | undefined): boolean {
|
|
38
|
+
if (setup === undefined) return false
|
|
39
|
+
|
|
40
|
+
return !SESSION_STAGES.has(setup) || is_session_active !== false
|
|
41
|
+
}
|
|
42
|
+
|
|
37
43
|
// A launch that returned without a child (`run_event_setup.no_child`): it ends its own lane's stage,
|
|
38
44
|
// and prepares nothing a person waits on.
|
|
39
45
|
function is_refusal(event: RunEvent): boolean {
|
|
@@ -65,7 +71,7 @@ function is_opening(events: ReadonlyArray<RunEvent>, stage: RunEvent): boolean {
|
|
|
65
71
|
// Whether the run is at `stage` now: at any stage while it is starting; after that only at one it is
|
|
66
72
|
// itself working through.
|
|
67
73
|
function is_standing(events: ReadonlyArray<RunEvent>, stage: RunEvent): boolean {
|
|
68
|
-
if (!has_started(events) ||
|
|
74
|
+
if (!has_started(events) || RETAINED_STAGES.has(stage.text)) return true
|
|
69
75
|
|
|
70
76
|
return is_opening(events, stage)
|
|
71
77
|
}
|
|
@@ -119,7 +125,7 @@ function lane_stage(events: ReadonlyArray<RunEvent>, issue: number): LaneStage |
|
|
|
119
125
|
return { text: step.text, at_ms: Date.parse(step.at) }
|
|
120
126
|
}
|
|
121
127
|
|
|
122
|
-
const run_board_setup = { is_refusal, lane_stage, read }
|
|
128
|
+
const run_board_setup = { is_refusal, is_working, lane_stage, read }
|
|
123
129
|
|
|
124
130
|
export { run_board_setup }
|
|
125
131
|
export type { LaneStage, SetupRead }
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { PROJECT_ROOT } from '#scripts/init/init-paths'
|
|
2
|
+
import { issue_outcome } from '#scripts/issue/issue-outcome'
|
|
2
3
|
import { stamp_file } from '#scripts/josh/stamp-file'
|
|
3
4
|
import { z } from 'zod'
|
|
4
5
|
import type { ClosedIssue } from './run-board-closed'
|
|
@@ -38,6 +39,9 @@ const label_names_schema = z.array(z.string())
|
|
|
38
39
|
// A close time JSON dropped is read back as unknown.
|
|
39
40
|
const closed_issue_schema = z
|
|
40
41
|
.object({
|
|
42
|
+
outcome: z
|
|
43
|
+
.object({ summary: issue_outcome.summary_schema, url: issue_outcome.url_schema })
|
|
44
|
+
.optional(),
|
|
41
45
|
title: z.string(),
|
|
42
46
|
labels: label_names_schema,
|
|
43
47
|
closed_ms: z.number().optional(),
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { AgentResult } from '#scripts/agent/agent-event'
|
|
2
|
+
import type { IssueOutcome } from '#scripts/issue/issue-outcome'
|
|
2
3
|
import type { Span } from '#scripts/lane/lane-spans'
|
|
3
4
|
import type { PrChecks } from '#scripts/run/event/run-event-checks'
|
|
4
5
|
import { run_event_retry } from '#scripts/run/event/run-event-retry'
|
|
@@ -40,6 +41,7 @@ type ItemState =
|
|
|
40
41
|
| 'unknown'
|
|
41
42
|
|
|
42
43
|
interface ItemStatus {
|
|
44
|
+
outcome?: IssueOutcome | undefined
|
|
43
45
|
state: ItemState
|
|
44
46
|
// When the child first launched in this run — a re-dispatch or a restart does not move it.
|
|
45
47
|
started_ms?: number | undefined
|
|
@@ -80,6 +82,8 @@ interface LatestEvent {
|
|
|
80
82
|
// The run as a whole, read off the same stream. The setup half is `run-board-setup.ts`'s, absent
|
|
81
83
|
// where a stream carries no stage.
|
|
82
84
|
interface RunActivity extends Partial<SetupRead> {
|
|
85
|
+
// Runtime evidence for the stage, independent of its retained description.
|
|
86
|
+
is_setup_working?: boolean | undefined
|
|
83
87
|
last_event_ms: number | undefined
|
|
84
88
|
// The newest thing the run did — its newest position, or its newest event where it has none yet —
|
|
85
89
|
// in the event's own words, and when.
|
|
@@ -395,7 +399,15 @@ function settle_closed(
|
|
|
395
399
|
statuses: ReadonlyMap<number, ItemStatus>,
|
|
396
400
|
read: OpenRead,
|
|
397
401
|
): ReadonlyMap<number, ItemStatus> {
|
|
398
|
-
return new Map(
|
|
402
|
+
return new Map(
|
|
403
|
+
[...statuses].map(([issue, status]) => {
|
|
404
|
+
const closed = read.closed.get(issue)
|
|
405
|
+
const outcome =
|
|
406
|
+
closed === undefined || is_closed_before_launch(status, closed) ? undefined : closed.outcome
|
|
407
|
+
|
|
408
|
+
return [issue, run_board_settle.with_outcome(settled(issue, status, read), outcome)]
|
|
409
|
+
}),
|
|
410
|
+
)
|
|
399
411
|
}
|
|
400
412
|
|
|
401
413
|
function is_run_stop(event: RunEvent | undefined): boolean {
|
|
@@ -14,6 +14,7 @@ import { run_board_reason, type ReasonRead } from './run-board-reason'
|
|
|
14
14
|
import { run_board_released } from './run-board-released'
|
|
15
15
|
import { run_board_render } from './run-board-render'
|
|
16
16
|
import { run_board_seat, type SeatRead } from './run-board-seat'
|
|
17
|
+
import { run_board_setup } from './run-board-setup'
|
|
17
18
|
import type { Known } from './run-board-snapshot'
|
|
18
19
|
import { run_board_spin, type Spun } from './run-board-spin'
|
|
19
20
|
import { run_board_state, type BoardPorts, type BoardState, type Pace } from './run-board-state'
|
|
@@ -82,10 +83,15 @@ function titles_of(state: BoardState): Titles {
|
|
|
82
83
|
|
|
83
84
|
// A run `run:carry --end` closed and one nobody drives any more are both drawn as stopped.
|
|
84
85
|
function activity_here(local: LocalRead): RunActivity {
|
|
85
|
-
|
|
86
|
+
const activity = run_board_status.activity_of(
|
|
86
87
|
local.events,
|
|
87
88
|
local.ended_ms !== undefined || local.is_stranded,
|
|
88
89
|
)
|
|
90
|
+
|
|
91
|
+
return {
|
|
92
|
+
...activity,
|
|
93
|
+
is_setup_working: run_board_setup.is_working(activity.setup, local.is_session_active),
|
|
94
|
+
}
|
|
89
95
|
}
|
|
90
96
|
|
|
91
97
|
// The already-read supervisor or parent drives retries until the run stops or becomes stranded.
|
|
@@ -129,7 +129,8 @@ function report_relaunch_failure(target: string, note: string): number {
|
|
|
129
129
|
// A pre-gate resume drives the gate, commit, PR and merge — the mechanical
|
|
130
130
|
// ship/bookkeeping region, lowered — while an implementation resume keeps the role default. The
|
|
131
131
|
// phase-aware profile is `agent_argv.resume_argv`'s; a person's `JOSH_WORKER_EFFORT` still wins over it,
|
|
132
|
-
// and a pre-gate resume moves to the ship model — Sonnet, or `JOSH_WORKER_SHIP_MODEL` when that is set
|
|
132
|
+
// and a pre-gate resume moves to the ship model — Sonnet, or `JOSH_WORKER_SHIP_MODEL` when that is set,
|
|
133
|
+
// never above the Issue's `josh.worker` profile (`agent-ship-cap.ts`).
|
|
133
134
|
async function relaunch(target: string, lane: LaneInfo, phase: string): Promise<number> {
|
|
134
135
|
const notes: Array<string> = []
|
|
135
136
|
const result = await lane_relaunch.resume(lane, phase, (note) => {
|
|
@@ -10,12 +10,15 @@ import { run_step_section } from '#scripts/run/run-step-section'
|
|
|
10
10
|
import { run_park } from './run-park'
|
|
11
11
|
import { run_park_answered } from './run-park-answered'
|
|
12
12
|
import { run_park_body } from './run-park-body'
|
|
13
|
+
import { run_park_escalate } from './run-park-escalate'
|
|
13
14
|
import { run_park_release } from './run-park-release'
|
|
14
15
|
import { run_park_write } from './run-park-write'
|
|
15
16
|
|
|
16
17
|
// `josh run:park <N> --body-file <path>` — park a lane child for a person's decision in one call: the
|
|
17
18
|
// question as a comment, `needs-decision`, and the local record the `lane-park` guard reads.
|
|
18
19
|
// `josh run:park <N> --clear` takes the park back off once the decision is recorded.
|
|
20
|
+
// `josh run:park <N> --escalate "<reason>"` parks a worker that needs a stronger profile
|
|
21
|
+
// (`run-park-escalate.ts`).
|
|
19
22
|
//
|
|
20
23
|
// **The park was two hand-typed commands, and a child could stop after either one**
|
|
21
24
|
// (joshuafolkken/kit#4132). One call writes both, and only a park that has both is recorded, so the
|
|
@@ -35,7 +38,7 @@ const SUCCESS_EXIT_CODE = 0
|
|
|
35
38
|
const FAILURE_EXIT_CODE = 1
|
|
36
39
|
const ARGV_OFFSET = 2
|
|
37
40
|
const CLEAR_FLAG = '--clear'
|
|
38
|
-
const USAGE = `Usage: josh run:park <issue-number> --body-file <path> | <issue-number> ${CLEAR_FLAG}\n\n${run_park_body.FORMAT}`
|
|
41
|
+
const USAGE = `Usage: josh run:park <issue-number> --body-file <path> | <issue-number> ${CLEAR_FLAG} | <issue-number> ${run_park_escalate.ESCALATE_FLAG} "<reason>"\n\n${run_park_body.FORMAT}`
|
|
39
42
|
const CLEAR_OPTIONS = { clear: { type: 'boolean' } } as const
|
|
40
43
|
|
|
41
44
|
function clear_issue(argv: ReadonlyArray<string>): string | undefined {
|
|
@@ -94,11 +97,20 @@ async function run_clear(argv: ReadonlyArray<string>, directory: string): Promis
|
|
|
94
97
|
return FAILURE_EXIT_CODE
|
|
95
98
|
}
|
|
96
99
|
|
|
100
|
+
// **A worker's escalation is a mechanical stop, not a question** (joshuafolkken/kit#7356): no
|
|
101
|
+
// decision schema, the same release.
|
|
102
|
+
async function run_escalate(argv: ReadonlyArray<string>, directory: string): Promise<number> {
|
|
103
|
+
const issue_number = await run_park_escalate.park(argv, directory, USAGE)
|
|
104
|
+
|
|
105
|
+
return issue_number === undefined ? FAILURE_EXIT_CODE : await release(issue_number, directory)
|
|
106
|
+
}
|
|
107
|
+
|
|
97
108
|
async function run(
|
|
98
109
|
argv: ReadonlyArray<string>,
|
|
99
110
|
directory: string = process.cwd(),
|
|
100
111
|
): Promise<number> {
|
|
101
112
|
if (argv.includes(CLEAR_FLAG)) return await run_clear(argv, directory)
|
|
113
|
+
if (run_park_escalate.is_requested(argv)) return await run_escalate(argv, directory)
|
|
102
114
|
|
|
103
115
|
const request = issue_comment_cli.resolve_request(argv, USAGE)
|
|
104
116
|
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { agent_worker_profile } from '#scripts/agent/agent-worker-profile'
|
|
2
|
+
import { RUN_STALLED_LABEL } from '#scripts/issue/issue-labels'
|
|
3
|
+
import { issue_number_shape } from '#scripts/issue/issue-number-shape'
|
|
4
|
+
import { session_cite } from '#scripts/issue/session-cite'
|
|
5
|
+
import { cli_flags } from '#scripts/lib/cli-flags'
|
|
6
|
+
import { run_stalled } from './run-stalled'
|
|
7
|
+
import { run_stalled_park } from './run-stalled-park'
|
|
8
|
+
|
|
9
|
+
// `josh run:park <N> --escalate "<reason>"` (joshuafolkken/kit#7356): a worker declares that its Issue
|
|
10
|
+
// needs a stronger `josh.worker` profile and stops. Only a repository with `josh.worker.escalate: true`
|
|
11
|
+
// accepts it. The park is a `run:stalled` one whose cause has no retry check, so the drive never
|
|
12
|
+
// re-offers it on the same profile: it resumes the lane one profile up (joshuafolkken/kit#7357).
|
|
13
|
+
|
|
14
|
+
const ESCALATE_FLAG = '--escalate'
|
|
15
|
+
const OPTIONS = { escalate: { type: 'string' } } as const
|
|
16
|
+
const DISABLED_NOTE = `run:park ${ESCALATE_FLAG}: refused — this repository's package.json does not set josh.worker.escalate to true.`
|
|
17
|
+
|
|
18
|
+
interface Escalation {
|
|
19
|
+
issue: string
|
|
20
|
+
reason: string
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function is_requested(argv: ReadonlyArray<string>): boolean {
|
|
24
|
+
return argv.some((token) => token === ESCALATE_FLAG || token.startsWith(`${ESCALATE_FLAG}=`))
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Whether the repository lets a worker declare an escalation at all.
|
|
28
|
+
function is_enabled(directory: string): boolean {
|
|
29
|
+
const result = agent_worker_profile.read(directory)
|
|
30
|
+
|
|
31
|
+
return result.kind === 'settings' && result.settings.escalate
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function reason_of(value: string | undefined): string {
|
|
35
|
+
return value?.trim() ?? ''
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// The Issue and a non-blank reason, or `undefined` when either is missing.
|
|
39
|
+
function escalation_of(argv: ReadonlyArray<string>): Escalation | undefined {
|
|
40
|
+
const parsed = cli_flags.arguments_of(argv, OPTIONS)
|
|
41
|
+
if (parsed === undefined) return undefined
|
|
42
|
+
|
|
43
|
+
const issue = issue_number_shape.single_of(parsed.positionals)
|
|
44
|
+
const reason = reason_of(parsed.values.escalate)
|
|
45
|
+
|
|
46
|
+
return issue === undefined || reason === '' ? undefined : { issue, reason }
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// The note a declaration is refused with, or `undefined` once it is accepted.
|
|
50
|
+
function refusal_of(
|
|
51
|
+
escalation: Escalation | undefined,
|
|
52
|
+
directory: string,
|
|
53
|
+
usage: string,
|
|
54
|
+
): string | undefined {
|
|
55
|
+
if (escalation === undefined) return usage
|
|
56
|
+
|
|
57
|
+
return is_enabled(directory) ? undefined : DISABLED_NOTE
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function accepted(
|
|
61
|
+
argv: ReadonlyArray<string>,
|
|
62
|
+
directory: string,
|
|
63
|
+
usage: string,
|
|
64
|
+
): Escalation | undefined {
|
|
65
|
+
const escalation = escalation_of(argv)
|
|
66
|
+
const refusal = refusal_of(escalation, directory, usage)
|
|
67
|
+
|
|
68
|
+
if (refusal !== undefined) console.error(refusal)
|
|
69
|
+
|
|
70
|
+
return refusal === undefined ? escalation : undefined
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
function comment_of(escalation: Escalation): string {
|
|
74
|
+
const { issue, reason } = escalation
|
|
75
|
+
|
|
76
|
+
return [
|
|
77
|
+
`Parked with \`${RUN_STALLED_LABEL}\`: ${run_stalled.ESCALATION_REQUESTED.why}`,
|
|
78
|
+
`- Reason: ${reason}`,
|
|
79
|
+
`- Next: the backlogrun drive resumes it one \`worker:<name>\` profile up, or hands it to a person at the top profile; without a drive, give it a stronger profile, ${run_stalled.next_step(issue)}.`,
|
|
80
|
+
].join('\n')
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// The parked Issue, or `undefined` when the declaration is refused or the park could not be written.
|
|
84
|
+
async function park(
|
|
85
|
+
argv: ReadonlyArray<string>,
|
|
86
|
+
directory: string,
|
|
87
|
+
usage: string,
|
|
88
|
+
): Promise<string | undefined> {
|
|
89
|
+
const escalation = accepted(argv, directory, usage)
|
|
90
|
+
if (escalation === undefined) return undefined
|
|
91
|
+
|
|
92
|
+
const { short } = run_stalled.escalation_requested(escalation.reason)
|
|
93
|
+
const is_parked = await run_stalled_park.apply(escalation.issue, comment_of(escalation), short)
|
|
94
|
+
|
|
95
|
+
console.info(`escalate ${session_cite.issue(escalation.issue)} — parked: ${String(is_parked)}`)
|
|
96
|
+
|
|
97
|
+
return is_parked ? escalation.issue : undefined
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
const run_park_escalate = { ESCALATE_FLAG, is_enabled, is_requested, park }
|
|
101
|
+
|
|
102
|
+
export { run_park_escalate }
|
|
@@ -55,20 +55,40 @@ function next_step(child: number | string, cause = ''): string {
|
|
|
55
55
|
return `${recovery}, then use \`${resume_of(child, true)}\` in the live backlogrun or resume it with \`${resume_of(child, false)}\``
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
// The worker's own declaration that its Issue needs a stronger `josh.worker` profile
|
|
59
|
+
// (joshuafolkken/kit#7356). No retry check reads it, so `run:stalled`'s auto-retry never re-offers it
|
|
60
|
+
// on the same profile; the drive resumes it one profile up (joshuafolkken/kit#7357).
|
|
61
|
+
const ESCALATION_REQUESTED: StallCause = {
|
|
62
|
+
short: 'escalation requested',
|
|
63
|
+
why: 'the worker declared that its Issue needs a stronger josh.worker profile.',
|
|
64
|
+
}
|
|
59
65
|
|
|
60
|
-
|
|
61
|
-
|
|
66
|
+
const CARRYING_CLASSES = [SESSION_UNFINISHED, ESCALATION_REQUESTED]
|
|
67
|
+
|
|
68
|
+
function lead_of(cause: StallCause): string {
|
|
69
|
+
return `${cause.short}: `
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// The message's first line rides behind its class, so a reader keyed on the class still finds it.
|
|
73
|
+
function carrying(cause: StallCause, message: string): StallCause {
|
|
62
74
|
const first = message.split(/\r?\n/u, 1)[0]?.trim() ?? ''
|
|
63
75
|
|
|
64
|
-
return first === ''
|
|
65
|
-
|
|
66
|
-
|
|
76
|
+
return first === '' ? cause : { short: `${lead_of(cause)}${first}`, why: first }
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
function session_unfinished(message: string): StallCause {
|
|
80
|
+
return carrying(SESSION_UNFINISHED, message)
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function escalation_requested(reason: string): StallCause {
|
|
84
|
+
return carrying(ESCALATION_REQUESTED, reason)
|
|
67
85
|
}
|
|
68
86
|
|
|
69
87
|
// The class a park's cause names: `session unfinished` for one carrying the child's message too.
|
|
70
88
|
function class_of(cause: string): string {
|
|
71
|
-
|
|
89
|
+
const carried = CARRYING_CLASSES.find((known) => cause.startsWith(lead_of(known)))
|
|
90
|
+
|
|
91
|
+
return carried?.short ?? cause
|
|
72
92
|
}
|
|
73
93
|
|
|
74
94
|
function park_event(child: number | string, cause: string): string {
|
|
@@ -113,11 +133,13 @@ function waiting_text(waits: ReadonlyArray<string>): string {
|
|
|
113
133
|
|
|
114
134
|
const run_stalled = {
|
|
115
135
|
CUT_NOT_RELAUNCHED,
|
|
136
|
+
ESCALATION_REQUESTED,
|
|
116
137
|
SESSION_UNFINISHED,
|
|
117
138
|
STALE_HANDOFF,
|
|
118
139
|
cause_in,
|
|
119
140
|
cause_of,
|
|
120
141
|
class_of,
|
|
142
|
+
escalation_requested,
|
|
121
143
|
next_step,
|
|
122
144
|
park_event,
|
|
123
145
|
resume_of,
|
|
@@ -20,8 +20,8 @@ import { run_review_steps } from './run-review-steps'
|
|
|
20
20
|
// already moved, pushes nothing and the ship's commit stage pushes as before. A round recorded once
|
|
21
21
|
// the branch is pushed goes to the issue (`review-record-comment.ts`).
|
|
22
22
|
//
|
|
23
|
-
// Only a lane child's own open,
|
|
24
|
-
// own sync stage
|
|
23
|
+
// Only a lane child's own open, after every due brief is written: the ship's `--code-only` open
|
|
24
|
+
// commits through its own sync stage. All due slots still have to attest before the ship can merge.
|
|
25
25
|
|
|
26
26
|
const PUSH_FLAG = '--push'
|
|
27
27
|
const RUN_REVIEW_COMMAND = 'run:review'
|
|
@@ -43,10 +43,10 @@ interface EarlyPushPlan {
|
|
|
43
43
|
|
|
44
44
|
type Environment = Readonly<Record<string, string | undefined>>
|
|
45
45
|
|
|
46
|
-
function
|
|
46
|
+
function is_full_open(plan: EarlyPushPlan): boolean {
|
|
47
47
|
if (plan.is_code_only) return false
|
|
48
48
|
|
|
49
|
-
return plan.slots.
|
|
49
|
+
return plan.slots.includes(review_attest.REVIEW_SLOT.CODE)
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
// The mark counts only in the checkout of the issue it names: a leaked one pushes nothing.
|
|
@@ -55,7 +55,7 @@ function is_due(
|
|
|
55
55
|
environment: Environment = process.env,
|
|
56
56
|
directory = PROJECT_ROOT,
|
|
57
57
|
): boolean {
|
|
58
|
-
return lane_child_marker.is_child_of(directory, environment) &&
|
|
58
|
+
return lane_child_marker.is_child_of(directory, environment) && is_full_open(plan)
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
// A clean tree is already committed; a refused commit says why and leaves the round to the ship.
|
|
@@ -77,7 +77,7 @@ function preparation_skip(
|
|
|
77
77
|
if (!lane_child_marker.is_child_of(directory, environment)) return 'not-lane-child'
|
|
78
78
|
if (plan.is_code_only) return 'code-only'
|
|
79
79
|
|
|
80
|
-
return
|
|
80
|
+
return is_full_open(plan) ? undefined : 'multiple-slots'
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
// Whether this open pushes early: due here, and the tree committed for the brief to attest.
|
|
@@ -3,6 +3,7 @@ import { RERUNS_SPENT_MESSAGE } from '#scripts/followup/followup-job-rerun'
|
|
|
3
3
|
import { UNREADABLE_COMMENTS_STOP } from '#scripts/gh/git-gh-comments-unreadable'
|
|
4
4
|
import { gh_retry } from '#scripts/gh/git-gh-retry'
|
|
5
5
|
import { PR_CHECKS_TIMEOUT_MESSAGE } from '#scripts/gh/git-pr-checks'
|
|
6
|
+
import { git_pr_checks_failed } from '#scripts/gh/git-pr-checks-failed'
|
|
6
7
|
import { is_blocked_cause } from '#scripts/gh/git-pr-checks-missing'
|
|
7
8
|
import { NO_CHECKS_MESSAGE } from '#scripts/gh/git-pr-checks-watch'
|
|
8
9
|
import { git_error } from '#scripts/git/git-error'
|
|
@@ -176,6 +177,13 @@ function findings_of(stage: Stage, cause: Cause, body: string): ReadonlyArray<st
|
|
|
176
177
|
return is_finding_stop(stage, cause) ? run_ship_review.blocking_kinds(body) : []
|
|
177
178
|
}
|
|
178
179
|
|
|
180
|
+
// The CI checks a followup `check` stop's wait reported failed (joshuafolkken/kit#7333).
|
|
181
|
+
function checks_of(stage: Stage, cause: Cause, body: string): ReadonlyArray<string> {
|
|
182
|
+
return stage === STAGE.FOLLOWUP && cause === CAUSE.CHECK
|
|
183
|
+
? git_pr_checks_failed.names_of(body)
|
|
184
|
+
: []
|
|
185
|
+
}
|
|
186
|
+
|
|
179
187
|
// Each finding that decided a review stop, whole, for the durable stop log (joshuafolkken/kit#4519).
|
|
180
188
|
function details_of(stage: Stage, failed: StoppedOutput = NO_OUTPUT): ReadonlyArray<StopFinding> {
|
|
181
189
|
if (!is_finding_stop(stage, cause_of(stage, failed))) return []
|
|
@@ -185,11 +193,13 @@ function details_of(stage: Stage, failed: StoppedOutput = NO_OUTPUT): ReadonlyAr
|
|
|
185
193
|
|
|
186
194
|
// The lane ledger's record of one stop — the stage, its cause and, for a preflight, which
|
|
187
195
|
// preconditions were unmet, so `lane:stats` counts the one worth meeting before a ship
|
|
188
|
-
// (joshuafolkken/kit#4166); for a review, which kinds of finding stopped it (joshuafolkken/kit#4426)
|
|
196
|
+
// (joshuafolkken/kit#4166); for a review, which kinds of finding stopped it (joshuafolkken/kit#4426);
|
|
197
|
+
// for a followup red on a check, which checks failed (joshuafolkken/kit#7333).
|
|
189
198
|
function record_of(issue: number, stage: Stage, failed: StoppedOutput = NO_OUTPUT): StopRecord {
|
|
190
199
|
const { body, conflicts, preconditions } = failed
|
|
191
200
|
const cause = cause_of(stage, failed)
|
|
192
201
|
const findings = findings_of(stage, cause, body)
|
|
202
|
+
const checks = checks_of(stage, cause, body)
|
|
193
203
|
|
|
194
204
|
return {
|
|
195
205
|
issue,
|
|
@@ -197,6 +207,7 @@ function record_of(issue: number, stage: Stage, failed: StoppedOutput = NO_OUTPU
|
|
|
197
207
|
cause,
|
|
198
208
|
...(preconditions !== undefined && { preconditions: [...preconditions] }),
|
|
199
209
|
...(findings.length > 0 && { findings: [...findings] }),
|
|
210
|
+
...(checks.length > 0 && { checks: [...checks] }),
|
|
200
211
|
}
|
|
201
212
|
}
|
|
202
213
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { codex_hooks } from '#scripts/agent/codex-hooks'
|
|
1
2
|
import { git_path_quoting } from '#scripts/git/git-path-quoting'
|
|
2
3
|
import { issue_body_keys } from '#scripts/issue/issue-body-keys'
|
|
3
4
|
import { run_record_path } from '#scripts/josh/run-record-path'
|
|
@@ -160,15 +161,21 @@ function partners_of(
|
|
|
160
161
|
|
|
161
162
|
// The files grouped into what splits as one, each group at its first file: a new scripts module and an
|
|
162
163
|
// importer of its directory count as one (joshuafolkken/kit#6635), for `lane:plan` and the split notice
|
|
163
|
-
// alike (joshuafolkken/kit#6724).
|
|
164
|
+
// alike (joshuafolkken/kit#6724). A registered generated artifact also stays with its source (#7381);
|
|
165
|
+
// the two files' changed lines still count in full. Other files stand alone when none is added.
|
|
164
166
|
function units_of(files: ReadonlyArray<string>, added: ReadonlySet<string>): Array<Array<string>> {
|
|
165
|
-
const
|
|
167
|
+
const artifacts = codex_hooks.GENERATED_SOURCES
|
|
168
|
+
const sources = files.filter((file) => !files.includes(artifacts.get(file) ?? ''))
|
|
169
|
+
const partners = partners_of(sources, added)
|
|
166
170
|
|
|
167
|
-
return
|
|
171
|
+
return sources.flatMap((file) => {
|
|
168
172
|
const partner = partners.get(file)
|
|
169
|
-
|
|
173
|
+
const unit = partner === undefined ? [file] : [file, partner]
|
|
174
|
+
const generated = files.filter((path) => unit.includes(artifacts.get(path) ?? ''))
|
|
170
175
|
|
|
171
|
-
return
|
|
176
|
+
return partner !== undefined && sources.indexOf(partner) < sources.indexOf(file)
|
|
177
|
+
? []
|
|
178
|
+
: [[...unit, ...generated]]
|
|
172
179
|
})
|
|
173
180
|
}
|
|
174
181
|
|
|
@@ -315,8 +322,10 @@ const split_assess = {
|
|
|
315
322
|
SINGLE_VERDICT,
|
|
316
323
|
assess,
|
|
317
324
|
guide_for,
|
|
325
|
+
is_deliverable,
|
|
318
326
|
is_over_cap,
|
|
319
327
|
notice,
|
|
328
|
+
measure,
|
|
320
329
|
parse_numstat,
|
|
321
330
|
policy_text,
|
|
322
331
|
reason,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { readdirSync } from 'node:fs'
|
|
2
2
|
import path from 'node:path'
|
|
3
|
+
import { direct_importers } from './direct-importers'
|
|
3
4
|
import { test_related_pins } from './test-related-pins'
|
|
4
5
|
import { related_scope, type RelatedScope } from './test-related-scope'
|
|
5
6
|
|
|
@@ -7,7 +8,7 @@ import { related_scope, type RelatedScope } from './test-related-scope'
|
|
|
7
8
|
// near a hub reaches hundreds of test files, and paying that reach after every small edit repeats it
|
|
8
9
|
// minutes apart. **The touched scope reads no test-read map and no import graph**: it is the diff's own
|
|
9
10
|
// test files and, for each changed module `foo.ts`, its colocated `foo.test.ts` and `foo.*.test.ts`,
|
|
10
|
-
// plus the tests the change pins (`test-related-pins.ts`).
|
|
11
|
+
// plus the tests the change pins (`test-related-pins.ts`) and its modules' direct test importers.
|
|
11
12
|
// The full-reach run checks further away. A touched green admits review round 2, and the lane ledger
|
|
12
13
|
// records it under its own kind.
|
|
13
14
|
|
|
@@ -15,8 +16,8 @@ const TOUCHED_FLAG = '--touched'
|
|
|
15
16
|
const TOUCHED_KIND = 'touched'
|
|
16
17
|
const TEST_SUFFIX = '.test.ts'
|
|
17
18
|
const TOUCHED_REASON =
|
|
18
|
-
|
|
19
|
-
const NOTHING_TOUCHED_REASON = 'no
|
|
19
|
+
"the diff test files, their modules' same-named tests, direct test importers and pinned tests"
|
|
20
|
+
const NOTHING_TOUCHED_REASON = 'no changed file reaches a touched test'
|
|
20
21
|
|
|
21
22
|
type ListDirectory = (directory: string) => ReadonlyArray<string>
|
|
22
23
|
|
|
@@ -76,11 +77,28 @@ function touched_scope(
|
|
|
76
77
|
return { mode: 'related', files, reason: TOUCHED_REASON }
|
|
77
78
|
}
|
|
78
79
|
|
|
80
|
+
// A shared fixture often has no same-named test. Reuse the direct-import scan, without building
|
|
81
|
+
// a transitive graph, so its consuming suites run before the shipping checks (joshuafolkken/kit#7380).
|
|
82
|
+
async function read_scope(
|
|
83
|
+
root: string,
|
|
84
|
+
changed: ReadonlyArray<string> | undefined,
|
|
85
|
+
): Promise<RelatedScope> {
|
|
86
|
+
if (changed === undefined) return touched_scope(root, changed)
|
|
87
|
+
|
|
88
|
+
const importers = await direct_importers.importers_of(
|
|
89
|
+
root,
|
|
90
|
+
changed.filter((file) => related_scope.is_relatable(file)),
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
return touched_scope(root, [...changed, ...[...importers.values()].flat()])
|
|
94
|
+
}
|
|
95
|
+
|
|
79
96
|
const test_related_touched = {
|
|
80
97
|
NOTHING_TOUCHED_REASON,
|
|
81
98
|
TOUCHED_FLAG,
|
|
82
99
|
TOUCHED_KIND,
|
|
83
100
|
TOUCHED_REASON,
|
|
101
|
+
read_scope,
|
|
84
102
|
touched_scope,
|
|
85
103
|
touched_tests,
|
|
86
104
|
}
|
|
@@ -369,7 +369,7 @@ async function run_touched(given: ReadonlyArray<string>): Promise<number> {
|
|
|
369
369
|
const root = await changed_file_scope.repository_root_or_cwd()
|
|
370
370
|
const explicit = explicit_files(root, command_arguments)
|
|
371
371
|
const changed = explicit.length > 0 ? explicit : await branch_change()
|
|
372
|
-
const scope = test_related_touched.
|
|
372
|
+
const scope = await test_related_touched.read_scope(root, changed)
|
|
373
373
|
const input = { scope, root, changed, synced: [], since_map: [], kind: TOUCHED_KIND }
|
|
374
374
|
|
|
375
375
|
return await test_related_run.run_and_record(input, command_arguments)
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
issue_park
|
|
3
|
-
} from "./chunk-T33QDAWD.js";
|
|
4
|
-
import {
|
|
5
|
-
run_stalled
|
|
6
|
-
} from "./chunk-B33BTNB4.js";
|
|
7
|
-
import {
|
|
8
|
-
run_event_stream_emit
|
|
9
|
-
} from "./chunk-34LAULSC.js";
|
|
10
|
-
import {
|
|
11
|
-
run_event_stream
|
|
12
|
-
} from "./chunk-NSAVEXVR.js";
|
|
13
|
-
import {
|
|
14
|
-
RUN_STALLED_LABEL
|
|
15
|
-
} from "./chunk-QQBMVC5W.js";
|
|
16
|
-
|
|
17
|
-
// scripts/run/park/run-stalled-park.ts
|
|
18
|
-
var { PARK } = run_event_stream.EVENT_KIND;
|
|
19
|
-
async function apply(issue, comment, cause, fields = {}) {
|
|
20
|
-
const park_write = await issue_park.apply(issue, RUN_STALLED_LABEL, comment);
|
|
21
|
-
if (!park_write.is_labelled) return false;
|
|
22
|
-
await run_event_stream_emit.emit(PARK, run_stalled.park_event(issue, cause), /* @__PURE__ */ new Date(), fields);
|
|
23
|
-
return true;
|
|
24
|
-
}
|
|
25
|
-
var run_stalled_park = { apply };
|
|
26
|
-
|
|
27
|
-
export {
|
|
28
|
-
run_stalled_park
|
|
29
|
-
};
|