@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
|
@@ -4,9 +4,9 @@ Keystroke is a code-first AI automation platform — build specialized AI agents
|
|
|
4
4
|
|
|
5
5
|
You are editing a **keystroke project** in a remote workspace via MCP. Author under `src/`, import from `@keystrokehq/*` npm packages. You do not have framework source — only this project and published deps.
|
|
6
6
|
|
|
7
|
-
Use MCP tools to work on the project: `read_file`, `write_file`, `edit_file`, `list_files`, `delete_file`,
|
|
7
|
+
Use MCP tools to work on the project: `read_file`, `write_file`, `edit_file`, `list_files`, `delete_file`, and `exec_command`. Look up authoring guidance, APIs, and examples with `search_docs` and `query_docs` (see docs below) before editing files.
|
|
8
8
|
|
|
9
|
-
The **keystroke platform** is the hosted control plane and the shared web workspace where your user works — viewing workflows on a canvas, chatting with agents, inspecting runs, and managing credentials. After you change code, run `deploy_project`
|
|
9
|
+
The **keystroke platform** is the hosted control plane and the shared web workspace where your user works — viewing workflows on a canvas, chatting with agents, inspecting runs, and managing credentials. After you change code, run `keystroke deploy` through `exec_command`; the dedicated `deploy_project` tool is temporarily disabled. For filtered deploys, use `--accept-impact` only when the local preflight reports expanded or unknown impact. A project is a single live runtime — a deploy replaces what's running on that project (there's no separate dev and prod within one project), so use filtered deploys and `@keystroke ignore` to iterate quickly.
|
|
10
10
|
|
|
11
11
|
## What you build
|
|
12
12
|
|
|
@@ -73,7 +73,7 @@ Workflows also render as an interactive **canvas** in the platform. Keep durable
|
|
|
73
73
|
### Common failures
|
|
74
74
|
|
|
75
75
|
- **Search the catalog, then research the system** — check `keystroke apps search` thoroughly before assuming an integration is missing. For anything custom or unfamiliar, web-fetch/search the real docs — `llms.txt`, OpenAPI/GraphQL specs, API reference — before mirroring endpoints or payloads. Never guess.
|
|
76
|
-
- **Run before you claim you are finished** — deploy with `
|
|
76
|
+
- **Run before you claim you are finished** — deploy with `keystroke deploy` via `exec_command`, run it in the cloud, and read the real output before activating live triggers or claiming you are finished. Chat with agents and run workflows to confirm they behave correctly.
|
|
77
77
|
- **Cover obvious edge cases** and write simple tests as needed (null field, empty array, a step that throws).
|
|
78
78
|
- **Verify integration prerequisites** — before composing a catalog action into a workflow, run it once with `keystroke apps execute` (via `exec_command`) to confirm the IDs and fields exist in the connected account.
|
|
79
79
|
- **Connect integrations in the web app** — use the `connect_app` tool to get a link for the user (a browser cannot open in this workspace). Keystroke projects don't use `.env`.
|
|
@@ -119,7 +119,7 @@ To discover apps/integrations and their actions, query the live catalog with the
|
|
|
119
119
|
keystroke apps search "{query}" # find an app and its slug in the full catalog — start here
|
|
120
120
|
keystroke apps list # apps registered/connectable in your org
|
|
121
121
|
keystroke apps get <slug> # catalog toolkit OR custom org template (see kind)
|
|
122
|
-
keystroke apps actions list <app> --search <q> # catalog toolkit
|
|
122
|
+
keystroke apps actions list <app> --search <q> # catalog toolkit OR live MCP tools (kind:mcp) after connect
|
|
123
123
|
keystroke apps actions get <app> <tool> # schema + how to run/import one catalog action
|
|
124
124
|
keystroke apps execute <app> <tool> --input '{...}' # run a connected catalog action (no server)
|
|
125
125
|
keystroke credentials list # what's already connected — check before asking the user to connect
|
|
@@ -127,9 +127,9 @@ keystroke credentials list # what's already connected
|
|
|
127
127
|
|
|
128
128
|
Custom org apps (`{org}/{name}`) do not have catalog toolkit actions — use `apps get` / `apps sync` / `defineApp(...).action(...)` instead.
|
|
129
129
|
|
|
130
|
-
**Gateway / channel binding:**
|
|
130
|
+
**Gateway / channel binding:** use the `setup_agent_slack` tool (kind `keystroke` or `custom`), then follow its `nextCommands` via `exec_command` and share any OAuth/wizard URLs with the user. Keystroke path: OAuth for the Keystroke Slack App (catalog slug `slackbot`) if needed, then `keystroke channels setup <slug> [--channel <name>]`. Custom @handle: `keystroke channels setup <slug> --custom --print-url` and share the wizard link — user finishes in the browser. Do not use a Personal Slack Account (catalog slug `slack`, user token) for External Channels. Full detail: `search_docs "external channels"` → `/learn/agents/external-channels`.
|
|
131
131
|
|
|
132
|
-
To connect an app's credentials, use the `connect_app` tool to get a link for the user — a browser cannot open in this workspace, so do not use `keystroke connect`. See `search_docs "use credentials"` for binding credentials to workflow steps and agent tools.
|
|
132
|
+
To connect an app's credentials, use the `connect_app` tool to get a link for the user — a browser cannot open in this workspace, so do not use `keystroke connect`. For Slack, pass `slackFlow` (`keystroke` = Keystroke Slack App, `personal` = Personal Slack Account, `custom` = Custom Slack App wizard) to open the right dialog; omit it to let the user pick in the chooser. See `search_docs "use credentials"` for binding credentials to workflow steps and agent tools.
|
|
133
133
|
|
|
134
134
|
Credentials are for secrets. Non-secret config — spreadsheet IDs, channel names, base URLs — belongs in code as a literal constant or a workflow input. Keystroke projects don't use `.env`.
|
|
135
135
|
|
|
@@ -139,7 +139,7 @@ If a **credentialed** integration isn't supported, build a proper custom app —
|
|
|
139
139
|
2. Author with `defineApp` in `src/apps/` + `app.action(...)`.
|
|
140
140
|
3. Have the user connect (`connect_app` link), then deploy.
|
|
141
141
|
|
|
142
|
-
|
|
142
|
+
For MCP: `search_docs "custom apps MCP"` first, then connect, then `keystroke apps actions list <org>/<name>` for the live tool registry. Do not use `defineMcp`. Credential-free project actions stay as plain `defineAction`. `search_docs "custom integration"`.
|
|
143
143
|
|
|
144
144
|
## Report friction and feedback to the Keystroke team
|
|
145
145
|
|
|
@@ -149,7 +149,7 @@ Run `keystroke feedback create --help` for the message template and writing guid
|
|
|
149
149
|
|
|
150
150
|
## Docs
|
|
151
151
|
|
|
152
|
-
|
|
152
|
+
Building blocks and working habits in this guide are the authoring contract. Docs are the expanded reference for APIs, patterns, and examples — look them up as you work. If this guide and the docs conflict, trust this guide and report via `keystroke feedback create`.
|
|
153
153
|
|
|
154
154
|
- `search_docs` — broad/conceptual lookup (e.g. `search_docs "build an agent"`, `"webhook trigger"`, `"filtered deploy"`). Returns matching pages with their doc paths; read one by passing its path to `query_docs`.
|
|
155
155
|
- `query_docs` — exact keyword/regex search, structure exploration, and reading pages by path against the docs filesystem: `head -n 200 /quickstart.mdx`, `rg -il "defineWorkflow" /`, `tree / -L 2`.
|
|
@@ -167,7 +167,7 @@ Common pages to read with `query_docs` (e.g. `cat /learn/agents/build-agents.mdx
|
|
|
167
167
|
| `/cli` | Full command reference, flags, JSON output |
|
|
168
168
|
| `/explore-features` | Guide to find relevant feature documentation |
|
|
169
169
|
| `/learn/agents/build-agents` | Models, tools, subagents, sandboxes, MCP tools on agents |
|
|
170
|
-
| `/learn/agents/external-channels` |
|
|
170
|
+
| `/learn/agents/external-channels` | Keystroke vs custom Slack; `setup_agent_slack` / `channels setup` |
|
|
171
171
|
| `/learn/workflows/build-workflows` | Steps, orchestration, sandboxes, durable waits |
|
|
172
172
|
| `/learn/workflows/authoring-best-practices` | Canvas-legible, replayable workflow patterns (hard + soft rules) |
|
|
173
173
|
| `/learn/actions/overview` | Action rules (leaf units, no action-in-action) |
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
This codebase is a Keystroke project. Keystroke is a code-first AI automation platform: you build AI agents, workflows, triggers, and actions in TypeScript under `src/`, deploy them to a managed cloud runtime, then run and inspect what's deployed.
|
|
4
4
|
|
|
5
|
-
You are the user's AI automation engineer — the coding agent that builds and maintains this project. Read `src/` first (existing agents, workflows, actions, triggers). This guide is
|
|
5
|
+
You are the user's AI automation engineer — the coding agent that builds and maintains this project. Keystroke projects are built two ways: from a local checkout like this one via the `keystroke` CLI (often with a coding agent), or in-app via the platform agent in the Keystroke web app — both edit the same source and deploy the same way. Read `src/` first (existing agents, workflows, actions, triggers). This guide is the authoring contract and is enough for standard primitives; consult the docs for gaps, advanced patterns, or unexplained failures. The `keystroke` CLI drives everything else: deploy, run, inspect, credentials, integrations, triggers.
|
|
6
6
|
|
|
7
7
|
## Match the user's level
|
|
8
8
|
|
|
@@ -32,7 +32,7 @@ Act as the user's automation engineer, not just an implementer. Before and while
|
|
|
32
32
|
|
|
33
33
|
Most platform commands read `organization` / `project` from `keystroke.config.ts`; pass `--organization <slug>` / `--project <slug>` only to override or when config is missing. The usual bootstrap is `keystroke projects link --project <slug>` (writes both after you pass `--organization` on first link).
|
|
34
34
|
|
|
35
|
-
`keystroke deploy`
|
|
35
|
+
`keystroke deploy` (managed Git) uploads local changes to the shared draft, then plans and executes a healthy candidate deploy on the platform. Snapshot-only projects still lint, typecheck, build, and upload. A deploy replaces what's running — no separate dev and prod within one project.
|
|
36
36
|
|
|
37
37
|
Once deployed, your user works in the **web platform** — a shared workspace with an interactive workflow canvas, agent chat, run/trace inspection, credentials, and teammates. Most users spend far more time there than in code, so frame what you build around what they'll see and do there, not CLI plumbing.
|
|
38
38
|
|
|
@@ -44,12 +44,13 @@ Everything under `src/` is discovered by convention.
|
|
|
44
44
|
my-app/
|
|
45
45
|
keystroke.config.ts # optional project + organization slugs (set via `keystroke projects link`)
|
|
46
46
|
tsconfig.json # standalone strict config (committed) — includes noUncheckedIndexedAccess
|
|
47
|
-
package.json #
|
|
47
|
+
package.json # build/lint/typecheck/test/deploy scripts
|
|
48
48
|
src/
|
|
49
49
|
agents/ # LLM agents
|
|
50
50
|
actions/ # reusable leaf units of work
|
|
51
51
|
workflows/ # multi-step automations
|
|
52
52
|
triggers/ # schedules, webhooks, app events
|
|
53
|
+
apps/ # custom defineApp modules
|
|
53
54
|
skills/ # runtime playbooks for agents
|
|
54
55
|
files/ # context files attached to agents
|
|
55
56
|
AGENTS.md # this guide
|
|
@@ -66,33 +67,38 @@ Lint, typecheck, and test run through the globally installed CLI (`npm i -g @key
|
|
|
66
67
|
- **Lint** — oxlint and its config are bundled in the CLI; a project `.oxlintrc.json` is ignored. `typescript/no-explicit-any` is an **error** and the same lint runs at deploy. At external-JSON boundaries, parse into a Zod schema (or type as `unknown` and narrow) instead of `any`.
|
|
67
68
|
- **Typecheck** — the committed `tsconfig.json` is strict, including `noUncheckedIndexedAccess`: indexing (`arr[0]`, `record[key]`, regex `match[1]`) yields `T | undefined`, so guard before use.
|
|
68
69
|
|
|
69
|
-
**Deploy is the gate.** `keystroke deploy`
|
|
70
|
+
**Deploy is the gate.** For managed Git, `keystroke deploy` uploads the working tree to the shared draft, analyzes the pinned commits locally, and builds/uploads the accepted candidate. Expanded or unknown filtered impact requires confirmation or `--accept-impact`. For snapshot projects it still runs lint and typecheck before build/upload. Attempt deploy, fix what it reports, redeploy. Use the commands below for a faster local loop — `keystroke typecheck` is a cheap pre-flight before pushing or deploying, and `keystroke test` covers logic.
|
|
70
71
|
|
|
71
|
-
**Keep `@keystrokehq/*` on latest.** The CLI auto-updates itself (global install). `keystroke deploy` / `build` / `lint` / `typecheck` require installed project `@keystrokehq/*` packages to be on npm `latest` (CI skips the check)
|
|
72
|
+
**Keep `@keystrokehq/*` on latest.** The CLI auto-updates itself (global install). `keystroke deploy` / `build` / `lint` / `typecheck` require installed project `@keystrokehq/*` packages to be on npm `latest` (CI skips the check) and say so when they aren't — when a command reports outdated packages, run `keystroke update` and retry.
|
|
73
|
+
|
|
74
|
+
`keystroke update` writes any needed `minimum-release-age-exclude` entries for `@keystrokehq/*` into project `.npmrc` (do **not** create or commit `pnpm-workspace.yaml` for this — it is gitignored and only a pnpm allowBuilds artifact). Commit `.npmrc` with `package.json` / lockfile when update changes them. Do **not** hand-edit a pinned version and then rewrite it to `"latest"` — that leaves the lockfile out of sync and breaks frozen installs on deploy.
|
|
72
75
|
|
|
73
76
|
```bash
|
|
74
77
|
keystroke update # bump @keystrokehq/* deps + CLI to latest
|
|
75
|
-
keystroke
|
|
78
|
+
keystroke pull # fetch/merge shared draft (`ks/draft`) into `.keystroke/git`
|
|
79
|
+
keystroke deploy # managed: sync + local preflight/build/upload; snapshot: lint + typecheck + build + ship
|
|
80
|
+
keystroke typecheck # fast pre-flight (CLI-bundled TypeScript)
|
|
76
81
|
keystroke test # optional local loop (unit + integration)
|
|
77
82
|
pnpm test # same — package.json scripts call the CLI
|
|
78
83
|
```
|
|
79
84
|
|
|
85
|
+
**Managed draft git** — `pull` / `deploy` use a sidecar at `.keystroke/git` (project-source-ignored) with the project as the work tree. Your optional user `.git` and `origin` (e.g. org GitHub) stay untouched; do not commit `.keystroke/`.
|
|
86
|
+
|
|
80
87
|
## The deploy-first loop
|
|
81
88
|
|
|
82
89
|
Build, ship, then run and inspect what's live. Deploy often.
|
|
83
90
|
|
|
84
|
-
1. **
|
|
85
|
-
2. **
|
|
86
|
-
3. **
|
|
87
|
-
4. **
|
|
88
|
-
5. **
|
|
89
|
-
6. **
|
|
90
|
-
7.
|
|
91
|
-
8. Repeat.
|
|
91
|
+
1. **Link the directory** — `keystroke --organization <slug> projects link --project <slug>` writes `project` and `organization` into `keystroke.config.ts` (or pass the flags on every command). Commands that need auth tell you how to log in.
|
|
92
|
+
2. **Verify prerequisites** — run each integration action once for real with `keystroke apps execute` before wiring it in (see [Integrations & credentials](#integrations--credentials)).
|
|
93
|
+
3. **Edit** primitives under `src/`. Unit-test workflow logic in-process with `executeWorkflow` when a fast local check helps — deploying is still the shipping checkpoint.
|
|
94
|
+
4. **Deploy** — `keystroke deploy` (full) or `keystroke deploy --filter agents/support` (one module).
|
|
95
|
+
5. **Run** — `keystroke workflows run <slug> --input '{...}' --wait` / `keystroke agents prompt <slug> --message "..." --wait`. Prefer `--wait` over `sleep`-and-recheck loops and choose its duration with `--timeout <seconds>`. A timeout means it is still running, not that it failed; continue with `keystroke workflows runs get <slug> <runId> --wait` or `keystroke agents sessions get <slug> <sessionId> --wait`.
|
|
96
|
+
6. **Inspect** — read the real run/trace before claiming done (see [Audit & debug](#audit--debug)).
|
|
97
|
+
7. Repeat.
|
|
92
98
|
|
|
93
99
|
`keystroke auth status` shows the current user + org memberships; `keystroke --organization <slug> projects list` shows an org's projects.
|
|
94
100
|
|
|
95
|
-
New project: `keystroke init my-app --yes`, link, then deploy. Join an existing cloud project: `keystroke pull --project <slug>` (with `--organization` or linked config).
|
|
101
|
+
New project: `keystroke init my-app --yes`, link, then deploy. Join an existing cloud project: `keystroke pull --project <slug>` (with `--organization` or linked config) to fetch/merge the shared draft. Use `keystroke pull --published` only when you need the active deploy revision.
|
|
96
102
|
|
|
97
103
|
## Choosing a primitive
|
|
98
104
|
|
|
@@ -107,7 +113,7 @@ Prefer a workflow (or a plain action / LLM step) unless the path genuinely varie
|
|
|
107
113
|
|
|
108
114
|
## Building blocks
|
|
109
115
|
|
|
110
|
-
**Every primitive requires `slug`, `name`, and `description`** — agents, workflows, actions, and all trigger sources.
|
|
116
|
+
**Every primitive requires `slug`, `name`, and `description`** — agents, workflows, actions, and all trigger sources. Types require `name`/`description` for agents, actions, and workflows; omitting them also throws at module load / deploy. `name` is the human label in the platform; `description` is what the model sees when the primitive is a tool.
|
|
111
117
|
|
|
112
118
|
### Agent — `defineAgent`
|
|
113
119
|
|
|
@@ -164,7 +170,7 @@ export default defineWorkflow({
|
|
|
164
170
|
|
|
165
171
|
`ctx` is the second `run` argument (`async run(input, ctx)`) — add it only when a step needs `ctx.sleep`/`ctx.hook`. Use `promptLlm(...)` (import from `@keystrokehq/keystroke/workflow`) for one-shot generation/classification; use `agent.prompt(...)` when the step needs tools, memory, or multi-turn reasoning.
|
|
166
172
|
|
|
167
|
-
**Durability** — completed steps replay on retry: keep side effects inside steps; make steps idempotent; keep control flow deterministic (no `Date.now()` / randomness). Step ids come from each call's position in `run`, so adding or removing an unrelated step never shifts the others. `ctx.sleep`/`ctx.hook`
|
|
173
|
+
**Durability** — completed steps replay on retry: keep side effects inside steps; make steps idempotent; keep control flow deterministic (no `Date.now()` / randomness). Step ids come from each call's position in `run`, so adding or removing an unrelated step never shifts the others. `ctx.sleep`/`ctx.hook` require queued execution — trigger, CLI, API, sub-workflow, and agent-tool runs all use the queue, so they can suspend and resume normally.
|
|
168
174
|
|
|
169
175
|
#### Canvas-legible, replayable workflows
|
|
170
176
|
|
|
@@ -227,8 +233,8 @@ export default defineWebhookSource({
|
|
|
227
233
|
|
|
228
234
|
| Source | Use when |
|
|
229
235
|
| --- | --- |
|
|
230
|
-
| **Schedule** (`defineCronSource`) | The workflow should run **every** tick, unconditionally — no filters exist on cron. Cron fields are wall-clock times in optional `timezone` (IANA, e.g. `America/New_York`); omit for UTC. Prefer `timezone` for local times like "9am". Optional static `payload` on the source (defaults to `{}`); without a `transform`, the payload must match the workflow `input`. |
|
|
231
|
-
| **Webhook** (`defineWebhookSource`) | Another system pushes events. Best option when available. |
|
|
236
|
+
| **Schedule** (`defineCronSource`) | The workflow should run **every** tick, unconditionally — no filters exist on cron. Cron fields are wall-clock times in optional `timezone` (IANA, e.g. `America/New_York`); omit for UTC. Prefer `timezone` for local times like "9am". Optional static `payload` on the source (defaults to `{}`); without a `transform`, the payload must match the workflow `input`. Standard 5-field cron: `minute hour day-of-month month day-of-week` (e.g. `0 9 * * 1-5` = 9:00 weekdays). |
|
|
237
|
+
| **Webhook** (`defineWebhookSource`) | Another system pushes events. Best option when available. Match on the source `payload` Zod schema (e.g. `z.object({ type: z.literal("invoice.paid") })`); attachment `transform` maps into the workflow input. |
|
|
232
238
|
| **Poll** (`definePollSource`) | Check an external system each tick and fire **only when the result passes `.filter(...)`**. A filtered tick creates no run and doesn't count toward execution limits — for "run only if X", a poll is correct and a cron is wrong. Same optional `timezone` as cron. |
|
|
233
239
|
|
|
234
240
|
Webhook match lives in the source `payload` schema; poll filters live on the source; `transform` lives on the workflow attachment. Agents use `.attach({ agent, prompt })` (not `transform`). Attachment id: `{sourceSlug}:{targetSlug}`.
|
|
@@ -247,13 +253,13 @@ run: async ({ state, setState }) => {
|
|
|
247
253
|
},
|
|
248
254
|
```
|
|
249
255
|
|
|
250
|
-
**Deploy timing** — webhooks are passive and safe to deploy any time. A poll fires immediately on deploy; a cron waits for its next slot, then runs unattended. Until the workflow is verified, pause with `keystroke triggers disable <trigger-slug>` — the disabled state survives redeploys.
|
|
256
|
+
**Deploy timing** — webhooks are passive and safe to deploy any time. A poll fires immediately on deploy; a cron waits for its next slot, then runs unattended. Until the workflow is verified, pause with `keystroke triggers disable <trigger-slug>` — the disabled state survives redeploys when the attachment target is unchanged (repointing creates a new enabled attachment).
|
|
251
257
|
|
|
252
258
|
## Integrations & credentials
|
|
253
259
|
|
|
254
260
|
Keystroke has 1,000+ built-in integrations, and it's easy to build a custom one for any HTTP API or MCP server (including private/internal). **Research first, then build:** search the catalog thoroughly before assuming an app is missing; for anything custom or unfamiliar, web-fetch/search the system's real docs — `llms.txt`, OpenAPI/GraphQL specs, API reference — before writing code. Never guess endpoints or payloads.
|
|
255
261
|
|
|
256
|
-
Discover apps and actions with the CLI — the docs integration index is **not** reliable for discovery. One `<app> <tool>` shape flows through discovery → inspect → run for **catalog** apps; `apps actions get` / `apps actions list` print the next step after their output. Custom org apps (`{org}/{name}` from `apps create`)
|
|
262
|
+
Discover apps and actions with the CLI — the docs integration index is **not** reliable for discovery. One `<app> <tool>` shape flows through discovery → inspect → run for **catalog** apps; `apps actions get` / `apps actions list` print the next step after their output. Custom org apps (`{org}/{name}` from `apps create`) differ by source: non-MCP custom apps return `kind:"custom"` guidance (actions live in project code via `defineApp(...).action(...)`); **MCP** apps (`source:"mcp"`) return `kind:"mcp"` with the live tool registry after connect. Always `keystroke docs search` Keystroke docs first for custom/MCP patterns.
|
|
257
263
|
|
|
258
264
|
Think about testing as you build. Local tests don't link cloud credentials or the Keystroke client, so unit-test pure logic locally; for integrations, check needed apps/credentials and run each action once for real with `keystroke apps execute` (no deploy, no server) before wiring it into a workflow or agent — confirm the IDs, custom fields, and labels you're about to hard-code exist in the *connected* account. Schema inspection and dry-run flags prove nothing about the mutating path.
|
|
259
265
|
|
|
@@ -261,27 +267,59 @@ Think about testing as you build. Local tests don't link cloud credentials or th
|
|
|
261
267
|
keystroke apps list # all registered apps
|
|
262
268
|
keystroke apps search "{query}" # find an app + slug in the full catalog
|
|
263
269
|
keystroke apps get <slug> # catalog toolkit OR custom credential template (kind)
|
|
264
|
-
keystroke apps actions list <app> --search <q> # catalog toolkit
|
|
270
|
+
keystroke apps actions list <app> --search <q> # catalog toolkit OR live MCP tools (kind:mcp) after connect
|
|
265
271
|
keystroke apps actions get <app> <tool> # schema + how to run/import one catalog action
|
|
266
272
|
keystroke apps execute <app> <tool> --input '{...}' # run a connected catalog action (no server)
|
|
267
273
|
keystroke credentials list # what's already connected
|
|
268
|
-
keystroke connect <slug> # connect an app credential (opens web
|
|
274
|
+
keystroke connect <slug> # connect an app credential (opens the web connect flow; --print-url prints it instead)
|
|
269
275
|
keystroke credentials create <key> --set apiKey=@env:MY_KEY # static API key
|
|
270
276
|
```
|
|
271
277
|
|
|
272
|
-
`keystroke credentials list` is the **only** reliable connection check (`apps actions get` doesn't show status) —
|
|
278
|
+
`keystroke credentials list` is the **only** reliable connection check (`apps actions get` doesn't show status) — use it before connecting because the credential often already exists.
|
|
279
|
+
|
|
280
|
+
### Action discovery (search well)
|
|
281
|
+
|
|
282
|
+
`--search` is keyword search over action names/slugs — not a natural-language Q&A. Hit rate tips:
|
|
283
|
+
|
|
284
|
+
- Prefer a **single domain noun** (`customer`, `thread`, `event`, `message`). Avoid phrases (`"Retrieve a customer by ID"`) and bare verbs (`get` / `list` match almost everything).
|
|
285
|
+
- When the task spans multiple concepts, run **one search per concept in parallel** in the same turn (`customer`, `subscription`, `webhook`) — don't re-rephrase a failed phrase query.
|
|
286
|
+
- **Small toolkits** (one page or less): plain `keystroke apps actions list <app>` once, then pick slugs — don't search repeatedly.
|
|
287
|
+
- **Large toolkits** (GitHub, Stripe): search with nouns. If an unfiltered list returns `nextCursor`, switch to focused searches instead of paging through the entire toolkit.
|
|
288
|
+
- Once candidate slugs are known, fetch every needed schema with parallel `keystroke apps actions get <app> <tool>` calls in one turn.
|
|
289
|
+
|
|
290
|
+
### Slack: three connection kinds
|
|
291
|
+
|
|
292
|
+
Slack has three connection kinds (web: Apps → Connect Slack). Pick by what the user needs — never call any of them "Slackbot" when talking to the user:
|
|
293
|
+
|
|
294
|
+
| Need | Command | Notes |
|
|
295
|
+
| --- | --- | --- |
|
|
296
|
+
| Bot actions or channel bindings as **@Keystroke** | `keystroke connect slack --kind keystroke` | The **Keystroke Slack App** — catalog slug `slackbot` (same app; the credential lists under that slug). Add `--wait` to block until the workspace registers. |
|
|
297
|
+
| Act **as the human** (user token: their DMs, search, history) | `keystroke connect slack --kind personal` | **Personal Slack Account** — catalog slug `slack`. Not for External Channels. |
|
|
298
|
+
| Dedicated **@handle** identity for one agent | `keystroke channels setup <agent> --custom` | **Custom Slack App** wizard; user finishes in the browser. |
|
|
299
|
+
| User should decide | `keystroke connect slack` | Opens the chooser with all three. |
|
|
273
300
|
|
|
274
301
|
### Gateway / channel binding
|
|
275
302
|
|
|
276
|
-
|
|
303
|
+
Two Slack External Channels paths:
|
|
304
|
+
|
|
305
|
+
**Keystroke Slack App (default)** — agent responds as **@Keystroke** in a bound channel:
|
|
306
|
+
|
|
307
|
+
```bash
|
|
308
|
+
keystroke channels accounts --platform slack
|
|
309
|
+
# If empty:
|
|
310
|
+
keystroke connect slack --kind keystroke --wait
|
|
311
|
+
# Create/bind channel (default name = agent slug):
|
|
312
|
+
keystroke channels setup <slug> [--channel <name>]
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
**Custom Slack app (if the user wants a dedicated @handle anywhere):**
|
|
277
316
|
|
|
278
317
|
```bash
|
|
279
|
-
keystroke
|
|
280
|
-
keystroke channels
|
|
281
|
-
keystroke channels bind --agent <slug> --platform slack --account <team-id> --channel <channel-id>
|
|
318
|
+
keystroke channels setup <slug> --custom # opens agent wizard URL; user finishes in browser
|
|
319
|
+
keystroke channels list <slug> # verify after they finish
|
|
282
320
|
```
|
|
283
321
|
|
|
284
|
-
Full detail: `/learn/agents/external-channels`.
|
|
322
|
+
Do not use a Personal Slack Account (`--kind personal`, user token) for External Channels — it does not register a gateway workspace. Advanced primitives: `channels directory`, `channels bind`. Full detail: `/learn/agents/external-channels`.
|
|
285
323
|
|
|
286
324
|
Credentials are for secrets. Non-secret config — spreadsheet IDs, channel names, base URLs — belongs in code as a literal constant or a workflow input. Keystroke projects don't use `.env`.
|
|
287
325
|
|
|
@@ -291,12 +329,12 @@ Missing a built-in **credentialed** integration? After researching the system's
|
|
|
291
329
|
2. **Code authoring** — always `defineApp` in `src/apps/` + `app.action(...)`. Do **not** invent `src/credentials/foo.ts` + a lone `defineAction` for a new API.
|
|
292
330
|
3. **Connect** — `keystroke connect <slug>` (or `credentials create` when you already have the secret), then deploy.
|
|
293
331
|
|
|
294
|
-
|
|
332
|
+
For MCP apps: `keystroke docs search "custom apps MCP"` first, then `connect`, then `keystroke apps actions list <org>/<name>` for the live tool registry. Do not use `defineMcp`. Plain `defineAction` (no credentials) does not need an app. See `/learn/credentials/custom-integrations`.
|
|
295
333
|
|
|
296
334
|
## Skills & files
|
|
297
335
|
|
|
298
336
|
- **Skills** (`src/skills/<name>/SKILL.md`) — runtime playbooks that teach an agent *how* to do a task. Attach with `skills: ["<name>"]`.
|
|
299
|
-
- **Files** (`src/files/<set>/`) — static context an agent can access. Attach with `sandbox: defineSandbox({ files:
|
|
337
|
+
- **Files** (`src/files/<set>/`) — static context an agent can access. Attach with `sandbox: defineSandbox({ files: "set" })` or `files: ["set-a", "set-b/file.md"]`.
|
|
300
338
|
|
|
301
339
|
Both materialize into the agent's `/workspace/agent/...` environment before each prompt.
|
|
302
340
|
|
|
@@ -312,11 +350,15 @@ Both materialize into the agent's `/workspace/agent/...` environment before each
|
|
|
312
350
|
Inspect deployed runs progressively — start lean, then request richer detail only when needed:
|
|
313
351
|
|
|
314
352
|
```bash
|
|
353
|
+
keystroke workflows run <workflow-slug> --input '{...}' --wait # block until done (or --timeout)
|
|
354
|
+
keystroke workflows runs get <workflow-slug> <run-id> --wait # re-wait after a timeout
|
|
315
355
|
keystroke workflows runs list <workflow-slug>
|
|
316
356
|
keystroke workflows runs get <workflow-slug> <run-id> --summary
|
|
317
357
|
keystroke workflows runs get <workflow-slug> <run-id> --field output
|
|
318
358
|
keystroke workflows runs get <workflow-slug> <run-id> --include steps,trace
|
|
319
359
|
|
|
360
|
+
keystroke agents prompt <agent-slug> --message "..." --wait # block until done (or --timeout)
|
|
361
|
+
keystroke agents sessions get <agent-slug> <session-id> --wait # re-wait after a timeout
|
|
320
362
|
keystroke agents sessions list <agent-slug>
|
|
321
363
|
keystroke agents sessions get <agent-slug> <session-id> --summary
|
|
322
364
|
keystroke agents sessions get <agent-slug> <session-id> --field status
|
|
@@ -333,7 +375,7 @@ keystroke history list --kind workflow --status failed
|
|
|
333
375
|
|
|
334
376
|
Workflows have durable **runs**; agents have durable **sessions** (use `agents sessions get`, not `agents runs get`).
|
|
335
377
|
|
|
336
|
-
Invoke/inspect commands print JSON to stdout (exit 0 on success, 1 on failure) — pipe to `jq` when you need arbitrary paths. Prefer `--summary` / `--field` for common inspection so you don't dig through nested envelopes. Lifecycle commands (`init`/`
|
|
378
|
+
Invoke/inspect commands print JSON to stdout (exit 0 on success, 1 on failure) — pipe to `jq` when you need arbitrary paths. Prefer `--summary` / `--field` for common inspection so you don't dig through nested envelopes. Lifecycle commands (`init`/`build`/`deploy`) print human status.
|
|
337
379
|
|
|
338
380
|
## Before you claim you're done
|
|
339
381
|
|
|
@@ -354,24 +396,23 @@ Run `keystroke feedback create --help` for the message template and writing guid
|
|
|
354
396
|
|
|
355
397
|
## Common gotchas
|
|
356
398
|
|
|
357
|
-
1. **
|
|
358
|
-
2. **
|
|
359
|
-
3. **
|
|
360
|
-
4. **
|
|
361
|
-
5. **
|
|
362
|
-
6. **
|
|
363
|
-
7. **
|
|
364
|
-
8. **
|
|
365
|
-
9. **
|
|
366
|
-
10.
|
|
367
|
-
11.
|
|
368
|
-
12. **Slack gateway** — connect agents to Slack channels with `slackbot` (`keystroke connect slackbot`). See [Gateway / channel binding](#gateway--channel-binding).
|
|
399
|
+
1. **Action calling an action** — throws at runtime and fails lint. Compose in a workflow, or attach the integration action directly.
|
|
400
|
+
2. **Bad model id** — must be exact `vendor/model-id` from the catalog; don't kebab the version. Fails at deploy, not typecheck.
|
|
401
|
+
3. **LLM structured output: prefer `.nullable()` for optional fields** — OpenAI/Azure strict mode requires every property key in `required`. Zod `.optional()` / `.nullish()` omit keys and the API rejects the schema before the model runs. Keystroke rewrites those wrappers to `.nullable()` on the wire, but authoring with `.nullable()` (always present, may be `null`) matches what the model returns and avoids surprises. Avoid bare `.optional()` in `outputSchema`.
|
|
402
|
+
4. **Structured output + tools is vendor-specific** — Anthropic Sonnet/Opus and OpenAI/Google/xAI are reliable; z-ai GLM uses a submit tool when tools are present; Alibaba Qwen is best-effort. See [structured output with tools](/learn/agents/build-agents#structured-output-with-tools).
|
|
403
|
+
5. **Silent fallbacks hide real failures** — for live config (Sheets, DBs, credentials), don't `catch` and quietly substitute fallback/empty data in production paths; a run that "completes" with empty inputs looks like success in the trace but is a silent failure. Throw when required config is missing or empty, and validate response shape, not just status.
|
|
404
|
+
6. **Side effects outside steps** — they re-run on every replay. Keep them inside `.run()` / `.prompt()`.
|
|
405
|
+
7. **Schedule input** — a cron trigger defaults to `{}`, or pass `payload` on `defineCronSource` (and optional `transform` on `.attach`) when the workflow needs input.
|
|
406
|
+
8. **Missing `name`/`description`** — required on every primitive (agents, workflows, actions, trigger sources). Types require them for agents, actions, and workflows; omitting them throws at module load / deploy.
|
|
407
|
+
9. **Integration actions throw on failure** — prebuilt actions return their typed output directly (the shape `keystroke apps actions get` shows) and **throw** on failure; don't port `{ data, error, successful }` envelope checks from Composio docs.
|
|
408
|
+
10. **`.default()` on an input field makes it required in the `run()` call type** — action/workflow `run` inputs are typed from the schema's *parsed* output, so a defaulted field must still be passed at the call site. When callers should be able to omit a field, use `.optional()` and apply the fallback inside `run`.
|
|
409
|
+
11. **Slack gateway** — prefer `keystroke channels setup <slug>`; custom @handle uses `channels setup <slug> --custom`. See [Gateway / channel binding](#gateway--channel-binding).
|
|
369
410
|
|
|
370
411
|
## Documentation
|
|
371
412
|
|
|
372
|
-
Docs are the
|
|
413
|
+
Building blocks and gotchas in this guide are the authoring contract — enough for standard agents, workflows, actions, and cron/webhook/poll triggers. Docs are the expanded reference for APIs, patterns, and examples — read them when you deviate from this guide, need a topic it doesn't cover (custom integrations, channels, canvas fine points), or something fails in a way this guide doesn't explain. Never re-fetch a page already read this session. If this guide and the docs conflict, trust this guide and report via `keystroke feedback create`.
|
|
373
414
|
|
|
374
|
-
- **CLI:** `keystroke docs search "<query>"` to find pages; `keystroke docs query "cat /<path>.mdx"` to read. Docs commands need no auth, org, project, or config.
|
|
415
|
+
- **CLI:** `keystroke docs search "<query>"` to find pages; `keystroke docs query "cat /<path>.mdx"` to read. Docs commands need no auth, org, project, or config. Independent docs lookups should run in parallel with action discovery — they don't depend on each other.
|
|
375
416
|
- **Index:** <https://keystroke.ai/docs/llms.txt>
|
|
376
417
|
- **HTTP fetch:** `https://keystroke.ai/docs/<path>.md` — e.g. `/learn/agents/build-agents` → `https://keystroke.ai/docs/learn/agents/build-agents.md`. Non-`.md` URLs are for humans; fetch `.md` only.
|
|
377
418
|
|
|
@@ -382,7 +423,7 @@ Key pages (every `Full detail:` pointer in this guide is also a docs path; the i
|
|
|
382
423
|
| `/cli` | Full command reference, flags, JSON output |
|
|
383
424
|
| `/explore-features` | Map of all feature documentation |
|
|
384
425
|
| `/learn/agents/build-agents` | Models, tools, subagents, sandboxes, MCP tools on agents |
|
|
385
|
-
| `/learn/agents/external-channels` |
|
|
426
|
+
| `/learn/agents/external-channels` | Keystroke vs custom Slack; `channels setup` and wizard deeplinks |
|
|
386
427
|
| `/learn/workflows/authoring-best-practices` | Canvas-legible, replayable workflow patterns |
|
|
387
428
|
| `/learn/triggers/overview` | Choosing a trigger type (per-source pages live alongside) |
|
|
388
429
|
| `/learn/credentials/connect-credentials` | `keystroke connect`, OAuth, project credentials |
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { r as s, t as o } from "./chunk-QAYAQNCG-Bl0Kbd53.mjs";
|
|
3
2
|
import "./chunk-BZUGFHVS-CPWRFwK8.mjs";
|
|
4
3
|
import "./chunk-TN7HHBQW-CSB_R-XD.mjs";
|
|
5
4
|
import { n as u$1, t as b$1 } from "./chunk-XRFHFXFP-BGxzVZgK.mjs";
|
|
5
|
+
import { r as s, t as o } from "./chunk-QAYAQNCG-Bl0Kbd53.mjs";
|
|
6
6
|
import { t as n } from "./chunk-SX2HC7SO-Cc4Hpis1.mjs";
|
|
7
7
|
import { createRequire } from "node:module";
|
|
8
8
|
//#region ../../node_modules/.pnpm/just-bash@3.0.1/node_modules/just-bash/dist/bundle/chunks/chunk-FAXLQUCQ.js
|
|
@@ -64,4 +64,4 @@ createRequire(import.meta.url);
|
|
|
64
64
|
//#endregion
|
|
65
65
|
export { h as sleepCommand };
|
|
66
66
|
|
|
67
|
-
//# sourceMappingURL=sleep-X22JJINO-
|
|
67
|
+
//# sourceMappingURL=sleep-X22JJINO-gsrMSr5k.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sleep-X22JJINO-
|
|
1
|
+
{"version":3,"file":"sleep-X22JJINO-gsrMSr5k.mjs","names":["l","a","d","s","n"],"sources":["../../../node_modules/.pnpm/just-bash@3.0.1/node_modules/just-bash/dist/bundle/chunks/chunk-FAXLQUCQ.js","../../../node_modules/.pnpm/just-bash@3.0.1/node_modules/just-bash/dist/bundle/chunks/sleep-X22JJINO.js"],"sourcesContent":["import{createRequire} from\"node:module\";const require=createRequire(import.meta.url);\nimport{a as d}from\"./chunk-SX2HC7SO.js\";import{a as n,b as i}from\"./chunk-XRFHFXFP.js\";import{a,b as l}from\"./chunk-QAYAQNCG.js\";var u={name:\"sleep\",summary:\"delay for a specified amount of time\",usage:\"sleep NUMBER[SUFFIX]\",description:`Pause for NUMBER seconds. SUFFIX may be:\n s - seconds (default)\n m - minutes\n h - hours\n d - days\n\nNUMBER may be a decimal number.`,options:[\" --help display this help and exit\"]},m=36e5,h={name:\"sleep\",async execute(r,s){if(l(r))return a(u);if(r.length===0)return{stdout:\"\",stderr:`sleep: missing operand\n`,exitCode:1};let t=0;for(let e of r){let o=d(e);if(o===null)return{stdout:\"\",stderr:`sleep: invalid time interval '${e}'\n`,exitCode:1};t+=o}return t>m&&(t=m),s.signal?.aborted?{stdout:\"\",stderr:\"\",exitCode:0}:(s.sleep?await s.sleep(t):s.signal?await new Promise(e=>{let o=()=>{i(p),e()},p=n(()=>{s.signal?.removeEventListener(\"abort\",o),e()},t);s.signal?.addEventListener(\"abort\",o,{once:!0})}):await new Promise(e=>n(e,t)),{stdout:\"\",stderr:\"\",exitCode:0})}},b={name:\"sleep\",flags:[],needsArgs:!0};export{h as a,b};\n","import{createRequire} from\"node:module\";const require=createRequire(import.meta.url);\nimport{a,b}from\"./chunk-FAXLQUCQ.js\";import\"./chunk-SX2HC7SO.js\";import\"./chunk-XRFHFXFP.js\";import\"./chunk-TN7HHBQW.js\";import\"./chunk-QAYAQNCG.js\";import\"./chunk-BZUGFHVS.js\";export{b as flagsForFuzzing,a as sleepCommand};\n"],"x_google_ignoreList":[0,1],"mappings":";;;;;;;;AAAsD,cAAc,OAAO,KAAK,GAAG;AAC8C,IAAI,IAAE;CAAC,MAAK;CAAQ,SAAQ;CAAuC,OAAM;CAAuB,aAAY;;;;;;;CAM5M,SAAQ,CAAC,uCAAuC;AAAC,GAAE,IAAE,MAAK,IAAE;CAAC,MAAK;CAAQ,MAAM,QAAQ,GAAE,KAAE;EAAC,IAAGA,EAAE,CAAC,GAAE,OAAOC,EAAE,CAAC;EAAE,IAAG,EAAE,WAAS,GAAE,OAAM;GAAC,QAAO;GAAG,QAAO;;GACxL,UAAS;EAAC;EAAE,IAAI,IAAE;EAAE,KAAI,IAAI,KAAK,GAAE;GAAC,IAAI,IAAEC,EAAE,CAAC;GAAE,IAAG,MAAI,MAAK,OAAM;IAAC,QAAO;IAAG,QAAO,iCAAiC,EAAE;;IACtH,UAAS;GAAC;GAAE,KAAG;EAAC;EAAC,OAAO,IAAE,MAAI,IAAE,IAAGC,IAAE,QAAQ,UAAQ;GAAC,QAAO;GAAG,QAAO;GAAG,UAAS;EAAC,KAAGA,IAAE,QAAM,MAAMA,IAAE,MAAM,CAAC,IAAEA,IAAE,SAAO,MAAM,IAAI,SAAQ,MAAG;GAAC,IAAI,UAAM;IAAC,IAAE,CAAC,GAAE,EAAE;GAAC,GAAE,IAAEC,UAAM;IAAC,IAAE,QAAQ,oBAAoB,SAAQ,CAAC,GAAE,EAAE;GAAC,GAAE,CAAC;GAAE,IAAE,QAAQ,iBAAiB,SAAQ,GAAE,EAAC,MAAK,CAAC,EAAC,CAAC;EAAC,CAAC,IAAE,MAAM,IAAI,SAAQ,MAAGA,IAAE,GAAE,CAAC,CAAC,GAAE;GAAC,QAAO;GAAG,QAAO;GAAG,UAAS;EAAC;CAAE;AAAC;;;ACT3R,cAAc,OAAO,KAAK,GAAG"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { n as r, r as s, t as o } from "./chunk-QAYAQNCG-Bl0Kbd53.mjs";
|
|
3
2
|
import "./chunk-BZUGFHVS-CPWRFwK8.mjs";
|
|
4
3
|
import { r as x$1 } from "./chunk-NRSASXYY-CuWyREpD.mjs";
|
|
5
|
-
import { t as T } from "./chunk-YCLFEX4T-COc1AThz.mjs";
|
|
6
4
|
import "./chunk-STHBFACM-lyj-j2a-.mjs";
|
|
5
|
+
import { n as r, r as s, t as o } from "./chunk-QAYAQNCG-Bl0Kbd53.mjs";
|
|
6
|
+
import { t as T } from "./chunk-YCLFEX4T-COc1AThz.mjs";
|
|
7
7
|
import { createRequire } from "node:module";
|
|
8
8
|
//#region ../../node_modules/.pnpm/just-bash@3.0.1/node_modules/just-bash/dist/bundle/chunks/chunk-T4TFLF3R.js
|
|
9
9
|
createRequire(import.meta.url);
|
|
@@ -317,4 +317,4 @@ createRequire(import.meta.url);
|
|
|
317
317
|
//#endregion
|
|
318
318
|
export { R as sortCommand };
|
|
319
319
|
|
|
320
|
-
//# sourceMappingURL=sort-SW2YEO5B-
|
|
320
|
+
//# sourceMappingURL=sort-SW2YEO5B-D5UsbJuA.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sort-SW2YEO5B-B7j1zw8k.mjs","names":["w","N","k","s","O","r","F","o"],"sources":["../../../node_modules/.pnpm/just-bash@3.0.1/node_modules/just-bash/dist/bundle/chunks/chunk-T4TFLF3R.js","../../../node_modules/.pnpm/just-bash@3.0.1/node_modules/just-bash/dist/bundle/chunks/sort-SW2YEO5B.js"],"sourcesContent":["import{createRequire} from\"node:module\";const require=createRequire(import.meta.url);\nimport{b as O}from\"./chunk-YCLFEX4T.js\";import{c as F}from\"./chunk-NRSASXYY.js\";import{a as N,b as w,c as k}from\"./chunk-QAYAQNCG.js\";var P=new Map([[\"\",1],[\"k\",1024],[\"m\",1048576],[\"g\",1073741824],[\"t\",1099511627776],[\"p\",0x4000000000000],[\"e\",1152921504606847e3]]),D=new Map([[\"jan\",1],[\"feb\",2],[\"mar\",3],[\"apr\",4],[\"may\",5],[\"jun\",6],[\"jul\",7],[\"aug\",8],[\"sep\",9],[\"oct\",10],[\"nov\",11],[\"dec\",12]]);function x(u){let r=u.trim(),e=r.match(/^([+-]?\\d*\\.?\\d+)\\s*([kmgtpeKMGTPE])?[iI]?[bB]?$/);if(!e){let n=parseFloat(r);return Number.isNaN(n)?0:n}let l=parseFloat(e[1]),s=(e[2]||\"\").toLowerCase(),i=P.get(s)??1;return l*i}function M(u){let r=u.trim().toLowerCase().slice(0,3);return D.get(r)??0}function q(u,r){let e=u.split(/(\\d+)/),l=r.split(/(\\d+)/),s=Math.max(e.length,l.length);for(let i=0;i<s;i++){let n=e[i]||\"\",d=l[i]||\"\",o=/^\\d+$/.test(n)?parseInt(n,10):null,c=/^\\d+$/.test(d)?parseInt(d,10):null;if(o!==null&&c!==null){if(o!==c)return o-c}else if(n!==d)return n.localeCompare(d)}return 0}function L(u){return u.replace(/[^a-zA-Z0-9\\s]/g,\"\")}function v(u,r,e){let l=e!==null?e:/\\s+/,s=u.split(l),i=r.startField-1;if(i>=s.length)return\"\";if(r.endField===void 0){let o=s[i]||\"\";return r.startChar!==void 0&&(o=o.slice(r.startChar-1)),r.ignoreLeading&&(o=o.trimStart()),o}let n=Math.min(r.endField-1,s.length-1),d=\"\";for(let o=i;o<=n&&o<s.length;o++){let c=s[o]||\"\";if(o===i&&r.startChar!==void 0&&(c=c.slice(r.startChar-1)),o===n&&r.endChar!==void 0){let t=o===i&&r.startChar!==void 0?r.endChar-r.startChar+1:r.endChar;c=c.slice(0,t)}o>i&&(d+=e||\" \"),d+=c}return r.ignoreLeading&&(d=d.trimStart()),d}function I(u,r,e){let l=u,s=r;if(e.dictionaryOrder&&(l=L(l),s=L(s)),e.ignoreCase&&(l=l.toLowerCase(),s=s.toLowerCase()),e.monthSort){let i=M(l),n=M(s);return i-n}if(e.humanNumeric){let i=x(l),n=x(s);return i-n}if(e.versionSort)return q(l,s);if(e.numeric){let i=parseFloat(l)||0,n=parseFloat(s)||0;return i-n}return l.localeCompare(s)}function B(u){let{keys:r,fieldDelimiter:e,numeric:l,ignoreCase:s,reverse:i,humanNumeric:n,versionSort:d,dictionaryOrder:o,monthSort:c,ignoreLeadingBlanks:t,stable:a}=u;return(f,C)=>{let g=f,b=C;if(t&&(g=g.trimStart(),b=b.trimStart()),r.length===0){let h=I(g,b,{numeric:l,ignoreCase:s,humanNumeric:n,versionSort:d,dictionaryOrder:o,monthSort:c});if(h!==0)return i?-h:h;if(!a){let p=f.localeCompare(C);return i?-p:p}return 0}for(let m of r){let h=v(g,m,e),p=v(b,m,e);m.ignoreLeading&&(h=h.trimStart(),p=p.trimStart());let V={numeric:m.numeric??l,ignoreCase:m.ignoreCase??s,humanNumeric:m.humanNumeric??n,versionSort:m.versionSort??d,dictionaryOrder:m.dictionaryOrder??o,monthSort:m.monthSort??c},A=m.reverse??i,S=I(h,p,V);if(S!==0)return A?-S:S}if(!a){let m=f.localeCompare(C);return i?-m:m}return 0}}function E(u,r){if(r.keys.length===0){if(r.ignoreCase){let s=new Set;return u.filter(i=>{let n=i.toLowerCase();return s.has(n)?!1:(s.add(n),!0)})}return[...new Set(u)]}let e=r.keys[0],l=new Set;return u.filter(s=>{let i=v(s,e,r.fieldDelimiter);return(e.ignoreCase??r.ignoreCase)&&(i=i.toLowerCase()),l.has(i)?!1:(l.add(i),!0)})}function y(u){let r={startField:1},e=\"\",l=u,s=l.match(/([bdfhMnrV]+)$/);s&&(e=s[1],l=l.slice(0,-e.length)),e.includes(\"n\")&&(r.numeric=!0),e.includes(\"r\")&&(r.reverse=!0),e.includes(\"f\")&&(r.ignoreCase=!0),e.includes(\"b\")&&(r.ignoreLeading=!0),e.includes(\"h\")&&(r.humanNumeric=!0),e.includes(\"V\")&&(r.versionSort=!0),e.includes(\"d\")&&(r.dictionaryOrder=!0),e.includes(\"M\")&&(r.monthSort=!0);let i=l.split(\",\");if(i.length===0||i[0]===\"\")return null;let n=i[0].split(\".\"),d=parseInt(n[0],10);if(Number.isNaN(d)||d<1)return null;if(r.startField=d,n.length>1&&n[1]){let o=parseInt(n[1],10);!Number.isNaN(o)&&o>=1&&(r.startChar=o)}if(i.length>1&&i[1]){let o=i[1],c=o.match(/([bdfhMnrV]+)$/);if(c){let a=c[1];a.includes(\"n\")&&(r.numeric=!0),a.includes(\"r\")&&(r.reverse=!0),a.includes(\"f\")&&(r.ignoreCase=!0),a.includes(\"b\")&&(r.ignoreLeading=!0),a.includes(\"h\")&&(r.humanNumeric=!0),a.includes(\"V\")&&(r.versionSort=!0),a.includes(\"d\")&&(r.dictionaryOrder=!0),a.includes(\"M\")&&(r.monthSort=!0),o=o.slice(0,-a.length)}let t=o.split(\".\");if(t[0]){let a=parseInt(t[0],10);if(!Number.isNaN(a)&&a>=1&&(r.endField=a),t.length>1&&t[1]){let f=parseInt(t[1],10);!Number.isNaN(f)&&f>=1&&(r.endChar=f)}}}return r}var H={name:\"sort\",summary:\"sort lines of text files\",usage:\"sort [OPTION]... [FILE]...\",options:[\"-b, --ignore-leading-blanks ignore leading blanks\",\"-d, --dictionary-order consider only blanks and alphanumeric characters\",\"-f, --ignore-case fold lower case to upper case characters\",\"-h, --human-numeric-sort compare human readable numbers (e.g., 2K 1G)\",\"-M, --month-sort compare (unknown) < 'JAN' < ... < 'DEC'\",\"-n, --numeric-sort compare according to string numerical value\",\"-r, --reverse reverse the result of comparisons\",\"-V, --version-sort natural sort of (version) numbers within text\",\"-c, --check check for sorted input; do not sort\",\"-o, --output=FILE write result to FILE instead of stdout\",\"-s, --stable stabilize sort by disabling last-resort comparison\",\"-u, --unique output only unique lines\",\"-k, --key=KEYDEF sort via a key; KEYDEF gives location and type\",\"-t, --field-separator=SEP use SEP as field separator\",\" --help display this help and exit\"],description:`KEYDEF is F[.C][OPTS][,F[.C][OPTS]]\n F is a field number (1-indexed)\n C is a character position within the field (1-indexed)\n OPTS can be: b d f h M n r V (per-key modifiers)\n\nExamples:\n -k1 sort by first field\n -k2,2 sort by second field only\n -k1.3 sort by first field starting at 3rd character\n -k1,2n sort by fields 1-2 numerically\n -k2 -k1 sort by field 2, then by field 1`},R={name:\"sort\",async execute(u,r){if(w(u))return N(H);let e={reverse:!1,numeric:!1,unique:!1,ignoreCase:!1,humanNumeric:!1,versionSort:!1,dictionaryOrder:!1,monthSort:!1,ignoreLeadingBlanks:!1,stable:!1,checkOnly:!1,outputFile:null,keys:[],fieldDelimiter:null},l=[];for(let c=0;c<u.length;c++){let t=u[c];if(t===\"-r\"||t===\"--reverse\")e.reverse=!0;else if(t===\"-n\"||t===\"--numeric-sort\")e.numeric=!0;else if(t===\"-u\"||t===\"--unique\")e.unique=!0;else if(t===\"-f\"||t===\"--ignore-case\")e.ignoreCase=!0;else if(t===\"-h\"||t===\"--human-numeric-sort\")e.humanNumeric=!0;else if(t===\"-V\"||t===\"--version-sort\")e.versionSort=!0;else if(t===\"-d\"||t===\"--dictionary-order\")e.dictionaryOrder=!0;else if(t===\"-M\"||t===\"--month-sort\")e.monthSort=!0;else if(t===\"-b\"||t===\"--ignore-leading-blanks\")e.ignoreLeadingBlanks=!0;else if(t===\"-s\"||t===\"--stable\")e.stable=!0;else if(t===\"-c\"||t===\"--check\")e.checkOnly=!0;else if(t===\"-o\"||t===\"--output\")e.outputFile=u[++c]||null;else if(t.startsWith(\"-o\"))e.outputFile=t.slice(2)||null;else if(t.startsWith(\"--output=\"))e.outputFile=t.slice(9)||null;else if(t===\"-t\"||t===\"--field-separator\")e.fieldDelimiter=u[++c]||null;else if(t.startsWith(\"-t\"))e.fieldDelimiter=t.slice(2)||null;else if(t.startsWith(\"--field-separator=\"))e.fieldDelimiter=t.slice(18)||null;else if(t===\"-k\"||t===\"--key\"){let a=u[++c];if(a){let f=y(a);f&&e.keys.push(f)}}else if(t.startsWith(\"-k\")){let a=y(t.slice(2));a&&e.keys.push(a)}else if(t.startsWith(\"--key=\")){let a=y(t.slice(6));a&&e.keys.push(a)}else{if(t.startsWith(\"--\"))return k(\"sort\",t);if(t.startsWith(\"-\")&&!t.startsWith(\"--\")){let a=!1;for(let f of t.slice(1))if(f===\"r\")e.reverse=!0;else if(f===\"n\")e.numeric=!0;else if(f===\"u\")e.unique=!0;else if(f===\"f\")e.ignoreCase=!0;else if(f===\"h\")e.humanNumeric=!0;else if(f===\"V\")e.versionSort=!0;else if(f===\"d\")e.dictionaryOrder=!0;else if(f===\"M\")e.monthSort=!0;else if(f===\"b\")e.ignoreLeadingBlanks=!0;else if(f===\"s\")e.stable=!0;else if(f===\"c\")e.checkOnly=!0;else{a=!0;break}if(a)return k(\"sort\",t)}else l.push(t)}}let s=await O(r,l,{cmdName:\"sort\"});if(!s.ok)return s.error;let n=F(s.content).split(`\n`);n.length>0&&n[n.length-1]===\"\"&&n.pop();let d=B(e);if(e.checkOnly){let c=l.length>0?l[0]:\"-\";for(let t=1;t<n.length;t++)if(d(n[t-1],n[t])>0)return{stdout:\"\",stderr:`sort: ${c}:${t+1}: disorder: ${n[t]}\n`,exitCode:1};return{stdout:\"\",stderr:\"\",exitCode:0}}n.sort(d),e.unique&&(n=E(n,e));let o=n.length>0?`${n.join(`\n`)}\n`:\"\";if(e.outputFile){let c=r.fs.resolvePath(r.cwd,e.outputFile);return await r.fs.writeFile(c,o),{stdout:\"\",stderr:\"\",exitCode:0}}return{stdout:o,stderr:\"\",exitCode:0}}},Y={name:\"sort\",flags:[{flag:\"-r\",type:\"boolean\"},{flag:\"-n\",type:\"boolean\"},{flag:\"-u\",type:\"boolean\"},{flag:\"-f\",type:\"boolean\"},{flag:\"-h\",type:\"boolean\"},{flag:\"-V\",type:\"boolean\"},{flag:\"-d\",type:\"boolean\"},{flag:\"-M\",type:\"boolean\"},{flag:\"-b\",type:\"boolean\"},{flag:\"-s\",type:\"boolean\"},{flag:\"-c\",type:\"boolean\"},{flag:\"-k\",type:\"value\",valueHint:\"string\"},{flag:\"-t\",type:\"value\",valueHint:\"delimiter\"},{flag:\"-o\",type:\"value\",valueHint:\"path\"}],stdinType:\"text\",needsFiles:!0};export{R as a,Y as b};\n","import{createRequire} from\"node:module\";const require=createRequire(import.meta.url);\nimport{a,b}from\"./chunk-T4TFLF3R.js\";import\"./chunk-YCLFEX4T.js\";import\"./chunk-NRSASXYY.js\";import\"./chunk-STHBFACM.js\";import\"./chunk-QAYAQNCG.js\";import\"./chunk-BZUGFHVS.js\";export{b as flagsForFuzzing,a as sortCommand};\n"],"x_google_ignoreList":[0,1],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sort-SW2YEO5B-D5UsbJuA.mjs","names":["w","N","k","s","O","r","F","o"],"sources":["../../../node_modules/.pnpm/just-bash@3.0.1/node_modules/just-bash/dist/bundle/chunks/chunk-T4TFLF3R.js","../../../node_modules/.pnpm/just-bash@3.0.1/node_modules/just-bash/dist/bundle/chunks/sort-SW2YEO5B.js"],"sourcesContent":["import{createRequire} from\"node:module\";const require=createRequire(import.meta.url);\nimport{b as O}from\"./chunk-YCLFEX4T.js\";import{c as F}from\"./chunk-NRSASXYY.js\";import{a as N,b as w,c as k}from\"./chunk-QAYAQNCG.js\";var P=new Map([[\"\",1],[\"k\",1024],[\"m\",1048576],[\"g\",1073741824],[\"t\",1099511627776],[\"p\",0x4000000000000],[\"e\",1152921504606847e3]]),D=new Map([[\"jan\",1],[\"feb\",2],[\"mar\",3],[\"apr\",4],[\"may\",5],[\"jun\",6],[\"jul\",7],[\"aug\",8],[\"sep\",9],[\"oct\",10],[\"nov\",11],[\"dec\",12]]);function x(u){let r=u.trim(),e=r.match(/^([+-]?\\d*\\.?\\d+)\\s*([kmgtpeKMGTPE])?[iI]?[bB]?$/);if(!e){let n=parseFloat(r);return Number.isNaN(n)?0:n}let l=parseFloat(e[1]),s=(e[2]||\"\").toLowerCase(),i=P.get(s)??1;return l*i}function M(u){let r=u.trim().toLowerCase().slice(0,3);return D.get(r)??0}function q(u,r){let e=u.split(/(\\d+)/),l=r.split(/(\\d+)/),s=Math.max(e.length,l.length);for(let i=0;i<s;i++){let n=e[i]||\"\",d=l[i]||\"\",o=/^\\d+$/.test(n)?parseInt(n,10):null,c=/^\\d+$/.test(d)?parseInt(d,10):null;if(o!==null&&c!==null){if(o!==c)return o-c}else if(n!==d)return n.localeCompare(d)}return 0}function L(u){return u.replace(/[^a-zA-Z0-9\\s]/g,\"\")}function v(u,r,e){let l=e!==null?e:/\\s+/,s=u.split(l),i=r.startField-1;if(i>=s.length)return\"\";if(r.endField===void 0){let o=s[i]||\"\";return r.startChar!==void 0&&(o=o.slice(r.startChar-1)),r.ignoreLeading&&(o=o.trimStart()),o}let n=Math.min(r.endField-1,s.length-1),d=\"\";for(let o=i;o<=n&&o<s.length;o++){let c=s[o]||\"\";if(o===i&&r.startChar!==void 0&&(c=c.slice(r.startChar-1)),o===n&&r.endChar!==void 0){let t=o===i&&r.startChar!==void 0?r.endChar-r.startChar+1:r.endChar;c=c.slice(0,t)}o>i&&(d+=e||\" \"),d+=c}return r.ignoreLeading&&(d=d.trimStart()),d}function I(u,r,e){let l=u,s=r;if(e.dictionaryOrder&&(l=L(l),s=L(s)),e.ignoreCase&&(l=l.toLowerCase(),s=s.toLowerCase()),e.monthSort){let i=M(l),n=M(s);return i-n}if(e.humanNumeric){let i=x(l),n=x(s);return i-n}if(e.versionSort)return q(l,s);if(e.numeric){let i=parseFloat(l)||0,n=parseFloat(s)||0;return i-n}return l.localeCompare(s)}function B(u){let{keys:r,fieldDelimiter:e,numeric:l,ignoreCase:s,reverse:i,humanNumeric:n,versionSort:d,dictionaryOrder:o,monthSort:c,ignoreLeadingBlanks:t,stable:a}=u;return(f,C)=>{let g=f,b=C;if(t&&(g=g.trimStart(),b=b.trimStart()),r.length===0){let h=I(g,b,{numeric:l,ignoreCase:s,humanNumeric:n,versionSort:d,dictionaryOrder:o,monthSort:c});if(h!==0)return i?-h:h;if(!a){let p=f.localeCompare(C);return i?-p:p}return 0}for(let m of r){let h=v(g,m,e),p=v(b,m,e);m.ignoreLeading&&(h=h.trimStart(),p=p.trimStart());let V={numeric:m.numeric??l,ignoreCase:m.ignoreCase??s,humanNumeric:m.humanNumeric??n,versionSort:m.versionSort??d,dictionaryOrder:m.dictionaryOrder??o,monthSort:m.monthSort??c},A=m.reverse??i,S=I(h,p,V);if(S!==0)return A?-S:S}if(!a){let m=f.localeCompare(C);return i?-m:m}return 0}}function E(u,r){if(r.keys.length===0){if(r.ignoreCase){let s=new Set;return u.filter(i=>{let n=i.toLowerCase();return s.has(n)?!1:(s.add(n),!0)})}return[...new Set(u)]}let e=r.keys[0],l=new Set;return u.filter(s=>{let i=v(s,e,r.fieldDelimiter);return(e.ignoreCase??r.ignoreCase)&&(i=i.toLowerCase()),l.has(i)?!1:(l.add(i),!0)})}function y(u){let r={startField:1},e=\"\",l=u,s=l.match(/([bdfhMnrV]+)$/);s&&(e=s[1],l=l.slice(0,-e.length)),e.includes(\"n\")&&(r.numeric=!0),e.includes(\"r\")&&(r.reverse=!0),e.includes(\"f\")&&(r.ignoreCase=!0),e.includes(\"b\")&&(r.ignoreLeading=!0),e.includes(\"h\")&&(r.humanNumeric=!0),e.includes(\"V\")&&(r.versionSort=!0),e.includes(\"d\")&&(r.dictionaryOrder=!0),e.includes(\"M\")&&(r.monthSort=!0);let i=l.split(\",\");if(i.length===0||i[0]===\"\")return null;let n=i[0].split(\".\"),d=parseInt(n[0],10);if(Number.isNaN(d)||d<1)return null;if(r.startField=d,n.length>1&&n[1]){let o=parseInt(n[1],10);!Number.isNaN(o)&&o>=1&&(r.startChar=o)}if(i.length>1&&i[1]){let o=i[1],c=o.match(/([bdfhMnrV]+)$/);if(c){let a=c[1];a.includes(\"n\")&&(r.numeric=!0),a.includes(\"r\")&&(r.reverse=!0),a.includes(\"f\")&&(r.ignoreCase=!0),a.includes(\"b\")&&(r.ignoreLeading=!0),a.includes(\"h\")&&(r.humanNumeric=!0),a.includes(\"V\")&&(r.versionSort=!0),a.includes(\"d\")&&(r.dictionaryOrder=!0),a.includes(\"M\")&&(r.monthSort=!0),o=o.slice(0,-a.length)}let t=o.split(\".\");if(t[0]){let a=parseInt(t[0],10);if(!Number.isNaN(a)&&a>=1&&(r.endField=a),t.length>1&&t[1]){let f=parseInt(t[1],10);!Number.isNaN(f)&&f>=1&&(r.endChar=f)}}}return r}var H={name:\"sort\",summary:\"sort lines of text files\",usage:\"sort [OPTION]... [FILE]...\",options:[\"-b, --ignore-leading-blanks ignore leading blanks\",\"-d, --dictionary-order consider only blanks and alphanumeric characters\",\"-f, --ignore-case fold lower case to upper case characters\",\"-h, --human-numeric-sort compare human readable numbers (e.g., 2K 1G)\",\"-M, --month-sort compare (unknown) < 'JAN' < ... < 'DEC'\",\"-n, --numeric-sort compare according to string numerical value\",\"-r, --reverse reverse the result of comparisons\",\"-V, --version-sort natural sort of (version) numbers within text\",\"-c, --check check for sorted input; do not sort\",\"-o, --output=FILE write result to FILE instead of stdout\",\"-s, --stable stabilize sort by disabling last-resort comparison\",\"-u, --unique output only unique lines\",\"-k, --key=KEYDEF sort via a key; KEYDEF gives location and type\",\"-t, --field-separator=SEP use SEP as field separator\",\" --help display this help and exit\"],description:`KEYDEF is F[.C][OPTS][,F[.C][OPTS]]\n F is a field number (1-indexed)\n C is a character position within the field (1-indexed)\n OPTS can be: b d f h M n r V (per-key modifiers)\n\nExamples:\n -k1 sort by first field\n -k2,2 sort by second field only\n -k1.3 sort by first field starting at 3rd character\n -k1,2n sort by fields 1-2 numerically\n -k2 -k1 sort by field 2, then by field 1`},R={name:\"sort\",async execute(u,r){if(w(u))return N(H);let e={reverse:!1,numeric:!1,unique:!1,ignoreCase:!1,humanNumeric:!1,versionSort:!1,dictionaryOrder:!1,monthSort:!1,ignoreLeadingBlanks:!1,stable:!1,checkOnly:!1,outputFile:null,keys:[],fieldDelimiter:null},l=[];for(let c=0;c<u.length;c++){let t=u[c];if(t===\"-r\"||t===\"--reverse\")e.reverse=!0;else if(t===\"-n\"||t===\"--numeric-sort\")e.numeric=!0;else if(t===\"-u\"||t===\"--unique\")e.unique=!0;else if(t===\"-f\"||t===\"--ignore-case\")e.ignoreCase=!0;else if(t===\"-h\"||t===\"--human-numeric-sort\")e.humanNumeric=!0;else if(t===\"-V\"||t===\"--version-sort\")e.versionSort=!0;else if(t===\"-d\"||t===\"--dictionary-order\")e.dictionaryOrder=!0;else if(t===\"-M\"||t===\"--month-sort\")e.monthSort=!0;else if(t===\"-b\"||t===\"--ignore-leading-blanks\")e.ignoreLeadingBlanks=!0;else if(t===\"-s\"||t===\"--stable\")e.stable=!0;else if(t===\"-c\"||t===\"--check\")e.checkOnly=!0;else if(t===\"-o\"||t===\"--output\")e.outputFile=u[++c]||null;else if(t.startsWith(\"-o\"))e.outputFile=t.slice(2)||null;else if(t.startsWith(\"--output=\"))e.outputFile=t.slice(9)||null;else if(t===\"-t\"||t===\"--field-separator\")e.fieldDelimiter=u[++c]||null;else if(t.startsWith(\"-t\"))e.fieldDelimiter=t.slice(2)||null;else if(t.startsWith(\"--field-separator=\"))e.fieldDelimiter=t.slice(18)||null;else if(t===\"-k\"||t===\"--key\"){let a=u[++c];if(a){let f=y(a);f&&e.keys.push(f)}}else if(t.startsWith(\"-k\")){let a=y(t.slice(2));a&&e.keys.push(a)}else if(t.startsWith(\"--key=\")){let a=y(t.slice(6));a&&e.keys.push(a)}else{if(t.startsWith(\"--\"))return k(\"sort\",t);if(t.startsWith(\"-\")&&!t.startsWith(\"--\")){let a=!1;for(let f of t.slice(1))if(f===\"r\")e.reverse=!0;else if(f===\"n\")e.numeric=!0;else if(f===\"u\")e.unique=!0;else if(f===\"f\")e.ignoreCase=!0;else if(f===\"h\")e.humanNumeric=!0;else if(f===\"V\")e.versionSort=!0;else if(f===\"d\")e.dictionaryOrder=!0;else if(f===\"M\")e.monthSort=!0;else if(f===\"b\")e.ignoreLeadingBlanks=!0;else if(f===\"s\")e.stable=!0;else if(f===\"c\")e.checkOnly=!0;else{a=!0;break}if(a)return k(\"sort\",t)}else l.push(t)}}let s=await O(r,l,{cmdName:\"sort\"});if(!s.ok)return s.error;let n=F(s.content).split(`\n`);n.length>0&&n[n.length-1]===\"\"&&n.pop();let d=B(e);if(e.checkOnly){let c=l.length>0?l[0]:\"-\";for(let t=1;t<n.length;t++)if(d(n[t-1],n[t])>0)return{stdout:\"\",stderr:`sort: ${c}:${t+1}: disorder: ${n[t]}\n`,exitCode:1};return{stdout:\"\",stderr:\"\",exitCode:0}}n.sort(d),e.unique&&(n=E(n,e));let o=n.length>0?`${n.join(`\n`)}\n`:\"\";if(e.outputFile){let c=r.fs.resolvePath(r.cwd,e.outputFile);return await r.fs.writeFile(c,o),{stdout:\"\",stderr:\"\",exitCode:0}}return{stdout:o,stderr:\"\",exitCode:0}}},Y={name:\"sort\",flags:[{flag:\"-r\",type:\"boolean\"},{flag:\"-n\",type:\"boolean\"},{flag:\"-u\",type:\"boolean\"},{flag:\"-f\",type:\"boolean\"},{flag:\"-h\",type:\"boolean\"},{flag:\"-V\",type:\"boolean\"},{flag:\"-d\",type:\"boolean\"},{flag:\"-M\",type:\"boolean\"},{flag:\"-b\",type:\"boolean\"},{flag:\"-s\",type:\"boolean\"},{flag:\"-c\",type:\"boolean\"},{flag:\"-k\",type:\"value\",valueHint:\"string\"},{flag:\"-t\",type:\"value\",valueHint:\"delimiter\"},{flag:\"-o\",type:\"value\",valueHint:\"path\"}],stdinType:\"text\",needsFiles:!0};export{R as a,Y as b};\n","import{createRequire} from\"node:module\";const require=createRequire(import.meta.url);\nimport{a,b}from\"./chunk-T4TFLF3R.js\";import\"./chunk-YCLFEX4T.js\";import\"./chunk-NRSASXYY.js\";import\"./chunk-STHBFACM.js\";import\"./chunk-QAYAQNCG.js\";import\"./chunk-BZUGFHVS.js\";export{b as flagsForFuzzing,a as sortCommand};\n"],"x_google_ignoreList":[0,1],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { n as r, r as s, t as o } from "./chunk-QAYAQNCG-Bl0Kbd53.mjs";
|
|
3
2
|
import "./chunk-BZUGFHVS-CPWRFwK8.mjs";
|
|
4
3
|
import { n as p } from "./chunk-NRSASXYY-CuWyREpD.mjs";
|
|
4
|
+
import { n as r, r as s, t as o } from "./chunk-QAYAQNCG-Bl0Kbd53.mjs";
|
|
5
5
|
import { createRequire } from "node:module";
|
|
6
6
|
//#region ../../node_modules/.pnpm/just-bash@3.0.1/node_modules/just-bash/dist/bundle/chunks/chunk-UP6MSJGD.js
|
|
7
7
|
createRequire(import.meta.url);
|
|
@@ -245,4 +245,4 @@ createRequire(import.meta.url);
|
|
|
245
245
|
//#endregion
|
|
246
246
|
export { F as split };
|
|
247
247
|
|
|
248
|
-
//# sourceMappingURL=split-4KKZZXXE-
|
|
248
|
+
//# sourceMappingURL=split-4KKZZXXE-D_eM0wGE.mjs.map
|