@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
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import {
|
|
2
|
+
agent_worker_profile,
|
|
3
|
+
type SettingsResult,
|
|
4
|
+
type WorkerSettings,
|
|
5
|
+
} from '#scripts/agent/agent-worker-profile'
|
|
6
|
+
import { issue_file } from './issue-file'
|
|
7
|
+
import type { LabelDefinition } from './issue-labels'
|
|
8
|
+
|
|
9
|
+
// `issue:file`'s side of `josh.worker`: a filing into a repository that sets it prints the profiles to
|
|
10
|
+
// choose from, refuses a `worker:<name>` label naming none of them, and provisions the chosen label
|
|
11
|
+
// beside kit's own. kit never picks a profile from the Issue's content. Without the setting — or for a
|
|
12
|
+
// filing into another repository, whose setting this checkout does not hold — nothing here prints or
|
|
13
|
+
// asks GitHub anything.
|
|
14
|
+
const { LABEL_PREFIX } = agent_worker_profile
|
|
15
|
+
const LABEL_COLOR = 'bfd4f2'
|
|
16
|
+
const LABEL_DESCRIPTION = 'Lane worker profile (josh.worker)'
|
|
17
|
+
|
|
18
|
+
interface Target {
|
|
19
|
+
target: string
|
|
20
|
+
current: string
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function settings_of(place: Target): SettingsResult | undefined {
|
|
24
|
+
if (!issue_file.is_same_repository(place.target, place.current)) return undefined
|
|
25
|
+
|
|
26
|
+
return agent_worker_profile.read(process.cwd())
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Deduplicated: a label typed twice is one label on the Issue, not two profiles chosen.
|
|
30
|
+
function worker_labels(labels: ReadonlyArray<string>): ReadonlyArray<string> {
|
|
31
|
+
return [...new Set(labels.filter((label) => label.startsWith(LABEL_PREFIX)))]
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// The profiles weakest first, as `josh.worker` lists them, and the one an unlabelled Issue runs on.
|
|
35
|
+
function guide_of(settings: WorkerSettings): string {
|
|
36
|
+
const rows = settings.profiles.map(
|
|
37
|
+
(profile) => ` ${LABEL_PREFIX}${profile.name} — ${profile.when}`,
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
return [
|
|
41
|
+
`worker profiles (josh.worker, weakest first) — choose one with --label ${LABEL_PREFIX}<name>; none → ${settings.default}:`,
|
|
42
|
+
...rows,
|
|
43
|
+
].join('\n')
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// A broken setting refuses only a filing that chose a profile it cannot check; any other filing goes on.
|
|
47
|
+
function is_unchecked_clear(note: string, labels: ReadonlyArray<string>): boolean {
|
|
48
|
+
if (worker_labels(labels).length === 0) {
|
|
49
|
+
console.warn(`⚠ ${note}`)
|
|
50
|
+
|
|
51
|
+
return true
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
console.error(`✖ ${note}`)
|
|
55
|
+
|
|
56
|
+
return false
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function is_choice_clear(settings: WorkerSettings, labels: ReadonlyArray<string>): boolean {
|
|
60
|
+
console.info(guide_of(settings))
|
|
61
|
+
const chosen = agent_worker_profile.for_labels(settings, worker_labels(labels))
|
|
62
|
+
|
|
63
|
+
if (chosen.kind === 'worker') return true
|
|
64
|
+
console.error(`✖ ${chosen.kind === 'rejected' ? chosen.note : chosen.kind}`)
|
|
65
|
+
|
|
66
|
+
return false
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// A one-pass step (`issue-file-pass.ts`): false once it printed its refusal.
|
|
70
|
+
function is_worker_clear(place: Target, labels: ReadonlyArray<string>): boolean {
|
|
71
|
+
const result = settings_of(place)
|
|
72
|
+
|
|
73
|
+
if (result === undefined || result.kind === 'unset') return true
|
|
74
|
+
if (result.kind === 'rejected') return is_unchecked_clear(result.note, labels)
|
|
75
|
+
|
|
76
|
+
return is_choice_clear(result.settings, labels)
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// The `worker:<name>` labels `ensure_labels` creates beside kit's own — none without the setting.
|
|
80
|
+
function label_definitions(
|
|
81
|
+
place: Target,
|
|
82
|
+
labels: ReadonlyArray<string>,
|
|
83
|
+
): ReadonlyArray<LabelDefinition> {
|
|
84
|
+
if (settings_of(place)?.kind !== 'settings') return []
|
|
85
|
+
|
|
86
|
+
return worker_labels(labels).map((name) => ({
|
|
87
|
+
name,
|
|
88
|
+
color: LABEL_COLOR,
|
|
89
|
+
description: LABEL_DESCRIPTION,
|
|
90
|
+
}))
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
const issue_file_worker = { is_worker_clear, label_definitions }
|
|
94
|
+
|
|
95
|
+
export { issue_file_worker }
|
|
@@ -46,7 +46,7 @@ interface FileArguments {
|
|
|
46
46
|
// `--over-cap`: the run is blocked by this filing, or a user typed `new`, so the WIP cap does not
|
|
47
47
|
// hold it (`issue-wip.ts`, `wip-cap.md`).
|
|
48
48
|
is_over_cap: boolean
|
|
49
|
-
// `--no-auto-ok`:
|
|
49
|
+
// `--no-auto-ok`: an exclusion or verified user prohibition withholds `auto-ok` (`issue-auto-ok.ts`).
|
|
50
50
|
is_auto_ok_opted_out: boolean
|
|
51
51
|
// `--release`: the change reaches a consumer only once published, so the Issue is linked to the
|
|
52
52
|
// repository's release Issue as a blocker (`issue-release-cli.ts`).
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { git_gh_issue_read } from '#scripts/gh/git-gh-issue-read'
|
|
2
|
+
import { json_value } from '#scripts/lib/json-value'
|
|
3
|
+
import { z } from 'zod'
|
|
4
|
+
import { issue_read, type IssueComment } from './issue-read'
|
|
5
|
+
|
|
6
|
+
// Persist the author's conclusion with its evidence; drawing never infers a conclusion.
|
|
7
|
+
const SUMMARY_LIMIT = 80
|
|
8
|
+
const summary_schema = z
|
|
9
|
+
.string()
|
|
10
|
+
.min(1)
|
|
11
|
+
.max(SUMMARY_LIMIT)
|
|
12
|
+
.regex(/^[\u{20}-\u{7E}]+$/u)
|
|
13
|
+
.refine((value) => value === value.trim())
|
|
14
|
+
const MARKER = /^<!-- josh:outcome (?<json>[^\n]+) -->$/gmu
|
|
15
|
+
const COMMENT_URL = /^https:\/\/github\.com\/[^/]+\/[^/]+\/issues\/\d+#issuecomment-\d+$(?![\s\S])/u
|
|
16
|
+
const url_schema = z.string().regex(COMMENT_URL)
|
|
17
|
+
const outcome_schema = z.object({ summary: summary_schema, url: url_schema.optional() })
|
|
18
|
+
|
|
19
|
+
interface IssueOutcome {
|
|
20
|
+
summary: string
|
|
21
|
+
url: string
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
interface OutcomeNote {
|
|
25
|
+
body: string
|
|
26
|
+
summary?: string | undefined
|
|
27
|
+
url?: string | undefined
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function body_of(note: OutcomeNote): string {
|
|
31
|
+
if (note.summary === undefined && note.url === undefined) return note.body
|
|
32
|
+
const outcome = outcome_schema.parse({ summary: note.summary, url: note.url })
|
|
33
|
+
|
|
34
|
+
return `${note.body}\n\n<!-- josh:outcome ${JSON.stringify(outcome)} -->`
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function evidence_of(comment: IssueComment, url: string): boolean {
|
|
38
|
+
if (comment.html_url === undefined || !COMMENT_URL.test(url)) return false
|
|
39
|
+
|
|
40
|
+
return url.split('#', 1)[0] === comment.html_url.split('#', 1)[0]
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function record_of(body: string): z.infer<typeof outcome_schema> | undefined {
|
|
44
|
+
const json = [...body.matchAll(MARKER)].at(-1)?.groups?.['json']
|
|
45
|
+
|
|
46
|
+
return json_value.parse_with(json ?? '', outcome_schema)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function cited_outcome(
|
|
50
|
+
record: z.infer<typeof outcome_schema>,
|
|
51
|
+
comment: IssueComment,
|
|
52
|
+
): IssueOutcome | undefined {
|
|
53
|
+
const url = record.url ?? comment.html_url
|
|
54
|
+
|
|
55
|
+
return url === undefined || !evidence_of(comment, url)
|
|
56
|
+
? undefined
|
|
57
|
+
: { summary: record.summary, url }
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function outcome_of(comment: IssueComment): IssueOutcome | undefined {
|
|
61
|
+
if (comment.is_trusted !== true) return undefined
|
|
62
|
+
const record = record_of(comment.body)
|
|
63
|
+
|
|
64
|
+
return record === undefined ? undefined : cited_outcome(record, comment)
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function from_comments(
|
|
68
|
+
comments: ReadonlyArray<IssueComment>,
|
|
69
|
+
candidates: ReadonlyArray<IssueComment> = comments,
|
|
70
|
+
): IssueOutcome | undefined {
|
|
71
|
+
const outcomes = candidates.flatMap((comment) => {
|
|
72
|
+
const outcome = outcome_of(comment)
|
|
73
|
+
const evidence = comments.find((entry) => entry.html_url === outcome?.url)
|
|
74
|
+
|
|
75
|
+
return outcome === undefined || evidence?.is_trusted !== true ? [] : [outcome]
|
|
76
|
+
})
|
|
77
|
+
|
|
78
|
+
return outcomes.at(-1)
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
async function read(issue: number): Promise<IssueOutcome | undefined> {
|
|
82
|
+
try {
|
|
83
|
+
const json = await git_gh_issue_read.issue_list_comments(
|
|
84
|
+
String(issue),
|
|
85
|
+
undefined,
|
|
86
|
+
undefined,
|
|
87
|
+
git_gh_issue_read.read_comments_conditionally,
|
|
88
|
+
)
|
|
89
|
+
const comments = json === undefined ? undefined : await issue_read.parse_comments(json)
|
|
90
|
+
|
|
91
|
+
return comments === undefined ? undefined : from_comments(comments)
|
|
92
|
+
} catch {
|
|
93
|
+
return undefined
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
async function recorded(issue: number, is_merged: boolean): Promise<{ outcome?: IssueOutcome }> {
|
|
98
|
+
if (is_merged) return {}
|
|
99
|
+
const outcome = await read(issue)
|
|
100
|
+
|
|
101
|
+
return outcome === undefined ? {} : { outcome }
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
const issue_outcome = { body_of, from_comments, read, recorded, summary_schema, url_schema }
|
|
105
|
+
|
|
106
|
+
export { issue_outcome }
|
|
107
|
+
export type { IssueOutcome }
|
|
@@ -2,6 +2,7 @@ import { gh_author_association } from '#scripts/gh/gh-author-association'
|
|
|
2
2
|
import { gh_comment_input } from '#scripts/gh/gh-comment-input'
|
|
3
3
|
import { parse_json_object_or_undefined, read_json_listing } from '#scripts/git/parse-json-array'
|
|
4
4
|
import { z } from 'zod'
|
|
5
|
+
import { issue_watch_diff } from './issue-watch-diff'
|
|
5
6
|
|
|
6
7
|
// The block `josh issue:read` prints for one issue, kept apart from the reading and the printing so
|
|
7
8
|
// the shape of the report is decided by one pure function — the seam `issue-state.ts` already has.
|
|
@@ -51,7 +52,7 @@ const issue_fields_schema = z.looseObject({
|
|
|
51
52
|
|
|
52
53
|
const comment_schema = z.looseObject({
|
|
53
54
|
html_url: z.string().optional(),
|
|
54
|
-
user: z.looseObject({ login: z.string() }).optional(),
|
|
55
|
+
user: z.looseObject({ login: z.string(), type: z.string().optional() }).optional(),
|
|
55
56
|
created_at: z.string().optional(),
|
|
56
57
|
body: z.string().optional(),
|
|
57
58
|
author_association: z.string().nullish(),
|
|
@@ -73,6 +74,7 @@ interface IssueComment {
|
|
|
73
74
|
body: string
|
|
74
75
|
// As `IssueFields.is_body_trusted`: `undefined` when the lookup failed.
|
|
75
76
|
is_trusted: boolean | undefined
|
|
77
|
+
is_automated?: boolean
|
|
76
78
|
}
|
|
77
79
|
|
|
78
80
|
const UNKNOWN_AUTHOR = '(unknown)'
|
|
@@ -113,17 +115,19 @@ async function to_comment(
|
|
|
113
115
|
repo: string | undefined,
|
|
114
116
|
): Promise<IssueComment> {
|
|
115
117
|
const login = raw.user?.login
|
|
118
|
+
const is_trusted = await gh_author_association.trust_of({
|
|
119
|
+
login,
|
|
120
|
+
association: raw.author_association,
|
|
121
|
+
repo,
|
|
122
|
+
})
|
|
116
123
|
|
|
117
124
|
return {
|
|
118
125
|
html_url: raw.html_url,
|
|
119
126
|
author: login ?? UNKNOWN_AUTHOR,
|
|
120
127
|
created_at: raw.created_at ?? UNKNOWN_TIME,
|
|
121
128
|
body: raw.body ?? '',
|
|
122
|
-
is_trusted
|
|
123
|
-
|
|
124
|
-
association: raw.author_association,
|
|
125
|
-
repo,
|
|
126
|
-
}),
|
|
129
|
+
is_trusted,
|
|
130
|
+
is_automated: issue_watch_diff.is_automated(raw, is_trusted),
|
|
127
131
|
}
|
|
128
132
|
}
|
|
129
133
|
|
|
@@ -156,7 +160,8 @@ function trusted_bodies(comments: ReadonlyArray<IssueComment>): ReadonlyArray<st
|
|
|
156
160
|
|
|
157
161
|
function format_comment(comment: IssueComment): string {
|
|
158
162
|
const trust = gh_comment_input.trust_of(comment.author, comment.is_trusted)
|
|
159
|
-
const
|
|
163
|
+
const source = comment.is_automated === true ? ' [automated]' : ''
|
|
164
|
+
const heading = `${COMMENT_HEADING}${comment.author}${AT}${comment.created_at} [${trust}]${source}`
|
|
160
165
|
|
|
161
166
|
return `${heading}\n${comment.is_trusted === true ? comment.body : UNTRUSTED_COMMENT}`
|
|
162
167
|
}
|
|
@@ -86,7 +86,7 @@ function is_bot(user: z.infer<typeof comment_schema>['user']): boolean {
|
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
function is_automated(
|
|
89
|
-
raw: z.infer<typeof comment_schema>,
|
|
89
|
+
raw: Pick<z.infer<typeof comment_schema>, 'user' | 'body'>,
|
|
90
90
|
is_trusted: boolean | undefined,
|
|
91
91
|
): boolean {
|
|
92
92
|
return is_bot(raw.user) || (is_trusted === true && (raw.body?.includes(RUN_MARKER) ?? false))
|
|
@@ -228,6 +228,7 @@ const issue_watch_diff = {
|
|
|
228
228
|
RUN_MARKER,
|
|
229
229
|
WITHHELD_BODY_EDIT,
|
|
230
230
|
baseline_of,
|
|
231
|
+
is_automated,
|
|
231
232
|
landed_times,
|
|
232
233
|
parse_comments,
|
|
233
234
|
unread_diff,
|
|
@@ -444,7 +444,7 @@ const AI_COMMANDS: Record<string, CommandEntry> = {
|
|
|
444
444
|
"Record a lane child's planned files; yield its lane, naming file and holder, when an earlier-planned running lane declares or plans one; `--size-approval` bounds lines/files",
|
|
445
445
|
category: 'AI tools',
|
|
446
446
|
reference: [
|
|
447
|
-
'<issue> <path>... [--probe] [--single] [--size-approval <json-file>] [--imports <path>...]',
|
|
447
|
+
'<issue> <path>... [--probe] [--single] [--estimate <json-file>] [--size-approval <json-file>] [--imports <path>...]',
|
|
448
448
|
'automation',
|
|
449
449
|
['files', 'network'],
|
|
450
450
|
],
|
|
@@ -512,7 +512,7 @@ const AI_COMMANDS: Record<string, CommandEntry> = {
|
|
|
512
512
|
'lane:stats': {
|
|
513
513
|
...MEASURE_ARGUMENTS,
|
|
514
514
|
description:
|
|
515
|
-
'Print period lane throughput, stage, stop, check and machine-load statistics; --sinks shows stage totals, --over lane chains, --why cause groups above a net-minute threshold, and --pairs scoped pair runs',
|
|
515
|
+
'Print period lane throughput, stage, stop (by failed CI check, longest first), check and machine-load statistics; --sinks shows stage totals, --over lane chains, --why cause groups above a net-minute threshold, and --pairs scoped pair runs',
|
|
516
516
|
category: 'AI tools',
|
|
517
517
|
reference: [
|
|
518
518
|
'(--period <days> | --since <instant>) [--limit <lane-limit> | --sinks [<minutes>] | --over <minutes> | --why <minutes> | --pairs]',
|
|
@@ -6,6 +6,7 @@ import { AGENT_HOOK_COMMANDS } from './josh-commands-agent-hooks'
|
|
|
6
6
|
import { TEST_CHECK_COMMANDS } from './josh-commands-test-check'
|
|
7
7
|
|
|
8
8
|
const NARROWED = { arguments: 'scripts/thing.ts', note: 'narrow by the given files instead' }
|
|
9
|
+
const FORWARDED_TO_VITEST = 'flags are forwarded to vitest'
|
|
9
10
|
// The unseeded ports are read from `ports/index.js`, their one definition (#818).
|
|
10
11
|
const UNSEEDED: Readonly<Record<string, string | undefined>> = {}
|
|
11
12
|
|
|
@@ -50,13 +51,14 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
|
|
|
50
51
|
script: 'scripts/lint/lint-parallel-main.ts',
|
|
51
52
|
description: 'Check code with prettier and eslint (skips a tool a basic project lacks)',
|
|
52
53
|
category: 'Development',
|
|
53
|
-
reference: ['[--changed]', 'developer', ['processes']],
|
|
54
|
+
reference: ['[--changed] [--shard=<n>]', 'developer', ['processes']],
|
|
54
55
|
core_weight: core_weights.CORE_WEIGHTS.lint,
|
|
55
56
|
memory_mb: core_weights.MEMORY_MB.lint,
|
|
56
57
|
usage: {
|
|
57
58
|
examples: [
|
|
58
59
|
{ arguments: '' },
|
|
59
60
|
{ arguments: '--changed', note: "the branch's changed files — the gate's form" },
|
|
61
|
+
{ arguments: '--shard=1', note: 'one of two fixed halves of the tree (1 or 2) — a CI leg' },
|
|
60
62
|
],
|
|
61
63
|
},
|
|
62
64
|
},
|
|
@@ -129,7 +131,11 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
|
|
|
129
131
|
description:
|
|
130
132
|
"Print each delivered rule's unaided compliance — runs reached, kept rate, refusals",
|
|
131
133
|
category: 'AI tools',
|
|
132
|
-
reference: [
|
|
134
|
+
reference: [
|
|
135
|
+
'[--fresh | --refresh | --period <days> | --weekly <rule-id>... | --prose]',
|
|
136
|
+
'developer',
|
|
137
|
+
['files'],
|
|
138
|
+
],
|
|
133
139
|
usage: {
|
|
134
140
|
examples: [
|
|
135
141
|
{ arguments: '', note: 'a reading cached under 15 minutes ago, else measure' },
|
|
@@ -138,6 +144,14 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
|
|
|
138
144
|
arguments: '--refresh',
|
|
139
145
|
note: 'write the reading to the loop-head cache instead of stdout',
|
|
140
146
|
},
|
|
147
|
+
{
|
|
148
|
+
arguments: '--period 7',
|
|
149
|
+
note: 'measure only the transcripts written in the last 7 days, cache untouched',
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
arguments: '--weekly <rule-id>...',
|
|
153
|
+
note: 'reached / refused / rephrased of the named rules, one line per week',
|
|
154
|
+
},
|
|
141
155
|
{ arguments: '--prose', note: 'class each prose rule: enforced, measured or prose only' },
|
|
142
156
|
],
|
|
143
157
|
},
|
|
@@ -229,7 +243,9 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
|
|
|
229
243
|
category: 'Development',
|
|
230
244
|
reference: [FILTER_ARGUMENTS, 'developer', ['processes']],
|
|
231
245
|
...gate_plan.DIRECT_UNIT_CLAIM,
|
|
232
|
-
usage: {
|
|
246
|
+
usage: {
|
|
247
|
+
examples: [{ arguments: '' }, { arguments: '--shard=1/3', note: FORWARDED_TO_VITEST }],
|
|
248
|
+
},
|
|
233
249
|
},
|
|
234
250
|
'test:related': {
|
|
235
251
|
script: 'scripts/test/test-related-main.ts',
|
|
@@ -240,8 +256,8 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
|
|
|
240
256
|
examples: [
|
|
241
257
|
{ arguments: '' },
|
|
242
258
|
NARROWED,
|
|
243
|
-
{ arguments: '--touched', note:
|
|
244
|
-
{ arguments: '--silent', note:
|
|
259
|
+
{ arguments: '--touched', note: 'diff tests, same-named tests and direct test importers' },
|
|
260
|
+
{ arguments: '--silent', note: FORWARDED_TO_VITEST },
|
|
245
261
|
],
|
|
246
262
|
},
|
|
247
263
|
},
|
|
@@ -263,7 +263,8 @@ const ISSUE_WRITE_COMMANDS: Record<string, CommandEntry> = {
|
|
|
263
263
|
},
|
|
264
264
|
{
|
|
265
265
|
names: ['--label <name>'],
|
|
266
|
-
description:
|
|
266
|
+
description:
|
|
267
|
+
'an extra label (e.g. `epic`). Repeatable. With `josh.worker`, `worker:<name>` names a printed profile.',
|
|
267
268
|
},
|
|
268
269
|
{
|
|
269
270
|
names: ['--defect / --verification / --every-run <yes|no|unknown>'],
|
|
@@ -290,7 +291,7 @@ const ISSUE_WRITE_COMMANDS: Record<string, CommandEntry> = {
|
|
|
290
291
|
},
|
|
291
292
|
{
|
|
292
293
|
names: ['--no-auto-ok'],
|
|
293
|
-
description:
|
|
294
|
+
description: 'needs human judgement or a verified user prohibition; no `auto-ok`.',
|
|
294
295
|
},
|
|
295
296
|
{
|
|
296
297
|
names: ['--release'],
|
|
@@ -81,7 +81,7 @@ const LINT_COMMANDS: Record<string, CommandEntry> = {
|
|
|
81
81
|
description:
|
|
82
82
|
"Print a work summary's inputs in one call: the run:prep skeleton, planned files near the line limit, the test:declared verdict, the owed cases and the plan:consumers draft",
|
|
83
83
|
category: 'AI tools',
|
|
84
|
-
reference: ['<issue> [<path>...]', 'automation', ['network']],
|
|
84
|
+
reference: ['<issue> [<path>...] [--estimate <json-file>]', 'automation', ['network']],
|
|
85
85
|
usage: {
|
|
86
86
|
examples: [
|
|
87
87
|
{ arguments: '123', note: 'planned files from the issue body' },
|
|
@@ -135,8 +135,13 @@ const PROJECT_COMMANDS: Record<string, CommandEntry> = {
|
|
|
135
135
|
script: 'scripts/sync/sync-main.ts',
|
|
136
136
|
description: 'Sync config files',
|
|
137
137
|
category: 'Project',
|
|
138
|
-
reference: ['', 'developer', ['files']],
|
|
139
|
-
usage: {
|
|
138
|
+
reference: ['[--force]', 'developer', ['files']],
|
|
139
|
+
usage: {
|
|
140
|
+
examples: [
|
|
141
|
+
{ arguments: '', note: 'overwrite managed files' },
|
|
142
|
+
{ arguments: '--force', note: 'also replace a file you added to, dropping your additions' },
|
|
143
|
+
],
|
|
144
|
+
},
|
|
140
145
|
},
|
|
141
146
|
uninstall: {
|
|
142
147
|
script: 'scripts/uninstall/uninstall.ts',
|
|
@@ -185,10 +185,14 @@ const RUN_COMMANDS: Record<string, CommandEntry> = {
|
|
|
185
185
|
},
|
|
186
186
|
'run:park': {
|
|
187
187
|
script: 'scripts/run/park/run-park-cli.ts',
|
|
188
|
-
description: 'Park a lane child for a decision, or clear the park',
|
|
188
|
+
description: 'Park a lane child for a decision or an escalation, or clear the park',
|
|
189
189
|
category: 'AI tools',
|
|
190
190
|
tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
|
|
191
|
-
reference: [
|
|
191
|
+
reference: [
|
|
192
|
+
'<issue> --body-file <path> | <issue> --clear | <issue> --escalate <reason>',
|
|
193
|
+
'automation',
|
|
194
|
+
['files', 'network'],
|
|
195
|
+
],
|
|
192
196
|
usage: {
|
|
193
197
|
examples: [
|
|
194
198
|
{
|
|
@@ -196,6 +200,10 @@ const RUN_COMMANDS: Record<string, CommandEntry> = {
|
|
|
196
200
|
note: 'options, tiers and a recommendation; then needs-decision, the record, run:release',
|
|
197
201
|
},
|
|
198
202
|
{ arguments: '1839 --clear', note: 'remove needs-decision and the record' },
|
|
203
|
+
{
|
|
204
|
+
arguments: '1839 --escalate "needs a stronger model"',
|
|
205
|
+
note: 'josh.worker.escalate only: run:stalled with the reason, resumed one profile up',
|
|
206
|
+
},
|
|
199
207
|
],
|
|
200
208
|
},
|
|
201
209
|
},
|
|
@@ -40,6 +40,11 @@ const WORKFLOW_COMMANDS: Record<string, CommandEntry> = {
|
|
|
40
40
|
names: [SKIP_COMMIT, SKIP_PUSH],
|
|
41
41
|
description: 'recover/open a PR without a new commit or push.',
|
|
42
42
|
},
|
|
43
|
+
{
|
|
44
|
+
names: ['--body-file <path>'],
|
|
45
|
+
description:
|
|
46
|
+
'extra PR body text after `closes #N`, from a file (`-` = stdin); use it when the text holds a backtick or `$`.',
|
|
47
|
+
},
|
|
43
48
|
],
|
|
44
49
|
},
|
|
45
50
|
},
|
|
@@ -32,7 +32,7 @@ import { session_language, type Resolution } from './session-language'
|
|
|
32
32
|
const { DEFAULT_SESSION_LANG, ENV_KEY, resolve_session_lang } = session_language
|
|
33
33
|
|
|
34
34
|
const BOARD_LINE =
|
|
35
|
-
'
|
|
35
|
+
'Live backlogrun: for progress-only questions, run `pnpm josh run:board --chat`; relay output verbatim in one code block. For cause or improvement questions, investigate state, logs and code; cite evidence and uncertainty, even with quoted board lines. For mixed questions, do both.'
|
|
36
36
|
|
|
37
37
|
interface LivePorts {
|
|
38
38
|
// The common git directory the run's records are keyed on; `undefined` outside a repository.
|
|
@@ -63,12 +63,22 @@ async function print_timeline(issue: string): Promise<number> {
|
|
|
63
63
|
records.events,
|
|
64
64
|
Number(issue),
|
|
65
65
|
)
|
|
66
|
-
|
|
67
|
-
|
|
66
|
+
if (breakdown === undefined) return missing(issue)
|
|
67
|
+
const timeline = lane_timeline.of(records, Number(issue), breakdown)
|
|
68
68
|
|
|
69
69
|
if (timeline === undefined) return missing(issue)
|
|
70
70
|
|
|
71
|
-
const
|
|
71
|
+
const report = lane_breakdown_text.report_of(
|
|
72
|
+
Number(issue),
|
|
73
|
+
breakdown,
|
|
74
|
+
records.entries,
|
|
75
|
+
records.events,
|
|
76
|
+
)
|
|
77
|
+
const lines = [
|
|
78
|
+
records.notice,
|
|
79
|
+
lane_timeline.text(session_cite.issue(issue), timeline),
|
|
80
|
+
report.elapsed ?? '',
|
|
81
|
+
]
|
|
72
82
|
|
|
73
83
|
console.info(lines.filter((line) => line !== '').join('\n'))
|
|
74
84
|
|
|
@@ -84,7 +94,7 @@ async function print(issue: string): Promise<number> {
|
|
|
84
94
|
|
|
85
95
|
if (minutes === undefined || breakdown === undefined) return missing(issue)
|
|
86
96
|
|
|
87
|
-
const report = lane_breakdown_text.report_of(Number(issue), breakdown, entries)
|
|
97
|
+
const report = lane_breakdown_text.report_of(Number(issue), breakdown, entries, events)
|
|
88
98
|
|
|
89
99
|
console.info(
|
|
90
100
|
[
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { RunEvent } from '#scripts/run/event/run-event-stream'
|
|
1
2
|
import { lane_breakdown, type Breakdown, type Stage } from './lane-breakdown'
|
|
2
3
|
import { lane_breakdown_calls, type CallGroup } from './lane-breakdown-calls'
|
|
3
4
|
import {
|
|
@@ -9,6 +10,7 @@ import { lane_breakdown_laps, type Laps } from './lane-breakdown-laps'
|
|
|
9
10
|
import { lane_breakdown_pinned } from './lane-breakdown-pinned'
|
|
10
11
|
import { lane_breakdown_related } from './lane-breakdown-related'
|
|
11
12
|
import { lane_ci_path_stats } from './lane-ci-path-stats'
|
|
13
|
+
import { lane_elapsed_time } from './lane-elapsed-time'
|
|
12
14
|
import type { LedgerEntry } from './lane-ledger'
|
|
13
15
|
import { lane_stage_budget, type BudgetStage } from './lane-stage-budget'
|
|
14
16
|
|
|
@@ -27,6 +29,7 @@ const OUTSIDE = 'outside calls'
|
|
|
27
29
|
const DRIVER = '(outside lane net)'
|
|
28
30
|
|
|
29
31
|
interface Report {
|
|
32
|
+
elapsed?: string | undefined
|
|
30
33
|
breakdown: Breakdown
|
|
31
34
|
detail: ImplementDetail
|
|
32
35
|
// The ship pre-detach line's `test:pinned` detail, `''` when none (joshuafolkken/kit#5078).
|
|
@@ -217,11 +220,14 @@ function report_of(
|
|
|
217
220
|
issue: number,
|
|
218
221
|
breakdown: Breakdown,
|
|
219
222
|
entries: ReadonlyArray<LedgerEntry>,
|
|
223
|
+
events: ReadonlyArray<RunEvent> = [],
|
|
220
224
|
): Report {
|
|
221
225
|
const calls = lane_breakdown_implement.read(issue, breakdown)
|
|
222
226
|
const rows = lane_breakdown_pinned.rows_of(entries, issue, breakdown)
|
|
227
|
+
const timing = lane_elapsed_time.of(entries, events, issue, calls)
|
|
223
228
|
|
|
224
229
|
return {
|
|
230
|
+
elapsed: timing === undefined ? undefined : lane_elapsed_time.text(timing),
|
|
225
231
|
breakdown,
|
|
226
232
|
detail: lane_breakdown_implement.of(calls, breakdown),
|
|
227
233
|
laps: lane_breakdown_laps.of(entries, issue, breakdown, calls),
|
|
@@ -243,6 +249,7 @@ function comment(issue: number, minutes: number, report: Report): string {
|
|
|
243
249
|
`${lead} ${source}`,
|
|
244
250
|
'',
|
|
245
251
|
...entries_of(report).flatMap((entry) => bullets_of(entry)),
|
|
252
|
+
...(report.elapsed === undefined ? [] : [report.elapsed]),
|
|
246
253
|
].join('\n')
|
|
247
254
|
}
|
|
248
255
|
|
|
@@ -5,6 +5,7 @@ import { lane_breakdown_pause, type PauseMark } from './lane-breakdown-pause'
|
|
|
5
5
|
import { lane_ledger, type LedgerEntry } from './lane-ledger'
|
|
6
6
|
import { lane_net_time, type LaneSpan } from './lane-net-time'
|
|
7
7
|
import { lane_plan_wait_event } from './lane-plan-wait-event'
|
|
8
|
+
import { lane_stage_events } from './lane-stage-events'
|
|
8
9
|
import { lane_stop_stats } from './lane-stop-stats'
|
|
9
10
|
import { lane_yield_split, type YieldShare } from './lane-yield-split'
|
|
10
11
|
|
|
@@ -329,7 +330,7 @@ function driver_of(ms: number): Array<Stage> {
|
|
|
329
330
|
* span and intervals `lane_net_time.net_ms` reads, so the stages add up to it and the driver's followup
|
|
330
331
|
* stands apart. `edit_ms`, the lane's first edit, opens the implementation where no event did.
|
|
331
332
|
*/
|
|
332
|
-
function
|
|
333
|
+
function breakdown_of(
|
|
333
334
|
entries: ReadonlyArray<LedgerEntry>,
|
|
334
335
|
events: ReadonlyArray<RunEvent>,
|
|
335
336
|
issue: number,
|
|
@@ -358,6 +359,25 @@ function of(
|
|
|
358
359
|
}
|
|
359
360
|
}
|
|
360
361
|
|
|
362
|
+
function of(
|
|
363
|
+
entries: ReadonlyArray<LedgerEntry>,
|
|
364
|
+
events: ReadonlyArray<RunEvent>,
|
|
365
|
+
issue: number,
|
|
366
|
+
edit_ms?: number,
|
|
367
|
+
): Breakdown | undefined {
|
|
368
|
+
const span = lane_net_time.span_of(entries, issue)
|
|
369
|
+
const breakdown = breakdown_of(
|
|
370
|
+
entries,
|
|
371
|
+
lane_stage_events.of(entries, events, issue),
|
|
372
|
+
issue,
|
|
373
|
+
edit_ms,
|
|
374
|
+
)
|
|
375
|
+
|
|
376
|
+
return breakdown === undefined || span === undefined
|
|
377
|
+
? undefined
|
|
378
|
+
: { ...breakdown, reasons: reasons_of(events, issue, span) }
|
|
379
|
+
}
|
|
380
|
+
|
|
361
381
|
// The stage `at_ms` fell in — the plan, the implementation or a ship stage, by the spans `of` cut — or
|
|
362
382
|
// `undefined` outside them; `josh cost:audit` attributes a request's tokens by it
|
|
363
383
|
// (joshuafolkken/kit#5936).
|