@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
|
@@ -4794,7 +4794,7 @@ function number(params) {
|
|
|
4794
4794
|
return /* @__PURE__ */ _coercedNumber(ZodNumber, params);
|
|
4795
4795
|
}
|
|
4796
4796
|
//#endregion
|
|
4797
|
-
//#region ../../packages/shared/dist/billing-
|
|
4797
|
+
//#region ../../packages/shared/dist/billing-Ig0pw49a.mjs
|
|
4798
4798
|
const isoDateTime$7 = string().datetime();
|
|
4799
4799
|
const subscriptionStatusSchema = _enum([
|
|
4800
4800
|
"none",
|
|
@@ -4949,7 +4949,11 @@ const BillingUsageMeterKeySchema = _enum([
|
|
|
4949
4949
|
"tigris_storage"
|
|
4950
4950
|
]);
|
|
4951
4951
|
const BillingUsageKeySourceSchema = _enum(["platform", "byok"]);
|
|
4952
|
-
const BillingUsageRunKindSchema = _enum([
|
|
4952
|
+
const BillingUsageRunKindSchema = _enum([
|
|
4953
|
+
"agent",
|
|
4954
|
+
"workflow",
|
|
4955
|
+
"platform_agent"
|
|
4956
|
+
]);
|
|
4953
4957
|
object({ events: array(object({
|
|
4954
4958
|
projectId: string().min(1).max(255).nullable().optional(),
|
|
4955
4959
|
runId: string().min(1).max(255).nullable().optional(),
|
|
@@ -4972,7 +4976,7 @@ object({
|
|
|
4972
4976
|
chargeMicroCredits: number$1().int().nonnegative()
|
|
4973
4977
|
});
|
|
4974
4978
|
//#endregion
|
|
4975
|
-
//#region ../../packages/shared/dist/credential-runtime-
|
|
4979
|
+
//#region ../../packages/shared/dist/credential-runtime-Cbm2X9rK.mjs
|
|
4976
4980
|
const ACTIVE_ORG_HEADER = "x-keystroke-org-id";
|
|
4977
4981
|
/**
|
|
4978
4982
|
* Client surface that originated the request. The hosted web app and CLI set this
|
|
@@ -5016,8 +5020,7 @@ const ChatAttachmentInputSchema = object({
|
|
|
5016
5020
|
mediaType: string().min(1),
|
|
5017
5021
|
filename: string().optional()
|
|
5018
5022
|
});
|
|
5019
|
-
|
|
5020
|
-
const FilePartSchema = object({
|
|
5023
|
+
object({
|
|
5021
5024
|
type: literal("file"),
|
|
5022
5025
|
mediaType: string().min(1),
|
|
5023
5026
|
url: string().min(1),
|
|
@@ -5037,14 +5040,6 @@ const PresignChatAttachmentResponseSchema = object({
|
|
|
5037
5040
|
const LOCAL_PLATFORM_ORIGIN = "http://localhost:3002";
|
|
5038
5041
|
/** Default production platform origin when no env override is set. */
|
|
5039
5042
|
const DEFAULT_CLOUD_PLATFORM_ORIGIN = "https://api.keystroke.ai";
|
|
5040
|
-
/** Reads `PUBLIC_PLATFORM_URL` when explicitly set. */
|
|
5041
|
-
function resolveExplicitPublicPlatformOrigin(env = process.env) {
|
|
5042
|
-
return env.PUBLIC_PLATFORM_URL?.replace(/\/$/, "") || void 0;
|
|
5043
|
-
}
|
|
5044
|
-
/** `PUBLIC_PLATFORM_URL` origin; falls back to {@link LOCAL_PLATFORM_ORIGIN} when unset. */
|
|
5045
|
-
function resolvePublicPlatformOrigin(env = process.env) {
|
|
5046
|
-
return resolveExplicitPublicPlatformOrigin(env) ?? "http://localhost:3002";
|
|
5047
|
-
}
|
|
5048
5043
|
//#endregion
|
|
5049
5044
|
//#region ../../packages/shared/dist/credential-spec-B-iwg8Oc.mjs
|
|
5050
5045
|
/** OpenAPI 3.0 JSON Schema for manifests and route discovery. */
|
|
@@ -5828,6 +5823,7 @@ const ProjectSchema = object({
|
|
|
5828
5823
|
baseUrl: string().nullable(),
|
|
5829
5824
|
runtimeId: string().nullable(),
|
|
5830
5825
|
lastError: string().nullable(),
|
|
5826
|
+
activeArtifactId: string().nullable(),
|
|
5831
5827
|
createdAt: isoDateTime$6,
|
|
5832
5828
|
updatedAt: isoDateTime$6
|
|
5833
5829
|
});
|
|
@@ -5876,6 +5872,17 @@ function slugifyAppName(name) {
|
|
|
5876
5872
|
}
|
|
5877
5873
|
/** Browser→platform request budget (ping + small platform overhead). */
|
|
5878
5874
|
const PROJECT_REACHABILITY_REQUEST_TIMEOUT_MS = 17e3;
|
|
5875
|
+
/**
|
|
5876
|
+
* SDK HTTP budget for managed deploy transaction requests. Completion may
|
|
5877
|
+
* download and validate a near-limit artifact, so it must not inherit ky's 10s
|
|
5878
|
+
* default. Local analysis/build runs outside the HTTP request.
|
|
5879
|
+
*/
|
|
5880
|
+
const MANAGED_DEPLOY_REQUEST_TIMEOUT_MS = 15 * 6e4;
|
|
5881
|
+
/**
|
|
5882
|
+
* SDK HTTP budget for draft `commit` / `commitFromDiff`. First uploads can be
|
|
5883
|
+
* multi-MB binary patches applied on Code.Storage; ky’s default 10s aborts those.
|
|
5884
|
+
*/
|
|
5885
|
+
const PROJECT_DRAFT_COMMIT_REQUEST_TIMEOUT_MS = 5 * 6e4;
|
|
5879
5886
|
/** Path of the public Mintlify-hosted docs search MCP server, relative to the web origin. */
|
|
5880
5887
|
const DOCS_MCP_PATH = "/docs/mcp";
|
|
5881
5888
|
/**
|
|
@@ -5915,27 +5922,6 @@ function originFromPublicUrl(value, fallback) {
|
|
|
5915
5922
|
if (!trimmed) return fallback.replace(/\/+$/, "");
|
|
5916
5923
|
return trimmed.replace(/\/+$/, "");
|
|
5917
5924
|
}
|
|
5918
|
-
/** TCP port to bind for a local server, derived from a public URL. */
|
|
5919
|
-
function listenPortFromUrl(url, fallback) {
|
|
5920
|
-
const parsed = new URL(url);
|
|
5921
|
-
if (parsed.port) {
|
|
5922
|
-
const port = Number(parsed.port);
|
|
5923
|
-
if (Number.isFinite(port) && port > 0) return port;
|
|
5924
|
-
}
|
|
5925
|
-
if (parsed.protocol === "https:") return 443;
|
|
5926
|
-
if (parsed.protocol === "http:") return 80;
|
|
5927
|
-
return fallback;
|
|
5928
|
-
}
|
|
5929
|
-
/** Shorthand: listen port from `PUBLIC_*_URL` or fallback. */
|
|
5930
|
-
function listenPortFromPublicUrl(value, fallback) {
|
|
5931
|
-
const trimmed = value?.trim();
|
|
5932
|
-
if (!trimmed) return fallback;
|
|
5933
|
-
try {
|
|
5934
|
-
return listenPortFromUrl(trimmed, fallback);
|
|
5935
|
-
} catch {
|
|
5936
|
-
return fallback;
|
|
5937
|
-
}
|
|
5938
|
-
}
|
|
5939
5925
|
/**
|
|
5940
5926
|
* Target for Zod ↔ JSON Schema round-trips of persisted Keystroke schemas
|
|
5941
5927
|
* (workflow inputs, webhook payloads, hook resume schemas, agent output schemas).
|
|
@@ -5957,8 +5943,8 @@ function zodToStoredJsonSchema(schema, options = {}) {
|
|
|
5957
5943
|
} } : {}
|
|
5958
5944
|
});
|
|
5959
5945
|
}
|
|
5960
|
-
/**
|
|
5961
|
-
const
|
|
5946
|
+
/** Thin modular project index (source of truth for emit hashes + shard paths). */
|
|
5947
|
+
const PROJECT_MANIFEST_REL_PATH = "dist/.keystroke/manifest.json";
|
|
5962
5948
|
/**
|
|
5963
5949
|
* Structural workflow-canvas graph contract.
|
|
5964
5950
|
*
|
|
@@ -6288,6 +6274,7 @@ const storedRouteManifestV2Schema = object({
|
|
|
6288
6274
|
skills: array(StoredRouteManifestSkillSchema).default([]),
|
|
6289
6275
|
integrations: array(string()).optional()
|
|
6290
6276
|
});
|
|
6277
|
+
const StoredRouteManifestSchema = storedRouteManifestV2Schema;
|
|
6291
6278
|
/**
|
|
6292
6279
|
* Parse a stored route manifest. Only the strict v2 schema is supported: the
|
|
6293
6280
|
* builder always emits v2 and every deploy regenerates the manifest, so there is
|
|
@@ -6297,6 +6284,117 @@ const storedRouteManifestV2Schema = object({
|
|
|
6297
6284
|
function parseStoredRouteManifest(value) {
|
|
6298
6285
|
return storedRouteManifestV2Schema.parse(value);
|
|
6299
6286
|
}
|
|
6287
|
+
const ProjectManifestModuleRefSchema = object({
|
|
6288
|
+
kind: _enum([
|
|
6289
|
+
"agent",
|
|
6290
|
+
"workflow",
|
|
6291
|
+
"trigger"
|
|
6292
|
+
]),
|
|
6293
|
+
id: string(),
|
|
6294
|
+
/** Path relative to `dist/.keystroke/`. */
|
|
6295
|
+
path: string(),
|
|
6296
|
+
/** Input-closure / source hash that produced the meta shard. */
|
|
6297
|
+
contentHash: string(),
|
|
6298
|
+
/** Workflows only — path of the flow-graph shard relative to `dist/.keystroke/`. */
|
|
6299
|
+
flowPath: string().optional(),
|
|
6300
|
+
/** Workflows only — hash of the workflow source used for the flow producer. */
|
|
6301
|
+
flowHash: string().optional()
|
|
6302
|
+
});
|
|
6303
|
+
const ProjectManifestSchema = object({
|
|
6304
|
+
version: literal(3),
|
|
6305
|
+
modules: array(ProjectManifestModuleRefSchema),
|
|
6306
|
+
skills: array(StoredRouteManifestSkillSchema).default([]),
|
|
6307
|
+
integrations: array(string()).optional(),
|
|
6308
|
+
actionsCatalogPath: string(),
|
|
6309
|
+
actionsCatalogHash: string()
|
|
6310
|
+
});
|
|
6311
|
+
function parseProjectManifest(value) {
|
|
6312
|
+
return ProjectManifestSchema.parse(value);
|
|
6313
|
+
}
|
|
6314
|
+
object({
|
|
6315
|
+
kind: literal("agent"),
|
|
6316
|
+
slug: string(),
|
|
6317
|
+
moduleFile: string(),
|
|
6318
|
+
name: requiredDisplayTextSchema,
|
|
6319
|
+
description: requiredDisplayTextSchema,
|
|
6320
|
+
model: string(),
|
|
6321
|
+
compactionModel: string().optional(),
|
|
6322
|
+
systemPrompt: string(),
|
|
6323
|
+
toolCount: number$1().int().nonnegative(),
|
|
6324
|
+
credentialCount: number$1().int().nonnegative(),
|
|
6325
|
+
appSlugs: array(string()).default([]),
|
|
6326
|
+
toolSlugs: array(string()).default([]),
|
|
6327
|
+
toolRequirements: record(string(), array(CredentialRequirementSummarySchema)).optional(),
|
|
6328
|
+
sandboxRequirements: array(CredentialRequirementSummarySchema).optional()
|
|
6329
|
+
});
|
|
6330
|
+
object({
|
|
6331
|
+
kind: literal("workflow"),
|
|
6332
|
+
slug: string(),
|
|
6333
|
+
name: requiredDisplayTextSchema,
|
|
6334
|
+
description: requiredDisplayTextSchema,
|
|
6335
|
+
subscribable: boolean(),
|
|
6336
|
+
moduleFile: string(),
|
|
6337
|
+
requestSchema: record(string(), unknown()),
|
|
6338
|
+
responseSchema: record(string(), unknown()).optional()
|
|
6339
|
+
});
|
|
6340
|
+
object({
|
|
6341
|
+
flowGraph: WorkflowCanvasGraphSchema,
|
|
6342
|
+
flowGraphSourceHash: string(),
|
|
6343
|
+
flowGraphHash: string()
|
|
6344
|
+
});
|
|
6345
|
+
object({ entries: array(discriminatedUnion("kind", [
|
|
6346
|
+
object({
|
|
6347
|
+
kind: literal("trigger-webhook"),
|
|
6348
|
+
endpoint: string(),
|
|
6349
|
+
attachmentIds: array(string()),
|
|
6350
|
+
moduleFile: string(),
|
|
6351
|
+
sourceHash: string().optional(),
|
|
6352
|
+
attachmentSchemas: attachmentSchemasSchema,
|
|
6353
|
+
attachmentMeta: attachmentMetaSchema.optional()
|
|
6354
|
+
}),
|
|
6355
|
+
object({
|
|
6356
|
+
kind: literal("trigger-poll"),
|
|
6357
|
+
attachmentId: string(),
|
|
6358
|
+
attachmentIds: array(string()),
|
|
6359
|
+
moduleFile: string(),
|
|
6360
|
+
sourceHash: string().optional(),
|
|
6361
|
+
schedule: string(),
|
|
6362
|
+
timezone: string().optional(),
|
|
6363
|
+
name: requiredDisplayTextSchema,
|
|
6364
|
+
description: requiredDisplayTextSchema
|
|
6365
|
+
}),
|
|
6366
|
+
object({
|
|
6367
|
+
kind: literal("trigger-poll-group"),
|
|
6368
|
+
pollId: string(),
|
|
6369
|
+
attachmentIds: array(string()),
|
|
6370
|
+
moduleFile: string(),
|
|
6371
|
+
schedule: string(),
|
|
6372
|
+
timezone: string().optional()
|
|
6373
|
+
}),
|
|
6374
|
+
object({
|
|
6375
|
+
kind: literal("cron-schedule"),
|
|
6376
|
+
attachmentId: string(),
|
|
6377
|
+
attachmentIds: array(string()),
|
|
6378
|
+
moduleFile: string(),
|
|
6379
|
+
sourceHash: string().optional(),
|
|
6380
|
+
schedule: string(),
|
|
6381
|
+
timezone: string().optional(),
|
|
6382
|
+
payload: unknown().optional(),
|
|
6383
|
+
name: requiredDisplayTextSchema,
|
|
6384
|
+
description: requiredDisplayTextSchema
|
|
6385
|
+
})
|
|
6386
|
+
])).min(1) });
|
|
6387
|
+
object({ entries: array(object({
|
|
6388
|
+
kind: literal("action"),
|
|
6389
|
+
slug: string(),
|
|
6390
|
+
name: requiredDisplayTextSchema,
|
|
6391
|
+
description: requiredDisplayTextSchema,
|
|
6392
|
+
moduleFile: string(),
|
|
6393
|
+
appSlug: string().optional(),
|
|
6394
|
+
inputSchema: record(string(), unknown()),
|
|
6395
|
+
outputSchema: record(string(), unknown()),
|
|
6396
|
+
requirements: array(CredentialRequirementSummarySchema).optional()
|
|
6397
|
+
})) });
|
|
6300
6398
|
/** Messaging platforms that support agent gateway bindings. */
|
|
6301
6399
|
const ChannelPlatformKeySchema = _enum(["slack"]);
|
|
6302
6400
|
const ChannelReactionSupportSchema = _enum([
|
|
@@ -6387,6 +6485,8 @@ const ChannelPlatformSchema = object({
|
|
|
6387
6485
|
connectAppId: string().min(1).optional(),
|
|
6388
6486
|
docsUrl: string().url().optional()
|
|
6389
6487
|
});
|
|
6488
|
+
/** Whether a binding targets a single Slack channel or an entire custom Slack app. */
|
|
6489
|
+
const ChannelBindingTargetKindSchema = _enum(["channel", "app"]);
|
|
6390
6490
|
const ChannelBindingSchema = object({
|
|
6391
6491
|
id: string().min(1),
|
|
6392
6492
|
channelId: string().min(1),
|
|
@@ -6394,6 +6494,10 @@ const ChannelBindingSchema = object({
|
|
|
6394
6494
|
channelKind: ChannelBindingKindSchema,
|
|
6395
6495
|
mode: ChannelListenModeSchema,
|
|
6396
6496
|
subscribeOnMention: boolean(),
|
|
6497
|
+
/** Defaults to `"channel"` for existing per-channel bindings. */
|
|
6498
|
+
bindingKind: ChannelBindingTargetKindSchema.optional(),
|
|
6499
|
+
/** Present for app-level bindings — Slack bot handle without `@`. */
|
|
6500
|
+
slackAppHandle: string().min(1).optional(),
|
|
6397
6501
|
createdAt: string(),
|
|
6398
6502
|
updatedAt: string()
|
|
6399
6503
|
});
|
|
@@ -6411,7 +6515,26 @@ const ChannelDirectoryEntrySchema = object({
|
|
|
6411
6515
|
name: string().min(1),
|
|
6412
6516
|
kind: ChannelBindingKindSchema,
|
|
6413
6517
|
memberCount: number$1().int().nonnegative().optional(),
|
|
6414
|
-
isArchived: boolean().optional()
|
|
6518
|
+
isArchived: boolean().optional(),
|
|
6519
|
+
/** Whether the workspace bot is a member (when the directory source provides it). */
|
|
6520
|
+
isMember: boolean().optional()
|
|
6521
|
+
});
|
|
6522
|
+
/** Custom Slack app membership listing for an agent. */
|
|
6523
|
+
const SlackAgentMembershipsResponseSchema = object({
|
|
6524
|
+
handle: string().min(1),
|
|
6525
|
+
slackAppSlug: string().min(1),
|
|
6526
|
+
accountId: string().min(1),
|
|
6527
|
+
/** False when join/leave isn't available (missing scopes, Composio proxy, etc.). */
|
|
6528
|
+
canManage: boolean(),
|
|
6529
|
+
channels: array(ChannelDirectoryEntrySchema.extend({ isMember: boolean() }))
|
|
6530
|
+
});
|
|
6531
|
+
const SlackMembershipChannelBodySchema = object({ channelId: string().min(1) });
|
|
6532
|
+
/** Create-channel response: directory entry plus optional Slack deep link. */
|
|
6533
|
+
const CreateSlackChannelResponseSchema = ChannelDirectoryEntrySchema.extend({
|
|
6534
|
+
/** `https://slack.com/app_redirect?channel=…&team=…` — open after create. */
|
|
6535
|
+
openUrl: string().url(),
|
|
6536
|
+
/** True when the acting user was invited into the new channel. */
|
|
6537
|
+
invitedUser: boolean().optional()
|
|
6415
6538
|
});
|
|
6416
6539
|
const ChannelConnectionListResponseSchema = array(ChannelConnectionSchema);
|
|
6417
6540
|
const ChannelDirectoryListResponseSchema = array(ChannelDirectoryEntrySchema);
|
|
@@ -6435,6 +6558,14 @@ const BindChannelBodySchema = object({
|
|
|
6435
6558
|
accountId: string().min(1),
|
|
6436
6559
|
binding: NewChannelBindingInputSchema
|
|
6437
6560
|
});
|
|
6561
|
+
/** Create a Slack channel via the workspace bot token, then optionally bind. */
|
|
6562
|
+
const CreateSlackChannelBodySchema = object({
|
|
6563
|
+
accountId: string().min(1),
|
|
6564
|
+
name: string().trim().min(1).max(80).regex(/^#?[a-z0-9][a-z0-9_-]*$/, "Channel name must be lowercase alphanumeric with _ or -"),
|
|
6565
|
+
isPrivate: boolean().optional().default(false)
|
|
6566
|
+
});
|
|
6567
|
+
/** Bind an agent to a custom Slack app (app-level — mentions/DMs anywhere the app is). */
|
|
6568
|
+
const BindAgentSlackAppBodySchema = object({ slackAppSlug: string().min(1) });
|
|
6438
6569
|
const UpdateChannelBindingBodySchema = object({ patch: object({
|
|
6439
6570
|
mode: ChannelListenModeSchema.optional(),
|
|
6440
6571
|
subscribeOnMention: boolean().optional()
|
|
@@ -6682,6 +6813,17 @@ const StartMcpOAuthConnectionInputSchema = object({
|
|
|
6682
6813
|
scopes: array(string()).optional()
|
|
6683
6814
|
});
|
|
6684
6815
|
const StartMcpOAuthConnectionResultSchema = object({ authorizeUrl: string().url() });
|
|
6816
|
+
/** One tool from a live MCP `tools/list` for a connected custom org app. */
|
|
6817
|
+
const McpAppToolSchema = object({
|
|
6818
|
+
name: string().min(1),
|
|
6819
|
+
description: string().optional(),
|
|
6820
|
+
inputSchema: record(string(), unknown()).optional()
|
|
6821
|
+
});
|
|
6822
|
+
const ListMcpAppToolsResponseSchema = object({
|
|
6823
|
+
slug: string().min(1),
|
|
6824
|
+
url: string().url(),
|
|
6825
|
+
tools: array(McpAppToolSchema)
|
|
6826
|
+
});
|
|
6685
6827
|
function displayNameFromUrl$1(url) {
|
|
6686
6828
|
let hostname;
|
|
6687
6829
|
try {
|
|
@@ -6791,14 +6933,28 @@ function parseAppSlug(slug) {
|
|
|
6791
6933
|
function buildConnectDeeplink(options) {
|
|
6792
6934
|
const base = options.webUrl.replace(/\/+$/, "");
|
|
6793
6935
|
const params = new URLSearchParams({ connect: options.appSlug });
|
|
6936
|
+
if (options.flow) params.set("flow", options.flow);
|
|
6794
6937
|
return `${base}/${options.orgSlug}/apps?${params.toString()}`;
|
|
6795
6938
|
}
|
|
6796
6939
|
/**
|
|
6940
|
+
* Web URL that opens an agent's External Channels Slack dialog.
|
|
6941
|
+
* `rail=configure` shows the channels panel; `slack=` selects Keystroke vs custom wizard.
|
|
6942
|
+
*/
|
|
6943
|
+
function buildAgentSlackDeeplink(options) {
|
|
6944
|
+
const base = options.webUrl.replace(/\/+$/, "");
|
|
6945
|
+
const params = new URLSearchParams({
|
|
6946
|
+
rail: "configure",
|
|
6947
|
+
slack: options.kind
|
|
6948
|
+
});
|
|
6949
|
+
return `${base}/${options.orgSlug}/agents/${encodeURIComponent(options.agentId)}?${params.toString()}`;
|
|
6950
|
+
}
|
|
6951
|
+
/**
|
|
6797
6952
|
* Resolve a connect-catalog slug.
|
|
6798
6953
|
*
|
|
6799
|
-
*
|
|
6800
|
-
* `slackbot`
|
|
6801
|
-
*
|
|
6954
|
+
* Slack slugs resolve as-is: `slack` (Personal Slack Account) opens the web
|
|
6955
|
+
* chooser, and `slackbot` is the catalog slug for the Keystroke Slack App.
|
|
6956
|
+
* Callers pick a specific Slack dialog with a connect-deeplink `flow` instead
|
|
6957
|
+
* of slug rewriting.
|
|
6802
6958
|
*/
|
|
6803
6959
|
function resolveConnectAppSlug(slug, apps) {
|
|
6804
6960
|
const trimmed = slug.trim();
|
|
@@ -6808,10 +6964,6 @@ function resolveConnectAppSlug(slug, apps) {
|
|
|
6808
6964
|
} catch {
|
|
6809
6965
|
throw new Error(`Invalid app slug: ${slug}`);
|
|
6810
6966
|
}
|
|
6811
|
-
if (trimmed === "slack") {
|
|
6812
|
-
const slackbot = apps.find((app) => app.id === "slackbot");
|
|
6813
|
-
if (slackbot) return slackbot;
|
|
6814
|
-
}
|
|
6815
6967
|
const match = apps.find((app) => app.id === trimmed);
|
|
6816
6968
|
if (!match) {
|
|
6817
6969
|
const available = apps.map((app) => app.id).join(", ") || "(none)";
|
|
@@ -6819,6 +6971,49 @@ function resolveConnectAppSlug(slug, apps) {
|
|
|
6819
6971
|
}
|
|
6820
6972
|
return match;
|
|
6821
6973
|
}
|
|
6974
|
+
/** Catalog / connect slug for the Keystroke Slack App (bot). */
|
|
6975
|
+
const SLACK_KEYSTROKE_APP_SLUG = "slackbot";
|
|
6976
|
+
/** Catalog / connect slug for a personal Slack user-token connection. */
|
|
6977
|
+
const SLACK_PERSONAL_APP_SLUG = "slack";
|
|
6978
|
+
/**
|
|
6979
|
+
* `?flow=` values for the Apps-page Slack connect deeplink
|
|
6980
|
+
* (`?connect=slack&flow=…`). Omitted flow opens the three-way chooser.
|
|
6981
|
+
* `keystroke` opens the Keystroke Slack App dialog (catalog slug `slackbot`),
|
|
6982
|
+
* `personal` the Personal Slack Account dialog (catalog slug `slack`),
|
|
6983
|
+
* `custom` the custom Slack app wizard.
|
|
6984
|
+
*/
|
|
6985
|
+
const SLACK_CONNECT_FLOWS = [
|
|
6986
|
+
"keystroke",
|
|
6987
|
+
"personal",
|
|
6988
|
+
"custom"
|
|
6989
|
+
];
|
|
6990
|
+
/** Parse a `?flow=` search value; null when missing or not a Slack connect flow. */
|
|
6991
|
+
function parseSlackConnectFlow(value) {
|
|
6992
|
+
return typeof value === "string" && SLACK_CONNECT_FLOWS.includes(value) ? value : null;
|
|
6993
|
+
}
|
|
6994
|
+
/**
|
|
6995
|
+
* Normalize a Slack bot handle to Slack's username charset/length.
|
|
6996
|
+
* Strips leading `@`, lowercases, turns whitespace into hyphens, drops other
|
|
6997
|
+
* disallowed characters, collapses repeated separators, truncates to 21.
|
|
6998
|
+
*
|
|
6999
|
+
* Handles remain lowercase (Slack username rules). App / bot *display* names
|
|
7000
|
+
* may use mixed case and spaces — see {@link slackAppNameFromHandle}.
|
|
7001
|
+
*/
|
|
7002
|
+
function normalizeSlackAppHandle(handle) {
|
|
7003
|
+
return handle.trim().replace(/^@+/, "").toLowerCase().replace(/\s+/g, "-").replace(/[^a-z0-9._-]/g, "").replace(/-+/g, "-").replace(/^[-._]+|[-._]+$/g, "").slice(0, 21);
|
|
7004
|
+
}
|
|
7005
|
+
/** True when a normalized handle is usable as a Slack bot username. */
|
|
7006
|
+
function isValidSlackAppHandle(handle) {
|
|
7007
|
+
const normalized = normalizeSlackAppHandle(handle);
|
|
7008
|
+
return normalized.length > 0 && normalized.length <= 21 && normalized !== "slackbot" && /^[a-z0-9._-]+$/.test(normalized);
|
|
7009
|
+
}
|
|
7010
|
+
/** Human-readable reason a handle is invalid, or null when valid. */
|
|
7011
|
+
function slackAppHandleError(handle) {
|
|
7012
|
+
const normalized = normalizeSlackAppHandle(handle);
|
|
7013
|
+
if (!normalized) return "Handle is required";
|
|
7014
|
+
if (normalized === "slackbot") return "Handle cannot be slackbot";
|
|
7015
|
+
return null;
|
|
7016
|
+
}
|
|
6822
7017
|
const LOCKFILE_MANAGERS = [
|
|
6823
7018
|
["pnpm-lock.yaml", "pnpm"],
|
|
6824
7019
|
["yarn.lock", "yarn"],
|
|
@@ -6855,6 +7050,20 @@ function detectProjectPackageManagerFromSnapshot(files) {
|
|
|
6855
7050
|
return detectFromLockfileNames(paths) ?? "npm";
|
|
6856
7051
|
}
|
|
6857
7052
|
/**
|
|
7053
|
+
* Frozen pnpm install for trusted lockfiles (managed draft / deploy worktrees).
|
|
7054
|
+
*
|
|
7055
|
+
* pnpm 11 defaults `minimumReleaseAge` to 1440 minutes and re-verifies every
|
|
7056
|
+
* lockfile entry. Fresh `@keystrokehq/*` publishes are expected in Keystroke
|
|
7057
|
+
* projects, so exclude that scope. `trustLockfile` skips re-applying the age
|
|
7058
|
+
* gate to the committed lockfile (authored under the user's local pnpm).
|
|
7059
|
+
*/
|
|
7060
|
+
const PNPM_FROZEN_INSTALL_ARGS = [
|
|
7061
|
+
"install",
|
|
7062
|
+
"--frozen-lockfile",
|
|
7063
|
+
"--config.trustLockfile=true",
|
|
7064
|
+
"--config.minimum-release-age-exclude[]=@keystrokehq/*"
|
|
7065
|
+
];
|
|
7066
|
+
/**
|
|
6858
7067
|
* Whether a package-manager install exit should be treated as success.
|
|
6859
7068
|
*
|
|
6860
7069
|
* pnpm 10+ exits non-zero with `ERR_PNPM_IGNORED_BUILDS` when a dependency's
|
|
@@ -6867,6 +7076,53 @@ function isAcceptableInstallExit(manager, exitCode, output) {
|
|
|
6867
7076
|
if (manager === "pnpm" && output.includes("ERR_PNPM_IGNORED_BUILDS")) return true;
|
|
6868
7077
|
return false;
|
|
6869
7078
|
}
|
|
7079
|
+
/** Request body for generating a Slack app manifest (stateless). */
|
|
7080
|
+
const SlackAppManifestRequestSchema = object({
|
|
7081
|
+
name: string().trim().min(1).max(80),
|
|
7082
|
+
handle: string().trim().min(1).max(80).transform(normalizeSlackAppHandle).superRefine((handle, ctx) => {
|
|
7083
|
+
if (isValidSlackAppHandle(handle)) return;
|
|
7084
|
+
ctx.addIssue({
|
|
7085
|
+
code: "custom",
|
|
7086
|
+
message: slackAppHandleError(handle) ?? "Handle must be a valid Slack bot username"
|
|
7087
|
+
});
|
|
7088
|
+
})
|
|
7089
|
+
});
|
|
7090
|
+
/** Request body for creating a custom Slack app (credentials + identity). */
|
|
7091
|
+
const CreateSlackAppRequestSchema = SlackAppManifestRequestSchema.extend({
|
|
7092
|
+
clientId: string().trim().min(1),
|
|
7093
|
+
clientSecret: string().trim().min(1),
|
|
7094
|
+
signingSecret: string().trim().min(1),
|
|
7095
|
+
/** Scope the resulting credential to this project (agent flow); org-scoped when omitted. */
|
|
7096
|
+
projectId: string().trim().min(1).optional()
|
|
7097
|
+
});
|
|
7098
|
+
const SlackAppInstalledTeamSchema = object({
|
|
7099
|
+
teamId: string().min(1),
|
|
7100
|
+
teamName: string().min(1).optional(),
|
|
7101
|
+
connectionId: string().min(1)
|
|
7102
|
+
});
|
|
7103
|
+
const SlackAppBoundAgentSchema = object({
|
|
7104
|
+
agentId: string().min(1),
|
|
7105
|
+
agentSlug: string().min(1).optional(),
|
|
7106
|
+
agentName: string().min(1).optional(),
|
|
7107
|
+
projectId: string().min(1).optional()
|
|
7108
|
+
});
|
|
7109
|
+
/** Summary of a custom Slack app for list/detail responses. */
|
|
7110
|
+
const SlackAppSummarySchema = object({
|
|
7111
|
+
id: string().min(1),
|
|
7112
|
+
slug: string().min(1),
|
|
7113
|
+
name: string().min(1),
|
|
7114
|
+
handle: string().min(1),
|
|
7115
|
+
slackAppId: string().min(1).optional(),
|
|
7116
|
+
installedTeams: array(SlackAppInstalledTeamSchema),
|
|
7117
|
+
boundAgent: SlackAppBoundAgentSchema.optional()
|
|
7118
|
+
});
|
|
7119
|
+
const SlackAppListResponseSchema = array(SlackAppSummarySchema);
|
|
7120
|
+
const SlackAppManifestResponseSchema = object({ manifest: record(string(), unknown()) });
|
|
7121
|
+
const CreateSlackAppResponseSchema = object({
|
|
7122
|
+
app: SlackAppSummarySchema,
|
|
7123
|
+
authorizeUrl: string().url()
|
|
7124
|
+
});
|
|
7125
|
+
const SlackAppInstallStartResponseSchema = object({ authorizeUrl: string().url() });
|
|
6870
7126
|
/** Scope of a platform app credential (maps to `credential_instances.scope_type`). */
|
|
6871
7127
|
const AppCredentialScopeSchema = _enum([
|
|
6872
7128
|
"user",
|
|
@@ -6964,7 +7220,9 @@ const CreateCredentialsRequestSchema = CredentialTargetsFieldsSchema.extend({
|
|
|
6964
7220
|
appId: string().min(1),
|
|
6965
7221
|
connectionKind: AppCredentialConnectionKindSchema,
|
|
6966
7222
|
value: credentialSecretValueSchema.optional(),
|
|
6967
|
-
scopes: array(string().min(1)).optional()
|
|
7223
|
+
scopes: array(string().min(1)).optional(),
|
|
7224
|
+
/** Friendly per-scope slug; when omitted, derived from label/name. */
|
|
7225
|
+
slug: string().trim().min(1).optional()
|
|
6968
7226
|
}).superRefine((input, ctx) => {
|
|
6969
7227
|
if (!hasCredentialTarget(input)) addMissingCredentialTargetIssue(ctx);
|
|
6970
7228
|
if (input.connectionKind === "manual" && !input.value) ctx.addIssue({
|
|
@@ -7030,11 +7288,14 @@ const SubmitTeamRequestRequestSchema = object({
|
|
|
7030
7288
|
"enterprise-upgrade",
|
|
7031
7289
|
"verification",
|
|
7032
7290
|
"slack-connect",
|
|
7033
|
-
"connector-access"
|
|
7291
|
+
"connector-access",
|
|
7292
|
+
"platform-agent-feedback"
|
|
7034
7293
|
]),
|
|
7035
7294
|
message: string().trim().max(5e3).optional(),
|
|
7036
7295
|
/** Required for connector-access requests (sandbox VM secret exposure). */
|
|
7037
|
-
appSlug: string().trim().min(1).optional()
|
|
7296
|
+
appSlug: string().trim().min(1).optional(),
|
|
7297
|
+
/** Optional platform-agent chat/session id for feedback requests. */
|
|
7298
|
+
sessionId: string().trim().min(1).optional()
|
|
7038
7299
|
}).superRefine((value, ctx) => {
|
|
7039
7300
|
if (value.type === "connector-access" && !value.appSlug) ctx.addIssue({
|
|
7040
7301
|
code: ZodIssueCode.custom,
|
|
@@ -7346,7 +7607,9 @@ const HistoryRunSchema = object({
|
|
|
7346
7607
|
otherServicesUsed: array(string()),
|
|
7347
7608
|
totalCostUsd: number$1().nullable(),
|
|
7348
7609
|
messageCount: number$1().optional(),
|
|
7349
|
-
stepCount: number$1().optional()
|
|
7610
|
+
stepCount: number$1().optional(),
|
|
7611
|
+
/** Present for workflow child runs when known. */
|
|
7612
|
+
parentWorkflowRunId: string().nullable().optional()
|
|
7350
7613
|
});
|
|
7351
7614
|
const HistoryTraceSpanSchema = object({
|
|
7352
7615
|
id: string(),
|
|
@@ -7399,6 +7662,7 @@ const HistoryTraceSchema = object({
|
|
|
7399
7662
|
const HistoryWorkflowStepSchema = object({
|
|
7400
7663
|
id: string(),
|
|
7401
7664
|
actionKey: string(),
|
|
7665
|
+
input: unknown().nullable(),
|
|
7402
7666
|
output: unknown(),
|
|
7403
7667
|
completedAt: string()
|
|
7404
7668
|
});
|
|
@@ -7412,6 +7676,7 @@ const HistoryWorkflowRunDetailSchema = object({
|
|
|
7412
7676
|
triggeredAt: string(),
|
|
7413
7677
|
startedAt: string().nullable(),
|
|
7414
7678
|
finishedAt: string().nullable(),
|
|
7679
|
+
parentWorkflowRunId: string().nullable(),
|
|
7415
7680
|
input: unknown().nullable(),
|
|
7416
7681
|
output: unknown().nullable(),
|
|
7417
7682
|
error: unknown().nullable()
|
|
@@ -7541,7 +7806,8 @@ const WorkflowRunSummarySchema = object({
|
|
|
7541
7806
|
sourceKind: RunSourceKindSchema,
|
|
7542
7807
|
sourceId: string().nullable(),
|
|
7543
7808
|
triggerRunId: string().nullable(),
|
|
7544
|
-
attachmentId: string().nullable()
|
|
7809
|
+
attachmentId: string().nullable(),
|
|
7810
|
+
parentWorkflowRunId: string().nullable()
|
|
7545
7811
|
});
|
|
7546
7812
|
const WorkflowRunRecordSchema = object({
|
|
7547
7813
|
id: string(),
|
|
@@ -7574,7 +7840,8 @@ const WorkflowRunListResponseSchema = object({
|
|
|
7574
7840
|
_enum([
|
|
7575
7841
|
"trigger",
|
|
7576
7842
|
"steps",
|
|
7577
|
-
"trace"
|
|
7843
|
+
"trace",
|
|
7844
|
+
"children"
|
|
7578
7845
|
]);
|
|
7579
7846
|
object({ include: string().optional() });
|
|
7580
7847
|
const TriggerRunDetailSchema = object({
|
|
@@ -7593,9 +7860,16 @@ const TriggerRunDetailSchema = object({
|
|
|
7593
7860
|
const WorkflowStepRunSchema = object({
|
|
7594
7861
|
id: string(),
|
|
7595
7862
|
actionKey: string(),
|
|
7863
|
+
/** Step input when recorded; `null` for legacy events that only stored output. */
|
|
7864
|
+
input: unknown().nullable(),
|
|
7596
7865
|
output: unknown(),
|
|
7597
7866
|
completedAt: string()
|
|
7598
7867
|
});
|
|
7868
|
+
object({
|
|
7869
|
+
type: literal("keystroke.step-completed.v1"),
|
|
7870
|
+
input: unknown(),
|
|
7871
|
+
output: unknown()
|
|
7872
|
+
});
|
|
7599
7873
|
const TraceTriggerSummarySchema = object({
|
|
7600
7874
|
triggerType: string(),
|
|
7601
7875
|
triggerRunId: string(),
|
|
@@ -7644,20 +7918,43 @@ const TraceResponseSchema = object({
|
|
|
7644
7918
|
spans: array(TraceSpanSchema),
|
|
7645
7919
|
logs: array(TraceLogSchema)
|
|
7646
7920
|
});
|
|
7647
|
-
const WorkflowRunDetailResponseSchema = object({
|
|
7648
|
-
run: WorkflowRunRecordSchema,
|
|
7649
|
-
trigger: TriggerRunDetailSchema.nullable(),
|
|
7650
|
-
steps: array(WorkflowStepRunSchema),
|
|
7651
|
-
trace: TraceResponseSchema.nullable()
|
|
7652
|
-
});
|
|
7653
7921
|
const WorkflowHookStatusSchema = _enum(["waiting", "resumed"]);
|
|
7654
|
-
const
|
|
7922
|
+
const WorkflowHookSummarySchema = object({
|
|
7655
7923
|
token: string(),
|
|
7656
7924
|
correlationId: string(),
|
|
7657
7925
|
status: WorkflowHookStatusSchema,
|
|
7658
7926
|
createdAt: string(),
|
|
7659
7927
|
resumeUrl: string().nullable()
|
|
7660
|
-
})
|
|
7928
|
+
});
|
|
7929
|
+
const WorkflowRunHooksResponseSchema = object({ items: array(WorkflowHookSummarySchema) });
|
|
7930
|
+
/** Light parent→child link (always present; used when `children` is not in include). */
|
|
7931
|
+
const WorkflowChildRunLinkSchema = object({
|
|
7932
|
+
kind: _enum(["workflow", "agent"]),
|
|
7933
|
+
runId: string(),
|
|
7934
|
+
workflowSlug: string().optional(),
|
|
7935
|
+
agentSlug: string().optional(),
|
|
7936
|
+
correlationId: string(),
|
|
7937
|
+
status: string()
|
|
7938
|
+
});
|
|
7939
|
+
const WorkflowRunChildDetailSchema = lazy(() => object({
|
|
7940
|
+
kind: literal("workflow"),
|
|
7941
|
+
correlationId: string(),
|
|
7942
|
+
run: WorkflowRunRecordSchema,
|
|
7943
|
+
trigger: TriggerRunDetailSchema.nullable(),
|
|
7944
|
+
steps: array(WorkflowStepRunSchema),
|
|
7945
|
+
trace: TraceResponseSchema.nullable(),
|
|
7946
|
+
children: array(WorkflowRunChildSchema),
|
|
7947
|
+
hooks: array(WorkflowHookSummarySchema)
|
|
7948
|
+
}));
|
|
7949
|
+
const WorkflowRunChildSchema = lazy(() => union([WorkflowChildRunLinkSchema, WorkflowRunChildDetailSchema]));
|
|
7950
|
+
const WorkflowRunDetailResponseSchema = object({
|
|
7951
|
+
run: WorkflowRunRecordSchema,
|
|
7952
|
+
trigger: TriggerRunDetailSchema.nullable(),
|
|
7953
|
+
steps: array(WorkflowStepRunSchema),
|
|
7954
|
+
trace: TraceResponseSchema.nullable(),
|
|
7955
|
+
children: array(WorkflowRunChildSchema),
|
|
7956
|
+
hooks: array(WorkflowHookSummarySchema)
|
|
7957
|
+
});
|
|
7661
7958
|
const AgentSessionStatusSchema = _enum([
|
|
7662
7959
|
"running",
|
|
7663
7960
|
"completed",
|
|
@@ -7735,6 +8032,68 @@ const AgentSessionDetailResponseSchema = object({
|
|
|
7735
8032
|
promptFinishEvents: array(HistoryAgentPromptFinishEventSchema).default([]),
|
|
7736
8033
|
trace: TraceResponseSchema.nullable()
|
|
7737
8034
|
});
|
|
8035
|
+
const PlatformAgentSessionStatusSchema = _enum([
|
|
8036
|
+
"running",
|
|
8037
|
+
"completed",
|
|
8038
|
+
"failed",
|
|
8039
|
+
"canceled"
|
|
8040
|
+
]);
|
|
8041
|
+
/** Gateway model id (`vendor/model-id`). Catalog membership is checked at the route. */
|
|
8042
|
+
const PlatformAgentModelIdSchema = string().min(1).regex(/^[^/\s]+\/[^/\s].*$/, "model must be vendor/model-id");
|
|
8043
|
+
const PlatformAgentMessagePartSchema = union([object({
|
|
8044
|
+
type: literal("text"),
|
|
8045
|
+
text: string()
|
|
8046
|
+
}).passthrough(), object({ type: string().min(1) }).passthrough()]);
|
|
8047
|
+
const PlatformAgentTranscriptSchema = array(object({
|
|
8048
|
+
id: string().min(1),
|
|
8049
|
+
role: _enum([
|
|
8050
|
+
"system",
|
|
8051
|
+
"user",
|
|
8052
|
+
"assistant"
|
|
8053
|
+
]),
|
|
8054
|
+
parts: array(PlatformAgentMessagePartSchema),
|
|
8055
|
+
/** Event-row timestamp when the message was appended (ISO). */
|
|
8056
|
+
createdAt: string().datetime().optional(),
|
|
8057
|
+
/**
|
|
8058
|
+
* Wall-clock work duration for an assistant turn, derived from matching
|
|
8059
|
+
* `agent_start` → `agent_end` events (milliseconds).
|
|
8060
|
+
*/
|
|
8061
|
+
workedMs: number$1().int().nonnegative().optional()
|
|
8062
|
+
}).passthrough());
|
|
8063
|
+
const PlatformAgentPromptInputSchema = object({
|
|
8064
|
+
message: string().default(""),
|
|
8065
|
+
projectId: string().min(1),
|
|
8066
|
+
model: PlatformAgentModelIdSchema,
|
|
8067
|
+
sessionId: string().min(1).optional(),
|
|
8068
|
+
files: array(ChatAttachmentInputSchema).max(5).optional()
|
|
8069
|
+
}).strict().refine((data) => data.message.trim().length > 0 || (data.files?.length ?? 0) > 0, { message: "message or files is required" });
|
|
8070
|
+
/** Same enqueue response as project agents — keep one wire shape. */
|
|
8071
|
+
const PlatformAgentPromptResponseSchema = QueuedAgentPromptResponseSchema;
|
|
8072
|
+
const PlatformAgentCancelResponseSchema = object({ ok: literal(true) });
|
|
8073
|
+
object({
|
|
8074
|
+
startIndex: number().int().min(0).optional().default(0),
|
|
8075
|
+
/** Required on run streams so the handler can resolve the owned session / project. */
|
|
8076
|
+
sessionId: string().min(1).optional()
|
|
8077
|
+
});
|
|
8078
|
+
const PlatformAgentSessionSummarySchema = object({
|
|
8079
|
+
id: string(),
|
|
8080
|
+
projectId: string(),
|
|
8081
|
+
status: PlatformAgentSessionStatusSchema,
|
|
8082
|
+
title: string().nullable(),
|
|
8083
|
+
model: string().nullable(),
|
|
8084
|
+
activeRunId: string().nullable(),
|
|
8085
|
+
lastDraftCommitSha: string().nullable(),
|
|
8086
|
+
messageCount: number$1().int().nonnegative(),
|
|
8087
|
+
createdAt: string().datetime(),
|
|
8088
|
+
updatedAt: string().datetime()
|
|
8089
|
+
});
|
|
8090
|
+
const PlatformAgentSessionListResponseSchema = object({ items: array(PlatformAgentSessionSummarySchema) });
|
|
8091
|
+
const PlatformAgentSessionDetailResponseSchema = object({
|
|
8092
|
+
session: PlatformAgentSessionSummarySchema.extend({ error: string().nullable() }),
|
|
8093
|
+
activeRunId: string().nullable().default(null),
|
|
8094
|
+
messages: PlatformAgentTranscriptSchema,
|
|
8095
|
+
compactionEvents: array(HistoryAgentCompactionEventSchema).default([])
|
|
8096
|
+
});
|
|
7738
8097
|
const SlackGatewayModeSchema = _enum([
|
|
7739
8098
|
"mention",
|
|
7740
8099
|
"channel",
|
|
@@ -8057,7 +8416,22 @@ object({
|
|
|
8057
8416
|
workflow: string().min(1).optional(),
|
|
8058
8417
|
agent: string().min(1).optional()
|
|
8059
8418
|
});
|
|
8060
|
-
|
|
8419
|
+
/** One attachment that will fire from this invoke (workflow runs are created later). */
|
|
8420
|
+
const TriggerInvokeTargetSchema = object({
|
|
8421
|
+
kind: TriggerTargetKindSchema,
|
|
8422
|
+
slug: string().min(1),
|
|
8423
|
+
attachmentSlug: string().min(1)
|
|
8424
|
+
});
|
|
8425
|
+
/**
|
|
8426
|
+
* `POST /api/triggers/:triggerId/invoke` — 202 Accepted.
|
|
8427
|
+
* `runId` is the trigger-run / trigger-job id (not a workflow run id). Use
|
|
8428
|
+
* `triggers runs get` after dispatch to resolve `workflowRuns` / `agentSessions`.
|
|
8429
|
+
*/
|
|
8430
|
+
const TriggerInvokeResponseSchema = object({
|
|
8431
|
+
runId: string().min(1),
|
|
8432
|
+
triggerSlug: string().min(1),
|
|
8433
|
+
targets: array(TriggerInvokeTargetSchema)
|
|
8434
|
+
});
|
|
8061
8435
|
/**
|
|
8062
8436
|
* `GET /api/triggers/:triggerId/invoke-inputs` — form metadata for the dashboard.
|
|
8063
8437
|
* Webhook attachments carry `requestSchema`; cron carries read-only `staticPayload`.
|
|
@@ -8328,20 +8702,69 @@ const PresignOrgLogoResponseSchema = object({
|
|
|
8328
8702
|
storageKey: string().min(1)
|
|
8329
8703
|
});
|
|
8330
8704
|
const ProjectArtifactStatusSchema = _enum(["pending", "ready"]);
|
|
8705
|
+
const commitSha$3 = string().regex(/^[0-9a-f]{40}$/i);
|
|
8331
8706
|
const isoDateTime$1 = string().datetime();
|
|
8707
|
+
/**
|
|
8708
|
+
* Client-supplied provenance. `sourceRepositoryId` is optional on the wire —
|
|
8709
|
+
* the platform binds it from the ready project repository when omitted.
|
|
8710
|
+
*
|
|
8711
|
+
* Healthy filtered deploy (Slice 3) owns when these fields are required; Slice 1
|
|
8712
|
+
* keeps them optional so snapshot deploys continue to work.
|
|
8713
|
+
*/
|
|
8714
|
+
const clientGitProvenanceFields = {
|
|
8715
|
+
sourceCommitSha: commitSha$3,
|
|
8716
|
+
baseMainSha: commitSha$3,
|
|
8717
|
+
baseDraftSha: commitSha$3
|
|
8718
|
+
};
|
|
8719
|
+
function requireClientGitProvenanceFields(data, ctx) {
|
|
8720
|
+
const requiredKeys = [
|
|
8721
|
+
"sourceCommitSha",
|
|
8722
|
+
"baseMainSha",
|
|
8723
|
+
"baseDraftSha"
|
|
8724
|
+
];
|
|
8725
|
+
const present = requiredKeys.filter((key) => data[key] !== void 0);
|
|
8726
|
+
if (present.length === 0 || present.length === requiredKeys.length) return;
|
|
8727
|
+
for (const key of requiredKeys) if (data[key] === void 0) ctx.addIssue({
|
|
8728
|
+
code: ZodIssueCode.custom,
|
|
8729
|
+
message: `${key} is required when git provenance is provided`,
|
|
8730
|
+
path: [key]
|
|
8731
|
+
});
|
|
8732
|
+
}
|
|
8733
|
+
const CreateProjectArtifactRequestSchema = object({
|
|
8734
|
+
sourceRepositoryId: string().min(1).optional(),
|
|
8735
|
+
sourceCommitSha: clientGitProvenanceFields.sourceCommitSha.optional(),
|
|
8736
|
+
baseMainSha: clientGitProvenanceFields.baseMainSha.optional(),
|
|
8737
|
+
baseDraftSha: clientGitProvenanceFields.baseDraftSha.optional(),
|
|
8738
|
+
/** Lowercase hex sha256 of the gzip tarball — enables content-addressed upload skip. */
|
|
8739
|
+
checksumSha256: string().regex(/^[0-9a-f]{64}$/).optional(),
|
|
8740
|
+
sizeBytes: number$1().int().nonnegative().optional()
|
|
8741
|
+
}).superRefine(requireClientGitProvenanceFields).superRefine((data, ctx) => {
|
|
8742
|
+
if (data.checksumSha256 !== void 0 && data.sizeBytes === void 0) ctx.addIssue({
|
|
8743
|
+
code: ZodIssueCode.custom,
|
|
8744
|
+
message: "sizeBytes is required when checksumSha256 is provided",
|
|
8745
|
+
path: ["sizeBytes"]
|
|
8746
|
+
});
|
|
8747
|
+
});
|
|
8332
8748
|
const ProjectArtifactSchema = object({
|
|
8333
8749
|
id: string(),
|
|
8334
8750
|
projectId: string(),
|
|
8335
8751
|
storageKey: string(),
|
|
8336
8752
|
status: ProjectArtifactStatusSchema,
|
|
8753
|
+
sourceCommitSha: string().nullable().optional(),
|
|
8337
8754
|
createdAt: isoDateTime$1,
|
|
8338
8755
|
updatedAt: isoDateTime$1
|
|
8339
8756
|
});
|
|
8340
8757
|
const CreateProjectArtifactResponseSchema = object({
|
|
8341
8758
|
artifact: ProjectArtifactSchema,
|
|
8342
|
-
|
|
8759
|
+
/** Null when the tarball bytes already exist at the content-addressed key (skip PUT). */
|
|
8760
|
+
uploadUrl: string().url().nullable(),
|
|
8343
8761
|
expiresInSeconds: number$1().int().positive()
|
|
8344
8762
|
});
|
|
8763
|
+
/**
|
|
8764
|
+
* Optional body for artifact complete. When `manifest` is present the platform
|
|
8765
|
+
* skips re-downloading the tarball (CLI already has it in memory after pack).
|
|
8766
|
+
*/
|
|
8767
|
+
const CompleteProjectArtifactRequestSchema = object({ manifest: StoredRouteManifestSchema.optional() });
|
|
8345
8768
|
const CompleteProjectArtifactResponseSchema = object({
|
|
8346
8769
|
artifact: ProjectArtifactSchema,
|
|
8347
8770
|
project: ProjectSchema
|
|
@@ -8361,6 +8784,527 @@ const ListProjectDeploymentsResponseSchema = array(object({
|
|
|
8361
8784
|
createdAt: isoDateTime$1,
|
|
8362
8785
|
active: boolean()
|
|
8363
8786
|
}));
|
|
8787
|
+
const ConfiguredProjectGitStatusSchema = object({
|
|
8788
|
+
provider: _enum(["github", "code_storage"]),
|
|
8789
|
+
lifecycleStatus: _enum([
|
|
8790
|
+
"provisioning",
|
|
8791
|
+
"ready",
|
|
8792
|
+
"failed",
|
|
8793
|
+
"deleting",
|
|
8794
|
+
"deleted"
|
|
8795
|
+
]),
|
|
8796
|
+
contentStatus: _enum([
|
|
8797
|
+
"empty",
|
|
8798
|
+
"awaiting_source",
|
|
8799
|
+
"synced",
|
|
8800
|
+
"failed"
|
|
8801
|
+
]),
|
|
8802
|
+
defaultBranch: string().min(1),
|
|
8803
|
+
owner: string().nullable(),
|
|
8804
|
+
name: string().nullable(),
|
|
8805
|
+
lastErrorCode: string().nullable(),
|
|
8806
|
+
lastError: string().nullable()
|
|
8807
|
+
});
|
|
8808
|
+
const ProjectGitStatusResponseSchema = discriminatedUnion("configured", [object({ configured: literal(false) }), object({
|
|
8809
|
+
configured: literal(true),
|
|
8810
|
+
repository: ConfiguredProjectGitStatusSchema
|
|
8811
|
+
})]);
|
|
8812
|
+
/** Remotes default to read-only. `draft_write` is Code.Storage-only. */
|
|
8813
|
+
const ProjectGitRemoteRequestSchema = object({
|
|
8814
|
+
ephemeral: boolean().optional(),
|
|
8815
|
+
capability: _enum(["read", "draft_write"]).optional()
|
|
8816
|
+
});
|
|
8817
|
+
const ProjectGitRemoteResponseSchema = object({
|
|
8818
|
+
url: string().url(),
|
|
8819
|
+
username: string().min(1),
|
|
8820
|
+
password: string().min(1),
|
|
8821
|
+
expiresAt: string().datetime(),
|
|
8822
|
+
defaultBranch: literal("main"),
|
|
8823
|
+
draftBranch: literal("ks/draft")
|
|
8824
|
+
});
|
|
8825
|
+
/** Snapshot/content-addressed blob digests are always lowercase sha256. */
|
|
8826
|
+
const sha256Hex$1 = string().regex(/^[a-f0-9]{64}$/, "Expected a lowercase hex sha256 digest");
|
|
8827
|
+
/** One file in a modular deploy artifact (path relative to `dist/`). */
|
|
8828
|
+
const ProjectArtifactIndexFileSchema = object({
|
|
8829
|
+
path: string().min(1).refine((path) => !path.startsWith("/") && !path.includes("\\") && !path.includes("\0") && path.split("/").every((segment) => segment !== "" && segment !== "." && segment !== ".."), "Expected a normalized dist-relative path"),
|
|
8830
|
+
hash: sha256Hex$1,
|
|
8831
|
+
size: number$1().int().nonnegative()
|
|
8832
|
+
});
|
|
8833
|
+
/** Per-deploy index: logical dist paths → content-addressed module blobs. */
|
|
8834
|
+
const ProjectArtifactIndexSchema = object({
|
|
8835
|
+
version: literal(1),
|
|
8836
|
+
files: array(ProjectArtifactIndexFileSchema).min(1)
|
|
8837
|
+
});
|
|
8838
|
+
/** A blob the CLI may need to upload for a modular artifact. */
|
|
8839
|
+
const ModuleBlobRefSchema = object({
|
|
8840
|
+
hash: sha256Hex$1,
|
|
8841
|
+
size: number$1().int().nonnegative()
|
|
8842
|
+
});
|
|
8843
|
+
const isoDateTime = string().datetime();
|
|
8844
|
+
/** Snapshot/content-addressed blob digests are always lowercase sha256. */
|
|
8845
|
+
const sha256Hex = string().regex(/^[a-f0-9]{64}$/, "Expected a lowercase hex sha256 digest");
|
|
8846
|
+
/** Max bytes for a single source file collected or served from a deploy tree. */
|
|
8847
|
+
const PROJECT_SOURCE_MAX_FILE_BYTES = 256 * 1024;
|
|
8848
|
+
/** Max total bytes across all source files in a deploy tree listing. */
|
|
8849
|
+
const PROJECT_SOURCE_MAX_TOTAL_BYTES = 8 * 1024 * 1024;
|
|
8850
|
+
/** Max file count in a deploy tree listing. */
|
|
8851
|
+
const PROJECT_SOURCE_MAX_FILES = 2e3;
|
|
8852
|
+
/** Directory names excluded from project source trees (Git and snapshot). */
|
|
8853
|
+
const PROJECT_SOURCE_IGNORED_DIRS = Object.freeze(new Set([
|
|
8854
|
+
"node_modules",
|
|
8855
|
+
"dist",
|
|
8856
|
+
".git",
|
|
8857
|
+
".turbo",
|
|
8858
|
+
"build",
|
|
8859
|
+
"coverage",
|
|
8860
|
+
".keystroke",
|
|
8861
|
+
".cache",
|
|
8862
|
+
"tmp"
|
|
8863
|
+
]));
|
|
8864
|
+
/** Basename regex: any name containing `.env` (e.g. `.env`, `.env.local`). */
|
|
8865
|
+
const PROJECT_SOURCE_IGNORED_ENV_BASENAME = /\.env/;
|
|
8866
|
+
/** Basename regex: names ending in `.log`. */
|
|
8867
|
+
const PROJECT_SOURCE_IGNORED_LOG_BASENAME = /\.log$/;
|
|
8868
|
+
/** True when a basename should be excluded from project source trees. */
|
|
8869
|
+
function isIgnoredProjectSourceFileName(name) {
|
|
8870
|
+
return name === "pnpm-workspace.yaml" || PROJECT_SOURCE_IGNORED_ENV_BASENAME.test(name) || PROJECT_SOURCE_IGNORED_LOG_BASENAME.test(name);
|
|
8871
|
+
}
|
|
8872
|
+
/**
|
|
8873
|
+
* True when any path segment is an ignored directory (e.g. `src/node_modules/x`).
|
|
8874
|
+
* Does not treat the filename itself as a directory.
|
|
8875
|
+
*/
|
|
8876
|
+
function isIgnoredProjectSourcePath(path) {
|
|
8877
|
+
const segments = path.split("/");
|
|
8878
|
+
for (let index = 0; index < segments.length - 1; index += 1) {
|
|
8879
|
+
const segment = segments[index];
|
|
8880
|
+
if (segment && PROJECT_SOURCE_IGNORED_DIRS.has(segment)) return true;
|
|
8881
|
+
}
|
|
8882
|
+
const base = segments.at(-1);
|
|
8883
|
+
return base !== void 0 && isIgnoredProjectSourceFileName(base);
|
|
8884
|
+
}
|
|
8885
|
+
/** True when the leading sample of a buffer looks binary (NUL byte). */
|
|
8886
|
+
function isProbablyBinaryProjectSource(bytes) {
|
|
8887
|
+
const sampleLength = Math.min(bytes.length, 8e3);
|
|
8888
|
+
for (let index = 0; index < sampleLength; index += 1) if (bytes[index] === 0) return true;
|
|
8889
|
+
return false;
|
|
8890
|
+
}
|
|
8891
|
+
/**
|
|
8892
|
+
* A single entry in a deploy's file tree, as served to the dashboard. Carries
|
|
8893
|
+
* no contents: `id` is a stable, path-derived handle used for selection and
|
|
8894
|
+
* `?file=` deep links. Contents are fetched lazily by immutable revision + path.
|
|
8895
|
+
*/
|
|
8896
|
+
const ProjectFileSummarySchema = object({
|
|
8897
|
+
id: string(),
|
|
8898
|
+
path: string().min(1)
|
|
8899
|
+
});
|
|
8900
|
+
/** Maps a runtime resource slug (agent/workflow/skill) to its source file path. */
|
|
8901
|
+
const ProjectSourceResourceRefSchema = object({
|
|
8902
|
+
slug: string().min(1),
|
|
8903
|
+
path: string().min(1)
|
|
8904
|
+
});
|
|
8905
|
+
const ProjectSourceResourcesSchema = object({
|
|
8906
|
+
agents: array(ProjectSourceResourceRefSchema).default([]),
|
|
8907
|
+
workflows: array(ProjectSourceResourceRefSchema).default([]),
|
|
8908
|
+
skills: array(ProjectSourceResourceRefSchema).default([])
|
|
8909
|
+
});
|
|
8910
|
+
const emptyResources = () => ({
|
|
8911
|
+
agents: [],
|
|
8912
|
+
workflows: [],
|
|
8913
|
+
skills: []
|
|
8914
|
+
});
|
|
8915
|
+
/** Response for the file-tree listing of a project's active deploy. */
|
|
8916
|
+
const ListProjectFilesResponseSchema = object({
|
|
8917
|
+
artifactId: string().nullable(),
|
|
8918
|
+
files: array(ProjectFileSummarySchema),
|
|
8919
|
+
resources: ProjectSourceResourcesSchema.default(emptyResources())
|
|
8920
|
+
});
|
|
8921
|
+
object({
|
|
8922
|
+
path: string().min(1),
|
|
8923
|
+
contents: string(),
|
|
8924
|
+
hash: sha256Hex
|
|
8925
|
+
});
|
|
8926
|
+
/** Request: ask the platform which blobs are missing and get presigned PUTs. */
|
|
8927
|
+
const PresignProjectSourceRequestSchema = object({ blobs: array(object({
|
|
8928
|
+
hash: sha256Hex,
|
|
8929
|
+
size: number$1().int().nonnegative()
|
|
8930
|
+
})) });
|
|
8931
|
+
const PresignedBlobUploadSchema = object({
|
|
8932
|
+
hash: sha256Hex,
|
|
8933
|
+
url: string().url()
|
|
8934
|
+
});
|
|
8935
|
+
/** Response: presigned PUTs for the subset of blobs not already stored. */
|
|
8936
|
+
const PresignProjectSourceResponseSchema = object({ uploads: array(PresignedBlobUploadSchema) });
|
|
8937
|
+
/** Request body the CLI sends to finalize a deploy's source manifest. */
|
|
8938
|
+
const UploadProjectSourceManifestRequestSchema = object({ files: array(object({
|
|
8939
|
+
path: string().min(1),
|
|
8940
|
+
hash: sha256Hex
|
|
8941
|
+
})) });
|
|
8942
|
+
const UploadProjectSourceResponseSchema = object({
|
|
8943
|
+
ok: literal(true),
|
|
8944
|
+
fileCount: number$1().int().nonnegative()
|
|
8945
|
+
});
|
|
8946
|
+
object({
|
|
8947
|
+
files: array(object({
|
|
8948
|
+
id: string(),
|
|
8949
|
+
path: string().min(1),
|
|
8950
|
+
hash: sha256Hex
|
|
8951
|
+
})),
|
|
8952
|
+
generatedAt: isoDateTime
|
|
8953
|
+
});
|
|
8954
|
+
/** A single source file returned by the bulk active-source download endpoint. */
|
|
8955
|
+
const DownloadActiveProjectSourceFileSchema = object({
|
|
8956
|
+
path: string().min(1),
|
|
8957
|
+
contents: string()
|
|
8958
|
+
});
|
|
8959
|
+
/** Response for downloading all source files from a project's active deploy. */
|
|
8960
|
+
const DownloadActiveProjectSourceResponseSchema = object({
|
|
8961
|
+
artifactId: string(),
|
|
8962
|
+
files: array(DownloadActiveProjectSourceFileSchema)
|
|
8963
|
+
});
|
|
8964
|
+
const commitSha$2 = string().regex(/^[0-9a-f]{40}$/i);
|
|
8965
|
+
/**
|
|
8966
|
+
* Metadata for the active project's published source revision.
|
|
8967
|
+
* Contains no credentials — clients mint remotes separately when needed.
|
|
8968
|
+
*/
|
|
8969
|
+
const ActiveProjectSourceRevisionSchema = discriminatedUnion("kind", [object({
|
|
8970
|
+
artifactId: string().min(1),
|
|
8971
|
+
kind: literal("git"),
|
|
8972
|
+
commitSha: commitSha$2,
|
|
8973
|
+
branch: string().min(1)
|
|
8974
|
+
}), object({
|
|
8975
|
+
artifactId: string().min(1),
|
|
8976
|
+
kind: literal("snapshot")
|
|
8977
|
+
})]);
|
|
8978
|
+
const commitSha$1 = string().regex(/^[0-9a-f]{40}$/i);
|
|
8979
|
+
const repositoryPath = string().min(1).refine((path) => !path.startsWith("/") && !path.includes("\\") && !path.includes("\0") && path.split("/").every((segment) => segment !== "" && segment !== "." && segment !== ".."), "Expected a normalized repository-relative path");
|
|
8980
|
+
/** Stable filtered-deploy resource key (`agents/foo`, `workflows/bar`). */
|
|
8981
|
+
const ManagedDeployResourceKeySchema = string().regex(/^(agents|workflows)\/[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/);
|
|
8982
|
+
const ManagedDeployModeSchema = _enum(["full", "filtered"]);
|
|
8983
|
+
const ManagedDeployImpactCompletenessSchema = _enum(["complete", "unknown"]);
|
|
8984
|
+
const ManagedDeployCandidateOpSchema = object({
|
|
8985
|
+
path: repositoryPath,
|
|
8986
|
+
op: _enum(["upsert", "delete"])
|
|
8987
|
+
});
|
|
8988
|
+
const ManagedDeployRequireFullCodeSchema = _enum([
|
|
8989
|
+
"package_manifest",
|
|
8990
|
+
"lockfile",
|
|
8991
|
+
"config",
|
|
8992
|
+
"skills_or_assets",
|
|
8993
|
+
"unsafe_delete_or_rename",
|
|
8994
|
+
"dynamic_or_unresolved_import",
|
|
8995
|
+
"missing_ownership",
|
|
8996
|
+
"ambiguous_ownership",
|
|
8997
|
+
"non_filterable_deployable",
|
|
8998
|
+
"unknown_selected_key",
|
|
8999
|
+
"unproven_safe"
|
|
9000
|
+
]);
|
|
9001
|
+
const ManagedDeployExpansionSchema = object({
|
|
9002
|
+
resourceKey: ManagedDeployResourceKeySchema,
|
|
9003
|
+
reason: string().min(1),
|
|
9004
|
+
sharedInputs: array(string().min(1))
|
|
9005
|
+
});
|
|
9006
|
+
const ManagedDeploySourcePathChangeSchema = object({
|
|
9007
|
+
path: repositoryPath,
|
|
9008
|
+
kind: _enum([
|
|
9009
|
+
"added",
|
|
9010
|
+
"modified",
|
|
9011
|
+
"deleted",
|
|
9012
|
+
"renamed"
|
|
9013
|
+
]),
|
|
9014
|
+
previousPath: repositoryPath.optional()
|
|
9015
|
+
});
|
|
9016
|
+
object({
|
|
9017
|
+
selectedResourceKeys: array(ManagedDeployResourceKeySchema).min(1),
|
|
9018
|
+
changedPaths: array(union([repositoryPath, ManagedDeploySourcePathChangeSchema])).min(1),
|
|
9019
|
+
/** D0 (draft) checkout root. Defaults to process cwd when omitted. */
|
|
9020
|
+
root: string().min(1).optional(),
|
|
9021
|
+
/** Optional M0 (main) checkout root for dual-tree CLI analyze. */
|
|
9022
|
+
mainRoot: string().min(1).optional(),
|
|
9023
|
+
/** Analyzer contract version the caller expects (forward-compatible). */
|
|
9024
|
+
analyzerContractVersion: string().min(1).optional(),
|
|
9025
|
+
/**
|
|
9026
|
+
* Optional M0 package.json / lockfile contents for package-impact attribution.
|
|
9027
|
+
* When omitted, package/lockfile changes remain full-deploy.
|
|
9028
|
+
*/
|
|
9029
|
+
baseManifestFiles: array(object({
|
|
9030
|
+
path: repositoryPath,
|
|
9031
|
+
contents: string()
|
|
9032
|
+
})).optional()
|
|
9033
|
+
});
|
|
9034
|
+
discriminatedUnion("requireFull", [object({
|
|
9035
|
+
requireFull: literal(true),
|
|
9036
|
+
code: ManagedDeployRequireFullCodeSchema,
|
|
9037
|
+
reason: string().min(1)
|
|
9038
|
+
}), object({
|
|
9039
|
+
requireFull: literal(false),
|
|
9040
|
+
resourceKeys: array(ManagedDeployResourceKeySchema).min(1),
|
|
9041
|
+
impactedResourceKeys: array(ManagedDeployResourceKeySchema).default([]),
|
|
9042
|
+
expansions: array(ManagedDeployExpansionSchema),
|
|
9043
|
+
sourceDelta: array(repositoryPath),
|
|
9044
|
+
impactCompleteness: ManagedDeployImpactCompletenessSchema.default("complete"),
|
|
9045
|
+
warnings: array(string()).default([]),
|
|
9046
|
+
candidateOps: array(ManagedDeployCandidateOpSchema).default([]),
|
|
9047
|
+
analyzerContractVersion: string().min(1).optional()
|
|
9048
|
+
})]);
|
|
9049
|
+
object({
|
|
9050
|
+
path: repositoryPath,
|
|
9051
|
+
contents: string()
|
|
9052
|
+
});
|
|
9053
|
+
const ManagedDeployCandidateRecipeEntrySchema = object({
|
|
9054
|
+
path: repositoryPath,
|
|
9055
|
+
op: _enum(["upsert", "delete"]),
|
|
9056
|
+
mode: _enum([
|
|
9057
|
+
"100644",
|
|
9058
|
+
"100755",
|
|
9059
|
+
"120000",
|
|
9060
|
+
"160000"
|
|
9061
|
+
]).optional(),
|
|
9062
|
+
blobSha: commitSha$1.optional()
|
|
9063
|
+
}).superRefine((data, ctx) => {
|
|
9064
|
+
if (data.op === "upsert") {
|
|
9065
|
+
if (data.mode == null) ctx.addIssue({
|
|
9066
|
+
code: ZodIssueCode.custom,
|
|
9067
|
+
message: "mode is required for upsert entries",
|
|
9068
|
+
path: ["mode"]
|
|
9069
|
+
});
|
|
9070
|
+
if (data.blobSha == null) ctx.addIssue({
|
|
9071
|
+
code: ZodIssueCode.custom,
|
|
9072
|
+
message: "blobSha is required for upsert entries",
|
|
9073
|
+
path: ["blobSha"]
|
|
9074
|
+
});
|
|
9075
|
+
}
|
|
9076
|
+
});
|
|
9077
|
+
const ManagedDeployCandidateRecipeSchema = object({
|
|
9078
|
+
parentSha: commitSha$1,
|
|
9079
|
+
treeSha: commitSha$1,
|
|
9080
|
+
draftSha: commitSha$1,
|
|
9081
|
+
mode: _enum(["full", "filtered"]),
|
|
9082
|
+
entries: array(ManagedDeployCandidateRecipeEntrySchema)
|
|
9083
|
+
}).superRefine((data, ctx) => {
|
|
9084
|
+
const seen = /* @__PURE__ */ new Set();
|
|
9085
|
+
for (const [index, entry] of data.entries.entries()) {
|
|
9086
|
+
if (seen.has(entry.path)) ctx.addIssue({
|
|
9087
|
+
code: ZodIssueCode.custom,
|
|
9088
|
+
message: `Duplicate candidate recipe path: ${entry.path}`,
|
|
9089
|
+
path: [
|
|
9090
|
+
"entries",
|
|
9091
|
+
index,
|
|
9092
|
+
"path"
|
|
9093
|
+
]
|
|
9094
|
+
});
|
|
9095
|
+
seen.add(entry.path);
|
|
9096
|
+
}
|
|
9097
|
+
});
|
|
9098
|
+
const PrepareManagedDeployRequestSchema = object({
|
|
9099
|
+
mainSha: commitSha$1,
|
|
9100
|
+
draftSha: commitSha$1,
|
|
9101
|
+
mode: ManagedDeployModeSchema,
|
|
9102
|
+
candidateOps: array(ManagedDeployCandidateOpSchema).min(1).optional(),
|
|
9103
|
+
requestedResourceKeys: array(ManagedDeployResourceKeySchema).min(1).optional(),
|
|
9104
|
+
resourceKeys: array(ManagedDeployResourceKeySchema).min(1).optional(),
|
|
9105
|
+
impactCompleteness: ManagedDeployImpactCompletenessSchema.optional(),
|
|
9106
|
+
acceptImpact: boolean().optional()
|
|
9107
|
+
}).superRefine((data, ctx) => {
|
|
9108
|
+
const seenCandidatePaths = /* @__PURE__ */ new Set();
|
|
9109
|
+
for (const [index, operation] of (data.candidateOps ?? []).entries()) {
|
|
9110
|
+
if (seenCandidatePaths.has(operation.path)) ctx.addIssue({
|
|
9111
|
+
code: ZodIssueCode.custom,
|
|
9112
|
+
message: `Duplicate candidate operation path: ${operation.path}`,
|
|
9113
|
+
path: [
|
|
9114
|
+
"candidateOps",
|
|
9115
|
+
index,
|
|
9116
|
+
"path"
|
|
9117
|
+
]
|
|
9118
|
+
});
|
|
9119
|
+
seenCandidatePaths.add(operation.path);
|
|
9120
|
+
}
|
|
9121
|
+
if (data.mode === "filtered") {
|
|
9122
|
+
if (!data.candidateOps?.length) ctx.addIssue({
|
|
9123
|
+
code: ZodIssueCode.custom,
|
|
9124
|
+
message: "candidateOps is required for filtered deploys",
|
|
9125
|
+
path: ["candidateOps"]
|
|
9126
|
+
});
|
|
9127
|
+
if (!data.requestedResourceKeys?.length) ctx.addIssue({
|
|
9128
|
+
code: ZodIssueCode.custom,
|
|
9129
|
+
message: "requestedResourceKeys is required for filtered deploys",
|
|
9130
|
+
path: ["requestedResourceKeys"]
|
|
9131
|
+
});
|
|
9132
|
+
if (!data.resourceKeys?.length) ctx.addIssue({
|
|
9133
|
+
code: ZodIssueCode.custom,
|
|
9134
|
+
message: "resourceKeys is required for filtered deploys",
|
|
9135
|
+
path: ["resourceKeys"]
|
|
9136
|
+
});
|
|
9137
|
+
if (data.impactCompleteness == null) ctx.addIssue({
|
|
9138
|
+
code: ZodIssueCode.custom,
|
|
9139
|
+
message: "impactCompleteness is required for filtered deploys",
|
|
9140
|
+
path: ["impactCompleteness"]
|
|
9141
|
+
});
|
|
9142
|
+
if (data.requestedResourceKeys && data.resourceKeys && !data.requestedResourceKeys.every((key) => data.resourceKeys.includes(key))) ctx.addIssue({
|
|
9143
|
+
code: ZodIssueCode.custom,
|
|
9144
|
+
message: "requestedResourceKeys must be a subset of resourceKeys",
|
|
9145
|
+
path: ["requestedResourceKeys"]
|
|
9146
|
+
});
|
|
9147
|
+
if ((data.requestedResourceKeys != null && data.resourceKeys != null && (data.requestedResourceKeys.length !== data.resourceKeys.length || !data.requestedResourceKeys.every((key) => data.resourceKeys.includes(key))) || data.impactCompleteness === "unknown") && data.acceptImpact !== true) ctx.addIssue({
|
|
9148
|
+
code: ZodIssueCode.custom,
|
|
9149
|
+
message: "acceptImpact is required for expanded or unknown filtered impact",
|
|
9150
|
+
path: ["acceptImpact"]
|
|
9151
|
+
});
|
|
9152
|
+
return;
|
|
9153
|
+
}
|
|
9154
|
+
for (const field of [
|
|
9155
|
+
"candidateOps",
|
|
9156
|
+
"requestedResourceKeys",
|
|
9157
|
+
"resourceKeys",
|
|
9158
|
+
"impactCompleteness",
|
|
9159
|
+
"acceptImpact"
|
|
9160
|
+
]) if (data[field] != null) ctx.addIssue({
|
|
9161
|
+
code: ZodIssueCode.custom,
|
|
9162
|
+
message: `${field} is not valid for full deploys`,
|
|
9163
|
+
path: [field]
|
|
9164
|
+
});
|
|
9165
|
+
});
|
|
9166
|
+
const PrepareManagedDeployResponseSchema = object({
|
|
9167
|
+
artifact: ProjectArtifactSchema,
|
|
9168
|
+
project: ProjectSchema,
|
|
9169
|
+
mode: _enum(["full", "filtered"]),
|
|
9170
|
+
mainSha: commitSha$1,
|
|
9171
|
+
draftSha: commitSha$1,
|
|
9172
|
+
candidateRef: string().min(1),
|
|
9173
|
+
candidateEphemeral: boolean(),
|
|
9174
|
+
publishMode: _enum(["git_push", "recipe"]),
|
|
9175
|
+
candidateWriteRemote: object({
|
|
9176
|
+
url: string().min(1),
|
|
9177
|
+
username: string().min(1),
|
|
9178
|
+
password: string().min(1),
|
|
9179
|
+
expiresAt: string().datetime()
|
|
9180
|
+
}).optional(),
|
|
9181
|
+
candidateOps: array(ManagedDeployCandidateOpSchema).nullable().default(null)
|
|
9182
|
+
});
|
|
9183
|
+
const PublishManagedDeployCandidateRequestSchema = object({
|
|
9184
|
+
artifactId: string().uuid(),
|
|
9185
|
+
candidateSha: commitSha$1.optional(),
|
|
9186
|
+
recipe: ManagedDeployCandidateRecipeSchema.optional(),
|
|
9187
|
+
/**
|
|
9188
|
+
* Client-attested tip trees for full-mode equality checks. When both are
|
|
9189
|
+
* present, platform compares the strings and skips provider tree walks.
|
|
9190
|
+
*/
|
|
9191
|
+
draftTreeSha: commitSha$1.optional(),
|
|
9192
|
+
candidateTreeSha: commitSha$1.optional()
|
|
9193
|
+
}).superRefine((data, ctx) => {
|
|
9194
|
+
const hasDraft = data.draftTreeSha != null;
|
|
9195
|
+
if (hasDraft !== (data.candidateTreeSha != null)) ctx.addIssue({
|
|
9196
|
+
code: ZodIssueCode.custom,
|
|
9197
|
+
message: "draftTreeSha and candidateTreeSha must both be provided together",
|
|
9198
|
+
path: hasDraft ? ["candidateTreeSha"] : ["draftTreeSha"]
|
|
9199
|
+
});
|
|
9200
|
+
});
|
|
9201
|
+
const PublishManagedDeployCandidateResponseSchema = object({
|
|
9202
|
+
artifactId: string().uuid(),
|
|
9203
|
+
candidateSha: commitSha$1,
|
|
9204
|
+
candidateRef: string().min(1),
|
|
9205
|
+
candidateEphemeral: boolean()
|
|
9206
|
+
});
|
|
9207
|
+
const checksumSha256 = string().regex(/^[0-9a-f]{64}$/);
|
|
9208
|
+
const CompleteManagedDeployArtifactRequestSchema = union([object({
|
|
9209
|
+
artifactId: string().uuid(),
|
|
9210
|
+
index: ProjectArtifactIndexSchema
|
|
9211
|
+
}), object({
|
|
9212
|
+
artifactId: string().uuid(),
|
|
9213
|
+
checksumSha256,
|
|
9214
|
+
sizeBytes: number$1().int().positive()
|
|
9215
|
+
})]);
|
|
9216
|
+
const CompleteManagedDeployArtifactResponseSchema = object({
|
|
9217
|
+
artifact: ProjectArtifactSchema,
|
|
9218
|
+
project: ProjectSchema,
|
|
9219
|
+
candidateSha: commitSha$1,
|
|
9220
|
+
mode: ManagedDeployModeSchema
|
|
9221
|
+
});
|
|
9222
|
+
const CancelManagedDeployRequestSchema = object({ artifactId: string().uuid() });
|
|
9223
|
+
const CancelManagedDeployResponseSchema = object({ cancelled: literal(true) });
|
|
9224
|
+
/** Presign missing module blobs (CAS). Unchanged hashes are omitted from `uploads`. */
|
|
9225
|
+
const RenewManagedDeployUploadRequestSchema = object({
|
|
9226
|
+
artifactId: string().uuid(),
|
|
9227
|
+
blobs: array(ModuleBlobRefSchema)
|
|
9228
|
+
});
|
|
9229
|
+
const RenewManagedDeployUploadResponseSchema = object({
|
|
9230
|
+
uploads: array(PresignedBlobUploadSchema),
|
|
9231
|
+
expiresInSeconds: number$1().int().positive()
|
|
9232
|
+
});
|
|
9233
|
+
const HeartbeatManagedDeployRequestSchema = object({ artifactId: string().uuid() });
|
|
9234
|
+
const HeartbeatManagedDeployResponseSchema = object({ expiresAt: string().datetime() });
|
|
9235
|
+
const commitSha = string().regex(/^[0-9a-f]{40}$/i);
|
|
9236
|
+
/** Tip of the shared unpublished draft branch (`ks/draft`). */
|
|
9237
|
+
const DraftRevisionResponseSchema = object({
|
|
9238
|
+
commitSha,
|
|
9239
|
+
branch: literal("ks/draft")
|
|
9240
|
+
});
|
|
9241
|
+
/** File tree for a draft revision. Clients pin subsequent reads to `commitSha`. */
|
|
9242
|
+
const ListDraftFilesResponseSchema = object({
|
|
9243
|
+
commitSha,
|
|
9244
|
+
files: array(ProjectFileSummarySchema)
|
|
9245
|
+
});
|
|
9246
|
+
object({
|
|
9247
|
+
path: string().min(1),
|
|
9248
|
+
/**
|
|
9249
|
+
* Optional immutable SHA from a prior list/revision response. When omitted,
|
|
9250
|
+
* the platform resolves the current `ks/draft` tip.
|
|
9251
|
+
*/
|
|
9252
|
+
commitSha: commitSha.optional()
|
|
9253
|
+
});
|
|
9254
|
+
/** SDK/helper shape for a draft file body plus the SHA it was read at. */
|
|
9255
|
+
const DraftFileContentResponseSchema = object({
|
|
9256
|
+
content: string(),
|
|
9257
|
+
commitSha
|
|
9258
|
+
});
|
|
9259
|
+
const DraftCommitFileChangeSchema = discriminatedUnion("op", [object({
|
|
9260
|
+
op: literal("upsert"),
|
|
9261
|
+
path: string().min(1),
|
|
9262
|
+
content: string()
|
|
9263
|
+
}), object({
|
|
9264
|
+
op: literal("delete"),
|
|
9265
|
+
path: string().min(1)
|
|
9266
|
+
})]);
|
|
9267
|
+
/**
|
|
9268
|
+
* Atomic multi-file commit against `ks/draft`. `expectedHeadSha` is required
|
|
9269
|
+
* for compare-and-swap; overlapping concurrent edits return a conflict.
|
|
9270
|
+
*/
|
|
9271
|
+
const CreateDraftCommitRequestSchema = object({
|
|
9272
|
+
expectedHeadSha: commitSha,
|
|
9273
|
+
message: string().min(1).max(500).optional(),
|
|
9274
|
+
files: array(DraftCommitFileChangeSchema).min(1)
|
|
9275
|
+
});
|
|
9276
|
+
const DraftCommitResponseSchema = object({ commitSha });
|
|
9277
|
+
/**
|
|
9278
|
+
* Max decoded bytes for a `git diff --binary` submitted to the draft from-diff
|
|
9279
|
+
* endpoint. Keeps request bodies bounded for CLI sync and trusted workers.
|
|
9280
|
+
*/
|
|
9281
|
+
const PROJECT_DRAFT_DIFF_MAX_BYTES = 2 * 1024 * 1024;
|
|
9282
|
+
/** Base64 expands 3 bytes → 4 chars; pad for padding characters. */
|
|
9283
|
+
const PROJECT_DRAFT_DIFF_MAX_BASE64_CHARS = Math.ceil(PROJECT_DRAFT_DIFF_MAX_BYTES / 3) * 4;
|
|
9284
|
+
/**
|
|
9285
|
+
* Commit a binary Git patch (`git diff --binary`) against `ks/draft`.
|
|
9286
|
+
* `expectedHeadSha` is required for compare-and-swap.
|
|
9287
|
+
*/
|
|
9288
|
+
const CreateDraftDiffCommitRequestSchema = object({
|
|
9289
|
+
expectedHeadSha: commitSha,
|
|
9290
|
+
message: string().min(1).max(500).optional(),
|
|
9291
|
+
/** Base64-encoded `git diff --binary` output. */
|
|
9292
|
+
diffBase64: string().min(1).max(PROJECT_DRAFT_DIFF_MAX_BASE64_CHARS)
|
|
9293
|
+
});
|
|
9294
|
+
/** Structured 409 when CAS loses and touched paths overlap concurrent edits. */
|
|
9295
|
+
const DraftConflictResponseSchema = object({
|
|
9296
|
+
error: string(),
|
|
9297
|
+
code: literal("conflict"),
|
|
9298
|
+
currentHeadSha: commitSha
|
|
9299
|
+
});
|
|
9300
|
+
/**
|
|
9301
|
+
* Transient SSE payload after an accepted draft commit. Not a durable event log —
|
|
9302
|
+
* clients use it only to invalidate pinned draft reads.
|
|
9303
|
+
*/
|
|
9304
|
+
const DraftUpdateEventSchema = object({
|
|
9305
|
+
projectId: string().min(1),
|
|
9306
|
+
commitSha
|
|
9307
|
+
});
|
|
8364
9308
|
const optionalCount = number$1().int().nonnegative().nullable().optional();
|
|
8365
9309
|
const optionalTimestamp = string().nullable().optional();
|
|
8366
9310
|
const AgentSummarySchema = object({
|
|
@@ -8745,82 +9689,6 @@ const PublicFormSubmitBodySchema = object({
|
|
|
8745
9689
|
website: string().max(200).optional()
|
|
8746
9690
|
});
|
|
8747
9691
|
const PublicFormSubmitResponseSchema = object({ ok: literal(true) });
|
|
8748
|
-
const isoDateTime = string().datetime();
|
|
8749
|
-
const sha256Hex = string().regex(/^[a-f0-9]{64}$/, "Expected a lowercase hex sha256 digest");
|
|
8750
|
-
/**
|
|
8751
|
-
* A single entry in a deploy's file tree, as served to the dashboard. Carries
|
|
8752
|
-
* no contents: `id` is a stable, path-derived handle used for selection and
|
|
8753
|
-
* `?file=` deep links; `hash` is the content address used to fetch the bytes
|
|
8754
|
-
* lazily and to cache them immutably in the browser.
|
|
8755
|
-
*/
|
|
8756
|
-
const ProjectFileSummarySchema = object({
|
|
8757
|
-
id: string(),
|
|
8758
|
-
path: string().min(1),
|
|
8759
|
-
hash: sha256Hex
|
|
8760
|
-
});
|
|
8761
|
-
/** Maps a runtime resource slug (agent/workflow/skill) to its source file path. */
|
|
8762
|
-
const ProjectSourceResourceRefSchema = object({
|
|
8763
|
-
slug: string().min(1),
|
|
8764
|
-
path: string().min(1)
|
|
8765
|
-
});
|
|
8766
|
-
const ProjectSourceResourcesSchema = object({
|
|
8767
|
-
agents: array(ProjectSourceResourceRefSchema).default([]),
|
|
8768
|
-
workflows: array(ProjectSourceResourceRefSchema).default([]),
|
|
8769
|
-
skills: array(ProjectSourceResourceRefSchema).default([])
|
|
8770
|
-
});
|
|
8771
|
-
const emptyResources = () => ({
|
|
8772
|
-
agents: [],
|
|
8773
|
-
workflows: [],
|
|
8774
|
-
skills: []
|
|
8775
|
-
});
|
|
8776
|
-
/** Response for the file-tree listing of a project's active deploy. */
|
|
8777
|
-
const ListProjectFilesResponseSchema = object({
|
|
8778
|
-
artifactId: string().nullable(),
|
|
8779
|
-
files: array(ProjectFileSummarySchema),
|
|
8780
|
-
resources: ProjectSourceResourcesSchema.default(emptyResources())
|
|
8781
|
-
});
|
|
8782
|
-
object({
|
|
8783
|
-
path: string().min(1),
|
|
8784
|
-
contents: string(),
|
|
8785
|
-
hash: sha256Hex
|
|
8786
|
-
});
|
|
8787
|
-
/** Request: ask the platform which blobs are missing and get presigned PUTs. */
|
|
8788
|
-
const PresignProjectSourceRequestSchema = object({ blobs: array(object({
|
|
8789
|
-
hash: sha256Hex,
|
|
8790
|
-
size: number$1().int().nonnegative()
|
|
8791
|
-
})) });
|
|
8792
|
-
/** Response: presigned PUTs for the subset of blobs not already stored. */
|
|
8793
|
-
const PresignProjectSourceResponseSchema = object({ uploads: array(object({
|
|
8794
|
-
hash: sha256Hex,
|
|
8795
|
-
url: string().url()
|
|
8796
|
-
})) });
|
|
8797
|
-
/** Request body the CLI sends to finalize a deploy's source manifest. */
|
|
8798
|
-
const UploadProjectSourceManifestRequestSchema = object({ files: array(object({
|
|
8799
|
-
path: string().min(1),
|
|
8800
|
-
hash: sha256Hex
|
|
8801
|
-
})) });
|
|
8802
|
-
const UploadProjectSourceResponseSchema = object({
|
|
8803
|
-
ok: literal(true),
|
|
8804
|
-
fileCount: number$1().int().nonnegative()
|
|
8805
|
-
});
|
|
8806
|
-
object({
|
|
8807
|
-
files: array(object({
|
|
8808
|
-
id: string(),
|
|
8809
|
-
path: string().min(1),
|
|
8810
|
-
hash: sha256Hex
|
|
8811
|
-
})),
|
|
8812
|
-
generatedAt: isoDateTime
|
|
8813
|
-
});
|
|
8814
|
-
/** A single source file returned by the bulk active-source download endpoint. */
|
|
8815
|
-
const DownloadActiveProjectSourceFileSchema = object({
|
|
8816
|
-
path: string().min(1),
|
|
8817
|
-
contents: string()
|
|
8818
|
-
});
|
|
8819
|
-
/** Response for downloading all source files from a project's active deploy. */
|
|
8820
|
-
const DownloadActiveProjectSourceResponseSchema = object({
|
|
8821
|
-
artifactId: string(),
|
|
8822
|
-
files: array(DownloadActiveProjectSourceFileSchema)
|
|
8823
|
-
});
|
|
8824
9692
|
/** Relative path written after a local pull or MCP workspace hydration. */
|
|
8825
9693
|
const PROJECT_PULL_STATE_RELATIVE_PATH = ".keystroke/pull-state.json";
|
|
8826
9694
|
const ProjectPullStateSchema = object({
|
|
@@ -8838,6 +9706,6 @@ const ListAgentWorkspaceFilesResponseSchema = object({ files: array(object({
|
|
|
8838
9706
|
})) });
|
|
8839
9707
|
const WorkflowRunInputsPutBodySchema = record(string(), unknown());
|
|
8840
9708
|
//#endregion
|
|
8841
|
-
export { HistoryRunCancelResponseSchema as $, WorkflowSummaryListResponseSchema as $n, ZodIssueCode as $r, QueuedAgentPromptResponseSchema as $t, CreateOrganizationResponseSchema as A, UpdateProjectMemberRequestSchema as An, requiredDisplayTextSchema as Ar, OrganizationSidebarBrandingSchema as At, DownloadActiveProjectSourceResponseSchema as B, UserPreferencesSchema as Bn, AutoTopupSummarySchema as Br, PresignUserAvatarResponseSchema as Bt, CreateApiKeyResponseSchema as C, safeParse$1 as Ci, UpdateChannelBindingBodySchema as Cn, CredentialAssignmentRecordSchema as Cr, ListProjectsResponseSchema as Ct, CreateCustomAppRequestSchema as D, UpdateOrganizationMemberRequestSchema as Dn, credentialInputSchema as Dr, McpDiscoverResponseSchema as Dt, CreateCredentialsResponseSchema as E, UpdateManagedServiceCredentialRequestSchema as En, ExecuteKeystrokeToolRequestSchema as Er, ManagedServiceKindSchema as Et, CredentialInstanceRecordSchema as F, UploadProjectSourceResponseSchema as Fn, CLIENT_CHANNEL_HEADER as Fr, PresignOrgLogoRequestSchema as Ft, FormFieldConfigSchema as G, WorkflowFormUpsertBodySchema as Gn, BillingUsageResponseSchema as Gr, ProjectSlugAvailabilityResponseSchema as Gt, DuplicateCredentialsResponseSchema as H, WorkflowCanvasRunSchema as Hn, BillingInvoiceUrlResponseSchema as Hr, ProjectReachabilityResponseSchema as Ht, DOCS_QUERY_TOOL as I, UpsertGatewayAttachmentBodySchema as In, FilePartSchema as Ir, PresignOrgLogoResponseSchema as It, GetCredentialResponseSchema as J, WorkflowRunInputsPutBodySchema as Jn, CreateBillingPortalRequestSchema as Jr, PublicFormMetadataSchema as Jt, GatewayAttachmentRecordSchema as K, WorkflowRunDetailResponseSchema as Kn, ConfirmCheckoutRequestSchema as Kr, PromptInputSchema as Kt, DOCS_SEARCH_TOOL as L, UserAvatarPatchSchema as Ln, PresignChatAttachmentRequestSchema as Lr, PresignProjectSourceRequestSchema as Lt, CreateProjectRequestSchema as M, UpdateProjectRequestSchema as Mn, LOCAL_PLATFORM_ORIGIN as Mr, PROJECT_REACHABILITY_REQUEST_TIMEOUT_MS as Mt, CreateProjectResponseSchema as N, UpdateProjectSettingsRequestSchema as Nn, resolvePublicPlatformOrigin as Nr, PresignCustomAppLogoRequestSchema as Nt, CreateCustomAppResponseSchema as O, UpdateOrganizationMemberResponseSchema as On, getOpenApiJsonSchema as Or, OpenApiDiscoverResponseSchema as Ot, CredentialInstanceListResponseSchema as P, UploadProjectSourceManifestRequestSchema as Pn, ACTIVE_ORG_HEADER as Pr, PresignCustomAppLogoResponseSchema as Pt, HealthResponseSchema as Q, WorkflowSummaryDetailResponseSchema as Qn, number as Qr, PublishedFormSchema as Qt, DeclineOrganizationInvitationResponseSchema as R, UserAvatarSchema as Rn, PresignChatAttachmentResponseSchema as Rr, PresignProjectSourceResponseSchema as Rt, CreateApiKeyRequestSchema as S, datetime as Si, TriggerRunListResponseSchema as Sn, CredentialAssignmentListResponseSchema as Sr, ListProjectMetricsResponseSchema as St, CreateCredentialsRequestSchema as T, UpdateCredentialRequestSchema as Tn, CredentialConsumerListResponseSchema as Tr, ManagedServiceCredentialSchema as Tt, FinalizeCustomAppLogoRequestSchema as U, WorkflowCanvasSchema as Un, BillingRedirectResponseSchema as Ur, ProjectResponseSchema as Ut, DuplicateCredentialRequestSchema as V, WorkflowCanvasCredentialBindingsSchema as Vn, BillingActivityResponseSchema as Vr, ProjectPullStateSchema as Vt, FinalizeCustomAppLogoResponseSchema as W, WorkflowFormResponseSchema as Wn, BillingSummaryResponseSchema as Wr, ProjectSettingsResponseSchema as Wt, GetTemplateResponseSchema as X, WorkflowRunListResponseSchema as Xn, CreateSubscriptionCheckoutRequestSchema as Xr, PublicFormSubmitResponseSchema as Xt, GetCustomAppResponseSchema as Y, WorkflowRunInputsSchema as Yn, CreateCreditsCheckoutRequestSchema as Yr, PublicFormSubmitBodySchema as Yt, GraphqlDiscoverResponseSchema as Z, WorkflowRunResponseSchema as Zn, UpdateAutoTopupRequestSchema as Zr, PublishedFormListResponseSchema as Zt, ChannelDirectoryListResponseSchema as _, record as _i, TriggerDetailResponseSchema as _n, resolveDocsMcpUrl as _r, ListOrganizationMembersPageResponseSchema as _t, AgentSummaryDetailResponseSchema as a, array as ai, SkillSummaryListResponseSchema as an, WorkspaceWorkflowOverviewSchema as ar, InviteProjectMembersRequestSchema as at, ConnectManagedServiceCredentialRequestSchema as b, unknown as bi, TriggerListResponseSchema as bn, AssignCredentialBodySchema as br, ListProjectFilesResponseSchema as bt, AppSlugAvailabilityResponseSchema as c, discriminatedUnion as ci, StartKeystrokeConnectionResultSchema as cn, detectProjectPackageManagerFromSnapshot as cr, ListAgentWorkspaceFilesResponseSchema as ct, CatalogActionsPageResponseSchema as d, literal as di, StartOAuthConnectionInputSchema as dn, normalizeDocsSearchPaths as dr, ListChannelPlatformsResponseSchema as dt, ZodType as ei, QueuedRunResponseSchema as en, WorkspaceTriggerDetailSchema as er, HistoryRunDetailResponseSchema as et, CatalogAppDetailResponseSchema as f, looseObject as fi, StartOAuthConnectionResultSchema as fn, originFromPublicUrl as fr, ListCredentialsPageQuerySchema as ft, ChannelConnectionSchema as g, preprocess as gi, TemplateFilesResponseSchema as gn, resolveConnectAppSlug as gr, ListOrganizationMembersPageQuerySchema as gt, ChannelConnectionListResponseSchema as h, optional as hi, SubmitTeamRequestRequestSchema as hn, parseStoredRouteManifest as hr, ListOrganizationInvitationsResponseSchema as ht, AgentSessionListResponseSchema as i, any as ii, SkillSummaryDetailResponseSchema as in, WorkspaceTriggerRunListResponseSchema as ir, InviteOrganizationMembersResponseSchema as it, CreateProjectArtifactResponseSchema as j, UpdateProjectMemberResponseSchema as jn, DEFAULT_CLOUD_PLATFORM_ORIGIN as jr, PROJECT_PULL_STATE_RELATIVE_PATH as jt, CreateOrganizationRequestSchema as k, UpdateOrganizationRequestSchema as kn, normalizeCredentialList as kr, OrganizationSidebarBrandingPatchSchema as kt, BindChannelBodySchema as l, intersection as li, StartMcpOAuthConnectionInputSchema as ln, isAcceptableInstallExit as lr, ListApiKeysResponseSchema as lt, ChannelAccountListResponseSchema as m, object as mi, SubmitMarketingContactRequestSchema as mn, parseErrorResponse as mr, ListManagedServiceCredentialsResponseSchema as mt, ActiveOrganizationResponseSchema as n, _function as ni, RecentResourceListResponseSchema as nn, WorkspaceTriggerListResponseSchema as nr, HistoryRunListResponseSchema as nt, AgentSummaryListResponseSchema as o, boolean as oi, SlugAvailabilityResponseSchema as on, buildConnectDeeplink as or, InviteProjectMembersResponseSchema as ot, CatalogAppsPageResponseSchema as p, number$1 as pi, SubmitAgentFeedbackRequestSchema as pn, parseAppSlug as pr, ListCredentialsPageResponseSchema as pt, GetAppCatalogEntryResponseSchema as q, WorkflowRunHooksResponseSchema as qn, ConfirmCheckoutResponseSchema as qr, PromptResponseSchema as qt, AgentSessionDetailResponseSchema as r, _null as ri, STORED_JSON_SCHEMA_TARGET as rn, WorkspaceTriggerOverviewSchema as rr, InviteOrganizationMembersRequestSchema as rt, AgentTriggerSummaryListResponseSchema as s, custom as si, StartKeystrokeConnectionInputSchema as sn, deriveCustomAppDisplay as sr, ListAgentMemoryFilesResponseSchema as st, AcceptOrganizationInvitationResponseSchema as t, _enum as ti, ROUTE_MANIFEST_REL_PATH as tn, WorkspaceTriggerFileSchema as tr, HistoryRunListQuerySchema as tt, CatalogActionDetailResponseSchema as u, lazy as ui, StartMcpOAuthConnectionResultSchema as un, listenPortFromPublicUrl as ur, ListAppsResponseSchema as ut, CompleteProjectArtifactResponseSchema as v, string as vi, TriggerInvokeInputsSchema as vn, slugifyAppName as vr, ListOrganizationsResponseSchema as vt, CreateCredentialInstanceBodySchema as w, NEVER as wi, UpdateCredentialInstanceBodySchema as wn, CredentialConsumerListQuerySchema as wr, ListTemplatesResponseSchema as wt, ConnectProvidersResponseSchema as x, url as xi, TriggerRunDetailResponseSchema as xn, CredentialAssignmentListQuerySchema as xr, ListProjectMembersResponseSchema as xt, ConnectAuthorizeUrlResponseSchema as y, union as yi, TriggerInvokeResponseSchema as yn, zodToStoredJsonSchema as yr, ListProjectDeploymentsResponseSchema as yt, DownloadActiveProjectArtifactResponseSchema as z, UserPreferencesPatchSchema as zn, PublicModelsResponseSchema as zr, PresignUserAvatarRequestSchema as zt };
|
|
9709
|
+
export { DownloadActiveProjectArtifactResponseSchema as $, CreateCreditsCheckoutRequestSchema as $i, SkillSummaryDetailResponseSchema as $n, WorkflowSummaryDetailResponseSchema as $r, OpenApiDiscoverResponseSchema as $t, CreateApiKeyResponseSchema as A, CredentialConsumerListQuerySchema as Ai, ProjectGitStatusResponseSchema as An, UpdateOrganizationRequestSchema as Ar, ListApiKeysResponseSchema as At, CreateProjectArtifactRequestSchema as B, CLIENT_CHANNEL_HEADER as Bi, PublicFormSubmitResponseSchema as Bn, UserPreferencesPatchSchema as Br, ListOrganizationMembersPageResponseSchema as Bt, CompleteManagedDeployArtifactResponseSchema as C, union as Ca, resolveDocsMcpUrl as Ci, PresignProjectSourceRequestSchema as Cn, TriggerRunListResponseSchema as Cr, HistoryRunListResponseSchema as Ct, ConnectManagedServiceCredentialRequestSchema as D, safeParse$1 as Da, CredentialAssignmentListQuerySchema as Di, ProjectArtifactIndexSchema as Dn, UpdateManagedServiceCredentialRequestSchema as Dr, InviteProjectMembersResponseSchema as Dt, ConnectAuthorizeUrlResponseSchema as E, datetime as Ea, AssignCredentialBodySchema as Ei, PresignUserAvatarResponseSchema as En, UpdateCredentialRequestSchema as Er, InviteProjectMembersRequestSchema as Et, CreateCustomAppResponseSchema as F, normalizeCredentialList as Fi, ProjectSlugAvailabilityResponseSchema as Fn, UploadProjectSourceManifestRequestSchema as Fr, ListDraftFilesResponseSchema as Ft, CreateSlackAppResponseSchema as G, BillingActivityResponseSchema as Gi, QueuedAgentPromptResponseSchema as Gn, WorkflowFormResponseSchema as Gr, ListProjectMetricsResponseSchema as Gt, CreateProjectRequestSchema as H, PresignChatAttachmentResponseSchema as Hi, PublishManagedDeployCandidateResponseSchema as Hn, WorkflowCanvasCredentialBindingsSchema as Hr, ListProjectDeploymentsResponseSchema as Ht, CreateDraftCommitRequestSchema as I, requiredDisplayTextSchema as Ii, PromptInputSchema as In, UploadProjectSourceResponseSchema as Ir, ListManagedServiceCredentialsResponseSchema as It, CredentialInstanceListResponseSchema as J, BillingSummaryResponseSchema as Ji, RenewManagedDeployUploadRequestSchema as Jn, WorkflowRunHooksResponseSchema as Jr, MANAGED_DEPLOY_REQUEST_TIMEOUT_MS as Jt, CreateSlackChannelBodySchema as K, BillingInvoiceUrlResponseSchema as Ki, QueuedRunResponseSchema as Kn, WorkflowFormUpsertBodySchema as Kr, ListProjectsResponseSchema as Kt, CreateDraftDiffCommitRequestSchema as L, DEFAULT_CLOUD_PLATFORM_ORIGIN as Li, PromptResponseSchema as Ln, UpsertGatewayAttachmentBodySchema as Lr, ListMcpAppToolsResponseSchema as Lt, CreateCredentialsRequestSchema as M, ExecuteKeystrokeToolRequestSchema as Mi, ProjectReachabilityResponseSchema as Mn, UpdateProjectMemberResponseSchema as Mr, ListChannelPlatformsResponseSchema as Mt, CreateCredentialsResponseSchema as N, credentialInputSchema as Ni, ProjectResponseSchema as Nn, UpdateProjectRequestSchema as Nr, ListCredentialsPageQuerySchema as Nt, ConnectProvidersResponseSchema as O, NEVER as Oa, CredentialAssignmentListResponseSchema as Oi, ProjectGitRemoteRequestSchema as On, UpdateOrganizationMemberRequestSchema as Or, ListAgentMemoryFilesResponseSchema as Ot, CreateCustomAppRequestSchema as P, getOpenApiJsonSchema as Pi, ProjectSettingsResponseSchema as Pn, UpdateProjectSettingsRequestSchema as Pr, ListCredentialsPageResponseSchema as Pt, DeclineOrganizationInvitationResponseSchema as Q, CreateBillingPortalRequestSchema as Qi, STORED_JSON_SCHEMA_TARGET as Qn, WorkflowRunResponseSchema as Qr, McpDiscoverResponseSchema as Qt, CreateOrganizationRequestSchema as R, LOCAL_PLATFORM_ORIGIN as Ri, PublicFormMetadataSchema as Rn, UserAvatarPatchSchema as Rr, ListOrganizationInvitationsResponseSchema as Rt, CompleteManagedDeployArtifactRequestSchema as S, string as Sa, resolveConnectAppSlug as Si, PresignOrgLogoResponseSchema as Sn, TriggerRunDetailResponseSchema as Sr, HistoryRunListQuerySchema as St, CompleteProjectArtifactResponseSchema as T, url as Ta, zodToStoredJsonSchema as Ti, PresignUserAvatarRequestSchema as Tn, UpdateCredentialInstanceBodySchema as Tr, InviteOrganizationMembersResponseSchema as Tt, CreateProjectResponseSchema as U, PublicModelsResponseSchema as Ui, PublishedFormListResponseSchema as Un, WorkflowCanvasRunSchema as Ur, ListProjectFilesResponseSchema as Ut, CreateProjectArtifactResponseSchema as V, PresignChatAttachmentRequestSchema as Vi, PublishManagedDeployCandidateRequestSchema as Vn, UserPreferencesSchema as Vr, ListOrganizationsResponseSchema as Vt, CreateSlackAppRequestSchema as W, AutoTopupSummarySchema as Wi, PublishedFormSchema as Wn, WorkflowCanvasSchema as Wr, ListProjectMembersResponseSchema as Wt, DOCS_QUERY_TOOL as X, ConfirmCheckoutRequestSchema as Xi, SLACK_KEYSTROKE_APP_SLUG as Xn, WorkflowRunInputsSchema as Xr, ManagedServiceCredentialSchema as Xt, CredentialInstanceRecordSchema as Y, BillingUsageResponseSchema as Yi, RenewManagedDeployUploadResponseSchema as Yn, WorkflowRunInputsPutBodySchema as Yr, ManagedDeployResourceKeySchema as Yt, DOCS_SEARCH_TOOL as Z, ConfirmCheckoutResponseSchema as Zi, SLACK_PERSONAL_APP_SLUG as Zn, WorkflowRunListResponseSchema as Zr, ManagedServiceKindSchema as Zt, CatalogAppsPageResponseSchema as _, number$1 as _a, parseAppSlug as _i, PrepareManagedDeployRequestSchema as _n, TemplateFilesResponseSchema as _r, HealthResponseSchema as _t, AgentSessionListResponseSchema as a, _enum as aa, WorkspaceTriggerRunListResponseSchema as ai, PROJECT_MANIFEST_REL_PATH as an, SlackAppManifestResponseSchema as ar, DraftUpdateEventSchema as at, ChannelConnectionSchema as b, preprocess as ba, parseSlackConnectFlow as bi, PresignCustomAppLogoResponseSchema as bn, TriggerInvokeResponseSchema as br, HistoryRunCancelResponseSchema as bt, AgentTriggerSummaryListResponseSchema as c, any as ca, buildConnectDeeplink as ci, PROJECT_SOURCE_IGNORED_DIRS as cn, StartKeystrokeConnectionInputSchema as cr, FinalizeCustomAppLogoRequestSchema as ct, BindChannelBodySchema as d, custom as da, isAcceptableInstallExit as di, PROJECT_SOURCE_MAX_TOTAL_BYTES as dn, StartMcpOAuthConnectionResultSchema as dr, GatewayAttachmentRecordSchema as dt, CreateSubscriptionCheckoutRequestSchema as ea, WorkflowSummaryListResponseSchema as ei, OrganizationSidebarBrandingPatchSchema as en, SkillSummaryListResponseSchema as er, DownloadActiveProjectSourceResponseSchema as et, CancelManagedDeployRequestSchema as f, discriminatedUnion as fa, isIgnoredProjectSourceFileName as fi, PlatformAgentCancelResponseSchema as fn, StartOAuthConnectionInputSchema as fr, GetAppCatalogEntryResponseSchema as ft, CatalogAppDetailResponseSchema as g, looseObject as ga, originFromPublicUrl as gi, PlatformAgentSessionListResponseSchema as gn, SubmitTeamRequestRequestSchema as gr, GraphqlDiscoverResponseSchema as gt, CatalogActionsPageResponseSchema as h, literal as ha, normalizeDocsSearchPaths as hi, PlatformAgentSessionDetailResponseSchema as hn, SubmitMarketingContactRequestSchema as hr, GetTemplateResponseSchema as ht, AgentSessionDetailResponseSchema as i, ZodType as ia, WorkspaceTriggerOverviewSchema as ii, PROJECT_DRAFT_DIFF_MAX_BYTES as in, SlackAppManifestRequestSchema as ir, DraftRevisionResponseSchema as it, CreateCredentialInstanceBodySchema as j, CredentialConsumerListResponseSchema as ji, ProjectPullStateSchema as jn, UpdateProjectMemberRequestSchema as jr, ListAppsResponseSchema as jt, CreateApiKeyRequestSchema as k, CredentialAssignmentRecordSchema as ki, ProjectGitRemoteResponseSchema as kn, UpdateOrganizationMemberResponseSchema as kr, ListAgentWorkspaceFilesResponseSchema as kt, AppSlugAvailabilityResponseSchema as l, array as la, deriveCustomAppDisplay as li, PROJECT_SOURCE_MAX_FILES as ln, StartKeystrokeConnectionResultSchema as lr, FinalizeCustomAppLogoResponseSchema as lt, CatalogActionDetailResponseSchema as m, lazy as ma, isProbablyBinaryProjectSource as mi, PlatformAgentPromptResponseSchema as mn, SubmitAgentFeedbackRequestSchema as mr, GetCustomAppResponseSchema as mt, ActiveOrganizationResponseSchema as n, number as na, WorkspaceTriggerFileSchema as ni, PNPM_FROZEN_INSTALL_ARGS as nn, SlackAppInstallStartResponseSchema as nr, DraftConflictResponseSchema as nt, AgentSummaryDetailResponseSchema as o, _function as oa, WorkspaceWorkflowOverviewSchema as oi, PROJECT_PULL_STATE_RELATIVE_PATH as on, SlackMembershipChannelBodySchema as or, DuplicateCredentialRequestSchema as ot, CancelManagedDeployResponseSchema as p, intersection as pa, isIgnoredProjectSourcePath as pi, PlatformAgentPromptInputSchema as pn, StartOAuthConnectionResultSchema as pr, GetCredentialResponseSchema as pt, CreateSlackChannelResponseSchema as q, BillingRedirectResponseSchema as qi, RecentResourceListResponseSchema as qn, WorkflowRunDetailResponseSchema as qr, ListTemplatesResponseSchema as qt, ActiveProjectSourceRevisionSchema as r, ZodIssueCode as ra, WorkspaceTriggerListResponseSchema as ri, PROJECT_DRAFT_COMMIT_REQUEST_TIMEOUT_MS as rn, SlackAppListResponseSchema as rr, DraftFileContentResponseSchema as rt, AgentSummaryListResponseSchema as s, _null as sa, buildAgentSlackDeeplink as si, PROJECT_REACHABILITY_REQUEST_TIMEOUT_MS as sn, SlugAvailabilityResponseSchema as sr, DuplicateCredentialsResponseSchema as st, AcceptOrganizationInvitationResponseSchema as t, UpdateAutoTopupRequestSchema as ta, WorkspaceTriggerDetailSchema as ti, OrganizationSidebarBrandingSchema as tn, SlackAgentMembershipsResponseSchema as tr, DraftCommitResponseSchema as tt, BindAgentSlackAppBodySchema as u, boolean as ua, detectProjectPackageManagerFromSnapshot as ui, PROJECT_SOURCE_MAX_FILE_BYTES as un, StartMcpOAuthConnectionInputSchema as ur, FormFieldConfigSchema as ut, ChannelAccountListResponseSchema as v, object as va, parseErrorResponse as vi, PrepareManagedDeployResponseSchema as vn, TriggerDetailResponseSchema as vr, HeartbeatManagedDeployRequestSchema as vt, CompleteProjectArtifactRequestSchema as w, unknown as wa, slugifyAppName as wi, PresignProjectSourceResponseSchema as wn, UpdateChannelBindingBodySchema as wr, InviteOrganizationMembersRequestSchema as wt, ChannelDirectoryListResponseSchema as x, record as xa, parseStoredRouteManifest as xi, PresignOrgLogoRequestSchema as xn, TriggerListResponseSchema as xr, HistoryRunDetailResponseSchema as xt, ChannelConnectionListResponseSchema as y, optional as ya, parseProjectManifest as yi, PresignCustomAppLogoRequestSchema as yn, TriggerInvokeInputsSchema as yr, HeartbeatManagedDeployResponseSchema as yt, CreateOrganizationResponseSchema as z, ACTIVE_ORG_HEADER as zi, PublicFormSubmitBodySchema as zn, UserAvatarSchema as zr, ListOrganizationMembersPageQuerySchema as zt };
|
|
8842
9710
|
|
|
8843
|
-
//# sourceMappingURL=dist-
|
|
9711
|
+
//# sourceMappingURL=dist-C6adeAws.mjs.map
|