@keystrokehq/platform 0.1.147 → 0.1.148
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{awk2-LA3USKJP-Bdfmgc0u.mjs → awk2-LA3USKJP-CWLn5lpw.mjs} +2 -2
- package/dist/{awk2-LA3USKJP-Bdfmgc0u.mjs.map → awk2-LA3USKJP-CWLn5lpw.mjs.map} +1 -1
- package/dist/{awk2-LA3USKJP-BApncyBq.cjs → awk2-LA3USKJP-DURU8Wkp.cjs} +2 -2
- package/dist/{awk2-LA3USKJP-BApncyBq.cjs.map → awk2-LA3USKJP-DURU8Wkp.cjs.map} +1 -1
- package/dist/{base64-C2AIWVNC-cIsrnNwV.mjs → base64-C2AIWVNC-BqSh0KzV.mjs} +2 -2
- package/dist/{base64-C2AIWVNC-cIsrnNwV.mjs.map → base64-C2AIWVNC-BqSh0KzV.mjs.map} +1 -1
- package/dist/{base64-C2AIWVNC-zZDxDOtz.cjs → base64-C2AIWVNC-CM9MEO7s.cjs} +2 -2
- package/dist/{base64-C2AIWVNC-zZDxDOtz.cjs.map → base64-C2AIWVNC-CM9MEO7s.cjs.map} +1 -1
- package/dist/{bash-YZ33HQZQ-BEMy98_y.cjs → bash-YZ33HQZQ-CBrxEwyS.cjs} +2 -2
- package/dist/{bash-YZ33HQZQ-BEMy98_y.cjs.map → bash-YZ33HQZQ-CBrxEwyS.cjs.map} +1 -1
- package/dist/{bash-YZ33HQZQ-OQOsjx4z.mjs → bash-YZ33HQZQ-Cm7B9Dwy.mjs} +2 -2
- package/dist/{bash-YZ33HQZQ-OQOsjx4z.mjs.map → bash-YZ33HQZQ-Cm7B9Dwy.mjs.map} +1 -1
- package/dist/{cat-TSFMZVYS-D8z73uJc.cjs → cat-TSFMZVYS-CNhzzrtQ.cjs} +3 -3
- package/dist/{cat-TSFMZVYS-D8z73uJc.cjs.map → cat-TSFMZVYS-CNhzzrtQ.cjs.map} +1 -1
- package/dist/{cat-TSFMZVYS-CCCr_tPX.mjs → cat-TSFMZVYS-D7Q7EGv-.mjs} +3 -3
- package/dist/{cat-TSFMZVYS-CCCr_tPX.mjs.map → cat-TSFMZVYS-D7Q7EGv-.mjs.map} +1 -1
- package/dist/{chunk-5H5SCKJM-8CScWHi7.cjs → chunk-5H5SCKJM-BcPceEgO.cjs} +2 -2
- package/dist/{chunk-5H5SCKJM-8CScWHi7.cjs.map → chunk-5H5SCKJM-BcPceEgO.cjs.map} +1 -1
- package/dist/{chunk-5H5SCKJM-BVh-p5dF.mjs → chunk-5H5SCKJM-D46l1Sbb.mjs} +2 -2
- package/dist/{chunk-5H5SCKJM-BVh-p5dF.mjs.map → chunk-5H5SCKJM-D46l1Sbb.mjs.map} +1 -1
- package/dist/{chunk-AQ6FYS2X-DkCJ32tZ.cjs → chunk-AQ6FYS2X-Bew6O2uZ.cjs} +2 -2
- package/dist/{chunk-AQ6FYS2X-DkCJ32tZ.cjs.map → chunk-AQ6FYS2X-Bew6O2uZ.cjs.map} +1 -1
- package/dist/{chunk-AQ6FYS2X-DZCYUfOR.mjs → chunk-AQ6FYS2X-DvLaW9GT.mjs} +2 -2
- package/dist/{chunk-AQ6FYS2X-DZCYUfOR.mjs.map → chunk-AQ6FYS2X-DvLaW9GT.mjs.map} +1 -1
- package/dist/{chunk-CHFEPBH4-BUINQTOC.cjs → chunk-CHFEPBH4-BBobWKRj.cjs} +2 -2
- package/dist/{chunk-CHFEPBH4-BUINQTOC.cjs.map → chunk-CHFEPBH4-BBobWKRj.cjs.map} +1 -1
- package/dist/{chunk-CHFEPBH4-DRsQxrMn.mjs → chunk-CHFEPBH4-D4sWGR2D.mjs} +2 -2
- package/dist/{chunk-CHFEPBH4-DRsQxrMn.mjs.map → chunk-CHFEPBH4-D4sWGR2D.mjs.map} +1 -1
- package/dist/{chunk-EBAPSGAO-COKIsQbZ.mjs → chunk-EBAPSGAO-BXNGSl67.mjs} +2 -2
- package/dist/{chunk-EBAPSGAO-COKIsQbZ.mjs.map → chunk-EBAPSGAO-BXNGSl67.mjs.map} +1 -1
- package/dist/{chunk-EBAPSGAO-plR5fFBv.cjs → chunk-EBAPSGAO-DNh-jlQf.cjs} +2 -2
- package/dist/{chunk-EBAPSGAO-plR5fFBv.cjs.map → chunk-EBAPSGAO-DNh-jlQf.cjs.map} +1 -1
- package/dist/{chunk-LEKBROJD-2kAIFPCU.cjs → chunk-LEKBROJD-DFBsIemC.cjs} +2 -2
- package/dist/{chunk-LEKBROJD-2kAIFPCU.cjs.map → chunk-LEKBROJD-DFBsIemC.cjs.map} +1 -1
- package/dist/{chunk-LEKBROJD-BSJleLPa.mjs → chunk-LEKBROJD-slWumJKF.mjs} +2 -2
- package/dist/{chunk-LEKBROJD-BSJleLPa.mjs.map → chunk-LEKBROJD-slWumJKF.mjs.map} +1 -1
- package/dist/{chunk-VPADYNBD-BtXMmXx1.mjs → chunk-VPADYNBD-D-DKFBlP.mjs} +2 -2
- package/dist/{chunk-VPADYNBD-BtXMmXx1.mjs.map → chunk-VPADYNBD-D-DKFBlP.mjs.map} +1 -1
- package/dist/{chunk-VPADYNBD-Caj0l4uv.cjs → chunk-VPADYNBD-lDrwFZy3.cjs} +2 -2
- package/dist/{chunk-VPADYNBD-Caj0l4uv.cjs.map → chunk-VPADYNBD-lDrwFZy3.cjs.map} +1 -1
- package/dist/{chunk-YCLFEX4T-Dup_LlUm.cjs → chunk-YCLFEX4T-eL4FMfQk.cjs} +2 -2
- package/dist/{chunk-YCLFEX4T-Dup_LlUm.cjs.map → chunk-YCLFEX4T-eL4FMfQk.cjs.map} +1 -1
- package/dist/{chunk-YCLFEX4T-BsekSINU.mjs → chunk-YCLFEX4T-qEM38SsS.mjs} +2 -2
- package/dist/{chunk-YCLFEX4T-BsekSINU.mjs.map → chunk-YCLFEX4T-qEM38SsS.mjs.map} +1 -1
- package/dist/{column-XT6UFXNQ-C6uU4zNL.mjs → column-XT6UFXNQ-B6Ee7MjU.mjs} +2 -2
- package/dist/{column-XT6UFXNQ-C6uU4zNL.mjs.map → column-XT6UFXNQ-B6Ee7MjU.mjs.map} +1 -1
- package/dist/{column-XT6UFXNQ-BsGqXCT_.cjs → column-XT6UFXNQ-BXfi6cKs.cjs} +2 -2
- package/dist/{column-XT6UFXNQ-BsGqXCT_.cjs.map → column-XT6UFXNQ-BXfi6cKs.cjs.map} +1 -1
- package/dist/{comm-VV2LDX2J-BmJhvNnj.mjs → comm-VV2LDX2J-BpxqjzME.mjs} +2 -2
- package/dist/{comm-VV2LDX2J-BmJhvNnj.mjs.map → comm-VV2LDX2J-BpxqjzME.mjs.map} +1 -1
- package/dist/{comm-VV2LDX2J-JOjGZt7b.cjs → comm-VV2LDX2J-ROVZQ5Yp.cjs} +2 -2
- package/dist/{comm-VV2LDX2J-JOjGZt7b.cjs.map → comm-VV2LDX2J-ROVZQ5Yp.cjs.map} +1 -1
- package/dist/{config-C6cH3hkY.d.cts → config-5iRrZjyK.d.cts} +334 -4
- package/dist/{config-fUE8OVTA.cjs → config-6EMCmxRX.cjs} +3 -3
- package/dist/config-6EMCmxRX.cjs.map +1 -0
- package/dist/{config-DAIUglcc.mjs → config-BUnYziJI.mjs} +3 -3
- package/dist/config-BUnYziJI.mjs.map +1 -0
- package/dist/{config-DI6uiwr9.d.mts → config-dgsHSqKF.d.mts} +334 -4
- package/dist/config.cjs +2 -2
- package/dist/config.d.cts +2 -2
- package/dist/config.d.mts +2 -2
- package/dist/config.mjs +2 -2
- package/dist/{cp-BISAAS7A-C0m4MzAo.cjs → cp-BISAAS7A-SLYPct-c.cjs} +2 -2
- package/dist/{cp-BISAAS7A-C0m4MzAo.cjs.map → cp-BISAAS7A-SLYPct-c.cjs.map} +1 -1
- package/dist/{cp-BISAAS7A-BqV_MANe.mjs → cp-BISAAS7A-tGkSCf99.mjs} +2 -2
- package/dist/{cp-BISAAS7A-BqV_MANe.mjs.map → cp-BISAAS7A-tGkSCf99.mjs.map} +1 -1
- package/dist/{cut-OKARJCCV-qaPwXeWi.mjs → cut-OKARJCCV-DS1R1EOW.mjs} +3 -3
- package/dist/{cut-OKARJCCV-qaPwXeWi.mjs.map → cut-OKARJCCV-DS1R1EOW.mjs.map} +1 -1
- package/dist/{cut-OKARJCCV-ilaU3B5w.cjs → cut-OKARJCCV-WR3VIOBE.cjs} +3 -3
- package/dist/{cut-OKARJCCV-ilaU3B5w.cjs.map → cut-OKARJCCV-WR3VIOBE.cjs.map} +1 -1
- package/dist/{diff-MWJFIG7X-Cate-TvL.cjs → diff-MWJFIG7X-C0ld41sJ.cjs} +2 -2
- package/dist/{diff-MWJFIG7X-Cate-TvL.cjs.map → diff-MWJFIG7X-C0ld41sJ.cjs.map} +1 -1
- package/dist/{diff-MWJFIG7X-D3VN3S0f.mjs → diff-MWJFIG7X-OiyFwKoF.mjs} +2 -2
- package/dist/{diff-MWJFIG7X-D3VN3S0f.mjs.map → diff-MWJFIG7X-OiyFwKoF.mjs.map} +1 -1
- package/dist/{dist-BIKIpPhu.mjs → dist-DH4cGe05.mjs} +2 -2
- package/dist/{dist-BIKIpPhu.mjs.map → dist-DH4cGe05.mjs.map} +1 -1
- package/dist/{dist-dqKnzRlA.cjs → dist-DWmnC5I9.cjs} +2 -2
- package/dist/{dist-dqKnzRlA.cjs.map → dist-DWmnC5I9.cjs.map} +1 -1
- package/dist/{du-572XNP42-BKBhmoCb.mjs → du-572XNP42-CslXtf09.mjs} +2 -2
- package/dist/{du-572XNP42-BKBhmoCb.mjs.map → du-572XNP42-CslXtf09.mjs.map} +1 -1
- package/dist/{du-572XNP42-C27Lgq0a.cjs → du-572XNP42-DtiEY5E6.cjs} +2 -2
- package/dist/{du-572XNP42-C27Lgq0a.cjs.map → du-572XNP42-DtiEY5E6.cjs.map} +1 -1
- package/dist/{env-36M5BO7M-DhVMVLUR.cjs → env-36M5BO7M-DZOmdywc.cjs} +2 -2
- package/dist/{env-36M5BO7M-DhVMVLUR.cjs.map → env-36M5BO7M-DZOmdywc.cjs.map} +1 -1
- package/dist/{env-36M5BO7M-Bs_t1j98.mjs → env-36M5BO7M-qCkjYF--.mjs} +2 -2
- package/dist/{env-36M5BO7M-Bs_t1j98.mjs.map → env-36M5BO7M-qCkjYF--.mjs.map} +1 -1
- package/dist/{expand-JSPG6VOP-DY9azf5x.cjs → expand-JSPG6VOP-DLtxgy0P.cjs} +2 -2
- package/dist/{expand-JSPG6VOP-DY9azf5x.cjs.map → expand-JSPG6VOP-DLtxgy0P.cjs.map} +1 -1
- package/dist/{expand-JSPG6VOP-BfQHeAts.mjs → expand-JSPG6VOP-DXdIqoXf.mjs} +2 -2
- package/dist/{expand-JSPG6VOP-BfQHeAts.mjs.map → expand-JSPG6VOP-DXdIqoXf.mjs.map} +1 -1
- package/dist/{expr-5JAACS4X-Df_2BSxW.cjs → expr-5JAACS4X-CXKGGsG8.cjs} +2 -2
- package/dist/{expr-5JAACS4X-Df_2BSxW.cjs.map → expr-5JAACS4X-CXKGGsG8.cjs.map} +1 -1
- package/dist/{expr-5JAACS4X-C7Q9qdxK.mjs → expr-5JAACS4X-NooUODvD.mjs} +2 -2
- package/dist/{expr-5JAACS4X-C7Q9qdxK.mjs.map → expr-5JAACS4X-NooUODvD.mjs.map} +1 -1
- package/dist/{find-INTH3OLC-Cuhx3Buh.cjs → find-INTH3OLC-Bie6g_yk.cjs} +3 -3
- package/dist/{find-INTH3OLC-Cuhx3Buh.cjs.map → find-INTH3OLC-Bie6g_yk.cjs.map} +1 -1
- package/dist/{find-INTH3OLC-D1jCTVev.mjs → find-INTH3OLC-CHI6wwcv.mjs} +3 -3
- package/dist/{find-INTH3OLC-D1jCTVev.mjs.map → find-INTH3OLC-CHI6wwcv.mjs.map} +1 -1
- package/dist/{fold-4TQNYMSW-C-r9wMhz.mjs → fold-4TQNYMSW-CsAQYLbp.mjs} +2 -2
- package/dist/{fold-4TQNYMSW-C-r9wMhz.mjs.map → fold-4TQNYMSW-CsAQYLbp.mjs.map} +1 -1
- package/dist/{fold-4TQNYMSW-Bp7lnutR.cjs → fold-4TQNYMSW-J4YpWltH.cjs} +2 -2
- package/dist/{fold-4TQNYMSW-Bp7lnutR.cjs.map → fold-4TQNYMSW-J4YpWltH.cjs.map} +1 -1
- package/dist/{grep-V3LQVMRQ-BaL4MNm5.cjs → grep-V3LQVMRQ-DnWd9o8k.cjs} +4 -4
- package/dist/{grep-V3LQVMRQ-BaL4MNm5.cjs.map → grep-V3LQVMRQ-DnWd9o8k.cjs.map} +1 -1
- package/dist/{grep-V3LQVMRQ-BbJvjSpG.mjs → grep-V3LQVMRQ-Yhnhp0aT.mjs} +4 -4
- package/dist/{grep-V3LQVMRQ-BbJvjSpG.mjs.map → grep-V3LQVMRQ-Yhnhp0aT.mjs.map} +1 -1
- package/dist/{gzip-O5ASJAFY-BB1Ht64L.mjs → gzip-O5ASJAFY-C5C_freg.mjs} +2 -2
- package/dist/{gzip-O5ASJAFY-BB1Ht64L.mjs.map → gzip-O5ASJAFY-C5C_freg.mjs.map} +1 -1
- package/dist/{gzip-O5ASJAFY-dBX-J1F9.cjs → gzip-O5ASJAFY-DKwx-j5v.cjs} +2 -2
- package/dist/{gzip-O5ASJAFY-dBX-J1F9.cjs.map → gzip-O5ASJAFY-DKwx-j5v.cjs.map} +1 -1
- package/dist/{head-442HYESI-CyixDGxx.cjs → head-442HYESI-BoO4nvML.cjs} +2 -2
- package/dist/{head-442HYESI-CyixDGxx.cjs.map → head-442HYESI-BoO4nvML.cjs.map} +1 -1
- package/dist/{head-442HYESI-BxDXiRvU.mjs → head-442HYESI-Cmtn5JgI.mjs} +2 -2
- package/dist/{head-442HYESI-BxDXiRvU.mjs.map → head-442HYESI-Cmtn5JgI.mjs.map} +1 -1
- package/dist/{help-HZ6M2CKN-meYbxwKe.mjs → help-HZ6M2CKN-CTy_anGb.mjs} +2 -2
- package/dist/{help-HZ6M2CKN-meYbxwKe.mjs.map → help-HZ6M2CKN-CTy_anGb.mjs.map} +1 -1
- package/dist/{help-HZ6M2CKN-CBbwwTzd.cjs → help-HZ6M2CKN-Cbte3oru.cjs} +2 -2
- package/dist/{help-HZ6M2CKN-CBbwwTzd.cjs.map → help-HZ6M2CKN-Cbte3oru.cjs.map} +1 -1
- package/dist/{html-to-markdown-JW4MSQZO-CcDUURT_.mjs → html-to-markdown-JW4MSQZO-299byWnc.mjs} +3 -3
- package/dist/{html-to-markdown-JW4MSQZO-CcDUURT_.mjs.map → html-to-markdown-JW4MSQZO-299byWnc.mjs.map} +1 -1
- package/dist/{html-to-markdown-JW4MSQZO-C3t3MM2-.cjs → html-to-markdown-JW4MSQZO-CkmzkxTG.cjs} +3 -3
- package/dist/{html-to-markdown-JW4MSQZO-C3t3MM2-.cjs.map → html-to-markdown-JW4MSQZO-CkmzkxTG.cjs.map} +1 -1
- package/dist/internal.cjs +2 -2
- package/dist/internal.d.cts +2 -2
- package/dist/internal.d.mts +2 -2
- package/dist/internal.mjs +2 -2
- package/dist/{join-TBRGI3LQ-DlMFBx1B.cjs → join-TBRGI3LQ-Bq06-RcK.cjs} +2 -2
- package/dist/{join-TBRGI3LQ-DlMFBx1B.cjs.map → join-TBRGI3LQ-Bq06-RcK.cjs.map} +1 -1
- package/dist/{join-TBRGI3LQ-DhIHVx-D.mjs → join-TBRGI3LQ-CnYg-aU6.mjs} +2 -2
- package/dist/{join-TBRGI3LQ-DhIHVx-D.mjs.map → join-TBRGI3LQ-CnYg-aU6.mjs.map} +1 -1
- package/dist/{jq-4XLYLOS5-1ZXfyQ-t.mjs → jq-4XLYLOS5-CZN9HHep.mjs} +4 -4
- package/dist/{jq-4XLYLOS5-1ZXfyQ-t.mjs.map → jq-4XLYLOS5-CZN9HHep.mjs.map} +1 -1
- package/dist/{jq-4XLYLOS5-R_kJ4_hz.cjs → jq-4XLYLOS5-DTb2xFlq.cjs} +4 -4
- package/dist/{jq-4XLYLOS5-R_kJ4_hz.cjs.map → jq-4XLYLOS5-DTb2xFlq.cjs.map} +1 -1
- package/dist/{js-exec-N5KEZBH7-DFulxpOb.mjs → js-exec-N5KEZBH7-BUHtul4o.mjs} +3 -3
- package/dist/{js-exec-N5KEZBH7-DFulxpOb.mjs.map → js-exec-N5KEZBH7-BUHtul4o.mjs.map} +1 -1
- package/dist/{js-exec-N5KEZBH7-DarQVOZh.cjs → js-exec-N5KEZBH7-rXv3W3_B.cjs} +3 -3
- package/dist/{js-exec-N5KEZBH7-DarQVOZh.cjs.map → js-exec-N5KEZBH7-rXv3W3_B.cjs.map} +1 -1
- package/dist/{lib-DJRjljDi.mjs → lib-CX_1eXiO.mjs} +2 -2
- package/dist/{lib-DJRjljDi.mjs.map → lib-CX_1eXiO.mjs.map} +1 -1
- package/dist/{lib-ZZYpIIeE.cjs → lib-DXbtufvp.cjs} +2 -2
- package/dist/{lib-ZZYpIIeE.cjs.map → lib-DXbtufvp.cjs.map} +1 -1
- package/dist/{ln-4LGSXXGD-BDLG2o_K.cjs → ln-4LGSXXGD-3hxf-Mzv.cjs} +2 -2
- package/dist/{ln-4LGSXXGD-BDLG2o_K.cjs.map → ln-4LGSXXGD-3hxf-Mzv.cjs.map} +1 -1
- package/dist/{ln-4LGSXXGD-D903m8qg.mjs → ln-4LGSXXGD-D3CHZ27f.mjs} +2 -2
- package/dist/{ln-4LGSXXGD-D903m8qg.mjs.map → ln-4LGSXXGD-D3CHZ27f.mjs.map} +1 -1
- package/dist/{ls-ZJGQER7M-Dkmv0R8V.mjs → ls-ZJGQER7M-BikOZ5dE.mjs} +2 -2
- package/dist/{ls-ZJGQER7M-Dkmv0R8V.mjs.map → ls-ZJGQER7M-BikOZ5dE.mjs.map} +1 -1
- package/dist/{ls-ZJGQER7M-CliV7W6Y.cjs → ls-ZJGQER7M-oYXh3no8.cjs} +2 -2
- package/dist/{ls-ZJGQER7M-CliV7W6Y.cjs.map → ls-ZJGQER7M-oYXh3no8.cjs.map} +1 -1
- package/dist/{lzma-Bu2TqWO8.cjs → lzma-CWWTnXz9.cjs} +2 -2
- package/dist/{lzma-Bu2TqWO8.cjs.map → lzma-CWWTnXz9.cjs.map} +1 -1
- package/dist/{md5sum-SPU24VSG-DCn4Anah.cjs → md5sum-SPU24VSG-B-Q95S2L.cjs} +3 -3
- package/dist/{md5sum-SPU24VSG-DCn4Anah.cjs.map → md5sum-SPU24VSG-B-Q95S2L.cjs.map} +1 -1
- package/dist/{md5sum-SPU24VSG-B4KhLQRr.mjs → md5sum-SPU24VSG-BZ8T0s0d.mjs} +3 -3
- package/dist/{md5sum-SPU24VSG-B4KhLQRr.mjs.map → md5sum-SPU24VSG-BZ8T0s0d.mjs.map} +1 -1
- package/dist/{mkdir-MEPGZOB6-R5c4T_LZ.cjs → mkdir-MEPGZOB6-CHlXP_UV.cjs} +2 -2
- package/dist/{mkdir-MEPGZOB6-R5c4T_LZ.cjs.map → mkdir-MEPGZOB6-CHlXP_UV.cjs.map} +1 -1
- package/dist/{mkdir-MEPGZOB6-CnLQJsUt.mjs → mkdir-MEPGZOB6-COgoB_eW.mjs} +2 -2
- package/dist/{mkdir-MEPGZOB6-CnLQJsUt.mjs.map → mkdir-MEPGZOB6-COgoB_eW.mjs.map} +1 -1
- package/dist/{mv-W5BIQ646-BOKY4VrF.cjs → mv-W5BIQ646-CqRcfs2Q.cjs} +2 -2
- package/dist/{mv-W5BIQ646-BOKY4VrF.cjs.map → mv-W5BIQ646-CqRcfs2Q.cjs.map} +1 -1
- package/dist/{mv-W5BIQ646-Ca0nzr_C.mjs → mv-W5BIQ646-D1wp5mHO.mjs} +2 -2
- package/dist/{mv-W5BIQ646-Ca0nzr_C.mjs.map → mv-W5BIQ646-D1wp5mHO.mjs.map} +1 -1
- package/dist/{nl-WSDW7I4O-BnmsTwim.cjs → nl-WSDW7I4O-CmqPuqVW.cjs} +2 -2
- package/dist/{nl-WSDW7I4O-BnmsTwim.cjs.map → nl-WSDW7I4O-CmqPuqVW.cjs.map} +1 -1
- package/dist/{nl-WSDW7I4O-Z8F4EV6H.mjs → nl-WSDW7I4O-NCkIYhNa.mjs} +2 -2
- package/dist/{nl-WSDW7I4O-Z8F4EV6H.mjs.map → nl-WSDW7I4O-NCkIYhNa.mjs.map} +1 -1
- package/dist/{od-WOKFDJTP-BXOK7sK9.mjs → od-WOKFDJTP-CEZP0ac9.mjs} +2 -2
- package/dist/{od-WOKFDJTP-BXOK7sK9.mjs.map → od-WOKFDJTP-CEZP0ac9.mjs.map} +1 -1
- package/dist/{od-WOKFDJTP-XhCKGIUJ.cjs → od-WOKFDJTP-FZnm2Cu1.cjs} +2 -2
- package/dist/{od-WOKFDJTP-XhCKGIUJ.cjs.map → od-WOKFDJTP-FZnm2Cu1.cjs.map} +1 -1
- package/dist/{paste-7JC6S4DX-CKVgH6nB.mjs → paste-7JC6S4DX-CkoIbaQf.mjs} +2 -2
- package/dist/{paste-7JC6S4DX-CKVgH6nB.mjs.map → paste-7JC6S4DX-CkoIbaQf.mjs.map} +1 -1
- package/dist/{paste-7JC6S4DX-BEhz0lRq.cjs → paste-7JC6S4DX-D7RAHCW2.cjs} +2 -2
- package/dist/{paste-7JC6S4DX-BEhz0lRq.cjs.map → paste-7JC6S4DX-D7RAHCW2.cjs.map} +1 -1
- package/dist/{printf-TWGXF445-3mqDNxCJ.cjs → printf-TWGXF445-Csp_mOLP.cjs} +3 -3
- package/dist/{printf-TWGXF445-3mqDNxCJ.cjs.map → printf-TWGXF445-Csp_mOLP.cjs.map} +1 -1
- package/dist/{printf-TWGXF445-DfDggg_6.mjs → printf-TWGXF445-Dudh8pNT.mjs} +3 -3
- package/dist/{printf-TWGXF445-DfDggg_6.mjs.map → printf-TWGXF445-Dudh8pNT.mjs.map} +1 -1
- package/dist/{project-draft-notifier--S1bLicx.cjs → project-draft-notifier-CHPg2j-8.cjs} +27 -3
- package/dist/project-draft-notifier-CHPg2j-8.cjs.map +1 -0
- package/dist/{project-draft-notifier-IV-0I5b0.mjs → project-draft-notifier-CQH0Sf3F.mjs} +22 -4
- package/dist/project-draft-notifier-CQH0Sf3F.mjs.map +1 -0
- package/dist/{python3-POMOR4OA-BGj_s-m5.mjs → python3-POMOR4OA-C0WwGQ_L.mjs} +3 -3
- package/dist/{python3-POMOR4OA-BGj_s-m5.mjs.map → python3-POMOR4OA-C0WwGQ_L.mjs.map} +1 -1
- package/dist/{python3-POMOR4OA-CaW-k-eL.cjs → python3-POMOR4OA-Ddnnochv.cjs} +3 -3
- package/dist/{python3-POMOR4OA-CaW-k-eL.cjs.map → python3-POMOR4OA-Ddnnochv.cjs.map} +1 -1
- package/dist/{rev-5EHFX4EJ-CZHBTnDG.cjs → rev-5EHFX4EJ-Cx0PQDxf.cjs} +2 -2
- package/dist/{rev-5EHFX4EJ-CZHBTnDG.cjs.map → rev-5EHFX4EJ-Cx0PQDxf.cjs.map} +1 -1
- package/dist/{rev-5EHFX4EJ-D-ibiLnI.mjs → rev-5EHFX4EJ-dloN_X22.mjs} +2 -2
- package/dist/{rev-5EHFX4EJ-D-ibiLnI.mjs.map → rev-5EHFX4EJ-dloN_X22.mjs.map} +1 -1
- package/dist/{rg-S4FXYXWB-1F6ziRHS.cjs → rg-S4FXYXWB-CAAZ_PR4.cjs} +3 -3
- package/dist/{rg-S4FXYXWB-1F6ziRHS.cjs.map → rg-S4FXYXWB-CAAZ_PR4.cjs.map} +1 -1
- package/dist/{rg-S4FXYXWB-CXP6pDbv.mjs → rg-S4FXYXWB-DrC9dN-a.mjs} +3 -3
- package/dist/{rg-S4FXYXWB-CXP6pDbv.mjs.map → rg-S4FXYXWB-DrC9dN-a.mjs.map} +1 -1
- package/dist/{rm-SSGETQVQ-BwqC7bCC.mjs → rm-SSGETQVQ-CNINPiUO.mjs} +2 -2
- package/dist/{rm-SSGETQVQ-BwqC7bCC.mjs.map → rm-SSGETQVQ-CNINPiUO.mjs.map} +1 -1
- package/dist/{rm-SSGETQVQ-BYKmY_-m.cjs → rm-SSGETQVQ-Dn9TZdkS.cjs} +2 -2
- package/dist/{rm-SSGETQVQ-BYKmY_-m.cjs.map → rm-SSGETQVQ-Dn9TZdkS.cjs.map} +1 -1
- package/dist/{rmdir-OC4ZLPYA-BBgw-6pC.mjs → rmdir-OC4ZLPYA-BD1zwTlp.mjs} +2 -2
- package/dist/{rmdir-OC4ZLPYA-BBgw-6pC.mjs.map → rmdir-OC4ZLPYA-BD1zwTlp.mjs.map} +1 -1
- package/dist/{rmdir-OC4ZLPYA-QB4_xifp.cjs → rmdir-OC4ZLPYA-iSpo59WD.cjs} +2 -2
- package/dist/{rmdir-OC4ZLPYA-QB4_xifp.cjs.map → rmdir-OC4ZLPYA-iSpo59WD.cjs.map} +1 -1
- package/dist/run.cjs +4 -4
- package/dist/run.mjs +4 -4
- package/dist/{sed-S5UIK574-xaCNGypJ.cjs → sed-S5UIK574-C-uwiHAm.cjs} +2 -2
- package/dist/{sed-S5UIK574-xaCNGypJ.cjs.map → sed-S5UIK574-C-uwiHAm.cjs.map} +1 -1
- package/dist/{sed-S5UIK574-7DhR58Zm.mjs → sed-S5UIK574-ClTc0m4q.mjs} +2 -2
- package/dist/{sed-S5UIK574-7DhR58Zm.mjs.map → sed-S5UIK574-ClTc0m4q.mjs.map} +1 -1
- package/dist/{sha1sum-2PTOAFR6-BtqrcbrP.mjs → sha1sum-2PTOAFR6-DbwstiDR.mjs} +3 -3
- package/dist/{sha1sum-2PTOAFR6-BtqrcbrP.mjs.map → sha1sum-2PTOAFR6-DbwstiDR.mjs.map} +1 -1
- package/dist/{sha1sum-2PTOAFR6-CQdaPMvB.cjs → sha1sum-2PTOAFR6-DuIpAtfC.cjs} +3 -3
- package/dist/{sha1sum-2PTOAFR6-CQdaPMvB.cjs.map → sha1sum-2PTOAFR6-DuIpAtfC.cjs.map} +1 -1
- package/dist/{sha256sum-NS7D3IXX-DbTBqoAx.mjs → sha256sum-NS7D3IXX-CVlsZZ--.mjs} +3 -3
- package/dist/{sha256sum-NS7D3IXX-DbTBqoAx.mjs.map → sha256sum-NS7D3IXX-CVlsZZ--.mjs.map} +1 -1
- package/dist/{sha256sum-NS7D3IXX-DIjHxjx4.cjs → sha256sum-NS7D3IXX-GnsJcrLW.cjs} +3 -3
- package/dist/{sha256sum-NS7D3IXX-DIjHxjx4.cjs.map → sha256sum-NS7D3IXX-GnsJcrLW.cjs.map} +1 -1
- package/dist/{sleep-X22JJINO-_OafNle4.mjs → sleep-X22JJINO-C-g2ZO6x.mjs} +2 -2
- package/dist/{sleep-X22JJINO-_OafNle4.mjs.map → sleep-X22JJINO-C-g2ZO6x.mjs.map} +1 -1
- package/dist/{sleep-X22JJINO-Ce3B98oS.cjs → sleep-X22JJINO-RqQk0qpz.cjs} +2 -2
- package/dist/{sleep-X22JJINO-Ce3B98oS.cjs.map → sleep-X22JJINO-RqQk0qpz.cjs.map} +1 -1
- package/dist/{sort-SW2YEO5B-B7Ur1ZcG.mjs → sort-SW2YEO5B-BbhU_QUF.mjs} +3 -3
- package/dist/{sort-SW2YEO5B-B7Ur1ZcG.mjs.map → sort-SW2YEO5B-BbhU_QUF.mjs.map} +1 -1
- package/dist/{sort-SW2YEO5B-Bp07z0aH.cjs → sort-SW2YEO5B-BkIlQlJ8.cjs} +3 -3
- package/dist/{sort-SW2YEO5B-Bp07z0aH.cjs.map → sort-SW2YEO5B-BkIlQlJ8.cjs.map} +1 -1
- package/dist/{split-4KKZZXXE-_ZWjc02C.cjs → split-4KKZZXXE-C8wRXZ0i.cjs} +2 -2
- package/dist/{split-4KKZZXXE-_ZWjc02C.cjs.map → split-4KKZZXXE-C8wRXZ0i.cjs.map} +1 -1
- package/dist/{split-4KKZZXXE-B59vZ2kd.mjs → split-4KKZZXXE-DjfU-C4m.mjs} +2 -2
- package/dist/{split-4KKZZXXE-B59vZ2kd.mjs.map → split-4KKZZXXE-DjfU-C4m.mjs.map} +1 -1
- package/dist/{sqlite3-CGOEFJAO-Cp1J6H5O.mjs → sqlite3-CGOEFJAO-BZCi739i.mjs} +3 -3
- package/dist/{sqlite3-CGOEFJAO-Cp1J6H5O.mjs.map → sqlite3-CGOEFJAO-BZCi739i.mjs.map} +1 -1
- package/dist/{sqlite3-CGOEFJAO-hpJXGgO0.cjs → sqlite3-CGOEFJAO-TN9M_MlF.cjs} +3 -3
- package/dist/{sqlite3-CGOEFJAO-hpJXGgO0.cjs.map → sqlite3-CGOEFJAO-TN9M_MlF.cjs.map} +1 -1
- package/dist/{start-BRUA3xO7.mjs → start-C8x6aRq5.mjs} +197 -174
- package/dist/start-C8x6aRq5.mjs.map +1 -0
- package/dist/{start-DZxJ9CMX.cjs → start-QsTFiRdr.cjs} +197 -174
- package/dist/start-QsTFiRdr.cjs.map +1 -0
- package/dist/start.cjs +1 -1
- package/dist/start.d.cts +1 -1
- package/dist/start.d.mts +1 -1
- package/dist/start.mjs +1 -1
- package/dist/{strings-6WDHLGMX-BuimP0UM.cjs → strings-6WDHLGMX-B-zIE1x8.cjs} +2 -2
- package/dist/{strings-6WDHLGMX-BuimP0UM.cjs.map → strings-6WDHLGMX-B-zIE1x8.cjs.map} +1 -1
- package/dist/{strings-6WDHLGMX-CDTBMSHy.mjs → strings-6WDHLGMX-n_UsURPm.mjs} +2 -2
- package/dist/{strings-6WDHLGMX-CDTBMSHy.mjs.map → strings-6WDHLGMX-n_UsURPm.mjs.map} +1 -1
- package/dist/{tac-2STMMJYW-DnowMt3c.cjs → tac-2STMMJYW-BHgj3IRa.cjs} +2 -2
- package/dist/{tac-2STMMJYW-DnowMt3c.cjs.map → tac-2STMMJYW-BHgj3IRa.cjs.map} +1 -1
- package/dist/{tac-2STMMJYW-Dpa06FoX.mjs → tac-2STMMJYW-D05zd67S.mjs} +2 -2
- package/dist/{tac-2STMMJYW-Dpa06FoX.mjs.map → tac-2STMMJYW-D05zd67S.mjs.map} +1 -1
- package/dist/{tail-R4PCA2C4-sqhvIobF.mjs → tail-R4PCA2C4-D0aqeb75.mjs} +2 -2
- package/dist/{tail-R4PCA2C4-sqhvIobF.mjs.map → tail-R4PCA2C4-D0aqeb75.mjs.map} +1 -1
- package/dist/{tail-R4PCA2C4-BD6ghi2P.cjs → tail-R4PCA2C4-DDSuegLd.cjs} +2 -2
- package/dist/{tail-R4PCA2C4-BD6ghi2P.cjs.map → tail-R4PCA2C4-DDSuegLd.cjs.map} +1 -1
- package/dist/{tar-STHHZTZ6-Cq884xsD.mjs → tar-STHHZTZ6-CtQ_mq1W.mjs} +4 -4
- package/dist/{tar-STHHZTZ6-Cq884xsD.mjs.map → tar-STHHZTZ6-CtQ_mq1W.mjs.map} +1 -1
- package/dist/{tar-STHHZTZ6-CAQ5fTe5.cjs → tar-STHHZTZ6-I8LVU8Q-.cjs} +5 -5
- package/dist/{tar-STHHZTZ6-CAQ5fTe5.cjs.map → tar-STHHZTZ6-I8LVU8Q-.cjs.map} +1 -1
- package/dist/{tee-YUZ2FKCJ-bh9I2go-.mjs → tee-YUZ2FKCJ-BHNLPUXQ.mjs} +2 -2
- package/dist/{tee-YUZ2FKCJ-bh9I2go-.mjs.map → tee-YUZ2FKCJ-BHNLPUXQ.mjs.map} +1 -1
- package/dist/{tee-YUZ2FKCJ-D7cS6NNc.cjs → tee-YUZ2FKCJ-CTmzzgRO.cjs} +2 -2
- package/dist/{tee-YUZ2FKCJ-D7cS6NNc.cjs.map → tee-YUZ2FKCJ-CTmzzgRO.cjs.map} +1 -1
- package/dist/{time-D4LNBSWX-B5D4gMkC.cjs → time-D4LNBSWX-B0Zi4F-7.cjs} +2 -2
- package/dist/{time-D4LNBSWX-B5D4gMkC.cjs.map → time-D4LNBSWX-B0Zi4F-7.cjs.map} +1 -1
- package/dist/{time-D4LNBSWX-B0IdVsm4.mjs → time-D4LNBSWX-DIaO5ubV.mjs} +2 -2
- package/dist/{time-D4LNBSWX-B0IdVsm4.mjs.map → time-D4LNBSWX-DIaO5ubV.mjs.map} +1 -1
- package/dist/{timeout-YDCRSLPQ-Bz67A8ID.cjs → timeout-YDCRSLPQ-HEAIafpm.cjs} +2 -2
- package/dist/{timeout-YDCRSLPQ-Bz67A8ID.cjs.map → timeout-YDCRSLPQ-HEAIafpm.cjs.map} +1 -1
- package/dist/{timeout-YDCRSLPQ-DPGV7vUh.mjs → timeout-YDCRSLPQ-LmDEh1WO.mjs} +2 -2
- package/dist/{timeout-YDCRSLPQ-DPGV7vUh.mjs.map → timeout-YDCRSLPQ-LmDEh1WO.mjs.map} +1 -1
- package/dist/{touch-UA33VN3N-BDy4Yo9Y.cjs → touch-UA33VN3N-Bwyf7DmM.cjs} +2 -2
- package/dist/{touch-UA33VN3N-BDy4Yo9Y.cjs.map → touch-UA33VN3N-Bwyf7DmM.cjs.map} +1 -1
- package/dist/{touch-UA33VN3N-Ct3SAQ08.mjs → touch-UA33VN3N-Y2h82VKj.mjs} +2 -2
- package/dist/{touch-UA33VN3N-Ct3SAQ08.mjs.map → touch-UA33VN3N-Y2h82VKj.mjs.map} +1 -1
- package/dist/{tr-36LHWFRQ-BPZQPTDs.cjs → tr-36LHWFRQ-2cOvY9UY.cjs} +2 -2
- package/dist/{tr-36LHWFRQ-BPZQPTDs.cjs.map → tr-36LHWFRQ-2cOvY9UY.cjs.map} +1 -1
- package/dist/{tr-36LHWFRQ-B1pLP8yk.mjs → tr-36LHWFRQ-D9BYyccN.mjs} +2 -2
- package/dist/{tr-36LHWFRQ-B1pLP8yk.mjs.map → tr-36LHWFRQ-D9BYyccN.mjs.map} +1 -1
- package/dist/{tree-YLD52CNT-DX7CLGzi.cjs → tree-YLD52CNT-C7eB6jtS.cjs} +2 -2
- package/dist/{tree-YLD52CNT-DX7CLGzi.cjs.map → tree-YLD52CNT-C7eB6jtS.cjs.map} +1 -1
- package/dist/{tree-YLD52CNT-CjGj9lct.mjs → tree-YLD52CNT-CtLvqcZk.mjs} +2 -2
- package/dist/{tree-YLD52CNT-CjGj9lct.mjs.map → tree-YLD52CNT-CtLvqcZk.mjs.map} +1 -1
- package/dist/{unexpand-CADSA4VO-B1kZoJRG.cjs → unexpand-CADSA4VO-3PrXj8K0.cjs} +2 -2
- package/dist/{unexpand-CADSA4VO-B1kZoJRG.cjs.map → unexpand-CADSA4VO-3PrXj8K0.cjs.map} +1 -1
- package/dist/{unexpand-CADSA4VO-D5ERZLjk.mjs → unexpand-CADSA4VO-XSgCS4GP.mjs} +2 -2
- package/dist/{unexpand-CADSA4VO-D5ERZLjk.mjs.map → unexpand-CADSA4VO-XSgCS4GP.mjs.map} +1 -1
- package/dist/{uniq-XSIZR6PB-BxieUBn1.cjs → uniq-XSIZR6PB-BBl2nMiI.cjs} +3 -3
- package/dist/{uniq-XSIZR6PB-BxieUBn1.cjs.map → uniq-XSIZR6PB-BBl2nMiI.cjs.map} +1 -1
- package/dist/{uniq-XSIZR6PB-gQz2sv1S.mjs → uniq-XSIZR6PB-pc7uEyzG.mjs} +3 -3
- package/dist/{uniq-XSIZR6PB-gQz2sv1S.mjs.map → uniq-XSIZR6PB-pc7uEyzG.mjs.map} +1 -1
- package/dist/{wc-LF7NU4LA-BW89VNEV.cjs → wc-LF7NU4LA-BHtg8Aw1.cjs} +3 -3
- package/dist/{wc-LF7NU4LA-BW89VNEV.cjs.map → wc-LF7NU4LA-BHtg8Aw1.cjs.map} +1 -1
- package/dist/{wc-LF7NU4LA-DV_QfkzW.mjs → wc-LF7NU4LA-C83IRbLC.mjs} +3 -3
- package/dist/{wc-LF7NU4LA-DV_QfkzW.mjs.map → wc-LF7NU4LA-C83IRbLC.mjs.map} +1 -1
- package/dist/{with-project-scope-DZ4FmBD0.cjs → with-project-scope-9ADPLP55.cjs} +2 -2
- package/dist/{with-project-scope-DZ4FmBD0.cjs.map → with-project-scope-9ADPLP55.cjs.map} +1 -1
- package/dist/{with-project-scope-M7_dsWGP.mjs → with-project-scope-BUcWJ6pf.mjs} +2 -2
- package/dist/{with-project-scope-M7_dsWGP.mjs.map → with-project-scope-BUcWJ6pf.mjs.map} +1 -1
- package/dist/{xan-Y6WF3IRG-DE4ViTiv.mjs → xan-Y6WF3IRG-i7dz8gaI.mjs} +6 -6
- package/dist/{xan-Y6WF3IRG-DE4ViTiv.mjs.map → xan-Y6WF3IRG-i7dz8gaI.mjs.map} +1 -1
- package/dist/{xan-Y6WF3IRG-COX-2Ei2.cjs → xan-Y6WF3IRG-kTcNmq6v.cjs} +6 -6
- package/dist/{xan-Y6WF3IRG-COX-2Ei2.cjs.map → xan-Y6WF3IRG-kTcNmq6v.cjs.map} +1 -1
- package/dist/{xan-view-HDVKHFC2-Bl7QFGDz.cjs → xan-view-HDVKHFC2-BJmUxmfA.cjs} +3 -3
- package/dist/{xan-view-HDVKHFC2-Bl7QFGDz.cjs.map → xan-view-HDVKHFC2-BJmUxmfA.cjs.map} +1 -1
- package/dist/{xan-view-HDVKHFC2-Qzyw1L2R.mjs → xan-view-HDVKHFC2-CrNxy8pw.mjs} +3 -3
- package/dist/{xan-view-HDVKHFC2-Qzyw1L2R.mjs.map → xan-view-HDVKHFC2-CrNxy8pw.mjs.map} +1 -1
- package/dist/{xargs-MGZPH7AX-DO-DX5DN.cjs → xargs-MGZPH7AX-DvRkmGVA.cjs} +2 -2
- package/dist/{xargs-MGZPH7AX-DO-DX5DN.cjs.map → xargs-MGZPH7AX-DvRkmGVA.cjs.map} +1 -1
- package/dist/{xargs-MGZPH7AX-Cfb2vS15.mjs → xargs-MGZPH7AX-fgNjljUp.mjs} +2 -2
- package/dist/{xargs-MGZPH7AX-Cfb2vS15.mjs.map → xargs-MGZPH7AX-fgNjljUp.mjs.map} +1 -1
- package/dist/{yq-4QJW3EQG-Beapk7yc.mjs → yq-4QJW3EQG--WRizWHk.mjs} +3 -3
- package/dist/{yq-4QJW3EQG-Beapk7yc.mjs.map → yq-4QJW3EQG--WRizWHk.mjs.map} +1 -1
- package/dist/{yq-4QJW3EQG-C509_4iC.cjs → yq-4QJW3EQG-Co8Ft2CX.cjs} +3 -3
- package/dist/{yq-4QJW3EQG-C509_4iC.cjs.map → yq-4QJW3EQG-Co8Ft2CX.cjs.map} +1 -1
- package/package.json +1 -1
- package/dist/config-DAIUglcc.mjs.map +0 -1
- package/dist/config-fUE8OVTA.cjs.map +0 -1
- package/dist/project-draft-notifier--S1bLicx.cjs.map +0 -1
- package/dist/project-draft-notifier-IV-0I5b0.mjs.map +0 -1
- package/dist/start-BRUA3xO7.mjs.map +0 -1
- package/dist/start-DZxJ9CMX.cjs.map +0 -1
|
@@ -4,6 +4,224 @@ import { OrganizationRow, OrganizationUserRole, ProjectRow } from "@keystrokehq/
|
|
|
4
4
|
import { Context, MiddlewareHandler } from "hono";
|
|
5
5
|
import { McpProviderPlugin, McpProviderPlugin as McpProviderPlugin$1 } from "@keystrokehq/http";
|
|
6
6
|
|
|
7
|
+
//#region ../../packages/shared/dist/tool-result-content-CLQY8ta0.d.mts
|
|
8
|
+
declare const StoredRouteManifestSchema: z.ZodObject<{
|
|
9
|
+
version: z.ZodLiteral<2>;
|
|
10
|
+
entries: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
11
|
+
kind: z.ZodLiteral<"health">;
|
|
12
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
13
|
+
kind: z.ZodLiteral<"agent">;
|
|
14
|
+
slug: z.ZodString;
|
|
15
|
+
moduleFile: z.ZodString;
|
|
16
|
+
name: z.ZodString;
|
|
17
|
+
description: z.ZodString;
|
|
18
|
+
model: z.ZodString;
|
|
19
|
+
compactionModel: z.ZodOptional<z.ZodString>;
|
|
20
|
+
systemPrompt: z.ZodString;
|
|
21
|
+
toolCount: z.ZodNumber;
|
|
22
|
+
credentialCount: z.ZodNumber;
|
|
23
|
+
appSlugs: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
24
|
+
toolSlugs: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
25
|
+
toolRequirements: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodObject<{
|
|
26
|
+
key: z.ZodString;
|
|
27
|
+
kind: z.ZodEnum<{
|
|
28
|
+
api_key: "api_key";
|
|
29
|
+
oauth_managed: "oauth_managed";
|
|
30
|
+
keystroke: "keystroke";
|
|
31
|
+
}>;
|
|
32
|
+
scope: z.ZodOptional<z.ZodEnum<{
|
|
33
|
+
organization: "organization";
|
|
34
|
+
project: "project";
|
|
35
|
+
user: "user";
|
|
36
|
+
}>>;
|
|
37
|
+
}, z.core.$strip>>>>;
|
|
38
|
+
sandboxRequirements: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
39
|
+
key: z.ZodString;
|
|
40
|
+
kind: z.ZodEnum<{
|
|
41
|
+
api_key: "api_key";
|
|
42
|
+
oauth_managed: "oauth_managed";
|
|
43
|
+
keystroke: "keystroke";
|
|
44
|
+
}>;
|
|
45
|
+
scope: z.ZodOptional<z.ZodEnum<{
|
|
46
|
+
organization: "organization";
|
|
47
|
+
project: "project";
|
|
48
|
+
user: "user";
|
|
49
|
+
}>>;
|
|
50
|
+
}, z.core.$strip>>>;
|
|
51
|
+
sandboxSetup: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
52
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
53
|
+
kind: z.ZodLiteral<"action">;
|
|
54
|
+
slug: z.ZodString;
|
|
55
|
+
name: z.ZodString;
|
|
56
|
+
description: z.ZodString;
|
|
57
|
+
moduleFile: z.ZodString;
|
|
58
|
+
appSlug: z.ZodOptional<z.ZodString>;
|
|
59
|
+
inputSchema: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
60
|
+
outputSchema: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
61
|
+
requirements: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
62
|
+
key: z.ZodString;
|
|
63
|
+
kind: z.ZodEnum<{
|
|
64
|
+
api_key: "api_key";
|
|
65
|
+
oauth_managed: "oauth_managed";
|
|
66
|
+
keystroke: "keystroke";
|
|
67
|
+
}>;
|
|
68
|
+
scope: z.ZodOptional<z.ZodEnum<{
|
|
69
|
+
organization: "organization";
|
|
70
|
+
project: "project";
|
|
71
|
+
user: "user";
|
|
72
|
+
}>>;
|
|
73
|
+
}, z.core.$strip>>>;
|
|
74
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
75
|
+
kind: z.ZodLiteral<"workflow">;
|
|
76
|
+
slug: z.ZodString;
|
|
77
|
+
name: z.ZodString;
|
|
78
|
+
description: z.ZodString;
|
|
79
|
+
subscribable: z.ZodBoolean;
|
|
80
|
+
moduleFile: z.ZodString;
|
|
81
|
+
requestSchema: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
82
|
+
responseSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
83
|
+
flowGraph: z.ZodOptional<z.ZodObject<{
|
|
84
|
+
nodes: z.ZodArray<z.ZodObject<{
|
|
85
|
+
id: z.ZodString;
|
|
86
|
+
nodeType: z.ZodEnum<{
|
|
87
|
+
error: "error";
|
|
88
|
+
entry: "entry";
|
|
89
|
+
exit: "exit";
|
|
90
|
+
step: "step";
|
|
91
|
+
"code-block": "code-block";
|
|
92
|
+
decision: "decision";
|
|
93
|
+
merge: "merge";
|
|
94
|
+
loop: "loop";
|
|
95
|
+
parallel: "parallel";
|
|
96
|
+
"loop-start": "loop-start";
|
|
97
|
+
"trigger-source": "trigger-source";
|
|
98
|
+
}>;
|
|
99
|
+
data: z.ZodObject<{
|
|
100
|
+
label: z.ZodString;
|
|
101
|
+
groupKind: z.ZodOptional<z.ZodEnum<{
|
|
102
|
+
loop: "loop";
|
|
103
|
+
parallel: "parallel";
|
|
104
|
+
conditional: "conditional";
|
|
105
|
+
}>>;
|
|
106
|
+
description: z.ZodOptional<z.ZodString>;
|
|
107
|
+
callKind: z.ZodOptional<z.ZodString>;
|
|
108
|
+
appSlug: z.ZodOptional<z.ZodString>;
|
|
109
|
+
triggerType: z.ZodOptional<z.ZodString>;
|
|
110
|
+
outputs: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
111
|
+
id: z.ZodString;
|
|
112
|
+
label: z.ZodString;
|
|
113
|
+
}, z.core.$strip>>>;
|
|
114
|
+
slug: z.ZodOptional<z.ZodString>;
|
|
115
|
+
containedCallSiteIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
116
|
+
inputBindings: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
117
|
+
tokens: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
118
|
+
kind: z.ZodLiteral<"text">;
|
|
119
|
+
text: z.ZodString;
|
|
120
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
121
|
+
kind: z.ZodLiteral<"reference">;
|
|
122
|
+
sourceNodeId: z.ZodOptional<z.ZodString>;
|
|
123
|
+
field: z.ZodOptional<z.ZodString>;
|
|
124
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
125
|
+
kind: z.ZodLiteral<"variable">;
|
|
126
|
+
text: z.ZodString;
|
|
127
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
128
|
+
kind: z.ZodLiteral<"call">;
|
|
129
|
+
name: z.ZodString;
|
|
130
|
+
}, z.core.$strip>], "kind">>;
|
|
131
|
+
multiline: z.ZodOptional<z.ZodBoolean>;
|
|
132
|
+
}, z.core.$strip>>>;
|
|
133
|
+
llmOptions: z.ZodOptional<z.ZodObject<{
|
|
134
|
+
model: z.ZodOptional<z.ZodString>;
|
|
135
|
+
maxTokens: z.ZodOptional<z.ZodNumber>;
|
|
136
|
+
temperature: z.ZodOptional<z.ZodNumber>;
|
|
137
|
+
thinkingLevel: z.ZodOptional<z.ZodString>;
|
|
138
|
+
hasSystemPrompt: z.ZodOptional<z.ZodBoolean>;
|
|
139
|
+
hasOutputSchema: z.ZodOptional<z.ZodBoolean>;
|
|
140
|
+
}, z.core.$strip>>;
|
|
141
|
+
}, z.core.$strip>;
|
|
142
|
+
parentId: z.ZodOptional<z.ZodString>;
|
|
143
|
+
}, z.core.$strip>>;
|
|
144
|
+
edges: z.ZodArray<z.ZodObject<{
|
|
145
|
+
id: z.ZodString;
|
|
146
|
+
source: z.ZodString;
|
|
147
|
+
target: z.ZodString;
|
|
148
|
+
type: z.ZodOptional<z.ZodString>;
|
|
149
|
+
label: z.ZodOptional<z.ZodString>;
|
|
150
|
+
sourceHandle: z.ZodOptional<z.ZodString>;
|
|
151
|
+
targetHandle: z.ZodOptional<z.ZodString>;
|
|
152
|
+
data: z.ZodOptional<z.ZodObject<{
|
|
153
|
+
branchKind: z.ZodOptional<z.ZodEnum<{
|
|
154
|
+
error: "error";
|
|
155
|
+
then: "then";
|
|
156
|
+
else: "else";
|
|
157
|
+
"parallel-branch": "parallel-branch";
|
|
158
|
+
}>>;
|
|
159
|
+
}, z.core.$strip>>;
|
|
160
|
+
}, z.core.$strip>>;
|
|
161
|
+
constants: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
|
|
162
|
+
}, z.core.$strip>>;
|
|
163
|
+
flowGraphSourceHash: z.ZodOptional<z.ZodString>;
|
|
164
|
+
flowGraphHash: z.ZodOptional<z.ZodString>;
|
|
165
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
166
|
+
kind: z.ZodLiteral<"trigger-webhook">;
|
|
167
|
+
endpoint: z.ZodString;
|
|
168
|
+
attachmentIds: z.ZodArray<z.ZodString>;
|
|
169
|
+
moduleFile: z.ZodString;
|
|
170
|
+
sourceHash: z.ZodOptional<z.ZodString>;
|
|
171
|
+
attachmentSchemas: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
172
|
+
requestSchema: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
173
|
+
filterSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
174
|
+
}, z.core.$strip>>;
|
|
175
|
+
attachmentMeta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
176
|
+
name: z.ZodString;
|
|
177
|
+
description: z.ZodString;
|
|
178
|
+
}, z.core.$strip>>>;
|
|
179
|
+
attachmentModuleFiles: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
180
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
181
|
+
kind: z.ZodLiteral<"trigger-poll">;
|
|
182
|
+
attachmentId: z.ZodString;
|
|
183
|
+
attachmentIds: z.ZodArray<z.ZodString>;
|
|
184
|
+
moduleFile: z.ZodString;
|
|
185
|
+
sourceHash: z.ZodOptional<z.ZodString>;
|
|
186
|
+
schedule: z.ZodString;
|
|
187
|
+
timezone: z.ZodOptional<z.ZodString>;
|
|
188
|
+
name: z.ZodString;
|
|
189
|
+
description: z.ZodString;
|
|
190
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
191
|
+
kind: z.ZodLiteral<"trigger-poll-group">;
|
|
192
|
+
pollId: z.ZodString;
|
|
193
|
+
attachmentIds: z.ZodArray<z.ZodString>;
|
|
194
|
+
moduleFile: z.ZodString;
|
|
195
|
+
schedule: z.ZodString;
|
|
196
|
+
timezone: z.ZodOptional<z.ZodString>;
|
|
197
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
198
|
+
kind: z.ZodLiteral<"cron-schedule">;
|
|
199
|
+
attachmentId: z.ZodString;
|
|
200
|
+
attachmentIds: z.ZodArray<z.ZodString>;
|
|
201
|
+
moduleFile: z.ZodString;
|
|
202
|
+
sourceHash: z.ZodOptional<z.ZodString>;
|
|
203
|
+
schedule: z.ZodString;
|
|
204
|
+
timezone: z.ZodOptional<z.ZodString>;
|
|
205
|
+
payload: z.ZodOptional<z.ZodUnknown>;
|
|
206
|
+
name: z.ZodString;
|
|
207
|
+
description: z.ZodString;
|
|
208
|
+
}, z.core.$strip>], "kind">>;
|
|
209
|
+
skills: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
210
|
+
slug: z.ZodString;
|
|
211
|
+
name: z.ZodString;
|
|
212
|
+
description: z.ZodString;
|
|
213
|
+
moduleFile: z.ZodString;
|
|
214
|
+
}, z.core.$strip>>>;
|
|
215
|
+
integrations: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
216
|
+
}, z.core.$strip>;
|
|
217
|
+
type StoredRouteManifest = z.infer<typeof StoredRouteManifestSchema>;
|
|
218
|
+
/**
|
|
219
|
+
* Parse a stored route manifest. Only the strict v2 schema is supported: the
|
|
220
|
+
* builder always emits v2 and every deploy regenerates the manifest, so there is
|
|
221
|
+
* no legacy upcasting. (The pre-v2 `normalizeEntryToV2` path was removed once the
|
|
222
|
+
* data tables were truncated and all artifacts redeployed.)
|
|
223
|
+
*/
|
|
224
|
+
//#endregion
|
|
7
225
|
//#region ../../packages/shared/dist/index.d.mts
|
|
8
226
|
declare const PrepareManagedDeployRequestSchema: z.ZodObject<{
|
|
9
227
|
mainSha: z.ZodString;
|
|
@@ -254,6 +472,59 @@ declare const ProjectFileSummarySchema: z.ZodObject<{
|
|
|
254
472
|
type ProjectFileSummary = z.infer<typeof ProjectFileSummarySchema>;
|
|
255
473
|
/** Maps a runtime resource slug (agent/workflow/skill) to its source file path. */
|
|
256
474
|
//#endregion
|
|
475
|
+
//#region src/schemas/agent-env-image.d.ts
|
|
476
|
+
declare const AgentEnvImageSnapshotResponseSchema: z.ZodObject<{
|
|
477
|
+
agentSlug: z.ZodString;
|
|
478
|
+
setupHash: z.ZodString;
|
|
479
|
+
status: z.ZodEnum<{
|
|
480
|
+
queued: "queued";
|
|
481
|
+
failed: "failed";
|
|
482
|
+
ready: "ready";
|
|
483
|
+
building: "building";
|
|
484
|
+
}>;
|
|
485
|
+
modalImageId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
486
|
+
lastError: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
487
|
+
}, z.core.$strip>;
|
|
488
|
+
type AgentEnvImageSnapshotResponse = z.infer<typeof AgentEnvImageSnapshotResponseSchema>; //#endregion
|
|
489
|
+
//#region src/schemas/workflow-canvas.d.ts
|
|
490
|
+
/**
|
|
491
|
+
* Structural workflow-canvas graph contract.
|
|
492
|
+
*
|
|
493
|
+
* This is the deterministic skeleton the deploy-time AST producer emits for a
|
|
494
|
+
* workflow (nodes + edges), plus the manifest-derived trigger-source nodes. It
|
|
495
|
+
* is the single source of truth shared by:
|
|
496
|
+
* - the AST producer (emits it at deploy, stored with the manifest),
|
|
497
|
+
* - the platform route that serves the canvas, and
|
|
498
|
+
* - the SDK / web client that renders it (React Flow).
|
|
499
|
+
*
|
|
500
|
+
* Only the structural skeleton lives here. The LLM enrichment + run-overlay
|
|
501
|
+
* envelope types live in `workflow-canvas-envelope.ts`; the SDK re-exports them.
|
|
502
|
+
* See WORKFLOW.md (§4 grammar, §8 node ids, §9 caching).
|
|
503
|
+
*/
|
|
504
|
+
/**
|
|
505
|
+
* Canvas node taxonomy — the single discriminator for every canvas node. The
|
|
506
|
+
* client derives the React Flow component, icon, and per-node treatment from it
|
|
507
|
+
* (no parallel `type` / `data.kind` fields), and the producer + fixtures emit it
|
|
508
|
+
* directly, so the structural contract can never silently diverge across the
|
|
509
|
+
* deploy → render boundary.
|
|
510
|
+
* - Boundaries: `entry` (Start, owns input) · `exit` (Output, owns output) ·
|
|
511
|
+
* `error` (a terminal `throw` — an error output that ends the run on a branch)
|
|
512
|
+
* - Callable: `step` (action / agent / llm / hook / child-workflow invocation) —
|
|
513
|
+
* the invocation flavor lives in {@link WorkflowCanvasCallKind}
|
|
514
|
+
* - Structural control flow: `code-block` · `decision` · `merge` · `loop` ·
|
|
515
|
+
* `parallel` (group containers) · `loop-start` (the group body's entry marker,
|
|
516
|
+
* shared by loop + parallel)
|
|
517
|
+
* - Upstream of entry: `trigger-source` (one per manifest trigger attachment)
|
|
518
|
+
*
|
|
519
|
+
* `Promise.all([...])` is modeled as a `parallel` group container: the branches
|
|
520
|
+
* are stacked inside and the container itself is the single prong leaving the
|
|
521
|
+
* wrapper (there is no separate fork/join pair).
|
|
522
|
+
*
|
|
523
|
+
* `exit` and `error` are both terminals: a `return` flows to the shared `exit`
|
|
524
|
+
* (the workflow output), while a `throw` gets its own `error` terminal off the
|
|
525
|
+
* branch so guard clauses (`if (bad) throw …`) read as a visible dead-end.
|
|
526
|
+
*/
|
|
527
|
+
//#endregion
|
|
257
528
|
//#region src/types/org-rate-limit.d.ts
|
|
258
529
|
/** Scope for per-org API rate limits (separate token buckets). */
|
|
259
530
|
type OrgRateLimitScope = "api" | "mcp";
|
|
@@ -270,9 +541,9 @@ type OrgRateLimitResult = {
|
|
|
270
541
|
type OrgRateLimit = (scope: OrgRateLimitScope, organizationId: string) => Promise<OrgRateLimitResult>; //#endregion
|
|
271
542
|
//#region src/types/openapi.d.ts
|
|
272
543
|
//#endregion
|
|
273
|
-
//#region ../../packages/scheduler/dist/contract-
|
|
544
|
+
//#region ../../packages/scheduler/dist/contract-BKZC5l8b.d.mts
|
|
274
545
|
//#region src/types.d.ts
|
|
275
|
-
type JobKind = "workflow" | "agent" | "trigger" | "trigger-overview" | "workflow-canvas-annotations" | "workflow-overview" | "runtime" | "maintenance" | "platform-agent" | "image-rollout" | "wake" | "sleep";
|
|
546
|
+
type JobKind = "workflow" | "agent" | "trigger" | "trigger-overview" | "workflow-canvas-annotations" | "workflow-overview" | "runtime" | "maintenance" | "platform-agent" | "image-rollout" | "project-agent-sandbox-grace" | "project-agent-env-image" | "wake" | "sleep";
|
|
276
547
|
type JobTrigger = "api" | "cron" | "webhook" | "poll" | "retry" | "prompt";
|
|
277
548
|
/**
|
|
278
549
|
* Identifies a run that dispatched this job as a child. The parent metadata
|
|
@@ -877,6 +1148,23 @@ type DraftCommandRunnerPlugin = {
|
|
|
877
1148
|
commitSha?: string;
|
|
878
1149
|
}>;
|
|
879
1150
|
};
|
|
1151
|
+
/**
|
|
1152
|
+
* Persistent agent `/workspace/agent` listing for the dashboard.
|
|
1153
|
+
* Cloud injects Modal Volume listing; OSS falls back to org agent object storage.
|
|
1154
|
+
*/
|
|
1155
|
+
type AgentWorkspaceFilesPlugin = {
|
|
1156
|
+
listFiles(input: {
|
|
1157
|
+
organizationId: string;
|
|
1158
|
+
agentId: string;
|
|
1159
|
+
}): Promise<{
|
|
1160
|
+
paths: string[];
|
|
1161
|
+
}>;
|
|
1162
|
+
getFileContent(input: {
|
|
1163
|
+
organizationId: string;
|
|
1164
|
+
agentId: string;
|
|
1165
|
+
path: string;
|
|
1166
|
+
}): Promise<Uint8Array>;
|
|
1167
|
+
};
|
|
880
1168
|
type PlatformWorkerEnvContext = {
|
|
881
1169
|
platformUrl: string; /** Per-org worker token for the org being launched. */
|
|
882
1170
|
workerToken: string;
|
|
@@ -903,6 +1191,11 @@ type PlatformConfigInput = {
|
|
|
903
1191
|
* (OSS / local without `SPRITES_TOKEN`).
|
|
904
1192
|
*/
|
|
905
1193
|
draftCommandRunner?: DraftCommandRunnerPlugin;
|
|
1194
|
+
/**
|
|
1195
|
+
* Agent workspace file listing for the dashboard File system tab.
|
|
1196
|
+
* Cloud injects Modal Volume access; omit to use org agent object storage.
|
|
1197
|
+
*/
|
|
1198
|
+
agentWorkspaceFiles?: AgentWorkspaceFilesPlugin;
|
|
906
1199
|
/**
|
|
907
1200
|
* Transient draft tip fan-out for SSE. Defaults to an in-process notifier
|
|
908
1201
|
* (OSS / single replica). Cloud injects a Redis-backed implementation when
|
|
@@ -922,6 +1215,43 @@ type PlatformConfigInput = {
|
|
|
922
1215
|
* Unset (standalone default) means such jobs are ignored.
|
|
923
1216
|
*/
|
|
924
1217
|
imageRolloutJobHandler?: (payload: JobPayload) => Promise<void>;
|
|
1218
|
+
/**
|
|
1219
|
+
* Handler for `project-agent-sandbox-grace` jobs (Modal project-agent dispose grace).
|
|
1220
|
+
* Unset (standalone default) means such jobs are ignored.
|
|
1221
|
+
*/
|
|
1222
|
+
projectAgentSandboxGraceJobHandler?: (payload: JobPayload) => Promise<void>;
|
|
1223
|
+
/**
|
|
1224
|
+
* Handler for `project-agent-env-image` jobs (org-scoped Modal env Image builds).
|
|
1225
|
+
* Unset (standalone default) means such jobs are ignored.
|
|
1226
|
+
*/
|
|
1227
|
+
projectAgentEnvImageJobHandler?: (payload: JobPayload) => Promise<void>;
|
|
1228
|
+
/**
|
|
1229
|
+
* After a project deploy promotes, enqueue env Image builds from the manifest.
|
|
1230
|
+
* Cloud sets this when Redis + Modal are available.
|
|
1231
|
+
*/
|
|
1232
|
+
afterPromoteProjectDeploy?: (input: {
|
|
1233
|
+
organizationId: string;
|
|
1234
|
+
projectId: string;
|
|
1235
|
+
artifactId: string;
|
|
1236
|
+
manifest: StoredRouteManifest;
|
|
1237
|
+
}) => Promise<void>;
|
|
1238
|
+
/**
|
|
1239
|
+
* Snapshot / enqueue an org-scoped env Image for an agent's `sandboxSetup`.
|
|
1240
|
+
* Cloud sets this when Redis is available.
|
|
1241
|
+
*/
|
|
1242
|
+
snapshotAgentEnvImage?: (input: {
|
|
1243
|
+
organizationId: string;
|
|
1244
|
+
projectId: string;
|
|
1245
|
+
agentSlug: string;
|
|
1246
|
+
}) => Promise<{
|
|
1247
|
+
ok: true;
|
|
1248
|
+
body: AgentEnvImageSnapshotResponse;
|
|
1249
|
+
httpStatus?: number;
|
|
1250
|
+
} | {
|
|
1251
|
+
ok: false;
|
|
1252
|
+
error: string;
|
|
1253
|
+
httpStatus: number;
|
|
1254
|
+
}>;
|
|
925
1255
|
/**
|
|
926
1256
|
* Cloud-only platform-agent (Build tab) plugin: mounts organization routes and
|
|
927
1257
|
* handles `platform-agent` jobs on the shared platform queue.
|
|
@@ -962,5 +1292,5 @@ type PlatformConfig = PlatformConfigInput & {
|
|
|
962
1292
|
};
|
|
963
1293
|
declare function definePlatformConfig(config?: PlatformConfigInput): PlatformConfig;
|
|
964
1294
|
//#endregion
|
|
965
|
-
export {
|
|
966
|
-
//# sourceMappingURL=config-
|
|
1295
|
+
export { HeartbeatManagedDeployRequest as A, OrganizationVariables as C, CompleteManagedDeployArtifactRequest as D, CancelManagedDeployResponse as E, PublishManagedDeployCandidateRequest as F, PublishManagedDeployCandidateResponse as I, RenewManagedDeployUploadRequest as L, PrepareManagedDeployRequest as M, PrepareManagedDeployResponse as N, CompleteManagedDeployArtifactResponse as O, ProjectFileSummary as P, RenewManagedDeployUploadResponse as R, OrganizationHostingResult as S, CancelManagedDeployRequest as T, OrganizationStorageResult as _, PlatformConfigInput as a, HostingPlugin as b, ProjectDraftNotifier as c, LlmProxyHandlerContext as d, LlmProxyPlugin as f, OrganizationStorageInput as g, ProjectGitRepository as h, PlatformConfig as i, HeartbeatManagedDeployResponse as j, CreateDraftCommitRequest as k, createInProcessProjectDraftNotifier as l, ProjectGitProviderPlugin as m, DraftCommandRunnerPlugin as n, PlatformWorkerEnvContext as o, LlmProxyWorkerEnvContext as p, McpProviderPlugin$1 as r, definePlatformConfig as s, AgentWorkspaceFilesPlugin as t, publishDraftUpdateBestEffort as u, StoragePlugin as v, SessionVariables as w, OrganizationHostingInput as x, HostingOptions as y };
|
|
1296
|
+
//# sourceMappingURL=config-5iRrZjyK.d.cts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const require_dist = require("./dist-
|
|
2
|
-
const require_project_draft_notifier = require("./project-draft-notifier
|
|
1
|
+
const require_dist = require("./dist-DWmnC5I9.cjs");
|
|
2
|
+
const require_project_draft_notifier = require("./project-draft-notifier-CHPg2j-8.cjs");
|
|
3
3
|
let node_fs_promises = require("node:fs/promises");
|
|
4
4
|
//#region ../../packages/hosting/dist/docker.mjs
|
|
5
5
|
const MINIO_DOCKER_NETWORK = process.env.MINIO_DOCKER_NETWORK ?? "keystroke";
|
|
@@ -162,4 +162,4 @@ Object.defineProperty(exports, "definePlatformConfig", {
|
|
|
162
162
|
}
|
|
163
163
|
});
|
|
164
164
|
|
|
165
|
-
//# sourceMappingURL=config-
|
|
165
|
+
//# sourceMappingURL=config-6EMCmxRX.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-6EMCmxRX.cjs","names":["resolveRuntimeLaunch","formatDockerEnv","waitForHealth","resolveWorkerRuntimeConfig","minioStoragePlugin","defaultSchedulerPlugin","createInProcessProjectDraftNotifier"],"sources":["../../../packages/hosting/dist/docker.mjs","../src/config.ts"],"sourcesContent":["import { a as formatDockerEnv, c as resolveRuntimeLaunch, h as resolveWorkerRuntimeConfig, t as waitForHealth } from \"./wait-for-health-CgCfteR7.mjs\";\nimport { mkdir } from \"node:fs/promises\";\n//#region src/docker/create-docker-runtime.ts\nconst MINIO_DOCKER_NETWORK = process.env.MINIO_DOCKER_NETWORK ?? \"keystroke\";\nasync function resolveDocker(options) {\n\tif (options.docker) return options.docker;\n\tconst { default: DockerCtor } = await import(\"dockerode\");\n\treturn new DockerCtor();\n}\nfunction createDockerRuntime(options = {}) {\n\treturn {\n\t\tasync start(input) {\n\t\t\tif (input.projects.length === 0) throw new Error(\"Docker org runtime requires at least one project deploy\");\n\t\t\tconst docker = await resolveDocker(options);\n\t\t\tlet launch = resolveRuntimeLaunch(options, input.projects.map((project) => ({\n\t\t\t\tprojectId: project.projectId,\n\t\t\t\tartifactStorageKey: project.artifactStorageKey,\n\t\t\t\tartifactId: project.artifactId,\n\t\t\t\tartifactVersion: project.artifactVersion\n\t\t\t})), input.database, input.env);\n\t\t\tif (options.workspacesMount) {\n\t\t\t\tconst { hostPath, containerPath } = options.workspacesMount;\n\t\t\t\tawait mkdir(hostPath, { recursive: true });\n\t\t\t\tlaunch = {\n\t\t\t\t\t...launch,\n\t\t\t\t\tenv: {\n\t\t\t\t\t\t...launch.env,\n\t\t\t\t\t\tKEYSTROKE_WORKSPACES_ROOT: containerPath\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t\tawait ensureImage(docker, launch.image);\n\t\t\tawait removeExistingContainer(docker, input.organizationId);\n\t\t\tconst binds = [...options.workspacesMount ? [`${options.workspacesMount.hostPath}:${options.workspacesMount.containerPath}`] : [], ...options.extraBinds ?? []];\n\t\t\tconst container = await docker.createContainer({\n\t\t\t\tImage: launch.image,\n\t\t\t\tname: containerName(input.organizationId),\n\t\t\t\tLabels: {\n\t\t\t\t\t\"keystroke.organization.id\": input.organizationId,\n\t\t\t\t\t\"keystroke.project.ids\": input.projects.map((project) => project.projectId).join(\",\")\n\t\t\t\t},\n\t\t\t\tExposedPorts: { [`${launch.port}/tcp`]: {} },\n\t\t\t\tHostConfig: {\n\t\t\t\t\tExtraHosts: [\"host.docker.internal:host-gateway\"],\n\t\t\t\t\tPortBindings: { [`${launch.port}/tcp`]: [{ HostPort: \"0\" }] },\n\t\t\t\t\t...binds.length > 0 ? { Binds: binds } : {}\n\t\t\t\t},\n\t\t\t\tNetworkingConfig: { EndpointsConfig: { [MINIO_DOCKER_NETWORK]: {} } },\n\t\t\t\tEnv: formatDockerEnv(launch.env)\n\t\t\t});\n\t\t\tawait container.start();\n\t\t\tconst inspect = await container.inspect();\n\t\t\tconst binding = inspect.NetworkSettings.Ports?.[`${launch.port}/tcp`]?.[0];\n\t\t\tif (!binding?.HostPort) throw new Error(\"Failed to resolve org container host port\");\n\t\t\tconst baseUrl = `http://127.0.0.1:${binding.HostPort}`;\n\t\t\tawait waitForHealth(baseUrl, {\n\t\t\t\tfetchImpl: options.fetchImpl,\n\t\t\t\ttimeoutMs: options.healthTimeoutMs\n\t\t\t});\n\t\t\treturn {\n\t\t\t\truntimeId: inspect.Id,\n\t\t\t\tbaseUrl\n\t\t\t};\n\t\t},\n\t\tasync destroy(input) {\n\t\t\ttry {\n\t\t\t\tawait (await resolveDocker(options)).getContainer(input.runtimeId).remove({ force: true });\n\t\t\t} catch {}\n\t\t},\n\t\tasync sleep(input) {\n\t\t\tconst container = (await resolveDocker(options)).getContainer(input.runtimeId);\n\t\t\tconst inspect = await container.inspect().catch(() => null);\n\t\t\tif (!inspect) return;\n\t\t\tif (inspect.State.Running) await container.stop({ t: 10 });\n\t\t},\n\t\tasync wake(input) {\n\t\t\tconst container = (await resolveDocker(options)).getContainer(input.runtimeId);\n\t\t\tif (!(await container.inspect()).State.Running) await container.start();\n\t\t\tconst refreshed = await container.inspect();\n\t\t\tconst ports = refreshed.NetworkSettings.Ports ?? {};\n\t\t\tconst binding = Object.values(ports).flat().find((entry) => entry?.HostPort)?.HostPort;\n\t\t\tif (!binding) throw new Error(`Failed to resolve host port for container ${input.runtimeId}`);\n\t\t\tconst baseUrl = `http://127.0.0.1:${binding}`;\n\t\t\tawait waitForHealth(baseUrl, {\n\t\t\t\tfetchImpl: options.fetchImpl,\n\t\t\t\ttimeoutMs: options.healthTimeoutMs\n\t\t\t});\n\t\t\treturn {\n\t\t\t\truntimeId: refreshed.Id,\n\t\t\t\tbaseUrl\n\t\t\t};\n\t\t}\n\t};\n}\nfunction containerName(organizationId) {\n\treturn `keystroke-org-${organizationId}`;\n}\nasync function removeExistingContainer(docker, organizationId) {\n\ttry {\n\t\tconst existing = docker.getContainer(containerName(organizationId));\n\t\tawait existing.stop({ t: 5 }).catch(() => void 0);\n\t\tawait existing.remove({ force: true });\n\t} catch {}\n}\nasync function ensureImage(docker, image) {\n\ttry {\n\t\tawait docker.getImage(image).inspect();\n\t\treturn;\n\t} catch {}\n\tawait new Promise((resolvePromise, reject) => {\n\t\tdocker.pull(image, (error, stream) => {\n\t\t\tif (error) {\n\t\t\t\treject(error);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!stream) {\n\t\t\t\treject(/* @__PURE__ */ new Error(`Failed to pull image ${image}`));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tdocker.modem.followProgress(stream, (progressError) => {\n\t\t\t\tif (progressError) {\n\t\t\t\t\treject(progressError);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tresolvePromise();\n\t\t\t});\n\t\t});\n\t});\n}\n//#endregion\n//#region src/docker/plugin.ts\nfunction dockerPlugin(options = {}) {\n\tconst env = options.env ?? process.env;\n\treturn {\n\t\tname: \"docker\",\n\t\tworkerRuntime: resolveWorkerRuntimeConfig(env),\n\t\tcreateRuntime: () => createDockerRuntime({\n\t\t\t...options,\n\t\t\tenv\n\t\t})\n\t};\n}\n//#endregion\n//#region src/default-plugin.ts\n/** Local Docker hosting — default for platform and dev. */\nfunction defaultHostingPlugin(options = {}) {\n\treturn dockerPlugin(options);\n}\n//#endregion\nexport { defaultHostingPlugin, dockerPlugin };\n\n//# sourceMappingURL=docker.mjs.map","import type { HostingPlugin } from \"@keystrokehq/hosting\";\nimport { defaultHostingPlugin } from \"@keystrokehq/hosting/docker\";\nimport {\n defaultSchedulerPlugin,\n type JobPayload,\n type SchedulerPlugin,\n} from \"@keystrokehq/scheduler\";\nimport { minioStoragePlugin, type StoragePlugin } from \"@keystrokehq/storage\";\nimport type { ProjectGitProviderPlugin } from \"@keystrokehq/project-git\";\n\nimport type { OrgRateLimit } from \"@keystrokehq/shared\";\n\nimport type { LlmProxyPlugin } from \"./llm-proxy-plugin\";\nimport type { McpProviderPlugin } from \"@keystrokehq/http\";\nimport {\n createInProcessProjectDraftNotifier,\n type ProjectDraftNotifier,\n} from \"./services/project-draft-notifier\";\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 { ProjectGitProviderPlugin } from \"@keystrokehq/project-git\";\n\nexport type { ProjectDraftNotifier } from \"./services/project-draft-notifier\";\nexport {\n createInProcessProjectDraftNotifier,\n publishDraftUpdateBestEffort,\n} from \"./services/project-draft-notifier\";\n\n/**\n * Run-scoped disposable Sprite draft command runner. Cloud injects an\n * implementation backed by `@keystroke-cloud/sprites`; OSS omits it.\n * MCP and platform-agent call this later — public platform never imports cloud.\n */\nexport type DraftCommandRunnerPlugin = {\n run(input: {\n remote: { url: string; username: string; password: string };\n commitSha: string;\n command: string;\n /**\n * Optional working directory relative to the disposable checkout root.\n * Traversal outside the checkout is rejected by the runner.\n */\n cwd?: string;\n /**\n * Extra env for the caller command only (after credentials are stripped).\n * Must not be used to restore Git remotes or askpass secrets — the runner\n * always clears credential channels around the command.\n */\n env?: Record<string, string>;\n timeoutMs?: number;\n maxOutputBytes?: number;\n signal?: AbortSignal;\n spriteName?: string;\n commitDiff?: (diff: Uint8Array) => Promise<{ commitSha: string }>;\n }): Promise<{\n spriteName: string;\n exitCode: number;\n output: string;\n truncated: boolean;\n diff: Uint8Array;\n commitSha?: string;\n }>;\n};\n\n/**\n * Persistent agent `/workspace/agent` listing for the dashboard.\n * Cloud injects Modal Volume listing; OSS falls back to org agent object storage.\n */\nexport type AgentWorkspaceFilesPlugin = {\n listFiles(input: { organizationId: string; agentId: string }): Promise<{ paths: string[] }>;\n getFileContent(input: {\n organizationId: string;\n agentId: string;\n path: string;\n }): Promise<Uint8Array>;\n};\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 /**\n * Managed project Git provider. Omit for standalone/local mode without Keystroke-managed repos.\n */\n projectGit?: ProjectGitProviderPlugin;\n /**\n * Disposable Sprite draft command runner. Omit when Sprites are unavailable\n * (OSS / local without `SPRITES_TOKEN`).\n */\n draftCommandRunner?: DraftCommandRunnerPlugin;\n /**\n * Agent workspace file listing for the dashboard File system tab.\n * Cloud injects Modal Volume access; omit to use org agent object storage.\n */\n agentWorkspaceFiles?: AgentWorkspaceFilesPlugin;\n /**\n * Transient draft tip fan-out for SSE. Defaults to an in-process notifier\n * (OSS / single replica). Cloud injects a Redis-backed implementation when\n * Redis is available so multi-replica platforms share updates.\n */\n draftNotifier?: ProjectDraftNotifier;\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 * Handler for `image-rollout` jobs on the platform queue (cloud Fly fleet).\n * Unset (standalone default) means such jobs are ignored.\n */\n imageRolloutJobHandler?: (payload: JobPayload) => Promise<void>;\n /**\n * Handler for `project-agent-sandbox-grace` jobs (Modal project-agent dispose grace).\n * Unset (standalone default) means such jobs are ignored.\n */\n projectAgentSandboxGraceJobHandler?: (payload: JobPayload) => Promise<void>;\n /**\n * Handler for `project-agent-env-image` jobs (org-scoped Modal env Image builds).\n * Unset (standalone default) means such jobs are ignored.\n */\n projectAgentEnvImageJobHandler?: (payload: JobPayload) => Promise<void>;\n /**\n * After a project deploy promotes, enqueue env Image builds from the manifest.\n * Cloud sets this when Redis + Modal are available.\n */\n afterPromoteProjectDeploy?: (input: {\n organizationId: string;\n projectId: string;\n artifactId: string;\n manifest: import(\"@keystrokehq/shared\").StoredRouteManifest;\n }) => Promise<void>;\n /**\n * Snapshot / enqueue an org-scoped env Image for an agent's `sandboxSetup`.\n * Cloud sets this when Redis is available.\n */\n snapshotAgentEnvImage?: (input: {\n organizationId: string;\n projectId: string;\n agentSlug: string;\n }) => Promise<\n | {\n ok: true;\n body: import(\"@keystrokehq/shared\").AgentEnvImageSnapshotResponse;\n httpStatus?: number;\n }\n | { ok: false; error: string; httpStatus: number }\n >;\n /**\n * Cloud-only platform-agent (Build tab) plugin: mounts organization routes and\n * handles `platform-agent` jobs on the shared platform queue.\n */\n platformAgent?: {\n mountOrgRoutes: (\n orgScoped: import(\"hono\").Hono<{\n Variables: import(\"@keystrokehq/http/auth\").OrganizationVariables;\n }>,\n ) => void;\n handleJob: (payload: JobPayload) => Promise<void>;\n onCancel?: (runId: string) => void;\n };\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 draftNotifier: config.draftNotifier ?? createInProcessProjectDraftNotifier(),\n };\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { t as defaultSchedulerPlugin } from "./dist-
|
|
2
|
-
import { C as minioStoragePlugin,
|
|
1
|
+
import { t as defaultSchedulerPlugin } from "./dist-DH4cGe05.mjs";
|
|
2
|
+
import { C as minioStoragePlugin, Da as waitForHealth, Sa as formatDockerEnv, Ta as resolveWorkerRuntimeConfig, t as createInProcessProjectDraftNotifier, wa as resolveRuntimeLaunch } from "./project-draft-notifier-CQH0Sf3F.mjs";
|
|
3
3
|
import { mkdir } from "node:fs/promises";
|
|
4
4
|
//#region ../../packages/hosting/dist/docker.mjs
|
|
5
5
|
const MINIO_DOCKER_NETWORK = process.env.MINIO_DOCKER_NETWORK ?? "keystroke";
|
|
@@ -157,4 +157,4 @@ function definePlatformConfig(config = {}) {
|
|
|
157
157
|
//#endregion
|
|
158
158
|
export { definePlatformConfig as t };
|
|
159
159
|
|
|
160
|
-
//# sourceMappingURL=config-
|
|
160
|
+
//# sourceMappingURL=config-BUnYziJI.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-BUnYziJI.mjs","names":[],"sources":["../../../packages/hosting/dist/docker.mjs","../src/config.ts"],"sourcesContent":["import { a as formatDockerEnv, c as resolveRuntimeLaunch, h as resolveWorkerRuntimeConfig, t as waitForHealth } from \"./wait-for-health-CgCfteR7.mjs\";\nimport { mkdir } from \"node:fs/promises\";\n//#region src/docker/create-docker-runtime.ts\nconst MINIO_DOCKER_NETWORK = process.env.MINIO_DOCKER_NETWORK ?? \"keystroke\";\nasync function resolveDocker(options) {\n\tif (options.docker) return options.docker;\n\tconst { default: DockerCtor } = await import(\"dockerode\");\n\treturn new DockerCtor();\n}\nfunction createDockerRuntime(options = {}) {\n\treturn {\n\t\tasync start(input) {\n\t\t\tif (input.projects.length === 0) throw new Error(\"Docker org runtime requires at least one project deploy\");\n\t\t\tconst docker = await resolveDocker(options);\n\t\t\tlet launch = resolveRuntimeLaunch(options, input.projects.map((project) => ({\n\t\t\t\tprojectId: project.projectId,\n\t\t\t\tartifactStorageKey: project.artifactStorageKey,\n\t\t\t\tartifactId: project.artifactId,\n\t\t\t\tartifactVersion: project.artifactVersion\n\t\t\t})), input.database, input.env);\n\t\t\tif (options.workspacesMount) {\n\t\t\t\tconst { hostPath, containerPath } = options.workspacesMount;\n\t\t\t\tawait mkdir(hostPath, { recursive: true });\n\t\t\t\tlaunch = {\n\t\t\t\t\t...launch,\n\t\t\t\t\tenv: {\n\t\t\t\t\t\t...launch.env,\n\t\t\t\t\t\tKEYSTROKE_WORKSPACES_ROOT: containerPath\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t\tawait ensureImage(docker, launch.image);\n\t\t\tawait removeExistingContainer(docker, input.organizationId);\n\t\t\tconst binds = [...options.workspacesMount ? [`${options.workspacesMount.hostPath}:${options.workspacesMount.containerPath}`] : [], ...options.extraBinds ?? []];\n\t\t\tconst container = await docker.createContainer({\n\t\t\t\tImage: launch.image,\n\t\t\t\tname: containerName(input.organizationId),\n\t\t\t\tLabels: {\n\t\t\t\t\t\"keystroke.organization.id\": input.organizationId,\n\t\t\t\t\t\"keystroke.project.ids\": input.projects.map((project) => project.projectId).join(\",\")\n\t\t\t\t},\n\t\t\t\tExposedPorts: { [`${launch.port}/tcp`]: {} },\n\t\t\t\tHostConfig: {\n\t\t\t\t\tExtraHosts: [\"host.docker.internal:host-gateway\"],\n\t\t\t\t\tPortBindings: { [`${launch.port}/tcp`]: [{ HostPort: \"0\" }] },\n\t\t\t\t\t...binds.length > 0 ? { Binds: binds } : {}\n\t\t\t\t},\n\t\t\t\tNetworkingConfig: { EndpointsConfig: { [MINIO_DOCKER_NETWORK]: {} } },\n\t\t\t\tEnv: formatDockerEnv(launch.env)\n\t\t\t});\n\t\t\tawait container.start();\n\t\t\tconst inspect = await container.inspect();\n\t\t\tconst binding = inspect.NetworkSettings.Ports?.[`${launch.port}/tcp`]?.[0];\n\t\t\tif (!binding?.HostPort) throw new Error(\"Failed to resolve org container host port\");\n\t\t\tconst baseUrl = `http://127.0.0.1:${binding.HostPort}`;\n\t\t\tawait waitForHealth(baseUrl, {\n\t\t\t\tfetchImpl: options.fetchImpl,\n\t\t\t\ttimeoutMs: options.healthTimeoutMs\n\t\t\t});\n\t\t\treturn {\n\t\t\t\truntimeId: inspect.Id,\n\t\t\t\tbaseUrl\n\t\t\t};\n\t\t},\n\t\tasync destroy(input) {\n\t\t\ttry {\n\t\t\t\tawait (await resolveDocker(options)).getContainer(input.runtimeId).remove({ force: true });\n\t\t\t} catch {}\n\t\t},\n\t\tasync sleep(input) {\n\t\t\tconst container = (await resolveDocker(options)).getContainer(input.runtimeId);\n\t\t\tconst inspect = await container.inspect().catch(() => null);\n\t\t\tif (!inspect) return;\n\t\t\tif (inspect.State.Running) await container.stop({ t: 10 });\n\t\t},\n\t\tasync wake(input) {\n\t\t\tconst container = (await resolveDocker(options)).getContainer(input.runtimeId);\n\t\t\tif (!(await container.inspect()).State.Running) await container.start();\n\t\t\tconst refreshed = await container.inspect();\n\t\t\tconst ports = refreshed.NetworkSettings.Ports ?? {};\n\t\t\tconst binding = Object.values(ports).flat().find((entry) => entry?.HostPort)?.HostPort;\n\t\t\tif (!binding) throw new Error(`Failed to resolve host port for container ${input.runtimeId}`);\n\t\t\tconst baseUrl = `http://127.0.0.1:${binding}`;\n\t\t\tawait waitForHealth(baseUrl, {\n\t\t\t\tfetchImpl: options.fetchImpl,\n\t\t\t\ttimeoutMs: options.healthTimeoutMs\n\t\t\t});\n\t\t\treturn {\n\t\t\t\truntimeId: refreshed.Id,\n\t\t\t\tbaseUrl\n\t\t\t};\n\t\t}\n\t};\n}\nfunction containerName(organizationId) {\n\treturn `keystroke-org-${organizationId}`;\n}\nasync function removeExistingContainer(docker, organizationId) {\n\ttry {\n\t\tconst existing = docker.getContainer(containerName(organizationId));\n\t\tawait existing.stop({ t: 5 }).catch(() => void 0);\n\t\tawait existing.remove({ force: true });\n\t} catch {}\n}\nasync function ensureImage(docker, image) {\n\ttry {\n\t\tawait docker.getImage(image).inspect();\n\t\treturn;\n\t} catch {}\n\tawait new Promise((resolvePromise, reject) => {\n\t\tdocker.pull(image, (error, stream) => {\n\t\t\tif (error) {\n\t\t\t\treject(error);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!stream) {\n\t\t\t\treject(/* @__PURE__ */ new Error(`Failed to pull image ${image}`));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tdocker.modem.followProgress(stream, (progressError) => {\n\t\t\t\tif (progressError) {\n\t\t\t\t\treject(progressError);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tresolvePromise();\n\t\t\t});\n\t\t});\n\t});\n}\n//#endregion\n//#region src/docker/plugin.ts\nfunction dockerPlugin(options = {}) {\n\tconst env = options.env ?? process.env;\n\treturn {\n\t\tname: \"docker\",\n\t\tworkerRuntime: resolveWorkerRuntimeConfig(env),\n\t\tcreateRuntime: () => createDockerRuntime({\n\t\t\t...options,\n\t\t\tenv\n\t\t})\n\t};\n}\n//#endregion\n//#region src/default-plugin.ts\n/** Local Docker hosting — default for platform and dev. */\nfunction defaultHostingPlugin(options = {}) {\n\treturn dockerPlugin(options);\n}\n//#endregion\nexport { defaultHostingPlugin, dockerPlugin };\n\n//# sourceMappingURL=docker.mjs.map","import type { HostingPlugin } from \"@keystrokehq/hosting\";\nimport { defaultHostingPlugin } from \"@keystrokehq/hosting/docker\";\nimport {\n defaultSchedulerPlugin,\n type JobPayload,\n type SchedulerPlugin,\n} from \"@keystrokehq/scheduler\";\nimport { minioStoragePlugin, type StoragePlugin } from \"@keystrokehq/storage\";\nimport type { ProjectGitProviderPlugin } from \"@keystrokehq/project-git\";\n\nimport type { OrgRateLimit } from \"@keystrokehq/shared\";\n\nimport type { LlmProxyPlugin } from \"./llm-proxy-plugin\";\nimport type { McpProviderPlugin } from \"@keystrokehq/http\";\nimport {\n createInProcessProjectDraftNotifier,\n type ProjectDraftNotifier,\n} from \"./services/project-draft-notifier\";\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 { ProjectGitProviderPlugin } from \"@keystrokehq/project-git\";\n\nexport type { ProjectDraftNotifier } from \"./services/project-draft-notifier\";\nexport {\n createInProcessProjectDraftNotifier,\n publishDraftUpdateBestEffort,\n} from \"./services/project-draft-notifier\";\n\n/**\n * Run-scoped disposable Sprite draft command runner. Cloud injects an\n * implementation backed by `@keystroke-cloud/sprites`; OSS omits it.\n * MCP and platform-agent call this later — public platform never imports cloud.\n */\nexport type DraftCommandRunnerPlugin = {\n run(input: {\n remote: { url: string; username: string; password: string };\n commitSha: string;\n command: string;\n /**\n * Optional working directory relative to the disposable checkout root.\n * Traversal outside the checkout is rejected by the runner.\n */\n cwd?: string;\n /**\n * Extra env for the caller command only (after credentials are stripped).\n * Must not be used to restore Git remotes or askpass secrets — the runner\n * always clears credential channels around the command.\n */\n env?: Record<string, string>;\n timeoutMs?: number;\n maxOutputBytes?: number;\n signal?: AbortSignal;\n spriteName?: string;\n commitDiff?: (diff: Uint8Array) => Promise<{ commitSha: string }>;\n }): Promise<{\n spriteName: string;\n exitCode: number;\n output: string;\n truncated: boolean;\n diff: Uint8Array;\n commitSha?: string;\n }>;\n};\n\n/**\n * Persistent agent `/workspace/agent` listing for the dashboard.\n * Cloud injects Modal Volume listing; OSS falls back to org agent object storage.\n */\nexport type AgentWorkspaceFilesPlugin = {\n listFiles(input: { organizationId: string; agentId: string }): Promise<{ paths: string[] }>;\n getFileContent(input: {\n organizationId: string;\n agentId: string;\n path: string;\n }): Promise<Uint8Array>;\n};\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 /**\n * Managed project Git provider. Omit for standalone/local mode without Keystroke-managed repos.\n */\n projectGit?: ProjectGitProviderPlugin;\n /**\n * Disposable Sprite draft command runner. Omit when Sprites are unavailable\n * (OSS / local without `SPRITES_TOKEN`).\n */\n draftCommandRunner?: DraftCommandRunnerPlugin;\n /**\n * Agent workspace file listing for the dashboard File system tab.\n * Cloud injects Modal Volume access; omit to use org agent object storage.\n */\n agentWorkspaceFiles?: AgentWorkspaceFilesPlugin;\n /**\n * Transient draft tip fan-out for SSE. Defaults to an in-process notifier\n * (OSS / single replica). Cloud injects a Redis-backed implementation when\n * Redis is available so multi-replica platforms share updates.\n */\n draftNotifier?: ProjectDraftNotifier;\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 * Handler for `image-rollout` jobs on the platform queue (cloud Fly fleet).\n * Unset (standalone default) means such jobs are ignored.\n */\n imageRolloutJobHandler?: (payload: JobPayload) => Promise<void>;\n /**\n * Handler for `project-agent-sandbox-grace` jobs (Modal project-agent dispose grace).\n * Unset (standalone default) means such jobs are ignored.\n */\n projectAgentSandboxGraceJobHandler?: (payload: JobPayload) => Promise<void>;\n /**\n * Handler for `project-agent-env-image` jobs (org-scoped Modal env Image builds).\n * Unset (standalone default) means such jobs are ignored.\n */\n projectAgentEnvImageJobHandler?: (payload: JobPayload) => Promise<void>;\n /**\n * After a project deploy promotes, enqueue env Image builds from the manifest.\n * Cloud sets this when Redis + Modal are available.\n */\n afterPromoteProjectDeploy?: (input: {\n organizationId: string;\n projectId: string;\n artifactId: string;\n manifest: import(\"@keystrokehq/shared\").StoredRouteManifest;\n }) => Promise<void>;\n /**\n * Snapshot / enqueue an org-scoped env Image for an agent's `sandboxSetup`.\n * Cloud sets this when Redis is available.\n */\n snapshotAgentEnvImage?: (input: {\n organizationId: string;\n projectId: string;\n agentSlug: string;\n }) => Promise<\n | {\n ok: true;\n body: import(\"@keystrokehq/shared\").AgentEnvImageSnapshotResponse;\n httpStatus?: number;\n }\n | { ok: false; error: string; httpStatus: number }\n >;\n /**\n * Cloud-only platform-agent (Build tab) plugin: mounts organization routes and\n * handles `platform-agent` jobs on the shared platform queue.\n */\n platformAgent?: {\n mountOrgRoutes: (\n orgScoped: import(\"hono\").Hono<{\n Variables: import(\"@keystrokehq/http/auth\").OrganizationVariables;\n }>,\n ) => void;\n handleJob: (payload: JobPayload) => Promise<void>;\n onCancel?: (runId: string) => void;\n };\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 draftNotifier: config.draftNotifier ?? createInProcessProjectDraftNotifier(),\n };\n}\n"],"mappings":"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"}
|