@keystrokehq/cli 0.1.146 → 0.1.148
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-B72RPrho.mjs → dist-BjwZD7UZ.mjs} +43817 -28658
- package/dist/dist-BjwZD7UZ.mjs.map +1 -0
- package/dist/{dist-E6dh6qXe.mjs → dist-C6adeAws.mjs} +1006 -138
- package/dist/dist-C6adeAws.mjs.map +1 -0
- package/dist/dist-CgDJj_3M.mjs +3 -0
- package/dist/dist-GDLyM5sd.mjs +4 -0
- package/dist/dist-xLTJXuWY.mjs +1827 -0
- package/dist/dist-xLTJXuWY.mjs.map +1 -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 +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-DU1iPR-p.mjs} +4482 -1013
- package/dist/program-DU1iPR-p.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 +1 -4
- 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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"python3-POMOR4OA-CKy80mpF.mjs","names":["R","Q","v","U","i","c","y","w","n","O","A","r","_","d","u","T","M","P","o","s","E","D"],"sources":["../../../node_modules/.pnpm/just-bash@3.0.1/node_modules/just-bash/dist/bundle/chunks/python3-POMOR4OA.js"],"sourcesContent":["import{createRequire} from\"node:module\";const require=createRequire(import.meta.url);\nimport{a as O,b as A}from\"./chunk-5H5SCKJM.js\";import\"./chunk-WNH3HOQA.js\";import\"./chunk-HBVMHTO5.js\";import{a as T,b}from\"./chunk-XRFHFXFP.js\";import\"./chunk-L2UW7DWF.js\";import{a as _}from\"./chunk-DLL7UR66.js\";import{c as y}from\"./chunk-L64BMZUV.js\";import{b as v}from\"./chunk-TN7HHBQW.js\";import{c as E}from\"./chunk-NRSASXYY.js\";import{a as D,b as c}from\"./chunk-FOCWZZDE.js\";import{a as w}from\"./chunk-W5DWRFSU.js\";import{a as P,b as M}from\"./chunk-QAYAQNCG.js\";import\"./chunk-BZUGFHVS.js\";import{randomBytes as Q}from\"node:crypto\";import{fileURLToPath as R}from\"node:url\";import{Worker as U}from\"node:worker_threads\";var H=1e4,I=6e4,L={name:\"python3\",summary:\"Execute Python code via CPython Emscripten\",usage:\"python3 [OPTIONS] [-c CODE | -m MODULE | FILE] [ARGS...]\",description:[\"Execute Python code using CPython compiled to WebAssembly via Emscripten.\",\"\",\"This command runs Python in an isolated environment with access to\",\"the virtual filesystem. Standard library modules are available.\"],options:[\"-c CODE Execute CODE as Python script\",\"-m MODULE Run library module as a script\",\"--version Show Python version\",\"--help Show this help\"],examples:['python3 -c \"print(1 + 2)\"','python3 -c \"import sys; print(sys.version)\"',\"python3 script.py\",\"python3 script.py arg1 arg2\",`echo 'print(\"hello\")' | python3`],notes:[\"CPython runs in WebAssembly, so execution may be slower than native Python.\",\"Standard library modules are available (no pip install).\",\"Maximum execution time is 30 seconds by default.\"]};function z(r){let e={code:null,module:null,scriptFile:null,showVersion:!1,scriptArgs:[]};if(r.length===0)return e;let t=r.findIndex(o=>!o.startsWith(\"-\")||o===\"-\"||o===\"--\");for(let o=0;o<(t===-1?r.length:t);o++){let s=r[o];if(s===\"-c\")return o+1>=r.length?{stdout:\"\",stderr:`python3: option requires an argument -- 'c'\n`,exitCode:2}:(e.code=r[o+1],e.scriptArgs=r.slice(o+2),e);if(s===\"-m\")return o+1>=r.length?{stdout:\"\",stderr:`python3: option requires an argument -- 'm'\n`,exitCode:2}:(e.module=r[o+1],e.scriptArgs=r.slice(o+2),e);if(s===\"--version\"||s===\"-V\")return e.showVersion=!0,e;if(s.startsWith(\"-\")&&s!==\"-\")return{stdout:\"\",stderr:`python3: unrecognized option '${s}'\n`,exitCode:2}}if(t!==-1){let o=r[t];o===\"--\"?t+1<r.length&&(e.scriptFile=r[t+1],e.scriptArgs=r.slice(t+2)):(e.scriptFile=o,e.scriptArgs=r.slice(t+1))}return e}var C=new WeakMap;function N(r){let e=C.get(r);return e||(e={executionQueue:[],isExecuting:!1},C.set(r,e)),e}function ue(){C=new WeakMap}var B=R(new URL(\"./worker.js\",import.meta.url));function V(){return Q(16).toString(\"hex\")}function j(r,e){if(!r||typeof r!=\"object\")return{success:!1,error:\"Malformed worker response\"};let t=r;return typeof t.protocolToken!=\"string\"||t.protocolToken!==e?{success:!1,error:\"Malformed worker response: invalid protocol token\"}:t.type===\"security-violation\"?{success:!1,error:`Security violation: ${typeof t.violation?.type==\"string\"?t.violation.type:\"unknown\"}`}:typeof t.success!=\"boolean\"?{success:!1,error:\"Malformed worker response: missing success flag\"}:t.success?{success:!0}:{success:!1,error:typeof t.error==\"string\"&&t.error.length>0?t.error:\"Worker execution failed\"}}function a(r){if(r.isExecuting||r.executionQueue.length===0)return;for(;r.executionQueue.length>0&&r.executionQueue[0].canceled;)r.executionQueue.shift();if(r.executionQueue.length===0)return;let e=r.executionQueue.shift();if(!e)return;r.isExecuting=!0;let t;try{t=v.runTrusted(()=>new U(B,{workerData:e.input}))}catch(n){let i=n instanceof Error?n.message:String(n);e.resolve({success:!1,error:c(i)}),r.isExecuting=!1,a(r);return}e.workerRef&&(e.workerRef.current=t);let o=y(e.requireDefenseContext,\"python3\",\"worker message callback\",n=>{e.resolve(j(n,e.input.protocolToken)),r.isExecuting=!1,t.terminate(),a(r)}),s=y(e.requireDefenseContext,\"python3\",\"worker error callback\",n=>{let i=c(w(n));e.resolve({success:!1,error:i}),r.isExecuting=!1,a(r)}),p=y(e.requireDefenseContext,\"python3\",\"worker exit callback\",()=>{r.isExecuting&&(e.resolve({success:!1,error:\"Worker exited unexpectedly\"}),r.isExecuting=!1,a(r))}),f=n=>{try{o(n)}catch(i){let m=i instanceof Error?i.message:String(i);e.resolve({success:!1,error:c(m)}),r.isExecuting=!1,t.terminate(),a(r)}},l=n=>{try{s(n)}catch(i){let m=i instanceof Error?i.message:String(i);e.resolve({success:!1,error:c(m)}),r.isExecuting=!1,a(r)}},g=()=>{try{p()}catch(n){let i=n instanceof Error?n.message:String(n);e.resolve({success:!1,error:c(i)}),r.isExecuting=!1,a(r)}};t.on(\"message\",f),t.on(\"error\",l),t.on(\"exit\",g)}async function Y(r,e,t,o=[]){let s=O(),p=new A(s,e.fs,e.cwd,\"python3\",e.fetch,e.limits?.maxOutputSize??0),f=e.limits?.maxPythonTimeoutMs??H,l=e.fetch?Math.max(f,I):f,g=N(e.fs),n={protocolToken:V(),sharedBuffer:s,pythonCode:r,cwd:e.cwd,env:_(e.env),args:o,scriptPath:t,timeoutMs:l},i={current:null},m=new Promise(u=>{let d={input:n,resolve:()=>{},workerRef:i,requireDefenseContext:e.requireDefenseContext},F=y(e.requireDefenseContext,\"python3\",\"worker timeout callback\",()=>{i.current?i.current.terminate():d.canceled=!0,u({success:!1,error:`Execution timeout: exceeded ${l}ms limit`})}),W=T(()=>{try{F()}catch(h){let $=h instanceof Error?h.message:String(h);u({success:!1,error:c($)})}},l);d.resolve=h=>{b(W),u(h)},g.executionQueue.push(d),a(g)}),[x,k]=await Promise.all([p.run(l).catch(u=>({stdout:\"\",stderr:`python3: bridge error: ${c(w(u))}\n`,exitCode:1})),m.catch(u=>({success:!1,error:c(w(u))}))]);if(!k.success&&k.error){let u=c(k.error);return{stdout:x.stdout,stderr:`${x.stderr}python3: ${u}\n`,exitCode:x.exitCode||1}}return{...x}}var Z={name:\"python3\",async execute(r,e){if(M(r))return P(L);let t=z(r);if(\"exitCode\"in t)return t;if(t.showVersion)return{stdout:`Python 3.13.2 (Emscripten)\n`,stderr:\"\",exitCode:0};let o,s;if(t.code!==null)o=t.code,s=\"-c\";else if(t.module!==null){if(!/^[a-zA-Z_][a-zA-Z0-9_.]*$/.test(t.module))return{stdout:\"\",stderr:`python3: No module named '${t.module.slice(0,200)}'\n`,exitCode:1};o=`import runpy; runpy.run_module('${t.module}', run_name='__main__')`,s=t.module}else if(t.scriptFile===\"-\")o=E(e.stdin),s=\"-\";else if(t.scriptFile!==null){let p=e.fs.resolvePath(e.cwd,t.scriptFile);if(!await e.fs.exists(p))return{stdout:\"\",stderr:`python3: can't open file '${t.scriptFile}': [Errno 2] No such file or directory\n`,exitCode:2};try{o=await e.fs.readFile(p),s=t.scriptFile}catch(f){let l=D(f.message);return{stdout:\"\",stderr:`python3: can't open file '${t.scriptFile}': ${l}\n`,exitCode:2}}}else if(E(e.stdin).trim())o=E(e.stdin),s=\"<stdin>\";else return{stdout:\"\",stderr:`python3: no input provided (use -c CODE, -m MODULE, or provide a script file)\n`,exitCode:2};return Y(o,e,s,t.scriptArgs)}},le={name:\"python\",async execute(r,e){return Z.execute(r,e)}};export{ue as _resetExecutionQueue,Z as python3Command,le as pythonCommand};\n"],"x_google_ignoreList":[0],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"run-package-manager-update-DgeSZuUc.mjs","names":[],"sources":["../src/errors/expected-cli-error.ts","../src/auth/credential-storage.ts","../src/resolve-platform-url.ts","../src/config.ts","../src/project/resolve-cli-root.ts","../src/version.ts","../src/update/compare-version.ts","../src/init/package-manager.ts","../src/update/detect-cli-install.ts","../src/update/detect-release-age-block.ts","../src/update/fetch-latest-version.ts","../src/update/read-pnpm-release-age-minutes.ts","../src/update/resolve-global-pnpm-root.ts","../src/update/build-update-command.ts","../src/update/run-package-manager-update.ts"],"sourcesContent":["/**\n * User/project failures that are expected CLI exits (lint, typecheck, validation, etc.).\n * These should not become Error Tracking issues.\n */\nexport class ExpectedCliError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(message, options);\n this.name = \"ExpectedCliError\";\n }\n}\n\nexport function isExpectedCliError(error: unknown): error is ExpectedCliError {\n return error instanceof ExpectedCliError;\n}\n","import { ExpectedCliError } from \"../errors/expected-cli-error\";\n\nexport const CREDENTIAL_STORAGE_VALUES = [\"keychain\", \"file\"] as const;\n\nexport type CredentialStorage = (typeof CREDENTIAL_STORAGE_VALUES)[number];\n\nexport function isCredentialStorage(value: unknown): value is CredentialStorage {\n return value === \"keychain\" || value === \"file\";\n}\n\nexport function parseCredentialStorage(value: string): CredentialStorage {\n if (!isCredentialStorage(value)) {\n throw new ExpectedCliError(`Invalid credential storage \"${value}\". Use keychain or file.`);\n }\n return value;\n}\n","import { LOCAL_PLATFORM_ORIGIN, originFromPublicUrl } from \"@keystrokehq/shared\";\n\nexport const DEFAULT_WEB_URL = \"https://keystroke.ai\";\nexport const DEFAULT_PLATFORM_URL = \"https://api.keystroke.ai\";\nexport const LOCAL_WEB_URL = \"http://localhost:3000\";\n\nexport type ResolvePlatformUrlOptions = {\n platformUrl?: string;\n /** Used when webUrl does not match a known deployment. */\n fallback?: string;\n};\n\nfunction webOriginFromUrl(webUrl: string): string {\n return originFromPublicUrl(webUrl, webUrl.replace(/\\/+$/, \"\"));\n}\n\n/** Known web origins with a fixed platform API — undefined for custom/staging URLs. */\nexport function knownPlatformUrlForWebUrl(webUrl: string): string | undefined {\n const webOrigin = webOriginFromUrl(webUrl);\n\n if (webOrigin === LOCAL_WEB_URL || webOrigin === \"http://127.0.0.1:3000\") {\n return LOCAL_PLATFORM_ORIGIN;\n }\n\n if (webOrigin === DEFAULT_WEB_URL) {\n return DEFAULT_PLATFORM_URL;\n }\n\n return undefined;\n}\n\nexport function resolvePlatformUrlForWebUrl(\n webUrl: string,\n options: ResolvePlatformUrlOptions = {},\n): string {\n const explicit = options.platformUrl?.trim();\n if (explicit) {\n return explicit.replace(/\\/+$/, \"\");\n }\n\n const known = knownPlatformUrlForWebUrl(webUrl);\n if (known) {\n return known;\n }\n\n const fallback = options.fallback?.trim() || DEFAULT_PLATFORM_URL;\n return fallback.replace(/\\/+$/, \"\");\n}\n","import Conf from \"conf\";\nimport { homedir } from \"node:os\";\nimport { dirname, join } from \"node:path\";\n\nimport { isCredentialStorage, type CredentialStorage } from \"./auth/credential-storage\";\nimport {\n DEFAULT_PLATFORM_URL,\n DEFAULT_WEB_URL,\n knownPlatformUrlForWebUrl,\n resolvePlatformUrlForWebUrl,\n} from \"./resolve-platform-url\";\n\nexport type ApiTargetMode = \"local\" | \"platform\";\n\nexport type CliConfig = {\n webUrl: string;\n platformUrl: string;\n apiTarget?: ApiTargetMode;\n /** Where session tokens are stored. Defaults to OS keychain when unset. */\n credentialStorage?: CredentialStorage;\n};\n\nexport function getCliConfigDir(cwd = join(homedir(), \".keystroke\")): string {\n return cwd;\n}\n\nexport function getConfigDir(config: Conf<CliConfig>): string {\n return dirname(config.path);\n}\n\nexport function getEffectiveApiTarget(config: Conf<CliConfig>): ApiTargetMode {\n const explicit = config.get(\"apiTarget\");\n if (explicit === \"local\" || explicit === \"platform\") {\n return explicit;\n }\n\n if (process.env.KEYSTROKE_API_KEY?.trim()) {\n return \"platform\";\n }\n\n return \"local\";\n}\n\nfunction syncPlatformUrlWithWebUrl(config: Conf<CliConfig>): void {\n const webUrl = config.get(\"webUrl\");\n const known = knownPlatformUrlForWebUrl(webUrl);\n if (!known) {\n return;\n }\n\n const stored = config.get(\"platformUrl\");\n if (stored !== known) {\n config.set(\"platformUrl\", known);\n }\n}\n\nexport function createCliConfig(cwd = getCliConfigDir()): Conf<CliConfig> {\n const config = new Conf<CliConfig>({\n projectName: \"keystroke\",\n cwd,\n schema: {\n webUrl: {\n type: \"string\",\n default: DEFAULT_WEB_URL,\n },\n platformUrl: {\n type: \"string\",\n default: DEFAULT_PLATFORM_URL,\n },\n apiTarget: {\n type: \"string\",\n enum: [\"local\", \"platform\"],\n },\n credentialStorage: {\n type: \"string\",\n enum: [\"keychain\", \"file\"],\n },\n },\n });\n\n syncPlatformUrlWithWebUrl(config);\n return config;\n}\n\n/** Effective credential backend — keychain unless the user explicitly chose file. */\nexport function getCredentialStorage(config: Conf<CliConfig>): CredentialStorage {\n const stored = config.get(\"credentialStorage\");\n return isCredentialStorage(stored) ? stored : \"keychain\";\n}\n\nexport function getWebUrl(config: Conf<CliConfig>): string {\n return config.get(\"webUrl\");\n}\n\nexport function getPlatformUrl(config: Conf<CliConfig>): string {\n const apiKey = process.env.KEYSTROKE_API_KEY?.trim();\n const fromEnv = process.env.KEYSTROKE_PLATFORM_URL?.trim();\n if (apiKey && fromEnv) {\n return fromEnv.replace(/\\/+$/, \"\");\n }\n return resolvePlatformUrlForWebUrl(getWebUrl(config), {\n fallback: config.get(\"platformUrl\"),\n });\n}\n","import { existsSync, readFileSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nfunction isCliPackage(dir: string): boolean {\n const packageJsonPath = join(dir, \"package.json\");\n if (!existsSync(packageJsonPath)) {\n return false;\n }\n\n const pkg = JSON.parse(readFileSync(packageJsonPath, \"utf8\")) as { name?: string };\n return pkg.name === \"@keystrokehq/cli\";\n}\n\nexport function resolveCliRoot(fromModuleUrl: string): string {\n let dir = dirname(fileURLToPath(fromModuleUrl));\n\n while (dir !== dirname(dir)) {\n if (isCliPackage(dir)) {\n return dir;\n }\n\n dir = dirname(dir);\n }\n\n throw new Error(\"Could not resolve keystroke CLI package root\");\n}\n","import { readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { resolveCliRoot } from \"./project/resolve-cli-root\";\n\nexport function readCliVersion(): string {\n const packageJsonPath = join(resolveCliRoot(import.meta.url), \"package.json\");\n const pkg = JSON.parse(readFileSync(packageJsonPath, \"utf8\")) as { version?: string };\n return pkg.version ?? \"0.0.0\";\n}\n","function parseVersion(version: string): [number, number, number] {\n const normalized = version.trim().replace(/^v/, \"\").split(\"-\")[0] ?? \"\";\n const [major = 0, minor = 0, patch = 0] = normalized.split(\".\").map((part) => {\n const value = Number.parseInt(part, 10);\n return Number.isFinite(value) ? value : 0;\n });\n\n return [major, minor, patch];\n}\n\nexport function isNewerVersion(latest: string, current: string): boolean {\n const [latestMajor, latestMinor, latestPatch] = parseVersion(latest);\n const [currentMajor, currentMinor, currentPatch] = parseVersion(current);\n\n if (latestMajor !== currentMajor) {\n return latestMajor > currentMajor;\n }\n\n if (latestMinor !== currentMinor) {\n return latestMinor > currentMinor;\n }\n\n return latestPatch > currentPatch;\n}\n","import { spawnSync } from \"node:child_process\";\n\nexport type PackageManager = \"npm\" | \"pnpm\" | \"yarn\" | \"bun\";\n\nconst MANAGERS: PackageManager[] = [\"pnpm\", \"npm\", \"yarn\", \"bun\"];\n\nexport function detectPackageManager(): PackageManager {\n const userAgent = process.env.npm_config_user_agent ?? \"\";\n\n for (const manager of MANAGERS) {\n if (userAgent.startsWith(manager)) {\n return manager;\n }\n }\n\n if (process.env.PNPM_HOME) {\n return \"pnpm\";\n }\n\n return \"npm\";\n}\n\nexport function resolvePackageManager(explicit?: string): PackageManager {\n if (!explicit) {\n return detectPackageManager();\n }\n\n const normalized = explicit.trim().toLowerCase();\n if (!MANAGERS.includes(normalized as PackageManager)) {\n throw new Error(`Unsupported package manager \"${explicit}\". Use npm, pnpm, yarn, or bun.`);\n }\n\n return normalized as PackageManager;\n}\n\n/** Resolve GitHub Packages auth for @keystrokehq/* when NODE_AUTH_TOKEN is unset. */\nexport function resolveGithubPackagesToken(): string | undefined {\n if (process.env.NODE_AUTH_TOKEN) {\n return process.env.NODE_AUTH_TOKEN;\n }\n\n for (const key of [\"GITHUB_TOKEN\", \"GH_TOKEN\"] as const) {\n const value = process.env[key];\n if (value) {\n return value;\n }\n }\n\n const gh = spawnSync(\"gh\", [\"auth\", \"token\"], { encoding: \"utf8\" });\n if (gh.status === 0) {\n const token = gh.stdout.trim();\n if (token) {\n return token;\n }\n }\n\n return undefined;\n}\n\nexport function installDependencies(cwd: string, manager: PackageManager): void {\n const token = resolveGithubPackagesToken();\n const env = token ? { ...process.env, NODE_AUTH_TOKEN: token } : process.env;\n\n const result = spawnSync(manager, [\"install\"], {\n cwd,\n stdio: \"inherit\",\n env,\n });\n\n if (result.status !== 0) {\n throw new Error(`${manager} install failed`);\n }\n}\n\nexport function installPlaygroundDependencies(cwd: string): void {\n const result = spawnSync(\"pnpm\", [\"install\", \"--ignore-workspace\"], {\n cwd,\n stdio: \"inherit\",\n env: process.env,\n });\n\n if (result.status !== 0) {\n throw new Error(\"pnpm install failed\");\n }\n}\n\n/**\n * Build every workspace package so the playground's `link:` deps resolve to\n * compiled `dist/`. Without this, `keystroke dev` fails with\n * `ERR_MODULE_NOT_FOUND` against whichever package was never built. Turbo\n * caches, so this is only slow on the first run.\n */\nexport function buildPlaygroundWorkspace(monorepoRoot: string): void {\n // Build with a clean Node env: the `keystroke-dev` wrapper sets\n // NODE_OPTIONS=--conditions=development, which would make tsdown/turbo resolve\n // their own deps to src/ and fail. Dropping NODE_OPTIONS builds to dist/ normally.\n const { NODE_OPTIONS: _drop, ...buildEnv } = process.env;\n const result = spawnSync(\"pnpm\", [\"run\", \"build\"], {\n cwd: monorepoRoot,\n stdio: \"inherit\",\n env: buildEnv,\n });\n\n if (result.status !== 0) {\n throw new Error(\"workspace build failed (pnpm run build)\");\n }\n}\n","import { existsSync, realpathSync } from \"node:fs\";\nimport { spawnSync } from \"node:child_process\";\nimport { dirname, join } from \"node:path\";\n\nimport { detectPackageManager, type PackageManager } from \"../init/package-manager\";\n\nexport type CliInstallKind = \"global\" | \"local\";\n\nexport type CliInstallInfo = {\n kind: CliInstallKind;\n packageManager: PackageManager;\n packageRoot: string;\n projectRoot?: string;\n};\n\nfunction realpathSafe(path: string): string {\n try {\n return realpathSync(path);\n } catch {\n return path;\n }\n}\n\nexport function detectManagerFromLockfile(dir: string): PackageManager | undefined {\n if (existsSync(join(dir, \"pnpm-lock.yaml\"))) {\n return \"pnpm\";\n }\n\n if (existsSync(join(dir, \"bun.lockb\")) || existsSync(join(dir, \"bun.lock\"))) {\n return \"bun\";\n }\n\n if (existsSync(join(dir, \"yarn.lock\"))) {\n return \"yarn\";\n }\n\n if (existsSync(join(dir, \"package-lock.json\"))) {\n return \"npm\";\n }\n\n return undefined;\n}\n\nfunction findLocalProjectRoot(packageRoot: string): string | undefined {\n const normalizedRoot = realpathSafe(packageRoot);\n let dir = dirname(packageRoot);\n\n while (dir !== dirname(dir)) {\n const installedCliPath = join(dir, \"node_modules\", \"@keystrokehq\", \"cli\");\n if (\n existsSync(join(dir, \"package.json\")) &&\n realpathSafe(installedCliPath) === normalizedRoot\n ) {\n return dir;\n }\n\n dir = dirname(dir);\n }\n\n return undefined;\n}\n\nfunction globalRootForManager(manager: PackageManager): string | undefined {\n const commands: Record<PackageManager, { command: string; args: string[] }> = {\n pnpm: { command: \"pnpm\", args: [\"root\", \"-g\"] },\n npm: { command: \"npm\", args: [\"root\", \"-g\"] },\n yarn: { command: \"yarn\", args: [\"global\", \"dir\"] },\n bun: { command: \"bun\", args: [\"pm\", \"bin\"] },\n };\n\n const { command, args } = commands[manager];\n const result = spawnSync(command, args, { encoding: \"utf8\" });\n\n if (result.status !== 0) {\n return undefined;\n }\n\n const root = result.stdout.trim();\n return root ? realpathSafe(root) : undefined;\n}\n\nfunction detectGlobalManager(packageRoot: string): PackageManager {\n const normalizedRoot = realpathSafe(packageRoot);\n\n if (normalizedRoot.includes(`${join(\"\", \".pnpm\")}`)) {\n return \"pnpm\";\n }\n\n for (const manager of [\"pnpm\", \"npm\", \"yarn\", \"bun\"] as const) {\n const globalRoot = globalRootForManager(manager);\n if (globalRoot && normalizedRoot.startsWith(globalRoot)) {\n return manager;\n }\n }\n\n if (process.env.PNPM_HOME) {\n return \"pnpm\";\n }\n\n return detectPackageManager();\n}\n\nexport function detectCliInstall(packageRoot: string): CliInstallInfo | undefined {\n const normalizedRoot = realpathSafe(packageRoot);\n const projectRoot = findLocalProjectRoot(normalizedRoot);\n\n if (projectRoot) {\n const packageManager = detectManagerFromLockfile(projectRoot) ?? detectPackageManager();\n\n return {\n kind: \"local\",\n packageManager,\n packageRoot: normalizedRoot,\n projectRoot,\n };\n }\n\n return {\n kind: \"global\",\n packageManager: detectGlobalManager(normalizedRoot),\n packageRoot: normalizedRoot,\n };\n}\n","const RELEASE_AGE_PATTERNS = [\n /minimumReleaseAge/i,\n /minimum-release-age/i,\n /ERR_PNPM_NO_MATURE_MATCHING_VERSION/,\n /ERR_PNPM_MINIMUM_RELEASE_AGE/,\n /does not meet the minimumReleaseAge constraint/,\n];\n\nexport function isReleaseAgeBlock(output: string): boolean {\n return RELEASE_AGE_PATTERNS.some((pattern) => pattern.test(output));\n}\n\nexport function formatReleaseAgeBlockMessage(options: {\n currentVersion: string;\n availableVersion: string;\n retryAfter?: Date;\n}): string {\n const retry =\n options.retryAfter !== undefined ? ` Retry after ${options.retryAfter.toLocaleString()}.` : \"\";\n\n return (\n `@keystrokehq/cli ${options.availableVersion} is available but blocked by your ` +\n `minimum-release-age setting. You're on ${options.currentVersion}.${retry} ` +\n `Add @keystrokehq/cli to minimumReleaseAgeExclude to install immediately.`\n );\n}\n","const REGISTRY_URL = \"https://registry.npmjs.org/@keystrokehq%2Fcli\";\nconst REQUEST_TIMEOUT_MS = 3_000;\n\ntype RegistryPackage = {\n \"dist-tags\"?: {\n latest?: string;\n };\n time?: Record<string, string>;\n};\n\nexport type CliRegistryRelease = {\n version: string;\n publishedAt?: string;\n};\n\nexport async function fetchLatestCliRelease(): Promise<CliRegistryRelease | undefined> {\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS);\n\n try {\n const response = await fetch(REGISTRY_URL, {\n signal: controller.signal,\n headers: {\n Accept: \"application/json\",\n },\n });\n\n if (!response.ok) {\n return undefined;\n }\n\n const payload = (await response.json()) as RegistryPackage;\n const version = payload[\"dist-tags\"]?.latest?.trim();\n if (!version) {\n return undefined;\n }\n\n return {\n version,\n publishedAt: payload.time?.[version],\n };\n } catch {\n return undefined;\n } finally {\n clearTimeout(timeout);\n }\n}\n\nexport async function fetchLatestCliVersion(): Promise<string | undefined> {\n const release = await fetchLatestCliRelease();\n return release?.version;\n}\n","import { spawnSync } from \"node:child_process\";\n\nexport function readPnpmMinimumReleaseAgeMinutes(): number | undefined {\n const result = spawnSync(\"pnpm\", [\"config\", \"get\", \"minimum-release-age\"], {\n encoding: \"utf8\",\n });\n\n if (result.status !== 0) {\n return undefined;\n }\n\n const value = result.stdout.trim();\n if (!value || value === \"undefined\" || value === \"0\") {\n return undefined;\n }\n\n const minutes = Number.parseInt(value, 10);\n return Number.isFinite(minutes) && minutes > 0 ? minutes : undefined;\n}\n\nexport function computeReleaseAgeRetryAfter(\n publishedAt: string | undefined,\n minimumReleaseAgeMinutes: number | undefined,\n): Date | undefined {\n if (!publishedAt || !minimumReleaseAgeMinutes) {\n return undefined;\n }\n\n const publishedMs = Date.parse(publishedAt);\n if (!Number.isFinite(publishedMs)) {\n return undefined;\n }\n\n return new Date(publishedMs + minimumReleaseAgeMinutes * 60_000);\n}\n","/** pnpm global installs live in `<pnpm-home>/global/<major>/`. */\nexport function resolveGlobalPnpmRoot(packageRoot: string): string | undefined {\n const normalized = packageRoot.replace(/\\\\/g, \"/\");\n const match = normalized.match(/^(.*\\/global\\/\\d+)\\//);\n return match?.[1];\n}\n","import type { CliInstallInfo } from \"./detect-cli-install\";\nimport { resolveGlobalPnpmRoot } from \"./resolve-global-pnpm-root\";\n\nconst PACKAGE_NAME = \"@keystrokehq/cli@latest\";\n\nexport function buildUpdateCommand(install: CliInstallInfo): {\n command: string;\n args: string[];\n cwd?: string;\n} {\n const { kind, packageManager } = install;\n\n if (kind === \"global\") {\n switch (packageManager) {\n case \"pnpm\":\n return {\n command: \"pnpm\",\n args: [\"add\", \"-g\", PACKAGE_NAME],\n cwd: resolveGlobalPnpmRoot(install.packageRoot),\n };\n case \"yarn\":\n return { command: \"yarn\", args: [\"global\", \"add\", PACKAGE_NAME] };\n case \"bun\":\n return { command: \"bun\", args: [\"add\", \"-g\", PACKAGE_NAME] };\n case \"npm\":\n default:\n return { command: \"npm\", args: [\"install\", \"-g\", PACKAGE_NAME] };\n }\n }\n\n const cwd = install.projectRoot;\n switch (packageManager) {\n case \"pnpm\":\n return { command: \"pnpm\", args: [\"add\", \"-D\", PACKAGE_NAME], cwd };\n case \"yarn\":\n return { command: \"yarn\", args: [\"add\", \"-D\", PACKAGE_NAME], cwd };\n case \"bun\":\n return { command: \"bun\", args: [\"add\", \"-D\", PACKAGE_NAME], cwd };\n case \"npm\":\n default:\n return { command: \"npm\", args: [\"install\", \"-D\", PACKAGE_NAME], cwd };\n }\n}\n","import { spawnSync } from \"node:child_process\";\n\nimport { buildUpdateCommand } from \"./build-update-command\";\nimport type { CliInstallInfo } from \"./detect-cli-install\";\n\nexport function updateSpawnEnv(): NodeJS.ProcessEnv {\n const env = { ...process.env };\n const pnpmHome = env.PNPM_HOME;\n\n if (!pnpmHome) {\n return env;\n }\n\n const pathKey = process.platform === \"win32\" ? \"Path\" : \"PATH\";\n const path = env[pathKey] ?? \"\";\n const segments = path.split(process.platform === \"win32\" ? \";\" : \":\");\n const binDir = `${pnpmHome}/bin`;\n const prefix = [binDir, pnpmHome].filter((dir) => !segments.includes(dir));\n\n if (prefix.length > 0) {\n env[pathKey] = [...prefix, path].filter(Boolean).join(process.platform === \"win32\" ? \";\" : \":\");\n }\n\n return env;\n}\n\nexport type PackageManagerRunResult = {\n ok: boolean;\n output: string;\n};\n\nfunction runPackageManager(command: string, args: string[], cwd?: string): PackageManagerRunResult {\n const result = spawnSync(command, args, {\n cwd,\n encoding: \"utf8\",\n env: updateSpawnEnv(),\n });\n\n const output = `${result.stdout ?? \"\"}${result.stderr ?? \"\"}`;\n\n return {\n ok: result.status === 0,\n output,\n };\n}\n\nfunction migratePnpmGlobal(cwd: string): boolean {\n const result = spawnSync(\"pnpm\", [\"install\"], {\n cwd,\n encoding: \"utf8\",\n env: {\n ...updateSpawnEnv(),\n CI: \"true\",\n },\n });\n\n return result.status === 0;\n}\n\nexport function runPackageManagerUpdate(install: CliInstallInfo): PackageManagerRunResult {\n const { command, args, cwd } = buildUpdateCommand(install);\n const firstAttempt = runPackageManager(command, args, cwd);\n\n if (firstAttempt.ok) {\n return firstAttempt;\n }\n\n if (install.kind === \"global\" && install.packageManager === \"pnpm\" && cwd) {\n if (migratePnpmGlobal(cwd)) {\n return runPackageManager(command, args, cwd);\n }\n }\n\n return firstAttempt;\n}\n"],"mappings":"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"}
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { join, sep } from "node:path";
|
|
3
|
-
import { realpathSync } from "node:fs";
|
|
4
|
-
import * as watcher from "@parcel/watcher";
|
|
5
|
-
//#region ../../packages/build/dist/watch-app-DTIeKrbl.mjs
|
|
6
|
-
function toMessage(error) {
|
|
7
|
-
return error instanceof Error ? error.message : String(error);
|
|
8
|
-
}
|
|
9
|
-
/** Resolve symlinks so paths match the canonical paths reported by the watcher. */
|
|
10
|
-
function canonicalize(path) {
|
|
11
|
-
try {
|
|
12
|
-
return realpathSync(path);
|
|
13
|
-
} catch {
|
|
14
|
-
return path;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
/** Whether a changed path should trigger a dev rebuild: anything in `src/` or `keystroke.config.ts`. */
|
|
18
|
-
function isWatchedPath(changedPath, root, srcDir = "src") {
|
|
19
|
-
if (changedPath === join(root, "keystroke.config.ts")) return true;
|
|
20
|
-
const srcRoot = join(root, srcDir);
|
|
21
|
-
return changedPath === srcRoot || changedPath.startsWith(`${srcRoot}${sep}`);
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Watch the project (whole `src/` tree + `keystroke.config.ts`), rebuild `dist/`
|
|
25
|
-
* on change, then call `onRebuild`.
|
|
26
|
-
*
|
|
27
|
-
* NOT true hot reload — rescans `src/` for new agents/workflows/triggers on each
|
|
28
|
-
* rebuild, then callers should restart the API so route discovery runs again.
|
|
29
|
-
*/
|
|
30
|
-
async function runWatchApp(buildApp, options = {}) {
|
|
31
|
-
const { onRebuild, log = (message) => process.stderr.write(`${message}\n`), ...buildOptions } = options;
|
|
32
|
-
const root = canonicalize(buildOptions.root ?? process.cwd());
|
|
33
|
-
const srcDir = buildOptions.srcDir ?? "src";
|
|
34
|
-
const debounceMs = options.debounceMs ?? 200;
|
|
35
|
-
let rebuilding = false;
|
|
36
|
-
let pending = false;
|
|
37
|
-
let debounceTimer;
|
|
38
|
-
const rebuild = async (reason) => {
|
|
39
|
-
if (rebuilding) {
|
|
40
|
-
pending = true;
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
rebuilding = true;
|
|
44
|
-
pending = false;
|
|
45
|
-
do {
|
|
46
|
-
pending = false;
|
|
47
|
-
log(`[keystroke] Rebuilding dist/ (${reason}) — not hot reload, full rebuild + API restart.`);
|
|
48
|
-
try {
|
|
49
|
-
await buildApp({
|
|
50
|
-
...buildOptions,
|
|
51
|
-
root,
|
|
52
|
-
clean: false
|
|
53
|
-
});
|
|
54
|
-
await onRebuild?.();
|
|
55
|
-
} catch (error) {
|
|
56
|
-
log(`[keystroke] Rebuild failed: ${toMessage(error)}`);
|
|
57
|
-
}
|
|
58
|
-
} while (pending);
|
|
59
|
-
rebuilding = false;
|
|
60
|
-
};
|
|
61
|
-
const scheduleRebuild = (reason) => {
|
|
62
|
-
clearTimeout(debounceTimer);
|
|
63
|
-
debounceTimer = setTimeout(() => {
|
|
64
|
-
rebuild(reason);
|
|
65
|
-
}, debounceMs);
|
|
66
|
-
};
|
|
67
|
-
const subscription = await watcher.subscribe(root, (error, events) => {
|
|
68
|
-
if (error) {
|
|
69
|
-
log(`[keystroke] Watch error: ${toMessage(error)}`);
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
const changed = events.find((event) => isWatchedPath(event.path, root, srcDir));
|
|
73
|
-
if (changed) scheduleRebuild(changed.path);
|
|
74
|
-
}, { ignore: [
|
|
75
|
-
join(root, "node_modules"),
|
|
76
|
-
join(root, buildOptions.outDir ?? "dist"),
|
|
77
|
-
join(root, ".git"),
|
|
78
|
-
"**/.DS_Store",
|
|
79
|
-
"**/*.swp",
|
|
80
|
-
"**/*~"
|
|
81
|
-
] });
|
|
82
|
-
const closeWatchers = () => {
|
|
83
|
-
clearTimeout(debounceTimer);
|
|
84
|
-
subscription.unsubscribe();
|
|
85
|
-
};
|
|
86
|
-
process.on("SIGINT", closeWatchers);
|
|
87
|
-
process.on("SIGTERM", closeWatchers);
|
|
88
|
-
try {
|
|
89
|
-
await rebuild("initial");
|
|
90
|
-
await new Promise(() => {});
|
|
91
|
-
} finally {
|
|
92
|
-
process.off("SIGINT", closeWatchers);
|
|
93
|
-
process.off("SIGTERM", closeWatchers);
|
|
94
|
-
closeWatchers();
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
//#endregion
|
|
98
|
-
export { runWatchApp };
|
|
99
|
-
|
|
100
|
-
//# sourceMappingURL=watch-app-DTIeKrbl-CSpsNzVG.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"watch-app-DTIeKrbl-CSpsNzVG.mjs","names":[],"sources":["../../../packages/build/dist/watch-app-DTIeKrbl.mjs"],"sourcesContent":["import { realpathSync } from \"node:fs\";\nimport { join, sep } from \"node:path\";\nimport * as watcher from \"@parcel/watcher\";\n//#region src/watch-app.ts\nfunction toMessage(error) {\n\treturn error instanceof Error ? error.message : String(error);\n}\n/** Resolve symlinks so paths match the canonical paths reported by the watcher. */\nfunction canonicalize(path) {\n\ttry {\n\t\treturn realpathSync(path);\n\t} catch {\n\t\treturn path;\n\t}\n}\n/** Whether a changed path should trigger a dev rebuild: anything in `src/` or `keystroke.config.ts`. */\nfunction isWatchedPath(changedPath, root, srcDir = \"src\") {\n\tif (changedPath === join(root, \"keystroke.config.ts\")) return true;\n\tconst srcRoot = join(root, srcDir);\n\treturn changedPath === srcRoot || changedPath.startsWith(`${srcRoot}${sep}`);\n}\n/**\n* Watch the project (whole `src/` tree + `keystroke.config.ts`), rebuild `dist/`\n* on change, then call `onRebuild`.\n*\n* NOT true hot reload — rescans `src/` for new agents/workflows/triggers on each\n* rebuild, then callers should restart the API so route discovery runs again.\n*/\nasync function runWatchApp(buildApp, options = {}) {\n\tconst { onRebuild, log = (message) => process.stderr.write(`${message}\\n`), ...buildOptions } = options;\n\tconst root = canonicalize(buildOptions.root ?? process.cwd());\n\tconst srcDir = buildOptions.srcDir ?? \"src\";\n\tconst debounceMs = options.debounceMs ?? 200;\n\tlet rebuilding = false;\n\tlet pending = false;\n\tlet debounceTimer;\n\tconst rebuild = async (reason) => {\n\t\tif (rebuilding) {\n\t\t\tpending = true;\n\t\t\treturn;\n\t\t}\n\t\trebuilding = true;\n\t\tpending = false;\n\t\tdo {\n\t\t\tpending = false;\n\t\t\tlog(`[keystroke] Rebuilding dist/ (${reason}) — not hot reload, full rebuild + API restart.`);\n\t\t\ttry {\n\t\t\t\tawait buildApp({\n\t\t\t\t\t...buildOptions,\n\t\t\t\t\troot,\n\t\t\t\t\tclean: false\n\t\t\t\t});\n\t\t\t\tawait onRebuild?.();\n\t\t\t} catch (error) {\n\t\t\t\tlog(`[keystroke] Rebuild failed: ${toMessage(error)}`);\n\t\t\t}\n\t\t} while (pending);\n\t\trebuilding = false;\n\t};\n\tconst scheduleRebuild = (reason) => {\n\t\tclearTimeout(debounceTimer);\n\t\tdebounceTimer = setTimeout(() => {\n\t\t\trebuild(reason);\n\t\t}, debounceMs);\n\t};\n\tconst subscription = await watcher.subscribe(root, (error, events) => {\n\t\tif (error) {\n\t\t\tlog(`[keystroke] Watch error: ${toMessage(error)}`);\n\t\t\treturn;\n\t\t}\n\t\tconst changed = events.find((event) => isWatchedPath(event.path, root, srcDir));\n\t\tif (changed) scheduleRebuild(changed.path);\n\t}, { ignore: [\n\t\tjoin(root, \"node_modules\"),\n\t\tjoin(root, buildOptions.outDir ?? \"dist\"),\n\t\tjoin(root, \".git\"),\n\t\t\"**/.DS_Store\",\n\t\t\"**/*.swp\",\n\t\t\"**/*~\"\n\t] });\n\tconst closeWatchers = () => {\n\t\tclearTimeout(debounceTimer);\n\t\tsubscription.unsubscribe();\n\t};\n\tprocess.on(\"SIGINT\", closeWatchers);\n\tprocess.on(\"SIGTERM\", closeWatchers);\n\ttry {\n\t\tawait rebuild(\"initial\");\n\t\tawait new Promise(() => {});\n\t} finally {\n\t\tprocess.off(\"SIGINT\", closeWatchers);\n\t\tprocess.off(\"SIGTERM\", closeWatchers);\n\t\tcloseWatchers();\n\t}\n}\n//#endregion\nexport { runWatchApp };\n\n//# sourceMappingURL=watch-app-DTIeKrbl.mjs.map"],"mappings":";;;;;AAIA,SAAS,UAAU,OAAO;CACzB,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAC7D;;AAEA,SAAS,aAAa,MAAM;CAC3B,IAAI;EACH,OAAO,aAAa,IAAI;CACzB,QAAQ;EACP,OAAO;CACR;AACD;;AAEA,SAAS,cAAc,aAAa,MAAM,SAAS,OAAO;CACzD,IAAI,gBAAgB,KAAK,MAAM,qBAAqB,GAAG,OAAO;CAC9D,MAAM,UAAU,KAAK,MAAM,MAAM;CACjC,OAAO,gBAAgB,WAAW,YAAY,WAAW,GAAG,UAAU,KAAK;AAC5E;;;;;;;;AAQA,eAAe,YAAY,UAAU,UAAU,CAAC,GAAG;CAClD,MAAM,EAAE,WAAW,OAAO,YAAY,QAAQ,OAAO,MAAM,GAAG,QAAQ,GAAG,GAAG,GAAG,iBAAiB;CAChG,MAAM,OAAO,aAAa,aAAa,QAAQ,QAAQ,IAAI,CAAC;CAC5D,MAAM,SAAS,aAAa,UAAU;CACtC,MAAM,aAAa,QAAQ,cAAc;CACzC,IAAI,aAAa;CACjB,IAAI,UAAU;CACd,IAAI;CACJ,MAAM,UAAU,OAAO,WAAW;EACjC,IAAI,YAAY;GACf,UAAU;GACV;EACD;EACA,aAAa;EACb,UAAU;EACV,GAAG;GACF,UAAU;GACV,IAAI,iCAAiC,OAAO,gDAAgD;GAC5F,IAAI;IACH,MAAM,SAAS;KACd,GAAG;KACH;KACA,OAAO;IACR,CAAC;IACD,MAAM,YAAY;GACnB,SAAS,OAAO;IACf,IAAI,+BAA+B,UAAU,KAAK,GAAG;GACtD;EACD,SAAS;EACT,aAAa;CACd;CACA,MAAM,mBAAmB,WAAW;EACnC,aAAa,aAAa;EAC1B,gBAAgB,iBAAiB;GAChC,QAAQ,MAAM;EACf,GAAG,UAAU;CACd;CACA,MAAM,eAAe,MAAM,QAAQ,UAAU,OAAO,OAAO,WAAW;EACrE,IAAI,OAAO;GACV,IAAI,4BAA4B,UAAU,KAAK,GAAG;GAClD;EACD;EACA,MAAM,UAAU,OAAO,MAAM,UAAU,cAAc,MAAM,MAAM,MAAM,MAAM,CAAC;EAC9E,IAAI,SAAS,gBAAgB,QAAQ,IAAI;CAC1C,GAAG,EAAE,QAAQ;EACZ,KAAK,MAAM,cAAc;EACzB,KAAK,MAAM,aAAa,UAAU,MAAM;EACxC,KAAK,MAAM,MAAM;EACjB;EACA;EACA;CACD,EAAE,CAAC;CACH,MAAM,sBAAsB;EAC3B,aAAa,aAAa;EAC1B,aAAa,YAAY;CAC1B;CACA,QAAQ,GAAG,UAAU,aAAa;CAClC,QAAQ,GAAG,WAAW,aAAa;CACnC,IAAI;EACH,MAAM,QAAQ,SAAS;EACvB,MAAM,IAAI,cAAc,CAAC,CAAC;CAC3B,UAAU;EACT,QAAQ,IAAI,UAAU,aAAa;EACnC,QAAQ,IAAI,WAAW,aAAa;EACpC,cAAc;CACf;AACD"}
|