@keystrokehq/cli 0.1.147 → 0.1.149
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/README.md +35 -42
- package/dist/{alias-RTYYYW3D-CLFgrowj.mjs → alias-RTYYYW3D-BDy5K94v.mjs} +2 -2
- package/dist/{alias-RTYYYW3D-CLFgrowj.mjs.map → alias-RTYYYW3D-BDy5K94v.mjs.map} +1 -1
- package/dist/{awk2-LA3USKJP-BbsfXVlR.mjs → awk2-LA3USKJP-bQiQEw4P.mjs} +8 -8
- package/dist/{awk2-LA3USKJP-BbsfXVlR.mjs.map → awk2-LA3USKJP-bQiQEw4P.mjs.map} +1 -1
- package/dist/{base64-C2AIWVNC-C0WIgu5V.mjs → base64-C2AIWVNC-DMnyEdfa.mjs} +2 -2
- package/dist/{base64-C2AIWVNC-C0WIgu5V.mjs.map → base64-C2AIWVNC-DMnyEdfa.mjs.map} +1 -1
- package/dist/{basename-UB3CIYNI-BgNN3bGm.mjs → basename-UB3CIYNI-DOxZLtwj.mjs} +2 -2
- package/dist/{basename-UB3CIYNI-BgNN3bGm.mjs.map → basename-UB3CIYNI-DOxZLtwj.mjs.map} +1 -1
- package/dist/{bash-YZ33HQZQ-N6YyKtUH.mjs → bash-YZ33HQZQ-D4vRBW1d.mjs} +2 -2
- package/dist/{bash-YZ33HQZQ-N6YyKtUH.mjs.map → bash-YZ33HQZQ-D4vRBW1d.mjs.map} +1 -1
- package/dist/{cat-TSFMZVYS-Dz3-oHsV.mjs → cat-TSFMZVYS-D8QgnfyP.mjs} +3 -3
- package/dist/{cat-TSFMZVYS-Dz3-oHsV.mjs.map → cat-TSFMZVYS-D8QgnfyP.mjs.map} +1 -1
- package/dist/{chmod-TFEPA42X-YF02QJUv.mjs → chmod-TFEPA42X-CRWIslQq.mjs} +2 -2
- package/dist/{chmod-TFEPA42X-YF02QJUv.mjs.map → chmod-TFEPA42X-CRWIslQq.mjs.map} +1 -1
- package/dist/{chunk-5H5SCKJM-BvfXlL01.mjs → chunk-5H5SCKJM-BaNr0aSJ.mjs} +4 -4
- package/dist/{chunk-5H5SCKJM-BvfXlL01.mjs.map → chunk-5H5SCKJM-BaNr0aSJ.mjs.map} +1 -1
- package/dist/{chunk-EBAPSGAO-Ctfslw2R.mjs → chunk-EBAPSGAO-BRba1GMs.mjs} +2 -2
- package/dist/{chunk-EBAPSGAO-Ctfslw2R.mjs.map → chunk-EBAPSGAO-BRba1GMs.mjs.map} +1 -1
- package/dist/{chunk-LEKBROJD-CJMrAyu9.mjs → chunk-LEKBROJD-D1fMh3yQ.mjs} +3 -3
- package/dist/{chunk-LEKBROJD-CJMrAyu9.mjs.map → chunk-LEKBROJD-D1fMh3yQ.mjs.map} +1 -1
- package/dist/{clear-HKGFEOF6-CekN2x-O.mjs → clear-HKGFEOF6-Cy0E2H3t.mjs} +2 -2
- package/dist/{clear-HKGFEOF6-CekN2x-O.mjs.map → clear-HKGFEOF6-Cy0E2H3t.mjs.map} +1 -1
- package/dist/{column-XT6UFXNQ-DHENV9D2.mjs → column-XT6UFXNQ-czPN0bKF.mjs} +2 -2
- package/dist/{column-XT6UFXNQ-DHENV9D2.mjs.map → column-XT6UFXNQ-czPN0bKF.mjs.map} +1 -1
- package/dist/{comm-VV2LDX2J-ppxDJFkY.mjs → comm-VV2LDX2J-nTDBS00q.mjs} +2 -2
- package/dist/{comm-VV2LDX2J-ppxDJFkY.mjs.map → comm-VV2LDX2J-nTDBS00q.mjs.map} +1 -1
- package/dist/{cp-BISAAS7A-CMWayU4n.mjs → cp-BISAAS7A-CXqDGSmH.mjs} +3 -3
- package/dist/{cp-BISAAS7A-CMWayU4n.mjs.map → cp-BISAAS7A-CXqDGSmH.mjs.map} +1 -1
- package/dist/{cut-OKARJCCV-Bt8b58eI.mjs → cut-OKARJCCV-8_v90N99.mjs} +3 -3
- package/dist/{cut-OKARJCCV-Bt8b58eI.mjs.map → cut-OKARJCCV-8_v90N99.mjs.map} +1 -1
- package/dist/{date-UUUPW43J-B7T5OTZZ.mjs → date-UUUPW43J-BiJvTWWs.mjs} +2 -2
- package/dist/{date-UUUPW43J-B7T5OTZZ.mjs.map → date-UUUPW43J-BiJvTWWs.mjs.map} +1 -1
- package/dist/{diff-MWJFIG7X-DhnPc_5r.mjs → diff-MWJFIG7X-D5by0o7Y.mjs} +2 -2
- package/dist/{diff-MWJFIG7X-DhnPc_5r.mjs.map → diff-MWJFIG7X-D5by0o7Y.mjs.map} +1 -1
- package/dist/{dirname-MPHRFUTI-Dkb3S4OX.mjs → dirname-MPHRFUTI-VCKXiC16.mjs} +2 -2
- package/dist/{dirname-MPHRFUTI-Dkb3S4OX.mjs.map → dirname-MPHRFUTI-VCKXiC16.mjs.map} +1 -1
- package/dist/dist-BlsDG7kb.mjs +3 -0
- package/dist/{dist-E6dh6qXe.mjs → dist-C6adeAws.mjs} +1006 -138
- package/dist/dist-C6adeAws.mjs.map +1 -0
- package/dist/dist-DJQnugPi.mjs +1829 -0
- package/dist/dist-DJQnugPi.mjs.map +1 -0
- package/dist/{dist-B72RPrho.mjs → dist-DSkS8uEB.mjs} +43888 -28664
- package/dist/dist-DSkS8uEB.mjs.map +1 -0
- package/dist/dist-Dq1kkbLy.mjs +4 -0
- package/dist/{du-572XNP42-ClP4jXB1.mjs → du-572XNP42-C_zifijt.mjs} +3 -3
- package/dist/{du-572XNP42-ClP4jXB1.mjs.map → du-572XNP42-C_zifijt.mjs.map} +1 -1
- package/dist/{env-36M5BO7M-CsP_aiWr.mjs → env-36M5BO7M-CEbFSWHW.mjs} +6 -6
- package/dist/{env-36M5BO7M-CsP_aiWr.mjs.map → env-36M5BO7M-CEbFSWHW.mjs.map} +1 -1
- package/dist/{expand-JSPG6VOP-B-YUvYpu.mjs → expand-JSPG6VOP-CxlV2zRG.mjs} +2 -2
- package/dist/{expand-JSPG6VOP-B-YUvYpu.mjs.map → expand-JSPG6VOP-CxlV2zRG.mjs.map} +1 -1
- package/dist/{expr-5JAACS4X-1TBq84gG.mjs → expr-5JAACS4X-CM1VDr6S.mjs} +2 -2
- package/dist/{expr-5JAACS4X-1TBq84gG.mjs.map → expr-5JAACS4X-CM1VDr6S.mjs.map} +1 -1
- package/dist/{file-IPZJC3FQ-DcZNOWyY.mjs → file-IPZJC3FQ-DYa9X4WH.mjs} +17 -17
- package/dist/file-IPZJC3FQ-DYa9X4WH.mjs.map +1 -0
- package/dist/{find-INTH3OLC-6p47KeeT.mjs → find-INTH3OLC-CPiHWE9r.mjs} +4 -4
- package/dist/{find-INTH3OLC-6p47KeeT.mjs.map → find-INTH3OLC-CPiHWE9r.mjs.map} +1 -1
- package/dist/{fold-4TQNYMSW-C54bHzLd.mjs → fold-4TQNYMSW-B4tfWHg3.mjs} +2 -2
- package/dist/{fold-4TQNYMSW-C54bHzLd.mjs.map → fold-4TQNYMSW-B4tfWHg3.mjs.map} +1 -1
- package/dist/{grep-V3LQVMRQ-D99Bq7Kj.mjs → grep-V3LQVMRQ-BbRYJxzz.mjs} +3 -3
- package/dist/{grep-V3LQVMRQ-D99Bq7Kj.mjs.map → grep-V3LQVMRQ-BbRYJxzz.mjs.map} +1 -1
- package/dist/{gzip-O5ASJAFY-CZDRROqP.mjs → gzip-O5ASJAFY-rKFFXJyd.mjs} +2 -2
- package/dist/{gzip-O5ASJAFY-CZDRROqP.mjs.map → gzip-O5ASJAFY-rKFFXJyd.mjs.map} +1 -1
- package/dist/{head-442HYESI-D96RMdki.mjs → head-442HYESI-sl2UFkqV.mjs} +2 -2
- package/dist/{head-442HYESI-D96RMdki.mjs.map → head-442HYESI-sl2UFkqV.mjs.map} +1 -1
- package/dist/{history-WYYKSLSZ-ACNQVupn.mjs → history-WYYKSLSZ-BQO1BlWh.mjs} +2 -2
- package/dist/{history-WYYKSLSZ-ACNQVupn.mjs.map → history-WYYKSLSZ-BQO1BlWh.mjs.map} +1 -1
- package/dist/{html-to-markdown-JW4MSQZO-DQOxFIvF.mjs → html-to-markdown-JW4MSQZO-CJGwkgpQ.mjs} +2 -2
- package/dist/{html-to-markdown-JW4MSQZO-DQOxFIvF.mjs.map → html-to-markdown-JW4MSQZO-CJGwkgpQ.mjs.map} +1 -1
- package/dist/index.mjs +9 -1
- package/dist/index.mjs.map +1 -1
- package/dist/{join-TBRGI3LQ-B8I9tkJ5.mjs → join-TBRGI3LQ-BAeS4llp.mjs} +2 -2
- package/dist/{join-TBRGI3LQ-B8I9tkJ5.mjs.map → join-TBRGI3LQ-BAeS4llp.mjs.map} +1 -1
- package/dist/{jq-4XLYLOS5-wFZYfsfJ.mjs → jq-4XLYLOS5-BqwoG7Hj.mjs} +7 -7
- package/dist/{jq-4XLYLOS5-wFZYfsfJ.mjs.map → jq-4XLYLOS5-BqwoG7Hj.mjs.map} +1 -1
- package/dist/{js-exec-N5KEZBH7-CoRL1IOd.mjs → js-exec-N5KEZBH7-DbXmMwbQ.mjs} +13 -13
- package/dist/{js-exec-N5KEZBH7-CoRL1IOd.mjs.map → js-exec-N5KEZBH7-DbXmMwbQ.mjs.map} +1 -1
- package/dist/{ln-4LGSXXGD-Dg0R9i5G.mjs → ln-4LGSXXGD-CpN9ORGB.mjs} +2 -2
- package/dist/{ln-4LGSXXGD-Dg0R9i5G.mjs.map → ln-4LGSXXGD-CpN9ORGB.mjs.map} +1 -1
- package/dist/{ls-ZJGQER7M-DLDSfI4x.mjs → ls-ZJGQER7M-B0J6G8Ao.mjs} +3 -3
- package/dist/{ls-ZJGQER7M-DLDSfI4x.mjs.map → ls-ZJGQER7M-B0J6G8Ao.mjs.map} +1 -1
- package/dist/{maybe-auto-update-CKoJBwJ_.mjs → maybe-auto-update-dzy8lzxn.mjs} +13 -8
- package/dist/maybe-auto-update-dzy8lzxn.mjs.map +1 -0
- package/dist/{md5sum-SPU24VSG-DQc8sqXO.mjs → md5sum-SPU24VSG-CETB591F.mjs} +3 -3
- package/dist/{md5sum-SPU24VSG-DQc8sqXO.mjs.map → md5sum-SPU24VSG-CETB591F.mjs.map} +1 -1
- package/dist/{mkdir-MEPGZOB6-BjUKzhdL.mjs → mkdir-MEPGZOB6-B5bpLWTB.mjs} +6 -6
- package/dist/{mkdir-MEPGZOB6-BjUKzhdL.mjs.map → mkdir-MEPGZOB6-B5bpLWTB.mjs.map} +1 -1
- package/dist/{mv-W5BIQ646-CdSIyY-U.mjs → mv-W5BIQ646-7tYLVIVw.mjs} +3 -3
- package/dist/{mv-W5BIQ646-CdSIyY-U.mjs.map → mv-W5BIQ646-7tYLVIVw.mjs.map} +1 -1
- package/dist/{nl-WSDW7I4O-DmtCnyKU.mjs → nl-WSDW7I4O-CHnycLPl.mjs} +2 -2
- package/dist/{nl-WSDW7I4O-DmtCnyKU.mjs.map → nl-WSDW7I4O-CHnycLPl.mjs.map} +1 -1
- package/dist/{paste-7JC6S4DX-CtmM5Qy8.mjs → paste-7JC6S4DX-CKUaf7iE.mjs} +2 -2
- package/dist/{paste-7JC6S4DX-CtmM5Qy8.mjs.map → paste-7JC6S4DX-CKUaf7iE.mjs.map} +1 -1
- package/dist/{printf-TWGXF445-B7cTysaa.mjs → printf-TWGXF445-Byg8yI9x.mjs} +3 -3
- package/dist/{printf-TWGXF445-B7cTysaa.mjs.map → printf-TWGXF445-Byg8yI9x.mjs.map} +1 -1
- package/dist/{program-OcNo9lRF.mjs → program-CyirDIA2.mjs} +4538 -1013
- package/dist/program-CyirDIA2.mjs.map +1 -0
- package/dist/{python3-POMOR4OA-CKy80mpF.mjs → python3-POMOR4OA-D-6P4EKs.mjs} +17 -17
- package/dist/python3-POMOR4OA-D-6P4EKs.mjs.map +1 -0
- package/dist/{readlink-OPJF4DL5-Rc1Mz_Xx.mjs → readlink-OPJF4DL5-CGS-PxkH.mjs} +2 -2
- package/dist/{readlink-OPJF4DL5-Rc1Mz_Xx.mjs.map → readlink-OPJF4DL5-CGS-PxkH.mjs.map} +1 -1
- package/dist/{rev-5EHFX4EJ-3dd9vwHW.mjs → rev-5EHFX4EJ-BLJdSt1D.mjs} +2 -2
- package/dist/{rev-5EHFX4EJ-3dd9vwHW.mjs.map → rev-5EHFX4EJ-BLJdSt1D.mjs.map} +1 -1
- package/dist/{rg-S4FXYXWB-BbXVo6JX.mjs → rg-S4FXYXWB-Ekm2aMrv.mjs} +14 -14
- package/dist/{rg-S4FXYXWB-BbXVo6JX.mjs.map → rg-S4FXYXWB-Ekm2aMrv.mjs.map} +1 -1
- package/dist/{rm-SSGETQVQ-Ch53Rmrr.mjs → rm-SSGETQVQ-DV-525hw.mjs} +6 -6
- package/dist/{rm-SSGETQVQ-Ch53Rmrr.mjs.map → rm-SSGETQVQ-DV-525hw.mjs.map} +1 -1
- package/dist/{rmdir-OC4ZLPYA-D3QCHlIB.mjs → rmdir-OC4ZLPYA-BGOrZMUa.mjs} +3 -3
- package/dist/{rmdir-OC4ZLPYA-D3QCHlIB.mjs.map → rmdir-OC4ZLPYA-BGOrZMUa.mjs.map} +1 -1
- package/dist/{run-package-manager-update-DgeSZuUc.mjs → run-package-manager-update-C4uA6xWB.mjs} +281 -66
- package/dist/run-package-manager-update-C4uA6xWB.mjs.map +1 -0
- package/dist/{sed-S5UIK574-DE1KeTk3.mjs → sed-S5UIK574-C3nurgzc.mjs} +4 -4
- package/dist/{sed-S5UIK574-DE1KeTk3.mjs.map → sed-S5UIK574-C3nurgzc.mjs.map} +1 -1
- package/dist/{sha1sum-2PTOAFR6-DNjSNcYK.mjs → sha1sum-2PTOAFR6-GDQNigjA.mjs} +3 -3
- package/dist/{sha1sum-2PTOAFR6-DNjSNcYK.mjs.map → sha1sum-2PTOAFR6-GDQNigjA.mjs.map} +1 -1
- package/dist/{sha256sum-NS7D3IXX-BMaCKkT5.mjs → sha256sum-NS7D3IXX-bI78J2Ek.mjs} +3 -3
- package/dist/{sha256sum-NS7D3IXX-BMaCKkT5.mjs.map → sha256sum-NS7D3IXX-bI78J2Ek.mjs.map} +1 -1
- package/dist/skills-bundle/_AGENTS.mcp.md +9 -9
- package/dist/skills-bundle/_AGENTS.md +88 -47
- package/dist/{sleep-X22JJINO-Do5hEQQW.mjs → sleep-X22JJINO-gsrMSr5k.mjs} +2 -2
- package/dist/{sleep-X22JJINO-Do5hEQQW.mjs.map → sleep-X22JJINO-gsrMSr5k.mjs.map} +1 -1
- package/dist/{sort-SW2YEO5B-B7j1zw8k.mjs → sort-SW2YEO5B-D5UsbJuA.mjs} +3 -3
- package/dist/{sort-SW2YEO5B-B7j1zw8k.mjs.map → sort-SW2YEO5B-D5UsbJuA.mjs.map} +1 -1
- package/dist/{split-4KKZZXXE-h8GD4HP4.mjs → split-4KKZZXXE-D_eM0wGE.mjs} +2 -2
- package/dist/{split-4KKZZXXE-h8GD4HP4.mjs.map → split-4KKZZXXE-D_eM0wGE.mjs.map} +1 -1
- package/dist/{sqlite3-CGOEFJAO-DvzzghDg.mjs → sqlite3-CGOEFJAO-Eu-N4sPa.mjs} +3 -3
- package/dist/{sqlite3-CGOEFJAO-DvzzghDg.mjs.map → sqlite3-CGOEFJAO-Eu-N4sPa.mjs.map} +1 -1
- package/dist/{stat-CD34IZ4P-B5ZOJh4J.mjs → stat-CD34IZ4P-BS1XgX8K.mjs} +2 -2
- package/dist/{stat-CD34IZ4P-B5ZOJh4J.mjs.map → stat-CD34IZ4P-BS1XgX8K.mjs.map} +1 -1
- package/dist/{strings-6WDHLGMX-DdiEdoL-.mjs → strings-6WDHLGMX-BGTuHTcR.mjs} +2 -2
- package/dist/{strings-6WDHLGMX-DdiEdoL-.mjs.map → strings-6WDHLGMX-BGTuHTcR.mjs.map} +1 -1
- package/dist/{tail-R4PCA2C4-CUfroNeu.mjs → tail-R4PCA2C4-CfCvDsXY.mjs} +2 -2
- package/dist/{tail-R4PCA2C4-CUfroNeu.mjs.map → tail-R4PCA2C4-CfCvDsXY.mjs.map} +1 -1
- package/dist/{tar-STHHZTZ6-DRf60e-G.mjs → tar-STHHZTZ6-CzlFhy51.mjs} +3 -3
- package/dist/{tar-STHHZTZ6-DRf60e-G.mjs.map → tar-STHHZTZ6-CzlFhy51.mjs.map} +1 -1
- package/dist/{tee-YUZ2FKCJ-po_dfyc_.mjs → tee-YUZ2FKCJ-rZEvi44P.mjs} +2 -2
- package/dist/{tee-YUZ2FKCJ-po_dfyc_.mjs.map → tee-YUZ2FKCJ-rZEvi44P.mjs.map} +1 -1
- package/dist/templates/hello-world/README.md +1 -1
- package/dist/templates/hello-world/package.json +2 -3
- package/dist/{time-D4LNBSWX-DVWhAldK.mjs → time-D4LNBSWX-D_2r6q9s.mjs} +6 -6
- package/dist/{time-D4LNBSWX-DVWhAldK.mjs.map → time-D4LNBSWX-D_2r6q9s.mjs.map} +1 -1
- package/dist/{timeout-YDCRSLPQ-B_yntmXU.mjs → timeout-YDCRSLPQ-BCyope7T.mjs} +7 -7
- package/dist/{timeout-YDCRSLPQ-B_yntmXU.mjs.map → timeout-YDCRSLPQ-BCyope7T.mjs.map} +1 -1
- package/dist/{touch-UA33VN3N-oW1SBT1r.mjs → touch-UA33VN3N-NfG_nyJw.mjs} +2 -2
- package/dist/{touch-UA33VN3N-oW1SBT1r.mjs.map → touch-UA33VN3N-NfG_nyJw.mjs.map} +1 -1
- package/dist/{tr-36LHWFRQ-CTq3z6wq.mjs → tr-36LHWFRQ-BqtCYOhC.mjs} +3 -3
- package/dist/{tr-36LHWFRQ-CTq3z6wq.mjs.map → tr-36LHWFRQ-BqtCYOhC.mjs.map} +1 -1
- package/dist/{tree-YLD52CNT-CIozNsLQ.mjs → tree-YLD52CNT-BjNKvvwq.mjs} +3 -3
- package/dist/{tree-YLD52CNT-CIozNsLQ.mjs.map → tree-YLD52CNT-BjNKvvwq.mjs.map} +1 -1
- package/dist/{unexpand-CADSA4VO-Cq9DTcUg.mjs → unexpand-CADSA4VO-BRBq66Ny.mjs} +2 -2
- package/dist/{unexpand-CADSA4VO-Cq9DTcUg.mjs.map → unexpand-CADSA4VO-BRBq66Ny.mjs.map} +1 -1
- package/dist/{uniq-XSIZR6PB-D5lt-IXF.mjs → uniq-XSIZR6PB-CEAOHvgb.mjs} +3 -3
- package/dist/{uniq-XSIZR6PB-D5lt-IXF.mjs.map → uniq-XSIZR6PB-CEAOHvgb.mjs.map} +1 -1
- package/dist/{wc-LF7NU4LA-BFPabrwD.mjs → wc-LF7NU4LA-DQsmzFSM.mjs} +3 -3
- package/dist/{wc-LF7NU4LA-BFPabrwD.mjs.map → wc-LF7NU4LA-DQsmzFSM.mjs.map} +1 -1
- package/dist/{which-XEM24D5D-2LvlkpUo.mjs → which-XEM24D5D-ClMwNewh.mjs} +2 -2
- package/dist/{which-XEM24D5D-2LvlkpUo.mjs.map → which-XEM24D5D-ClMwNewh.mjs.map} +1 -1
- package/dist/{xan-Y6WF3IRG-DjKO96Pj.mjs → xan-Y6WF3IRG-CvZAKNm2.mjs} +7 -7
- package/dist/{xan-Y6WF3IRG-DjKO96Pj.mjs.map → xan-Y6WF3IRG-CvZAKNm2.mjs.map} +1 -1
- package/dist/{xargs-MGZPH7AX-D2bIgrdg.mjs → xargs-MGZPH7AX-DaERa6_Q.mjs} +6 -6
- package/dist/{xargs-MGZPH7AX-D2bIgrdg.mjs.map → xargs-MGZPH7AX-DaERa6_Q.mjs.map} +1 -1
- package/dist/{yq-4QJW3EQG-XhB3aACo.mjs → yq-4QJW3EQG-DABmi_in.mjs} +88 -88
- package/dist/yq-4QJW3EQG-DABmi_in.mjs.map +1 -0
- package/package.json +3 -6
- package/dist/dist-B72RPrho.mjs.map +0 -1
- package/dist/dist-CBVf3SwI.mjs +0 -11661
- package/dist/dist-CBVf3SwI.mjs.map +0 -1
- package/dist/dist-CyKcvwuI.mjs +0 -816
- package/dist/dist-CyKcvwuI.mjs.map +0 -1
- package/dist/dist-Duu6X1Sh.mjs +0 -4
- package/dist/dist-E6dh6qXe.mjs.map +0 -1
- package/dist/file-IPZJC3FQ-DcZNOWyY.mjs.map +0 -1
- package/dist/maybe-auto-update-CKoJBwJ_.mjs.map +0 -1
- package/dist/program-OcNo9lRF.mjs.map +0 -1
- package/dist/python3-POMOR4OA-CKy80mpF.mjs.map +0 -1
- package/dist/run-package-manager-update-DgeSZuUc.mjs.map +0 -1
- package/dist/watch-app-DTIeKrbl-CSpsNzVG.mjs +0 -100
- package/dist/watch-app-DTIeKrbl-CSpsNzVG.mjs.map +0 -1
- package/dist/yq-4QJW3EQG-XhB3aACo.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rm-SSGETQVQ-
|
|
1
|
+
{"version":3,"file":"rm-SSGETQVQ-DV-525hw.mjs","names":["m","n","u","p"],"sources":["../../../node_modules/.pnpm/just-bash@3.0.1/node_modules/just-bash/dist/bundle/chunks/chunk-LPJEKUCB.js","../../../node_modules/.pnpm/just-bash@3.0.1/node_modules/just-bash/dist/bundle/chunks/rm-SSGETQVQ.js"],"sourcesContent":["import{createRequire} from\"node:module\";const require=createRequire(import.meta.url);\nimport{a as p}from\"./chunk-FOCWZZDE.js\";import{a as m}from\"./chunk-QIQMJJZ4.js\";import{a as u}from\"./chunk-W5DWRFSU.js\";var v={recursive:{short:\"r\",long:\"recursive\",type:\"boolean\"},recursiveUpper:{short:\"R\",type:\"boolean\"},force:{short:\"f\",long:\"force\",type:\"boolean\"},verbose:{short:\"v\",long:\"verbose\",type:\"boolean\"}},E={name:\"rm\",async execute(g,s){let e=m(\"rm\",g,v);if(!e.ok)return e.error;let i=e.result.flags.recursive||e.result.flags.recursiveUpper,a=e.result.flags.force,d=e.result.flags.verbose,c=e.result.positional;if(c.length===0)return a?{stdout:\"\",stderr:\"\",exitCode:0}:{stdout:\"\",stderr:`rm: missing operand\n`,exitCode:1};let f=\"\",t=\"\",l=0;for(let r of c)try{let n=s.fs.resolvePath(s.cwd,r);if((await s.fs.stat(n)).isDirectory&&!i){t+=`rm: cannot remove '${r}': Is a directory\n`,l=1;continue}await s.fs.rm(n,{recursive:i,force:a}),d&&(f+=`removed '${r}'\n`)}catch(n){if(!a){let o=u(n);o.includes(\"ENOENT\")||o.includes(\"no such file\")?t+=`rm: cannot remove '${r}': No such file or directory\n`:o.includes(\"ENOTEMPTY\")||o.includes(\"not empty\")?t+=`rm: cannot remove '${r}': Directory not empty\n`:t+=`rm: cannot remove '${r}': ${p(o)}\n`,l=1}}return{stdout:f,stderr:t,exitCode:l}}},$={name:\"rm\",flags:[{flag:\"-r\",type:\"boolean\"},{flag:\"-R\",type:\"boolean\"},{flag:\"-f\",type:\"boolean\"},{flag:\"-v\",type:\"boolean\"}],needsArgs:!0};export{E as a,$ as b};\n","import{createRequire} from\"node:module\";const require=createRequire(import.meta.url);\nimport{a,b}from\"./chunk-LPJEKUCB.js\";import\"./chunk-FOCWZZDE.js\";import\"./chunk-QIQMJJZ4.js\";import\"./chunk-W5DWRFSU.js\";import\"./chunk-QAYAQNCG.js\";import\"./chunk-BZUGFHVS.js\";export{b as flagsForFuzzing,a as rmCommand};\n"],"x_google_ignoreList":[0,1],"mappings":";;;;;;;;AAAsD,cAAc,OAAO,KAAK,GAAG;AACqC,IAAI,IAAE;CAAC,WAAU;EAAC,OAAM;EAAI,MAAK;EAAY,MAAK;CAAS;CAAE,gBAAe;EAAC,OAAM;EAAI,MAAK;CAAS;CAAE,OAAM;EAAC,OAAM;EAAI,MAAK;EAAQ,MAAK;CAAS;CAAE,SAAQ;EAAC,OAAM;EAAI,MAAK;EAAU,MAAK;CAAS;AAAC,GAAE,IAAE;CAAC,MAAK;CAAK,MAAM,QAAQ,GAAE,GAAE;EAAC,IAAI,IAAEA,EAAE,MAAK,GAAE,CAAC;EAAE,IAAG,CAAC,EAAE,IAAG,OAAO,EAAE;EAAM,IAAI,IAAE,EAAE,OAAO,MAAM,aAAW,EAAE,OAAO,MAAM,gBAAe,IAAE,EAAE,OAAO,MAAM,OAAM,IAAE,EAAE,OAAO,MAAM,SAAQ,IAAE,EAAE,OAAO;EAAW,IAAG,EAAE,WAAS,GAAE,OAAO,IAAE;GAAC,QAAO;GAAG,QAAO;GAAG,UAAS;EAAC,IAAE;GAAC,QAAO;GAAG,QAAO;;GACxlB,UAAS;EAAC;EAAE,IAAI,IAAE,IAAG,IAAE,IAAG,IAAE;EAAE,KAAI,IAAI,KAAK,GAAE,IAAG;GAAC,IAAI,IAAE,EAAE,GAAG,YAAY,EAAE,KAAI,CAAC;GAAE,KAAI,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,eAAa,CAAC,GAAE;IAAC,KAAG,sBAAsB,EAAE;GACrJ,IAAE;IAAE;GAAQ;GAAC,MAAM,EAAE,GAAG,GAAG,GAAE;IAAC,WAAU;IAAE,OAAM;GAAC,CAAC,GAAE,MAAI,KAAG,YAAY,EAAE;;EACzE,SAAOC,KAAE;GAAC,IAAG,CAAC,GAAE;IAAC,IAAI,IAAEC,IAAED,GAAC;IAAE,EAAE,SAAS,QAAQ,KAAG,EAAE,SAAS,cAAc,IAAE,KAAG,sBAAsB,EAAE;IACxG,EAAE,SAAS,WAAW,KAAG,EAAE,SAAS,WAAW,IAAE,KAAG,sBAAsB,EAAE;IAC5E,KAAG,sBAAsB,EAAE,KAAKE,EAAE,CAAC,EAAE;GACrC,IAAE;GAAC;EAAC;EAAC,OAAM;GAAC,QAAO;GAAE,QAAO;GAAE,UAAS;EAAC;CAAC;AAAC;;;ACPU,cAAc,OAAO,KAAK,GAAG"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import "./chunk-QAYAQNCG-Bl0Kbd53.mjs";
|
|
3
2
|
import "./chunk-BZUGFHVS-CPWRFwK8.mjs";
|
|
4
|
-
import { t as x$1 } from "./chunk-QIQMJJZ4-BwKdslXs.mjs";
|
|
5
3
|
import { t as n } from "./chunk-W5DWRFSU-lCyWk0ph.mjs";
|
|
4
|
+
import "./chunk-QAYAQNCG-Bl0Kbd53.mjs";
|
|
5
|
+
import { t as x$1 } from "./chunk-QIQMJJZ4-BwKdslXs.mjs";
|
|
6
6
|
import { createRequire } from "node:module";
|
|
7
7
|
//#region ../../node_modules/.pnpm/just-bash@3.0.1/node_modules/just-bash/dist/bundle/chunks/chunk-SJYEXC2Z.js
|
|
8
8
|
createRequire(import.meta.url);
|
|
@@ -129,4 +129,4 @@ createRequire(import.meta.url);
|
|
|
129
129
|
//#endregion
|
|
130
130
|
export { D as rmdirCommand };
|
|
131
131
|
|
|
132
|
-
//# sourceMappingURL=rmdir-OC4ZLPYA-
|
|
132
|
+
//# sourceMappingURL=rmdir-OC4ZLPYA-BGOrZMUa.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rmdir-OC4ZLPYA-
|
|
1
|
+
{"version":3,"file":"rmdir-OC4ZLPYA-BGOrZMUa.mjs","names":["p","g"],"sources":["../../../node_modules/.pnpm/just-bash@3.0.1/node_modules/just-bash/dist/bundle/chunks/chunk-SJYEXC2Z.js","../../../node_modules/.pnpm/just-bash@3.0.1/node_modules/just-bash/dist/bundle/chunks/rmdir-OC4ZLPYA.js"],"sourcesContent":["import{createRequire} from\"node:module\";const require=createRequire(import.meta.url);\nimport{a as p}from\"./chunk-QIQMJJZ4.js\";import{a as g}from\"./chunk-W5DWRFSU.js\";var x=`Usage: rmdir [-pv] DIRECTORY...\nRemove empty directories.\n\nOptions:\n -p, --parents Remove DIRECTORY and its ancestors\n -v, --verbose Output a diagnostic for every directory processed`,y={parents:{short:\"p\",long:\"parents\",type:\"boolean\"},verbose:{short:\"v\",long:\"verbose\",type:\"boolean\"},help:{long:\"help\",type:\"boolean\"}},D={name:\"rmdir\",async execute(t,r){let e=p(\"rmdir\",t,y);if(!e.ok)return e.error;if(e.result.flags.help)return{stdout:`${x}\n`,stderr:\"\",exitCode:0};let a=e.result.flags.parents,o=e.result.flags.verbose,s=e.result.positional;if(s.length===0)return{stdout:\"\",stderr:`rmdir: missing operand\n`,exitCode:1};let c=\"\",n=\"\",i=0;for(let u of s){let d=await b(r,u,a,o);c+=d.stdout,n+=d.stderr,d.exitCode!==0&&(i=d.exitCode)}return{stdout:c,stderr:n,exitCode:i}}};async function b(t,r,e,a){let o=\"\",s=\"\",n=t.fs.resolvePath(t.cwd,r),i=await v(t,n,r,a);if(o+=i.stdout,s+=i.stderr,i.exitCode!==0)return{stdout:o,stderr:s,exitCode:i.exitCode};if(e){let u=n,d=r;for(;;){let l=C(u),f=C(d);if(l===u||l===\"/\"||l===\".\"||f===\".\"||f===\"\")break;let m=await v(t,l,f,a);if(o+=m.stdout,m.exitCode!==0)break;u=l,d=f}}return{stdout:o,stderr:s,exitCode:0}}async function v(t,r,e,a){try{if(!await t.fs.exists(r))return{stdout:\"\",stderr:`rmdir: failed to remove '${e}': No such file or directory\n`,exitCode:1};if(!(await t.fs.stat(r)).isDirectory)return{stdout:\"\",stderr:`rmdir: failed to remove '${e}': Not a directory\n`,exitCode:1};if((await t.fs.readdir(r)).length>0)return{stdout:\"\",stderr:`rmdir: failed to remove '${e}': Directory not empty\n`,exitCode:1};await t.fs.rm(r,{recursive:!1,force:!1});let n=\"\";return a&&(n=`rmdir: removing directory, '${e}'\n`),{stdout:n,stderr:\"\",exitCode:0}}catch(o){let s=g(o);return{stdout:\"\",stderr:`rmdir: failed to remove '${e}': ${s}\n`,exitCode:1}}}function C(t){let r=t.replace(/\\/+$/,\"\"),e=r.lastIndexOf(\"/\");return e===-1?\".\":e===0?\"/\":r.substring(0,e)}var $={name:\"rmdir\",flags:[{flag:\"-p\",type:\"boolean\"},{flag:\"-v\",type:\"boolean\"}],needsArgs:!0};export{D as a,$ as b};\n","import{createRequire} from\"node:module\";const require=createRequire(import.meta.url);\nimport{a,b}from\"./chunk-SJYEXC2Z.js\";import\"./chunk-QIQMJJZ4.js\";import\"./chunk-W5DWRFSU.js\";import\"./chunk-QAYAQNCG.js\";import\"./chunk-BZUGFHVS.js\";export{b as flagsForFuzzing,a as rmdirCommand};\n"],"x_google_ignoreList":[0,1],"mappings":"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"}
|
package/dist/{run-package-manager-update-DgeSZuUc.mjs → run-package-manager-update-C4uA6xWB.mjs}
RENAMED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
2
|
+
import { Ri as LOCAL_PLATFORM_ORIGIN, gi as originFromPublicUrl } from "./dist-C6adeAws.mjs";
|
|
3
3
|
import Conf from "conf";
|
|
4
4
|
import { homedir } from "node:os";
|
|
5
5
|
import { dirname, join } from "node:path";
|
|
6
|
-
import { existsSync, readFileSync, realpathSync } from "node:fs";
|
|
6
|
+
import { existsSync, readFileSync, realpathSync, writeFileSync } from "node:fs";
|
|
7
7
|
import { spawnSync } from "node:child_process";
|
|
8
8
|
import { fileURLToPath } from "node:url";
|
|
9
9
|
//#region src/errors/expected-cli-error.ts
|
|
@@ -54,15 +54,6 @@ function resolvePlatformUrlForWebUrl(webUrl, options = {}) {
|
|
|
54
54
|
function getCliConfigDir(cwd = join(homedir(), ".keystroke")) {
|
|
55
55
|
return cwd;
|
|
56
56
|
}
|
|
57
|
-
function getConfigDir(config) {
|
|
58
|
-
return dirname(config.path);
|
|
59
|
-
}
|
|
60
|
-
function getEffectiveApiTarget(config) {
|
|
61
|
-
const explicit = config.get("apiTarget");
|
|
62
|
-
if (explicit === "local" || explicit === "platform") return explicit;
|
|
63
|
-
if (process.env.KEYSTROKE_API_KEY?.trim()) return "platform";
|
|
64
|
-
return "local";
|
|
65
|
-
}
|
|
66
57
|
function syncPlatformUrlWithWebUrl(config) {
|
|
67
58
|
const known = knownPlatformUrlForWebUrl(config.get("webUrl"));
|
|
68
59
|
if (!known) return;
|
|
@@ -81,10 +72,6 @@ function createCliConfig(cwd = getCliConfigDir()) {
|
|
|
81
72
|
type: "string",
|
|
82
73
|
default: DEFAULT_PLATFORM_URL
|
|
83
74
|
},
|
|
84
|
-
apiTarget: {
|
|
85
|
-
type: "string",
|
|
86
|
-
enum: ["local", "platform"]
|
|
87
|
-
},
|
|
88
75
|
credentialStorage: {
|
|
89
76
|
type: "string",
|
|
90
77
|
enum: ["keychain", "file"]
|
|
@@ -130,7 +117,33 @@ function readCliVersion() {
|
|
|
130
117
|
return JSON.parse(readFileSync(packageJsonPath, "utf8")).version ?? "0.0.0";
|
|
131
118
|
}
|
|
132
119
|
//#endregion
|
|
133
|
-
//#region
|
|
120
|
+
//#region ../../packages/shared/dist/cli-release.mjs
|
|
121
|
+
const STAGING_PLATFORM_HOST = "staging-api.keystroke.ai";
|
|
122
|
+
const CLI_PACKAGE_NAME$1 = "@keystrokehq/cli";
|
|
123
|
+
const REGISTRY_URL = "https://registry.npmjs.org/@keystrokehq%2Fcli";
|
|
124
|
+
const REQUEST_TIMEOUT_MS = 3e3;
|
|
125
|
+
/**
|
|
126
|
+
* npm dist-tag for `@keystrokehq/cli` auto-update / explicit update.
|
|
127
|
+
*
|
|
128
|
+
* Priority: KEYSTROKE_CLI_DIST_TAG → KEYSTROKE_ENVIRONMENT=staging →
|
|
129
|
+
* staging platform URL → latest.
|
|
130
|
+
*/
|
|
131
|
+
function resolveCliDistTag(env = process.env) {
|
|
132
|
+
const explicit = env.KEYSTROKE_CLI_DIST_TAG?.trim();
|
|
133
|
+
if (explicit) return explicit;
|
|
134
|
+
if (env.KEYSTROKE_ENVIRONMENT?.trim() === "staging") return "staging";
|
|
135
|
+
for (const key of ["KEYSTROKE_PLATFORM_URL", "PUBLIC_PLATFORM_URL"]) {
|
|
136
|
+
const raw = env[key]?.trim();
|
|
137
|
+
if (!raw) continue;
|
|
138
|
+
try {
|
|
139
|
+
if (new URL(raw).hostname === STAGING_PLATFORM_HOST) return "staging";
|
|
140
|
+
} catch {}
|
|
141
|
+
}
|
|
142
|
+
return "latest";
|
|
143
|
+
}
|
|
144
|
+
function cliPackageSpec(distTagOrVersion = resolveCliDistTag()) {
|
|
145
|
+
return `${CLI_PACKAGE_NAME$1}@${distTagOrVersion}`;
|
|
146
|
+
}
|
|
134
147
|
function parseVersion(version) {
|
|
135
148
|
const [major = 0, minor = 0, patch = 0] = (version.trim().replace(/^v/, "").split("-")[0] ?? "").split(".").map((part) => {
|
|
136
149
|
const value = Number.parseInt(part, 10);
|
|
@@ -142,13 +155,160 @@ function parseVersion(version) {
|
|
|
142
155
|
patch
|
|
143
156
|
];
|
|
144
157
|
}
|
|
158
|
+
/** `0.0.0-staging.<timestamp>` → timestamp, else undefined. */
|
|
159
|
+
function stagingSnapshotTimestamp(version) {
|
|
160
|
+
const match = version.trim().replace(/^v/, "").match(/^0\.0\.0-staging\.(\d+)$/);
|
|
161
|
+
if (!match?.[1]) return;
|
|
162
|
+
const value = Number.parseInt(match[1], 10);
|
|
163
|
+
return Number.isFinite(value) ? value : void 0;
|
|
164
|
+
}
|
|
165
|
+
function isStagingSnapshotVersion(version) {
|
|
166
|
+
return stagingSnapshotTimestamp(version) !== void 0;
|
|
167
|
+
}
|
|
145
168
|
function isNewerVersion(latest, current) {
|
|
169
|
+
const latestStaging = stagingSnapshotTimestamp(latest);
|
|
170
|
+
const currentStaging = stagingSnapshotTimestamp(current);
|
|
171
|
+
if (latestStaging !== void 0 && currentStaging !== void 0) return latestStaging > currentStaging;
|
|
146
172
|
const [latestMajor, latestMinor, latestPatch] = parseVersion(latest);
|
|
147
173
|
const [currentMajor, currentMinor, currentPatch] = parseVersion(current);
|
|
148
174
|
if (latestMajor !== currentMajor) return latestMajor > currentMajor;
|
|
149
175
|
if (latestMinor !== currentMinor) return latestMinor > currentMinor;
|
|
150
176
|
return latestPatch > currentPatch;
|
|
151
177
|
}
|
|
178
|
+
/**
|
|
179
|
+
* Whether auto-update / `keystroke update` should install `registryVersion`.
|
|
180
|
+
* Handles channel switches (prod ↔ staging) where semver alone would refuse.
|
|
181
|
+
*/
|
|
182
|
+
function shouldUpdateCliVersion(input) {
|
|
183
|
+
const { registryVersion, currentVersion, distTag } = input;
|
|
184
|
+
if (registryVersion.trim() === currentVersion.trim()) return false;
|
|
185
|
+
const currentIsStaging = isStagingSnapshotVersion(currentVersion);
|
|
186
|
+
const registryIsStaging = isStagingSnapshotVersion(registryVersion);
|
|
187
|
+
if (distTag === "staging") {
|
|
188
|
+
if (!currentIsStaging) return true;
|
|
189
|
+
return isNewerVersion(registryVersion, currentVersion);
|
|
190
|
+
}
|
|
191
|
+
if (currentIsStaging && !registryIsStaging) return true;
|
|
192
|
+
return isNewerVersion(registryVersion, currentVersion);
|
|
193
|
+
}
|
|
194
|
+
async function fetchLatestCliRelease(distTag = resolveCliDistTag(), options) {
|
|
195
|
+
const timeoutMs = options?.timeoutMs ?? REQUEST_TIMEOUT_MS;
|
|
196
|
+
const fetchImpl = options?.fetchImpl ?? fetch;
|
|
197
|
+
const controller = new AbortController();
|
|
198
|
+
const timeout = setTimeout(() => controller.abort(), timeoutMs);
|
|
199
|
+
try {
|
|
200
|
+
const response = await fetchImpl(REGISTRY_URL, {
|
|
201
|
+
signal: controller.signal,
|
|
202
|
+
headers: { Accept: "application/json" }
|
|
203
|
+
});
|
|
204
|
+
if (!response.ok) return;
|
|
205
|
+
const payload = await response.json();
|
|
206
|
+
const version = payload["dist-tags"]?.[distTag]?.trim();
|
|
207
|
+
if (!version) return;
|
|
208
|
+
return {
|
|
209
|
+
version,
|
|
210
|
+
publishedAt: payload.time?.[version],
|
|
211
|
+
distTag
|
|
212
|
+
};
|
|
213
|
+
} catch {
|
|
214
|
+
return;
|
|
215
|
+
} finally {
|
|
216
|
+
clearTimeout(timeout);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
//#endregion
|
|
220
|
+
//#region src/update/ensure-sdk-current.ts
|
|
221
|
+
const CLI_PACKAGE_NAME = "@keystrokehq/cli";
|
|
222
|
+
const KEYSTROKE_SCOPE = "@keystrokehq/";
|
|
223
|
+
const REGISTRY_TIMEOUT_MS = 3e3;
|
|
224
|
+
function shouldSkip() {
|
|
225
|
+
return Boolean(process.env.KEYSTROKE_SKIP_UPDATE || process.env.CI === "true" || process.env.CI === "1");
|
|
226
|
+
}
|
|
227
|
+
function readPackageJson(root) {
|
|
228
|
+
const path = join(root, "package.json");
|
|
229
|
+
if (!existsSync(path)) return;
|
|
230
|
+
try {
|
|
231
|
+
return JSON.parse(readFileSync(path, "utf8"));
|
|
232
|
+
} catch {
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
/** Local/workspace specs are left alone; everything else (ranges and exact pins) must stay current. */
|
|
237
|
+
function isLocalSdkSpec(spec) {
|
|
238
|
+
if (!spec) return true;
|
|
239
|
+
const trimmed = spec.trim();
|
|
240
|
+
return trimmed.startsWith("workspace:") || trimmed.startsWith("link:") || trimmed.startsWith("file:");
|
|
241
|
+
}
|
|
242
|
+
function listManagedKeystrokePackages(root) {
|
|
243
|
+
const pkg = readPackageJson(root);
|
|
244
|
+
if (!pkg) return [];
|
|
245
|
+
const packages = [];
|
|
246
|
+
for (const [name, spec] of Object.entries({
|
|
247
|
+
...pkg.dependencies,
|
|
248
|
+
...pkg.devDependencies
|
|
249
|
+
})) {
|
|
250
|
+
if (name === "@keystrokehq/cli") continue;
|
|
251
|
+
if (name.startsWith(KEYSTROKE_SCOPE) && !isLocalSdkSpec(spec)) packages.push({ name });
|
|
252
|
+
}
|
|
253
|
+
return packages;
|
|
254
|
+
}
|
|
255
|
+
function readInstalledVersion(root, packageName) {
|
|
256
|
+
const path = join(root, "node_modules", ...packageName.split("/"), "package.json");
|
|
257
|
+
if (!existsSync(path)) return;
|
|
258
|
+
try {
|
|
259
|
+
return JSON.parse(readFileSync(path, "utf8")).version?.trim() || void 0;
|
|
260
|
+
} catch {
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
async function fetchLatestPackageVersion(packageName) {
|
|
265
|
+
const controller = new AbortController();
|
|
266
|
+
const timeout = setTimeout(() => controller.abort(), REGISTRY_TIMEOUT_MS);
|
|
267
|
+
try {
|
|
268
|
+
const response = await fetch(`https://registry.npmjs.org/${encodeURIComponent(packageName)}`, {
|
|
269
|
+
signal: controller.signal,
|
|
270
|
+
headers: { Accept: "application/json" }
|
|
271
|
+
});
|
|
272
|
+
if (!response.ok) return;
|
|
273
|
+
return (await response.json())["dist-tags"]?.latest?.trim() || void 0;
|
|
274
|
+
} catch {
|
|
275
|
+
return;
|
|
276
|
+
} finally {
|
|
277
|
+
clearTimeout(timeout);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
function formatOutdatedLine(pkg) {
|
|
281
|
+
if (pkg.installed && pkg.latest) return `- ${pkg.name} (${pkg.installed} → ${pkg.latest})`;
|
|
282
|
+
if (pkg.latest) return `- ${pkg.name} (not installed → ${pkg.latest})`;
|
|
283
|
+
return `- ${pkg.name}`;
|
|
284
|
+
}
|
|
285
|
+
async function packagesNeedingUpdate(root, packages) {
|
|
286
|
+
return (await Promise.all(packages.map(async (pkg) => {
|
|
287
|
+
const installed = readInstalledVersion(root, pkg.name);
|
|
288
|
+
const latest = await fetchLatestPackageVersion(pkg.name);
|
|
289
|
+
if (!latest) return installed ? void 0 : {
|
|
290
|
+
name: pkg.name,
|
|
291
|
+
installed
|
|
292
|
+
};
|
|
293
|
+
if (!installed || isNewerVersion(latest, installed)) return {
|
|
294
|
+
name: pkg.name,
|
|
295
|
+
installed,
|
|
296
|
+
latest
|
|
297
|
+
};
|
|
298
|
+
}))).flatMap((pkg) => pkg ? [pkg] : []);
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Require @keystrokehq/* project dependencies to be on latest before build/deploy.
|
|
302
|
+
* Skips `@keystrokehq/cli` (global + self-updating). Throws instead of auto-installing.
|
|
303
|
+
*/
|
|
304
|
+
async function ensureSdkCurrent(root) {
|
|
305
|
+
if (shouldSkip()) return;
|
|
306
|
+
const packages = listManagedKeystrokePackages(root);
|
|
307
|
+
if (packages.length === 0) return;
|
|
308
|
+
const outdated = await packagesNeedingUpdate(root, packages);
|
|
309
|
+
if (outdated.length === 0) return;
|
|
310
|
+
throw new ExpectedCliError(`@keystrokehq packages are behind npm latest:\n${outdated.map(formatOutdatedLine).join("\n")}\n\nRun \`keystroke update\`, then retry.`);
|
|
311
|
+
}
|
|
152
312
|
//#endregion
|
|
153
313
|
//#region src/init/package-manager.ts
|
|
154
314
|
const MANAGERS = [
|
|
@@ -202,7 +362,7 @@ function installPlaygroundDependencies(cwd) {
|
|
|
202
362
|
}
|
|
203
363
|
/**
|
|
204
364
|
* Build every workspace package so the playground's `link:` deps resolve to
|
|
205
|
-
* compiled `dist/`. Without this,
|
|
365
|
+
* compiled `dist/`. Without this, local imports fail with
|
|
206
366
|
* `ERR_MODULE_NOT_FOUND` against whichever package was never built. Turbo
|
|
207
367
|
* caches, so this is only slow on the first run.
|
|
208
368
|
*/
|
|
@@ -223,6 +383,14 @@ function realpathSafe(path) {
|
|
|
223
383
|
return path;
|
|
224
384
|
}
|
|
225
385
|
}
|
|
386
|
+
/**
|
|
387
|
+
* Resolve an npm `--prefix` root from a global package path.
|
|
388
|
+
* Layout: `<prefix>/lib/node_modules/@keystrokehq/cli`.
|
|
389
|
+
*/
|
|
390
|
+
function resolveNpmInstallPrefix(packageRoot) {
|
|
391
|
+
const prefix = packageRoot.replace(/\\/g, "/").replace(/\/+$/, "").match(/^(.*)\/lib\/node_modules\/@keystrokehq\/cli$/)?.[1]?.trim();
|
|
392
|
+
return prefix && prefix.length > 0 ? prefix : void 0;
|
|
393
|
+
}
|
|
226
394
|
function detectManagerFromLockfile(dir) {
|
|
227
395
|
if (existsSync(join(dir, "pnpm-lock.yaml"))) return "pnpm";
|
|
228
396
|
if (existsSync(join(dir, "bun.lockb")) || existsSync(join(dir, "bun.lock"))) return "bun";
|
|
@@ -286,6 +454,13 @@ function detectCliInstall(packageRoot) {
|
|
|
286
454
|
packageRoot: normalizedRoot,
|
|
287
455
|
projectRoot
|
|
288
456
|
};
|
|
457
|
+
const npmPrefix = resolveNpmInstallPrefix(normalizedRoot);
|
|
458
|
+
if (npmPrefix) return {
|
|
459
|
+
kind: "global",
|
|
460
|
+
packageManager: "npm",
|
|
461
|
+
packageRoot: normalizedRoot,
|
|
462
|
+
npmPrefix
|
|
463
|
+
};
|
|
289
464
|
return {
|
|
290
465
|
kind: "global",
|
|
291
466
|
packageManager: detectGlobalManager(normalizedRoot),
|
|
@@ -306,33 +481,7 @@ function isReleaseAgeBlock(output) {
|
|
|
306
481
|
}
|
|
307
482
|
function formatReleaseAgeBlockMessage(options) {
|
|
308
483
|
const retry = options.retryAfter !== void 0 ? ` Retry after ${options.retryAfter.toLocaleString()}.` : "";
|
|
309
|
-
return `@keystrokehq/cli ${options.availableVersion} is available but blocked by your minimum-release-age setting. You're on ${options.currentVersion}.${retry}
|
|
310
|
-
}
|
|
311
|
-
//#endregion
|
|
312
|
-
//#region src/update/fetch-latest-version.ts
|
|
313
|
-
const REGISTRY_URL = "https://registry.npmjs.org/@keystrokehq%2Fcli";
|
|
314
|
-
const REQUEST_TIMEOUT_MS = 3e3;
|
|
315
|
-
async function fetchLatestCliRelease() {
|
|
316
|
-
const controller = new AbortController();
|
|
317
|
-
const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS);
|
|
318
|
-
try {
|
|
319
|
-
const response = await fetch(REGISTRY_URL, {
|
|
320
|
-
signal: controller.signal,
|
|
321
|
-
headers: { Accept: "application/json" }
|
|
322
|
-
});
|
|
323
|
-
if (!response.ok) return;
|
|
324
|
-
const payload = await response.json();
|
|
325
|
-
const version = payload["dist-tags"]?.latest?.trim();
|
|
326
|
-
if (!version) return;
|
|
327
|
-
return {
|
|
328
|
-
version,
|
|
329
|
-
publishedAt: payload.time?.[version]
|
|
330
|
-
};
|
|
331
|
-
} catch {
|
|
332
|
-
return;
|
|
333
|
-
} finally {
|
|
334
|
-
clearTimeout(timeout);
|
|
335
|
-
}
|
|
484
|
+
return `@keystrokehq/cli ${options.availableVersion} is available but blocked by your minimum-release-age setting. You're on ${options.currentVersion}.${retry} Run \`keystroke update\` again — it bypasses minimum-release-age for @keystrokehq packages and retries.`;
|
|
336
485
|
}
|
|
337
486
|
//#endregion
|
|
338
487
|
//#region src/update/read-pnpm-release-age-minutes.ts
|
|
@@ -362,16 +511,16 @@ function resolveGlobalPnpmRoot(packageRoot) {
|
|
|
362
511
|
}
|
|
363
512
|
//#endregion
|
|
364
513
|
//#region src/update/build-update-command.ts
|
|
365
|
-
|
|
366
|
-
function buildUpdateCommand(install) {
|
|
514
|
+
function buildUpdateCommand(install, distTag = resolveCliDistTag()) {
|
|
367
515
|
const { kind, packageManager } = install;
|
|
516
|
+
const packageName = cliPackageSpec(distTag);
|
|
368
517
|
if (kind === "global") switch (packageManager) {
|
|
369
518
|
case "pnpm": return {
|
|
370
519
|
command: "pnpm",
|
|
371
520
|
args: [
|
|
372
521
|
"add",
|
|
373
522
|
"-g",
|
|
374
|
-
|
|
523
|
+
packageName
|
|
375
524
|
],
|
|
376
525
|
cwd: resolveGlobalPnpmRoot(install.packageRoot)
|
|
377
526
|
};
|
|
@@ -380,7 +529,7 @@ function buildUpdateCommand(install) {
|
|
|
380
529
|
args: [
|
|
381
530
|
"global",
|
|
382
531
|
"add",
|
|
383
|
-
|
|
532
|
+
packageName
|
|
384
533
|
]
|
|
385
534
|
};
|
|
386
535
|
case "bun": return {
|
|
@@ -388,17 +537,28 @@ function buildUpdateCommand(install) {
|
|
|
388
537
|
args: [
|
|
389
538
|
"add",
|
|
390
539
|
"-g",
|
|
391
|
-
|
|
392
|
-
]
|
|
393
|
-
};
|
|
394
|
-
default: return {
|
|
395
|
-
command: "npm",
|
|
396
|
-
args: [
|
|
397
|
-
"install",
|
|
398
|
-
"-g",
|
|
399
|
-
PACKAGE_NAME
|
|
540
|
+
packageName
|
|
400
541
|
]
|
|
401
542
|
};
|
|
543
|
+
default:
|
|
544
|
+
if (install.npmPrefix) return {
|
|
545
|
+
command: "npm",
|
|
546
|
+
args: [
|
|
547
|
+
"install",
|
|
548
|
+
"-g",
|
|
549
|
+
"--prefix",
|
|
550
|
+
install.npmPrefix,
|
|
551
|
+
packageName
|
|
552
|
+
]
|
|
553
|
+
};
|
|
554
|
+
return {
|
|
555
|
+
command: "npm",
|
|
556
|
+
args: [
|
|
557
|
+
"install",
|
|
558
|
+
"-g",
|
|
559
|
+
packageName
|
|
560
|
+
]
|
|
561
|
+
};
|
|
402
562
|
}
|
|
403
563
|
const cwd = install.projectRoot;
|
|
404
564
|
switch (packageManager) {
|
|
@@ -407,7 +567,7 @@ function buildUpdateCommand(install) {
|
|
|
407
567
|
args: [
|
|
408
568
|
"add",
|
|
409
569
|
"-D",
|
|
410
|
-
|
|
570
|
+
packageName
|
|
411
571
|
],
|
|
412
572
|
cwd
|
|
413
573
|
};
|
|
@@ -416,7 +576,7 @@ function buildUpdateCommand(install) {
|
|
|
416
576
|
args: [
|
|
417
577
|
"add",
|
|
418
578
|
"-D",
|
|
419
|
-
|
|
579
|
+
packageName
|
|
420
580
|
],
|
|
421
581
|
cwd
|
|
422
582
|
};
|
|
@@ -425,7 +585,7 @@ function buildUpdateCommand(install) {
|
|
|
425
585
|
args: [
|
|
426
586
|
"add",
|
|
427
587
|
"-D",
|
|
428
|
-
|
|
588
|
+
packageName
|
|
429
589
|
],
|
|
430
590
|
cwd
|
|
431
591
|
};
|
|
@@ -434,13 +594,53 @@ function buildUpdateCommand(install) {
|
|
|
434
594
|
args: [
|
|
435
595
|
"install",
|
|
436
596
|
"-D",
|
|
437
|
-
|
|
597
|
+
packageName
|
|
438
598
|
],
|
|
439
599
|
cwd
|
|
440
600
|
};
|
|
441
601
|
}
|
|
442
602
|
}
|
|
443
603
|
//#endregion
|
|
604
|
+
//#region src/update/ensure-release-age-exclude.ts
|
|
605
|
+
const EXCLUDE_PREFIX = "minimum-release-age-exclude[]=";
|
|
606
|
+
function npmrcPath(root) {
|
|
607
|
+
return join(root, ".npmrc");
|
|
608
|
+
}
|
|
609
|
+
/** Package names already listed as `minimum-release-age-exclude[]=` in an .npmrc body. */
|
|
610
|
+
function parseMinimumReleaseAgeExcludes(contents) {
|
|
611
|
+
const found = [];
|
|
612
|
+
for (const rawLine of contents.split(/\r?\n/)) {
|
|
613
|
+
const line = rawLine.trim();
|
|
614
|
+
if (!line.startsWith(EXCLUDE_PREFIX)) continue;
|
|
615
|
+
const value = line.slice(30).trim();
|
|
616
|
+
if (value) found.push(value);
|
|
617
|
+
}
|
|
618
|
+
return found;
|
|
619
|
+
}
|
|
620
|
+
/**
|
|
621
|
+
* Ensure each package is listed in the project `.npmrc` as
|
|
622
|
+
* `minimum-release-age-exclude[]=<name>` so `pnpm add pkg@latest` is not held
|
|
623
|
+
* back by minimum-release-age. Creates `.npmrc` when missing.
|
|
624
|
+
*
|
|
625
|
+
* Returns the packages that were newly added (empty when already present).
|
|
626
|
+
*/
|
|
627
|
+
function ensureMinimumReleaseAgeExclude(root, packageNames) {
|
|
628
|
+
const unique = [...new Set(packageNames.map((name) => name.trim()).filter(Boolean))].sort();
|
|
629
|
+
if (unique.length === 0) return [];
|
|
630
|
+
const path = npmrcPath(root);
|
|
631
|
+
const existing = existsSync(path) ? readFileSync(path, "utf8") : "";
|
|
632
|
+
const already = new Set(parseMinimumReleaseAgeExcludes(existing));
|
|
633
|
+
const added = unique.filter((name) => !already.has(name));
|
|
634
|
+
if (added.length === 0) return [];
|
|
635
|
+
const trimmed = existing.replace(/\s+$/, "");
|
|
636
|
+
writeFileSync(path, [
|
|
637
|
+
...trimmed.length > 0 ? [trimmed] : [],
|
|
638
|
+
...added.map((name) => `${EXCLUDE_PREFIX}${name}`),
|
|
639
|
+
""
|
|
640
|
+
].join("\n"), "utf8");
|
|
641
|
+
return added;
|
|
642
|
+
}
|
|
643
|
+
//#endregion
|
|
444
644
|
//#region src/update/run-package-manager-update.ts
|
|
445
645
|
function updateSpawnEnv() {
|
|
446
646
|
const env = { ...process.env };
|
|
@@ -475,16 +675,31 @@ function migratePnpmGlobal(cwd) {
|
|
|
475
675
|
}
|
|
476
676
|
}).status === 0;
|
|
477
677
|
}
|
|
478
|
-
|
|
479
|
-
|
|
678
|
+
/** Bypass minimum-release-age for this one CLI install without editing user config. */
|
|
679
|
+
function withCliReleaseAgeExclude(args) {
|
|
680
|
+
return [...args, `--config.minimum-release-age-exclude[]=${CLI_PACKAGE_NAME}`];
|
|
681
|
+
}
|
|
682
|
+
function runPackageManagerUpdate(install, distTag) {
|
|
683
|
+
const { command, args, cwd } = buildUpdateCommand(install, distTag);
|
|
480
684
|
const firstAttempt = runPackageManager(command, args, cwd);
|
|
481
685
|
if (firstAttempt.ok) return firstAttempt;
|
|
482
686
|
if (install.kind === "global" && install.packageManager === "pnpm" && cwd) {
|
|
483
|
-
if (migratePnpmGlobal(cwd))
|
|
687
|
+
if (migratePnpmGlobal(cwd)) {
|
|
688
|
+
const migrated = runPackageManager(command, args, cwd);
|
|
689
|
+
if (migrated.ok) return migrated;
|
|
690
|
+
}
|
|
691
|
+
}
|
|
692
|
+
if (install.packageManager === "pnpm" && isReleaseAgeBlock(firstAttempt.output)) {
|
|
693
|
+
if (install.kind === "local" && install.projectRoot) {
|
|
694
|
+
if (ensureMinimumReleaseAgeExclude(install.projectRoot, ["@keystrokehq/cli"]).length > 0) process.stderr.write(`Added ${CLI_PACKAGE_NAME} to .npmrc minimum-release-age-exclude; retrying CLI update...\n`);
|
|
695
|
+
return runPackageManager(command, args, cwd);
|
|
696
|
+
}
|
|
697
|
+
process.stderr.write(`Retrying CLI update with temporary minimum-release-age-exclude for ${CLI_PACKAGE_NAME}...\n`);
|
|
698
|
+
return runPackageManager(command, withCliReleaseAgeExclude(args), cwd);
|
|
484
699
|
}
|
|
485
700
|
return firstAttempt;
|
|
486
701
|
}
|
|
487
702
|
//#endregion
|
|
488
|
-
export {
|
|
703
|
+
export { resolvePlatformUrlForWebUrl as A, createCliConfig as C, getWebUrl as D, getPlatformUrl as E, ExpectedCliError as M, isExpectedCliError as N, DEFAULT_PLATFORM_URL as O, resolveCliRoot as S, getCredentialStorage as T, isLocalSdkSpec as _, formatReleaseAgeBlockMessage as a, shouldUpdateCliVersion as b, detectManagerFromLockfile as c, installDependencies as d, installPlaygroundDependencies as f, ensureSdkCurrent as g, CLI_PACKAGE_NAME as h, readPnpmMinimumReleaseAgeMinutes as i, parseCredentialStorage as j, DEFAULT_WEB_URL as k, buildPlaygroundWorkspace as l, resolvePackageManager as m, ensureMinimumReleaseAgeExclude as n, isReleaseAgeBlock as o, resolveGithubPackagesToken as p, computeReleaseAgeRetryAfter as r, detectCliInstall as s, runPackageManagerUpdate as t, detectPackageManager as u, fetchLatestCliRelease as v, getCliConfigDir as w, readCliVersion as x, resolveCliDistTag as y };
|
|
489
704
|
|
|
490
|
-
//# sourceMappingURL=run-package-manager-update-
|
|
705
|
+
//# sourceMappingURL=run-package-manager-update-C4uA6xWB.mjs.map
|