@keystrokehq/platform 0.0.0-staging-20260714181321
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/LICENSE +13 -0
- package/README.md +63 -0
- package/dist/alias-RTYYYW3D-CGfkaHCa.mjs +97 -0
- package/dist/alias-RTYYYW3D-CGfkaHCa.mjs.map +1 -0
- package/dist/alias-RTYYYW3D-eAP6l98p.cjs +98 -0
- package/dist/alias-RTYYYW3D-eAP6l98p.cjs.map +1 -0
- package/dist/awk2-LA3USKJP-pKmGobcZ.cjs +2732 -0
- package/dist/awk2-LA3USKJP-pKmGobcZ.cjs.map +1 -0
- package/dist/awk2-LA3USKJP-pnoNftT8.mjs +2732 -0
- package/dist/awk2-LA3USKJP-pnoNftT8.mjs.map +1 -0
- package/dist/base64-C2AIWVNC-CrtpD1na.cjs +122 -0
- package/dist/base64-C2AIWVNC-CrtpD1na.cjs.map +1 -0
- package/dist/base64-C2AIWVNC-CyAyrmOE.mjs +122 -0
- package/dist/base64-C2AIWVNC-CyAyrmOE.mjs.map +1 -0
- package/dist/basename-UB3CIYNI--0bze3Ml.cjs +52 -0
- package/dist/basename-UB3CIYNI--0bze3Ml.cjs.map +1 -0
- package/dist/basename-UB3CIYNI-DUyGGC_4.mjs +52 -0
- package/dist/basename-UB3CIYNI-DUyGGC_4.mjs.map +1 -0
- package/dist/bash-YZ33HQZQ-Bft3qmnm.mjs +116 -0
- package/dist/bash-YZ33HQZQ-Bft3qmnm.mjs.map +1 -0
- package/dist/bash-YZ33HQZQ-DLA5dK37.cjs +117 -0
- package/dist/bash-YZ33HQZQ-DLA5dK37.cjs.map +1 -0
- package/dist/cat-TSFMZVYS-BaKHr4U0.cjs +61 -0
- package/dist/cat-TSFMZVYS-BaKHr4U0.cjs.map +1 -0
- package/dist/cat-TSFMZVYS-CblTQ5QR.mjs +61 -0
- package/dist/cat-TSFMZVYS-CblTQ5QR.mjs.map +1 -0
- package/dist/chmod-TFEPA42X-Cmt6YbbQ.cjs +124 -0
- package/dist/chmod-TFEPA42X-Cmt6YbbQ.cjs.map +1 -0
- package/dist/chmod-TFEPA42X-DKe_HF9R.mjs +124 -0
- package/dist/chmod-TFEPA42X-DKe_HF9R.mjs.map +1 -0
- package/dist/chunk-27JIFWUR-C_jDOm1q.mjs +99 -0
- package/dist/chunk-27JIFWUR-C_jDOm1q.mjs.map +1 -0
- package/dist/chunk-27JIFWUR-CyXQ6J5p.cjs +115 -0
- package/dist/chunk-27JIFWUR-CyXQ6J5p.cjs.map +1 -0
- package/dist/chunk-4I3HOE5Z-BYotzP2w.mjs +718 -0
- package/dist/chunk-4I3HOE5Z-BYotzP2w.mjs.map +1 -0
- package/dist/chunk-4I3HOE5Z-CGJlGU0s.cjs +722 -0
- package/dist/chunk-4I3HOE5Z-CGJlGU0s.cjs.map +1 -0
- package/dist/chunk-4WKZNNJK-CuElmTiB.cjs +114 -0
- package/dist/chunk-4WKZNNJK-CuElmTiB.cjs.map +1 -0
- package/dist/chunk-4WKZNNJK-x25SBHbd.mjs +68 -0
- package/dist/chunk-4WKZNNJK-x25SBHbd.mjs.map +1 -0
- package/dist/chunk-5H5SCKJM-J5-RMqlK.cjs +611 -0
- package/dist/chunk-5H5SCKJM-J5-RMqlK.cjs.map +1 -0
- package/dist/chunk-5H5SCKJM-gg7VwICJ.mjs +601 -0
- package/dist/chunk-5H5SCKJM-gg7VwICJ.mjs.map +1 -0
- package/dist/chunk-AQ6FYS2X-BTQ2ZWeh.cjs +40 -0
- package/dist/chunk-AQ6FYS2X-BTQ2ZWeh.cjs.map +1 -0
- package/dist/chunk-AQ6FYS2X-CrZWHyzD.mjs +36 -0
- package/dist/chunk-AQ6FYS2X-CrZWHyzD.mjs.map +1 -0
- package/dist/chunk-BZUGFHVS-7RRM7Jpb.cjs +67 -0
- package/dist/chunk-BZUGFHVS-7RRM7Jpb.cjs.map +1 -0
- package/dist/chunk-BZUGFHVS-B2NchobP.mjs +33 -0
- package/dist/chunk-BZUGFHVS-B2NchobP.mjs.map +1 -0
- package/dist/chunk-CHFEPBH4-CINsrE8W.mjs +593 -0
- package/dist/chunk-CHFEPBH4-CINsrE8W.mjs.map +1 -0
- package/dist/chunk-CHFEPBH4-CPiu5G3a.cjs +609 -0
- package/dist/chunk-CHFEPBH4-CPiu5G3a.cjs.map +1 -0
- package/dist/chunk-EBAPSGAO-C93v3qzT.mjs +246 -0
- package/dist/chunk-EBAPSGAO-C93v3qzT.mjs.map +1 -0
- package/dist/chunk-EBAPSGAO-DZoiCbGH.cjs +250 -0
- package/dist/chunk-EBAPSGAO-DZoiCbGH.cjs.map +1 -0
- package/dist/chunk-LEKBROJD-BuX8Z517.mjs +3109 -0
- package/dist/chunk-LEKBROJD-BuX8Z517.mjs.map +1 -0
- package/dist/chunk-LEKBROJD-hm07oWvp.cjs +3119 -0
- package/dist/chunk-LEKBROJD-hm07oWvp.cjs.map +1 -0
- package/dist/chunk-QAYAQNCG-B1r1SmqS.mjs +62 -0
- package/dist/chunk-QAYAQNCG-B1r1SmqS.mjs.map +1 -0
- package/dist/chunk-QAYAQNCG-ROQh1hrZ.cjs +78 -0
- package/dist/chunk-QAYAQNCG-ROQh1hrZ.cjs.map +1 -0
- package/dist/chunk-QIQMJJZ4-Cm4e9-4O.cjs +96 -0
- package/dist/chunk-QIQMJJZ4-Cm4e9-4O.cjs.map +1 -0
- package/dist/chunk-QIQMJJZ4-Dn8UfvJ9.mjs +92 -0
- package/dist/chunk-QIQMJJZ4-Dn8UfvJ9.mjs.map +1 -0
- package/dist/chunk-SO6R3ZKN-DIoHJ9o1.mjs +139 -0
- package/dist/chunk-SO6R3ZKN-DIoHJ9o1.mjs.map +1 -0
- package/dist/chunk-SO6R3ZKN-DYeOBPNJ.cjs +161 -0
- package/dist/chunk-SO6R3ZKN-DYeOBPNJ.cjs.map +1 -0
- package/dist/chunk-SX2HC7SO-BrE3qB0x.mjs +19 -0
- package/dist/chunk-SX2HC7SO-BrE3qB0x.mjs.map +1 -0
- package/dist/chunk-SX2HC7SO-CN1P7tXw.cjs +23 -0
- package/dist/chunk-SX2HC7SO-CN1P7tXw.cjs.map +1 -0
- package/dist/chunk-TDD4NFYE-CyVGcZCt.cjs +24 -0
- package/dist/chunk-TDD4NFYE-CyVGcZCt.cjs.map +1 -0
- package/dist/chunk-TDD4NFYE-Djy1ztDY.mjs +20 -0
- package/dist/chunk-TDD4NFYE-Djy1ztDY.mjs.map +1 -0
- package/dist/chunk-TN7HHBQW-B8PYcKz5.mjs +1136 -0
- package/dist/chunk-TN7HHBQW-B8PYcKz5.mjs.map +1 -0
- package/dist/chunk-TN7HHBQW-D_SK6w5n.cjs +1146 -0
- package/dist/chunk-TN7HHBQW-D_SK6w5n.cjs.map +1 -0
- package/dist/chunk-VPADYNBD-BwKY-5Xk.mjs +121 -0
- package/dist/chunk-VPADYNBD-BwKY-5Xk.mjs.map +1 -0
- package/dist/chunk-VPADYNBD-ZJpUxqq9.cjs +167 -0
- package/dist/chunk-VPADYNBD-ZJpUxqq9.cjs.map +1 -0
- package/dist/chunk-YCLFEX4T-BmQTDw1Y.cjs +86 -0
- package/dist/chunk-YCLFEX4T-BmQTDw1Y.cjs.map +1 -0
- package/dist/chunk-YCLFEX4T-DvGVdefs.mjs +76 -0
- package/dist/chunk-YCLFEX4T-DvGVdefs.mjs.map +1 -0
- package/dist/clear-HKGFEOF6-B9FqQA-D.cjs +27 -0
- package/dist/clear-HKGFEOF6-B9FqQA-D.cjs.map +1 -0
- package/dist/clear-HKGFEOF6-CVmdHYje.mjs +27 -0
- package/dist/clear-HKGFEOF6-CVmdHYje.mjs.map +1 -0
- package/dist/column-XT6UFXNQ-CEthufNl.mjs +142 -0
- package/dist/column-XT6UFXNQ-CEthufNl.mjs.map +1 -0
- package/dist/column-XT6UFXNQ-tddqJ9Kg.cjs +142 -0
- package/dist/column-XT6UFXNQ-tddqJ9Kg.cjs.map +1 -0
- package/dist/comm-VV2LDX2J-BpdAYzr_.mjs +86 -0
- package/dist/comm-VV2LDX2J-BpdAYzr_.mjs.map +1 -0
- package/dist/comm-VV2LDX2J-D8M6JDGH.cjs +86 -0
- package/dist/comm-VV2LDX2J-D8M6JDGH.cjs.map +1 -0
- package/dist/config-BO2sTtYA.d.mts +324 -0
- package/dist/config-DahIeWeM.d.cts +322 -0
- package/dist/config.cjs +16 -0
- package/dist/config.cjs.map +1 -0
- package/dist/config.d.cts +2 -0
- package/dist/config.d.mts +2 -0
- package/dist/config.mjs +15 -0
- package/dist/config.mjs.map +1 -0
- package/dist/cp-BISAAS7A-BO2reDJf.cjs +105 -0
- package/dist/cp-BISAAS7A-BO2reDJf.cjs.map +1 -0
- package/dist/cp-BISAAS7A-Bgk2QUcq.mjs +105 -0
- package/dist/cp-BISAAS7A-Bgk2QUcq.mjs.map +1 -0
- package/dist/cut-OKARJCCV-DPm1czVO.mjs +117 -0
- package/dist/cut-OKARJCCV-DPm1czVO.mjs.map +1 -0
- package/dist/cut-OKARJCCV-DaBpPPf8.cjs +117 -0
- package/dist/cut-OKARJCCV-DaBpPPf8.cjs.map +1 -0
- package/dist/date-UUUPW43J-DPhwuguC.cjs +187 -0
- package/dist/date-UUUPW43J-DPhwuguC.cjs.map +1 -0
- package/dist/date-UUUPW43J-_wNZ6va_.mjs +187 -0
- package/dist/date-UUUPW43J-_wNZ6va_.mjs.map +1 -0
- package/dist/diff-MWJFIG7X-DZWE4by5.mjs +754 -0
- package/dist/diff-MWJFIG7X-DZWE4by5.mjs.map +1 -0
- package/dist/diff-MWJFIG7X-sW58v-In.cjs +754 -0
- package/dist/diff-MWJFIG7X-sW58v-In.cjs.map +1 -0
- package/dist/dirname-MPHRFUTI-B9pAFfgt.cjs +42 -0
- package/dist/dirname-MPHRFUTI-B9pAFfgt.cjs.map +1 -0
- package/dist/dirname-MPHRFUTI-BH9xdo7B.mjs +42 -0
- package/dist/dirname-MPHRFUTI-BH9xdo7B.mjs.map +1 -0
- package/dist/dist-B_VrBT_r.mjs +37377 -0
- package/dist/dist-B_VrBT_r.mjs.map +1 -0
- package/dist/dist-BdxWQmKK.mjs +8067 -0
- package/dist/dist-BdxWQmKK.mjs.map +1 -0
- package/dist/dist-DCAFVLts.cjs +38596 -0
- package/dist/dist-DCAFVLts.cjs.map +1 -0
- package/dist/dist-QIg3f1DP.cjs +8132 -0
- package/dist/dist-QIg3f1DP.cjs.map +1 -0
- package/dist/du-572XNP42-CRWdTyWl.mjs +175 -0
- package/dist/du-572XNP42-CRWdTyWl.mjs.map +1 -0
- package/dist/du-572XNP42-CqHbkS7A.cjs +175 -0
- package/dist/du-572XNP42-CqHbkS7A.cjs.map +1 -0
- package/dist/echo-NDWZZHPO-BUogPcJ_.mjs +136 -0
- package/dist/echo-NDWZZHPO-BUogPcJ_.mjs.map +1 -0
- package/dist/echo-NDWZZHPO-Cv_eCCli.cjs +136 -0
- package/dist/echo-NDWZZHPO-Cv_eCCli.cjs.map +1 -0
- package/dist/env-36M5BO7M-B3hY6c1d.mjs +117 -0
- package/dist/env-36M5BO7M-B3hY6c1d.mjs.map +1 -0
- package/dist/env-36M5BO7M-BJX6pRHi.cjs +118 -0
- package/dist/env-36M5BO7M-BJX6pRHi.cjs.map +1 -0
- package/dist/expand-JSPG6VOP-C4ZcygSl.mjs +144 -0
- package/dist/expand-JSPG6VOP-C4ZcygSl.mjs.map +1 -0
- package/dist/expand-JSPG6VOP-Dd-2L8yn.cjs +144 -0
- package/dist/expand-JSPG6VOP-Dd-2L8yn.cjs.map +1 -0
- package/dist/expr-5JAACS4X-Cxs0wDb3.mjs +151 -0
- package/dist/expr-5JAACS4X-Cxs0wDb3.mjs.map +1 -0
- package/dist/expr-5JAACS4X-DmKCLgI8.cjs +151 -0
- package/dist/expr-5JAACS4X-DmKCLgI8.cjs.map +1 -0
- package/dist/file-IPZJC3FQ-DeyikL2y.mjs +4200 -0
- package/dist/file-IPZJC3FQ-DeyikL2y.mjs.map +1 -0
- package/dist/file-IPZJC3FQ-M9Q0fqTe.cjs +4200 -0
- package/dist/file-IPZJC3FQ-M9Q0fqTe.cjs.map +1 -0
- package/dist/find-INTH3OLC-BR7ZZKkF.mjs +1330 -0
- package/dist/find-INTH3OLC-BR7ZZKkF.mjs.map +1 -0
- package/dist/find-INTH3OLC-C2Uc7scj.cjs +1330 -0
- package/dist/find-INTH3OLC-C2Uc7scj.cjs.map +1 -0
- package/dist/fold-4TQNYMSW-BQ9ukqex.cjs +137 -0
- package/dist/fold-4TQNYMSW-BQ9ukqex.cjs.map +1 -0
- package/dist/fold-4TQNYMSW-DsDovqTl.mjs +137 -0
- package/dist/fold-4TQNYMSW-DsDovqTl.mjs.map +1 -0
- package/dist/grep-V3LQVMRQ-BsgT3xzo.mjs +333 -0
- package/dist/grep-V3LQVMRQ-BsgT3xzo.mjs.map +1 -0
- package/dist/grep-V3LQVMRQ-ChT5D1RX.cjs +335 -0
- package/dist/grep-V3LQVMRQ-ChT5D1RX.cjs.map +1 -0
- package/dist/gzip-O5ASJAFY-ClxvbIo6.mjs +591 -0
- package/dist/gzip-O5ASJAFY-ClxvbIo6.mjs.map +1 -0
- package/dist/gzip-O5ASJAFY-DJOwjcpB.cjs +593 -0
- package/dist/gzip-O5ASJAFY-DJOwjcpB.cjs.map +1 -0
- package/dist/head-442HYESI-B1LlP95a.mjs +35 -0
- package/dist/head-442HYESI-B1LlP95a.mjs.map +1 -0
- package/dist/head-442HYESI-CL9VIqkb.cjs +35 -0
- package/dist/head-442HYESI-CL9VIqkb.cjs.map +1 -0
- package/dist/help-HZ6M2CKN-BjVXFW-f.mjs +122 -0
- package/dist/help-HZ6M2CKN-BjVXFW-f.mjs.map +1 -0
- package/dist/help-HZ6M2CKN-CzUrqQB7.cjs +122 -0
- package/dist/help-HZ6M2CKN-CzUrqQB7.cjs.map +1 -0
- package/dist/history-WYYKSLSZ-6NEj5e3f.mjs +47 -0
- package/dist/history-WYYKSLSZ-6NEj5e3f.mjs.map +1 -0
- package/dist/history-WYYKSLSZ-DfPcvaAY.cjs +47 -0
- package/dist/history-WYYKSLSZ-DfPcvaAY.cjs.map +1 -0
- package/dist/hostname-C4HQXXUP-B86my_ii.mjs +23 -0
- package/dist/hostname-C4HQXXUP-B86my_ii.mjs.map +1 -0
- package/dist/hostname-C4HQXXUP-CC1LpY9-.cjs +23 -0
- package/dist/hostname-C4HQXXUP-CC1LpY9-.cjs.map +1 -0
- package/dist/html-to-markdown-JW4MSQZO-BKOSSsyy.mjs +15889 -0
- package/dist/html-to-markdown-JW4MSQZO-BKOSSsyy.mjs.map +1 -0
- package/dist/html-to-markdown-JW4MSQZO-TyAsgBnO.cjs +15892 -0
- package/dist/html-to-markdown-JW4MSQZO-TyAsgBnO.cjs.map +1 -0
- package/dist/internal.cjs +5 -0
- package/dist/internal.d.cts +22 -0
- package/dist/internal.d.mts +22 -0
- package/dist/internal.mjs +2 -0
- package/dist/join-TBRGI3LQ-CwgUaVoR.mjs +197 -0
- package/dist/join-TBRGI3LQ-CwgUaVoR.mjs.map +1 -0
- package/dist/join-TBRGI3LQ-JKyApOii.cjs +197 -0
- package/dist/join-TBRGI3LQ-JKyApOii.cjs.map +1 -0
- package/dist/jq-4XLYLOS5-D6TJiRje.cjs +250 -0
- package/dist/jq-4XLYLOS5-D6TJiRje.cjs.map +1 -0
- package/dist/jq-4XLYLOS5-ZisFFv1P.mjs +250 -0
- package/dist/jq-4XLYLOS5-ZisFFv1P.mjs.map +1 -0
- package/dist/js-exec-N5KEZBH7-BDEPJLK5.cjs +326 -0
- package/dist/js-exec-N5KEZBH7-BDEPJLK5.cjs.map +1 -0
- package/dist/js-exec-N5KEZBH7-Dp6FRM8y.mjs +325 -0
- package/dist/js-exec-N5KEZBH7-Dp6FRM8y.mjs.map +1 -0
- package/dist/lib-Cecx0Mdv.cjs +47 -0
- package/dist/lib-Cecx0Mdv.cjs.map +1 -0
- package/dist/lib-Dsemc_Ik.mjs +44 -0
- package/dist/lib-Dsemc_Ik.mjs.map +1 -0
- package/dist/llm-proxy.cjs +32 -0
- package/dist/llm-proxy.d.cts +2 -0
- package/dist/llm-proxy.d.mts +2 -0
- package/dist/llm-proxy.mjs +2 -0
- package/dist/ln-4LGSXXGD-DCt-08KM.cjs +100 -0
- package/dist/ln-4LGSXXGD-DCt-08KM.cjs.map +1 -0
- package/dist/ln-4LGSXXGD-DbVtAqnH.mjs +100 -0
- package/dist/ln-4LGSXXGD-DbVtAqnH.mjs.map +1 -0
- package/dist/ls-ZJGQER7M-BQuAedIy.cjs +1890 -0
- package/dist/ls-ZJGQER7M-BQuAedIy.cjs.map +1 -0
- package/dist/ls-ZJGQER7M-PRXSwGZZ.mjs +1890 -0
- package/dist/ls-ZJGQER7M-PRXSwGZZ.mjs.map +1 -0
- package/dist/lzma-BE4gwH-8.cjs +1204 -0
- package/dist/lzma-BE4gwH-8.cjs.map +1 -0
- package/dist/lzma-CmLEdvxC.mjs +1134 -0
- package/dist/lzma-CmLEdvxC.mjs.map +1 -0
- package/dist/md5sum-SPU24VSG-CmmvMGPa.mjs +15 -0
- package/dist/md5sum-SPU24VSG-CmmvMGPa.mjs.map +1 -0
- package/dist/md5sum-SPU24VSG-xbLQd_LU.cjs +15 -0
- package/dist/md5sum-SPU24VSG-xbLQd_LU.cjs.map +1 -0
- package/dist/mkdir-MEPGZOB6-DB938M04.mjs +56 -0
- package/dist/mkdir-MEPGZOB6-DB938M04.mjs.map +1 -0
- package/dist/mkdir-MEPGZOB6-IHvBvQTL.cjs +56 -0
- package/dist/mkdir-MEPGZOB6-IHvBvQTL.cjs.map +1 -0
- package/dist/mv-W5BIQ646-B2XVmdN4.mjs +92 -0
- package/dist/mv-W5BIQ646-B2XVmdN4.mjs.map +1 -0
- package/dist/mv-W5BIQ646-CFwaJ3Xx.cjs +92 -0
- package/dist/mv-W5BIQ646-CFwaJ3Xx.cjs.map +1 -0
- package/dist/nl-WSDW7I4O-CRYsCXB7.mjs +207 -0
- package/dist/nl-WSDW7I4O-CRYsCXB7.mjs.map +1 -0
- package/dist/nl-WSDW7I4O-FzZXRAwD.cjs +207 -0
- package/dist/nl-WSDW7I4O-FzZXRAwD.cjs.map +1 -0
- package/dist/od-WOKFDJTP-DVBJw76D.mjs +72 -0
- package/dist/od-WOKFDJTP-DVBJw76D.mjs.map +1 -0
- package/dist/od-WOKFDJTP-M80nAztL.cjs +72 -0
- package/dist/od-WOKFDJTP-M80nAztL.cjs.map +1 -0
- package/dist/paste-7JC6S4DX-DOPeey0W.cjs +112 -0
- package/dist/paste-7JC6S4DX-DOPeey0W.cjs.map +1 -0
- package/dist/paste-7JC6S4DX-q6d7adhi.mjs +112 -0
- package/dist/paste-7JC6S4DX-q6d7adhi.mjs.map +1 -0
- package/dist/platform-database.cjs +98 -0
- package/dist/platform-database.d.cts +2 -0
- package/dist/platform-database.d.mts +2 -0
- package/dist/platform-database.mjs +2 -0
- package/dist/printf-TWGXF445-BOz88v_H.mjs +878 -0
- package/dist/printf-TWGXF445-BOz88v_H.mjs.map +1 -0
- package/dist/printf-TWGXF445-BXve-Eiv.cjs +878 -0
- package/dist/printf-TWGXF445-BXve-Eiv.cjs.map +1 -0
- package/dist/pwd-WE6EN5AV-CbA4e7ec.mjs +33 -0
- package/dist/pwd-WE6EN5AV-CbA4e7ec.mjs.map +1 -0
- package/dist/pwd-WE6EN5AV-DfqwHtSS.cjs +33 -0
- package/dist/pwd-WE6EN5AV-DfqwHtSS.cjs.map +1 -0
- package/dist/python3-POMOR4OA-DRta50Gp.mjs +290 -0
- package/dist/python3-POMOR4OA-DRta50Gp.mjs.map +1 -0
- package/dist/python3-POMOR4OA-__fmhnV2.cjs +291 -0
- package/dist/python3-POMOR4OA-__fmhnV2.cjs.map +1 -0
- package/dist/readlink-OPJF4DL5-C7a7cTci.cjs +75 -0
- package/dist/readlink-OPJF4DL5-C7a7cTci.cjs.map +1 -0
- package/dist/readlink-OPJF4DL5-Zf7h1M1z.mjs +75 -0
- package/dist/readlink-OPJF4DL5-Zf7h1M1z.mjs.map +1 -0
- package/dist/rev-5EHFX4EJ-CFFAX-eL.cjs +65 -0
- package/dist/rev-5EHFX4EJ-CFFAX-eL.cjs.map +1 -0
- package/dist/rev-5EHFX4EJ-DP28Z2tI.mjs +65 -0
- package/dist/rev-5EHFX4EJ-DP28Z2tI.mjs.map +1 -0
- package/dist/rg-S4FXYXWB-Bawo1fot.mjs +1536 -0
- package/dist/rg-S4FXYXWB-Bawo1fot.mjs.map +1 -0
- package/dist/rg-S4FXYXWB-DrdwsBhO.cjs +1536 -0
- package/dist/rg-S4FXYXWB-DrdwsBhO.cjs.map +1 -0
- package/dist/rm-SSGETQVQ-BaWdfV2i.cjs +79 -0
- package/dist/rm-SSGETQVQ-BaWdfV2i.cjs.map +1 -0
- package/dist/rm-SSGETQVQ-C6EQ5XnR.mjs +79 -0
- package/dist/rm-SSGETQVQ-C6EQ5XnR.mjs.map +1 -0
- package/dist/rmdir-OC4ZLPYA-COg4QKnN.mjs +131 -0
- package/dist/rmdir-OC4ZLPYA-COg4QKnN.mjs.map +1 -0
- package/dist/rmdir-OC4ZLPYA-DK3A8POR.cjs +131 -0
- package/dist/rmdir-OC4ZLPYA-DK3A8POR.cjs.map +1 -0
- package/dist/run.cjs +13 -0
- package/dist/run.cjs.map +1 -0
- package/dist/run.d.cts +1 -0
- package/dist/run.d.mts +1 -0
- package/dist/run.mjs +14 -0
- package/dist/run.mjs.map +1 -0
- package/dist/sed-S5UIK574-CQ1AnR3r.cjs +1717 -0
- package/dist/sed-S5UIK574-CQ1AnR3r.cjs.map +1 -0
- package/dist/sed-S5UIK574-P4wu0pe1.mjs +1717 -0
- package/dist/sed-S5UIK574-P4wu0pe1.mjs.map +1 -0
- package/dist/seq-M5EC7Q57-BlpnRLkX.mjs +84 -0
- package/dist/seq-M5EC7Q57-BlpnRLkX.mjs.map +1 -0
- package/dist/seq-M5EC7Q57-CObcFJ6w.cjs +84 -0
- package/dist/seq-M5EC7Q57-CObcFJ6w.cjs.map +1 -0
- package/dist/sha1sum-2PTOAFR6-BPLIR6an.cjs +15 -0
- package/dist/sha1sum-2PTOAFR6-BPLIR6an.cjs.map +1 -0
- package/dist/sha1sum-2PTOAFR6-jNQ-uyUw.mjs +15 -0
- package/dist/sha1sum-2PTOAFR6-jNQ-uyUw.mjs.map +1 -0
- package/dist/sha256sum-NS7D3IXX-Bvq-KnSV.cjs +15 -0
- package/dist/sha256sum-NS7D3IXX-Bvq-KnSV.cjs.map +1 -0
- package/dist/sha256sum-NS7D3IXX-DebIy64D.mjs +15 -0
- package/dist/sha256sum-NS7D3IXX-DebIy64D.mjs.map +1 -0
- package/dist/sleep-X22JJINO-BZNoBeaB.mjs +66 -0
- package/dist/sleep-X22JJINO-BZNoBeaB.mjs.map +1 -0
- package/dist/sleep-X22JJINO-DP1z72-Q.cjs +66 -0
- package/dist/sleep-X22JJINO-DP1z72-Q.cjs.map +1 -0
- package/dist/sort-SW2YEO5B-BWZaGhuw.cjs +318 -0
- package/dist/sort-SW2YEO5B-BWZaGhuw.cjs.map +1 -0
- package/dist/sort-SW2YEO5B-DewIJ9_h.mjs +318 -0
- package/dist/sort-SW2YEO5B-DewIJ9_h.mjs.map +1 -0
- package/dist/split-4KKZZXXE-Bhr_rhRz.cjs +247 -0
- package/dist/split-4KKZZXXE-Bhr_rhRz.cjs.map +1 -0
- package/dist/split-4KKZZXXE-ciJXyT15.mjs +247 -0
- package/dist/split-4KKZZXXE-ciJXyT15.mjs.map +1 -0
- package/dist/sqlite3-CGOEFJAO-CdyK5NF3.cjs +2877 -0
- package/dist/sqlite3-CGOEFJAO-CdyK5NF3.cjs.map +1 -0
- package/dist/sqlite3-CGOEFJAO-K8u_Ru5X.mjs +2875 -0
- package/dist/sqlite3-CGOEFJAO-K8u_Ru5X.mjs.map +1 -0
- package/dist/start-DCnxLHI5.mjs +30918 -0
- package/dist/start-DCnxLHI5.mjs.map +1 -0
- package/dist/start-y3y8zgSv.cjs +31051 -0
- package/dist/start-y3y8zgSv.cjs.map +1 -0
- package/dist/start.cjs +3 -0
- package/dist/start.d.cts +28 -0
- package/dist/start.d.mts +28 -0
- package/dist/start.mjs +2 -0
- package/dist/stat-CD34IZ4P-BL8u_Aqm.mjs +64 -0
- package/dist/stat-CD34IZ4P-BL8u_Aqm.mjs.map +1 -0
- package/dist/stat-CD34IZ4P-BSu3fjXb.cjs +64 -0
- package/dist/stat-CD34IZ4P-BSu3fjXb.cjs.map +1 -0
- package/dist/strings-6WDHLGMX-Xt8Gbe8-.cjs +178 -0
- package/dist/strings-6WDHLGMX-Xt8Gbe8-.cjs.map +1 -0
- package/dist/strings-6WDHLGMX-lZect78u.mjs +178 -0
- package/dist/strings-6WDHLGMX-lZect78u.mjs.map +1 -0
- package/dist/tac-2STMMJYW-6DSfXKEM.cjs +52 -0
- package/dist/tac-2STMMJYW-6DSfXKEM.cjs.map +1 -0
- package/dist/tac-2STMMJYW-CYopDu0z.mjs +52 -0
- package/dist/tac-2STMMJYW-CYopDu0z.mjs.map +1 -0
- package/dist/tail-R4PCA2C4-05tRE3pO.mjs +36 -0
- package/dist/tail-R4PCA2C4-05tRE3pO.mjs.map +1 -0
- package/dist/tail-R4PCA2C4-B8zVnbJv.cjs +36 -0
- package/dist/tail-R4PCA2C4-B8zVnbJv.cjs.map +1 -0
- package/dist/tar-STHHZTZ6-BF9uOAeY.cjs +2839 -0
- package/dist/tar-STHHZTZ6-BF9uOAeY.cjs.map +1 -0
- package/dist/tar-STHHZTZ6-BGc4fGMj.mjs +2836 -0
- package/dist/tar-STHHZTZ6-BGc4fGMj.mjs.map +1 -0
- package/dist/tee-YUZ2FKCJ-CZGSWOLF.mjs +45 -0
- package/dist/tee-YUZ2FKCJ-CZGSWOLF.mjs.map +1 -0
- package/dist/tee-YUZ2FKCJ-DXc_xwaw.cjs +45 -0
- package/dist/tee-YUZ2FKCJ-DXc_xwaw.cjs.map +1 -0
- package/dist/time-D4LNBSWX-C5yYBJS0.mjs +107 -0
- package/dist/time-D4LNBSWX-C5yYBJS0.mjs.map +1 -0
- package/dist/time-D4LNBSWX-CQI3pEaI.cjs +107 -0
- package/dist/time-D4LNBSWX-CQI3pEaI.cjs.map +1 -0
- package/dist/timeout-YDCRSLPQ-C57Y8ySP.cjs +110 -0
- package/dist/timeout-YDCRSLPQ-C57Y8ySP.cjs.map +1 -0
- package/dist/timeout-YDCRSLPQ-CsT6X_C0.mjs +110 -0
- package/dist/timeout-YDCRSLPQ-CsT6X_C0.mjs.map +1 -0
- package/dist/touch-UA33VN3N-Cyx5v5-2.cjs +103 -0
- package/dist/touch-UA33VN3N-Cyx5v5-2.cjs.map +1 -0
- package/dist/touch-UA33VN3N-DYslBCYn.mjs +103 -0
- package/dist/touch-UA33VN3N-DYslBCYn.mjs.map +1 -0
- package/dist/tr-36LHWFRQ-C57tK13M.mjs +165 -0
- package/dist/tr-36LHWFRQ-C57tK13M.mjs.map +1 -0
- package/dist/tr-36LHWFRQ-CJ7ZK1Cv.cjs +165 -0
- package/dist/tr-36LHWFRQ-CJ7ZK1Cv.cjs.map +1 -0
- package/dist/tree-YLD52CNT-C01jI2xZ.mjs +185 -0
- package/dist/tree-YLD52CNT-C01jI2xZ.mjs.map +1 -0
- package/dist/tree-YLD52CNT-C0new1hw.cjs +185 -0
- package/dist/tree-YLD52CNT-C0new1hw.cjs.map +1 -0
- package/dist/true-FHQXJXBE-CIHy9LuF.mjs +30 -0
- package/dist/true-FHQXJXBE-CIHy9LuF.mjs.map +1 -0
- package/dist/true-FHQXJXBE-CROnM_dr.cjs +31 -0
- package/dist/true-FHQXJXBE-CROnM_dr.cjs.map +1 -0
- package/dist/unexpand-CADSA4VO-DgiJnv3D.mjs +154 -0
- package/dist/unexpand-CADSA4VO-DgiJnv3D.mjs.map +1 -0
- package/dist/unexpand-CADSA4VO-KAVxaOsW.cjs +154 -0
- package/dist/unexpand-CADSA4VO-KAVxaOsW.cjs.map +1 -0
- package/dist/uniq-XSIZR6PB-C05c3Clm.mjs +90 -0
- package/dist/uniq-XSIZR6PB-C05c3Clm.mjs.map +1 -0
- package/dist/uniq-XSIZR6PB-a2hQnbkY.cjs +90 -0
- package/dist/uniq-XSIZR6PB-a2hQnbkY.cjs.map +1 -0
- package/dist/wc-LF7NU4LA-D_LGPXUP.mjs +109 -0
- package/dist/wc-LF7NU4LA-D_LGPXUP.mjs.map +1 -0
- package/dist/wc-LF7NU4LA-UNORxUJr.cjs +109 -0
- package/dist/wc-LF7NU4LA-UNORxUJr.cjs.map +1 -0
- package/dist/which-XEM24D5D-4seJsWKQ.cjs +61 -0
- package/dist/which-XEM24D5D-4seJsWKQ.cjs.map +1 -0
- package/dist/which-XEM24D5D-BmDHO2AT.mjs +61 -0
- package/dist/which-XEM24D5D-BmDHO2AT.mjs.map +1 -0
- package/dist/whoami-XMTX52VE-CA-yJTvn.cjs +23 -0
- package/dist/whoami-XMTX52VE-CA-yJTvn.cjs.map +1 -0
- package/dist/whoami-XMTX52VE-DW_4VMpE.mjs +23 -0
- package/dist/whoami-XMTX52VE-DW_4VMpE.mjs.map +1 -0
- package/dist/with-project-scope-7t3SHNwz.mjs +56 -0
- package/dist/with-project-scope-7t3SHNwz.mjs.map +1 -0
- package/dist/with-project-scope-Drmz2h2Z.cjs +79 -0
- package/dist/with-project-scope-Drmz2h2Z.cjs.map +1 -0
- package/dist/xan-Y6WF3IRG-B_ysBBaD.mjs +2826 -0
- package/dist/xan-Y6WF3IRG-B_ysBBaD.mjs.map +1 -0
- package/dist/xan-Y6WF3IRG-DvYlOlaJ.cjs +2826 -0
- package/dist/xan-Y6WF3IRG-DvYlOlaJ.cjs.map +1 -0
- package/dist/xan-view-HDVKHFC2-Bv8_W4eE.mjs +11 -0
- package/dist/xan-view-HDVKHFC2-Bv8_W4eE.mjs.map +1 -0
- package/dist/xan-view-HDVKHFC2-ClhOnUAS.cjs +10 -0
- package/dist/xan-view-HDVKHFC2-ClhOnUAS.cjs.map +1 -0
- package/dist/xargs-MGZPH7AX-BvvOKhXS.cjs +110 -0
- package/dist/xargs-MGZPH7AX-BvvOKhXS.cjs.map +1 -0
- package/dist/xargs-MGZPH7AX-la_JFVst.mjs +110 -0
- package/dist/xargs-MGZPH7AX-la_JFVst.mjs.map +1 -0
- package/dist/yq-4QJW3EQG-Bq2dt3bL.mjs +8604 -0
- package/dist/yq-4QJW3EQG-Bq2dt3bL.mjs.map +1 -0
- package/dist/yq-4QJW3EQG-WlQHm2uv.cjs +8604 -0
- package/dist/yq-4QJW3EQG-WlQHm2uv.cjs.map +1 -0
- package/package.json +78 -0
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
import Docker from "dockerode";
|
|
2
|
+
import { ZodError, z } from "zod";
|
|
3
|
+
import { McpProviderPlugin, McpProviderPlugin as McpProviderPlugin$1 } from "@keystrokehq/http";
|
|
4
|
+
import { Context } from "hono";
|
|
5
|
+
|
|
6
|
+
//#region ../../packages/hosting/dist/index.d.mts
|
|
7
|
+
//#endregion
|
|
8
|
+
//#region src/runtime.d.ts
|
|
9
|
+
type ProjectRuntimeDatabase = {
|
|
10
|
+
host: string;
|
|
11
|
+
port: number;
|
|
12
|
+
database: string;
|
|
13
|
+
user: string;
|
|
14
|
+
password: string;
|
|
15
|
+
searchPath: string;
|
|
16
|
+
organizationId: string; /** @deprecated Per-project workers only — org workers omit this. */
|
|
17
|
+
projectId?: string;
|
|
18
|
+
};
|
|
19
|
+
type OrgProjectDeploy = {
|
|
20
|
+
projectId: string;
|
|
21
|
+
name: string;
|
|
22
|
+
artifactId: string;
|
|
23
|
+
artifactStorageKey: string;
|
|
24
|
+
};
|
|
25
|
+
type ProjectRuntimeHosting = {
|
|
26
|
+
appName: string;
|
|
27
|
+
};
|
|
28
|
+
type ProjectRuntimeInput = {
|
|
29
|
+
organizationId: string;
|
|
30
|
+
projects: OrgProjectDeploy[];
|
|
31
|
+
database: ProjectRuntimeDatabase;
|
|
32
|
+
hosting?: ProjectRuntimeHosting; /** Extra env merged into the project server launch spec (e.g. from an llmProxy plugin). */
|
|
33
|
+
env?: Record<string, string>; /** Previous runtime to retire after a successful cutover. */
|
|
34
|
+
previousRuntimeId?: string | null;
|
|
35
|
+
};
|
|
36
|
+
/** Builds base64 `KEYSTROKE_ORG_ARTIFACTS` payload for org worker containers. */
|
|
37
|
+
type ProjectRuntimeDestroyInput = {
|
|
38
|
+
runtimeId: string;
|
|
39
|
+
hosting?: ProjectRuntimeHosting;
|
|
40
|
+
};
|
|
41
|
+
type ProjectRuntimeReconcileInput = {
|
|
42
|
+
organizationId: string; /** The runtime to keep — every other runtime belonging to this org should be destroyed. */
|
|
43
|
+
keepRuntimeId: string;
|
|
44
|
+
hosting?: ProjectRuntimeHosting;
|
|
45
|
+
};
|
|
46
|
+
type ProjectRuntimeResult = {
|
|
47
|
+
runtimeId: string;
|
|
48
|
+
baseUrl: string;
|
|
49
|
+
};
|
|
50
|
+
type ProjectRuntime = {
|
|
51
|
+
start(input: ProjectRuntimeInput): Promise<ProjectRuntimeResult>;
|
|
52
|
+
destroy?(input: ProjectRuntimeDestroyInput): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Sweep away every runtime for this org except `keepRuntimeId`, retrying
|
|
55
|
+
* transient failures instead of giving up after one attempt. This catches
|
|
56
|
+
* orphans that a single {@link destroy} call missed (e.g. a previous deploy's
|
|
57
|
+
* destroy failed silently), not just the one runtime recorded as "previous."
|
|
58
|
+
*/
|
|
59
|
+
reconcile?(input: ProjectRuntimeReconcileInput): Promise<void>;
|
|
60
|
+
};
|
|
61
|
+
type ProjectPingTarget = {
|
|
62
|
+
baseUrl: string | null;
|
|
63
|
+
runtimeId: string | null;
|
|
64
|
+
}; //#endregion
|
|
65
|
+
//#region src/worker-runtime-config.d.ts
|
|
66
|
+
/** Resolved platform ↔ project-server worker auth contract. */
|
|
67
|
+
type WorkerRuntimeConfig = {
|
|
68
|
+
/** Platform API base URL reachable from the project-server runtime. */platformUrl: string; /** Bearer token for platform `/internal` routes. */
|
|
69
|
+
workerToken: string;
|
|
70
|
+
};
|
|
71
|
+
//#endregion
|
|
72
|
+
//#region src/plugin.d.ts
|
|
73
|
+
type HostingOptions = {
|
|
74
|
+
image?: string;
|
|
75
|
+
env?: NodeJS.ProcessEnv;
|
|
76
|
+
fetchImpl?: typeof fetch;
|
|
77
|
+
healthTimeoutMs?: number;
|
|
78
|
+
};
|
|
79
|
+
type OrganizationHostingInput = {
|
|
80
|
+
organizationId: string;
|
|
81
|
+
name: string;
|
|
82
|
+
};
|
|
83
|
+
type OrganizationHostingResult = {
|
|
84
|
+
appName: string;
|
|
85
|
+
};
|
|
86
|
+
type HostingPlugin = {
|
|
87
|
+
name: string; /** Validated at plugin creation — shared by platform internal routes and project-server containers. */
|
|
88
|
+
workerRuntime: WorkerRuntimeConfig;
|
|
89
|
+
createRuntime(): ProjectRuntime;
|
|
90
|
+
provisionOrganization?(input: OrganizationHostingInput): Promise<OrganizationHostingResult>;
|
|
91
|
+
deprovisionOrganization?(result: OrganizationHostingResult): Promise<void>;
|
|
92
|
+
canPingTarget?(target: ProjectPingTarget): target is {
|
|
93
|
+
baseUrl: string;
|
|
94
|
+
runtimeId: string | null;
|
|
95
|
+
};
|
|
96
|
+
pingRequestHeaders?(runtimeId: string | null): Record<string, string>;
|
|
97
|
+
}; //#endregion
|
|
98
|
+
//#region src/docker/create-docker-runtime.d.ts
|
|
99
|
+
//#endregion
|
|
100
|
+
//#region ../../packages/scheduler/dist/contract-GpxHe4g6.d.mts
|
|
101
|
+
//#region src/types.d.ts
|
|
102
|
+
type JobKind = "workflow" | "agent" | "trigger" | "trigger-overview" | "workflow-canvas-annotations" | "workflow-overview" | "runtime" | "maintenance";
|
|
103
|
+
type JobTrigger = "api" | "cron" | "webhook" | "poll" | "retry" | "prompt";
|
|
104
|
+
/**
|
|
105
|
+
* Identifies a run that dispatched this job as a child. The parent metadata
|
|
106
|
+
* survives the queue boundary so the child can resume its parent at a terminal
|
|
107
|
+
* outcome without treating the child as a separately-billable dispatch.
|
|
108
|
+
*/
|
|
109
|
+
type JobParent = {
|
|
110
|
+
kind: "workflow" | "agent";
|
|
111
|
+
runId: string;
|
|
112
|
+
targetId: string;
|
|
113
|
+
correlationId?: string;
|
|
114
|
+
};
|
|
115
|
+
type JobPayload = {
|
|
116
|
+
kind: JobKind;
|
|
117
|
+
targetId: string;
|
|
118
|
+
runId: string;
|
|
119
|
+
trigger: JobTrigger;
|
|
120
|
+
payload: unknown;
|
|
121
|
+
attempt: number;
|
|
122
|
+
maxAttempts: number; /** True when this delivery is the final retry attempt. */
|
|
123
|
+
exhaustedRetries?: boolean;
|
|
124
|
+
scheduledAt: Date;
|
|
125
|
+
jobId: string; /** Project scope for org-wide worker queues. */
|
|
126
|
+
projectId?: string; /** Parent run that dispatched this child job, when applicable. */
|
|
127
|
+
parent?: JobParent; /** Optional W3C trace context carrier (sibling of user payload). */
|
|
128
|
+
traceContext?: Record<string, string>;
|
|
129
|
+
};
|
|
130
|
+
type EnqueueInput = {
|
|
131
|
+
kind: JobKind;
|
|
132
|
+
targetId: string;
|
|
133
|
+
runId: string;
|
|
134
|
+
trigger: JobTrigger;
|
|
135
|
+
payload?: unknown;
|
|
136
|
+
scheduledAt?: Date;
|
|
137
|
+
attempt?: number;
|
|
138
|
+
maxAttempts?: number; /** Dedupe key — pg-boss singletonKey / BullMQ jobId. */
|
|
139
|
+
dedupeKey?: string; /** Project scope for org-wide worker queues. */
|
|
140
|
+
projectId?: string; /** Parent run that dispatched this child job, when applicable. */
|
|
141
|
+
parent?: JobParent; /** Optional W3C trace context carrier (sibling of user payload). */
|
|
142
|
+
traceContext?: Record<string, string>;
|
|
143
|
+
};
|
|
144
|
+
type JobHandler = (job: JobPayload) => Promise<void>;
|
|
145
|
+
type CancelHandler = (runId: string) => void | Promise<void>;
|
|
146
|
+
type StopFn = () => Promise<void> | void;
|
|
147
|
+
type WorkerOptions = {
|
|
148
|
+
workerId?: string;
|
|
149
|
+
pollIntervalMs?: number;
|
|
150
|
+
leaseSweepIntervalMs?: number;
|
|
151
|
+
};
|
|
152
|
+
type JobQueue = {
|
|
153
|
+
enqueue(input: EnqueueInput): Promise<string>;
|
|
154
|
+
startWorker(handler: JobHandler, options?: WorkerOptions): Promise<StopFn>;
|
|
155
|
+
/**
|
|
156
|
+
* Temporarily lends a worker slot to a child while an agent job waits on it.
|
|
157
|
+
* Backends without a hard concurrency cap may omit it.
|
|
158
|
+
*/
|
|
159
|
+
withLentSlot?<T>(fn: () => Promise<T>): Promise<T>;
|
|
160
|
+
publishCancel(runId: string): Promise<void>;
|
|
161
|
+
subscribeCancel(handler: CancelHandler): Promise<StopFn>;
|
|
162
|
+
};
|
|
163
|
+
//#endregion
|
|
164
|
+
//#region src/contract.d.ts
|
|
165
|
+
/**
|
|
166
|
+
* Inlined to keep the contract database-free — structurally identical to
|
|
167
|
+
* `@keystrokehq/database`'s `DatabaseDialect`. Importing it from the database
|
|
168
|
+
* package would re-introduce the dependency `./contract` exists to avoid.
|
|
169
|
+
*/
|
|
170
|
+
type DatabaseDialect = "postgres" | "sqlite";
|
|
171
|
+
type SchedulerScope = "platform" | "project" | "organization";
|
|
172
|
+
type SchedulerPluginContext = {
|
|
173
|
+
scope: SchedulerScope;
|
|
174
|
+
url?: string;
|
|
175
|
+
dialect?: DatabaseDialect;
|
|
176
|
+
projectId?: string;
|
|
177
|
+
organizationId?: string;
|
|
178
|
+
};
|
|
179
|
+
type TriggerScheduleSpec = {
|
|
180
|
+
triggerSlug: string;
|
|
181
|
+
kind: "cron" | "poll";
|
|
182
|
+
schedule: string; /** IANA timezone for schedule wall-clock fields. When omitted, UTC. */
|
|
183
|
+
timezone?: string; /** Project scope for org-wide worker queues. */
|
|
184
|
+
projectId?: string;
|
|
185
|
+
};
|
|
186
|
+
type TriggerScheduleSyncOptions = {
|
|
187
|
+
schedules: TriggerScheduleSpec[];
|
|
188
|
+
scheduleOverrides?: {
|
|
189
|
+
global?: string;
|
|
190
|
+
byTrigger?: Record<string, string>;
|
|
191
|
+
};
|
|
192
|
+
};
|
|
193
|
+
type TriggerSchedulerStartOptions = {
|
|
194
|
+
pollIntervalMs?: number;
|
|
195
|
+
batchSize?: number; /** When `organization`, claims due schedules across all projects in the org schema. */
|
|
196
|
+
scope?: "project" | "organization";
|
|
197
|
+
};
|
|
198
|
+
type TriggerScheduler = {
|
|
199
|
+
sync(options: TriggerScheduleSyncOptions): Promise<void>;
|
|
200
|
+
start(options?: TriggerSchedulerStartOptions): Promise<StopFn>; /** Register or refresh one trigger schedule in the firing backend. */
|
|
201
|
+
upsert?(spec: TriggerScheduleSpec, overrides?: TriggerScheduleSyncOptions["scheduleOverrides"]): Promise<void>;
|
|
202
|
+
remove?(triggerSlug: string, projectId?: string): Promise<void>;
|
|
203
|
+
fireDue?(asOf?: Date): Promise<number>;
|
|
204
|
+
};
|
|
205
|
+
type SchedulerPlugin = {
|
|
206
|
+
name: string;
|
|
207
|
+
createJobQueue(ctx: SchedulerPluginContext): Promise<JobQueue>;
|
|
208
|
+
createTriggerScheduler?(ctx: SchedulerPluginContext, queue: JobQueue): Promise<TriggerScheduler>;
|
|
209
|
+
};
|
|
210
|
+
//#endregion
|
|
211
|
+
//#region ../../packages/shared/dist/index.d.mts
|
|
212
|
+
//#endregion
|
|
213
|
+
//#region src/types/org-rate-limit.d.ts
|
|
214
|
+
/** Scope for per-org API rate limits (separate token buckets). */
|
|
215
|
+
type OrgRateLimitScope = "api" | "mcp";
|
|
216
|
+
type OrgRateLimitResult = {
|
|
217
|
+
allowed: true;
|
|
218
|
+
} | {
|
|
219
|
+
allowed: false;
|
|
220
|
+
retryAfterSeconds: number;
|
|
221
|
+
};
|
|
222
|
+
/**
|
|
223
|
+
* Cloud-only rate limit check injected into the HTTP layer. Unset (standalone) =
|
|
224
|
+
* no rate limiting.
|
|
225
|
+
*/
|
|
226
|
+
type OrgRateLimit = (scope: OrgRateLimitScope, organizationId: string) => Promise<OrgRateLimitResult>; //#endregion
|
|
227
|
+
//#region src/types/credential-runtime.d.ts
|
|
228
|
+
//#endregion
|
|
229
|
+
//#region ../../packages/storage/dist/index.d.mts
|
|
230
|
+
//#endregion
|
|
231
|
+
//#region src/provision/plugin.d.ts
|
|
232
|
+
type OrganizationStorageInput = {
|
|
233
|
+
organizationId: string;
|
|
234
|
+
name: string;
|
|
235
|
+
};
|
|
236
|
+
type OrganizationStorageResult = {
|
|
237
|
+
bucket: string;
|
|
238
|
+
endpoint: string;
|
|
239
|
+
accessKeyId: string;
|
|
240
|
+
secretAccessKey: string;
|
|
241
|
+
region?: string;
|
|
242
|
+
forcePathStyle?: boolean;
|
|
243
|
+
};
|
|
244
|
+
type StoragePlugin = {
|
|
245
|
+
provisionOrganization(input: OrganizationStorageInput): Promise<OrganizationStorageResult>;
|
|
246
|
+
deprovisionOrganization(result: OrganizationStorageResult): Promise<void>;
|
|
247
|
+
}; //#endregion
|
|
248
|
+
//#region src/provision/names.d.ts
|
|
249
|
+
/** Deterministic bucket segment; keeps short test ids readable, hashes UUID-length ids. */
|
|
250
|
+
//#endregion
|
|
251
|
+
//#region src/llm-proxy-plugin.d.ts
|
|
252
|
+
type LlmProxyHandlerContext = {
|
|
253
|
+
organizationId: string;
|
|
254
|
+
projectId: string;
|
|
255
|
+
pathSuffix: string;
|
|
256
|
+
};
|
|
257
|
+
type LlmProxyWorkerEnvContext = {
|
|
258
|
+
platformUrl: string; /** Per-org worker token for the org being launched. */
|
|
259
|
+
workerToken: string;
|
|
260
|
+
};
|
|
261
|
+
/** Optional platform plugin for managed LLM gateway proxying (e.g. Vercel AI Gateway on cloud). */
|
|
262
|
+
type LlmProxyPlugin = {
|
|
263
|
+
name: string; /** Runs inside org/project DB scope behind worker-token auth. */
|
|
264
|
+
handler(c: Context, ctx: LlmProxyHandlerContext): Promise<Response>; /** Extra env injected into worker project servers. */
|
|
265
|
+
workerEnv(ctx: LlmProxyWorkerEnvContext): Record<string, string>;
|
|
266
|
+
};
|
|
267
|
+
//#endregion
|
|
268
|
+
//#region src/config.d.ts
|
|
269
|
+
type PlatformWorkerEnvContext = {
|
|
270
|
+
platformUrl: string; /** Per-org worker token for the org being launched. */
|
|
271
|
+
workerToken: string;
|
|
272
|
+
};
|
|
273
|
+
type PlatformConfigInput = {
|
|
274
|
+
/** Defaults to Docker via {@link defaultHostingPlugin}. */hosting?: HostingPlugin;
|
|
275
|
+
/**
|
|
276
|
+
* Per-org object storage. Defaults to {@link minioStoragePlugin} (S3 API against local MinIO).
|
|
277
|
+
* MinIO is the dev default, not AWS S3 — same `@aws-sdk/client-s3` client works for any S3-compatible
|
|
278
|
+
* backend; hosted platform swaps in a cloud plugin (e.g. Tigris).
|
|
279
|
+
*/
|
|
280
|
+
storage?: StoragePlugin;
|
|
281
|
+
/**
|
|
282
|
+
* Managed LLM gateway proxy. Omit for BYO provider keys or a direct gateway URL on the platform env.
|
|
283
|
+
*/
|
|
284
|
+
llmProxy?: LlmProxyPlugin; /** Managed universal MCP plugin. Omit when self-hosting without a provider. */
|
|
285
|
+
mcp?: McpProviderPlugin; /** Queue backend for platform runtime routes. Defaults to pg-boss (Postgres) or DB polling (SQLite). */
|
|
286
|
+
scheduler?: SchedulerPlugin; /** Extra env merged into project worker containers at deploy (cloud hosting plugins). */
|
|
287
|
+
workerEnv?: (ctx: PlatformWorkerEnvContext) => Record<string, string>;
|
|
288
|
+
/**
|
|
289
|
+
* Handler for `maintenance` jobs on the platform queue (cloud injects the
|
|
290
|
+
* billing daily pass). Unset (standalone default) means such jobs — which
|
|
291
|
+
* only cloud schedules — are ignored.
|
|
292
|
+
*/
|
|
293
|
+
maintenanceHandler?: (payload: JobPayload) => Promise<void>;
|
|
294
|
+
/**
|
|
295
|
+
* Pre-enqueue credit check for interactive agent prompts / workflow runs
|
|
296
|
+
* (cloud injects the billing wallet check). Unset = never blocked.
|
|
297
|
+
*/
|
|
298
|
+
promptCreditGate?: (organizationId: string) => Promise<{
|
|
299
|
+
allow: true;
|
|
300
|
+
} | {
|
|
301
|
+
allow: false;
|
|
302
|
+
reason: string;
|
|
303
|
+
}>;
|
|
304
|
+
/**
|
|
305
|
+
* Max-projects check for `POST /projects` (cloud injects plan quota).
|
|
306
|
+
* Unset = unlimited (standalone / OSS).
|
|
307
|
+
*/
|
|
308
|
+
projectQuotaGate?: (organizationId: string) => Promise<{
|
|
309
|
+
allow: true;
|
|
310
|
+
} | {
|
|
311
|
+
allow: false;
|
|
312
|
+
reason: string;
|
|
313
|
+
}>; /** Per-org API/MCP rate limits (cloud injects Redis token bucket). Unset = unlimited. */
|
|
314
|
+
orgRateLimit?: OrgRateLimit;
|
|
315
|
+
};
|
|
316
|
+
type PlatformConfig = PlatformConfigInput & {
|
|
317
|
+
hosting: HostingPlugin;
|
|
318
|
+
storage: StoragePlugin;
|
|
319
|
+
scheduler: SchedulerPlugin;
|
|
320
|
+
};
|
|
321
|
+
declare function definePlatformConfig(config?: PlatformConfigInput): PlatformConfig;
|
|
322
|
+
//#endregion
|
|
323
|
+
export { definePlatformConfig as a, LlmProxyWorkerEnvContext as c, StoragePlugin as d, HostingOptions as f, OrganizationHostingResult as h, PlatformWorkerEnvContext as i, OrganizationStorageInput as l, OrganizationHostingInput as m, PlatformConfig as n, LlmProxyHandlerContext as o, HostingPlugin as p, PlatformConfigInput as r, LlmProxyPlugin as s, McpProviderPlugin$1 as t, OrganizationStorageResult as u };
|
|
324
|
+
//# sourceMappingURL=config-BO2sTtYA.d.mts.map
|
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
import { Context } from "hono";
|
|
2
|
+
import { McpProviderPlugin, McpProviderPlugin as McpProviderPlugin$1 } from "@keystrokehq/http";
|
|
3
|
+
|
|
4
|
+
//#region ../../packages/hosting/dist/index.d.mts
|
|
5
|
+
//#endregion
|
|
6
|
+
//#region src/runtime.d.ts
|
|
7
|
+
type ProjectRuntimeDatabase = {
|
|
8
|
+
host: string;
|
|
9
|
+
port: number;
|
|
10
|
+
database: string;
|
|
11
|
+
user: string;
|
|
12
|
+
password: string;
|
|
13
|
+
searchPath: string;
|
|
14
|
+
organizationId: string; /** @deprecated Per-project workers only — org workers omit this. */
|
|
15
|
+
projectId?: string;
|
|
16
|
+
};
|
|
17
|
+
type OrgProjectDeploy = {
|
|
18
|
+
projectId: string;
|
|
19
|
+
name: string;
|
|
20
|
+
artifactId: string;
|
|
21
|
+
artifactStorageKey: string;
|
|
22
|
+
};
|
|
23
|
+
type ProjectRuntimeHosting = {
|
|
24
|
+
appName: string;
|
|
25
|
+
};
|
|
26
|
+
type ProjectRuntimeInput = {
|
|
27
|
+
organizationId: string;
|
|
28
|
+
projects: OrgProjectDeploy[];
|
|
29
|
+
database: ProjectRuntimeDatabase;
|
|
30
|
+
hosting?: ProjectRuntimeHosting; /** Extra env merged into the project server launch spec (e.g. from an llmProxy plugin). */
|
|
31
|
+
env?: Record<string, string>; /** Previous runtime to retire after a successful cutover. */
|
|
32
|
+
previousRuntimeId?: string | null;
|
|
33
|
+
};
|
|
34
|
+
/** Builds base64 `KEYSTROKE_ORG_ARTIFACTS` payload for org worker containers. */
|
|
35
|
+
type ProjectRuntimeDestroyInput = {
|
|
36
|
+
runtimeId: string;
|
|
37
|
+
hosting?: ProjectRuntimeHosting;
|
|
38
|
+
};
|
|
39
|
+
type ProjectRuntimeReconcileInput = {
|
|
40
|
+
organizationId: string; /** The runtime to keep — every other runtime belonging to this org should be destroyed. */
|
|
41
|
+
keepRuntimeId: string;
|
|
42
|
+
hosting?: ProjectRuntimeHosting;
|
|
43
|
+
};
|
|
44
|
+
type ProjectRuntimeResult = {
|
|
45
|
+
runtimeId: string;
|
|
46
|
+
baseUrl: string;
|
|
47
|
+
};
|
|
48
|
+
type ProjectRuntime = {
|
|
49
|
+
start(input: ProjectRuntimeInput): Promise<ProjectRuntimeResult>;
|
|
50
|
+
destroy?(input: ProjectRuntimeDestroyInput): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Sweep away every runtime for this org except `keepRuntimeId`, retrying
|
|
53
|
+
* transient failures instead of giving up after one attempt. This catches
|
|
54
|
+
* orphans that a single {@link destroy} call missed (e.g. a previous deploy's
|
|
55
|
+
* destroy failed silently), not just the one runtime recorded as "previous."
|
|
56
|
+
*/
|
|
57
|
+
reconcile?(input: ProjectRuntimeReconcileInput): Promise<void>;
|
|
58
|
+
};
|
|
59
|
+
type ProjectPingTarget = {
|
|
60
|
+
baseUrl: string | null;
|
|
61
|
+
runtimeId: string | null;
|
|
62
|
+
}; //#endregion
|
|
63
|
+
//#region src/worker-runtime-config.d.ts
|
|
64
|
+
/** Resolved platform ↔ project-server worker auth contract. */
|
|
65
|
+
type WorkerRuntimeConfig = {
|
|
66
|
+
/** Platform API base URL reachable from the project-server runtime. */platformUrl: string; /** Bearer token for platform `/internal` routes. */
|
|
67
|
+
workerToken: string;
|
|
68
|
+
};
|
|
69
|
+
//#endregion
|
|
70
|
+
//#region src/plugin.d.ts
|
|
71
|
+
type HostingOptions = {
|
|
72
|
+
image?: string;
|
|
73
|
+
env?: NodeJS.ProcessEnv;
|
|
74
|
+
fetchImpl?: typeof fetch;
|
|
75
|
+
healthTimeoutMs?: number;
|
|
76
|
+
};
|
|
77
|
+
type OrganizationHostingInput = {
|
|
78
|
+
organizationId: string;
|
|
79
|
+
name: string;
|
|
80
|
+
};
|
|
81
|
+
type OrganizationHostingResult = {
|
|
82
|
+
appName: string;
|
|
83
|
+
};
|
|
84
|
+
type HostingPlugin = {
|
|
85
|
+
name: string; /** Validated at plugin creation — shared by platform internal routes and project-server containers. */
|
|
86
|
+
workerRuntime: WorkerRuntimeConfig;
|
|
87
|
+
createRuntime(): ProjectRuntime;
|
|
88
|
+
provisionOrganization?(input: OrganizationHostingInput): Promise<OrganizationHostingResult>;
|
|
89
|
+
deprovisionOrganization?(result: OrganizationHostingResult): Promise<void>;
|
|
90
|
+
canPingTarget?(target: ProjectPingTarget): target is {
|
|
91
|
+
baseUrl: string;
|
|
92
|
+
runtimeId: string | null;
|
|
93
|
+
};
|
|
94
|
+
pingRequestHeaders?(runtimeId: string | null): Record<string, string>;
|
|
95
|
+
}; //#endregion
|
|
96
|
+
//#region src/docker/create-docker-runtime.d.ts
|
|
97
|
+
//#endregion
|
|
98
|
+
//#region ../../packages/scheduler/dist/contract-GpxHe4g6.d.mts
|
|
99
|
+
//#region src/types.d.ts
|
|
100
|
+
type JobKind = "workflow" | "agent" | "trigger" | "trigger-overview" | "workflow-canvas-annotations" | "workflow-overview" | "runtime" | "maintenance";
|
|
101
|
+
type JobTrigger = "api" | "cron" | "webhook" | "poll" | "retry" | "prompt";
|
|
102
|
+
/**
|
|
103
|
+
* Identifies a run that dispatched this job as a child. The parent metadata
|
|
104
|
+
* survives the queue boundary so the child can resume its parent at a terminal
|
|
105
|
+
* outcome without treating the child as a separately-billable dispatch.
|
|
106
|
+
*/
|
|
107
|
+
type JobParent = {
|
|
108
|
+
kind: "workflow" | "agent";
|
|
109
|
+
runId: string;
|
|
110
|
+
targetId: string;
|
|
111
|
+
correlationId?: string;
|
|
112
|
+
};
|
|
113
|
+
type JobPayload = {
|
|
114
|
+
kind: JobKind;
|
|
115
|
+
targetId: string;
|
|
116
|
+
runId: string;
|
|
117
|
+
trigger: JobTrigger;
|
|
118
|
+
payload: unknown;
|
|
119
|
+
attempt: number;
|
|
120
|
+
maxAttempts: number; /** True when this delivery is the final retry attempt. */
|
|
121
|
+
exhaustedRetries?: boolean;
|
|
122
|
+
scheduledAt: Date;
|
|
123
|
+
jobId: string; /** Project scope for org-wide worker queues. */
|
|
124
|
+
projectId?: string; /** Parent run that dispatched this child job, when applicable. */
|
|
125
|
+
parent?: JobParent; /** Optional W3C trace context carrier (sibling of user payload). */
|
|
126
|
+
traceContext?: Record<string, string>;
|
|
127
|
+
};
|
|
128
|
+
type EnqueueInput = {
|
|
129
|
+
kind: JobKind;
|
|
130
|
+
targetId: string;
|
|
131
|
+
runId: string;
|
|
132
|
+
trigger: JobTrigger;
|
|
133
|
+
payload?: unknown;
|
|
134
|
+
scheduledAt?: Date;
|
|
135
|
+
attempt?: number;
|
|
136
|
+
maxAttempts?: number; /** Dedupe key — pg-boss singletonKey / BullMQ jobId. */
|
|
137
|
+
dedupeKey?: string; /** Project scope for org-wide worker queues. */
|
|
138
|
+
projectId?: string; /** Parent run that dispatched this child job, when applicable. */
|
|
139
|
+
parent?: JobParent; /** Optional W3C trace context carrier (sibling of user payload). */
|
|
140
|
+
traceContext?: Record<string, string>;
|
|
141
|
+
};
|
|
142
|
+
type JobHandler = (job: JobPayload) => Promise<void>;
|
|
143
|
+
type CancelHandler = (runId: string) => void | Promise<void>;
|
|
144
|
+
type StopFn = () => Promise<void> | void;
|
|
145
|
+
type WorkerOptions = {
|
|
146
|
+
workerId?: string;
|
|
147
|
+
pollIntervalMs?: number;
|
|
148
|
+
leaseSweepIntervalMs?: number;
|
|
149
|
+
};
|
|
150
|
+
type JobQueue = {
|
|
151
|
+
enqueue(input: EnqueueInput): Promise<string>;
|
|
152
|
+
startWorker(handler: JobHandler, options?: WorkerOptions): Promise<StopFn>;
|
|
153
|
+
/**
|
|
154
|
+
* Temporarily lends a worker slot to a child while an agent job waits on it.
|
|
155
|
+
* Backends without a hard concurrency cap may omit it.
|
|
156
|
+
*/
|
|
157
|
+
withLentSlot?<T>(fn: () => Promise<T>): Promise<T>;
|
|
158
|
+
publishCancel(runId: string): Promise<void>;
|
|
159
|
+
subscribeCancel(handler: CancelHandler): Promise<StopFn>;
|
|
160
|
+
};
|
|
161
|
+
//#endregion
|
|
162
|
+
//#region src/contract.d.ts
|
|
163
|
+
/**
|
|
164
|
+
* Inlined to keep the contract database-free — structurally identical to
|
|
165
|
+
* `@keystrokehq/database`'s `DatabaseDialect`. Importing it from the database
|
|
166
|
+
* package would re-introduce the dependency `./contract` exists to avoid.
|
|
167
|
+
*/
|
|
168
|
+
type DatabaseDialect = "postgres" | "sqlite";
|
|
169
|
+
type SchedulerScope = "platform" | "project" | "organization";
|
|
170
|
+
type SchedulerPluginContext = {
|
|
171
|
+
scope: SchedulerScope;
|
|
172
|
+
url?: string;
|
|
173
|
+
dialect?: DatabaseDialect;
|
|
174
|
+
projectId?: string;
|
|
175
|
+
organizationId?: string;
|
|
176
|
+
};
|
|
177
|
+
type TriggerScheduleSpec = {
|
|
178
|
+
triggerSlug: string;
|
|
179
|
+
kind: "cron" | "poll";
|
|
180
|
+
schedule: string; /** IANA timezone for schedule wall-clock fields. When omitted, UTC. */
|
|
181
|
+
timezone?: string; /** Project scope for org-wide worker queues. */
|
|
182
|
+
projectId?: string;
|
|
183
|
+
};
|
|
184
|
+
type TriggerScheduleSyncOptions = {
|
|
185
|
+
schedules: TriggerScheduleSpec[];
|
|
186
|
+
scheduleOverrides?: {
|
|
187
|
+
global?: string;
|
|
188
|
+
byTrigger?: Record<string, string>;
|
|
189
|
+
};
|
|
190
|
+
};
|
|
191
|
+
type TriggerSchedulerStartOptions = {
|
|
192
|
+
pollIntervalMs?: number;
|
|
193
|
+
batchSize?: number; /** When `organization`, claims due schedules across all projects in the org schema. */
|
|
194
|
+
scope?: "project" | "organization";
|
|
195
|
+
};
|
|
196
|
+
type TriggerScheduler = {
|
|
197
|
+
sync(options: TriggerScheduleSyncOptions): Promise<void>;
|
|
198
|
+
start(options?: TriggerSchedulerStartOptions): Promise<StopFn>; /** Register or refresh one trigger schedule in the firing backend. */
|
|
199
|
+
upsert?(spec: TriggerScheduleSpec, overrides?: TriggerScheduleSyncOptions["scheduleOverrides"]): Promise<void>;
|
|
200
|
+
remove?(triggerSlug: string, projectId?: string): Promise<void>;
|
|
201
|
+
fireDue?(asOf?: Date): Promise<number>;
|
|
202
|
+
};
|
|
203
|
+
type SchedulerPlugin = {
|
|
204
|
+
name: string;
|
|
205
|
+
createJobQueue(ctx: SchedulerPluginContext): Promise<JobQueue>;
|
|
206
|
+
createTriggerScheduler?(ctx: SchedulerPluginContext, queue: JobQueue): Promise<TriggerScheduler>;
|
|
207
|
+
};
|
|
208
|
+
//#endregion
|
|
209
|
+
//#region ../../packages/shared/dist/index.d.mts
|
|
210
|
+
//#endregion
|
|
211
|
+
//#region src/types/org-rate-limit.d.ts
|
|
212
|
+
/** Scope for per-org API rate limits (separate token buckets). */
|
|
213
|
+
type OrgRateLimitScope = "api" | "mcp";
|
|
214
|
+
type OrgRateLimitResult = {
|
|
215
|
+
allowed: true;
|
|
216
|
+
} | {
|
|
217
|
+
allowed: false;
|
|
218
|
+
retryAfterSeconds: number;
|
|
219
|
+
};
|
|
220
|
+
/**
|
|
221
|
+
* Cloud-only rate limit check injected into the HTTP layer. Unset (standalone) =
|
|
222
|
+
* no rate limiting.
|
|
223
|
+
*/
|
|
224
|
+
type OrgRateLimit = (scope: OrgRateLimitScope, organizationId: string) => Promise<OrgRateLimitResult>; //#endregion
|
|
225
|
+
//#region src/types/credential-runtime.d.ts
|
|
226
|
+
//#endregion
|
|
227
|
+
//#region ../../packages/storage/dist/index.d.mts
|
|
228
|
+
//#endregion
|
|
229
|
+
//#region src/provision/plugin.d.ts
|
|
230
|
+
type OrganizationStorageInput = {
|
|
231
|
+
organizationId: string;
|
|
232
|
+
name: string;
|
|
233
|
+
};
|
|
234
|
+
type OrganizationStorageResult = {
|
|
235
|
+
bucket: string;
|
|
236
|
+
endpoint: string;
|
|
237
|
+
accessKeyId: string;
|
|
238
|
+
secretAccessKey: string;
|
|
239
|
+
region?: string;
|
|
240
|
+
forcePathStyle?: boolean;
|
|
241
|
+
};
|
|
242
|
+
type StoragePlugin = {
|
|
243
|
+
provisionOrganization(input: OrganizationStorageInput): Promise<OrganizationStorageResult>;
|
|
244
|
+
deprovisionOrganization(result: OrganizationStorageResult): Promise<void>;
|
|
245
|
+
}; //#endregion
|
|
246
|
+
//#region src/provision/names.d.ts
|
|
247
|
+
/** Deterministic bucket segment; keeps short test ids readable, hashes UUID-length ids. */
|
|
248
|
+
//#endregion
|
|
249
|
+
//#region src/llm-proxy-plugin.d.ts
|
|
250
|
+
type LlmProxyHandlerContext = {
|
|
251
|
+
organizationId: string;
|
|
252
|
+
projectId: string;
|
|
253
|
+
pathSuffix: string;
|
|
254
|
+
};
|
|
255
|
+
type LlmProxyWorkerEnvContext = {
|
|
256
|
+
platformUrl: string; /** Per-org worker token for the org being launched. */
|
|
257
|
+
workerToken: string;
|
|
258
|
+
};
|
|
259
|
+
/** Optional platform plugin for managed LLM gateway proxying (e.g. Vercel AI Gateway on cloud). */
|
|
260
|
+
type LlmProxyPlugin = {
|
|
261
|
+
name: string; /** Runs inside org/project DB scope behind worker-token auth. */
|
|
262
|
+
handler(c: Context, ctx: LlmProxyHandlerContext): Promise<Response>; /** Extra env injected into worker project servers. */
|
|
263
|
+
workerEnv(ctx: LlmProxyWorkerEnvContext): Record<string, string>;
|
|
264
|
+
};
|
|
265
|
+
//#endregion
|
|
266
|
+
//#region src/config.d.ts
|
|
267
|
+
type PlatformWorkerEnvContext = {
|
|
268
|
+
platformUrl: string; /** Per-org worker token for the org being launched. */
|
|
269
|
+
workerToken: string;
|
|
270
|
+
};
|
|
271
|
+
type PlatformConfigInput = {
|
|
272
|
+
/** Defaults to Docker via {@link defaultHostingPlugin}. */hosting?: HostingPlugin;
|
|
273
|
+
/**
|
|
274
|
+
* Per-org object storage. Defaults to {@link minioStoragePlugin} (S3 API against local MinIO).
|
|
275
|
+
* MinIO is the dev default, not AWS S3 — same `@aws-sdk/client-s3` client works for any S3-compatible
|
|
276
|
+
* backend; hosted platform swaps in a cloud plugin (e.g. Tigris).
|
|
277
|
+
*/
|
|
278
|
+
storage?: StoragePlugin;
|
|
279
|
+
/**
|
|
280
|
+
* Managed LLM gateway proxy. Omit for BYO provider keys or a direct gateway URL on the platform env.
|
|
281
|
+
*/
|
|
282
|
+
llmProxy?: LlmProxyPlugin; /** Managed universal MCP plugin. Omit when self-hosting without a provider. */
|
|
283
|
+
mcp?: McpProviderPlugin; /** Queue backend for platform runtime routes. Defaults to pg-boss (Postgres) or DB polling (SQLite). */
|
|
284
|
+
scheduler?: SchedulerPlugin; /** Extra env merged into project worker containers at deploy (cloud hosting plugins). */
|
|
285
|
+
workerEnv?: (ctx: PlatformWorkerEnvContext) => Record<string, string>;
|
|
286
|
+
/**
|
|
287
|
+
* Handler for `maintenance` jobs on the platform queue (cloud injects the
|
|
288
|
+
* billing daily pass). Unset (standalone default) means such jobs — which
|
|
289
|
+
* only cloud schedules — are ignored.
|
|
290
|
+
*/
|
|
291
|
+
maintenanceHandler?: (payload: JobPayload) => Promise<void>;
|
|
292
|
+
/**
|
|
293
|
+
* Pre-enqueue credit check for interactive agent prompts / workflow runs
|
|
294
|
+
* (cloud injects the billing wallet check). Unset = never blocked.
|
|
295
|
+
*/
|
|
296
|
+
promptCreditGate?: (organizationId: string) => Promise<{
|
|
297
|
+
allow: true;
|
|
298
|
+
} | {
|
|
299
|
+
allow: false;
|
|
300
|
+
reason: string;
|
|
301
|
+
}>;
|
|
302
|
+
/**
|
|
303
|
+
* Max-projects check for `POST /projects` (cloud injects plan quota).
|
|
304
|
+
* Unset = unlimited (standalone / OSS).
|
|
305
|
+
*/
|
|
306
|
+
projectQuotaGate?: (organizationId: string) => Promise<{
|
|
307
|
+
allow: true;
|
|
308
|
+
} | {
|
|
309
|
+
allow: false;
|
|
310
|
+
reason: string;
|
|
311
|
+
}>; /** Per-org API/MCP rate limits (cloud injects Redis token bucket). Unset = unlimited. */
|
|
312
|
+
orgRateLimit?: OrgRateLimit;
|
|
313
|
+
};
|
|
314
|
+
type PlatformConfig = PlatformConfigInput & {
|
|
315
|
+
hosting: HostingPlugin;
|
|
316
|
+
storage: StoragePlugin;
|
|
317
|
+
scheduler: SchedulerPlugin;
|
|
318
|
+
};
|
|
319
|
+
declare function definePlatformConfig(config?: PlatformConfigInput): PlatformConfig;
|
|
320
|
+
//#endregion
|
|
321
|
+
export { definePlatformConfig as a, LlmProxyWorkerEnvContext as c, StoragePlugin as d, HostingOptions as f, OrganizationHostingResult as h, PlatformWorkerEnvContext as i, OrganizationStorageInput as l, OrganizationHostingInput as m, PlatformConfig as n, LlmProxyHandlerContext as o, HostingPlugin as p, PlatformConfigInput as r, LlmProxyPlugin as s, McpProviderPlugin$1 as t, OrganizationStorageResult as u };
|
|
322
|
+
//# sourceMappingURL=config-DahIeWeM.d.cts.map
|
package/dist/config.cjs
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_dist = require("./dist-QIg3f1DP.cjs");
|
|
3
|
+
const require_dist$1 = require("./dist-DCAFVLts.cjs");
|
|
4
|
+
//#region src/config.ts
|
|
5
|
+
function definePlatformConfig(config = {}) {
|
|
6
|
+
return {
|
|
7
|
+
...config,
|
|
8
|
+
hosting: config.hosting ?? require_dist.defaultHostingPlugin(),
|
|
9
|
+
storage: config.storage ?? require_dist$1.minioStoragePlugin(),
|
|
10
|
+
scheduler: config.scheduler ?? require_dist$1.defaultSchedulerPlugin()
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
//#endregion
|
|
14
|
+
exports.definePlatformConfig = definePlatformConfig;
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=config.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.cjs","names":["defaultHostingPlugin","minioStoragePlugin","defaultSchedulerPlugin"],"sources":["../src/config.ts"],"sourcesContent":["import { defaultHostingPlugin, type HostingPlugin } from \"@keystrokehq/hosting\";\nimport {\n defaultSchedulerPlugin,\n type JobPayload,\n type SchedulerPlugin,\n} from \"@keystrokehq/scheduler\";\nimport { minioStoragePlugin, type StoragePlugin } from \"@keystrokehq/storage\";\n\nimport type { OrgRateLimit } from \"@keystrokehq/shared\";\n\nimport type { LlmProxyPlugin } from \"./llm-proxy-plugin\";\nimport type { McpProviderPlugin } from \"@keystrokehq/http\";\n\nexport type {\n HostingOptions,\n HostingPlugin,\n OrganizationHostingInput,\n OrganizationHostingResult,\n} from \"@keystrokehq/hosting\";\n\nexport type {\n OrganizationStorageInput,\n OrganizationStorageResult,\n StoragePlugin,\n} from \"@keystrokehq/storage\";\n\nexport type {\n LlmProxyHandlerContext,\n LlmProxyPlugin,\n LlmProxyWorkerEnvContext,\n} from \"./llm-proxy-plugin\";\n\nexport type { McpProviderPlugin } from \"@keystrokehq/http\";\n\nexport type PlatformWorkerEnvContext = {\n platformUrl: string;\n /** Per-org worker token for the org being launched. */\n workerToken: string;\n};\n\nexport type PlatformConfigInput = {\n /** Defaults to Docker via {@link defaultHostingPlugin}. */\n hosting?: HostingPlugin;\n /**\n * Per-org object storage. Defaults to {@link minioStoragePlugin} (S3 API against local MinIO).\n * MinIO is the dev default, not AWS S3 — same `@aws-sdk/client-s3` client works for any S3-compatible\n * backend; hosted platform swaps in a cloud plugin (e.g. Tigris).\n */\n storage?: StoragePlugin;\n /**\n * Managed LLM gateway proxy. Omit for BYO provider keys or a direct gateway URL on the platform env.\n */\n llmProxy?: LlmProxyPlugin;\n /** Managed universal MCP plugin. Omit when self-hosting without a provider. */\n mcp?: McpProviderPlugin;\n /** Queue backend for platform runtime routes. Defaults to pg-boss (Postgres) or DB polling (SQLite). */\n scheduler?: SchedulerPlugin;\n /** Extra env merged into project worker containers at deploy (cloud hosting plugins). */\n workerEnv?: (ctx: PlatformWorkerEnvContext) => Record<string, string>;\n /**\n * Handler for `maintenance` jobs on the platform queue (cloud injects the\n * billing daily pass). Unset (standalone default) means such jobs — which\n * only cloud schedules — are ignored.\n */\n maintenanceHandler?: (payload: JobPayload) => Promise<void>;\n /**\n * Pre-enqueue credit check for interactive agent prompts / workflow runs\n * (cloud injects the billing wallet check). Unset = never blocked.\n */\n promptCreditGate?: (\n organizationId: string,\n ) => Promise<{ allow: true } | { allow: false; reason: string }>;\n /**\n * Max-projects check for `POST /projects` (cloud injects plan quota).\n * Unset = unlimited (standalone / OSS).\n */\n projectQuotaGate?: (\n organizationId: string,\n ) => Promise<{ allow: true } | { allow: false; reason: string }>;\n /** Per-org API/MCP rate limits (cloud injects Redis token bucket). Unset = unlimited. */\n orgRateLimit?: OrgRateLimit;\n};\n\nexport type PlatformConfig = PlatformConfigInput & {\n hosting: HostingPlugin;\n storage: StoragePlugin;\n scheduler: SchedulerPlugin;\n};\n\nexport function definePlatformConfig(config: PlatformConfigInput = {}): PlatformConfig {\n return {\n ...config,\n hosting: config.hosting ?? defaultHostingPlugin(),\n storage: config.storage ?? minioStoragePlugin(),\n scheduler: config.scheduler ?? defaultSchedulerPlugin(),\n };\n}\n"],"mappings":";;;;AAyFA,SAAgB,qBAAqB,SAA8B,CAAC,GAAmB;CACrF,OAAO;EACL,GAAG;EACH,SAAS,OAAO,WAAWA,aAAAA,qBAAqB;EAChD,SAAS,OAAO,WAAWC,eAAAA,mBAAmB;EAC9C,WAAW,OAAO,aAAaC,eAAAA,uBAAuB;CACxD;AACF"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { a as definePlatformConfig, c as LlmProxyWorkerEnvContext, d as StoragePlugin, f as HostingOptions, h as OrganizationHostingResult, i as PlatformWorkerEnvContext, l as OrganizationStorageInput, m as OrganizationHostingInput, n as PlatformConfig, o as LlmProxyHandlerContext, p as HostingPlugin, r as PlatformConfigInput, s as LlmProxyPlugin, t as McpProviderPlugin, u as OrganizationStorageResult } from "./config-DahIeWeM.cjs";
|
|
2
|
+
export { type HostingOptions, type HostingPlugin, type LlmProxyHandlerContext, type LlmProxyPlugin, type LlmProxyWorkerEnvContext, type McpProviderPlugin, type OrganizationHostingInput, type OrganizationHostingResult, type OrganizationStorageInput, type OrganizationStorageResult, PlatformConfig, PlatformConfigInput, PlatformWorkerEnvContext, type StoragePlugin, definePlatformConfig };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { a as definePlatformConfig, c as LlmProxyWorkerEnvContext, d as StoragePlugin, f as HostingOptions, h as OrganizationHostingResult, i as PlatformWorkerEnvContext, l as OrganizationStorageInput, m as OrganizationHostingInput, n as PlatformConfig, o as LlmProxyHandlerContext, p as HostingPlugin, r as PlatformConfigInput, s as LlmProxyPlugin, t as McpProviderPlugin, u as OrganizationStorageResult } from "./config-BO2sTtYA.mjs";
|
|
2
|
+
export { type HostingOptions, type HostingPlugin, type LlmProxyHandlerContext, type LlmProxyPlugin, type LlmProxyWorkerEnvContext, type McpProviderPlugin, type OrganizationHostingInput, type OrganizationHostingResult, type OrganizationStorageInput, type OrganizationStorageResult, PlatformConfig, PlatformConfigInput, PlatformWorkerEnvContext, type StoragePlugin, definePlatformConfig };
|