@joshuafolkken/kit 1.3041.0 → 1.3092.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/fullrun-steps.md +3 -3
- package/.claude/skills/workflow-commands/halfrun.md +3 -2
- package/.claude/skills/workflow-commands/kickoff.md +9 -2
- package/.claude/skills/workflow-commands/prerequisite.md +2 -0
- package/.claude/skills/workflow-commands/progress-watcher.md +10 -8
- package/.claude/skills/workflow-commands/retrospective.md +2 -1
- package/.claude/skills/workflow-commands/split-assessment.md +4 -0
- package/.github/workflows/ci.yml +0 -20
- package/.github/workflows/pr-classification.yml +0 -5
- package/.github/workflows/publish.yml +0 -1
- package/.github/workflows/sonar-qube.yml +0 -5
- package/README.md +2 -0
- package/SECURITY.md +2 -1
- package/dist/.inputs-verified.json +1 -1
- package/dist/commands/adopt.js +29 -20
- package/dist/commands/auto-ok-judge-cli.js +43 -33
- package/dist/commands/auto-ok-main.js +73 -74
- package/dist/commands/backlog-budget-main.js +5 -6
- package/dist/commands/backlog-drive-cli.js +286 -305
- package/dist/commands/backlog-next-main.js +111 -108
- package/dist/commands/backlog-offer-main.js +148 -112
- package/dist/commands/backlog-plan-cli.js +123 -120
- package/dist/commands/backlog-triage-cli.js +131 -128
- package/dist/commands/backlogrun-cli.js +273 -264
- package/dist/commands/behavior-cli.js +23 -26
- package/dist/commands/bytes-command.js +56 -59
- package/dist/commands/cases-cli.js +4 -5
- package/dist/commands/check-commit-message-main.js +3 -4
- package/dist/commands/check-related.js +125 -119
- package/dist/commands/chunk-26JL4UU4.js +365 -0
- package/dist/commands/chunk-2BIVHPCA.js +85 -0
- package/dist/commands/chunk-2CKJODCK.js +245 -0
- package/dist/commands/chunk-2E6PSONB.js +46 -0
- package/dist/commands/chunk-2GA4775H.js +77 -0
- package/dist/commands/chunk-2O64H5UJ.js +462 -0
- package/dist/commands/chunk-2OEXY4GM.js +252 -0
- package/dist/commands/chunk-2OMIHPPE.js +51 -0
- package/dist/commands/chunk-2ONSHOAY.js +46 -0
- package/dist/commands/chunk-2Q7MGFYB.js +1208 -0
- package/dist/commands/chunk-2SA3W4JF.js +41 -0
- package/dist/commands/chunk-2VY7CJ2R.js +212 -0
- package/dist/commands/chunk-2WRDAQPJ.js +74 -0
- package/dist/commands/chunk-2XLR7R6E.js +541 -0
- package/dist/commands/chunk-2XZF3YFY.js +47 -0
- package/dist/commands/chunk-33TAOZUE.js +29 -0
- package/dist/commands/chunk-374XGAWD.js +158 -0
- package/dist/commands/chunk-3CJNQU7P.js +179 -0
- package/dist/commands/chunk-3D5T6KMW.js +59 -0
- package/dist/commands/chunk-3EW5LTN3.js +114 -0
- package/dist/commands/chunk-3F3RNIG2.js +128 -0
- package/dist/commands/chunk-3FLTEJZY.js +74 -0
- package/dist/commands/chunk-3JWPTRNI.js +60 -0
- package/dist/commands/chunk-3MQTOUXT.js +94 -0
- package/dist/commands/chunk-3PCUERXE.js +19 -0
- package/dist/commands/chunk-3U6A5WON.js +173 -0
- package/dist/commands/chunk-3YT3RCSI.js +140 -0
- package/dist/commands/chunk-43DU7DYZ.js +540 -0
- package/dist/commands/chunk-43H725LG.js +132 -0
- package/dist/commands/chunk-46STCE6Q.js +48 -0
- package/dist/commands/chunk-46WEC6HZ.js +82 -0
- package/dist/commands/chunk-47J4KOZP.js +46 -0
- package/dist/commands/chunk-47W7PF4T.js +22 -0
- package/dist/commands/chunk-4F4KARQN.js +229 -0
- package/dist/commands/chunk-4GUGC4IW.js +338 -0
- package/dist/commands/chunk-4HB7NWXP.js +263 -0
- package/dist/commands/chunk-4HOTJAO6.js +89 -0
- package/dist/commands/chunk-4I5AA4P5.js +237 -0
- package/dist/commands/chunk-4IDINPBE.js +525 -0
- package/dist/commands/chunk-4K7KLR7L.js +69 -0
- package/dist/commands/chunk-4MGTNY2L.js +347 -0
- package/dist/commands/chunk-4NSIW3UB.js +104 -0
- package/dist/commands/chunk-4YTKV6WV.js +37 -0
- package/dist/commands/chunk-5ARNFMQK.js +1263 -0
- package/dist/commands/chunk-5AZTSESD.js +114 -0
- package/dist/commands/chunk-5FUI2MLY.js +89 -0
- package/dist/commands/chunk-5GI5GLC4.js +214 -0
- package/dist/commands/chunk-5IHEBIPD.js +333 -0
- package/dist/commands/chunk-5KAW5GPF.js +44 -0
- package/dist/commands/chunk-5KSJEWXR.js +77 -0
- package/dist/commands/chunk-5OF2B4BF.js +35 -0
- package/dist/commands/chunk-5PLJ7R3D.js +126 -0
- package/dist/commands/chunk-5PPWXOCF.js +64 -0
- package/dist/commands/chunk-5VQCL33M.js +46 -0
- package/dist/commands/chunk-5Y7FOJLX.js +186 -0
- package/dist/commands/chunk-5YTEMF4O.js +110 -0
- package/dist/commands/chunk-62NYXZCC.js +241 -0
- package/dist/commands/chunk-6KUA7MRG.js +64 -0
- package/dist/commands/chunk-6LDEZFYR.js +88 -0
- package/dist/commands/chunk-6NXIZMIK.js +122 -0
- package/dist/commands/chunk-6O45F6YI.js +86 -0
- package/dist/commands/chunk-6OHJBQDE.js +184 -0
- package/dist/commands/chunk-6WDCCG3M.js +1249 -0
- package/dist/commands/chunk-6ZHXEQAI.js +715 -0
- package/dist/commands/chunk-736NECRD.js +16 -0
- package/dist/commands/chunk-77LEKVEE.js +32 -0
- package/dist/commands/chunk-7CX5VYOL.js +50 -0
- package/dist/commands/chunk-7DGHFBU7.js +247 -0
- package/dist/commands/chunk-7E43YW53.js +128 -0
- package/dist/commands/chunk-7EAYFMDN.js +235 -0
- package/dist/commands/chunk-7HP3FQGQ.js +51 -0
- package/dist/commands/chunk-7JOOMFDI.js +155 -0
- package/dist/commands/chunk-7OEBSPPU.js +321 -0
- package/dist/commands/chunk-A3JYZWBS.js +803 -0
- package/dist/commands/chunk-A3LCN4KA.js +84 -0
- package/dist/commands/chunk-ABLXBG6C.js +98 -0
- package/dist/commands/chunk-AN7BFVHU.js +244 -0
- package/dist/commands/chunk-AQCVEQSM.js +99 -0
- package/dist/commands/chunk-AT46EY7H.js +393 -0
- package/dist/commands/chunk-AU563VKH.js +75 -0
- package/dist/commands/chunk-AUTD5FV2.js +1077 -0
- package/dist/commands/chunk-AV26CMY6.js +304 -0
- package/dist/commands/chunk-B2PJEV3S.js +246 -0
- package/dist/commands/chunk-B545ENGY.js +214 -0
- package/dist/commands/chunk-B5HP6T4L.js +170 -0
- package/dist/commands/chunk-B5XYAWNN.js +37 -0
- package/dist/commands/chunk-B73IIRMS.js +207 -0
- package/dist/commands/chunk-BAEDHPXW.js +160 -0
- package/dist/commands/chunk-BDSG6JKH.js +977 -0
- package/dist/commands/chunk-BE6F4YK2.js +769 -0
- package/dist/commands/chunk-BFKTUD3V.js +33 -0
- package/dist/commands/chunk-BLRXHK2V.js +17 -0
- package/dist/commands/chunk-BLUAO4QW.js +173 -0
- package/dist/commands/chunk-BML6MEUB.js +326 -0
- package/dist/commands/chunk-BPDNGJXY.js +63 -0
- package/dist/commands/chunk-BQLKWGGC.js +118 -0
- package/dist/commands/chunk-BRMJVCP7.js +167 -0
- package/dist/commands/chunk-BRWR5YKU.js +268 -0
- package/dist/commands/chunk-BUZAYEBD.js +319 -0
- package/dist/commands/chunk-BVUL57IX.js +139 -0
- package/dist/commands/chunk-CC4BIGCA.js +20 -0
- package/dist/commands/chunk-CCHJZEF5.js +4220 -0
- package/dist/commands/chunk-CDK7QZWG.js +44 -0
- package/dist/commands/chunk-CDYFUCDC.js +72 -0
- package/dist/commands/chunk-CEADAQIL.js +170 -0
- package/dist/commands/chunk-CNL3SLM6.js +116 -0
- package/dist/commands/chunk-CNQ7D2GZ.js +104 -0
- package/dist/commands/chunk-CTXJVMHW.js +48 -0
- package/dist/commands/chunk-CUWT6UQO.js +13 -0
- package/dist/commands/chunk-CVRDJCOE.js +125 -0
- package/dist/commands/chunk-D6CF5QGM.js +80 -0
- package/dist/commands/chunk-DACNQAXC.js +20 -0
- package/dist/commands/chunk-DDOS32JU.js +74 -0
- package/dist/commands/chunk-DDZVMXZD.js +481 -0
- package/dist/commands/chunk-DF6QD4AF.js +52 -0
- package/dist/commands/chunk-DFEXNB44.js +159 -0
- package/dist/commands/chunk-DHDKG5HZ.js +151 -0
- package/dist/commands/chunk-DHJRFBKO.js +223 -0
- package/dist/commands/chunk-DKDWOE3C.js +78 -0
- package/dist/commands/chunk-DKO5VTEH.js +65 -0
- package/dist/commands/chunk-DLHH3MLS.js +85 -0
- package/dist/commands/chunk-DOYNK72G.js +81 -0
- package/dist/commands/chunk-DS53UUDH.js +679 -0
- package/dist/commands/chunk-DUA4E4ES.js +230 -0
- package/dist/commands/chunk-DURHGVRC.js +33 -0
- package/dist/commands/chunk-DVCMQMRN.js +191 -0
- package/dist/commands/chunk-E3YKMCCJ.js +108 -0
- package/dist/commands/chunk-E4F2RTKC.js +272 -0
- package/dist/commands/chunk-E4PFCTXN.js +127 -0
- package/dist/commands/chunk-EAOTR2WL.js +24 -0
- package/dist/commands/chunk-EE4VOZJP.js +167 -0
- package/dist/commands/chunk-EHVEWJQ4.js +33 -0
- package/dist/commands/chunk-EMFSPPMH.js +98 -0
- package/dist/commands/chunk-EN65ZS3S.js +73 -0
- package/dist/commands/chunk-ES42XPAD.js +123 -0
- package/dist/commands/chunk-ESUY7KTZ.js +137 -0
- package/dist/commands/chunk-ET6IRQ3L.js +330 -0
- package/dist/commands/chunk-EWCUT7U2.js +1314 -0
- package/dist/commands/chunk-EWXXEGXL.js +149 -0
- package/dist/commands/chunk-EZYW54OQ.js +7569 -0
- package/dist/commands/chunk-F2RDEF2J.js +205 -0
- package/dist/commands/chunk-F2U46HAE.js +52 -0
- package/dist/commands/chunk-F2VYWU6Z.js +653 -0
- package/dist/commands/chunk-F4SGOTUF.js +36 -0
- package/dist/commands/chunk-F4YMLVWN.js +183 -0
- package/dist/commands/chunk-F5N2QIFD.js +213 -0
- package/dist/commands/chunk-F7B4ESZE.js +80 -0
- package/dist/commands/chunk-FJM2HWKW.js +299 -0
- package/dist/commands/chunk-FJMXUDEY.js +3985 -0
- package/dist/commands/chunk-FM7VVAK6.js +426 -0
- package/dist/commands/chunk-FQWRM5FC.js +67 -0
- package/dist/commands/chunk-FT33ZCSB.js +298 -0
- package/dist/commands/chunk-G2DNS74C.js +53 -0
- package/dist/commands/chunk-G75GWNNY.js +101 -0
- package/dist/commands/chunk-GA2YSPFH.js +32 -0
- package/dist/commands/chunk-GAVSK6P6.js +230 -0
- package/dist/commands/chunk-GB2BRQVL.js +300 -0
- package/dist/commands/chunk-GBMZXFFC.js +44 -0
- package/dist/commands/chunk-GDP7QXYE.js +76 -0
- package/dist/commands/chunk-GGWXF7RJ.js +70 -0
- package/dist/commands/chunk-GHOTKHI4.js +30 -0
- package/dist/commands/chunk-GMVN6ZP2.js +48 -0
- package/dist/commands/chunk-GNTTGRCX.js +133 -0
- package/dist/commands/chunk-GOY5JECO.js +130 -0
- package/dist/commands/chunk-GVDRRBHZ.js +507 -0
- package/dist/commands/chunk-GWTBIGYC.js +550 -0
- package/dist/commands/chunk-GZL6ISVM.js +72 -0
- package/dist/commands/chunk-HALHQILI.js +51 -0
- package/dist/commands/chunk-HAT7AFBF.js +85 -0
- package/dist/commands/chunk-HDVSZ6CZ.js +292 -0
- package/dist/commands/chunk-HE3GOMR7.js +88 -0
- package/dist/commands/chunk-HEFUC4ZW.js +65 -0
- package/dist/commands/chunk-HESWKELD.js +60 -0
- package/dist/commands/chunk-HNFBEB4L.js +77 -0
- package/dist/commands/chunk-HRN73FQJ.js +77 -0
- package/dist/commands/chunk-HYE3MBAN.js +113 -0
- package/dist/commands/chunk-IAB6LCJL.js +18 -0
- package/dist/commands/chunk-IAGENI2U.js +42 -0
- package/dist/commands/chunk-ICPVBHIX.js +48 -0
- package/dist/commands/chunk-IEKW3ON6.js +161 -0
- package/dist/commands/chunk-IOKOHB7P.js +109 -0
- package/dist/commands/chunk-IONGJJYM.js +179 -0
- package/dist/commands/chunk-IP23WOWP.js +126 -0
- package/dist/commands/chunk-IPS7EBE5.js +140 -0
- package/dist/commands/chunk-IXZZSST7.js +459 -0
- package/dist/commands/chunk-J4XHEOOW.js +156 -0
- package/dist/commands/chunk-JDHLHYJJ.js +208 -0
- package/dist/commands/chunk-JEYITIWB.js +423 -0
- package/dist/commands/chunk-JGX7JIW4.js +126 -0
- package/dist/commands/chunk-JHIGDFBS.js +59 -0
- package/dist/commands/chunk-JI2EGXZX.js +53 -0
- package/dist/commands/chunk-JNV3VRK2.js +47 -0
- package/dist/commands/chunk-JPMAW2VZ.js +91 -0
- package/dist/commands/chunk-JQEY6KDP.js +90 -0
- package/dist/commands/chunk-JSJDIEGZ.js +88 -0
- package/dist/commands/chunk-JT5ICRFF.js +44 -0
- package/dist/commands/chunk-JUCJ4Y42.js +77 -0
- package/dist/commands/chunk-K3OZBV3L.js +49 -0
- package/dist/commands/chunk-K5H3CLZZ.js +430 -0
- package/dist/commands/chunk-K6P5PISC.js +114 -0
- package/dist/commands/chunk-KD3SEAMV.js +402 -0
- package/dist/commands/chunk-KDCHY7XO.js +88 -0
- package/dist/commands/chunk-KDGX3JTV.js +51 -0
- package/dist/commands/chunk-KGSEWOKI.js +353 -0
- package/dist/commands/chunk-KHGDZQRG.js +271 -0
- package/dist/commands/chunk-KIS7JFNP.js +217 -0
- package/dist/commands/chunk-KKHD3C2P.js +114 -0
- package/dist/commands/chunk-KKIIY5I5.js +67 -0
- package/dist/commands/chunk-KN46UC77.js +114 -0
- package/dist/commands/chunk-KP2BVAS5.js +125 -0
- package/dist/commands/chunk-KPAJBJXG.js +63 -0
- package/dist/commands/chunk-KPMAJP6D.js +145 -0
- package/dist/commands/chunk-KR6WUAJM.js +122 -0
- package/dist/commands/chunk-KWLNK2NJ.js +391 -0
- package/dist/commands/chunk-L2CLCNXW.js +144 -0
- package/dist/commands/chunk-L7MDU6D7.js +155 -0
- package/dist/commands/chunk-L7VD4MLF.js +78 -0
- package/dist/commands/chunk-LBMAJDGN.js +124 -0
- package/dist/commands/chunk-LBVYFW3I.js +38 -0
- package/dist/commands/chunk-LE3M42CF.js +350 -0
- package/dist/commands/chunk-LIPUSINQ.js +140 -0
- package/dist/commands/chunk-LJVZWE3A.js +1885 -0
- package/dist/commands/chunk-LKSSQVDA.js +49 -0
- package/dist/commands/chunk-LL6G34MF.js +93 -0
- package/dist/commands/chunk-LNQOL2CL.js +321 -0
- package/dist/commands/chunk-LS7P324N.js +72 -0
- package/dist/commands/chunk-LU5EOGFQ.js +50 -0
- package/dist/commands/chunk-LX2ENXHZ.js +197 -0
- package/dist/commands/chunk-M32UPB2D.js +110 -0
- package/dist/commands/chunk-M3UGRNNB.js +103 -0
- package/dist/commands/chunk-M4WG74Q7.js +260 -0
- package/dist/commands/chunk-M5HA2ZCG.js +105 -0
- package/dist/commands/chunk-MDGPJOLK.js +351 -0
- package/dist/commands/chunk-MDKRTUE4.js +288 -0
- package/dist/commands/chunk-MFZVRWRS.js +34 -0
- package/dist/commands/chunk-MHXIJKGP.js +304 -0
- package/dist/commands/chunk-MK4CARBI.js +90 -0
- package/dist/commands/chunk-MLJDW7YN.js +64 -0
- package/dist/commands/chunk-MNLHYAJO.js +80 -0
- package/dist/commands/chunk-MOD3FG4V.js +419 -0
- package/dist/commands/chunk-MRAEJLXL.js +83 -0
- package/dist/commands/chunk-MRW2WYJS.js +68 -0
- package/dist/commands/chunk-MXPCEZL5.js +23 -0
- package/dist/commands/chunk-N2XH7QBY.js +103 -0
- package/dist/commands/chunk-N2ZF6T4E.js +332 -0
- package/dist/commands/chunk-N36NZMAL.js +79 -0
- package/dist/commands/chunk-N4EMFHQ6.js +114 -0
- package/dist/commands/chunk-N4P64UIH.js +211 -0
- package/dist/commands/chunk-NABSSY4P.js +204 -0
- package/dist/commands/chunk-NDQIJBRQ.js +100 -0
- package/dist/commands/chunk-NDR4PCVG.js +29 -0
- package/dist/commands/chunk-NEOCCN6D.js +302 -0
- package/dist/commands/chunk-NFKWFOFM.js +45 -0
- package/dist/commands/chunk-NFUPJBBG.js +516 -0
- package/dist/commands/chunk-NHEBKL7X.js +170 -0
- package/dist/commands/chunk-NHTEC5U4.js +99 -0
- package/dist/commands/chunk-NOSG3RUP.js +84 -0
- package/dist/commands/chunk-NOSODWWK.js +1132 -0
- package/dist/commands/chunk-NPXXYG6Z.js +580 -0
- package/dist/commands/chunk-NR2JDBPV.js +75 -0
- package/dist/commands/chunk-NRULNBYI.js +1153 -0
- package/dist/commands/chunk-NTGF5N3N.js +110 -0
- package/dist/commands/chunk-NTIVNQKF.js +73 -0
- package/dist/commands/chunk-NUCFIYZL.js +119 -0
- package/dist/commands/chunk-NVMV7BYX.js +88 -0
- package/dist/commands/chunk-NYWPTYGL.js +169 -0
- package/dist/commands/chunk-NZ45KOLL.js +104 -0
- package/dist/commands/chunk-O45BX4EL.js +39 -0
- package/dist/commands/chunk-O46T4ANI.js +229 -0
- package/dist/commands/chunk-O5JGV7NA.js +245 -0
- package/dist/commands/chunk-O7ESC4HL.js +566 -0
- package/dist/commands/chunk-OBYLXHCH.js +86 -0
- package/dist/commands/chunk-OKN63ZH5.js +109 -0
- package/dist/commands/chunk-ON4IKRGS.js +469 -0
- package/dist/commands/chunk-OT74RSQO.js +82 -0
- package/dist/commands/chunk-OVCVINYW.js +143 -0
- package/dist/commands/chunk-OZKLVTYI.js +342 -0
- package/dist/commands/chunk-P3LJ2Q4N.js +555 -0
- package/dist/commands/chunk-P43GWYR6.js +185 -0
- package/dist/commands/chunk-P6ASP2DY.js +132 -0
- package/dist/commands/chunk-PBAEJ5PT.js +38 -0
- package/dist/commands/chunk-PCZROH3R.js +100 -0
- package/dist/commands/chunk-PF3PMT2Q.js +46 -0
- package/dist/commands/chunk-PILH72AV.js +170 -0
- package/dist/commands/chunk-PJYTUUTH.js +34 -0
- package/dist/commands/chunk-PKXTISWR.js +58 -0
- package/dist/commands/chunk-PSGLUBSB.js +74 -0
- package/dist/commands/chunk-PUQA7F6Y.js +186 -0
- package/dist/commands/chunk-PVRDJU2B.js +126 -0
- package/dist/commands/chunk-Q3HM2BEH.js +45 -0
- package/dist/commands/chunk-Q42NF2TL.js +47 -0
- package/dist/commands/chunk-Q4ULMZAS.js +106 -0
- package/dist/commands/chunk-QCRUPRQ2.js +207 -0
- package/dist/commands/chunk-QFIKPGMC.js +280 -0
- package/dist/commands/chunk-QSBYULSS.js +100 -0
- package/dist/commands/chunk-QSJCZATC.js +18 -0
- package/dist/commands/chunk-QTJPCXEW.js +23 -0
- package/dist/commands/chunk-QTQAI2M2.js +179 -0
- package/dist/commands/chunk-QTVVFV4Q.js +127 -0
- package/dist/commands/chunk-QX2EMUXV.js +102 -0
- package/dist/commands/chunk-QXBOECGL.js +272 -0
- package/dist/commands/chunk-QXCG3SG4.js +88 -0
- package/dist/commands/chunk-QZVMGAWV.js +307 -0
- package/dist/commands/chunk-R36VZIKU.js +53 -0
- package/dist/commands/chunk-R3F7F3TX.js +94 -0
- package/dist/commands/chunk-R5AABJZJ.js +1062 -0
- package/dist/commands/chunk-R7PYR4HW.js +389 -0
- package/dist/commands/chunk-RDUFVQVJ.js +997 -0
- package/dist/commands/chunk-RESNXNDG.js +54 -0
- package/dist/commands/chunk-RFIOZTXY.js +305 -0
- package/dist/commands/chunk-RFWB2KAV.js +102 -0
- package/dist/commands/chunk-RFXON3FK.js +25 -0
- package/dist/commands/chunk-RGEB5L37.js +66 -0
- package/dist/commands/chunk-RGRLLF2J.js +119 -0
- package/dist/commands/chunk-RLRIMYXM.js +178 -0
- package/dist/commands/chunk-RNB3DQOZ.js +70 -0
- package/dist/commands/chunk-RO4QEZJO.js +172 -0
- package/dist/commands/chunk-RS5HBJY6.js +161 -0
- package/dist/commands/chunk-RV7EQIE4.js +202 -0
- package/dist/commands/chunk-RWPCK3CO.js +41 -0
- package/dist/commands/chunk-RWYSVFIA.js +250 -0
- package/dist/commands/chunk-RYKK75YT.js +289 -0
- package/dist/commands/chunk-S4JE63QE.js +704 -0
- package/dist/commands/chunk-S4OZJIXD.js +134 -0
- package/dist/commands/chunk-SD4EX75H.js +177 -0
- package/dist/commands/chunk-SJITWFNY.js +480 -0
- package/dist/commands/chunk-SKGDMAIA.js +33 -0
- package/dist/commands/chunk-SNSZ25XZ.js +393 -0
- package/dist/commands/chunk-SQZZHK6X.js +119 -0
- package/dist/commands/chunk-SRTEE34O.js +93 -0
- package/dist/commands/chunk-SYTCTLMD.js +285 -0
- package/dist/commands/chunk-T6JUDQMW.js +181 -0
- package/dist/commands/chunk-T6OUNP7E.js +426 -0
- package/dist/commands/chunk-TEXUEBGE.js +208 -0
- package/dist/commands/chunk-TFDVTU6O.js +910 -0
- package/dist/commands/chunk-TFYYXETQ.js +472 -0
- package/dist/commands/chunk-TMFKVJUW.js +121 -0
- package/dist/commands/chunk-TNJU4CXD.js +32 -0
- package/dist/commands/chunk-TRHWBUWE.js +61 -0
- package/dist/commands/chunk-TROCFVCU.js +45 -0
- package/dist/commands/chunk-TTTZZN7F.js +269 -0
- package/dist/commands/chunk-TUBBESHU.js +85 -0
- package/dist/commands/chunk-TVZIFZZN.js +62 -0
- package/dist/commands/chunk-TXRWAL63.js +144 -0
- package/dist/commands/chunk-U46YTYJQ.js +92 -0
- package/dist/commands/chunk-U5EO4QEV.js +48 -0
- package/dist/commands/chunk-UCO333EX.js +47 -0
- package/dist/commands/chunk-UIXQ4IYT.js +445 -0
- package/dist/commands/chunk-UJGNYPMD.js +716 -0
- package/dist/commands/chunk-URZ4RDC4.js +220 -0
- package/dist/commands/chunk-UUH3DE77.js +57 -0
- package/dist/commands/chunk-UVY5ODCM.js +60 -0
- package/dist/commands/chunk-UWMB6EOU.js +45 -0
- package/dist/commands/chunk-UX3HCPLX.js +449 -0
- package/dist/commands/chunk-UY62WJV6.js +120 -0
- package/dist/commands/chunk-V2T5DP3B.js +224 -0
- package/dist/commands/chunk-VAHQ4AFM.js +585 -0
- package/dist/commands/chunk-VCWNMRH7.js +71 -0
- package/dist/commands/chunk-VHLDQ3PH.js +30 -0
- package/dist/commands/chunk-VL5I2IOD.js +332 -0
- package/dist/commands/chunk-VLN6TSPJ.js +139 -0
- package/dist/commands/chunk-VMG3QB6C.js +81 -0
- package/dist/commands/chunk-VO25PMGS.js +58 -0
- package/dist/commands/chunk-VTLWODJ2.js +133 -0
- package/dist/commands/chunk-VXE3V3OC.js +335 -0
- package/dist/commands/chunk-VY7ZJMDT.js +469 -0
- package/dist/commands/chunk-W3MDLQZF.js +137 -0
- package/dist/commands/chunk-W4BR6QNU.js +1241 -0
- package/dist/commands/chunk-WCYRNNKF.js +76 -0
- package/dist/commands/chunk-WEUUJIWQ.js +84 -0
- package/dist/commands/chunk-WNBJK6QE.js +84 -0
- package/dist/commands/chunk-WR5PKCQW.js +61 -0
- package/dist/commands/chunk-WR73HTRG.js +121 -0
- package/dist/commands/chunk-WRNMUQTD.js +95 -0
- package/dist/commands/chunk-WROJTXWZ.js +138 -0
- package/dist/commands/chunk-WTIPX5NG.js +43 -0
- package/dist/commands/chunk-WWLCQREY.js +225 -0
- package/dist/commands/chunk-WXLW7S4M.js +71 -0
- package/dist/commands/chunk-WXXLJQBO.js +67 -0
- package/dist/commands/chunk-X4LYH6Q4.js +56 -0
- package/dist/commands/chunk-XAEL24EG.js +66 -0
- package/dist/commands/chunk-XCCT6GKA.js +74 -0
- package/dist/commands/chunk-XDR2BRDL.js +216 -0
- package/dist/commands/chunk-XRQMVAB4.js +85 -0
- package/dist/commands/chunk-XSKJAG72.js +91 -0
- package/dist/commands/chunk-XTJA34ND.js +492 -0
- package/dist/commands/chunk-XUXCFPDK.js +218 -0
- package/dist/commands/chunk-XXPDFJRI.js +48 -0
- package/dist/commands/chunk-Y6OGDG5I.js +49 -0
- package/dist/commands/chunk-YEAE46TS.js +98 -0
- package/dist/commands/chunk-YEQFAEVW.js +112 -0
- package/dist/commands/chunk-YJZAD4Z5.js +103 -0
- package/dist/commands/chunk-YMAEYY5R.js +278 -0
- package/dist/commands/chunk-YNCF66RK.js +1052 -0
- package/dist/commands/chunk-YOA25SII.js +210 -0
- package/dist/commands/chunk-YOZTZMAT.js +38 -0
- package/dist/commands/chunk-YSGRHVZG.js +897 -0
- package/dist/commands/chunk-YSLGWRQN.js +646 -0
- package/dist/commands/chunk-YTXCLGGL.js +168 -0
- package/dist/commands/chunk-YVHJN2HS.js +74 -0
- package/dist/commands/chunk-YY7XVVSB.js +43 -0
- package/dist/commands/chunk-Z5GZV4DV.js +16 -0
- package/dist/commands/chunk-Z6QLFPFB.js +907 -0
- package/dist/commands/chunk-ZB52ZIEA.js +1629 -0
- package/dist/commands/chunk-ZCD4AV2P.js +73 -0
- package/dist/commands/chunk-ZCHZU6NX.js +799 -0
- package/dist/commands/chunk-ZEH2B3DF.js +239 -0
- package/dist/commands/chunk-ZEUKX3RZ.js +245 -0
- package/dist/commands/chunk-ZGANVZCA.js +92 -0
- package/dist/commands/chunk-ZGBXUY7R.js +198 -0
- package/dist/commands/chunk-ZGEUWHFF.js +297 -0
- package/dist/commands/chunk-ZHSNQ2F7.js +161 -0
- package/dist/commands/chunk-ZIIUBGON.js +773 -0
- package/dist/commands/chunk-ZJ5S4VFD.js +258 -0
- package/dist/commands/chunk-ZNIIA275.js +59 -0
- package/dist/commands/chunk-ZV6BZZJ2.js +271 -0
- package/dist/commands/ci-timing-cli.js +22 -3
- package/dist/commands/code-symbol-cli.js +21 -7
- package/dist/commands/codex-hook-adapter.js +124 -119
- package/dist/commands/command-derive.js +9 -11
- package/dist/commands/cost-audit-main.js +118 -119
- package/dist/commands/cost-main.js +5 -7
- package/dist/commands/cspell-cached.js +55 -57
- package/dist/commands/defect-origin-main.js +42 -37
- package/dist/commands/defect-report-main.js +33 -25
- package/dist/commands/diff-summary-cli.js +3 -4
- package/dist/commands/disposition-cli.js +117 -118
- package/dist/commands/doctor.js +24 -11
- package/dist/commands/document-read-cli.js +50 -53
- package/dist/commands/document-section-main.js +50 -53
- package/dist/commands/dogfood-commit-cli.js +19 -4
- package/dist/commands/effect-audit-cli.js +40 -41
- package/dist/commands/epic-audit-main.js +88 -86
- package/dist/commands/epic-bundle-main.js +122 -119
- package/dist/commands/epic-check.js +37 -31
- package/dist/commands/epic-main.js +129 -126
- package/dist/commands/epic-next-main.js +85 -83
- package/dist/commands/eval-run.js +6 -7
- package/dist/commands/format-edited-cli.js +71 -46
- package/dist/commands/format.js +41 -56
- package/dist/commands/fresh-machine-cli.js +24 -7
- package/dist/commands/gh-usage-cli.js +22 -22
- package/dist/commands/git-followup-workflow.js +158 -158
- package/dist/commands/git-gh-checks-failed-main.js +23 -15
- package/dist/commands/git-workflow.js +52 -53
- package/dist/commands/github-release-cli.js +3 -3
- package/dist/commands/hook-ledger-cli.js +93 -94
- package/dist/commands/init-main.js +40 -40
- package/dist/commands/inputs.json +2042 -2002
- package/dist/commands/issue-ack-cli.js +28 -21
- package/dist/commands/issue-already-done-cli.js +107 -110
- package/dist/commands/issue-body-cli.js +71 -73
- package/dist/commands/issue-cite-main.js +35 -28
- package/dist/commands/issue-comment-main.js +36 -30
- package/dist/commands/issue-consolidate-cli.js +54 -54
- package/dist/commands/issue-file-main.js +274 -148
- package/dist/commands/issue-fold-existing-cli.js +126 -123
- package/dist/commands/issue-fold-main.js +57 -60
- package/dist/commands/issue-lint-main.js +59 -61
- package/dist/commands/issue-measured-cli.js +108 -110
- package/dist/commands/issue-plan-cli.js +156 -155
- package/dist/commands/issue-premise-unmet-cli.js +111 -113
- package/dist/commands/issue-priority-cli.js +38 -32
- package/dist/commands/issue-read-main.js +38 -33
- package/dist/commands/issue-release-class-cli.js +37 -31
- package/dist/commands/issue-release-main.js +35 -29
- package/dist/commands/issue-scout-main.js +123 -120
- package/dist/commands/issue-spill-main.js +149 -144
- package/dist/commands/issue-state-main.js +36 -31
- package/dist/commands/issue-tick-cli.js +37 -31
- package/dist/commands/josh-completion.js +21 -24
- package/dist/commands/lane-adopt-cli.js +53 -55
- package/dist/commands/lane-breakdown-cli.js +193 -172
- package/dist/commands/lane-cli.js +199 -180
- package/dist/commands/lane-launch-main.js +106 -56
- package/dist/commands/lane-limit-cli.js +119 -116
- package/dist/commands/lane-measure-cli.js +408 -245
- package/dist/commands/lane-pause-cli.js +51 -54
- package/dist/commands/lane-plan-cli.js +148 -147
- package/dist/commands/lane-resolve-cli.js +48 -50
- package/dist/commands/lane-restart-cli.js +185 -168
- package/dist/commands/lane-why-cli.js +121 -122
- package/dist/commands/lane-withdraw-cli.js +84 -86
- package/dist/commands/latest-corepack.js +3 -2
- package/dist/commands/latest-if-required-cli.js +12 -15
- package/dist/commands/latest-lane-guard-main.js +2 -3
- package/dist/commands/latest-scope-main.js +5 -7
- package/dist/commands/latest-update.js +3 -2
- package/dist/commands/lines-command.js +8 -10
- package/dist/commands/lint-parallel-main.js +65 -67
- package/dist/commands/lint-related.js +149 -133
- package/dist/commands/lint-rule.js +64 -66
- package/dist/commands/lockfile-policy.js +29 -32
- package/dist/commands/main-merge-main.js +23 -25
- package/dist/commands/main-sync-main.js +23 -24
- package/dist/commands/managed-config-scope-cli.js +11 -10
- package/dist/commands/measure-rerun-cli.js +31 -26
- package/dist/commands/metrics-command.js +97 -100
- package/dist/commands/observation-record-cli.js +24 -14
- package/dist/commands/observations-flush-cli.js +50 -52
- package/dist/commands/overrides-check.js +1 -1
- package/dist/commands/package-scout-cli.js +70 -73
- package/dist/commands/pin-verify-cli.js +21 -2
- package/dist/commands/plan-consumers-main.js +3 -4
- package/dist/commands/plan-scaffold-cli.js +145 -146
- package/dist/commands/pr-classification-main.js +22 -3
- package/dist/commands/pre-commit-lint.js +30 -34
- package/dist/commands/pre-commit-type-check.js +55 -55
- package/dist/commands/pre-push-unit.js +69 -70
- package/dist/commands/pretool-guard-cli.js +111 -113
- package/dist/commands/prevent-main-commit.js +2 -3
- package/dist/commands/project-profile-cli.js +24 -9
- package/dist/commands/propagate.js +31 -23
- package/dist/commands/prose-stale-cli.js +48 -42
- package/dist/commands/publishable-range-check.js +3 -3
- package/dist/commands/read-set-cli.js +58 -61
- package/dist/commands/refactor-scan-cli.js +8 -9
- package/dist/commands/release-cli.js +57 -57
- package/dist/commands/release-scope-main.js +41 -36
- package/dist/commands/rename-cli.js +64 -36
- package/dist/commands/repo-party-cli.js +3 -4
- package/dist/commands/report-template-cli.js +4 -5
- package/dist/commands/reserved-run.js +17 -20
- package/dist/commands/retrospective-cli.js +126 -127
- package/dist/commands/review-attest-cli.js +28 -20
- package/dist/commands/review-brief-main.js +184 -167
- package/dist/commands/review-findings-cli.js +23 -13
- package/dist/commands/review-pair-cli.js +180 -156
- package/dist/commands/review-record-main.js +171 -147
- package/dist/commands/review-round2-cli.js +89 -91
- package/dist/commands/review-stops-cli.js +51 -54
- package/dist/commands/review-submit-cli.js +184 -167
- package/dist/commands/rule-list.js +78 -80
- package/dist/commands/rule-value-cli.js +115 -116
- package/dist/commands/ruleset-check-cli.js +23 -6
- package/dist/commands/run-add-cli.js +115 -75
- package/dist/commands/run-board-main.js +172 -169
- package/dist/commands/run-carry-cli.js +182 -174
- package/dist/commands/run-chain-cli.js +184 -160
- package/dist/commands/run-cut-cli.js +206 -168
- package/dist/commands/run-ending-cli.js +51 -54
- package/dist/commands/run-entry-cli.js +230 -283
- package/dist/commands/run-event-cli.js +18 -21
- package/dist/commands/run-handoff-cli.js +75 -78
- package/dist/commands/run-handoff-lanes-cli.js +48 -51
- package/dist/commands/run-hold-main.js +105 -107
- package/dist/commands/run-liveness-cli.js +47 -49
- package/dist/commands/run-merge-main.js +159 -151
- package/dist/commands/run-next-cli.js +128 -129
- package/dist/commands/run-park-cli.js +137 -140
- package/dist/commands/run-pause-cli.js +190 -186
- package/dist/commands/run-pickup-cli.js +49 -52
- package/dist/commands/run-prep-main.js +124 -125
- package/dist/commands/run-prime-cli.js +175 -147
- package/dist/commands/run-progress-main.js +149 -146
- package/dist/commands/run-report-cli.js +60 -60
- package/dist/commands/run-review-cli.js +229 -214
- package/dist/commands/run-ship-cli.js +258 -252
- package/dist/commands/run-ship-evidence-cli.js +71 -72
- package/dist/commands/run-ship-lap-W66LTXJJ.js +28 -0
- package/dist/commands/run-ship-wait-main.js +83 -85
- package/dist/commands/run-split-cli.js +176 -172
- package/dist/commands/run-stale-main.js +72 -75
- package/dist/commands/run-status-cli.js +44 -44
- package/dist/commands/run-step-cli.js +213 -211
- package/dist/commands/run-tail-cli.js +23 -18
- package/dist/commands/run-tidy-main.js +67 -69
- package/dist/commands/run-wake-main.js +206 -187
- package/dist/commands/run-watcher-guard-cli.js +63 -66
- package/dist/commands/security-audit-main.js +21 -24
- package/dist/commands/security-audit-provision-main.js +9 -11
- package/dist/commands/selfcheck-cli.js +63 -57
- package/dist/commands/session-language-main.js +70 -73
- package/dist/commands/sonar-hotspots-cli.js +9 -8
- package/dist/commands/sonar-new-code-cli.js +3 -4
- package/dist/commands/split-assess-cli.js +55 -58
- package/dist/commands/split-child-recover-cli.js +38 -39
- package/dist/commands/start.js +64 -64
- package/dist/commands/stash-pop-main.js +4 -5
- package/dist/commands/stash-push-main.js +7 -9
- package/dist/commands/stop-guard.js +180 -176
- package/dist/commands/sync-main.js +30 -15
- package/dist/commands/telegram-test-main.js +29 -22
- package/dist/commands/test-declared.js +29 -15
- package/dist/commands/test-e2e-guard.js +54 -54
- package/dist/commands/test-pinned-main.js +57 -56
- package/dist/commands/test-reach-cli.js +40 -32
- package/dist/commands/test-red-main.js +12 -14
- package/dist/commands/test-related-Z6YY2GFH.js +113 -0
- package/dist/commands/test-related-main.js +89 -89
- package/dist/commands/test-unit-guard-main.js +37 -37
- package/dist/commands/time-cli.js +54 -57
- package/dist/commands/time-density-cli.js +26 -29
- package/dist/commands/tree-status-cli.js +6 -8
- package/dist/commands/type-check-command.js +26 -11
- package/dist/commands/ui-routes-cli.js +5 -6
- package/dist/commands/ui-shot-cli.js +1 -1
- package/dist/commands/uninstall.js +44 -43
- package/dist/commands/unused-members-KVKZDTXD.js +329 -0
- package/dist/commands/unused-members-cli.js +27 -12
- package/dist/commands/upstream-interrupt-main.js +159 -151
- package/dist/commands/verification-gate.js +85 -86
- package/dist/commands/version-check.js +25 -8
- package/dist/hooks/chunk-3SA3FIQC.js +6869 -0
- package/dist/hooks/chunk-46PTTMGE.js +1625 -0
- package/dist/hooks/chunk-5NIBRHWG.js +77 -0
- package/dist/hooks/chunk-76QKN2K3.js +258 -0
- package/dist/hooks/chunk-CHEKMGFP.js +321 -0
- package/dist/hooks/chunk-DCILEVDR.js +5173 -0
- package/dist/hooks/chunk-HVNGIM5W.js +5092 -0
- package/dist/hooks/chunk-L6IZZ2IL.js +11219 -0
- package/dist/hooks/chunk-UZXMFOVK.js +9170 -0
- package/dist/hooks/chunk-WCJ2GWYJ.js +1381 -0
- package/dist/hooks/chunk-YRKS5ZKE.js +1915 -0
- package/dist/hooks/codex-hook-adapter.js +11 -12
- package/dist/hooks/daemon.js +2140 -1387
- package/dist/hooks/format-edited.js +6 -6
- package/dist/hooks/inputs.json +512 -488
- package/dist/hooks/pretool-guard.js +8 -8
- package/dist/hooks/run-ship-lap-P5555IG7.js +8 -0
- package/dist/hooks/session-lang.js +10 -8
- package/dist/hooks/stop-guard.js +962 -669
- package/dist/inputs.json +73 -64
- package/dist/josh.js +1029 -577
- package/dist/registry-migrate.mjs +33938 -0
- package/dist/version/index.js +4251 -175
- package/package.json +4 -1
- package/prompts/collaboration-workflow/principles.md +4 -1
- package/prompts/collaboration-workflow/rule-delivery.md +1 -1
- package/scripts/agent/codex-launch-identity.ts +70 -0
- package/scripts/auto-ok/auto-ok-cli.ts +2 -0
- package/scripts/auto-ok/auto-ok-judge-write.ts +2 -0
- package/scripts/auto-ok/auto-ok-judge.ts +3 -1
- package/scripts/backlog/backlog-arrival.ts +1 -1
- package/scripts/backlog/backlog-budget.ts +5 -2
- package/scripts/backlog/backlog-defect-priority.ts +1 -1
- package/scripts/backlog/backlog-dispatch-bound.ts +17 -0
- package/scripts/backlog/backlog-drain-flush.ts +38 -3
- package/scripts/backlog/backlog-drive-cli.ts +1 -1
- package/scripts/backlog/backlog-drive-hold.ts +28 -5
- package/scripts/backlog/backlog-drive-launch.ts +37 -15
- package/scripts/backlog/backlog-drive-listing.ts +39 -23
- package/scripts/backlog/backlog-drive-retrospective-unit.ts +3 -2
- package/scripts/backlog/backlog-drive-split-unit.ts +1 -0
- package/scripts/backlog/backlog-hold-codes.ts +7 -0
- package/scripts/backlog/backlog-hold-text.ts +14 -1
- package/scripts/backlog/backlog-measure-close.ts +6 -0
- package/scripts/backlog/backlog-next-shared.ts +20 -2
- package/scripts/backlog/backlog-next.ts +24 -3
- package/scripts/backlog/backlog-offer-cli.ts +69 -16
- package/scripts/build/build-migration.ts +25 -0
- package/scripts/build/build.ts +2 -0
- package/scripts/epic/epic-classify.ts +6 -1
- package/scripts/epic/epic-live.ts +46 -0
- package/scripts/followup/followup-failed-tests.ts +71 -10
- package/scripts/followup/followup-job-rerun.ts +2 -2
- package/scripts/gate/change-scope-action.integration.test.ts +88 -0
- package/scripts/gate/change-scope-action.ts +2 -0
- package/scripts/gate/check-related-order.ts +6 -7
- package/scripts/gate/check-related.ts +18 -8
- package/scripts/gate/core-admission.ts +17 -30
- package/scripts/gate/core-budget-poll.ts +183 -0
- package/scripts/gate/core-budget-timing.ts +1 -1
- package/scripts/gate/core-budget.ts +24 -112
- package/scripts/gate/core-wait-record.ts +52 -7
- package/scripts/gate/machine-capacity.ts +6 -2
- package/scripts/gate/metrics-totals.ts +11 -0
- package/scripts/gate/path-glob.test.ts +18 -0
- package/scripts/gate/toolchain-inputs.consumer.test.ts +36 -0
- package/scripts/gh/fix-gh-packages-logic.ts +22 -15
- package/scripts/gh/gh-request-tally.ts +4 -0
- package/scripts/hooks/bash-revert.ts +79 -31
- package/scripts/hooks/format-edited-file.ts +6 -8
- package/scripts/hooks/implementation-shell.ts +3 -2
- package/scripts/init/distributed-paths.ts +18 -5
- package/scripts/init/init-actions.ts +16 -1
- package/scripts/init/init-bootstrap.ts +2 -0
- package/scripts/init/init-logic.ts +40 -8
- package/scripts/init/init.ts +11 -3
- package/scripts/issue/defect-rate-cli.ts +19 -13
- package/scripts/issue/issue-file-batch.ts +7 -3
- package/scripts/issue/issue-file-cli.ts +19 -6
- package/scripts/issue/issue-file-main.ts +6 -1
- package/scripts/issue/issue-file-pass.ts +17 -0
- package/scripts/issue/issue-file.ts +3 -0
- package/scripts/issue/issue-not-before.ts +9 -2
- package/scripts/issue/issue-observation-gate.ts +141 -0
- package/scripts/issue/issue-observation-prime.ts +83 -0
- package/scripts/issue/issue-publication-state.ts +61 -0
- package/scripts/issue/issue-publication.ts +144 -0
- package/scripts/issue/issue-sample-prime.ts +2 -0
- package/scripts/issue/issue-search-count.ts +26 -0
- package/scripts/issue/issue-search.ts +128 -3
- package/scripts/issue/issue-spill-cli.ts +4 -0
- package/scripts/issue/upstream-interrupt-cli.ts +21 -5
- package/scripts/josh/josh-commands-ai.ts +1 -1
- package/scripts/josh/josh-commands-development.ts +1 -1
- package/scripts/josh/josh-commands-issue-write.ts +9 -0
- package/scripts/josh/josh-commands-run.ts +6 -1
- package/scripts/josh/josh-commands-ship.ts +5 -5
- package/scripts/josh/josh-run.ts +5 -2
- package/scripts/josh/session-language-cli.ts +1 -1
- package/scripts/josh/shared-cache.ts +16 -1
- package/scripts/lane/lane-await.ts +15 -0
- package/scripts/lane/lane-cli.ts +2 -0
- package/scripts/lane/lane-dispatch-dependency.ts +102 -0
- package/scripts/lane/lane-dispatch-wait-stats.ts +239 -0
- package/scripts/lane/lane-dispatch.ts +44 -5
- package/scripts/lane/lane-early-push-count.ts +21 -0
- package/scripts/lane/lane-install.ts +15 -5
- package/scripts/lane/lane-launch-cli.ts +35 -14
- package/scripts/lane/lane-ledger-kind.ts +2 -0
- package/scripts/lane/lane-ledger-schema-ship.ts +5 -1
- package/scripts/lane/lane-ledger-schema.ts +15 -1
- package/scripts/lane/lane-ledger-write.ts +4 -1
- package/scripts/lane/lane-relaunch.ts +25 -2
- package/scripts/lane/lane-state-record.ts +2 -0
- package/scripts/lane/lane-state.ts +8 -1
- package/scripts/lane/lane-stats-tables.ts +2 -0
- package/scripts/lane/openai-lane-supervisor.ts +16 -1
- package/scripts/lib/inherited-scope.ts +48 -0
- package/scripts/lint/format-steps.ts +93 -0
- package/scripts/lint/format.ts +6 -49
- package/scripts/lint/lint-related-fix.ts +35 -0
- package/scripts/lint/lint-related.ts +22 -35
- package/scripts/propagate/propagate-steps.ts +9 -4
- package/scripts/registry-migration/migrate-cli.ts +50 -0
- package/scripts/registry-migration/migrate-files.ts +154 -0
- package/scripts/registry-migration/migrate-lock.ts +147 -0
- package/scripts/registry-migration/migrate.ts +235 -0
- package/scripts/registry-migration/npm-acquisition.ts +118 -0
- package/scripts/review/review-record-cli.ts +27 -13
- package/scripts/review/review-record-pinned.ts +15 -6
- package/scripts/run/add/run-add-cli.ts +21 -3
- package/scripts/run/add/run-add.ts +26 -9
- package/scripts/run/board/run-board-header.ts +4 -5
- package/scripts/run/board/run-board-layout.ts +2 -2
- package/scripts/run/board/run-board-read.ts +7 -1
- package/scripts/run/board/run-board-reason.ts +12 -0
- package/scripts/run/board/run-board-retry-wait.ts +35 -0
- package/scripts/run/board/run-board-roots.ts +25 -2
- package/scripts/run/board/run-board-seat.ts +9 -2
- package/scripts/run/board/run-board-setup.ts +19 -11
- package/scripts/run/board/run-board-status.ts +2 -0
- package/scripts/run/board/run-board-tick.ts +7 -1
- package/scripts/run/carry/run-carry-reclaim.ts +12 -2
- package/scripts/run/carry/run-carry-session.ts +48 -0
- package/scripts/run/carry/run-carry.ts +21 -14
- package/scripts/run/cut/run-cut-resume.ts +15 -3
- package/scripts/run/cut/run-cut.ts +1 -1
- package/scripts/run/detached-launch.ts +14 -5
- package/scripts/run/early-push-record.ts +6 -2
- package/scripts/run/event/run-event-setup.ts +2 -0
- package/scripts/run/event/run-event-stream-emit.ts +27 -7
- package/scripts/run/hold/run-hold-cli.ts +40 -5
- package/scripts/run/merge/run-merge-cut-release.ts +17 -0
- package/scripts/run/merge/run-merge-human-review.ts +6 -0
- package/scripts/run/merge/run-merge-steps.ts +4 -57
- package/scripts/run/merge/run-merge-waits.ts +54 -0
- package/scripts/run/prime/run-prime-cli.ts +16 -2
- package/scripts/run/review/run-review-cli.ts +5 -7
- package/scripts/run/review/run-review-early-push.ts +19 -8
- package/scripts/run/review/run-review-join-read.ts +33 -6
- package/scripts/run/review/run-review-pinned-remaining.ts +124 -0
- package/scripts/run/review/run-review-pinned-steps.ts +7 -1
- package/scripts/run/run-halfrun-resume.ts +49 -6
- package/scripts/run/run-headless.ts +3 -0
- package/scripts/run/run-pr-return.ts +14 -5
- package/scripts/run/run-repair-attempt.ts +219 -0
- package/scripts/run/ship/run-ship-lap.ts +5 -17
- package/scripts/run/ship/run-ship-pre-detach-pinned.ts +4 -13
- package/scripts/run/ship/run-ship-scoped.ts +66 -30
- package/scripts/run/startup/run-startup-schema.ts +31 -0
- package/scripts/run/startup/run-startup-store.ts +130 -0
- package/scripts/run/startup/run-startup.ts +119 -0
- package/scripts/run/wake/run-wake-codex.ts +144 -0
- package/scripts/run/wake/run-wake-driver.ts +32 -7
- package/scripts/run/wake/run-wake-handoff.ts +9 -8
- package/scripts/run/wake/run-wake-loop.ts +23 -3
- package/scripts/run/wake/run-wake-ports.ts +17 -3
- package/scripts/run/wake/run-wake-takeover.ts +6 -3
- package/scripts/run/wake/run-wake-window.ts +4 -1
- package/scripts/run/wake/run-wake.ts +5 -0
- package/scripts/sync/sync-ai-files.ts +17 -0
- package/scripts/sync/sync-configs.ts +11 -1
- package/scripts/sync/sync.ts +5 -1
- package/scripts/test/test-related-cap.ts +7 -3
- package/scripts/test/test-related-imports.ts +92 -0
- package/scripts/test/vitest-failure-summary.ts +7 -0
- package/scripts/version/npm-registry.ts +45 -7
- package/scripts/version/upgrade-shell-command.ts +34 -2
- package/templates/workflows/ci.yml +0 -15
- package/templates/workflows/github-release.yml +0 -5
- package/dist/commands/chunk-23GH6B3D.js +0 -333
- package/dist/commands/chunk-24ZDAWML.js +0 -48
- package/dist/commands/chunk-2BB5ZR2F.js +0 -128
- package/dist/commands/chunk-2BJJUTZA.js +0 -59
- package/dist/commands/chunk-2CXT6MBR.js +0 -51
- package/dist/commands/chunk-2DJLAUYB.js +0 -109
- package/dist/commands/chunk-2EZTYLO4.js +0 -179
- package/dist/commands/chunk-2FJJYCBD.js +0 -149
- package/dist/commands/chunk-2PHOLX62.js +0 -43
- package/dist/commands/chunk-2QM72JCJ.js +0 -338
- package/dist/commands/chunk-2VRITY55.js +0 -41
- package/dist/commands/chunk-2XAH3MHV.js +0 -23
- package/dist/commands/chunk-34KZDKQJ.js +0 -304
- package/dist/commands/chunk-352KLSFX.js +0 -67
- package/dist/commands/chunk-36LOGVJ7.js +0 -38
- package/dist/commands/chunk-3AEDZZNL.js +0 -223
- package/dist/commands/chunk-3B2HEFNO.js +0 -51
- package/dist/commands/chunk-3PEXBHRN.js +0 -33
- package/dist/commands/chunk-3Z425MM3.js +0 -61
- package/dist/commands/chunk-3ZOX4G4U.js +0 -88
- package/dist/commands/chunk-452HWOJ7.js +0 -395
- package/dist/commands/chunk-475EFIJV.js +0 -178
- package/dist/commands/chunk-47UZB54M.js +0 -73
- package/dist/commands/chunk-4DN4XVPL.js +0 -716
- package/dist/commands/chunk-4DVM57T7.js +0 -86
- package/dist/commands/chunk-4EADHJVC.js +0 -247
- package/dist/commands/chunk-4HERA2GY.js +0 -95
- package/dist/commands/chunk-4JI35CVO.js +0 -70
- package/dist/commands/chunk-4L4LNWZ7.js +0 -143
- package/dist/commands/chunk-4N32QKJZ.js +0 -170
- package/dist/commands/chunk-4NRSFLG7.js +0 -185
- package/dist/commands/chunk-4OKRPAUT.js +0 -98
- package/dist/commands/chunk-4PUKDAXL.js +0 -42
- package/dist/commands/chunk-4Q64PG46.js +0 -478
- package/dist/commands/chunk-4UDTQVDD.js +0 -278
- package/dist/commands/chunk-4WR2LEZL.js +0 -123
- package/dist/commands/chunk-4ZJOC6OK.js +0 -298
- package/dist/commands/chunk-4ZQM4I7R.js +0 -533
- package/dist/commands/chunk-54X37JEJ.js +0 -170
- package/dist/commands/chunk-56KW5EOK.js +0 -85
- package/dist/commands/chunk-5CG3XU3O.js +0 -74
- package/dist/commands/chunk-5ESZLHDZ.js +0 -514
- package/dist/commands/chunk-5FBRMARM.js +0 -578
- package/dist/commands/chunk-5RG4S66L.js +0 -47
- package/dist/commands/chunk-5UJGACVN.js +0 -137
- package/dist/commands/chunk-5Y7B7FDL.js +0 -44
- package/dist/commands/chunk-5Z6E5ZUV.js +0 -89
- package/dist/commands/chunk-5ZNUH4LV.js +0 -1722
- package/dist/commands/chunk-5ZTQX7OS.js +0 -125
- package/dist/commands/chunk-66NX6EXR.js +0 -29
- package/dist/commands/chunk-66TGK5XL.js +0 -84
- package/dist/commands/chunk-6CFHLMKM.js +0 -555
- package/dist/commands/chunk-6DDK5XWK.js +0 -74
- package/dist/commands/chunk-6GQX752S.js +0 -145
- package/dist/commands/chunk-6HRRZANN.js +0 -55
- package/dist/commands/chunk-6MAZ55GF.js +0 -1241
- package/dist/commands/chunk-6OP63TBT.js +0 -78
- package/dist/commands/chunk-6Q3XUCLM.js +0 -204
- package/dist/commands/chunk-6RUWU2SB.js +0 -45
- package/dist/commands/chunk-6UCWAFQY.js +0 -245
- package/dist/commands/chunk-6WKJ3GDA.js +0 -408
- package/dist/commands/chunk-6YURRFRU.js +0 -461
- package/dist/commands/chunk-6YVURZAJ.js +0 -350
- package/dist/commands/chunk-6Z4YZG7P.js +0 -169
- package/dist/commands/chunk-77BIN247.js +0 -122
- package/dist/commands/chunk-7ABHNNY3.js +0 -529
- package/dist/commands/chunk-7C7FOKJK.js +0 -115
- package/dist/commands/chunk-7HAGC6SW.js +0 -1062
- package/dist/commands/chunk-7KKUFLH5.js +0 -56
- package/dist/commands/chunk-7LJQMM2K.js +0 -102
- package/dist/commands/chunk-7MJYLUF4.js +0 -99
- package/dist/commands/chunk-7NHZCI5Y.js +0 -704
- package/dist/commands/chunk-7OQ56DVW.js +0 -239
- package/dist/commands/chunk-7VWPGTZO.js +0 -260
- package/dist/commands/chunk-7YZXS3AK.js +0 -30
- package/dist/commands/chunk-A4HOQKOG.js +0 -85
- package/dist/commands/chunk-A6T2N7VC.js +0 -159
- package/dist/commands/chunk-AAUDI7WJ.js +0 -250
- package/dist/commands/chunk-AC26ZUG5.js +0 -259
- package/dist/commands/chunk-ACZ52JPI.js +0 -140
- package/dist/commands/chunk-AJ65WNJB.js +0 -230
- package/dist/commands/chunk-AK7SEO4Y.js +0 -177
- package/dist/commands/chunk-AKK56GNX.js +0 -205
- package/dist/commands/chunk-AKQYYHP2.js +0 -461
- package/dist/commands/chunk-ALDAS2WG.js +0 -137
- package/dist/commands/chunk-ANUTT56I.js +0 -85
- package/dist/commands/chunk-AVVMDVGO.js +0 -68
- package/dist/commands/chunk-B3M5WSGN.js +0 -72
- package/dist/commands/chunk-B7ZNIEDV.js +0 -351
- package/dist/commands/chunk-BCUDQWYK.js +0 -77
- package/dist/commands/chunk-BF6YX4HE.js +0 -70
- package/dist/commands/chunk-BHRS7HAM.js +0 -272
- package/dist/commands/chunk-BIKGPT52.js +0 -29
- package/dist/commands/chunk-BJA5U4Q7.js +0 -75
- package/dist/commands/chunk-BMKWSWWE.js +0 -126
- package/dist/commands/chunk-BMTYUJNT.js +0 -59
- package/dist/commands/chunk-BRHPRDDV.js +0 -127
- package/dist/commands/chunk-BRUBX64M.js +0 -33
- package/dist/commands/chunk-BTZJDHQT.js +0 -46
- package/dist/commands/chunk-BYFC6MD2.js +0 -72
- package/dist/commands/chunk-BYGJ3BCJ.js +0 -803
- package/dist/commands/chunk-C2SEDMZ3.js +0 -238
- package/dist/commands/chunk-C54QXJD6.js +0 -4208
- package/dist/commands/chunk-C6QSVO5K.js +0 -56
- package/dist/commands/chunk-CBAKBWSZ.js +0 -332
- package/dist/commands/chunk-CFHRNTE5.js +0 -326
- package/dist/commands/chunk-CGLLAEKZ.js +0 -110
- package/dist/commands/chunk-CHKYPF5O.js +0 -82
- package/dist/commands/chunk-CJBW6BWG.js +0 -800
- package/dist/commands/chunk-CJKPF5DJ.js +0 -156
- package/dist/commands/chunk-CKUKK7JG.js +0 -252
- package/dist/commands/chunk-CMHGDCGN.js +0 -263
- package/dist/commands/chunk-CNGTHSUS.js +0 -750
- package/dist/commands/chunk-CP2J4RV2.js +0 -3987
- package/dist/commands/chunk-CQZI7RIK.js +0 -72
- package/dist/commands/chunk-CWCKCZS6.js +0 -188
- package/dist/commands/chunk-D5HIP4HT.js +0 -289
- package/dist/commands/chunk-D6D6WQR6.js +0 -125
- package/dist/commands/chunk-D7JRJI44.js +0 -297
- package/dist/commands/chunk-D7OAU32Z.js +0 -119
- package/dist/commands/chunk-DAAX7XDS.js +0 -1208
- package/dist/commands/chunk-DBKTFB5V.js +0 -18
- package/dist/commands/chunk-DEZF7QZZ.js +0 -184
- package/dist/commands/chunk-DMD74E3F.js +0 -39
- package/dist/commands/chunk-DPJVKTO4.js +0 -41
- package/dist/commands/chunk-DXJQHJQ4.js +0 -73
- package/dist/commands/chunk-DYZOOWVW.js +0 -912
- package/dist/commands/chunk-EBI2BAKQ.js +0 -47
- package/dist/commands/chunk-EDKOSZ3K.js +0 -88
- package/dist/commands/chunk-EFDVE5P5.js +0 -121
- package/dist/commands/chunk-EGIHAEMT.js +0 -72
- package/dist/commands/chunk-EKLU6QR7.js +0 -507
- package/dist/commands/chunk-ELY76WAR.js +0 -65
- package/dist/commands/chunk-EM3HAZF6.js +0 -52
- package/dist/commands/chunk-EMTZAGT5.js +0 -51
- package/dist/commands/chunk-ENKFCOVY.js +0 -472
- package/dist/commands/chunk-ERG4QRNG.js +0 -224
- package/dist/commands/chunk-EUGNQCYK.js +0 -139
- package/dist/commands/chunk-EW4NPUMQ.js +0 -363
- package/dist/commands/chunk-EWVR5AEX.js +0 -140
- package/dist/commands/chunk-EXDFKKMH.js +0 -113
- package/dist/commands/chunk-EXWB34R2.js +0 -238
- package/dist/commands/chunk-EYMPBHDN.js +0 -61
- package/dist/commands/chunk-EZ7IPKIH.js +0 -20
- package/dist/commands/chunk-EZSO25UZ.js +0 -80
- package/dist/commands/chunk-F6IQHZYY.js +0 -94
- package/dist/commands/chunk-FDS65XOJ.js +0 -212
- package/dist/commands/chunk-FFHEGWPK.js +0 -91
- package/dist/commands/chunk-FGL6DBZU.js +0 -71
- package/dist/commands/chunk-FHFWNNUC.js +0 -144
- package/dist/commands/chunk-FIUCHMCF.js +0 -32
- package/dist/commands/chunk-FJX7AENO.js +0 -74
- package/dist/commands/chunk-FKZ5E4JD.js +0 -97
- package/dist/commands/chunk-FMZWRDKH.js +0 -302
- package/dist/commands/chunk-FOKCRIAN.js +0 -67
- package/dist/commands/chunk-FQGWO2ZH.js +0 -43
- package/dist/commands/chunk-FROACLVU.js +0 -525
- package/dist/commands/chunk-FURNDIT3.js +0 -34
- package/dist/commands/chunk-FVDQNMP6.js +0 -93
- package/dist/commands/chunk-FVVZIJUC.js +0 -425
- package/dist/commands/chunk-FWU3H4TX.js +0 -17
- package/dist/commands/chunk-G3HBYHFA.js +0 -16
- package/dist/commands/chunk-G4E4M2P4.js +0 -299
- package/dist/commands/chunk-G5KSL2Q2.js +0 -151
- package/dist/commands/chunk-G6XC7V6Y.js +0 -58
- package/dist/commands/chunk-GCPP5XIG.js +0 -90
- package/dist/commands/chunk-GITT5A5A.js +0 -198
- package/dist/commands/chunk-GJYMI2CM.js +0 -48
- package/dist/commands/chunk-GLC47H7I.js +0 -285
- package/dist/commands/chunk-GUR54ELE.js +0 -328
- package/dist/commands/chunk-GW4UWR3O.js +0 -126
- package/dist/commands/chunk-GY4DMCKS.js +0 -306
- package/dist/commands/chunk-H6JQRHDC.js +0 -80
- package/dist/commands/chunk-HATKF6VX.js +0 -173
- package/dist/commands/chunk-HG2NZQD5.js +0 -135
- package/dist/commands/chunk-HH3CVIFU.js +0 -93
- package/dist/commands/chunk-HHMMGDMP.js +0 -469
- package/dist/commands/chunk-HI5WPM6C.js +0 -127
- package/dist/commands/chunk-HQGNXR6I.js +0 -245
- package/dist/commands/chunk-HTIDHEEN.js +0 -108
- package/dist/commands/chunk-HVCQYZVD.js +0 -38
- package/dist/commands/chunk-HWEZRNPL.js +0 -66
- package/dist/commands/chunk-HX3FFIO5.js +0 -74
- package/dist/commands/chunk-HXDTA5VU.js +0 -208
- package/dist/commands/chunk-I2KCGKJI.js +0 -107
- package/dist/commands/chunk-I63RNFFR.js +0 -213
- package/dist/commands/chunk-IAD4WLLI.js +0 -98
- package/dist/commands/chunk-IB5TT73I.js +0 -177
- package/dist/commands/chunk-IBAYXCMU.js +0 -156
- package/dist/commands/chunk-IF3EIFK4.js +0 -7515
- package/dist/commands/chunk-IGDJNXX2.js +0 -49
- package/dist/commands/chunk-ILGPZ47M.js +0 -33
- package/dist/commands/chunk-IYJEBWW5.js +0 -44
- package/dist/commands/chunk-J22PSIXR.js +0 -418
- package/dist/commands/chunk-J66YBAAM.js +0 -161
- package/dist/commands/chunk-J6WKZRV2.js +0 -391
- package/dist/commands/chunk-J7IO3AYH.js +0 -179
- package/dist/commands/chunk-JAKC2BHX.js +0 -88
- package/dist/commands/chunk-JCAQ7B6J.js +0 -124
- package/dist/commands/chunk-JHN6RCE6.js +0 -123
- package/dist/commands/chunk-JIGBNCDR.js +0 -88
- package/dist/commands/chunk-JJHWTFWQ.js +0 -76
- package/dist/commands/chunk-JJRKTWLK.js +0 -64
- package/dist/commands/chunk-JKOGWGQM.js +0 -92
- package/dist/commands/chunk-JM6EVOFN.js +0 -172
- package/dist/commands/chunk-JQXPLMCO.js +0 -81
- package/dist/commands/chunk-JV24VP2O.js +0 -81
- package/dist/commands/chunk-JVKXJ763.js +0 -45
- package/dist/commands/chunk-K275REYP.js +0 -37
- package/dist/commands/chunk-K4G3HOKS.js +0 -105
- package/dist/commands/chunk-K64EIHD2.js +0 -138
- package/dist/commands/chunk-KB3OQWDT.js +0 -71
- package/dist/commands/chunk-KCFOP5RI.js +0 -1310
- package/dist/commands/chunk-KGE4AS2Y.js +0 -134
- package/dist/commands/chunk-KIILCKQR.js +0 -220
- package/dist/commands/chunk-KK2SL42W.js +0 -241
- package/dist/commands/chunk-KKIMVXAP.js +0 -280
- package/dist/commands/chunk-KODXWMBX.js +0 -77
- package/dist/commands/chunk-KPSKWTOS.js +0 -208
- package/dist/commands/chunk-KVHNQHX3.js +0 -100
- package/dist/commands/chunk-KWYQR5MK.js +0 -269
- package/dist/commands/chunk-KXHXMERX.js +0 -214
- package/dist/commands/chunk-KZ5BBBMO.js +0 -271
- package/dist/commands/chunk-KZ7HD37E.js +0 -121
- package/dist/commands/chunk-KZSM5M5P.js +0 -89
- package/dist/commands/chunk-KZZWPUJW.js +0 -25
- package/dist/commands/chunk-L7DAL54N.js +0 -347
- package/dist/commands/chunk-LAR76BFA.js +0 -114
- package/dist/commands/chunk-LB557AHJ.js +0 -192
- package/dist/commands/chunk-LJXKVLYI.js +0 -229
- package/dist/commands/chunk-LOOFYHUM.js +0 -773
- package/dist/commands/chunk-LQXFVZTS.js +0 -13
- package/dist/commands/chunk-LT7QSHR4.js +0 -995
- package/dist/commands/chunk-LUXWDMKI.js +0 -426
- package/dist/commands/chunk-LWAXXZPS.js +0 -118
- package/dist/commands/chunk-LX7TIEMI.js +0 -1612
- package/dist/commands/chunk-LZ5QXE5N.js +0 -244
- package/dist/commands/chunk-M4UV3BEV.js +0 -313
- package/dist/commands/chunk-M6JDU5EK.js +0 -133
- package/dist/commands/chunk-MDLOETXL.js +0 -211
- package/dist/commands/chunk-MFBNNTBM.js +0 -44
- package/dist/commands/chunk-MGF64OHV.js +0 -32
- package/dist/commands/chunk-MI2OS6TL.js +0 -132
- package/dist/commands/chunk-MLW4S35K.js +0 -389
- package/dist/commands/chunk-MN425CU6.js +0 -63
- package/dist/commands/chunk-MPGJ4ONJ.js +0 -634
- package/dist/commands/chunk-MRORPFSO.js +0 -402
- package/dist/commands/chunk-MUGTOJUL.js +0 -319
- package/dist/commands/chunk-MVHPRYHE.js +0 -91
- package/dist/commands/chunk-MWO6FOSZ.js +0 -393
- package/dist/commands/chunk-MXC4IBZ7.js +0 -104
- package/dist/commands/chunk-N7QTMTST.js +0 -210
- package/dist/commands/chunk-NDBX7LSS.js +0 -32
- package/dist/commands/chunk-NEGJ77RV.js +0 -173
- package/dist/commands/chunk-NEGRE5VW.js +0 -101
- package/dist/commands/chunk-NFPD2P3V.js +0 -53
- package/dist/commands/chunk-NHIW7JE6.js +0 -335
- package/dist/commands/chunk-NILSN7A4.js +0 -158
- package/dist/commands/chunk-NOLFSPOB.js +0 -74
- package/dist/commands/chunk-NSAVEXVR.js +0 -353
- package/dist/commands/chunk-NT67QTZO.js +0 -65
- package/dist/commands/chunk-NU7W6QGT.js +0 -155
- package/dist/commands/chunk-NYWGJLBU.js +0 -19
- package/dist/commands/chunk-OAAVY2JK.js +0 -49
- package/dist/commands/chunk-OGS2DK7I.js +0 -47
- package/dist/commands/chunk-OHNP3QL2.js +0 -186
- package/dist/commands/chunk-OIPV3PWW.js +0 -870
- package/dist/commands/chunk-OIX2363L.js +0 -16
- package/dist/commands/chunk-OJ65BZBV.js +0 -646
- package/dist/commands/chunk-OKZWEVR4.js +0 -352
- package/dist/commands/chunk-OL6IF4JC.js +0 -20
- package/dist/commands/chunk-OMPRILFH.js +0 -29
- package/dist/commands/chunk-OOWGH2RG.js +0 -85
- package/dist/commands/chunk-OP2RFVLS.js +0 -102
- package/dist/commands/chunk-ORKVN2LO.js +0 -56
- package/dist/commands/chunk-OSBWXZJ4.js +0 -492
- package/dist/commands/chunk-OT3UMEWK.js +0 -47
- package/dist/commands/chunk-OVWPZDWP.js +0 -64
- package/dist/commands/chunk-OWYK2BEJ.js +0 -1222
- package/dist/commands/chunk-OX3VQLV2.js +0 -488
- package/dist/commands/chunk-OZJP77UM.js +0 -103
- package/dist/commands/chunk-OZZWRJQI.js +0 -246
- package/dist/commands/chunk-P3H3DKTE.js +0 -69
- package/dist/commands/chunk-P4D5RESF.js +0 -88
- package/dist/commands/chunk-P4KIQRSL.js +0 -119
- package/dist/commands/chunk-P5SOYWH2.js +0 -37
- package/dist/commands/chunk-P7FPXAHP.js +0 -29
- package/dist/commands/chunk-PE7B7242.js +0 -84
- package/dist/commands/chunk-PFO7EYAP.js +0 -45
- package/dist/commands/chunk-PHLOTUB7.js +0 -366
- package/dist/commands/chunk-PTNQCCIB.js +0 -41
- package/dist/commands/chunk-PTZEFQUX.js +0 -211
- package/dist/commands/chunk-Q5Q2QYVU.js +0 -112
- package/dist/commands/chunk-Q7EEIOAD.js +0 -120
- package/dist/commands/chunk-QABRNGQV.js +0 -88
- package/dist/commands/chunk-QAHFPCFR.js +0 -50
- package/dist/commands/chunk-QDFVVRQP.js +0 -92
- package/dist/commands/chunk-QGAERR7D.js +0 -99
- package/dist/commands/chunk-QHWJJ6X5.js +0 -53
- package/dist/commands/chunk-QJRVDE7T.js +0 -307
- package/dist/commands/chunk-QMDKDQKW.js +0 -114
- package/dist/commands/chunk-QOSC5RKD.js +0 -18
- package/dist/commands/chunk-QQ4CIYMF.js +0 -132
- package/dist/commands/chunk-QV5FKMOU.js +0 -80
- package/dist/commands/chunk-QWWTC3XR.js +0 -109
- package/dist/commands/chunk-QXQ56E56.js +0 -27
- package/dist/commands/chunk-R54Z2Z3X.js +0 -114
- package/dist/commands/chunk-R6QE5VJG.js +0 -46
- package/dist/commands/chunk-RG53UFNW.js +0 -418
- package/dist/commands/chunk-RGGEQM6G.js +0 -140
- package/dist/commands/chunk-RH6ZWJOA.js +0 -77
- package/dist/commands/chunk-RHKCWJQX.js +0 -62
- package/dist/commands/chunk-RKIAX4DZ.js +0 -191
- package/dist/commands/chunk-RLBFEHHC.js +0 -300
- package/dist/commands/chunk-RN2YDNLF.js +0 -229
- package/dist/commands/chunk-RRAIRS2T.js +0 -54
- package/dist/commands/chunk-RS764ZMU.js +0 -46
- package/dist/commands/chunk-RUIBQMOV.js +0 -38
- package/dist/commands/chunk-RUQY5TS3.js +0 -83
- package/dist/commands/chunk-RVUJ6F5L.js +0 -181
- package/dist/commands/chunk-RW64VHEB.js +0 -130
- package/dist/commands/chunk-RXYMJPJB.js +0 -114
- package/dist/commands/chunk-S4M6UWR2.js +0 -103
- package/dist/commands/chunk-SASX3W2M.js +0 -99
- package/dist/commands/chunk-SFNBUB6D.js +0 -110
- package/dist/commands/chunk-SJ2ZN575.js +0 -90
- package/dist/commands/chunk-SP7DKYGU.js +0 -1263
- package/dist/commands/chunk-SSL6A3Y4.js +0 -165
- package/dist/commands/chunk-SVAKCXZ7.js +0 -44
- package/dist/commands/chunk-SYOXIKB7.js +0 -705
- package/dist/commands/chunk-SZG5HDNP.js +0 -321
- package/dist/commands/chunk-T25S4QHL.js +0 -52
- package/dist/commands/chunk-T4F33UKZ.js +0 -114
- package/dist/commands/chunk-T4UYEHWG.js +0 -50
- package/dist/commands/chunk-TAEGXID2.js +0 -58
- package/dist/commands/chunk-TCBUX52E.js +0 -701
- package/dist/commands/chunk-TEPYEUYG.js +0 -585
- package/dist/commands/chunk-TFLHYC2F.js +0 -141
- package/dist/commands/chunk-TJKM56WJ.js +0 -109
- package/dist/commands/chunk-TLAB552K.js +0 -445
- package/dist/commands/chunk-TP6L4W3W.js +0 -82
- package/dist/commands/chunk-TR7WWYD5.js +0 -60
- package/dist/commands/chunk-TVZXG4Y4.js +0 -197
- package/dist/commands/chunk-TYNH2R66.js +0 -1150
- package/dist/commands/chunk-U3IVVR4W.js +0 -33
- package/dist/commands/chunk-U5P6G3UV.js +0 -77
- package/dist/commands/chunk-U7XU5RG3.js +0 -86
- package/dist/commands/chunk-UKBBWMLE.js +0 -1189
- package/dist/commands/chunk-ULVVGGTY.js +0 -64
- package/dist/commands/chunk-UNMSZGSG.js +0 -269
- package/dist/commands/chunk-URDT2O2K.js +0 -36
- package/dist/commands/chunk-UTHUX7VU.js +0 -88
- package/dist/commands/chunk-V4Z7G4UH.js +0 -73
- package/dist/commands/chunk-V5FD7DVV.js +0 -48
- package/dist/commands/chunk-VCPGFBMN.js +0 -655
- package/dist/commands/chunk-VGPIQNDB.js +0 -24
- package/dist/commands/chunk-VJE3RJAX.js +0 -23
- package/dist/commands/chunk-VK6D5CWA.js +0 -161
- package/dist/commands/chunk-VOF3N4WO.js +0 -114
- package/dist/commands/chunk-VQVPAVQ3.js +0 -45
- package/dist/commands/chunk-VV4TQYGD.js +0 -38
- package/dist/commands/chunk-W3FX7FYN.js +0 -84
- package/dist/commands/chunk-W7DRUOF7.js +0 -122
- package/dist/commands/chunk-WAEN2RTT.js +0 -161
- package/dist/commands/chunk-WCEUMOKK.js +0 -84
- package/dist/commands/chunk-WJ4NEDNI.js +0 -288
- package/dist/commands/chunk-WMMGXJXP.js +0 -92
- package/dist/commands/chunk-WOFLW2LX.js +0 -26
- package/dist/commands/chunk-WTH6NTXU.js +0 -128
- package/dist/commands/chunk-WWVYEHQT.js +0 -272
- package/dist/commands/chunk-X3TNPALI.js +0 -213
- package/dist/commands/chunk-XC6GG5JR.js +0 -78
- package/dist/commands/chunk-XDF25GSU.js +0 -536
- package/dist/commands/chunk-XFPEUYDV.js +0 -67
- package/dist/commands/chunk-XFWI6WHH.js +0 -60
- package/dist/commands/chunk-XGMRAKSL.js +0 -85
- package/dist/commands/chunk-XHGWMD3L.js +0 -104
- package/dist/commands/chunk-XKSUBUIH.js +0 -116
- package/dist/commands/chunk-XPBF5DG3.js +0 -419
- package/dist/commands/chunk-XUMYPESL.js +0 -160
- package/dist/commands/chunk-XXC32PVL.js +0 -541
- package/dist/commands/chunk-XXN2EZBY.js +0 -133
- package/dist/commands/chunk-XXNEY4B3.js +0 -110
- package/dist/commands/chunk-Y27PTXXI.js +0 -258
- package/dist/commands/chunk-Y4EBUI6M.js +0 -237
- package/dist/commands/chunk-YAU3LYNF.js +0 -60
- package/dist/commands/chunk-YDURQICF.js +0 -204
- package/dist/commands/chunk-YGFOGA7C.js +0 -1153
- package/dist/commands/chunk-YHJ2AJMA.js +0 -66
- package/dist/commands/chunk-YIA6FC3K.js +0 -78
- package/dist/commands/chunk-YM77CF4D.js +0 -183
- package/dist/commands/chunk-YNPRJCEO.js +0 -81
- package/dist/commands/chunk-YTBQAD5W.js +0 -170
- package/dist/commands/chunk-YVH2OLDS.js +0 -104
- package/dist/commands/chunk-Z3WGHIVB.js +0 -122
- package/dist/commands/chunk-ZAAHZY2A.js +0 -19
- package/dist/commands/chunk-ZBZ5DDCH.js +0 -1866
- package/dist/commands/chunk-ZLRUHSOP.js +0 -48
- package/dist/commands/chunk-ZNR75OXP.js +0 -444
- package/dist/commands/chunk-ZSOR4ISJ.js +0 -75
- package/dist/commands/chunk-ZVAIIHBE.js +0 -63
- package/dist/commands/chunk-ZYFHYQA7.js +0 -51
- package/dist/commands/chunk-ZZFFSQF4.js +0 -218
- package/dist/commands/chunk-ZZULXNC2.js +0 -47
- package/dist/commands/chunk-ZZXO6TFH.js +0 -232
- package/dist/commands/run-ship-lap-W5T2VHFC.js +0 -30
- package/dist/commands/test-related-ZCNC46MS.js +0 -113
- package/dist/commands/unused-members-STULPRBU.js +0 -331
- package/dist/hooks/chunk-5CUXGQT6.js +0 -8353
- package/dist/hooks/chunk-5R5YFQR5.js +0 -931
- package/dist/hooks/chunk-6RLY27FT.js +0 -232
- package/dist/hooks/chunk-6YGMIODI.js +0 -86
- package/dist/hooks/chunk-AO4TOV4V.js +0 -5026
- package/dist/hooks/chunk-FOW4B7OQ.js +0 -1795
- package/dist/hooks/chunk-G5WSPYJ6.js +0 -5663
- package/dist/hooks/chunk-HHIVWGHX.js +0 -6869
- package/dist/hooks/chunk-IURJANNZ.js +0 -1082
- package/dist/hooks/chunk-OV22V63P.js +0 -10980
- package/dist/hooks/chunk-SXABK6UV.js +0 -321
- package/dist/hooks/run-ship-lap-VCEOUHQI.js +0 -8
|
@@ -0,0 +1,1241 @@
|
|
|
1
|
+
import {
|
|
2
|
+
run_watcher_guard
|
|
3
|
+
} from "./chunk-5KAW5GPF.js";
|
|
4
|
+
import {
|
|
5
|
+
run_event_plan
|
|
6
|
+
} from "./chunk-NDR4PCVG.js";
|
|
7
|
+
import {
|
|
8
|
+
josh_read_only
|
|
9
|
+
} from "./chunk-F4SGOTUF.js";
|
|
10
|
+
import {
|
|
11
|
+
run_progress_read
|
|
12
|
+
} from "./chunk-ES42XPAD.js";
|
|
13
|
+
import {
|
|
14
|
+
gh_usage_log
|
|
15
|
+
} from "./chunk-O45BX4EL.js";
|
|
16
|
+
import {
|
|
17
|
+
issue_watch_gate
|
|
18
|
+
} from "./chunk-6KUA7MRG.js";
|
|
19
|
+
import {
|
|
20
|
+
issue_watch
|
|
21
|
+
} from "./chunk-3CJNQU7P.js";
|
|
22
|
+
import {
|
|
23
|
+
hook_demoted
|
|
24
|
+
} from "./chunk-3JWPTRNI.js";
|
|
25
|
+
import {
|
|
26
|
+
rule_rewrite
|
|
27
|
+
} from "./chunk-WCYRNNKF.js";
|
|
28
|
+
import {
|
|
29
|
+
hook_ledger
|
|
30
|
+
} from "./chunk-4NSIW3UB.js";
|
|
31
|
+
import {
|
|
32
|
+
lane_plan
|
|
33
|
+
} from "./chunk-MDGPJOLK.js";
|
|
34
|
+
import {
|
|
35
|
+
batch_outcome,
|
|
36
|
+
delivered_rules,
|
|
37
|
+
investigation_outcome,
|
|
38
|
+
nested_commands
|
|
39
|
+
} from "./chunk-FJMXUDEY.js";
|
|
40
|
+
import {
|
|
41
|
+
implementation_cut_verdict
|
|
42
|
+
} from "./chunk-ZEH2B3DF.js";
|
|
43
|
+
import {
|
|
44
|
+
lane_background
|
|
45
|
+
} from "./chunk-ZIIUBGON.js";
|
|
46
|
+
import {
|
|
47
|
+
cost_cli,
|
|
48
|
+
cost_verdict
|
|
49
|
+
} from "./chunk-JEYITIWB.js";
|
|
50
|
+
import {
|
|
51
|
+
bash_revert,
|
|
52
|
+
step_zero_notice
|
|
53
|
+
} from "./chunk-BRWR5YKU.js";
|
|
54
|
+
import {
|
|
55
|
+
run_headless
|
|
56
|
+
} from "./chunk-Q4ULMZAS.js";
|
|
57
|
+
import {
|
|
58
|
+
shell_segments
|
|
59
|
+
} from "./chunk-CVJHQOI3.js";
|
|
60
|
+
import {
|
|
61
|
+
duplicate_read_outcome,
|
|
62
|
+
duplicate_reads,
|
|
63
|
+
investigation_reads,
|
|
64
|
+
lane_guard_policy
|
|
65
|
+
} from "./chunk-TFDVTU6O.js";
|
|
66
|
+
import {
|
|
67
|
+
time_spans
|
|
68
|
+
} from "./chunk-R5AABJZJ.js";
|
|
69
|
+
import {
|
|
70
|
+
cost_blocks,
|
|
71
|
+
time_josh_names,
|
|
72
|
+
time_shell
|
|
73
|
+
} from "./chunk-LHKXJD6L.js";
|
|
74
|
+
import {
|
|
75
|
+
canonical_command
|
|
76
|
+
} from "./chunk-ROJXMBXP.js";
|
|
77
|
+
import {
|
|
78
|
+
hook_decision,
|
|
79
|
+
hook_tool_payload
|
|
80
|
+
} from "./chunk-GB2BRQVL.js";
|
|
81
|
+
import {
|
|
82
|
+
hook_context
|
|
83
|
+
} from "./chunk-CUWT6UQO.js";
|
|
84
|
+
import {
|
|
85
|
+
transcript_tail
|
|
86
|
+
} from "./chunk-2OMIHPPE.js";
|
|
87
|
+
import {
|
|
88
|
+
agent_session_role
|
|
89
|
+
} from "./chunk-DURHGVRC.js";
|
|
90
|
+
import {
|
|
91
|
+
run_event_scope,
|
|
92
|
+
run_event_stream_emit
|
|
93
|
+
} from "./chunk-26JL4UU4.js";
|
|
94
|
+
import {
|
|
95
|
+
run_event_stream
|
|
96
|
+
} from "./chunk-KGSEWOKI.js";
|
|
97
|
+
import {
|
|
98
|
+
repository_lock
|
|
99
|
+
} from "./chunk-NUCFIYZL.js";
|
|
100
|
+
import {
|
|
101
|
+
issue_cite
|
|
102
|
+
} from "./chunk-HQ2HSZBN.js";
|
|
103
|
+
import {
|
|
104
|
+
gh_call_kind
|
|
105
|
+
} from "./chunk-43DU7DYZ.js";
|
|
106
|
+
import {
|
|
107
|
+
gh_api
|
|
108
|
+
} from "./chunk-QVOFWFWC.js";
|
|
109
|
+
import {
|
|
110
|
+
git_argv
|
|
111
|
+
} from "./chunk-G6BXCWPH.js";
|
|
112
|
+
import {
|
|
113
|
+
error_text
|
|
114
|
+
} from "./chunk-CDY4NFQG.js";
|
|
115
|
+
import {
|
|
116
|
+
lane_child_marker
|
|
117
|
+
} from "./chunk-XXPDFJRI.js";
|
|
118
|
+
import {
|
|
119
|
+
git_common_directory
|
|
120
|
+
} from "./chunk-JPMAW2VZ.js";
|
|
121
|
+
import {
|
|
122
|
+
json_value
|
|
123
|
+
} from "./chunk-HIU2WXB6.js";
|
|
124
|
+
|
|
125
|
+
// scripts/delegation/large-read-guard.ts
|
|
126
|
+
import { statSync } from "node:fs";
|
|
127
|
+
var SWITCH_ENV_KEY = "JOSH_LARGE_READ_GUARD";
|
|
128
|
+
var LANE_GUARD_ID = "duplicate-read";
|
|
129
|
+
var STAMP_PREFIX = "josh-large-read-guard-";
|
|
130
|
+
var NOTICE_STAMP_PREFIX = "josh-large-read-notice-";
|
|
131
|
+
var READ_TOOL = "Read";
|
|
132
|
+
var BYTES_PER_KB = 1024;
|
|
133
|
+
var LARGE_READ_KB = 32;
|
|
134
|
+
var LARGE_READ_BYTES = LARGE_READ_KB * BYTES_PER_KB;
|
|
135
|
+
var LIMIT_TEXT = `${String(LARGE_READ_KB)} KB`;
|
|
136
|
+
var REASON = `\u26D4 large read: this file is over ${LIMIT_TEXT}, and a whole-file read stays in context and is re-billed on every later call. Grep for the part you need and Read it with offset/limit. Repeat the same call to read the whole file anyway; set \`JOSH_LARGE_READ_GUARD=off\` to disable this guard.`;
|
|
137
|
+
var NOTICE = `\u26A0 large read: this file is over ${LIMIT_TEXT} \u2014 next time Grep for the part you need and Read it with offset/limit. Set \`JOSH_LARGE_READ_GUARD=off\` to silence this.`;
|
|
138
|
+
function is_whole_read(call) {
|
|
139
|
+
if (call.name !== READ_TOOL || !json_value.is_record(call.input)) return false;
|
|
140
|
+
return call.input["offset"] === void 0 && call.input["limit"] === void 0;
|
|
141
|
+
}
|
|
142
|
+
function file_bytes(target) {
|
|
143
|
+
try {
|
|
144
|
+
return statSync(target).size;
|
|
145
|
+
} catch {
|
|
146
|
+
return 0;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
function whole_read_target(call, root) {
|
|
150
|
+
if (!is_whole_read(call)) return void 0;
|
|
151
|
+
const { file_path } = call.input;
|
|
152
|
+
if (typeof file_path !== "string" || file_path === "") return void 0;
|
|
153
|
+
return investigation_reads.resolved(file_path, root);
|
|
154
|
+
}
|
|
155
|
+
function is_large_read(call, root) {
|
|
156
|
+
const target = whole_read_target(call, root);
|
|
157
|
+
return target !== void 0 && file_bytes(target) > LARGE_READ_BYTES;
|
|
158
|
+
}
|
|
159
|
+
function large_read_mode(context) {
|
|
160
|
+
return lane_guard_policy.mode_here(LANE_GUARD_ID, context.cwd, context.env);
|
|
161
|
+
}
|
|
162
|
+
function is_candidate(call, context) {
|
|
163
|
+
return is_large_read(call, context.cwd) && large_read_mode(context) !== "off";
|
|
164
|
+
}
|
|
165
|
+
function last_read_ms(spans) {
|
|
166
|
+
const times = spans.filter((span) => duplicate_reads.is_successful_read(span)).map((span) => span.ended_ms);
|
|
167
|
+
return times.length === 0 ? hook_decision.NEVER_MS : Math.max(...times);
|
|
168
|
+
}
|
|
169
|
+
function is_rearmed(tail, fired_at_ms) {
|
|
170
|
+
const { spans, started_ms } = time_spans.parse_timeline(tail);
|
|
171
|
+
if (fired_at_ms === hook_decision.NEVER_MS || fired_at_ms < started_ms) return true;
|
|
172
|
+
return last_read_ms(spans) > fired_at_ms;
|
|
173
|
+
}
|
|
174
|
+
function is_read_of(span, target, root) {
|
|
175
|
+
const is_read = span.label === READ_TOOL;
|
|
176
|
+
return is_read && span.targets.some((one) => investigation_reads.resolved(one, root) === target);
|
|
177
|
+
}
|
|
178
|
+
function is_repeat_of_refusal(tail, target, root) {
|
|
179
|
+
const reads = time_spans.parse_timeline(tail).spans.filter((span) => is_read_of(span, target, root));
|
|
180
|
+
const latest = reads.at(-1);
|
|
181
|
+
return latest?.outcome === time_spans.FAILED_OUTCOME;
|
|
182
|
+
}
|
|
183
|
+
function refuses(tail, call, _fired_at_ms, run) {
|
|
184
|
+
const { cwd } = run.context;
|
|
185
|
+
const target = whole_read_target(call, cwd);
|
|
186
|
+
if (target === void 0 || large_read_mode(run.context) !== "refuse") return false;
|
|
187
|
+
return !is_repeat_of_refusal(tail, target, cwd);
|
|
188
|
+
}
|
|
189
|
+
function notifies(tail, _call, fired_at_ms, run) {
|
|
190
|
+
return large_read_mode(run.context) === "notice" && is_rearmed(tail, fired_at_ms);
|
|
191
|
+
}
|
|
192
|
+
var GUARD = hook_decision.create_transcript_guard({
|
|
193
|
+
prefix: STAMP_PREFIX,
|
|
194
|
+
switch_key: SWITCH_ENV_KEY,
|
|
195
|
+
is_candidate,
|
|
196
|
+
should_block: refuses,
|
|
197
|
+
reason: REASON,
|
|
198
|
+
notify: { prefix: NOTICE_STAMP_PREFIX, should_notify: notifies, text: () => NOTICE }
|
|
199
|
+
});
|
|
200
|
+
var large_read_outcome = GUARD.outcome;
|
|
201
|
+
var large_read_refusal = GUARD.refusal;
|
|
202
|
+
var { refusal_path } = GUARD;
|
|
203
|
+
var notice_refusal_path = hook_decision.create_refusal_stamp(NOTICE_STAMP_PREFIX).path;
|
|
204
|
+
|
|
205
|
+
// scripts/issue/issue-watch-hook.ts
|
|
206
|
+
var POLL_INTERVAL_MS = 18e4;
|
|
207
|
+
var POLL_TIMEOUT_MS = 5e3;
|
|
208
|
+
function is_new_to_run(record2) {
|
|
209
|
+
const news = record2 === void 0 ? void 0 : issue_watch.news_of(record2);
|
|
210
|
+
return news !== void 0 && news !== record2?.shown;
|
|
211
|
+
}
|
|
212
|
+
function message_of(record2) {
|
|
213
|
+
return record2.pending === void 0 ? record2.notice ?? "" : issue_watch_gate.unread_message(record2);
|
|
214
|
+
}
|
|
215
|
+
async function new_update_reason(now, root) {
|
|
216
|
+
const options = { interval_ms: POLL_INTERVAL_MS, timeout_ms: POLL_TIMEOUT_MS, now };
|
|
217
|
+
const record2 = await issue_watch.poll(options, root);
|
|
218
|
+
if (!is_new_to_run(record2)) return void 0;
|
|
219
|
+
issue_watch.mark_shown(record2, root);
|
|
220
|
+
return message_of(record2);
|
|
221
|
+
}
|
|
222
|
+
async function watch_reason(context = hook_context.from_process(), now = /* @__PURE__ */ new Date()) {
|
|
223
|
+
try {
|
|
224
|
+
return await new_update_reason(now, context.cwd);
|
|
225
|
+
} catch (error) {
|
|
226
|
+
error_text.trace_swallowed("issue_watch_hook.watch_reason", error);
|
|
227
|
+
return void 0;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
var issue_watch_hook = { POLL_INTERVAL_MS, watch_reason };
|
|
231
|
+
|
|
232
|
+
// scripts/lane/lane-phase.ts
|
|
233
|
+
var LOCK_WAIT_MS = 5e3;
|
|
234
|
+
function implement_text(issue) {
|
|
235
|
+
return `${issue_cite.plain_for("program", issue)} implement`;
|
|
236
|
+
}
|
|
237
|
+
async function has_implement(issue) {
|
|
238
|
+
const events = await run_event_stream_emit.invocation_or_all_events();
|
|
239
|
+
return run_event_scope.since_own_launch(events, issue).some(
|
|
240
|
+
(event) => event.kind === run_event_stream.EVENT_KIND.LANE_PHASE && event.text === implement_text(issue)
|
|
241
|
+
);
|
|
242
|
+
}
|
|
243
|
+
async function mark_once(issue) {
|
|
244
|
+
if (await has_implement(issue)) return;
|
|
245
|
+
await run_event_plan.emit_plan(issue);
|
|
246
|
+
await run_event_stream_emit.emit(run_event_stream.EVENT_KIND.LANE_PHASE, implement_text(issue));
|
|
247
|
+
}
|
|
248
|
+
async function mark_implement(directory = process.cwd(), source = process.env) {
|
|
249
|
+
const issue = lane_child_marker.marked_issue(source);
|
|
250
|
+
if (issue === void 0 || !lane_child_marker.is_child_of(directory, source)) return;
|
|
251
|
+
await repository_lock.with_lock(
|
|
252
|
+
async () => {
|
|
253
|
+
await mark_once(issue);
|
|
254
|
+
},
|
|
255
|
+
repository_lock.lock_path(`josh-lane-phase-${issue}-`, directory),
|
|
256
|
+
LOCK_WAIT_MS
|
|
257
|
+
);
|
|
258
|
+
}
|
|
259
|
+
var lane_phase = { mark_implement };
|
|
260
|
+
|
|
261
|
+
// scripts/run/run-watcher-hook.ts
|
|
262
|
+
import { z } from "zod";
|
|
263
|
+
var SWITCH_ENV_KEY2 = "JOSH_WATCHER_GUARD";
|
|
264
|
+
var STAMP_PREFIX2 = "josh-watcher-guard-";
|
|
265
|
+
var payload_schema = z.object({ transcript_path: z.string().min(1) });
|
|
266
|
+
function transcript_of(raw_payload) {
|
|
267
|
+
return json_value.parse_with(raw_payload, payload_schema)?.transcript_path;
|
|
268
|
+
}
|
|
269
|
+
function fires_once(transcript, now_ms) {
|
|
270
|
+
const stamp = hook_decision.create_refusal_stamp(STAMP_PREFIX2);
|
|
271
|
+
const target = stamp.path(transcript);
|
|
272
|
+
if (stamp.last_ms(target) !== hook_decision.NEVER_MS) return false;
|
|
273
|
+
return stamp.record(target, now_ms);
|
|
274
|
+
}
|
|
275
|
+
function is_active(context) {
|
|
276
|
+
return hook_decision.is_switch_enabled(SWITCH_ENV_KEY2) && lane_child_marker.marked_issue(context.env) === void 0;
|
|
277
|
+
}
|
|
278
|
+
async function stale_reason(transcript, now_ms, ancestry) {
|
|
279
|
+
const result = await run_watcher_guard.check(await run_progress_read.live_target(), ancestry);
|
|
280
|
+
if (result.kind === "ok") return void 0;
|
|
281
|
+
return fires_once(transcript, now_ms) ? result.note : void 0;
|
|
282
|
+
}
|
|
283
|
+
async function watcher_hook_reason(raw_payload, context = hook_context.from_process(), now_ms = Date.now()) {
|
|
284
|
+
if (!is_active(context)) return void 0;
|
|
285
|
+
const transcript = transcript_of(raw_payload);
|
|
286
|
+
if (transcript === void 0) return void 0;
|
|
287
|
+
return await stale_reason(transcript, now_ms, context.ancestry);
|
|
288
|
+
}
|
|
289
|
+
var run_watcher_hook = { transcript_of, watcher_hook_reason };
|
|
290
|
+
|
|
291
|
+
// scripts/run/run-parent-cut-hook.ts
|
|
292
|
+
var SWITCH_ENV_KEY3 = "JOSH_PARENT_CUT_GUARD";
|
|
293
|
+
var STAMP_PREFIX3 = "josh-parent-cut-guard-";
|
|
294
|
+
var QUIET_WINDOW_MS = 6e5;
|
|
295
|
+
function current_state(context = hook_context.from_process()) {
|
|
296
|
+
return {
|
|
297
|
+
carry: async () => await run_headless.driving_carry(context.env, context.ancestry),
|
|
298
|
+
verdict: () => implementation_cut_verdict.reused_verdict(
|
|
299
|
+
() => cost_cli.session_verdict(context.cwd, context.env),
|
|
300
|
+
context.cwd
|
|
301
|
+
)
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
var THRESHOLD_TEXT = "`pnpm josh cost --cut`";
|
|
305
|
+
var PARENT_CUT_REASON = `\u26D4 backlogrun parent hand-off: this session drives a \`backlogrun\` and its recent context crossed the ${THRESHOLD_TEXT} threshold between merges. Take the hand-off now: open no new lane, follow \`backlogrun-progress.md\` \u2192 "The hand-off" (\`pnpm josh run:handoff-lanes\`, then the \`next:\` line its \`cut\` / \`blocked\` / \`capped\` verdict prints). Reissue this call once done or if it cannot be taken.`;
|
|
306
|
+
async function is_due(state) {
|
|
307
|
+
const carry = await state.carry();
|
|
308
|
+
if (carry === void 0 || run_headless.is_cut_capped(carry)) return false;
|
|
309
|
+
return state.verdict() === cost_verdict.OVER_VERDICT;
|
|
310
|
+
}
|
|
311
|
+
function is_quiet(target, now_ms) {
|
|
312
|
+
const last_ms = hook_decision.create_refusal_stamp(STAMP_PREFIX3).last_ms(target);
|
|
313
|
+
return last_ms !== hook_decision.NEVER_MS && now_ms - last_ms < QUIET_WINDOW_MS;
|
|
314
|
+
}
|
|
315
|
+
async function refusal_for(transcript, now_ms, state) {
|
|
316
|
+
const stamp = hook_decision.create_refusal_stamp(STAMP_PREFIX3);
|
|
317
|
+
const target = stamp.path(transcript);
|
|
318
|
+
if (is_quiet(target, now_ms) || !await is_due(state)) return void 0;
|
|
319
|
+
return stamp.record(target, now_ms) ? PARENT_CUT_REASON : void 0;
|
|
320
|
+
}
|
|
321
|
+
function is_unit_call(raw_payload) {
|
|
322
|
+
try {
|
|
323
|
+
return (hook_decision.parse_hook_payload(raw_payload)?.agent_id ?? "") !== "";
|
|
324
|
+
} catch (error) {
|
|
325
|
+
error_text.trace_swallowed("run_parent_cut_hook.is_unit_call", error);
|
|
326
|
+
return false;
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
function is_exempt(raw_payload) {
|
|
330
|
+
return !hook_decision.is_switch_enabled(SWITCH_ENV_KEY3) || is_unit_call(raw_payload);
|
|
331
|
+
}
|
|
332
|
+
async function parent_cut_reason(raw_payload, now_ms = Date.now(), state = current_state()) {
|
|
333
|
+
if (is_exempt(raw_payload)) return void 0;
|
|
334
|
+
const transcript = run_watcher_hook.transcript_of(raw_payload);
|
|
335
|
+
if (transcript === void 0) return void 0;
|
|
336
|
+
return await refusal_for(transcript, now_ms, state);
|
|
337
|
+
}
|
|
338
|
+
var run_parent_cut_hook = {
|
|
339
|
+
PARENT_CUT_REASON,
|
|
340
|
+
QUIET_WINDOW_MS,
|
|
341
|
+
SWITCH_ENV_KEY: SWITCH_ENV_KEY3,
|
|
342
|
+
current_state,
|
|
343
|
+
parent_cut_reason
|
|
344
|
+
};
|
|
345
|
+
|
|
346
|
+
// scripts/run/run-poll-hook.ts
|
|
347
|
+
var SWITCH_ENV_KEY4 = "JOSH_POLL_GUARD";
|
|
348
|
+
var BASH_TOOL = "Bash";
|
|
349
|
+
var STATE_READS = /* @__PURE__ */ new Set([
|
|
350
|
+
"josh lane:list",
|
|
351
|
+
"josh lane:output",
|
|
352
|
+
"josh run:board",
|
|
353
|
+
"josh run:carry",
|
|
354
|
+
"josh run:liveness",
|
|
355
|
+
"josh run:progress",
|
|
356
|
+
"josh run:wake"
|
|
357
|
+
]);
|
|
358
|
+
var POLL_REASON = "\u26D4 poll: this `backlogrun` session repeats a state read with nothing decided in between, on every occurrence. Wait on `pnpm josh backlog:drive`, or `pnpm josh lane:await <N...>` in the background, and end the turn; its exit is the wake.";
|
|
359
|
+
var WRITING_FLAGS = /* @__PURE__ */ new Set([
|
|
360
|
+
"--begin",
|
|
361
|
+
"--cut",
|
|
362
|
+
"--done",
|
|
363
|
+
"--end",
|
|
364
|
+
"--every",
|
|
365
|
+
"--filed",
|
|
366
|
+
"--loop",
|
|
367
|
+
"--mark",
|
|
368
|
+
"--merged",
|
|
369
|
+
"--resume",
|
|
370
|
+
"--retrospective",
|
|
371
|
+
"--start",
|
|
372
|
+
"--stop",
|
|
373
|
+
"--wait"
|
|
374
|
+
]);
|
|
375
|
+
var FLAG_PREFIX = "-";
|
|
376
|
+
var NAME_WORDS = 2;
|
|
377
|
+
var SIGNATURE_SEPARATOR = " ";
|
|
378
|
+
function read_key(signature) {
|
|
379
|
+
const words = signature.split(SIGNATURE_SEPARATOR);
|
|
380
|
+
const name = words.slice(0, NAME_WORDS).join(SIGNATURE_SEPARATOR);
|
|
381
|
+
if (!STATE_READS.has(name) || words.some((word) => WRITING_FLAGS.has(word))) return void 0;
|
|
382
|
+
return words.filter((word) => !word.startsWith(FLAG_PREFIX)).join(SIGNATURE_SEPARATOR);
|
|
383
|
+
}
|
|
384
|
+
function read_keys(signatures) {
|
|
385
|
+
return signatures.map((signature) => read_key(signature)).filter((key) => key !== void 0);
|
|
386
|
+
}
|
|
387
|
+
function state_reads_of(command) {
|
|
388
|
+
return read_keys(time_josh_names.josh_signatures_of(command));
|
|
389
|
+
}
|
|
390
|
+
function command_of(input) {
|
|
391
|
+
if (typeof input !== "object" || input === null || !("command" in input)) return "";
|
|
392
|
+
return typeof input.command === "string" ? input.command : "";
|
|
393
|
+
}
|
|
394
|
+
function candidate_reads(raw_payload) {
|
|
395
|
+
const payload = hook_decision.parse_hook_payload(raw_payload);
|
|
396
|
+
if (payload?.tool_name !== BASH_TOOL || (payload.agent_id ?? "") !== "") return [];
|
|
397
|
+
return state_reads_of(command_of(payload.tool_input));
|
|
398
|
+
}
|
|
399
|
+
function last_step(tail) {
|
|
400
|
+
return time_spans.parse_timeline(tail).spans.findLast((span) => span.category !== time_spans.MODEL_CATEGORY);
|
|
401
|
+
}
|
|
402
|
+
function repeats_last_call(tail, reads) {
|
|
403
|
+
const last = last_step(tail);
|
|
404
|
+
if (last?.category !== time_spans.TOOL_CATEGORY) return false;
|
|
405
|
+
const last_reads = read_keys(last.josh_signatures);
|
|
406
|
+
return reads.some((key) => last_reads.includes(key));
|
|
407
|
+
}
|
|
408
|
+
function is_repeat(raw_payload) {
|
|
409
|
+
const reads = hook_decision.is_switch_enabled(SWITCH_ENV_KEY4) ? candidate_reads(raw_payload) : [];
|
|
410
|
+
const transcript = reads.length === 0 ? void 0 : run_watcher_hook.transcript_of(raw_payload);
|
|
411
|
+
if (transcript === void 0) return false;
|
|
412
|
+
return repeats_last_call(transcript_tail.read_tail(transcript), reads);
|
|
413
|
+
}
|
|
414
|
+
async function poll_reason(raw_payload, is_parent = run_headless.is_backlog_parent) {
|
|
415
|
+
if (!is_repeat(raw_payload)) return void 0;
|
|
416
|
+
return await is_parent() ? POLL_REASON : void 0;
|
|
417
|
+
}
|
|
418
|
+
async function safe_poll_reason(raw_payload, context = hook_context.from_process()) {
|
|
419
|
+
try {
|
|
420
|
+
return await poll_reason(
|
|
421
|
+
raw_payload,
|
|
422
|
+
async () => await run_headless.is_backlog_parent(context.env, context.ancestry)
|
|
423
|
+
);
|
|
424
|
+
} catch (error) {
|
|
425
|
+
error_text.trace_swallowed("run_poll_hook.poll_reason", error);
|
|
426
|
+
return void 0;
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
var run_poll_hook = {
|
|
430
|
+
POLL_REASON,
|
|
431
|
+
SWITCH_ENV_KEY: SWITCH_ENV_KEY4,
|
|
432
|
+
poll_reason,
|
|
433
|
+
safe_poll_reason
|
|
434
|
+
};
|
|
435
|
+
|
|
436
|
+
// scripts/hooks/direct-gh-usage.ts
|
|
437
|
+
var PREFIX = "direct:";
|
|
438
|
+
var API = "api";
|
|
439
|
+
var FREE_ENDPOINT = "rate_limit";
|
|
440
|
+
var LEADING_SLASH = /^\//u;
|
|
441
|
+
var SUBCOMMAND_WORDS = 2;
|
|
442
|
+
function gh_words(segment) {
|
|
443
|
+
return git_argv.arguments_of(segment, "gh")?.filter((word) => !word.startsWith("-")) ?? [];
|
|
444
|
+
}
|
|
445
|
+
function is_free(api_words) {
|
|
446
|
+
return api_words.some((word) => word.replace(LEADING_SLASH, "") === FREE_ENDPOINT);
|
|
447
|
+
}
|
|
448
|
+
function subcommand_of(segment) {
|
|
449
|
+
const words = gh_words(segment);
|
|
450
|
+
const [head, ...rest] = words;
|
|
451
|
+
if (head === API) return is_free(rest) ? void 0 : API;
|
|
452
|
+
return head === void 0 ? void 0 : words.slice(0, SUBCOMMAND_WORDS).join(" ");
|
|
453
|
+
}
|
|
454
|
+
function direct_call_of(segment) {
|
|
455
|
+
const subcommand = subcommand_of(segment);
|
|
456
|
+
if (subcommand === void 0) return void 0;
|
|
457
|
+
const kind = gh_call_kind.of(git_argv.arguments_of(segment, "gh") ?? []);
|
|
458
|
+
return { command: `${PREFIX}${subcommand}`, kind };
|
|
459
|
+
}
|
|
460
|
+
function direct_calls(command) {
|
|
461
|
+
return nested_commands.commands_of(command).map((segment) => direct_call_of(segment)).filter((call) => call !== void 0);
|
|
462
|
+
}
|
|
463
|
+
function calls_of(raw_payload) {
|
|
464
|
+
const payload = hook_tool_payload.parse(raw_payload);
|
|
465
|
+
if (payload?.tool_name !== "Bash") return [];
|
|
466
|
+
return direct_calls(time_shell.bash_command(payload.tool_input));
|
|
467
|
+
}
|
|
468
|
+
function log_target(context) {
|
|
469
|
+
if (context.env["VITEST"] !== void 0) return void 0;
|
|
470
|
+
const repository = git_common_directory.repository(context.cwd);
|
|
471
|
+
return repository === void 0 ? void 0 : gh_usage_log.target_of(repository);
|
|
472
|
+
}
|
|
473
|
+
function append_all(target, calls, environment) {
|
|
474
|
+
const marked = lane_child_marker.marked_issue(environment);
|
|
475
|
+
const issue = marked === void 0 ? void 0 : Number(marked);
|
|
476
|
+
for (const { command, kind } of calls) {
|
|
477
|
+
const at = (/* @__PURE__ */ new Date()).toISOString();
|
|
478
|
+
const endpoints = { [kind]: { calls: 1, not_modified: 0 } };
|
|
479
|
+
gh_usage_log.append(target, {
|
|
480
|
+
at,
|
|
481
|
+
command,
|
|
482
|
+
issue,
|
|
483
|
+
calls: 1,
|
|
484
|
+
not_modified: 0,
|
|
485
|
+
elapsed_ms: 0,
|
|
486
|
+
endpoints
|
|
487
|
+
});
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
async function record(raw_payload, context = hook_context.from_process()) {
|
|
491
|
+
try {
|
|
492
|
+
const calls = calls_of(raw_payload);
|
|
493
|
+
const target = calls.length === 0 ? void 0 : log_target(context);
|
|
494
|
+
if (target !== void 0) append_all(target, calls, context.env);
|
|
495
|
+
} catch (error) {
|
|
496
|
+
error_text.trace_swallowed("direct_gh_usage.record", error);
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
var direct_gh_usage = { record };
|
|
500
|
+
|
|
501
|
+
// scripts/hooks/implementation-shell.ts
|
|
502
|
+
import path from "node:path";
|
|
503
|
+
|
|
504
|
+
// scripts/hooks/implementation-shell-deny-expansion.ts
|
|
505
|
+
var DYNAMIC = /[$`]/u;
|
|
506
|
+
function is_dynamic(word) {
|
|
507
|
+
return DYNAMIC.test(word);
|
|
508
|
+
}
|
|
509
|
+
function refusal(program, word) {
|
|
510
|
+
return `\`${program} ${word}\`, an expansion that may spell a write`;
|
|
511
|
+
}
|
|
512
|
+
var implementation_shell_deny_expansion = { is_dynamic, refusal };
|
|
513
|
+
|
|
514
|
+
// scripts/hooks/implementation-shell-deny-git.ts
|
|
515
|
+
var GIT_WRITES = /* @__PURE__ */ new Set([
|
|
516
|
+
"add",
|
|
517
|
+
"am",
|
|
518
|
+
"apply",
|
|
519
|
+
"bisect",
|
|
520
|
+
"checkout",
|
|
521
|
+
"checkout-index",
|
|
522
|
+
"cherry-pick",
|
|
523
|
+
"clean",
|
|
524
|
+
"commit",
|
|
525
|
+
"credential",
|
|
526
|
+
"fetch",
|
|
527
|
+
"filter-branch",
|
|
528
|
+
"gc",
|
|
529
|
+
"init",
|
|
530
|
+
"maintenance",
|
|
531
|
+
"merge",
|
|
532
|
+
"mv",
|
|
533
|
+
"pack-refs",
|
|
534
|
+
"prune",
|
|
535
|
+
"prune-packed",
|
|
536
|
+
"pull",
|
|
537
|
+
"push",
|
|
538
|
+
"read-tree",
|
|
539
|
+
"rebase",
|
|
540
|
+
"repack",
|
|
541
|
+
"replace",
|
|
542
|
+
"reset",
|
|
543
|
+
"restore",
|
|
544
|
+
"revert",
|
|
545
|
+
"rm",
|
|
546
|
+
"send-email",
|
|
547
|
+
"sparse-checkout",
|
|
548
|
+
"stage",
|
|
549
|
+
"submodule",
|
|
550
|
+
"switch",
|
|
551
|
+
"symbolic-ref",
|
|
552
|
+
"update-index",
|
|
553
|
+
"update-ref"
|
|
554
|
+
]);
|
|
555
|
+
var BRANCH_CHANGE = /^--(?:delete|move|copy|force|set-upstream-to|unset-upstream|edit-description)/u;
|
|
556
|
+
var BRANCH_CHANGE_LETTERS = "dDmMcCfu";
|
|
557
|
+
var CONFIG_READ = /^(?:--get|--list$|-l$)/u;
|
|
558
|
+
var LIST_MODE = /^(?:-l$|--list$|-n\d*$|--contains|--no-contains|--points-at|--merged|--no-merged)/u;
|
|
559
|
+
var LIST_VALUE_FLAGS = /* @__PURE__ */ new Set(["--sort", "--format"]);
|
|
560
|
+
var REFLOG_WRITES = /* @__PURE__ */ new Set(["expire", "delete"]);
|
|
561
|
+
var GIT_WRITE_FLAGS = /^-c$|^--(?:config-env|exec-path|output|ext-diff|textconv)/u;
|
|
562
|
+
var QUOTES = /['"\\]/gu;
|
|
563
|
+
function is_branch_change(argument) {
|
|
564
|
+
return BRANCH_CHANGE.test(argument) || git_argv.short_cluster_has(argument, BRANCH_CHANGE_LETTERS);
|
|
565
|
+
}
|
|
566
|
+
function names_a_reference(args) {
|
|
567
|
+
return args.some(
|
|
568
|
+
(argument, index) => !argument.startsWith("-") && !LIST_VALUE_FLAGS.has(args[index - 1] ?? "")
|
|
569
|
+
);
|
|
570
|
+
}
|
|
571
|
+
function is_listing(args) {
|
|
572
|
+
return !names_a_reference(args) || args.some((argument) => LIST_MODE.test(argument));
|
|
573
|
+
}
|
|
574
|
+
var GIT_READ_FORMS = /* @__PURE__ */ new Map([
|
|
575
|
+
["branch", (args) => is_listing(args) && args.every((argument) => !is_branch_change(argument))],
|
|
576
|
+
["stash", (args) => ["list", "show"].includes(args[0] ?? "")],
|
|
577
|
+
["worktree", (args) => args[0] === "list"],
|
|
578
|
+
["notes", (args) => ["list", "show"].includes(args[0] ?? "")],
|
|
579
|
+
["remote", (args) => ["", "-v", "show", "get-url"].includes(args[0] ?? "")],
|
|
580
|
+
["config", (args) => args.some((argument) => CONFIG_READ.test(argument))],
|
|
581
|
+
["tag", is_listing],
|
|
582
|
+
["reflog", (args) => !REFLOG_WRITES.has(args[0] ?? "")]
|
|
583
|
+
]);
|
|
584
|
+
function is_git_write(subcommand, args) {
|
|
585
|
+
if (GIT_WRITES.has(subcommand)) return true;
|
|
586
|
+
const read_form = GIT_READ_FORMS.get(subcommand);
|
|
587
|
+
if (read_form === void 0) return false;
|
|
588
|
+
return args.some((argument) => implementation_shell_deny_expansion.is_dynamic(argument)) || !read_form(args);
|
|
589
|
+
}
|
|
590
|
+
function parsed_git(segment) {
|
|
591
|
+
return git_argv.parse(segment) ?? git_argv.parse(segment.replaceAll(QUOTES, ""));
|
|
592
|
+
}
|
|
593
|
+
function subcommand_refusal(segment) {
|
|
594
|
+
const call = parsed_git(segment);
|
|
595
|
+
if (call?.subcommand === void 0) return void 0;
|
|
596
|
+
if (implementation_shell_deny_expansion.is_dynamic(call.subcommand)) return implementation_shell_deny_expansion.refusal("git", call.subcommand);
|
|
597
|
+
const subcommand = call.subcommand.replaceAll(QUOTES, "");
|
|
598
|
+
const args = call.args.map((argument) => argument.replaceAll(QUOTES, ""));
|
|
599
|
+
return is_git_write(subcommand, args) ? `\`git ${subcommand}\`, a git write` : void 0;
|
|
600
|
+
}
|
|
601
|
+
function refusal2(segment, args) {
|
|
602
|
+
if (args.some((argument) => GIT_WRITE_FLAGS.test(argument))) {
|
|
603
|
+
return "a git option that rewrites its configuration, runs a program or writes a file";
|
|
604
|
+
}
|
|
605
|
+
return subcommand_refusal(segment);
|
|
606
|
+
}
|
|
607
|
+
var implementation_shell_deny_git = { refusal: refusal2 };
|
|
608
|
+
|
|
609
|
+
// scripts/hooks/implementation-shell-deny.ts
|
|
610
|
+
var GH_READS = /* @__PURE__ */ new Set([
|
|
611
|
+
"checks",
|
|
612
|
+
"code",
|
|
613
|
+
"commits",
|
|
614
|
+
"diff",
|
|
615
|
+
"issues",
|
|
616
|
+
"list",
|
|
617
|
+
"prs",
|
|
618
|
+
"repos",
|
|
619
|
+
"status",
|
|
620
|
+
"token",
|
|
621
|
+
"view",
|
|
622
|
+
"watch"
|
|
623
|
+
]);
|
|
624
|
+
var GH_WRITES = /* @__PURE__ */ new Set([
|
|
625
|
+
"add",
|
|
626
|
+
"archive",
|
|
627
|
+
"cancel",
|
|
628
|
+
"checkout",
|
|
629
|
+
"clone",
|
|
630
|
+
"close",
|
|
631
|
+
"comment",
|
|
632
|
+
"copy",
|
|
633
|
+
"create",
|
|
634
|
+
"delete",
|
|
635
|
+
"develop",
|
|
636
|
+
"disable",
|
|
637
|
+
"edit",
|
|
638
|
+
"enable",
|
|
639
|
+
"field-create",
|
|
640
|
+
"field-delete",
|
|
641
|
+
"fork",
|
|
642
|
+
"install",
|
|
643
|
+
"item-add",
|
|
644
|
+
"item-archive",
|
|
645
|
+
"item-create",
|
|
646
|
+
"item-delete",
|
|
647
|
+
"item-edit",
|
|
648
|
+
"link",
|
|
649
|
+
"lock",
|
|
650
|
+
"login",
|
|
651
|
+
"logout",
|
|
652
|
+
"mark-template",
|
|
653
|
+
"merge",
|
|
654
|
+
"pin",
|
|
655
|
+
"ready",
|
|
656
|
+
"refresh",
|
|
657
|
+
"remove",
|
|
658
|
+
"rename",
|
|
659
|
+
"reopen",
|
|
660
|
+
"rerun",
|
|
661
|
+
"revert",
|
|
662
|
+
"review",
|
|
663
|
+
"run",
|
|
664
|
+
"set",
|
|
665
|
+
"setup-git",
|
|
666
|
+
"sync",
|
|
667
|
+
"transfer",
|
|
668
|
+
"unarchive",
|
|
669
|
+
"unlink",
|
|
670
|
+
"unlock",
|
|
671
|
+
"unpin",
|
|
672
|
+
"update-branch",
|
|
673
|
+
"upgrade",
|
|
674
|
+
"upload"
|
|
675
|
+
]);
|
|
676
|
+
var GRAPHQL_MUTATION = /\bmutation\b|=@|^--input/u;
|
|
677
|
+
var PACKAGE_MANAGERS = /* @__PURE__ */ new Set(["npm", "yarn"]);
|
|
678
|
+
var PACKAGE_WRITES = /* @__PURE__ */ new Set([
|
|
679
|
+
"add",
|
|
680
|
+
"ci",
|
|
681
|
+
"dedupe",
|
|
682
|
+
"i",
|
|
683
|
+
"install",
|
|
684
|
+
"link",
|
|
685
|
+
"patch-commit",
|
|
686
|
+
"publish",
|
|
687
|
+
"rebuild",
|
|
688
|
+
"remove",
|
|
689
|
+
"un",
|
|
690
|
+
"uninstall",
|
|
691
|
+
"unlink",
|
|
692
|
+
"unpublish",
|
|
693
|
+
"up",
|
|
694
|
+
"update",
|
|
695
|
+
"upgrade",
|
|
696
|
+
// Commits and tags the version bump.
|
|
697
|
+
"version"
|
|
698
|
+
]);
|
|
699
|
+
var JOSH_SHARED_WRITES = /* @__PURE__ */ new Set([
|
|
700
|
+
"adopt",
|
|
701
|
+
"bump",
|
|
702
|
+
"dogfood:commit",
|
|
703
|
+
"followup",
|
|
704
|
+
"git",
|
|
705
|
+
"init",
|
|
706
|
+
"latest",
|
|
707
|
+
"latest:corepack",
|
|
708
|
+
"latest:update",
|
|
709
|
+
"overrides",
|
|
710
|
+
"pr",
|
|
711
|
+
"release",
|
|
712
|
+
"release:github",
|
|
713
|
+
"ship",
|
|
714
|
+
"stash:pop",
|
|
715
|
+
"stash:push",
|
|
716
|
+
"sync",
|
|
717
|
+
"uninstall"
|
|
718
|
+
]);
|
|
719
|
+
function is_gh_api_write(args) {
|
|
720
|
+
if (args.includes("graphql")) return args.some((argument) => GRAPHQL_MUTATION.test(argument));
|
|
721
|
+
return gh_api.is_write(["gh", ...args].join(" "));
|
|
722
|
+
}
|
|
723
|
+
function is_gh_verb(argument) {
|
|
724
|
+
return GH_WRITES.has(argument) || GH_READS.has(argument) || implementation_shell_deny_expansion.is_dynamic(argument);
|
|
725
|
+
}
|
|
726
|
+
function verb_refusal(group, args) {
|
|
727
|
+
const verb = args.slice(1).find((argument) => is_gh_verb(argument));
|
|
728
|
+
if (verb === void 0 || GH_READS.has(verb)) return void 0;
|
|
729
|
+
return implementation_shell_deny_expansion.is_dynamic(verb) ? implementation_shell_deny_expansion.refusal(`gh ${group}`, verb) : `\`gh ${group} ${verb}\`, a GitHub write`;
|
|
730
|
+
}
|
|
731
|
+
function gh_refusal(args) {
|
|
732
|
+
const group = args[0] ?? "";
|
|
733
|
+
if (group === "api") return is_gh_api_write(args) ? "a `gh api` call other than GET" : void 0;
|
|
734
|
+
return implementation_shell_deny_expansion.is_dynamic(group) ? implementation_shell_deny_expansion.refusal("gh", group) : verb_refusal(group, args);
|
|
735
|
+
}
|
|
736
|
+
function is_flag(argument) {
|
|
737
|
+
return argument.startsWith("-");
|
|
738
|
+
}
|
|
739
|
+
function is_action_word(args, index) {
|
|
740
|
+
const previous = args[index - 1] ?? "";
|
|
741
|
+
return !is_flag(args[index] ?? "-") && (!is_flag(previous) || previous.includes("="));
|
|
742
|
+
}
|
|
743
|
+
function package_actions(call) {
|
|
744
|
+
if (!PACKAGE_MANAGERS.has(call.name)) return [call.name];
|
|
745
|
+
const end = call.args.findIndex((_argument, index) => is_action_word(call.args, index));
|
|
746
|
+
const read = end === -1 ? call.args : call.args.slice(0, end + 1);
|
|
747
|
+
const actions = read.filter((word) => !is_flag(word));
|
|
748
|
+
return end === -1 && call.name === "yarn" ? [...actions, "install"] : actions;
|
|
749
|
+
}
|
|
750
|
+
function action_refusal(manager, action) {
|
|
751
|
+
if (implementation_shell_deny_expansion.is_dynamic(action)) return implementation_shell_deny_expansion.refusal(manager, action);
|
|
752
|
+
return PACKAGE_WRITES.has(action) ? `\`${action}\`, a dependency change` : void 0;
|
|
753
|
+
}
|
|
754
|
+
function package_refusal(call) {
|
|
755
|
+
return package_actions(call).map((action) => action_refusal(call.name, action)).find((rule) => rule !== void 0);
|
|
756
|
+
}
|
|
757
|
+
function josh_refusal(args) {
|
|
758
|
+
const command = canonical_command(args[0] ?? "");
|
|
759
|
+
if (implementation_shell_deny_expansion.is_dynamic(command)) return implementation_shell_deny_expansion.refusal("josh", command);
|
|
760
|
+
if (!JOSH_SHARED_WRITES.has(command)) return void 0;
|
|
761
|
+
const rule = josh_read_only.refusal(args);
|
|
762
|
+
return rule === void 0 ? void 0 : `\`josh ${command}\`, a shared-state write: ${rule}`;
|
|
763
|
+
}
|
|
764
|
+
function refusal3(segment, call) {
|
|
765
|
+
if (implementation_shell_deny_expansion.is_dynamic(call.name)) return `\`${call.name}\`, a program an expansion names`;
|
|
766
|
+
if (call.name === "git") return implementation_shell_deny_git.refusal(segment, call.args);
|
|
767
|
+
if (call.name === "gh") return gh_refusal(call.args);
|
|
768
|
+
if (call.name === "josh") return josh_refusal(call.args);
|
|
769
|
+
return package_refusal(call);
|
|
770
|
+
}
|
|
771
|
+
var implementation_shell_deny = { refusal: refusal3 };
|
|
772
|
+
|
|
773
|
+
// scripts/hooks/implementation-shell-nested.ts
|
|
774
|
+
var SUBSTITUTION = /\$\(([^()]*)\)|`([^`]*)`|[<>]\(([^()]*)\)/u;
|
|
775
|
+
var SHELLS = /* @__PURE__ */ new Set(["sh", "bash", "zsh", "dash"]);
|
|
776
|
+
var SHELL_COMMAND_LETTER = "c";
|
|
777
|
+
var SHELL_STDIN_LETTER = "s";
|
|
778
|
+
var FIND_RUNNERS = /^-(?:exec|execdir|ok|okdir)$/u;
|
|
779
|
+
var FIND_ENDS = /* @__PURE__ */ new Set([";", String.raw`\;`, "';'", "+"]);
|
|
780
|
+
var JOSH_SCRIPT = /(?:^|\/)josh[\w-]*\.ts$/u;
|
|
781
|
+
var INPUT_WORDS = "$xargs";
|
|
782
|
+
var AFTER_VALUE = 2;
|
|
783
|
+
var QUOTED = /^(?<quote>['"])(?<body>[\s\S]*)\k<quote>$/u;
|
|
784
|
+
var LAUNCHERS = /* @__PURE__ */ new Map([
|
|
785
|
+
[
|
|
786
|
+
"xargs",
|
|
787
|
+
{
|
|
788
|
+
value_flags: /* @__PURE__ */ new Set(["-I", "-L", "-n", "-P", "-s", "-d", "-E", "-a"]),
|
|
789
|
+
operands: 0,
|
|
790
|
+
is_appending: true
|
|
791
|
+
}
|
|
792
|
+
],
|
|
793
|
+
[
|
|
794
|
+
"timeout",
|
|
795
|
+
{
|
|
796
|
+
value_flags: /* @__PURE__ */ new Set(["-s", "--signal", "-k", "--kill-after"]),
|
|
797
|
+
operands: 1,
|
|
798
|
+
is_appending: false
|
|
799
|
+
}
|
|
800
|
+
],
|
|
801
|
+
["nice", { value_flags: /* @__PURE__ */ new Set(["-n", "--adjustment"]), operands: 0, is_appending: false }],
|
|
802
|
+
["nohup", { value_flags: /* @__PURE__ */ new Set(), operands: 0, is_appending: false }],
|
|
803
|
+
["stdbuf", { value_flags: /* @__PURE__ */ new Set(["-i", "-o", "-e"]), operands: 0, is_appending: false }],
|
|
804
|
+
["watch", { value_flags: /* @__PURE__ */ new Set(["-n", "--interval"]), operands: 0, is_appending: false }]
|
|
805
|
+
]);
|
|
806
|
+
function unquoted(word) {
|
|
807
|
+
return QUOTED.exec(word)?.groups?.["body"] ?? word;
|
|
808
|
+
}
|
|
809
|
+
function substitution_bodies(command) {
|
|
810
|
+
const bodies = [];
|
|
811
|
+
let rest = time_shell.literal_blanked(command);
|
|
812
|
+
let match = SUBSTITUTION.exec(rest);
|
|
813
|
+
while (match !== null) {
|
|
814
|
+
bodies.push(match.slice(1).join(""));
|
|
815
|
+
rest = `${rest.slice(0, match.index)} ${rest.slice(match.index + match[0].length)}`;
|
|
816
|
+
match = SUBSTITUTION.exec(rest);
|
|
817
|
+
}
|
|
818
|
+
return bodies;
|
|
819
|
+
}
|
|
820
|
+
function after_flag(launcher, args, index) {
|
|
821
|
+
return index + (launcher.value_flags.has(args[index] ?? "") ? AFTER_VALUE : 1);
|
|
822
|
+
}
|
|
823
|
+
function launched_commands(launcher, args) {
|
|
824
|
+
let index = 0;
|
|
825
|
+
while (args[index]?.startsWith("-") === true) index = after_flag(launcher, args, index);
|
|
826
|
+
const words = args.slice(index + launcher.operands);
|
|
827
|
+
if (words.length === 0) return [];
|
|
828
|
+
return [[...words, ...launcher.is_appending ? [INPUT_WORDS] : []].join(" ")];
|
|
829
|
+
}
|
|
830
|
+
function josh_script_commands(args) {
|
|
831
|
+
const index = args.findIndex((argument) => JOSH_SCRIPT.test(argument));
|
|
832
|
+
return index === -1 ? [] : [["josh", ...args.slice(index + 1)].join(" ")];
|
|
833
|
+
}
|
|
834
|
+
function find_body(args, start) {
|
|
835
|
+
const end = args.findIndex((argument, index) => index >= start && FIND_ENDS.has(argument));
|
|
836
|
+
return args.slice(start, end === -1 ? void 0 : end).join(" ");
|
|
837
|
+
}
|
|
838
|
+
function find_commands(args) {
|
|
839
|
+
return args.flatMap(
|
|
840
|
+
(argument, index) => FIND_RUNNERS.test(argument) ? find_body(args, index + 1) : []
|
|
841
|
+
);
|
|
842
|
+
}
|
|
843
|
+
function shell_commands(args) {
|
|
844
|
+
const index = args.findIndex(
|
|
845
|
+
(argument) => git_argv.short_cluster_has(argument, SHELL_COMMAND_LETTER)
|
|
846
|
+
);
|
|
847
|
+
const body = index === -1 ? void 0 : args[index + 1];
|
|
848
|
+
return body === void 0 ? [] : [unquoted(body)];
|
|
849
|
+
}
|
|
850
|
+
function eval_commands(args) {
|
|
851
|
+
return [args.map((argument) => unquoted(argument)).join(" ")];
|
|
852
|
+
}
|
|
853
|
+
var RUNNERS = new Map([
|
|
854
|
+
["find", find_commands],
|
|
855
|
+
["eval", eval_commands],
|
|
856
|
+
["node", josh_script_commands],
|
|
857
|
+
...[...SHELLS].map((shell) => [shell, shell_commands])
|
|
858
|
+
]);
|
|
859
|
+
function call_commands(call) {
|
|
860
|
+
const launcher = LAUNCHERS.get(call.name);
|
|
861
|
+
if (launcher !== void 0) return launched_commands(launcher, call.args);
|
|
862
|
+
return RUNNERS.get(call.name)?.(call.args) ?? [];
|
|
863
|
+
}
|
|
864
|
+
function reads_stdin(call) {
|
|
865
|
+
if (!SHELLS.has(call.name)) return false;
|
|
866
|
+
if (call.args.some((argument) => git_argv.short_cluster_has(argument, SHELL_STDIN_LETTER))) {
|
|
867
|
+
return true;
|
|
868
|
+
}
|
|
869
|
+
return call.args.every((argument) => argument.startsWith("-"));
|
|
870
|
+
}
|
|
871
|
+
var implementation_shell_nested = { call_commands, reads_stdin, substitution_bodies };
|
|
872
|
+
|
|
873
|
+
// scripts/hooks/implementation-shell.ts
|
|
874
|
+
var FILE_PROGRAMS = /* @__PURE__ */ new Set(["tee", "touch", "rm", "truncate"]);
|
|
875
|
+
var COPY_PROGRAMS = /* @__PURE__ */ new Set(["cp", "ln", "install", "rsync", "scp"]);
|
|
876
|
+
var MOVE_PROGRAMS = /* @__PURE__ */ new Set([
|
|
877
|
+
...COPY_PROGRAMS,
|
|
878
|
+
"mv",
|
|
879
|
+
"dd",
|
|
880
|
+
"patch",
|
|
881
|
+
"tar",
|
|
882
|
+
"unzip"
|
|
883
|
+
]);
|
|
884
|
+
var TARGET_DIRECTORY = /^-(?:[A-Za-z]*t|-target-directory)/u;
|
|
885
|
+
var IN_PLACE_PROGRAMS = /* @__PURE__ */ new Set(["sed", "perl"]);
|
|
886
|
+
var IN_PLACE = /^-(?:[A-Za-z]*i|-in-place)/u;
|
|
887
|
+
var REDIRECT = /(?<![<>])(?:<>|>[>|&]?)(?![>&])/gu;
|
|
888
|
+
var DESCRIPTOR = /^(?:\d+[+-]?|-)$/u;
|
|
889
|
+
var QUOTES2 = /^['"]|['"]$/gu;
|
|
890
|
+
var DYNAMIC_PATH = /[$`*?{}\\]/u;
|
|
891
|
+
var COMPOUND_HEAD = /^\s*(?:[({!]\s*|(?:if|then|else|elif|while|until|do)\s+)+/u;
|
|
892
|
+
var COMPOUND_CLOSERS = /* @__PURE__ */ new Set([")", "}", " ", " ", "\n"]);
|
|
893
|
+
var KEYWORDS = /* @__PURE__ */ new Set([
|
|
894
|
+
"for",
|
|
895
|
+
"do",
|
|
896
|
+
"done",
|
|
897
|
+
"then",
|
|
898
|
+
"else",
|
|
899
|
+
"fi",
|
|
900
|
+
"case",
|
|
901
|
+
"select",
|
|
902
|
+
"function",
|
|
903
|
+
"esac"
|
|
904
|
+
]);
|
|
905
|
+
var FUNCTION_START = /^(?:function\s|[\w.:-]+\s*\(\s*\))/u;
|
|
906
|
+
var FUNCTION_HEAD = /^(?:function\s+)?[\w.:-]+(?:\s*\()?$/u;
|
|
907
|
+
var UNREAD_ARMS = [/^case\s[\s\S]*\)/u, /^[^\s$`]*\)/u];
|
|
908
|
+
var ARGUMENT_QUOTES = /['"\\]/gu;
|
|
909
|
+
var TIME_PROGRAM = /(?:^|\/)time$/u;
|
|
910
|
+
var TIME_WRITE = /^-(?:[A-Za-z]*o|-o)/u;
|
|
911
|
+
var CD_WRITE = "a write beside `cd`, whose target is not read off the repository root";
|
|
912
|
+
var STDIN_SHELL = "a shell running the commands its standard input spells, which may be any write";
|
|
913
|
+
function unsafe_path(target, root) {
|
|
914
|
+
const file_path = target.replaceAll(QUOTES2, "");
|
|
915
|
+
if (file_path === "/dev/null") return false;
|
|
916
|
+
return DYNAMIC_PATH.test(file_path) || step_zero_notice.is_runtime_file(file_path, root, true);
|
|
917
|
+
}
|
|
918
|
+
function redirected_paths(command) {
|
|
919
|
+
const plain = time_shell.blanked(command);
|
|
920
|
+
if (plain === void 0) return [];
|
|
921
|
+
return [...plain.matchAll(REDIRECT)].map((match) => {
|
|
922
|
+
const following = command.slice(match.index + match[0].length);
|
|
923
|
+
const target = git_argv.words_of(following)[0] ?? "$unknown";
|
|
924
|
+
return match[0].endsWith(">&") && DESCRIPTOR.test(target) ? "/dev/null" : target;
|
|
925
|
+
});
|
|
926
|
+
}
|
|
927
|
+
function write_args_are_unsafe(args, root) {
|
|
928
|
+
return args.filter((argument) => argument !== "-a").some((argument) => unsafe_path(argument, root));
|
|
929
|
+
}
|
|
930
|
+
function plain_argument(word) {
|
|
931
|
+
if (/^'[^']*'$/u.test(word) || /^"[^"\\$`]*"$/u.test(word)) return word.slice(1, -1);
|
|
932
|
+
if (/['"\\$`]/u.test(word)) return void 0;
|
|
933
|
+
return word;
|
|
934
|
+
}
|
|
935
|
+
function wrapper_writes(segment) {
|
|
936
|
+
const words = git_argv.words_of(segment);
|
|
937
|
+
const index = words.findIndex((word) => TIME_PROGRAM.test(word));
|
|
938
|
+
if (index === -1) return false;
|
|
939
|
+
const call = git_argv.program_of(segment);
|
|
940
|
+
const program_index = words.length - (call?.args.length ?? 0) - 1;
|
|
941
|
+
return words.slice(index + 1, program_index).some((word) => {
|
|
942
|
+
const argument = plain_argument(word);
|
|
943
|
+
return argument === void 0 || TIME_WRITE.test(argument);
|
|
944
|
+
});
|
|
945
|
+
}
|
|
946
|
+
function is_copy_to_last(call) {
|
|
947
|
+
if (!COPY_PROGRAMS.has(call.name)) return false;
|
|
948
|
+
return call.args.every((argument) => !TARGET_DIRECTORY.test(argument));
|
|
949
|
+
}
|
|
950
|
+
function written_args(call) {
|
|
951
|
+
const written = is_copy_to_last(call) ? call.args.slice(-1) : call.args;
|
|
952
|
+
return written.map((argument) => argument.slice(argument.indexOf("=") + 1));
|
|
953
|
+
}
|
|
954
|
+
function is_outside(target, root) {
|
|
955
|
+
const relative = path.relative(root, path.resolve(root, target.replaceAll(QUOTES2, "")));
|
|
956
|
+
return relative.startsWith("..") || path.isAbsolute(relative);
|
|
957
|
+
}
|
|
958
|
+
function file_write_refusal(call, root) {
|
|
959
|
+
return write_args_are_unsafe(call.args, root) ? `\`${call.name}\` to a runtime path` : void 0;
|
|
960
|
+
}
|
|
961
|
+
function writes_elsewhere(call) {
|
|
962
|
+
if (MOVE_PROGRAMS.has(call.name)) return true;
|
|
963
|
+
return IN_PLACE_PROGRAMS.has(call.name) && call.args.some((argument) => IN_PLACE.test(argument));
|
|
964
|
+
}
|
|
965
|
+
function outside_write_refusal(call, root) {
|
|
966
|
+
if (!writes_elsewhere(call)) return void 0;
|
|
967
|
+
const target = written_args(call).find(
|
|
968
|
+
(argument) => is_outside(argument, root) && unsafe_path(argument, root)
|
|
969
|
+
);
|
|
970
|
+
return target === void 0 ? void 0 : `\`${call.name}\` to a runtime path outside this checkout`;
|
|
971
|
+
}
|
|
972
|
+
function call_refusal(segment, call, root) {
|
|
973
|
+
if (FILE_PROGRAMS.has(call.name)) return file_write_refusal(call, root);
|
|
974
|
+
if (implementation_shell_nested.reads_stdin(call)) return STDIN_SHELL;
|
|
975
|
+
const args = call.args.map((argument) => argument.replaceAll(ARGUMENT_QUOTES, ""));
|
|
976
|
+
const name = call.name.replaceAll(ARGUMENT_QUOTES, "");
|
|
977
|
+
const outside = outside_write_refusal(call, root);
|
|
978
|
+
return outside ?? implementation_shell_deny.refusal(segment, { name, args });
|
|
979
|
+
}
|
|
980
|
+
function body_of(segment) {
|
|
981
|
+
const body = segment.replace(COMPOUND_HEAD, "");
|
|
982
|
+
let end = body.length;
|
|
983
|
+
while (end > 0 && COMPOUND_CLOSERS.has(body.charAt(end - 1))) end -= 1;
|
|
984
|
+
return body.slice(0, end);
|
|
985
|
+
}
|
|
986
|
+
function call_of(segment) {
|
|
987
|
+
const body = body_of(segment);
|
|
988
|
+
if (KEYWORDS.has(git_argv.words_of(body)[0] ?? "")) return void 0;
|
|
989
|
+
return git_argv.program_of(body);
|
|
990
|
+
}
|
|
991
|
+
function command_refusal(segment, root) {
|
|
992
|
+
const call = call_of(segment);
|
|
993
|
+
return call === void 0 ? void 0 : call_refusal(body_of(segment), call, root);
|
|
994
|
+
}
|
|
995
|
+
function is_unread_body(body) {
|
|
996
|
+
if (FUNCTION_START.test(body)) return !FUNCTION_HEAD.test(body);
|
|
997
|
+
return UNREAD_ARMS.some((pattern) => pattern.test(body));
|
|
998
|
+
}
|
|
999
|
+
function segment_refusal(segment, root) {
|
|
1000
|
+
if (wrapper_writes(segment)) return "a time output file";
|
|
1001
|
+
if (is_unread_body(body_of(segment))) return "a `case` arm or function body";
|
|
1002
|
+
const target = redirected_paths(segment).find((redirected) => unsafe_path(redirected, root));
|
|
1003
|
+
return target === void 0 ? command_refusal(segment, root) : `redirect to \`${target}\``;
|
|
1004
|
+
}
|
|
1005
|
+
function is_cd(segment) {
|
|
1006
|
+
return call_of(segment)?.name === "cd";
|
|
1007
|
+
}
|
|
1008
|
+
function is_write(segment) {
|
|
1009
|
+
const call = call_of(segment);
|
|
1010
|
+
if (call !== void 0 && (FILE_PROGRAMS.has(call.name) || writes_elsewhere(call))) return true;
|
|
1011
|
+
return redirected_paths(segment).some((redirected) => redirected !== "/dev/null");
|
|
1012
|
+
}
|
|
1013
|
+
function segments_refusal(segments, root) {
|
|
1014
|
+
const is_moved = segments.some((segment) => is_cd(segment));
|
|
1015
|
+
if (is_moved && segments.some((segment) => is_write(segment))) return CD_WRITE;
|
|
1016
|
+
return segments.map((segment) => segment_refusal(segment, root)).find((rule) => rule !== void 0);
|
|
1017
|
+
}
|
|
1018
|
+
function nested_lines(line, segments) {
|
|
1019
|
+
const launched = segments.flatMap((segment) => {
|
|
1020
|
+
const call = call_of(segment);
|
|
1021
|
+
return call === void 0 ? [] : implementation_shell_nested.call_commands(call);
|
|
1022
|
+
});
|
|
1023
|
+
return [...implementation_shell_nested.substitution_bodies(line), ...launched];
|
|
1024
|
+
}
|
|
1025
|
+
function segments_of(command) {
|
|
1026
|
+
const segments = [];
|
|
1027
|
+
const pending = [command];
|
|
1028
|
+
let line = pending.pop();
|
|
1029
|
+
while (line !== void 0) {
|
|
1030
|
+
const cut = shell_segments.quote_aware_commands_of(line);
|
|
1031
|
+
segments.push(...cut);
|
|
1032
|
+
pending.push(...nested_lines(line, cut));
|
|
1033
|
+
line = pending.pop();
|
|
1034
|
+
}
|
|
1035
|
+
return segments;
|
|
1036
|
+
}
|
|
1037
|
+
function input_refusal(command) {
|
|
1038
|
+
if (command.trim() === "") return "an empty command";
|
|
1039
|
+
return time_shell.has_heredoc(command) ? "a heredoc" : void 0;
|
|
1040
|
+
}
|
|
1041
|
+
function refusal4(command, root = process.cwd()) {
|
|
1042
|
+
return input_refusal(command) ?? segments_refusal(segments_of(command), root);
|
|
1043
|
+
}
|
|
1044
|
+
function is_unsafe(command, root = process.cwd()) {
|
|
1045
|
+
return refusal4(command, root) !== void 0;
|
|
1046
|
+
}
|
|
1047
|
+
var implementation_shell = { is_unsafe, refusal: refusal4 };
|
|
1048
|
+
|
|
1049
|
+
// scripts/hooks/implementation-authority.ts
|
|
1050
|
+
var HANDOFF = " Implementation refused before execution. Record the plan with issue:plan or issue:comment and hand it to lane:dispatch; repeating the request does not grant authority.";
|
|
1051
|
+
var UNKNOWN = " Cannot verify the write targets of this shell or patch input. Use explicit Edit/Write paths for operational records, or hand implementation to a worker lane.";
|
|
1052
|
+
var MATCHED = " Matched rule: ";
|
|
1053
|
+
function edit_refusal(tool_input) {
|
|
1054
|
+
return step_zero_notice.edited_paths(tool_input).length === 0 ? "no edited path" : void 0;
|
|
1055
|
+
}
|
|
1056
|
+
function unverified_write(raw_payload) {
|
|
1057
|
+
const payload = hook_tool_payload.parse(raw_payload);
|
|
1058
|
+
if (payload === void 0) return "an unparsed hook payload";
|
|
1059
|
+
if (["apply_patch", "exec"].includes(payload.tool_name)) return `\`${payload.tool_name}\` input`;
|
|
1060
|
+
if (["Edit", "Write"].includes(payload.tool_name)) return edit_refusal(payload.tool_input);
|
|
1061
|
+
if (payload.tool_name !== "Bash") return void 0;
|
|
1062
|
+
return implementation_shell.refusal(time_shell.bash_command(payload.tool_input));
|
|
1063
|
+
}
|
|
1064
|
+
function reason(raw_payload, context = hook_context.from_process()) {
|
|
1065
|
+
if (agent_session_role.can_implement(context.env)) return void 0;
|
|
1066
|
+
const scope = agent_session_role.scope_line(context.env);
|
|
1067
|
+
if (step_zero_notice.is_runtime_edit(raw_payload, context.cwd, true)) return scope + HANDOFF;
|
|
1068
|
+
const rule = unverified_write(raw_payload);
|
|
1069
|
+
if (rule === void 0) return void 0;
|
|
1070
|
+
return `${scope}${HANDOFF}${UNKNOWN}${MATCHED}${rule}.`;
|
|
1071
|
+
}
|
|
1072
|
+
var implementation_authority = { reason };
|
|
1073
|
+
|
|
1074
|
+
// scripts/hooks/lane-plan-guard.ts
|
|
1075
|
+
var COMMAND_DOC = '`docs/josh-commands-lane.md` \u2192 "`josh lane:plan`"';
|
|
1076
|
+
var OUTCOMES = "on `yield` end the session with no edit (its lane is given back); on `wait` run it again";
|
|
1077
|
+
function reason_text(issue) {
|
|
1078
|
+
const command = `\`pnpm josh lane:plan ${issue} <path>...\``;
|
|
1079
|
+
return `\u26D4 lane plan: run ${command} naming every file the work summary changes before the first implementation edit \u2014 ${OUTCOMES} (${COMMAND_DOC}).`;
|
|
1080
|
+
}
|
|
1081
|
+
function lane_child_edit(raw_payload, directory, source) {
|
|
1082
|
+
if (!lane_child_marker.is_child_of(directory, source)) return void 0;
|
|
1083
|
+
return step_zero_notice.is_runtime_edit(raw_payload, directory) ? lane_child_marker.marked_issue(source) : void 0;
|
|
1084
|
+
}
|
|
1085
|
+
function reason2(raw_payload, directory = process.cwd(), source = process.env) {
|
|
1086
|
+
const issue = lane_child_edit(raw_payload, directory, source);
|
|
1087
|
+
if (issue === void 0) return void 0;
|
|
1088
|
+
return lane_plan.is_uncleared(Number(issue), directory) ? reason_text(issue) : void 0;
|
|
1089
|
+
}
|
|
1090
|
+
var lane_plan_guard = { reason: reason2 };
|
|
1091
|
+
|
|
1092
|
+
// scripts/hooks/shell-rules-notice.ts
|
|
1093
|
+
var STAMP_PREFIX4 = "josh-shell-rules-notice-";
|
|
1094
|
+
var NOTICE2 = "Shell rules: change an existing file with Edit or Write, never a script or heredoc that writes it (file-edits.md); run a josh check with no pipe or under `set -o pipefail`, never `| head` (output-bounds.md).";
|
|
1095
|
+
var STAMP = hook_decision.create_refusal_stamp(STAMP_PREFIX4);
|
|
1096
|
+
function notice(raw_payload) {
|
|
1097
|
+
const payload = hook_decision.parse_hook_payload(raw_payload);
|
|
1098
|
+
if (payload?.tool_name !== cost_blocks.BASH_TOOL) return void 0;
|
|
1099
|
+
const target = STAMP.path(payload.transcript_path);
|
|
1100
|
+
if (STAMP.last_ms(target) !== hook_decision.NEVER_MS || !STAMP.record(target, Date.now())) {
|
|
1101
|
+
return void 0;
|
|
1102
|
+
}
|
|
1103
|
+
return NOTICE2;
|
|
1104
|
+
}
|
|
1105
|
+
var shell_rules_notice = { NOTICE: NOTICE2, notice, stamp_path: STAMP.path };
|
|
1106
|
+
|
|
1107
|
+
// scripts/hooks/pretool-guard.ts
|
|
1108
|
+
var CLEAR = { reason: void 0, notice: void 0, fault: void 0 };
|
|
1109
|
+
var HOOK_NAME = "pretool-guard";
|
|
1110
|
+
function is_clear(outcome) {
|
|
1111
|
+
return outcome.reason === void 0 && outcome.notice === void 0 && outcome.fault === void 0;
|
|
1112
|
+
}
|
|
1113
|
+
function combine_outcomes(outcomes, rule_reason, demoted = hook_demoted.rules()) {
|
|
1114
|
+
const reasons = [...outcomes.map((outcome) => outcome.reason), rule_reason].filter(
|
|
1115
|
+
(reason3) => reason3 !== void 0
|
|
1116
|
+
);
|
|
1117
|
+
return hook_demoted.verdict(reasons, demoted) ?? outcomes.find((outcome) => !is_clear(outcome)) ?? CLEAR;
|
|
1118
|
+
}
|
|
1119
|
+
function with_session_notice(outcome, raw_payload, context) {
|
|
1120
|
+
if (!is_clear(outcome)) return outcome;
|
|
1121
|
+
const notice2 = step_zero_notice.notice(raw_payload, context.cwd) ?? shell_rules_notice.notice(raw_payload);
|
|
1122
|
+
return notice2 === void 0 ? outcome : { reason: void 0, notice: notice2, fault: void 0 };
|
|
1123
|
+
}
|
|
1124
|
+
function guarded_call(raw_payload) {
|
|
1125
|
+
try {
|
|
1126
|
+
const payload = hook_decision.parse_hook_payload(raw_payload);
|
|
1127
|
+
return payload === void 0 ? void 0 : { name: payload.tool_name, input: payload.tool_input };
|
|
1128
|
+
} catch {
|
|
1129
|
+
return void 0;
|
|
1130
|
+
}
|
|
1131
|
+
}
|
|
1132
|
+
function authority_outcome(raw_payload, context) {
|
|
1133
|
+
return {
|
|
1134
|
+
reason: implementation_authority.reason(raw_payload, context),
|
|
1135
|
+
notice: void 0,
|
|
1136
|
+
fault: void 0
|
|
1137
|
+
};
|
|
1138
|
+
}
|
|
1139
|
+
function lane_plan_outcome(raw_payload, context) {
|
|
1140
|
+
const reason3 = lane_plan_guard.reason(raw_payload, context.cwd, context.env);
|
|
1141
|
+
return { reason: reason3, notice: void 0, fault: void 0 };
|
|
1142
|
+
}
|
|
1143
|
+
function clocked(outcome) {
|
|
1144
|
+
return function clocked_outcome(raw_payload, context) {
|
|
1145
|
+
return outcome(raw_payload, Date.now(), context);
|
|
1146
|
+
};
|
|
1147
|
+
}
|
|
1148
|
+
var READ_ONLY_TOOLS = /* @__PURE__ */ new Set(["Read", "Glob", "Grep"]);
|
|
1149
|
+
var SYNC_GUARDS = [
|
|
1150
|
+
{ outcome: authority_outcome, reads: false },
|
|
1151
|
+
{ outcome: clocked(batch_outcome), reads: true },
|
|
1152
|
+
{ outcome: clocked(investigation_outcome), reads: true },
|
|
1153
|
+
{ outcome: clocked(duplicate_read_outcome), reads: true },
|
|
1154
|
+
{ outcome: clocked(large_read_outcome), reads: true },
|
|
1155
|
+
{ outcome: lane_plan_outcome, reads: false }
|
|
1156
|
+
];
|
|
1157
|
+
function guard_outcome(raw_payload, context) {
|
|
1158
|
+
const is_read = READ_ONLY_TOOLS.has(guarded_call(raw_payload)?.name ?? "");
|
|
1159
|
+
const outcomes = SYNC_GUARDS.filter((guard) => guard.reads || !is_read).map(
|
|
1160
|
+
(guard) => guard.outcome(raw_payload, context)
|
|
1161
|
+
);
|
|
1162
|
+
return combine_outcomes(
|
|
1163
|
+
outcomes,
|
|
1164
|
+
delivered_rules.delivery(raw_payload, Date.now(), context),
|
|
1165
|
+
hook_demoted.rules(context.env)
|
|
1166
|
+
);
|
|
1167
|
+
}
|
|
1168
|
+
function pretool_outcome(raw_payload, context = hook_context.from_process()) {
|
|
1169
|
+
return with_session_notice(guard_outcome(raw_payload, context), raw_payload, context);
|
|
1170
|
+
}
|
|
1171
|
+
async function mark_phase(outcome, raw_payload, context = hook_context.from_process()) {
|
|
1172
|
+
const is_allowed_edit = outcome.reason === void 0 && step_zero_notice.is_runtime_edit(raw_payload, context.cwd);
|
|
1173
|
+
if (is_allowed_edit) await lane_phase.mark_implement(context.cwd, context.env);
|
|
1174
|
+
}
|
|
1175
|
+
async function async_reason(raw_payload, context) {
|
|
1176
|
+
const watcher = await run_watcher_hook.watcher_hook_reason(raw_payload, context);
|
|
1177
|
+
const state = run_parent_cut_hook.current_state(context);
|
|
1178
|
+
const cut = watcher ?? await run_parent_cut_hook.parent_cut_reason(raw_payload, Date.now(), state);
|
|
1179
|
+
const poll = cut ?? await run_poll_hook.safe_poll_reason(raw_payload, context);
|
|
1180
|
+
return poll ?? await issue_watch_hook.watch_reason(context);
|
|
1181
|
+
}
|
|
1182
|
+
async function pretool_outcome_async(raw_payload, context = hook_context.from_process()) {
|
|
1183
|
+
const base = guard_outcome(raw_payload, context);
|
|
1184
|
+
if (base.reason !== void 0) return base;
|
|
1185
|
+
const reason3 = await async_reason(raw_payload, context);
|
|
1186
|
+
if (reason3 !== void 0) return { reason: reason3, notice: void 0, fault: void 0 };
|
|
1187
|
+
const outcome = with_session_notice(base, raw_payload, context);
|
|
1188
|
+
await mark_phase(outcome, raw_payload, context);
|
|
1189
|
+
return outcome;
|
|
1190
|
+
}
|
|
1191
|
+
function rewrite_context(note, outcome) {
|
|
1192
|
+
return [note, outcome.notice ?? outcome.fault].filter(Boolean).join("\n\n");
|
|
1193
|
+
}
|
|
1194
|
+
function foreground_input_of(raw_payload, is_lane_child) {
|
|
1195
|
+
const call = guarded_call(raw_payload);
|
|
1196
|
+
return call === void 0 ? void 0 : lane_background.foreground_input(call, is_lane_child);
|
|
1197
|
+
}
|
|
1198
|
+
function foreground_rewrite(outcome, raw_payload, is_lane_child, rewrite) {
|
|
1199
|
+
const input = outcome.reason === void 0 ? foreground_input_of(raw_payload, is_lane_child) : void 0;
|
|
1200
|
+
if (input === void 0) return void 0;
|
|
1201
|
+
const note = [rewrite?.note, lane_background.FOREGROUND_NOTE].filter(Boolean).join("\n\n");
|
|
1202
|
+
const envelope_of = rewrite === void 0 ? hook_decision.rewrite_envelope : hook_decision.flow_rewrite_envelope;
|
|
1203
|
+
return envelope_of(input, rewrite_context(note, outcome));
|
|
1204
|
+
}
|
|
1205
|
+
function rule_envelope(outcome, rewrite) {
|
|
1206
|
+
if (rewrite === void 0 || outcome.reason !== void 0) return void 0;
|
|
1207
|
+
return hook_decision.flow_rewrite_envelope(rewrite.input, rewrite_context(rewrite.note, outcome));
|
|
1208
|
+
}
|
|
1209
|
+
function emit(raw_payload, outcome, rewrite, context = hook_context.from_process()) {
|
|
1210
|
+
const is_lane_child = lane_child_marker.is_child_of.bind(void 0, context.cwd, context.env);
|
|
1211
|
+
const envelope = foreground_rewrite(outcome, raw_payload, is_lane_child, rewrite) ?? rule_envelope(outcome, rewrite);
|
|
1212
|
+
if (envelope === void 0) hook_decision.emit_outcome(outcome);
|
|
1213
|
+
else process.stdout.write(`${envelope}
|
|
1214
|
+
`);
|
|
1215
|
+
}
|
|
1216
|
+
async function record_refusal(judged_payload, outcome, context = hook_context.from_process(), demoted = hook_demoted.rules(context.env)) {
|
|
1217
|
+
const refusal5 = outcome.reason ?? hook_demoted.refusal_of(outcome.notice, demoted);
|
|
1218
|
+
await hook_ledger.record_reason(HOOK_NAME, refusal5, judged_payload, context);
|
|
1219
|
+
if (outcome.reason === void 0) await direct_gh_usage.record(judged_payload, context);
|
|
1220
|
+
}
|
|
1221
|
+
async function respond(raw_payload, context = hook_context.from_process()) {
|
|
1222
|
+
const rewrite = rule_rewrite.rewrite(raw_payload, context);
|
|
1223
|
+
const judged = rewrite?.payload ?? raw_payload;
|
|
1224
|
+
bash_revert.stamp(judged, context.cwd);
|
|
1225
|
+
const outcome = await pretool_outcome_async(judged, context);
|
|
1226
|
+
emit(judged, outcome, rewrite, context);
|
|
1227
|
+
await record_refusal(judged, outcome, context);
|
|
1228
|
+
}
|
|
1229
|
+
var pretool_guard = {
|
|
1230
|
+
combine_outcomes,
|
|
1231
|
+
emit,
|
|
1232
|
+
foreground_rewrite,
|
|
1233
|
+
mark_phase,
|
|
1234
|
+
pretool_outcome,
|
|
1235
|
+
record_refusal,
|
|
1236
|
+
respond
|
|
1237
|
+
};
|
|
1238
|
+
|
|
1239
|
+
export {
|
|
1240
|
+
pretool_guard
|
|
1241
|
+
};
|