@joshuafolkken/kit 1.3044.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/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 +2020 -1980
- 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 +521 -497
- package/dist/hooks/pretool-guard.js +8 -8
- package/dist/hooks/run-ship-lap-P5555IG7.js +8 -0
- package/dist/hooks/session-lang.js +9 -7
- package/dist/hooks/stop-guard.js +962 -669
- package/dist/inputs.json +63 -54
- 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/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-layout.ts +2 -2
- 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-seat.ts +9 -2
- package/scripts/run/board/run-board-setup.ts +6 -4
- 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-24OATKOF.js +0 -7534
- 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-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-LZPPSOTP.js +0 -122
- 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-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,1629 @@
|
|
|
1
|
+
import {
|
|
2
|
+
hook_launch
|
|
3
|
+
} from "./chunk-OF4BY4N7.js";
|
|
4
|
+
import {
|
|
5
|
+
composite_actions
|
|
6
|
+
} from "./chunk-RXAZJMSZ.js";
|
|
7
|
+
import {
|
|
8
|
+
gh_spawn
|
|
9
|
+
} from "./chunk-BFKTUD3V.js";
|
|
10
|
+
import {
|
|
11
|
+
init_logic,
|
|
12
|
+
managed_config_scope,
|
|
13
|
+
npm_publish_files
|
|
14
|
+
} from "./chunk-BDSG6JKH.js";
|
|
15
|
+
import {
|
|
16
|
+
init_logic_json_merge,
|
|
17
|
+
json_format,
|
|
18
|
+
migrate_lock,
|
|
19
|
+
npm_acquisition,
|
|
20
|
+
parse_jsonc,
|
|
21
|
+
patch_json_key
|
|
22
|
+
} from "./chunk-NOSODWWK.js";
|
|
23
|
+
import {
|
|
24
|
+
release_age
|
|
25
|
+
} from "./chunk-5GI5GLC4.js";
|
|
26
|
+
import {
|
|
27
|
+
KIT_PACKAGE_NAME
|
|
28
|
+
} from "./chunk-PBOS7MTW.js";
|
|
29
|
+
import {
|
|
30
|
+
yaml_document
|
|
31
|
+
} from "./chunk-UCI4AL3Q.js";
|
|
32
|
+
import {
|
|
33
|
+
distributed_paths
|
|
34
|
+
} from "./chunk-3MQTOUXT.js";
|
|
35
|
+
import {
|
|
36
|
+
repo_origin
|
|
37
|
+
} from "./chunk-4ZHWTTQW.js";
|
|
38
|
+
import {
|
|
39
|
+
error_text
|
|
40
|
+
} from "./chunk-CDY4NFQG.js";
|
|
41
|
+
import {
|
|
42
|
+
session_language
|
|
43
|
+
} from "./chunk-OKYFQJW3.js";
|
|
44
|
+
import {
|
|
45
|
+
PACKAGE_DIR,
|
|
46
|
+
PROJECT_ROOT,
|
|
47
|
+
package_path
|
|
48
|
+
} from "./chunk-3CCGKX7Y.js";
|
|
49
|
+
import {
|
|
50
|
+
json_object_schema,
|
|
51
|
+
string_array_schema,
|
|
52
|
+
vscode_settings_schema
|
|
53
|
+
} from "./chunk-RBU2NKHF.js";
|
|
54
|
+
import {
|
|
55
|
+
PACKAGE_JSON,
|
|
56
|
+
package_manifest
|
|
57
|
+
} from "./chunk-WB4T3VY2.js";
|
|
58
|
+
import {
|
|
59
|
+
git_spawn_sync
|
|
60
|
+
} from "./chunk-B77ZMVHS.js";
|
|
61
|
+
import {
|
|
62
|
+
file_reader
|
|
63
|
+
} from "./chunk-ZNX2LJCQ.js";
|
|
64
|
+
import {
|
|
65
|
+
json_value
|
|
66
|
+
} from "./chunk-HIU2WXB6.js";
|
|
67
|
+
|
|
68
|
+
// scripts/safe-chain/project-config.ts
|
|
69
|
+
import { existsSync, readFileSync as readFileSync2 } from "node:fs";
|
|
70
|
+
import path3 from "node:path";
|
|
71
|
+
|
|
72
|
+
// scripts/sync/file-content.ts
|
|
73
|
+
import { lstatSync, mkdirSync, readFileSync, readlinkSync, writeFileSync } from "node:fs";
|
|
74
|
+
import path from "node:path";
|
|
75
|
+
var PATH_SEPARATORS = path.sep === "\\" ? /[/\\]/u : /\//u;
|
|
76
|
+
var MAX_RESOLVE_STEPS = 4096;
|
|
77
|
+
function is_read_denied(error) {
|
|
78
|
+
return error instanceof Error && "code" in error && ["EACCES", "EPERM"].includes(String(error.code));
|
|
79
|
+
}
|
|
80
|
+
function is_regular_existing_file(destination_path) {
|
|
81
|
+
try {
|
|
82
|
+
return lstatSync(destination_path).isFile();
|
|
83
|
+
} catch (error) {
|
|
84
|
+
if (file_reader.is_absent(error)) return false;
|
|
85
|
+
throw error;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
function does_read_match(destination_path, expected) {
|
|
89
|
+
try {
|
|
90
|
+
return readFileSync(destination_path).equals(expected);
|
|
91
|
+
} catch (error) {
|
|
92
|
+
if (is_read_denied(error)) return false;
|
|
93
|
+
throw error;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
function is_same_file_content(destination_path, content) {
|
|
97
|
+
if (!is_regular_existing_file(destination_path)) return false;
|
|
98
|
+
const expected = Buffer.isBuffer(content) ? content : Buffer.from(content);
|
|
99
|
+
return does_read_match(destination_path, expected);
|
|
100
|
+
}
|
|
101
|
+
function read_symlink(target) {
|
|
102
|
+
if (!lstatSync(target, { throwIfNoEntry: false })?.isSymbolicLink()) return void 0;
|
|
103
|
+
return readlinkSync(target);
|
|
104
|
+
}
|
|
105
|
+
function split_components(target) {
|
|
106
|
+
return target.split(PATH_SEPARATORS).filter((part) => part !== "" && part !== ".");
|
|
107
|
+
}
|
|
108
|
+
function enter_component(current, name, pending) {
|
|
109
|
+
if (name === "..") return path.dirname(current);
|
|
110
|
+
const next = path.join(current, name);
|
|
111
|
+
const link = read_symlink(next);
|
|
112
|
+
if (link === void 0) return next;
|
|
113
|
+
const root = path.isAbsolute(link) ? path.parse(link).root : "";
|
|
114
|
+
pending.unshift(...split_components(link.slice(root.length)));
|
|
115
|
+
return root === "" ? current : root;
|
|
116
|
+
}
|
|
117
|
+
function resolve_write_path(target) {
|
|
118
|
+
const absolute = path.isAbsolute(target) ? target : `${process.cwd()}${path.sep}${target}`;
|
|
119
|
+
let current = path.parse(absolute).root;
|
|
120
|
+
const pending = split_components(absolute.slice(current.length));
|
|
121
|
+
for (let steps = 0; steps <= MAX_RESOLVE_STEPS; steps += 1) {
|
|
122
|
+
const name = pending.shift();
|
|
123
|
+
if (name === void 0) return current;
|
|
124
|
+
current = enter_component(current, name, pending);
|
|
125
|
+
}
|
|
126
|
+
throw new Error(`Refusing to write ${target}: too many links`);
|
|
127
|
+
}
|
|
128
|
+
function is_within(root, target) {
|
|
129
|
+
const relative = path.relative(root, target);
|
|
130
|
+
return relative !== ".." && !relative.startsWith(`..${path.sep}`) && !path.isAbsolute(relative);
|
|
131
|
+
}
|
|
132
|
+
function does_escape_project(destination_path) {
|
|
133
|
+
if (!is_within(path.resolve(PROJECT_ROOT), path.resolve(destination_path))) return false;
|
|
134
|
+
return !is_within(resolve_write_path(PROJECT_ROOT), resolve_write_path(destination_path));
|
|
135
|
+
}
|
|
136
|
+
function write_contained(destination_path, content) {
|
|
137
|
+
if (does_escape_project(destination_path)) {
|
|
138
|
+
throw new Error(`Refusing to write ${destination_path}: it resolves outside the project`);
|
|
139
|
+
}
|
|
140
|
+
mkdirSync(path.dirname(destination_path), { recursive: true });
|
|
141
|
+
writeFileSync(destination_path, content);
|
|
142
|
+
}
|
|
143
|
+
function write_text_if_changed(destination_path, content) {
|
|
144
|
+
if (is_same_file_content(destination_path, content)) return false;
|
|
145
|
+
write_contained(destination_path, content);
|
|
146
|
+
return true;
|
|
147
|
+
}
|
|
148
|
+
var file_content = { is_same_file_content, write_contained, write_text_if_changed };
|
|
149
|
+
|
|
150
|
+
// scripts/version/release-window.ts
|
|
151
|
+
import path2 from "node:path";
|
|
152
|
+
import { z } from "zod";
|
|
153
|
+
var WORKSPACE_FILE = "pnpm-workspace.yaml";
|
|
154
|
+
var exclusions_schema = z.object({ minimumReleaseAgeExclude: z.array(z.string()).optional() });
|
|
155
|
+
var DEFAULT_RELEASE_AGE_MINUTES = 4320;
|
|
156
|
+
function parse_release_window(workspace) {
|
|
157
|
+
const exclusions = exclusions_schema.parse(yaml_document.parse_yaml(workspace));
|
|
158
|
+
return {
|
|
159
|
+
minutes: release_age.parse_declared_minimum_release_age(workspace),
|
|
160
|
+
exclusions: exclusions.minimumReleaseAgeExclude ?? []
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
function read_release_window(root) {
|
|
164
|
+
return parse_release_window(file_reader.read_file_or_empty(path2.join(root, WORKSPACE_FILE)));
|
|
165
|
+
}
|
|
166
|
+
var release_window = { parse_release_window, read_release_window };
|
|
167
|
+
|
|
168
|
+
// scripts/safe-chain/project-config.ts
|
|
169
|
+
import { dump } from "js-yaml";
|
|
170
|
+
var WORKSPACE_FILE2 = "pnpm-workspace.yaml";
|
|
171
|
+
var PROJECT_CONFIG_FILE = ".aikido";
|
|
172
|
+
var EXCLUSIONS_FIELD = "minimumPackageAgeExclusions";
|
|
173
|
+
var AGE_FIELD = "minimumPackageAgeHours";
|
|
174
|
+
var MINUTES_PER_HOUR = 60;
|
|
175
|
+
function read_mapping(value, label) {
|
|
176
|
+
if (value === void 0) return {};
|
|
177
|
+
if (yaml_document.is_mapping_document(value)) return value;
|
|
178
|
+
throw new Error(`${label} must be a YAML mapping`);
|
|
179
|
+
}
|
|
180
|
+
function is_block_line(line) {
|
|
181
|
+
return line.trim() === "" || line.startsWith(" ") || line.startsWith(" ");
|
|
182
|
+
}
|
|
183
|
+
function trim_block_end(lines, start, end) {
|
|
184
|
+
let trimmed = end;
|
|
185
|
+
while (trimmed > start + 1 && lines[trimmed - 1]?.trim() === "") trimmed -= 1;
|
|
186
|
+
return trimmed;
|
|
187
|
+
}
|
|
188
|
+
function find_block_end(lines, start) {
|
|
189
|
+
const remaining = lines.slice(start + 1);
|
|
190
|
+
const relative = remaining.findIndex((line, index) => {
|
|
191
|
+
if (is_block_line(line)) return false;
|
|
192
|
+
if (!line.startsWith("#")) return true;
|
|
193
|
+
const next = remaining.slice(index + 1).find((candidate) => candidate.trim() !== "" && !candidate.startsWith("#"));
|
|
194
|
+
return next === void 0 || !is_block_line(next);
|
|
195
|
+
});
|
|
196
|
+
const end = relative === -1 ? lines.length : start + 1 + relative;
|
|
197
|
+
return trim_block_end(lines, start, end);
|
|
198
|
+
}
|
|
199
|
+
function append_block(existing, block) {
|
|
200
|
+
if (existing.length === 0) return block;
|
|
201
|
+
const prefix = existing.endsWith("\n") ? existing : `${existing}
|
|
202
|
+
`;
|
|
203
|
+
return `${prefix}
|
|
204
|
+
${block}`;
|
|
205
|
+
}
|
|
206
|
+
function preserve_anchor(block, key_line) {
|
|
207
|
+
const anchor = /(?:^|\s)(&[^\s#]+)/u.exec(key_line)?.[1];
|
|
208
|
+
if (!anchor) return block;
|
|
209
|
+
const header = "safe-chain:";
|
|
210
|
+
return `${header} ${anchor}${block.slice(header.length)}`;
|
|
211
|
+
}
|
|
212
|
+
function replace_safe_chain_block(existing, safe_chain) {
|
|
213
|
+
const block = dump({ "safe-chain": safe_chain }, { lineWidth: -1 });
|
|
214
|
+
const lines = existing.split("\n");
|
|
215
|
+
const start = lines.findIndex(
|
|
216
|
+
(line) => /^(?:safe-chain|'safe-chain'|"safe-chain")\s*:/u.test(line)
|
|
217
|
+
);
|
|
218
|
+
if (start === -1) return append_block(existing, block);
|
|
219
|
+
const replacement = preserve_anchor(block, lines[start] ?? "");
|
|
220
|
+
const end = find_block_end(lines, start);
|
|
221
|
+
const prefix = lines.slice(0, start).join("\n");
|
|
222
|
+
const suffix = lines.slice(end).join("\n");
|
|
223
|
+
return `${prefix}${prefix ? "\n" : ""}${replacement}${suffix}`;
|
|
224
|
+
}
|
|
225
|
+
function package_age_hours(workspace) {
|
|
226
|
+
const { minutes } = release_window.parse_release_window(workspace);
|
|
227
|
+
if (minutes === void 0) return void 0;
|
|
228
|
+
return Math.floor(minutes / MINUTES_PER_HOUR);
|
|
229
|
+
}
|
|
230
|
+
function merge_age(safe_chain, workspace) {
|
|
231
|
+
const hours = package_age_hours(workspace);
|
|
232
|
+
if (hours === void 0) return safe_chain;
|
|
233
|
+
return { ...safe_chain, [AGE_FIELD]: hours };
|
|
234
|
+
}
|
|
235
|
+
function merge_exclusions(safe_chain, exclusions) {
|
|
236
|
+
const npm = read_mapping(safe_chain["npm"], "safe-chain.npm");
|
|
237
|
+
return { ...safe_chain, npm: { ...npm, [EXCLUSIONS_FIELD]: exclusions } };
|
|
238
|
+
}
|
|
239
|
+
function has_nothing_to_write(existing, exclusions, workspace) {
|
|
240
|
+
return existing.length === 0 && exclusions.length === 0 && package_age_hours(workspace) === void 0;
|
|
241
|
+
}
|
|
242
|
+
function merge_project_config(existing, workspace) {
|
|
243
|
+
const { exclusions } = release_window.parse_release_window(workspace);
|
|
244
|
+
const aikido = yaml_document.parse_yaml(existing);
|
|
245
|
+
const safe_chain = read_mapping(aikido["safe-chain"], "safe-chain");
|
|
246
|
+
const merged = merge_age(merge_exclusions(safe_chain, exclusions), workspace);
|
|
247
|
+
if (JSON.stringify(merged) === JSON.stringify(safe_chain) || has_nothing_to_write(existing, exclusions, workspace)) {
|
|
248
|
+
return existing;
|
|
249
|
+
}
|
|
250
|
+
return replace_safe_chain_block(existing, merged);
|
|
251
|
+
}
|
|
252
|
+
function sync_project_config(root) {
|
|
253
|
+
const workspace_path = path3.join(root, WORKSPACE_FILE2);
|
|
254
|
+
if (!existsSync(workspace_path)) return false;
|
|
255
|
+
const config_path = path3.join(root, PROJECT_CONFIG_FILE);
|
|
256
|
+
const existing = file_reader.read_file_or_empty(config_path);
|
|
257
|
+
const workspace = readFileSync2(workspace_path, "utf8");
|
|
258
|
+
const merged = merge_project_config(existing, workspace);
|
|
259
|
+
if (merged === existing) return false;
|
|
260
|
+
file_content.write_contained(config_path, merged);
|
|
261
|
+
return true;
|
|
262
|
+
}
|
|
263
|
+
var project_config = { merge_project_config, sync_project_config };
|
|
264
|
+
|
|
265
|
+
// scripts/init/init-actions.ts
|
|
266
|
+
import { readFileSync as readFileSync4 } from "node:fs";
|
|
267
|
+
import path5 from "node:path";
|
|
268
|
+
|
|
269
|
+
// scripts/init/session-language-environment.ts
|
|
270
|
+
import { existsSync as existsSync2, readFileSync as readFileSync3 } from "node:fs";
|
|
271
|
+
import path4 from "node:path";
|
|
272
|
+
var ENV_FILE = ".env";
|
|
273
|
+
var CLAUDE_SETTINGS_PATH = path4.join(".claude", "settings.json");
|
|
274
|
+
var SESSION_LANG_HOOK = "session:lang";
|
|
275
|
+
var LOCALE_KEYS = ["LC_ALL", "LC_MESSAGES", "LANG"];
|
|
276
|
+
var JAPANESE_PREFIX = "ja";
|
|
277
|
+
var NON_JAPANESE_LANG = "en";
|
|
278
|
+
var KEY_LINE_PATTERN = new RegExp(
|
|
279
|
+
String.raw`^\s*(?:export\s+)?${session_language.ENV_KEY}\s*=`,
|
|
280
|
+
"mu"
|
|
281
|
+
);
|
|
282
|
+
function lang_from_locale(environment) {
|
|
283
|
+
const locale = LOCALE_KEYS.map((key) => environment[key]?.trim()).find(Boolean) ?? "";
|
|
284
|
+
return locale.toLowerCase().startsWith(JAPANESE_PREFIX) ? JAPANESE_PREFIX : NON_JAPANESE_LANG;
|
|
285
|
+
}
|
|
286
|
+
function resolve_lang(environment) {
|
|
287
|
+
const exported = environment[session_language.ENV_KEY]?.trim();
|
|
288
|
+
if (exported) return exported;
|
|
289
|
+
return lang_from_locale(environment);
|
|
290
|
+
}
|
|
291
|
+
function session_lang_line(lang) {
|
|
292
|
+
return `${session_language.ENV_KEY}=${lang}
|
|
293
|
+
`;
|
|
294
|
+
}
|
|
295
|
+
function merge_session_lang(existing, lang) {
|
|
296
|
+
if (KEY_LINE_PATTERN.test(existing)) return existing;
|
|
297
|
+
const separator = existing.length === 0 || existing.endsWith("\n") ? "" : "\n";
|
|
298
|
+
return `${existing}${separator}${session_lang_line(lang)}`;
|
|
299
|
+
}
|
|
300
|
+
function is_session_lang_hooked(project_root) {
|
|
301
|
+
const settings_path = path4.join(project_root, CLAUDE_SETTINGS_PATH);
|
|
302
|
+
return existsSync2(settings_path) && readFileSync3(settings_path, "utf8").includes(SESSION_LANG_HOOK);
|
|
303
|
+
}
|
|
304
|
+
function build_session_lang_actions(environment = process.env, project_root = PROJECT_ROOT) {
|
|
305
|
+
if (is_session_lang_hooked(project_root)) return [];
|
|
306
|
+
const lang = resolve_lang(environment);
|
|
307
|
+
return [
|
|
308
|
+
{
|
|
309
|
+
dest: ENV_FILE,
|
|
310
|
+
create: () => session_lang_line(lang),
|
|
311
|
+
merge: (existing) => merge_session_lang(existing, lang)
|
|
312
|
+
}
|
|
313
|
+
];
|
|
314
|
+
}
|
|
315
|
+
var session_language_environment = {
|
|
316
|
+
build_session_lang_actions,
|
|
317
|
+
lang_from_locale,
|
|
318
|
+
merge_session_lang
|
|
319
|
+
};
|
|
320
|
+
|
|
321
|
+
// scripts/config-merge/patch-json-array.ts
|
|
322
|
+
import { findNodeAtLocation, getNodeValue, parseTree } from "jsonc-parser";
|
|
323
|
+
var PROBE_HEAD_LINES = 2;
|
|
324
|
+
var PROBE_TAIL_LINES = 3;
|
|
325
|
+
function element_nodes(array) {
|
|
326
|
+
if (array?.type !== "array") return [];
|
|
327
|
+
return array.children ?? [];
|
|
328
|
+
}
|
|
329
|
+
function find_array(content, key) {
|
|
330
|
+
const root = parseTree(content);
|
|
331
|
+
const array = root === void 0 ? void 0 : findNodeAtLocation(root, [key]);
|
|
332
|
+
const elements = element_nodes(array);
|
|
333
|
+
if (array?.parent === void 0 || elements.length === 0) return void 0;
|
|
334
|
+
return { property: array.parent, elements };
|
|
335
|
+
}
|
|
336
|
+
function render_element(content, site, upsert) {
|
|
337
|
+
const lines = json_format.format_json({ [upsert.key]: [upsert.value] }).split("\n");
|
|
338
|
+
const text = lines.slice(PROBE_HEAD_LINES, -PROBE_TAIL_LINES).join("\n");
|
|
339
|
+
const unit = patch_json_key.line_indent(content, site.property.offset);
|
|
340
|
+
return patch_json_key.fit_value(content, text, unit).trimStart();
|
|
341
|
+
}
|
|
342
|
+
function splice(content, node, length, text) {
|
|
343
|
+
return content.slice(0, node.offset) + text + content.slice(node.offset + length);
|
|
344
|
+
}
|
|
345
|
+
function append_element(content, last, element_text) {
|
|
346
|
+
const indent = patch_json_key.line_indent(content, last.offset);
|
|
347
|
+
const text = `,${patch_json_key.eol_of(content)}${indent}${element_text}`;
|
|
348
|
+
const end = { ...last, offset: last.offset + last.length };
|
|
349
|
+
return splice(content, end, 0, text);
|
|
350
|
+
}
|
|
351
|
+
function is_equal(node, value) {
|
|
352
|
+
return JSON.stringify(getNodeValue(node)) === JSON.stringify(value);
|
|
353
|
+
}
|
|
354
|
+
function upsert_in(content, site, upsert) {
|
|
355
|
+
const target = site.elements.find((element) => upsert.is_target(getNodeValue(element)));
|
|
356
|
+
if (target !== void 0 && is_equal(target, upsert.value)) return content;
|
|
357
|
+
const element_text = render_element(content, site, upsert);
|
|
358
|
+
if (target !== void 0) return splice(content, target, target.length, element_text);
|
|
359
|
+
const last = site.elements.at(-1);
|
|
360
|
+
return last === void 0 ? content : append_element(content, last, element_text);
|
|
361
|
+
}
|
|
362
|
+
function upsert_element(content, upsert) {
|
|
363
|
+
const site = find_array(content, upsert.key);
|
|
364
|
+
if (site === void 0) return patch_json_key.set_json_key(content, upsert.key, [upsert.value]);
|
|
365
|
+
return upsert_in(content, site, upsert);
|
|
366
|
+
}
|
|
367
|
+
var patch_json_array = { upsert_element };
|
|
368
|
+
|
|
369
|
+
// scripts/init/vscode-tasks.ts
|
|
370
|
+
import { z as z2 } from "zod";
|
|
371
|
+
var TASKS_KEY = "tasks";
|
|
372
|
+
var LABEL_KEY = "label";
|
|
373
|
+
var TASKS_VERSION = "2.0.0";
|
|
374
|
+
var VSCODE_TASKS_FILENAME = "tasks.json";
|
|
375
|
+
var RETIRED_LABELS = /* @__PURE__ */ new Map([
|
|
376
|
+
["josh: run event watch", "josh: run board"]
|
|
377
|
+
]);
|
|
378
|
+
var task_array_schema = z2.array(json_object_schema);
|
|
379
|
+
function read_tasks(parsed) {
|
|
380
|
+
const result = task_array_schema.safeParse(parsed[TASKS_KEY]);
|
|
381
|
+
return result.success ? result.data : [];
|
|
382
|
+
}
|
|
383
|
+
function has_label(element, label) {
|
|
384
|
+
const result = json_object_schema.safeParse(element);
|
|
385
|
+
if (!result.success) return false;
|
|
386
|
+
const own = result.data[LABEL_KEY];
|
|
387
|
+
return (RETIRED_LABELS.get(own) ?? own) === label;
|
|
388
|
+
}
|
|
389
|
+
function merge_tasks(content, kit_tasks) {
|
|
390
|
+
let merged = init_logic_json_merge.merge_json_object(content, { version: TASKS_VERSION });
|
|
391
|
+
for (const task of kit_tasks) {
|
|
392
|
+
merged = patch_json_array.upsert_element(merged, {
|
|
393
|
+
key: TASKS_KEY,
|
|
394
|
+
value: task,
|
|
395
|
+
is_target: (element) => has_label(element, task[LABEL_KEY])
|
|
396
|
+
});
|
|
397
|
+
}
|
|
398
|
+
return merged;
|
|
399
|
+
}
|
|
400
|
+
function read_kit_tasks(content) {
|
|
401
|
+
return read_tasks(parse_jsonc(content));
|
|
402
|
+
}
|
|
403
|
+
var vscode_tasks = { VSCODE_TASKS_FILENAME, merge_tasks, read_kit_tasks };
|
|
404
|
+
|
|
405
|
+
// scripts/init/init-actions.ts
|
|
406
|
+
var PRETTIER_CONFIG_JS = "prettier.config.js";
|
|
407
|
+
var BASIC_PRETTIER_CONFIG = "prettier.config.mjs";
|
|
408
|
+
var VSCODE_EXTENSIONS_PATH = ".vscode/extensions.json";
|
|
409
|
+
var VSCODE_SETTINGS_PATH = ".vscode/settings.json";
|
|
410
|
+
var TSCONFIG_PATH = "tsconfig.json";
|
|
411
|
+
var LEFTHOOK_PATH = "lefthook.yml";
|
|
412
|
+
function read_package_file(relative_path) {
|
|
413
|
+
return readFileSync4(package_path(relative_path), "utf8");
|
|
414
|
+
}
|
|
415
|
+
function read_package_json(relative_path) {
|
|
416
|
+
return JSON.parse(read_package_file(relative_path));
|
|
417
|
+
}
|
|
418
|
+
function build_action(destination, create, merge) {
|
|
419
|
+
return { dest: destination, create, merge };
|
|
420
|
+
}
|
|
421
|
+
function build_vscode_tasks_action() {
|
|
422
|
+
const tasks_path = path5.join(".vscode", vscode_tasks.VSCODE_TASKS_FILENAME);
|
|
423
|
+
const kit_tasks = vscode_tasks.read_kit_tasks(read_package_file(tasks_path));
|
|
424
|
+
return build_action(
|
|
425
|
+
tasks_path,
|
|
426
|
+
() => read_package_file(tasks_path),
|
|
427
|
+
(existing) => vscode_tasks.merge_tasks(existing, kit_tasks)
|
|
428
|
+
);
|
|
429
|
+
}
|
|
430
|
+
function build_vscode_actions() {
|
|
431
|
+
const extensions_path = path5.join(".vscode", init_logic.VSCODE_EXTENSIONS_FILENAME);
|
|
432
|
+
const settings_path = path5.join(".vscode", init_logic.get_vscode_settings_filename());
|
|
433
|
+
const extensions_raw = vscode_settings_schema.parse(read_package_json(extensions_path));
|
|
434
|
+
const raw_recommendations = extensions_raw["recommendations"];
|
|
435
|
+
const recommendations = string_array_schema.parse(raw_recommendations);
|
|
436
|
+
const settings_data = init_logic.strip_kit_only_vscode_settings(
|
|
437
|
+
vscode_settings_schema.parse(read_package_json(settings_path))
|
|
438
|
+
);
|
|
439
|
+
return [
|
|
440
|
+
{
|
|
441
|
+
dest: VSCODE_EXTENSIONS_PATH,
|
|
442
|
+
create: () => read_package_file(extensions_path),
|
|
443
|
+
merge: (existing) => init_logic.merge_json_array_field(existing, "recommendations", recommendations)
|
|
444
|
+
},
|
|
445
|
+
{
|
|
446
|
+
dest: VSCODE_SETTINGS_PATH,
|
|
447
|
+
create: () => init_logic.strip_kit_only_vscode_settings_content(read_package_file(settings_path)),
|
|
448
|
+
merge: (existing) => init_logic.merge_json_object(existing, settings_data)
|
|
449
|
+
},
|
|
450
|
+
build_vscode_tasks_action()
|
|
451
|
+
];
|
|
452
|
+
}
|
|
453
|
+
var BASIC_EXTENSIONS = [
|
|
454
|
+
"streetsidesoftware.code-spell-checker",
|
|
455
|
+
"pkief.material-icon-theme",
|
|
456
|
+
"usernamehw.errorlens",
|
|
457
|
+
"anthropic.claude-code",
|
|
458
|
+
"github.github-vscode-theme"
|
|
459
|
+
];
|
|
460
|
+
var PRETTIER_EXTENSION = "esbenp.prettier-vscode";
|
|
461
|
+
var DEFAULT_FORMATTER = "editor.defaultFormatter";
|
|
462
|
+
var FORMAT_ON_SAVE = "editor.formatOnSave";
|
|
463
|
+
var BASIC_LANGUAGES = ["[html]", "[css]", "[javascript]"];
|
|
464
|
+
function basic_settings() {
|
|
465
|
+
const formatter = { [DEFAULT_FORMATTER]: PRETTIER_EXTENSION, [FORMAT_ON_SAVE]: true };
|
|
466
|
+
return Object.fromEntries(BASIC_LANGUAGES.map((language) => [language, formatter]));
|
|
467
|
+
}
|
|
468
|
+
function build_basic_settings_action() {
|
|
469
|
+
const settings = basic_settings();
|
|
470
|
+
return build_action(
|
|
471
|
+
VSCODE_SETTINGS_PATH,
|
|
472
|
+
() => json_format.format_json(settings),
|
|
473
|
+
(existing) => init_logic.merge_json_object(existing, settings)
|
|
474
|
+
);
|
|
475
|
+
}
|
|
476
|
+
function build_basic_vscode_actions(shape) {
|
|
477
|
+
const recommendations = shape.should_use_prettier ? [...BASIC_EXTENSIONS, PRETTIER_EXTENSION] : BASIC_EXTENSIONS;
|
|
478
|
+
const actions = [
|
|
479
|
+
build_action(
|
|
480
|
+
VSCODE_EXTENSIONS_PATH,
|
|
481
|
+
() => json_format.format_json({ recommendations }),
|
|
482
|
+
(existing) => init_logic.merge_json_array_field(existing, "recommendations", recommendations)
|
|
483
|
+
)
|
|
484
|
+
];
|
|
485
|
+
if (shape.should_use_prettier) actions.push(build_basic_settings_action());
|
|
486
|
+
return actions;
|
|
487
|
+
}
|
|
488
|
+
function build_basic_tsconfig_action() {
|
|
489
|
+
return build_action(
|
|
490
|
+
TSCONFIG_PATH,
|
|
491
|
+
() => json_format.format_json({ extends: init_logic.get_tsconfig_extends_entry() }),
|
|
492
|
+
(existing) => init_logic.merge_tsconfig_extends(
|
|
493
|
+
existing,
|
|
494
|
+
init_logic.get_tsconfig_extends_entry(),
|
|
495
|
+
PROJECT_ROOT
|
|
496
|
+
)
|
|
497
|
+
);
|
|
498
|
+
}
|
|
499
|
+
function build_secretlint_action() {
|
|
500
|
+
return {
|
|
501
|
+
dest: init_logic.get_secretlint_config_filename(),
|
|
502
|
+
create: () => init_logic.generate_secretlint_config()
|
|
503
|
+
};
|
|
504
|
+
}
|
|
505
|
+
function build_tsconfig_action() {
|
|
506
|
+
return build_action(
|
|
507
|
+
TSCONFIG_PATH,
|
|
508
|
+
() => init_logic.generate_tsconfig(),
|
|
509
|
+
(existing) => init_logic.merge_tsconfig_exclude(
|
|
510
|
+
init_logic.merge_tsconfig_extends(
|
|
511
|
+
existing,
|
|
512
|
+
init_logic.get_tsconfig_extends_entry(),
|
|
513
|
+
PROJECT_ROOT
|
|
514
|
+
)
|
|
515
|
+
)
|
|
516
|
+
);
|
|
517
|
+
}
|
|
518
|
+
function build_config_file_actions() {
|
|
519
|
+
const lefthook_extends = init_logic.get_lefthook_extends_value();
|
|
520
|
+
return [
|
|
521
|
+
build_tsconfig_action(),
|
|
522
|
+
build_action(
|
|
523
|
+
"cspell.config.yaml",
|
|
524
|
+
() => init_logic.generate_cspell_config(),
|
|
525
|
+
(existing) => init_logic.merge_cspell_import(existing, init_logic.get_cspell_import_value())
|
|
526
|
+
),
|
|
527
|
+
build_action(
|
|
528
|
+
LEFTHOOK_PATH,
|
|
529
|
+
() => init_logic.generate_lefthook_config(),
|
|
530
|
+
(existing) => init_logic.merge_lefthook_extends(existing, lefthook_extends)
|
|
531
|
+
),
|
|
532
|
+
build_secretlint_action(),
|
|
533
|
+
...build_vscode_actions()
|
|
534
|
+
];
|
|
535
|
+
}
|
|
536
|
+
function build_playwright_action() {
|
|
537
|
+
return { dest: "playwright.config.ts", create: () => init_logic.generate_playwright_config() };
|
|
538
|
+
}
|
|
539
|
+
function build_eslint_action() {
|
|
540
|
+
return build_action(
|
|
541
|
+
"eslint.config.js",
|
|
542
|
+
() => init_logic.generate_eslint_config(),
|
|
543
|
+
(existing) => init_logic.merge_eslint_config(existing)
|
|
544
|
+
);
|
|
545
|
+
}
|
|
546
|
+
function build_gitignore_action() {
|
|
547
|
+
const template = read_package_file("templates/gitignore");
|
|
548
|
+
return build_action(
|
|
549
|
+
".gitignore",
|
|
550
|
+
() => template,
|
|
551
|
+
(existing) => init_logic.merge_gitignore(existing, template)
|
|
552
|
+
);
|
|
553
|
+
}
|
|
554
|
+
function build_npmrc_actions() {
|
|
555
|
+
if (!npm_acquisition.can_manage(PROJECT_ROOT)) return [];
|
|
556
|
+
return [
|
|
557
|
+
build_action(
|
|
558
|
+
".npmrc",
|
|
559
|
+
() => migrate_lock.npmrc(""),
|
|
560
|
+
(existing) => init_logic.merge_npmrc(existing, PROJECT_ROOT)
|
|
561
|
+
)
|
|
562
|
+
];
|
|
563
|
+
}
|
|
564
|
+
function build_basic_actions(shape) {
|
|
565
|
+
const actions = [...build_npmrc_actions()];
|
|
566
|
+
if (shape.has_git) actions.push(build_gitignore_action());
|
|
567
|
+
if (shape.has_typescript) actions.push(build_basic_tsconfig_action());
|
|
568
|
+
if (shape.should_use_prettier) {
|
|
569
|
+
actions.push({
|
|
570
|
+
dest: BASIC_PRETTIER_CONFIG,
|
|
571
|
+
create: () => "import { config } from '@joshuafolkken/kit/prettier/basic'\n\nexport default config\n"
|
|
572
|
+
});
|
|
573
|
+
}
|
|
574
|
+
actions.push(...build_basic_vscode_actions(shape));
|
|
575
|
+
if (shape.has_workflow) actions.push(...session_language_environment.build_session_lang_actions());
|
|
576
|
+
return actions;
|
|
577
|
+
}
|
|
578
|
+
function build_file_actions(shape) {
|
|
579
|
+
if (shape?.profile === "basic") return build_basic_actions(shape);
|
|
580
|
+
return [
|
|
581
|
+
...build_npmrc_actions(),
|
|
582
|
+
...shape?.has_git === false ? [] : [build_gitignore_action()],
|
|
583
|
+
build_eslint_action(),
|
|
584
|
+
build_action(
|
|
585
|
+
PRETTIER_CONFIG_JS,
|
|
586
|
+
() => init_logic.generate_prettier_config(init_logic.detect_tailwind_stylesheet(PROJECT_ROOT)),
|
|
587
|
+
(existing) => init_logic.merge_prettier_config(existing, PROJECT_ROOT)
|
|
588
|
+
),
|
|
589
|
+
build_playwright_action(),
|
|
590
|
+
...build_config_file_actions().filter(
|
|
591
|
+
(action) => shape?.has_git !== false || action.dest !== LEFTHOOK_PATH
|
|
592
|
+
),
|
|
593
|
+
...session_language_environment.build_session_lang_actions()
|
|
594
|
+
];
|
|
595
|
+
}
|
|
596
|
+
var init_actions = { build_file_actions, read_package_json };
|
|
597
|
+
|
|
598
|
+
// scripts/init/project-profile.ts
|
|
599
|
+
import { existsSync as existsSync8, readdirSync as readdirSync3 } from "node:fs";
|
|
600
|
+
import path14 from "node:path";
|
|
601
|
+
import { z as z4 } from "zod";
|
|
602
|
+
|
|
603
|
+
// scripts/safe-chain/pack-hook.ts
|
|
604
|
+
import { existsSync as existsSync3, readFileSync as readFileSync5, rmSync } from "node:fs";
|
|
605
|
+
import path6 from "node:path";
|
|
606
|
+
import { z as z3 } from "zod";
|
|
607
|
+
var PACK_HOOK_FILE = ".pnpmfile.mjs";
|
|
608
|
+
var MANAGED_LINE = "// josh-managed-pnpmfile: @joshuafolkken/kit";
|
|
609
|
+
var LEGACY_HOOK_FILE = ".pnpmfile.cjs";
|
|
610
|
+
var CONFIG_FILES = ["pnpm-workspace.yaml", ".npmrc"];
|
|
611
|
+
var PNPMFILE_SETTINGS = /* @__PURE__ */ new Set(["pnpmfile", "pnpmfiles"]);
|
|
612
|
+
var SETTING_KEY_END = /[\s:=]/u;
|
|
613
|
+
var manifest_schema = z3.looseObject({ private: z3.boolean().optional() });
|
|
614
|
+
function is_published(manifest_text) {
|
|
615
|
+
return manifest_schema.parse(JSON.parse(manifest_text)).private !== true;
|
|
616
|
+
}
|
|
617
|
+
function sets_pnpmfile(config_text) {
|
|
618
|
+
return config_text.split("\n").some((line) => PNPMFILE_SETTINGS.has(line.trimStart().split(SETTING_KEY_END, 1)[0] ?? ""));
|
|
619
|
+
}
|
|
620
|
+
function has_own_hook_source(project_root) {
|
|
621
|
+
if (existsSync3(path6.join(project_root, LEGACY_HOOK_FILE))) return true;
|
|
622
|
+
return CONFIG_FILES.some(
|
|
623
|
+
(name) => sets_pnpmfile(file_reader.read_file_or_empty(path6.join(project_root, name)))
|
|
624
|
+
);
|
|
625
|
+
}
|
|
626
|
+
function write_hook(destination, package_directory) {
|
|
627
|
+
const source = readFileSync5(path6.join(package_directory, PACK_HOOK_FILE), "utf8");
|
|
628
|
+
return file_content.write_text_if_changed(destination, source) ? "written" : "unchanged";
|
|
629
|
+
}
|
|
630
|
+
function withdraw(destination, existing) {
|
|
631
|
+
if (existing === void 0) return "owned";
|
|
632
|
+
rmSync(destination);
|
|
633
|
+
return "withdrawn";
|
|
634
|
+
}
|
|
635
|
+
function apply(project_root, package_directory) {
|
|
636
|
+
const destination = path6.join(project_root, PACK_HOOK_FILE);
|
|
637
|
+
const existing = file_reader.read_optional(destination);
|
|
638
|
+
if (existing !== void 0 && !existing.startsWith(MANAGED_LINE)) return "owned";
|
|
639
|
+
if (has_own_hook_source(project_root)) return withdraw(destination, existing);
|
|
640
|
+
return write_hook(destination, package_directory);
|
|
641
|
+
}
|
|
642
|
+
var MESSAGES = {
|
|
643
|
+
written: ` \u2714 synced ${PACK_HOOK_FILE} (run \`pnpm install\` to refresh pnpmfileChecksum)`,
|
|
644
|
+
unchanged: ` \u2714 unchanged ${PACK_HOOK_FILE}`,
|
|
645
|
+
private: void 0,
|
|
646
|
+
owned: ` \u26A0 skipped ${PACK_HOOK_FILE} \u2014 the project has its own pnpmfile; strip the safe-chain preinstall at pack time there`,
|
|
647
|
+
withdrawn: ` \u26A0 removed ${PACK_HOOK_FILE} \u2014 it shadowed the project's own pnpmfile; strip the safe-chain preinstall at pack time there`
|
|
648
|
+
};
|
|
649
|
+
function sync_pack_hook(project_root, package_directory) {
|
|
650
|
+
const manifest_text = file_reader.read_optional(package_manifest.manifest_path(project_root));
|
|
651
|
+
const is_private = manifest_text === void 0 || !is_published(manifest_text);
|
|
652
|
+
const result = is_private ? "private" : apply(project_root, package_directory);
|
|
653
|
+
const message = MESSAGES[result];
|
|
654
|
+
if (message !== void 0) console.info(message);
|
|
655
|
+
return result;
|
|
656
|
+
}
|
|
657
|
+
var pack_hook = { MANAGED_LINE, sync_pack_hook };
|
|
658
|
+
|
|
659
|
+
// scripts/init/init-ai-copy.ts
|
|
660
|
+
import { existsSync as existsSync6, readFileSync as readFileSync9 } from "node:fs";
|
|
661
|
+
import path12 from "node:path";
|
|
662
|
+
|
|
663
|
+
// scripts/claude/workflow-destination.ts
|
|
664
|
+
var WORKFLOW_DESTINATION_PATTERN = /(?:^|[/\\])\.github[/\\]workflows[/\\][^/\\]+\.ya?ml$/u;
|
|
665
|
+
var COMPOSITE_ACTION_DESTINATION_PATTERN = /(?:^|[/\\])\.github[/\\]actions[/\\][^/\\]+[/\\]action\.ya?ml$/u;
|
|
666
|
+
function is_workflow_destination(destination) {
|
|
667
|
+
return WORKFLOW_DESTINATION_PATTERN.test(destination) || COMPOSITE_ACTION_DESTINATION_PATTERN.test(destination);
|
|
668
|
+
}
|
|
669
|
+
|
|
670
|
+
// scripts/managed-marker/managed-marker-logic.ts
|
|
671
|
+
var MARKER_TOKEN = "josh-managed-workflow:";
|
|
672
|
+
var MARKER_PREFIX = `# ${MARKER_TOKEN}`;
|
|
673
|
+
var MARKER_NOTE = "Overwritten on every sync of that package. Edit it there, not here.";
|
|
674
|
+
function marker_block(package_name) {
|
|
675
|
+
return `${MARKER_PREFIX} ${package_name}
|
|
676
|
+
# ${MARKER_NOTE}
|
|
677
|
+
`;
|
|
678
|
+
}
|
|
679
|
+
function is_marked(text) {
|
|
680
|
+
return text.startsWith(MARKER_PREFIX);
|
|
681
|
+
}
|
|
682
|
+
function apply_marker_for_destination(destination, text, package_name) {
|
|
683
|
+
if (!is_workflow_destination(destination) || is_marked(text)) return text;
|
|
684
|
+
return `${marker_block(package_name)}${text}`;
|
|
685
|
+
}
|
|
686
|
+
var managed_marker_logic = {
|
|
687
|
+
MARKER_TOKEN,
|
|
688
|
+
MARKER_PREFIX,
|
|
689
|
+
is_marked,
|
|
690
|
+
apply_marker_for_destination
|
|
691
|
+
};
|
|
692
|
+
|
|
693
|
+
// scripts/sync/directory-copy-guard.ts
|
|
694
|
+
import { cpSync, lstatSync as lstatSync2, readdirSync as readdirSync2, readFileSync as readFileSync7 } from "node:fs";
|
|
695
|
+
import path10 from "node:path";
|
|
696
|
+
|
|
697
|
+
// scripts/sync/workflow-pin-logic.ts
|
|
698
|
+
import { readdirSync, readFileSync as readFileSync6 } from "node:fs";
|
|
699
|
+
import path7 from "node:path";
|
|
700
|
+
var RUNTIME_WORKFLOWS_DIR = ".github/workflows";
|
|
701
|
+
var TEMPLATE_WORKFLOWS_DIR = "templates/workflows";
|
|
702
|
+
var USES_KEY = "uses:";
|
|
703
|
+
var YAML_PATTERN = /\.ya?ml$/u;
|
|
704
|
+
var SYNC_HINT = " Run `pnpm josh sync-workflow-pins` to sync template workflow pins.";
|
|
705
|
+
function parse_uses_line(line) {
|
|
706
|
+
const key_index = line.indexOf(USES_KEY);
|
|
707
|
+
if (key_index === -1 || line.slice(0, key_index).trim() !== "") return void 0;
|
|
708
|
+
const value = line.slice(key_index + USES_KEY.length).trim();
|
|
709
|
+
const at_index = value.indexOf("@");
|
|
710
|
+
if (at_index === -1) return void 0;
|
|
711
|
+
return { name: value.slice(0, at_index), ref: value.slice(at_index + 1) };
|
|
712
|
+
}
|
|
713
|
+
function conflict_message(name, existing, found, file) {
|
|
714
|
+
return `Action ${name} pinned to conflicting refs in .github/workflows: "${existing}" vs "${found}" (${file})`;
|
|
715
|
+
}
|
|
716
|
+
function add_pin(pins, pin, file) {
|
|
717
|
+
const existing = pins.get(pin.name);
|
|
718
|
+
if (existing !== void 0 && existing !== pin.ref) {
|
|
719
|
+
throw new Error(conflict_message(pin.name, existing, pin.ref, file));
|
|
720
|
+
}
|
|
721
|
+
pins.set(pin.name, pin.ref);
|
|
722
|
+
}
|
|
723
|
+
function collect_into(pins, source) {
|
|
724
|
+
for (const line of source.text.split("\n")) {
|
|
725
|
+
const pin = parse_uses_line(line);
|
|
726
|
+
if (pin) add_pin(pins, pin, source.file);
|
|
727
|
+
}
|
|
728
|
+
}
|
|
729
|
+
function collect_canonical(sources) {
|
|
730
|
+
const pins = /* @__PURE__ */ new Map();
|
|
731
|
+
for (const source of sources) collect_into(pins, source);
|
|
732
|
+
return pins;
|
|
733
|
+
}
|
|
734
|
+
function drift_for_line(template, line, index, canonical) {
|
|
735
|
+
const pin = parse_uses_line(line);
|
|
736
|
+
if (!pin) return void 0;
|
|
737
|
+
const want = canonical.get(pin.name);
|
|
738
|
+
if (want === void 0 || want === pin.ref) return void 0;
|
|
739
|
+
return { template, line: index + 1, action: pin.name, from: pin.ref, to: want };
|
|
740
|
+
}
|
|
741
|
+
function find_drift_in_text(template, text, canonical) {
|
|
742
|
+
const drifts = [];
|
|
743
|
+
for (const [index, line] of text.split("\n").entries()) {
|
|
744
|
+
const drift = drift_for_line(template, line, index, canonical);
|
|
745
|
+
if (drift) drifts.push(drift);
|
|
746
|
+
}
|
|
747
|
+
return drifts;
|
|
748
|
+
}
|
|
749
|
+
function rewrite_line(line, canonical) {
|
|
750
|
+
const pin = parse_uses_line(line);
|
|
751
|
+
if (!pin) return line;
|
|
752
|
+
const want = canonical.get(pin.name);
|
|
753
|
+
if (want === void 0 || want === pin.ref) return line;
|
|
754
|
+
const key_index = line.indexOf(USES_KEY);
|
|
755
|
+
return `${line.slice(0, key_index)}${USES_KEY} ${pin.name}@${want}`;
|
|
756
|
+
}
|
|
757
|
+
function apply_to_text(text, canonical) {
|
|
758
|
+
return text.split("\n").map((line) => rewrite_line(line, canonical)).join("\n");
|
|
759
|
+
}
|
|
760
|
+
function read_source(relative_directory, name) {
|
|
761
|
+
const file = path7.join(relative_directory, name);
|
|
762
|
+
return { file, text: readFileSync6(package_path(file), "utf8") };
|
|
763
|
+
}
|
|
764
|
+
function list_workflow_sources(relative_directory) {
|
|
765
|
+
return readdirSync(package_path(relative_directory)).filter((name) => YAML_PATTERN.test(name)).toSorted((left, right) => left.localeCompare(right)).map((name) => read_source(relative_directory, name));
|
|
766
|
+
}
|
|
767
|
+
function list_composite_action_sources() {
|
|
768
|
+
return composite_actions.list(package_path).map((file) => ({ file, text: readFileSync6(package_path(file), "utf8") }));
|
|
769
|
+
}
|
|
770
|
+
function build_canonical_pins() {
|
|
771
|
+
return collect_canonical([
|
|
772
|
+
...list_workflow_sources(RUNTIME_WORKFLOWS_DIR),
|
|
773
|
+
...list_composite_action_sources()
|
|
774
|
+
]);
|
|
775
|
+
}
|
|
776
|
+
function unknown_actions_in_source(source, canonical) {
|
|
777
|
+
const unknown = [];
|
|
778
|
+
for (const [index, line] of source.text.split("\n").entries()) {
|
|
779
|
+
const pin = parse_uses_line(line);
|
|
780
|
+
if (pin && !canonical.has(pin.name)) {
|
|
781
|
+
unknown.push({ template: source.file, line: index + 1, action: pin.name });
|
|
782
|
+
}
|
|
783
|
+
}
|
|
784
|
+
return unknown;
|
|
785
|
+
}
|
|
786
|
+
function apply_pins_for_destination(destination, text) {
|
|
787
|
+
if (!is_workflow_destination(destination)) return text;
|
|
788
|
+
return apply_to_text(text, build_canonical_pins());
|
|
789
|
+
}
|
|
790
|
+
function scan_templates(scan) {
|
|
791
|
+
const canonical = build_canonical_pins();
|
|
792
|
+
return list_workflow_sources(TEMPLATE_WORKFLOWS_DIR).flatMap((source) => scan(source, canonical));
|
|
793
|
+
}
|
|
794
|
+
function find_unknown_template_actions() {
|
|
795
|
+
return scan_templates(unknown_actions_in_source);
|
|
796
|
+
}
|
|
797
|
+
function format_drift_message(drifts) {
|
|
798
|
+
const lines = drifts.map(
|
|
799
|
+
(drift) => ` - ${drift.template}:${String(drift.line)} ${drift.action}: ${drift.from} \u2192 ${drift.to}`
|
|
800
|
+
);
|
|
801
|
+
return [
|
|
802
|
+
"\u2716 Template workflow action pins drifted from .github/workflows:",
|
|
803
|
+
...lines,
|
|
804
|
+
SYNC_HINT
|
|
805
|
+
].join("\n");
|
|
806
|
+
}
|
|
807
|
+
var workflow_pin_logic = {
|
|
808
|
+
RUNTIME_WORKFLOWS_DIR,
|
|
809
|
+
parse_uses_line,
|
|
810
|
+
collect_canonical,
|
|
811
|
+
find_drift_in_text,
|
|
812
|
+
apply_to_text,
|
|
813
|
+
is_workflow_destination,
|
|
814
|
+
apply_pins_for_destination,
|
|
815
|
+
build_canonical_pins,
|
|
816
|
+
find_unknown_template_actions,
|
|
817
|
+
format_drift_message
|
|
818
|
+
};
|
|
819
|
+
|
|
820
|
+
// scripts/init/claude-plugin-config.ts
|
|
821
|
+
import path8 from "node:path";
|
|
822
|
+
var MARKETPLACE_NAME = "kit";
|
|
823
|
+
var PLUGIN_ID = "kit@kit";
|
|
824
|
+
var MARKETPLACE_PATH = "./node_modules/@joshuafolkken/kit";
|
|
825
|
+
var CLAUDE_SETTINGS_DESTINATION = path8.join(".claude", "settings.json");
|
|
826
|
+
var PLUGIN_SETTINGS = {
|
|
827
|
+
extraKnownMarketplaces: {
|
|
828
|
+
[MARKETPLACE_NAME]: { source: { source: "directory", path: MARKETPLACE_PATH } }
|
|
829
|
+
},
|
|
830
|
+
enabledPlugins: { [PLUGIN_ID]: true }
|
|
831
|
+
};
|
|
832
|
+
function inject_plugin_config(content) {
|
|
833
|
+
return init_logic_json_merge.merge_json_object(content, PLUGIN_SETTINGS);
|
|
834
|
+
}
|
|
835
|
+
function apply_plugin_config_for_destination(destination_path, content) {
|
|
836
|
+
return destination_path.endsWith(CLAUDE_SETTINGS_DESTINATION) ? inject_plugin_config(content) : content;
|
|
837
|
+
}
|
|
838
|
+
var claude_plugin_config = {
|
|
839
|
+
PLUGIN_ID,
|
|
840
|
+
MARKETPLACE_PATH,
|
|
841
|
+
CLAUDE_SETTINGS_DESTINATION,
|
|
842
|
+
inject_plugin_config,
|
|
843
|
+
apply_plugin_config_for_destination
|
|
844
|
+
};
|
|
845
|
+
|
|
846
|
+
// scripts/init/claude-kit-only-settings.ts
|
|
847
|
+
var KIT_ONLY_SETTING_KEYS = ["enableArtifact"];
|
|
848
|
+
function strip_kit_only_settings(content) {
|
|
849
|
+
let stripped = content;
|
|
850
|
+
for (const key of KIT_ONLY_SETTING_KEYS) stripped = patch_json_key.remove_json_key(stripped, key);
|
|
851
|
+
return stripped;
|
|
852
|
+
}
|
|
853
|
+
function apply_kit_only_strip_for_destination(destination_path, content) {
|
|
854
|
+
return destination_path.endsWith(claude_plugin_config.CLAUDE_SETTINGS_DESTINATION) ? strip_kit_only_settings(content) : content;
|
|
855
|
+
}
|
|
856
|
+
var claude_kit_only_settings = {
|
|
857
|
+
KIT_ONLY_SETTING_KEYS,
|
|
858
|
+
strip_kit_only_settings,
|
|
859
|
+
apply_kit_only_strip_for_destination
|
|
860
|
+
};
|
|
861
|
+
|
|
862
|
+
// scripts/init/hook-command-rewrite.ts
|
|
863
|
+
var PNPM_JOSH_PREFIX = "pnpm josh ";
|
|
864
|
+
var { MARKETPLACE_PATH: MARKETPLACE_PATH2 } = claude_plugin_config;
|
|
865
|
+
var PACKAGE_PATH = MARKETPLACE_PATH2.replace(/^\.\//u, "");
|
|
866
|
+
var INSTALLED_LAUNCHER = `${PACKAGE_PATH}/${hook_launch.RUN_HOOK_SCRIPT}`;
|
|
867
|
+
var INSTALLED_DISPATCHER = `${PACKAGE_PATH}/dist/josh.js`;
|
|
868
|
+
var INSTALLED_MANIFEST = `${PACKAGE_PATH}/package.json`;
|
|
869
|
+
var MISSING_INSTALL_NOTICE = "kit hooks inactive: run pnpm install, then reread CLAUDE.md";
|
|
870
|
+
var CODEX_HOOKS_DESTINATION = ".codex/hooks.json";
|
|
871
|
+
var RELATIVE_RUN_HOOK_INVOCATION = `sh ${hook_launch.RUN_HOOK_SCRIPT} `;
|
|
872
|
+
var RELATIVE_CONSUMER_RUN_HOOK_INVOCATION = `sh ${MARKETPLACE_PATH2}/${hook_launch.RUN_HOOK_SCRIPT} `;
|
|
873
|
+
var RELATIVE_BUNDLE_INVOCATION = `node ${MARKETPLACE_PATH2}/dist/josh.js `;
|
|
874
|
+
var RELATIVE_INSTALL_GUARD = `if [ ! -f ${MARKETPLACE_PATH2}/package.json ]; then echo '${MISSING_INSTALL_NOTICE}' >&2; exit 0; fi; `;
|
|
875
|
+
var LOCATION_VARIABLES = "GIT_ALTERNATE_OBJECT_DIRECTORIES GIT_COMMON_DIR GIT_DIR GIT_INDEX_FILE GIT_NAMESPACE GIT_OBJECT_DIRECTORY GIT_WORK_TREE";
|
|
876
|
+
var ROOT_LOOKUP = "git rev-parse --show-toplevel";
|
|
877
|
+
var LOCATION_FREE_ROOT = `$( (unset ${LOCATION_VARIABLES}; ${ROOT_LOOKUP} 2>/dev/null) || ${ROOT_LOOKUP})`;
|
|
878
|
+
var ROOT_PREFIXES = [
|
|
879
|
+
`export JOSH_HOOK_CWD="$PWD" && project_root="\${CLAUDE_PROJECT_DIR:-${LOCATION_FREE_ROOT}}" && cd "$project_root" && `,
|
|
880
|
+
`project_root="\${CLAUDE_PROJECT_DIR:-${LOCATION_FREE_ROOT}}" && cd "$project_root" && `,
|
|
881
|
+
`if project_root="$(unset ${LOCATION_VARIABLES}; ${ROOT_LOOKUP} 2>/dev/null)"; then unset ${LOCATION_VARIABLES}; else project_root="$(${ROOT_LOOKUP})"; fi && cd "$project_root" && `
|
|
882
|
+
];
|
|
883
|
+
var PLAIN_KIT_COMMANDS = new Set(
|
|
884
|
+
[
|
|
885
|
+
"audit:provision",
|
|
886
|
+
"batch:guard",
|
|
887
|
+
"format:edited",
|
|
888
|
+
"investigation:guard",
|
|
889
|
+
"rule:guard",
|
|
890
|
+
"session:lang"
|
|
891
|
+
].map((command) => `${PNPM_JOSH_PREFIX}${command}`)
|
|
892
|
+
);
|
|
893
|
+
var KIT_COMMAND_MARKERS = [
|
|
894
|
+
`/${hook_launch.RUN_HOOK_SCRIPT}" `,
|
|
895
|
+
`/${INSTALLED_DISPATCHER}" `,
|
|
896
|
+
RELATIVE_RUN_HOOK_INVOCATION,
|
|
897
|
+
RELATIVE_CONSUMER_RUN_HOOK_INVOCATION,
|
|
898
|
+
RELATIVE_BUNDLE_INVOCATION
|
|
899
|
+
];
|
|
900
|
+
var COMMAND_FIELD = /("command":\s*")((?:[^"\\]|\\.)*)(")/gu;
|
|
901
|
+
function install_guard(root) {
|
|
902
|
+
const manifest = hook_launch.rooted_path(root, INSTALLED_MANIFEST);
|
|
903
|
+
return `if [ ! -f ${manifest} ]; then echo '${MISSING_INSTALL_NOTICE}' >&2; exit 0; fi; `;
|
|
904
|
+
}
|
|
905
|
+
function launch_part(command, root) {
|
|
906
|
+
const prefix = ROOT_PREFIXES.find((candidate) => command.startsWith(candidate)) ?? "";
|
|
907
|
+
const launch = command.slice(prefix.length);
|
|
908
|
+
const guard = [RELATIVE_INSTALL_GUARD, install_guard(root)].find(
|
|
909
|
+
(candidate) => launch.startsWith(candidate)
|
|
910
|
+
);
|
|
911
|
+
return launch.slice(guard?.length ?? 0);
|
|
912
|
+
}
|
|
913
|
+
function rebased(launch, root) {
|
|
914
|
+
const consumer_launch = `sh ${hook_launch.rooted_path(root, INSTALLED_LAUNCHER)} `;
|
|
915
|
+
const bundle_launch = `node ${hook_launch.rooted_path(root, INSTALLED_DISPATCHER)} `;
|
|
916
|
+
const replacements = [
|
|
917
|
+
[`sh ${hook_launch.rooted_path(root, hook_launch.RUN_HOOK_SCRIPT)} `, consumer_launch],
|
|
918
|
+
[RELATIVE_CONSUMER_RUN_HOOK_INVOCATION, consumer_launch],
|
|
919
|
+
[RELATIVE_RUN_HOOK_INVOCATION, consumer_launch],
|
|
920
|
+
[RELATIVE_BUNDLE_INVOCATION, bundle_launch],
|
|
921
|
+
[PNPM_JOSH_PREFIX, bundle_launch]
|
|
922
|
+
];
|
|
923
|
+
let text = launch;
|
|
924
|
+
for (const [from, to] of replacements) text = text.split(from).join(to);
|
|
925
|
+
return text;
|
|
926
|
+
}
|
|
927
|
+
function rewrite_command(command, root) {
|
|
928
|
+
const rewritten = rebased(launch_part(command, root), root);
|
|
929
|
+
return rewritten.includes(PACKAGE_PATH) ? `${install_guard(root)}${rewritten}` : rewritten;
|
|
930
|
+
}
|
|
931
|
+
function rewrite_command_value(value, root) {
|
|
932
|
+
const command = JSON.parse(`"${value}"`);
|
|
933
|
+
const rewritten = rewrite_command(command, root);
|
|
934
|
+
return rewritten === command ? value : JSON.stringify(rewritten).slice(1, -1);
|
|
935
|
+
}
|
|
936
|
+
function rewrite_hook_commands(content, is_codex = false) {
|
|
937
|
+
const root = is_codex ? hook_launch.CODEX_ROOT : hook_launch.CLAUDE_ROOT;
|
|
938
|
+
return content.replaceAll(
|
|
939
|
+
COMMAND_FIELD,
|
|
940
|
+
(_match, open, value, close) => `${open}${rewrite_command_value(value, root)}${close}`
|
|
941
|
+
);
|
|
942
|
+
}
|
|
943
|
+
function apply_hook_command_rewrite_for_destination(destination_path, content) {
|
|
944
|
+
if (destination_path.endsWith(CODEX_HOOKS_DESTINATION)) {
|
|
945
|
+
return rewrite_hook_commands(content, true);
|
|
946
|
+
}
|
|
947
|
+
if (destination_path.endsWith(claude_plugin_config.CLAUDE_SETTINGS_DESTINATION)) {
|
|
948
|
+
return rewrite_hook_commands(content);
|
|
949
|
+
}
|
|
950
|
+
return content;
|
|
951
|
+
}
|
|
952
|
+
function is_kit_hook_command(command) {
|
|
953
|
+
if (PLAIN_KIT_COMMANDS.has(command)) return true;
|
|
954
|
+
return KIT_COMMAND_MARKERS.some((marker) => command.includes(marker));
|
|
955
|
+
}
|
|
956
|
+
var hook_command_rewrite = {
|
|
957
|
+
apply_hook_command_rewrite_for_destination,
|
|
958
|
+
is_kit_hook_command,
|
|
959
|
+
rewrite_hook_commands
|
|
960
|
+
};
|
|
961
|
+
|
|
962
|
+
// scripts/init/security-policy.ts
|
|
963
|
+
import path9 from "node:path";
|
|
964
|
+
var SECURITY_MD = "SECURITY.md";
|
|
965
|
+
var SECURITY_TEMPLATE = "templates/SECURITY.md";
|
|
966
|
+
var REPOSITORY_PLACEHOLDER = "{{REPOSITORY}}";
|
|
967
|
+
var KIT_ADVISORY_URL = "https://github.com/joshuafolkken/kit/security/advisories/new";
|
|
968
|
+
var UNRESOLVED_REASON = "`origin` is not a GitHub repository `owner/repo` can be read from";
|
|
969
|
+
var LINK_DELIMITER = /[\s()<>[\]]+/u;
|
|
970
|
+
function repository_at(root) {
|
|
971
|
+
const url = git_spawn_sync.origin_url(root);
|
|
972
|
+
const identity = url === void 0 ? void 0 : repo_origin.parse_origin_url(url);
|
|
973
|
+
return identity === void 0 ? void 0 : `${identity.owner}/${identity.repo}`;
|
|
974
|
+
}
|
|
975
|
+
function apply_repository(content, repository) {
|
|
976
|
+
return content.replaceAll(REPOSITORY_PLACEHOLDER, () => repository);
|
|
977
|
+
}
|
|
978
|
+
function apply_repository_for_destination(destination_path, content) {
|
|
979
|
+
if (path9.basename(destination_path) !== SECURITY_MD) return content;
|
|
980
|
+
const repository = repository_at(path9.dirname(destination_path));
|
|
981
|
+
if (repository === void 0) {
|
|
982
|
+
throw new Error(`${SECURITY_MD} needs a GitHub origin to name the repository it reports to`);
|
|
983
|
+
}
|
|
984
|
+
return apply_repository(content, repository);
|
|
985
|
+
}
|
|
986
|
+
function does_report_to_kit(root) {
|
|
987
|
+
const existing = file_reader.read_if_readable(path9.join(root, SECURITY_MD)) ?? "";
|
|
988
|
+
return new Set(existing.split(LINK_DELIMITER)).has(KIT_ADVISORY_URL);
|
|
989
|
+
}
|
|
990
|
+
function unresolved_warning(root) {
|
|
991
|
+
if (!does_report_to_kit(root)) return ` \u26A0 skipped ${SECURITY_MD} (${UNRESOLVED_REASON})`;
|
|
992
|
+
return ` \u26A0 stale ${SECURITY_MD} still reports vulnerabilities to joshuafolkken/kit \u2014 replace it with your own policy or delete it (${UNRESOLVED_REASON})`;
|
|
993
|
+
}
|
|
994
|
+
function did_skip_unresolved(filename, root) {
|
|
995
|
+
if (filename !== SECURITY_MD || repository_at(root) !== void 0) return false;
|
|
996
|
+
console.warn(unresolved_warning(root));
|
|
997
|
+
return true;
|
|
998
|
+
}
|
|
999
|
+
var security_policy = {
|
|
1000
|
+
SECURITY_MD,
|
|
1001
|
+
SECURITY_TEMPLATE,
|
|
1002
|
+
REPOSITORY_PLACEHOLDER,
|
|
1003
|
+
KIT_ADVISORY_URL,
|
|
1004
|
+
repository_at,
|
|
1005
|
+
apply_repository_for_destination,
|
|
1006
|
+
did_skip_unresolved
|
|
1007
|
+
};
|
|
1008
|
+
|
|
1009
|
+
// scripts/init/init-copy-content.ts
|
|
1010
|
+
function transform_copied_content(destination_path, content) {
|
|
1011
|
+
const with_paths = init_logic.transform_distributed_paths(content);
|
|
1012
|
+
const with_pins = workflow_pin_logic.apply_pins_for_destination(destination_path, with_paths);
|
|
1013
|
+
const with_marker = managed_marker_logic.apply_marker_for_destination(
|
|
1014
|
+
destination_path,
|
|
1015
|
+
with_pins,
|
|
1016
|
+
KIT_PACKAGE_NAME
|
|
1017
|
+
);
|
|
1018
|
+
const with_kit_only_stripped = claude_kit_only_settings.apply_kit_only_strip_for_destination(
|
|
1019
|
+
destination_path,
|
|
1020
|
+
with_marker
|
|
1021
|
+
);
|
|
1022
|
+
const with_plugin = claude_plugin_config.apply_plugin_config_for_destination(
|
|
1023
|
+
destination_path,
|
|
1024
|
+
with_kit_only_stripped
|
|
1025
|
+
);
|
|
1026
|
+
const with_hooks = hook_command_rewrite.apply_hook_command_rewrite_for_destination(
|
|
1027
|
+
destination_path,
|
|
1028
|
+
with_plugin
|
|
1029
|
+
);
|
|
1030
|
+
return security_policy.apply_repository_for_destination(destination_path, with_hooks);
|
|
1031
|
+
}
|
|
1032
|
+
|
|
1033
|
+
// scripts/sync/directory-copy-guard.ts
|
|
1034
|
+
function classify_path(candidate_path) {
|
|
1035
|
+
try {
|
|
1036
|
+
return lstatSync2(candidate_path).isDirectory() ? "directory" : "other";
|
|
1037
|
+
} catch (error) {
|
|
1038
|
+
return file_reader.is_absent(error) ? "absent" : "other";
|
|
1039
|
+
}
|
|
1040
|
+
}
|
|
1041
|
+
function directory_copy_blocker(source_path, destination_path) {
|
|
1042
|
+
if (classify_path(source_path) !== "directory") return "missing from the installed package";
|
|
1043
|
+
if (path10.resolve(source_path) === path10.resolve(destination_path)) {
|
|
1044
|
+
return "already the package's own copy";
|
|
1045
|
+
}
|
|
1046
|
+
return classify_path(destination_path) === "other" ? "destination is not a directory" : void 0;
|
|
1047
|
+
}
|
|
1048
|
+
var TRANSFORMED_EXTENSION = ".md";
|
|
1049
|
+
function is_regular_file(candidate_path) {
|
|
1050
|
+
try {
|
|
1051
|
+
return lstatSync2(candidate_path).isFile();
|
|
1052
|
+
} catch {
|
|
1053
|
+
return false;
|
|
1054
|
+
}
|
|
1055
|
+
}
|
|
1056
|
+
function is_transformable(candidate_path) {
|
|
1057
|
+
return candidate_path.endsWith(TRANSFORMED_EXTENSION) && is_regular_file(candidate_path);
|
|
1058
|
+
}
|
|
1059
|
+
function transform_copied_file(file_path) {
|
|
1060
|
+
const content = readFileSync7(file_path, "utf8");
|
|
1061
|
+
const transformed = transform_copied_content(file_path, content);
|
|
1062
|
+
if (transformed !== content) file_content.write_contained(file_path, transformed);
|
|
1063
|
+
}
|
|
1064
|
+
function transform_copied_tree(source_path, destination_path) {
|
|
1065
|
+
const entries = readdirSync2(source_path, { encoding: "utf8", recursive: true });
|
|
1066
|
+
for (const entry of entries) {
|
|
1067
|
+
if (!is_transformable(path10.join(source_path, entry))) continue;
|
|
1068
|
+
transform_copied_file(path10.join(destination_path, entry));
|
|
1069
|
+
}
|
|
1070
|
+
}
|
|
1071
|
+
function should_copy_entry(source_path, destination_path) {
|
|
1072
|
+
if (!is_regular_file(source_path)) return true;
|
|
1073
|
+
if (classify_path(destination_path) === "directory") {
|
|
1074
|
+
throw new Error("destination is a directory where the package has a file");
|
|
1075
|
+
}
|
|
1076
|
+
const source_content = readFileSync7(source_path);
|
|
1077
|
+
const content = source_path.endsWith(TRANSFORMED_EXTENSION) ? transform_copied_content(destination_path, source_content.toString("utf8")) : source_content;
|
|
1078
|
+
return !file_content.is_same_file_content(destination_path, content);
|
|
1079
|
+
}
|
|
1080
|
+
function is_changed_entry(source_entry, destination_entry, root) {
|
|
1081
|
+
if (source_entry === root) return false;
|
|
1082
|
+
if (is_regular_file(source_entry)) return true;
|
|
1083
|
+
return classify_path(destination_entry) === "absent";
|
|
1084
|
+
}
|
|
1085
|
+
function copy_directory(source_path, destination_path) {
|
|
1086
|
+
let did_change = false;
|
|
1087
|
+
cpSync(source_path, destination_path, {
|
|
1088
|
+
recursive: true,
|
|
1089
|
+
filter: (source_entry, destination_entry) => {
|
|
1090
|
+
const should_copy = should_copy_entry(source_entry, destination_entry);
|
|
1091
|
+
if (should_copy && is_changed_entry(source_entry, destination_entry, source_path)) {
|
|
1092
|
+
did_change = true;
|
|
1093
|
+
}
|
|
1094
|
+
return should_copy;
|
|
1095
|
+
}
|
|
1096
|
+
});
|
|
1097
|
+
return did_change;
|
|
1098
|
+
}
|
|
1099
|
+
function failure_message(prefix, error) {
|
|
1100
|
+
return `${prefix} (${error_text.message_of(error)})`;
|
|
1101
|
+
}
|
|
1102
|
+
function copy_directory_failure(source_path, destination_path, on_copy) {
|
|
1103
|
+
let did_change = false;
|
|
1104
|
+
try {
|
|
1105
|
+
did_change ||= copy_directory(source_path, destination_path);
|
|
1106
|
+
} catch (error) {
|
|
1107
|
+
return failure_message("copy failed", error);
|
|
1108
|
+
}
|
|
1109
|
+
try {
|
|
1110
|
+
transform_copied_tree(source_path, destination_path);
|
|
1111
|
+
} catch (error) {
|
|
1112
|
+
return failure_message("copied but left partly un-rewritten \u2014 re-run the sync", error);
|
|
1113
|
+
}
|
|
1114
|
+
on_copy?.(did_change);
|
|
1115
|
+
return void 0;
|
|
1116
|
+
}
|
|
1117
|
+
|
|
1118
|
+
// scripts/init/init-sonar.ts
|
|
1119
|
+
import { existsSync as existsSync5 } from "node:fs";
|
|
1120
|
+
import path11 from "node:path";
|
|
1121
|
+
|
|
1122
|
+
// scripts/security/sonar-file.ts
|
|
1123
|
+
import { existsSync as existsSync4, readFileSync as readFileSync8 } from "node:fs";
|
|
1124
|
+
function write_sonar_file(template_source, destination_path, identifiers) {
|
|
1125
|
+
const content = init_logic.apply_sonar_template(
|
|
1126
|
+
readFileSync8(template_source, "utf8"),
|
|
1127
|
+
identifiers.project_key,
|
|
1128
|
+
identifiers.organization
|
|
1129
|
+
);
|
|
1130
|
+
file_content.write_contained(destination_path, content);
|
|
1131
|
+
}
|
|
1132
|
+
function merge_sonar_file(template_source, destination_path, identifiers) {
|
|
1133
|
+
if (!existsSync4(destination_path)) {
|
|
1134
|
+
write_sonar_file(template_source, destination_path, identifiers);
|
|
1135
|
+
return;
|
|
1136
|
+
}
|
|
1137
|
+
const template_content = init_logic.apply_sonar_template(
|
|
1138
|
+
readFileSync8(template_source, "utf8"),
|
|
1139
|
+
identifiers.project_key,
|
|
1140
|
+
identifiers.organization
|
|
1141
|
+
);
|
|
1142
|
+
const existing = readFileSync8(destination_path, "utf8");
|
|
1143
|
+
file_content.write_contained(
|
|
1144
|
+
destination_path,
|
|
1145
|
+
init_logic.merge_sonar_properties(existing, template_content)
|
|
1146
|
+
);
|
|
1147
|
+
}
|
|
1148
|
+
var sonar_file = { write_sonar_file, merge_sonar_file };
|
|
1149
|
+
|
|
1150
|
+
// scripts/init/init-sonar.ts
|
|
1151
|
+
function copy_sonar_with_template(name_with_owner) {
|
|
1152
|
+
const destination = init_logic.get_sonar_template_destination();
|
|
1153
|
+
if (name_with_owner === void 0) {
|
|
1154
|
+
console.warn(` \u26A0 skipped ${destination} (gh repo view failed)`);
|
|
1155
|
+
return;
|
|
1156
|
+
}
|
|
1157
|
+
const destination_path = path11.join(PROJECT_ROOT, destination);
|
|
1158
|
+
const is_existing = existsSync5(destination_path);
|
|
1159
|
+
const identifiers = init_logic.derive_sonar_identifiers(name_with_owner);
|
|
1160
|
+
sonar_file.merge_sonar_file(
|
|
1161
|
+
path11.join(PACKAGE_DIR, init_logic.get_sonar_template_source()),
|
|
1162
|
+
destination_path,
|
|
1163
|
+
identifiers
|
|
1164
|
+
);
|
|
1165
|
+
console.info(` \u2714 ${is_existing ? "updated" : "created"} ${destination}`);
|
|
1166
|
+
}
|
|
1167
|
+
var init_sonar = {
|
|
1168
|
+
copy_sonar_with_template
|
|
1169
|
+
};
|
|
1170
|
+
|
|
1171
|
+
// scripts/init/init-ai-copy.ts
|
|
1172
|
+
var WORKSPACE_YAML = "pnpm-workspace.yaml";
|
|
1173
|
+
var CLAUDE_MD_FILENAME = "CLAUDE.md";
|
|
1174
|
+
var BASIC_CLAUDE_IMPORT = "@node_modules/@joshuafolkken/kit/dist/CLAUDE.basic.md";
|
|
1175
|
+
var PRETTIER_IGNORE = ".prettierignore";
|
|
1176
|
+
var GIT_ATTRIBUTES = ".gitattributes";
|
|
1177
|
+
var CODE_OF_CONDUCT = "CODE_OF_CONDUCT.md";
|
|
1178
|
+
var { SECURITY_MD: SECURITY_MD2 } = security_policy;
|
|
1179
|
+
var AGENTS_MD = "AGENTS.md";
|
|
1180
|
+
var GEMINI_MD = "GEMINI.md";
|
|
1181
|
+
var BASIC_AI_FILES = [
|
|
1182
|
+
AGENTS_MD,
|
|
1183
|
+
GEMINI_MD,
|
|
1184
|
+
PRETTIER_IGNORE,
|
|
1185
|
+
GIT_ATTRIBUTES,
|
|
1186
|
+
CODE_OF_CONDUCT,
|
|
1187
|
+
SECURITY_MD2,
|
|
1188
|
+
WORKSPACE_YAML
|
|
1189
|
+
];
|
|
1190
|
+
var BASIC_SOURCES = {
|
|
1191
|
+
[AGENTS_MD]: "templates/AGENTS.basic.md",
|
|
1192
|
+
[GEMINI_MD]: "templates/GEMINI.basic.md",
|
|
1193
|
+
[PRETTIER_IGNORE]: "templates/prettierignore.basic",
|
|
1194
|
+
[WORKSPACE_YAML]: "templates/pnpm-workspace.basic.yaml"
|
|
1195
|
+
};
|
|
1196
|
+
var CONSUMER_SOURCES = {
|
|
1197
|
+
[SECURITY_MD2]: security_policy.SECURITY_TEMPLATE
|
|
1198
|
+
};
|
|
1199
|
+
var BASIC_WORKFLOW_AI_FILES = [...BASIC_AI_FILES, ".claude/settings.json"];
|
|
1200
|
+
var GITHUB_FILES = /* @__PURE__ */ new Set([CODE_OF_CONDUCT, SECURITY_MD2]);
|
|
1201
|
+
var BASIC_POINTER_MAPPING = { src: "templates/cursorrules.basic", dest: ".cursorrules" };
|
|
1202
|
+
var PULL_REQUEST_TEMPLATE = ".github/pull_request_template.md";
|
|
1203
|
+
var RELEASE_CONFIG = ".github/release.yml";
|
|
1204
|
+
var BASIC_GITHUB_MAPPINGS = [
|
|
1205
|
+
{ src: PULL_REQUEST_TEMPLATE, dest: PULL_REQUEST_TEMPLATE },
|
|
1206
|
+
{ src: RELEASE_CONFIG, dest: RELEASE_CONFIG }
|
|
1207
|
+
];
|
|
1208
|
+
function did_read_unstamped(destination_path) {
|
|
1209
|
+
try {
|
|
1210
|
+
return !managed_marker_logic.is_marked(readFileSync9(destination_path, "utf8"));
|
|
1211
|
+
} catch {
|
|
1212
|
+
return false;
|
|
1213
|
+
}
|
|
1214
|
+
}
|
|
1215
|
+
function copied_content(source_path, destination_path) {
|
|
1216
|
+
return transform_copied_content(destination_path, readFileSync9(source_path, "utf8"));
|
|
1217
|
+
}
|
|
1218
|
+
function copy_ai_file(source_path, destination_path) {
|
|
1219
|
+
file_content.write_contained(destination_path, copied_content(source_path, destination_path));
|
|
1220
|
+
}
|
|
1221
|
+
function did_warn_unstamped_workflow(destination_path, label) {
|
|
1222
|
+
if (!is_workflow_destination(destination_path) || !did_read_unstamped(destination_path)) {
|
|
1223
|
+
return false;
|
|
1224
|
+
}
|
|
1225
|
+
console.warn(` \u26A0 ${label} has no managed-workflow header \u2014 run josh sync before merging bumps`);
|
|
1226
|
+
return true;
|
|
1227
|
+
}
|
|
1228
|
+
function did_skip_copy_if_absent(source_path, destination_path, label) {
|
|
1229
|
+
if (existsSync6(destination_path)) {
|
|
1230
|
+
console.info(` \u23ED skipped ${label} (already exists)`);
|
|
1231
|
+
did_warn_unstamped_workflow(destination_path, label);
|
|
1232
|
+
return true;
|
|
1233
|
+
}
|
|
1234
|
+
copy_ai_file(source_path, destination_path);
|
|
1235
|
+
console.info(` \u2714 created ${label}`);
|
|
1236
|
+
return false;
|
|
1237
|
+
}
|
|
1238
|
+
function read_workspace_template(source_path, destination_path) {
|
|
1239
|
+
const npmrc = file_reader.read_file_or_empty(path12.join(path12.dirname(destination_path), ".npmrc"));
|
|
1240
|
+
const distributed = init_logic.drop_kit_only_regions(readFileSync9(source_path, "utf8"));
|
|
1241
|
+
return init_logic.carry_npmrc_settings(distributed, npmrc);
|
|
1242
|
+
}
|
|
1243
|
+
function merge_existing_workspace_yaml(source_path, destination_path) {
|
|
1244
|
+
const template = read_workspace_template(source_path, destination_path);
|
|
1245
|
+
const existing = readFileSync9(destination_path, "utf8");
|
|
1246
|
+
const merged = init_logic.merge_workspace_yaml(existing, template);
|
|
1247
|
+
if (merged === existing) {
|
|
1248
|
+
console.info(` \u2714 unchanged ${WORKSPACE_YAML}`);
|
|
1249
|
+
return;
|
|
1250
|
+
}
|
|
1251
|
+
file_content.write_contained(destination_path, merged);
|
|
1252
|
+
console.info(` \u2714 updated ${WORKSPACE_YAML}`);
|
|
1253
|
+
}
|
|
1254
|
+
function workspace_content(source_path, destination_path) {
|
|
1255
|
+
return transform_copied_content(
|
|
1256
|
+
destination_path,
|
|
1257
|
+
read_workspace_template(source_path, destination_path)
|
|
1258
|
+
);
|
|
1259
|
+
}
|
|
1260
|
+
function did_skip_workspace_yaml_copy(source_path, destination_path) {
|
|
1261
|
+
if (existsSync6(destination_path)) {
|
|
1262
|
+
merge_existing_workspace_yaml(source_path, destination_path);
|
|
1263
|
+
return false;
|
|
1264
|
+
}
|
|
1265
|
+
file_content.write_contained(destination_path, workspace_content(source_path, destination_path));
|
|
1266
|
+
console.info(` \u2714 created ${WORKSPACE_YAML}`);
|
|
1267
|
+
return false;
|
|
1268
|
+
}
|
|
1269
|
+
function ai_file_source(filename, shape) {
|
|
1270
|
+
const basic_source = shape?.profile === "basic" ? BASIC_SOURCES[filename] : void 0;
|
|
1271
|
+
return basic_source ?? CONSUMER_SOURCES[filename] ?? filename;
|
|
1272
|
+
}
|
|
1273
|
+
function did_skip_ai_file_copy(filename, shape) {
|
|
1274
|
+
if (security_policy.did_skip_unresolved(filename, PROJECT_ROOT)) return false;
|
|
1275
|
+
const source_path = package_path(ai_file_source(filename, shape));
|
|
1276
|
+
const destination_path = path12.join(PROJECT_ROOT, filename);
|
|
1277
|
+
if (filename === WORKSPACE_YAML) {
|
|
1278
|
+
return did_skip_workspace_yaml_copy(source_path, destination_path);
|
|
1279
|
+
}
|
|
1280
|
+
return did_skip_copy_if_absent(source_path, destination_path, filename);
|
|
1281
|
+
}
|
|
1282
|
+
function did_skip_ai_file_mapping(source, destination) {
|
|
1283
|
+
return did_skip_copy_if_absent(
|
|
1284
|
+
package_path(source),
|
|
1285
|
+
path12.join(PROJECT_ROOT, destination),
|
|
1286
|
+
destination
|
|
1287
|
+
);
|
|
1288
|
+
}
|
|
1289
|
+
function directory_copy_skip(source_path, destination_path) {
|
|
1290
|
+
const blocker = directory_copy_blocker(source_path, destination_path);
|
|
1291
|
+
if (blocker !== void 0) return { reason: blocker, is_blocked: true };
|
|
1292
|
+
if (classify_path(destination_path) !== "absent") {
|
|
1293
|
+
return { reason: "already exists \u2014 run josh sync to update", is_blocked: false };
|
|
1294
|
+
}
|
|
1295
|
+
return void 0;
|
|
1296
|
+
}
|
|
1297
|
+
function report_directory_skip(directory_name, skip) {
|
|
1298
|
+
const line = `${directory_name}/ (${skip.reason})`;
|
|
1299
|
+
if (skip.is_blocked) console.warn(` \u26A0 skipped ${line}`);
|
|
1300
|
+
else console.info(` \u23ED skipped ${line}`);
|
|
1301
|
+
}
|
|
1302
|
+
function did_copy_directory(directory_name) {
|
|
1303
|
+
const failure = copy_directory_failure(
|
|
1304
|
+
package_path(directory_name),
|
|
1305
|
+
path12.join(PROJECT_ROOT, directory_name)
|
|
1306
|
+
);
|
|
1307
|
+
if (failure !== void 0) {
|
|
1308
|
+
console.warn(` \u26A0 skipped ${directory_name}/ (${failure})`);
|
|
1309
|
+
return false;
|
|
1310
|
+
}
|
|
1311
|
+
console.info(` \u2714 created ${directory_name}/`);
|
|
1312
|
+
return true;
|
|
1313
|
+
}
|
|
1314
|
+
function did_skip_ai_directory_copy(directory_name) {
|
|
1315
|
+
const skip = directory_copy_skip(
|
|
1316
|
+
package_path(directory_name),
|
|
1317
|
+
path12.join(PROJECT_ROOT, directory_name)
|
|
1318
|
+
);
|
|
1319
|
+
if (skip === void 0) {
|
|
1320
|
+
did_copy_directory(directory_name);
|
|
1321
|
+
return false;
|
|
1322
|
+
}
|
|
1323
|
+
report_directory_skip(directory_name, skip);
|
|
1324
|
+
return !skip.is_blocked;
|
|
1325
|
+
}
|
|
1326
|
+
function basic_claude_md() {
|
|
1327
|
+
return `> If kit is not installed, run \`pnpm install\` first.
|
|
1328
|
+
|
|
1329
|
+
${BASIC_CLAUDE_IMPORT}
|
|
1330
|
+
`;
|
|
1331
|
+
}
|
|
1332
|
+
function ensure_basic_claude_md(existing) {
|
|
1333
|
+
if (existing === void 0) return basic_claude_md();
|
|
1334
|
+
const kept = distributed_paths.remove_claude_md_import(existing);
|
|
1335
|
+
if (kept.includes(BASIC_CLAUDE_IMPORT)) return kept;
|
|
1336
|
+
return kept === "" ? basic_claude_md() : `${basic_claude_md()}
|
|
1337
|
+
${kept}`;
|
|
1338
|
+
}
|
|
1339
|
+
function did_skip_claude_md_import(shape) {
|
|
1340
|
+
const destination_path = path12.join(PROJECT_ROOT, CLAUDE_MD_FILENAME);
|
|
1341
|
+
if (existsSync6(destination_path)) {
|
|
1342
|
+
console.info(` \u23ED skipped ${CLAUDE_MD_FILENAME} (already exists)`);
|
|
1343
|
+
return true;
|
|
1344
|
+
}
|
|
1345
|
+
const content = shape?.profile === "basic" ? basic_claude_md() : init_logic.ensure_claude_md_import(void 0);
|
|
1346
|
+
file_content.write_contained(destination_path, content);
|
|
1347
|
+
console.info(` \u2714 created ${CLAUDE_MD_FILENAME}`);
|
|
1348
|
+
return false;
|
|
1349
|
+
}
|
|
1350
|
+
function should_copy_git_file(filename, shape) {
|
|
1351
|
+
if (shape?.has_git !== false) return true;
|
|
1352
|
+
return filename !== GIT_ATTRIBUTES && !filename.startsWith(".claude/") && !filename.startsWith(".codex/");
|
|
1353
|
+
}
|
|
1354
|
+
function should_copy_github_file(filename, shape) {
|
|
1355
|
+
if (shape?.has_github !== false) return true;
|
|
1356
|
+
return !GITHUB_FILES.has(filename) && !filename.startsWith(".github/");
|
|
1357
|
+
}
|
|
1358
|
+
function should_copy_basic_file(filename, shape) {
|
|
1359
|
+
if (filename !== PRETTIER_IGNORE || shape?.profile !== "basic") return true;
|
|
1360
|
+
return shape.should_use_prettier;
|
|
1361
|
+
}
|
|
1362
|
+
function should_copy_ai_file(filename, shape) {
|
|
1363
|
+
return should_copy_git_file(filename, shape) && should_copy_github_file(filename, shape) && should_copy_basic_file(filename, shape);
|
|
1364
|
+
}
|
|
1365
|
+
function basic_ai_files(shape) {
|
|
1366
|
+
return shape.has_workflow ? BASIC_WORKFLOW_AI_FILES : BASIC_AI_FILES;
|
|
1367
|
+
}
|
|
1368
|
+
function ai_files(shape) {
|
|
1369
|
+
const files = shape?.profile === "basic" ? basic_ai_files(shape) : init_logic.get_ai_copy_files();
|
|
1370
|
+
return files.filter((filename) => should_copy_ai_file(filename, shape));
|
|
1371
|
+
}
|
|
1372
|
+
function copied_files(shape) {
|
|
1373
|
+
return [...ai_files(shape), ...npm_publish_files.files(shape)];
|
|
1374
|
+
}
|
|
1375
|
+
function ai_file_mappings(shape) {
|
|
1376
|
+
const mappings = shape?.profile === "basic" ? [BASIC_POINTER_MAPPING, ...shape.has_github ? BASIC_GITHUB_MAPPINGS : []] : init_logic.get_ai_copy_file_mappings();
|
|
1377
|
+
return mappings.filter(({ dest }) => shape?.has_github !== false || !dest.startsWith(".github/"));
|
|
1378
|
+
}
|
|
1379
|
+
function ai_mapping_skips(shape) {
|
|
1380
|
+
return ai_file_mappings(shape).map(({ src, dest }) => did_skip_ai_file_mapping(src, dest));
|
|
1381
|
+
}
|
|
1382
|
+
function repository_name(shape) {
|
|
1383
|
+
if (shape?.has_github === false || shape?.profile === "basic") return void 0;
|
|
1384
|
+
return gh_spawn.get_repo_name_with_owner();
|
|
1385
|
+
}
|
|
1386
|
+
function report_sync_hint(has_skips, shape) {
|
|
1387
|
+
if (!has_skips || shape?.profile === "basic") return;
|
|
1388
|
+
console.info("\n \u{1F4A1} Run `josh sync` to overwrite skipped AI files with the latest version.");
|
|
1389
|
+
}
|
|
1390
|
+
function run_ai_copies(shape) {
|
|
1391
|
+
const did_skip_claude_md = did_skip_claude_md_import(shape);
|
|
1392
|
+
const file_skips = copied_files(shape).map((filename) => did_skip_ai_file_copy(filename, shape));
|
|
1393
|
+
const mapping_skips = ai_mapping_skips(shape);
|
|
1394
|
+
const directory_skips = init_logic.get_ai_copy_directories().map((directory_name) => did_skip_ai_directory_copy(directory_name));
|
|
1395
|
+
const has_skips = [did_skip_claude_md, ...file_skips, ...mapping_skips, ...directory_skips].some(
|
|
1396
|
+
Boolean
|
|
1397
|
+
);
|
|
1398
|
+
const name_with_owner = repository_name(shape);
|
|
1399
|
+
if (shape?.profile !== "basic") init_sonar.copy_sonar_with_template(name_with_owner);
|
|
1400
|
+
report_sync_hint(has_skips, shape);
|
|
1401
|
+
return name_with_owner;
|
|
1402
|
+
}
|
|
1403
|
+
var init_ai_copy = {
|
|
1404
|
+
copy_ai_file,
|
|
1405
|
+
copied_content,
|
|
1406
|
+
workspace_content,
|
|
1407
|
+
run_ai_copies,
|
|
1408
|
+
ai_files,
|
|
1409
|
+
copied_files,
|
|
1410
|
+
ai_file_source,
|
|
1411
|
+
ai_file_mappings,
|
|
1412
|
+
ensure_basic_claude_md,
|
|
1413
|
+
read_workspace_template
|
|
1414
|
+
};
|
|
1415
|
+
|
|
1416
|
+
// scripts/init/kit-written-paths.ts
|
|
1417
|
+
var LOCKFILE = "pnpm-lock.yaml";
|
|
1418
|
+
var SETUP_ONLY_PATHS = /* @__PURE__ */ new Set([
|
|
1419
|
+
CLAUDE_MD_FILENAME,
|
|
1420
|
+
BASIC_PRETTIER_CONFIG,
|
|
1421
|
+
PROJECT_CONFIG_FILE,
|
|
1422
|
+
PACK_HOOK_FILE,
|
|
1423
|
+
PACKAGE_JSON,
|
|
1424
|
+
LOCKFILE
|
|
1425
|
+
]);
|
|
1426
|
+
function is_kit_written(file_path) {
|
|
1427
|
+
return SETUP_ONLY_PATHS.has(file_path) || managed_config_scope.has_managed_path([file_path]);
|
|
1428
|
+
}
|
|
1429
|
+
function select(paths) {
|
|
1430
|
+
return paths.filter((file_path) => is_kit_written(file_path));
|
|
1431
|
+
}
|
|
1432
|
+
var kit_written_paths = { is_kit_written, select };
|
|
1433
|
+
|
|
1434
|
+
// scripts/init/own-formatter.ts
|
|
1435
|
+
import { existsSync as existsSync7 } from "node:fs";
|
|
1436
|
+
import path13 from "node:path";
|
|
1437
|
+
var OWN_FORMATTER_CONFIGS = [
|
|
1438
|
+
"biome.json",
|
|
1439
|
+
"biome.jsonc",
|
|
1440
|
+
"dprint.json",
|
|
1441
|
+
"dprint.jsonc",
|
|
1442
|
+
".dprint.json",
|
|
1443
|
+
".dprint.jsonc"
|
|
1444
|
+
];
|
|
1445
|
+
function find_config(root) {
|
|
1446
|
+
return OWN_FORMATTER_CONFIGS.find((name) => existsSync7(path13.join(root, name)));
|
|
1447
|
+
}
|
|
1448
|
+
var own_formatter = { find_config };
|
|
1449
|
+
|
|
1450
|
+
// scripts/init/workflow-mark.ts
|
|
1451
|
+
var WORKFLOW_ENV = "JOSH_WORKFLOW";
|
|
1452
|
+
var GITHUB_WORKFLOW = "github";
|
|
1453
|
+
function is_requested(environment = process.env) {
|
|
1454
|
+
return environment[WORKFLOW_ENV] === GITHUB_WORKFLOW;
|
|
1455
|
+
}
|
|
1456
|
+
function is_recorded(manifest) {
|
|
1457
|
+
const josh = manifest?.["josh"];
|
|
1458
|
+
return json_value.is_record(josh) && josh["workflow"] === GITHUB_WORKFLOW;
|
|
1459
|
+
}
|
|
1460
|
+
function request(environment = process.env) {
|
|
1461
|
+
environment[WORKFLOW_ENV] = GITHUB_WORKFLOW;
|
|
1462
|
+
}
|
|
1463
|
+
function recorded_fields(has_workflow2) {
|
|
1464
|
+
return has_workflow2 ? { workflow: GITHUB_WORKFLOW } : {};
|
|
1465
|
+
}
|
|
1466
|
+
var workflow_mark = { is_requested, is_recorded, request, recorded_fields };
|
|
1467
|
+
|
|
1468
|
+
// scripts/init/project-profile.ts
|
|
1469
|
+
var IGNORED_DIRECTORIES = /* @__PURE__ */ new Set([".git", "node_modules", "dist", "build", ".svelte-kit"]);
|
|
1470
|
+
var WEB_EXTENSIONS = /* @__PURE__ */ new Set([".html", ".css", ".js", ".jsx", ".mjs", ".cjs"]);
|
|
1471
|
+
var TYPESCRIPT_EXTENSIONS = /* @__PURE__ */ new Set([".ts", ".tsx"]);
|
|
1472
|
+
var PROFILE_ARG_LENGTH = 2;
|
|
1473
|
+
var PROFILE_NAMES = {
|
|
1474
|
+
basic: "basic",
|
|
1475
|
+
full: "full",
|
|
1476
|
+
static: "basic",
|
|
1477
|
+
node: "full"
|
|
1478
|
+
};
|
|
1479
|
+
function parse_profile(value) {
|
|
1480
|
+
return typeof value === "string" && Object.hasOwn(PROFILE_NAMES, value) ? PROFILE_NAMES[value] : void 0;
|
|
1481
|
+
}
|
|
1482
|
+
var LEGACY_NAMES = { basic: "static", full: "node" };
|
|
1483
|
+
function with_legacy_profile_names(args) {
|
|
1484
|
+
return args.map((argument, index) => {
|
|
1485
|
+
const profile = args[index - 1] === "--profile" ? parse_profile(argument) : void 0;
|
|
1486
|
+
return profile === void 0 ? argument : LEGACY_NAMES[profile];
|
|
1487
|
+
});
|
|
1488
|
+
}
|
|
1489
|
+
function is_profile_pair(args) {
|
|
1490
|
+
return args.length === PROFILE_ARG_LENGTH && args[0] === "--profile";
|
|
1491
|
+
}
|
|
1492
|
+
function requested_profile(args, usage = "josh init [--profile basic|full]") {
|
|
1493
|
+
if (args.length === 0) return void 0;
|
|
1494
|
+
if (!is_profile_pair(args)) throw new Error(`Usage: ${usage}`);
|
|
1495
|
+
const profile = parse_profile(args[1]);
|
|
1496
|
+
if (profile !== void 0) return profile;
|
|
1497
|
+
throw new Error("Profile must be basic or full");
|
|
1498
|
+
}
|
|
1499
|
+
function read_manifest(root) {
|
|
1500
|
+
if (!existsSync8(package_manifest.manifest_path(root))) return void 0;
|
|
1501
|
+
const parsed = package_manifest.read_manifest(root, z4.unknown());
|
|
1502
|
+
if (!json_value.is_record(parsed)) throw new Error("package.json must contain an object");
|
|
1503
|
+
return parsed;
|
|
1504
|
+
}
|
|
1505
|
+
function recorded_profile(manifest) {
|
|
1506
|
+
const { josh } = manifest;
|
|
1507
|
+
return json_value.is_record(josh) ? parse_profile(josh["profile"]) : void 0;
|
|
1508
|
+
}
|
|
1509
|
+
function has_build_script(value) {
|
|
1510
|
+
return json_value.is_record(value) && ("build" in value || "dev" in value);
|
|
1511
|
+
}
|
|
1512
|
+
function has_project_dependencies(value) {
|
|
1513
|
+
if (!json_value.is_record(value)) return false;
|
|
1514
|
+
return Object.keys(value).some((name) => name !== KIT_PACKAGE_NAME);
|
|
1515
|
+
}
|
|
1516
|
+
function inferred_profile(manifest) {
|
|
1517
|
+
if (has_project_dependencies(manifest["dependencies"]) || has_project_dependencies(manifest["devDependencies"])) {
|
|
1518
|
+
return { profile: "full", reason: "package dependencies" };
|
|
1519
|
+
}
|
|
1520
|
+
if (has_build_script(manifest["scripts"])) {
|
|
1521
|
+
return { profile: "full", reason: "build or dev script" };
|
|
1522
|
+
}
|
|
1523
|
+
return { profile: "basic", reason: "metadata-only package.json" };
|
|
1524
|
+
}
|
|
1525
|
+
function resolve_profile(root, requested) {
|
|
1526
|
+
if (requested !== void 0) return { profile: requested, reason: "explicit --profile" };
|
|
1527
|
+
const manifest = read_manifest(root);
|
|
1528
|
+
if (manifest === void 0) return { profile: "basic", reason: "no package.json" };
|
|
1529
|
+
const profile = recorded_profile(manifest);
|
|
1530
|
+
if (profile !== void 0) return { profile, reason: "package.json josh.profile" };
|
|
1531
|
+
return inferred_profile(manifest);
|
|
1532
|
+
}
|
|
1533
|
+
function is_ignored_directory(name) {
|
|
1534
|
+
return IGNORED_DIRECTORIES.has(name);
|
|
1535
|
+
}
|
|
1536
|
+
function should_visit(entry) {
|
|
1537
|
+
return entry.isDirectory() && !is_ignored_directory(entry.name);
|
|
1538
|
+
}
|
|
1539
|
+
function scan_directory(directory, pending) {
|
|
1540
|
+
const entries = readdirSync3(directory, { withFileTypes: true });
|
|
1541
|
+
pending.push(
|
|
1542
|
+
...entries.filter((entry) => should_visit(entry)).map((entry) => path14.join(directory, entry.name))
|
|
1543
|
+
);
|
|
1544
|
+
return entries.filter((entry) => entry.isFile()).map((entry) => path14.join(directory, entry.name));
|
|
1545
|
+
}
|
|
1546
|
+
function is_project_file(root, file) {
|
|
1547
|
+
const relative_path = path14.relative(root, file).split(path14.sep).join(path14.posix.sep);
|
|
1548
|
+
return !kit_written_paths.is_kit_written(relative_path);
|
|
1549
|
+
}
|
|
1550
|
+
function list_files(root) {
|
|
1551
|
+
const pending = [root];
|
|
1552
|
+
const files = [];
|
|
1553
|
+
for (const directory of pending) {
|
|
1554
|
+
files.push(...scan_directory(directory, pending));
|
|
1555
|
+
}
|
|
1556
|
+
return files;
|
|
1557
|
+
}
|
|
1558
|
+
function file_extensions(root) {
|
|
1559
|
+
return list_files(root).filter((file) => is_project_file(root, file)).map((file) => path14.extname(file));
|
|
1560
|
+
}
|
|
1561
|
+
function scan_files(root) {
|
|
1562
|
+
const extensions = file_extensions(root);
|
|
1563
|
+
const has_web = extensions.some((extension) => WEB_EXTENSIONS.has(extension));
|
|
1564
|
+
const should_use_prettier = has_web && own_formatter.find_config(root) === void 0;
|
|
1565
|
+
const has_typescript = extensions.some((extension) => TYPESCRIPT_EXTENSIONS.has(extension));
|
|
1566
|
+
return { should_use_prettier, has_typescript };
|
|
1567
|
+
}
|
|
1568
|
+
function has_github_remote(root) {
|
|
1569
|
+
const url = git_spawn_sync.origin_url(root);
|
|
1570
|
+
return url !== void 0 && repo_origin.parse_origin_url(url) !== void 0;
|
|
1571
|
+
}
|
|
1572
|
+
function has_git(root) {
|
|
1573
|
+
return existsSync8(path14.join(root, ".git"));
|
|
1574
|
+
}
|
|
1575
|
+
function has_workflow(root) {
|
|
1576
|
+
return workflow_mark.is_requested() || workflow_mark.is_recorded(read_manifest(root));
|
|
1577
|
+
}
|
|
1578
|
+
function inspect_project(root, requested) {
|
|
1579
|
+
const profile = resolve_profile(root, requested);
|
|
1580
|
+
const files = scan_files(root);
|
|
1581
|
+
const is_git = has_git(root);
|
|
1582
|
+
return {
|
|
1583
|
+
...profile,
|
|
1584
|
+
...files,
|
|
1585
|
+
has_git: is_git,
|
|
1586
|
+
has_github: is_git && has_github_remote(root),
|
|
1587
|
+
has_workflow: has_workflow(root)
|
|
1588
|
+
};
|
|
1589
|
+
}
|
|
1590
|
+
var project_profile = {
|
|
1591
|
+
parse_profile,
|
|
1592
|
+
resolve_profile,
|
|
1593
|
+
has_git,
|
|
1594
|
+
inspect_project,
|
|
1595
|
+
is_ignored_directory,
|
|
1596
|
+
list_files,
|
|
1597
|
+
requested_profile,
|
|
1598
|
+
with_legacy_profile_names
|
|
1599
|
+
};
|
|
1600
|
+
|
|
1601
|
+
export {
|
|
1602
|
+
own_formatter,
|
|
1603
|
+
file_content,
|
|
1604
|
+
PACK_HOOK_FILE,
|
|
1605
|
+
pack_hook,
|
|
1606
|
+
DEFAULT_RELEASE_AGE_MINUTES,
|
|
1607
|
+
release_window,
|
|
1608
|
+
PROJECT_CONFIG_FILE,
|
|
1609
|
+
project_config,
|
|
1610
|
+
vscode_tasks,
|
|
1611
|
+
PRETTIER_CONFIG_JS,
|
|
1612
|
+
LEFTHOOK_PATH,
|
|
1613
|
+
init_actions,
|
|
1614
|
+
is_workflow_destination,
|
|
1615
|
+
managed_marker_logic,
|
|
1616
|
+
hook_command_rewrite,
|
|
1617
|
+
security_policy,
|
|
1618
|
+
transform_copied_content,
|
|
1619
|
+
directory_copy_blocker,
|
|
1620
|
+
is_transformable,
|
|
1621
|
+
copy_directory_failure,
|
|
1622
|
+
sonar_file,
|
|
1623
|
+
WORKSPACE_YAML,
|
|
1624
|
+
CLAUDE_MD_FILENAME,
|
|
1625
|
+
init_ai_copy,
|
|
1626
|
+
kit_written_paths,
|
|
1627
|
+
workflow_mark,
|
|
1628
|
+
project_profile
|
|
1629
|
+
};
|