@keystrokehq/platform 0.1.3 → 0.1.5
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-BE8esz9o.cjs → awk2-LA3USKJP-AIZOQ0nh.cjs} +2 -2
- package/dist/{awk2-LA3USKJP-BE8esz9o.cjs.map → awk2-LA3USKJP-AIZOQ0nh.cjs.map} +1 -1
- package/dist/{awk2-LA3USKJP-CU79F18c.mjs → awk2-LA3USKJP-CPcab6tL.mjs} +2 -2
- package/dist/{awk2-LA3USKJP-CU79F18c.mjs.map → awk2-LA3USKJP-CPcab6tL.mjs.map} +1 -1
- package/dist/{base64-C2AIWVNC-ESsdavRZ.mjs → base64-C2AIWVNC-BU7vFrSz.mjs} +2 -2
- package/dist/{base64-C2AIWVNC-ESsdavRZ.mjs.map → base64-C2AIWVNC-BU7vFrSz.mjs.map} +1 -1
- package/dist/{base64-C2AIWVNC-CGFeI4Fm.cjs → base64-C2AIWVNC-fWp5IaIt.cjs} +2 -2
- package/dist/{base64-C2AIWVNC-CGFeI4Fm.cjs.map → base64-C2AIWVNC-fWp5IaIt.cjs.map} +1 -1
- package/dist/{bash-YZ33HQZQ-Tqw_IzZM.mjs → bash-YZ33HQZQ-B7vkAJM1.mjs} +2 -2
- package/dist/{bash-YZ33HQZQ-Tqw_IzZM.mjs.map → bash-YZ33HQZQ-B7vkAJM1.mjs.map} +1 -1
- package/dist/{bash-YZ33HQZQ-Z8YFnXLG.cjs → bash-YZ33HQZQ-BfFH_xKv.cjs} +2 -2
- package/dist/{bash-YZ33HQZQ-Z8YFnXLG.cjs.map → bash-YZ33HQZQ-BfFH_xKv.cjs.map} +1 -1
- package/dist/{cat-TSFMZVYS-B-Qi4MIN.mjs → cat-TSFMZVYS-BoRCwL0X.mjs} +3 -3
- package/dist/{cat-TSFMZVYS-B-Qi4MIN.mjs.map → cat-TSFMZVYS-BoRCwL0X.mjs.map} +1 -1
- package/dist/{cat-TSFMZVYS-3tq36V6U.cjs → cat-TSFMZVYS-Lk2fLg0m.cjs} +3 -3
- package/dist/{cat-TSFMZVYS-3tq36V6U.cjs.map → cat-TSFMZVYS-Lk2fLg0m.cjs.map} +1 -1
- package/dist/{chunk-5H5SCKJM-DG2zdmBl.cjs → chunk-5H5SCKJM-Bf_pfjgz.cjs} +2 -2
- package/dist/{chunk-5H5SCKJM-DG2zdmBl.cjs.map → chunk-5H5SCKJM-Bf_pfjgz.cjs.map} +1 -1
- package/dist/{chunk-5H5SCKJM-jzOek3RA.mjs → chunk-5H5SCKJM-CCkl-6iR.mjs} +2 -2
- package/dist/{chunk-5H5SCKJM-jzOek3RA.mjs.map → chunk-5H5SCKJM-CCkl-6iR.mjs.map} +1 -1
- package/dist/{chunk-AQ6FYS2X-CWRY3oXA.cjs → chunk-AQ6FYS2X-C_kf5YCJ.cjs} +2 -2
- package/dist/{chunk-AQ6FYS2X-CWRY3oXA.cjs.map → chunk-AQ6FYS2X-C_kf5YCJ.cjs.map} +1 -1
- package/dist/{chunk-AQ6FYS2X-Bz4Sl0he.mjs → chunk-AQ6FYS2X-CaSbvwYS.mjs} +2 -2
- package/dist/{chunk-AQ6FYS2X-Bz4Sl0he.mjs.map → chunk-AQ6FYS2X-CaSbvwYS.mjs.map} +1 -1
- package/dist/{chunk-CHFEPBH4-Cg_Ca4ca.mjs → chunk-CHFEPBH4-Bk9Prhxt.mjs} +2 -2
- package/dist/{chunk-CHFEPBH4-Cg_Ca4ca.mjs.map → chunk-CHFEPBH4-Bk9Prhxt.mjs.map} +1 -1
- package/dist/{chunk-CHFEPBH4-BjRBtKoa.cjs → chunk-CHFEPBH4-Cdk9vq_c.cjs} +2 -2
- package/dist/{chunk-CHFEPBH4-BjRBtKoa.cjs.map → chunk-CHFEPBH4-Cdk9vq_c.cjs.map} +1 -1
- package/dist/{chunk-EBAPSGAO-TuSvdjDg.cjs → chunk-EBAPSGAO-9HAVo6nm.cjs} +2 -2
- package/dist/{chunk-EBAPSGAO-TuSvdjDg.cjs.map → chunk-EBAPSGAO-9HAVo6nm.cjs.map} +1 -1
- package/dist/{chunk-EBAPSGAO-BAjudTzg.mjs → chunk-EBAPSGAO-BPVz-6BX.mjs} +2 -2
- package/dist/{chunk-EBAPSGAO-BAjudTzg.mjs.map → chunk-EBAPSGAO-BPVz-6BX.mjs.map} +1 -1
- package/dist/{chunk-LEKBROJD-VngQ-bGK.cjs → chunk-LEKBROJD-4MTnJXG3.cjs} +2 -2
- package/dist/{chunk-LEKBROJD-VngQ-bGK.cjs.map → chunk-LEKBROJD-4MTnJXG3.cjs.map} +1 -1
- package/dist/{chunk-LEKBROJD-B7WoDbJJ.mjs → chunk-LEKBROJD-Bk_pJfFK.mjs} +2 -2
- package/dist/{chunk-LEKBROJD-B7WoDbJJ.mjs.map → chunk-LEKBROJD-Bk_pJfFK.mjs.map} +1 -1
- package/dist/{chunk-VPADYNBD-B7JoVwJq.mjs → chunk-VPADYNBD-Bc5abqkF.mjs} +2 -2
- package/dist/{chunk-VPADYNBD-B7JoVwJq.mjs.map → chunk-VPADYNBD-Bc5abqkF.mjs.map} +1 -1
- package/dist/{chunk-VPADYNBD-Ju6wgxLY.cjs → chunk-VPADYNBD-CS9VA1aJ.cjs} +2 -2
- package/dist/{chunk-VPADYNBD-Ju6wgxLY.cjs.map → chunk-VPADYNBD-CS9VA1aJ.cjs.map} +1 -1
- package/dist/{chunk-YCLFEX4T-BoIwWBSQ.mjs → chunk-YCLFEX4T-Cz2QbPh0.mjs} +2 -2
- package/dist/{chunk-YCLFEX4T-BoIwWBSQ.mjs.map → chunk-YCLFEX4T-Cz2QbPh0.mjs.map} +1 -1
- package/dist/{chunk-YCLFEX4T-81Ii8Wlf.cjs → chunk-YCLFEX4T-D65vwGHr.cjs} +2 -2
- package/dist/{chunk-YCLFEX4T-81Ii8Wlf.cjs.map → chunk-YCLFEX4T-D65vwGHr.cjs.map} +1 -1
- package/dist/{column-XT6UFXNQ-B8RfIkpb.mjs → column-XT6UFXNQ-BsXqWbAP.mjs} +2 -2
- package/dist/{column-XT6UFXNQ-B8RfIkpb.mjs.map → column-XT6UFXNQ-BsXqWbAP.mjs.map} +1 -1
- package/dist/{column-XT6UFXNQ-ieIKmRkh.cjs → column-XT6UFXNQ-CwtLFuCh.cjs} +2 -2
- package/dist/{column-XT6UFXNQ-ieIKmRkh.cjs.map → column-XT6UFXNQ-CwtLFuCh.cjs.map} +1 -1
- package/dist/{comm-VV2LDX2J-DEKxgGlr.mjs → comm-VV2LDX2J-BZdS-Fqy.mjs} +2 -2
- package/dist/{comm-VV2LDX2J-DEKxgGlr.mjs.map → comm-VV2LDX2J-BZdS-Fqy.mjs.map} +1 -1
- package/dist/{comm-VV2LDX2J-CdE-OYeG.cjs → comm-VV2LDX2J-YL8m_4d1.cjs} +2 -2
- package/dist/{comm-VV2LDX2J-CdE-OYeG.cjs.map → comm-VV2LDX2J-YL8m_4d1.cjs.map} +1 -1
- package/dist/{config-CXBff_fs.d.mts → config-DF8H5mS5.d.mts} +17 -13
- package/dist/{config-C78TqlE1.d.cts → config-DqyMT-Xg.d.cts} +17 -13
- package/dist/config.cjs +1 -1
- package/dist/config.cjs.map +1 -1
- package/dist/config.d.cts +1 -1
- package/dist/config.d.mts +1 -1
- package/dist/config.mjs +1 -1
- package/dist/config.mjs.map +1 -1
- package/dist/{cp-BISAAS7A-CMVh32j_.mjs → cp-BISAAS7A-C0MVoZpt.mjs} +2 -2
- package/dist/{cp-BISAAS7A-CMVh32j_.mjs.map → cp-BISAAS7A-C0MVoZpt.mjs.map} +1 -1
- package/dist/{cp-BISAAS7A-C1ygPb-h.cjs → cp-BISAAS7A-Dx6QG-P9.cjs} +2 -2
- package/dist/{cp-BISAAS7A-C1ygPb-h.cjs.map → cp-BISAAS7A-Dx6QG-P9.cjs.map} +1 -1
- package/dist/{cut-OKARJCCV-CluNzLiu.mjs → cut-OKARJCCV-BKWEQwCZ.mjs} +3 -3
- package/dist/{cut-OKARJCCV-CluNzLiu.mjs.map → cut-OKARJCCV-BKWEQwCZ.mjs.map} +1 -1
- package/dist/{cut-OKARJCCV-S-g4hG3d.cjs → cut-OKARJCCV-C1CAocst.cjs} +3 -3
- package/dist/{cut-OKARJCCV-S-g4hG3d.cjs.map → cut-OKARJCCV-C1CAocst.cjs.map} +1 -1
- package/dist/{diff-MWJFIG7X-Xtqp7FtF.cjs → diff-MWJFIG7X-D5nTdPdk.cjs} +2 -2
- package/dist/{diff-MWJFIG7X-Xtqp7FtF.cjs.map → diff-MWJFIG7X-D5nTdPdk.cjs.map} +1 -1
- package/dist/{diff-MWJFIG7X-CuSut3C1.mjs → diff-MWJFIG7X-YTniIfbL.mjs} +2 -2
- package/dist/{diff-MWJFIG7X-CuSut3C1.mjs.map → diff-MWJFIG7X-YTniIfbL.mjs.map} +1 -1
- package/dist/{dist-D1Iv7_7S.cjs → dist-C3ioU2dM.cjs} +559 -329
- package/dist/{dist-D1Iv7_7S.cjs.map → dist-C3ioU2dM.cjs.map} +1 -1
- package/dist/{dist-70NUfApd.mjs → dist-CQMZgfp_.mjs} +518 -330
- package/dist/dist-CQMZgfp_.mjs.map +1 -0
- package/dist/{du-572XNP42-f68GOB47.cjs → du-572XNP42-B2vhVgxe.cjs} +2 -2
- package/dist/{du-572XNP42-f68GOB47.cjs.map → du-572XNP42-B2vhVgxe.cjs.map} +1 -1
- package/dist/{du-572XNP42-BTLDH4CK.mjs → du-572XNP42-CmxmrMJd.mjs} +2 -2
- package/dist/{du-572XNP42-BTLDH4CK.mjs.map → du-572XNP42-CmxmrMJd.mjs.map} +1 -1
- package/dist/{env-36M5BO7M-DHcnOUrA.cjs → env-36M5BO7M-Dj2YwzST.cjs} +2 -2
- package/dist/{env-36M5BO7M-DHcnOUrA.cjs.map → env-36M5BO7M-Dj2YwzST.cjs.map} +1 -1
- package/dist/{env-36M5BO7M-CjuGiDaW.mjs → env-36M5BO7M-DupdD4fz.mjs} +2 -2
- package/dist/{env-36M5BO7M-CjuGiDaW.mjs.map → env-36M5BO7M-DupdD4fz.mjs.map} +1 -1
- package/dist/{expand-JSPG6VOP-Cmm7S480.mjs → expand-JSPG6VOP-BtD3fO-u.mjs} +2 -2
- package/dist/{expand-JSPG6VOP-Cmm7S480.mjs.map → expand-JSPG6VOP-BtD3fO-u.mjs.map} +1 -1
- package/dist/{expand-JSPG6VOP-BAEvLz6y.cjs → expand-JSPG6VOP-C4VQzWfg.cjs} +2 -2
- package/dist/{expand-JSPG6VOP-BAEvLz6y.cjs.map → expand-JSPG6VOP-C4VQzWfg.cjs.map} +1 -1
- package/dist/{expr-5JAACS4X-C3PXSs0i.mjs → expr-5JAACS4X-C75E9ncn.mjs} +2 -2
- package/dist/{expr-5JAACS4X-C3PXSs0i.mjs.map → expr-5JAACS4X-C75E9ncn.mjs.map} +1 -1
- package/dist/{expr-5JAACS4X-BFLtaqNy.cjs → expr-5JAACS4X-DX-k1Bjo.cjs} +2 -2
- package/dist/{expr-5JAACS4X-BFLtaqNy.cjs.map → expr-5JAACS4X-DX-k1Bjo.cjs.map} +1 -1
- package/dist/{find-INTH3OLC-Bf3-4Zi2.cjs → find-INTH3OLC-2rIv2Sgt.cjs} +3 -3
- package/dist/{find-INTH3OLC-Bf3-4Zi2.cjs.map → find-INTH3OLC-2rIv2Sgt.cjs.map} +1 -1
- package/dist/{find-INTH3OLC-D6wBmhsd.mjs → find-INTH3OLC-B2oqqlwt.mjs} +3 -3
- package/dist/{find-INTH3OLC-D6wBmhsd.mjs.map → find-INTH3OLC-B2oqqlwt.mjs.map} +1 -1
- package/dist/{fold-4TQNYMSW-BIl_iV0S.cjs → fold-4TQNYMSW-DFQEjMsZ.cjs} +2 -2
- package/dist/{fold-4TQNYMSW-BIl_iV0S.cjs.map → fold-4TQNYMSW-DFQEjMsZ.cjs.map} +1 -1
- package/dist/{fold-4TQNYMSW-BVCyD8C0.mjs → fold-4TQNYMSW-DzA5SsAN.mjs} +2 -2
- package/dist/{fold-4TQNYMSW-BVCyD8C0.mjs.map → fold-4TQNYMSW-DzA5SsAN.mjs.map} +1 -1
- package/dist/{grep-V3LQVMRQ-BLwElJ9a.mjs → grep-V3LQVMRQ-CUJiTsKp.mjs} +4 -4
- package/dist/{grep-V3LQVMRQ-BLwElJ9a.mjs.map → grep-V3LQVMRQ-CUJiTsKp.mjs.map} +1 -1
- package/dist/{grep-V3LQVMRQ-BcfmH0yO.cjs → grep-V3LQVMRQ-D--OXkar.cjs} +4 -4
- package/dist/{grep-V3LQVMRQ-BcfmH0yO.cjs.map → grep-V3LQVMRQ-D--OXkar.cjs.map} +1 -1
- package/dist/{gzip-O5ASJAFY-B9ermjPq.cjs → gzip-O5ASJAFY-B3o0_eql.cjs} +2 -2
- package/dist/{gzip-O5ASJAFY-B9ermjPq.cjs.map → gzip-O5ASJAFY-B3o0_eql.cjs.map} +1 -1
- package/dist/{gzip-O5ASJAFY-BjVFU42g.mjs → gzip-O5ASJAFY-D8i6m9_W.mjs} +2 -2
- package/dist/{gzip-O5ASJAFY-BjVFU42g.mjs.map → gzip-O5ASJAFY-D8i6m9_W.mjs.map} +1 -1
- package/dist/{head-442HYESI-BGRcjEMI.mjs → head-442HYESI-BDYHKho-.mjs} +2 -2
- package/dist/{head-442HYESI-BGRcjEMI.mjs.map → head-442HYESI-BDYHKho-.mjs.map} +1 -1
- package/dist/{head-442HYESI-_RXn0SBi.cjs → head-442HYESI-Bztg6Xka.cjs} +2 -2
- package/dist/{head-442HYESI-_RXn0SBi.cjs.map → head-442HYESI-Bztg6Xka.cjs.map} +1 -1
- package/dist/{help-HZ6M2CKN-BCHt7Yu_.mjs → help-HZ6M2CKN-C95bcvt_.mjs} +2 -2
- package/dist/{help-HZ6M2CKN-BCHt7Yu_.mjs.map → help-HZ6M2CKN-C95bcvt_.mjs.map} +1 -1
- package/dist/{help-HZ6M2CKN-DJP0l3xk.cjs → help-HZ6M2CKN-CFA5POOW.cjs} +2 -2
- package/dist/{help-HZ6M2CKN-DJP0l3xk.cjs.map → help-HZ6M2CKN-CFA5POOW.cjs.map} +1 -1
- package/dist/{html-to-markdown-JW4MSQZO-Dq7eYKW0.mjs → html-to-markdown-JW4MSQZO-8YYzjAx0.mjs} +2 -2
- package/dist/{html-to-markdown-JW4MSQZO-Dq7eYKW0.mjs.map → html-to-markdown-JW4MSQZO-8YYzjAx0.mjs.map} +1 -1
- package/dist/{html-to-markdown-JW4MSQZO-yoaOs45E.cjs → html-to-markdown-JW4MSQZO-B3xkcb1w.cjs} +2 -2
- package/dist/{html-to-markdown-JW4MSQZO-yoaOs45E.cjs.map → html-to-markdown-JW4MSQZO-B3xkcb1w.cjs.map} +1 -1
- package/dist/{join-TBRGI3LQ-BU7FYSK3.mjs → join-TBRGI3LQ-Cb96ZaTF.mjs} +2 -2
- package/dist/{join-TBRGI3LQ-BU7FYSK3.mjs.map → join-TBRGI3LQ-Cb96ZaTF.mjs.map} +1 -1
- package/dist/{join-TBRGI3LQ-BOS3zpbh.cjs → join-TBRGI3LQ-CzBO0uid.cjs} +2 -2
- package/dist/{join-TBRGI3LQ-BOS3zpbh.cjs.map → join-TBRGI3LQ-CzBO0uid.cjs.map} +1 -1
- package/dist/{jq-4XLYLOS5-C-4KbpIO.cjs → jq-4XLYLOS5-Dmw7PtvC.cjs} +4 -4
- package/dist/{jq-4XLYLOS5-C-4KbpIO.cjs.map → jq-4XLYLOS5-Dmw7PtvC.cjs.map} +1 -1
- package/dist/{jq-4XLYLOS5-tfCBGz19.mjs → jq-4XLYLOS5-QEF-9JGc.mjs} +4 -4
- package/dist/{jq-4XLYLOS5-tfCBGz19.mjs.map → jq-4XLYLOS5-QEF-9JGc.mjs.map} +1 -1
- package/dist/{js-exec-N5KEZBH7--5grqRpb.cjs → js-exec-N5KEZBH7-BLGWy2LA.cjs} +4 -4
- package/dist/{js-exec-N5KEZBH7--5grqRpb.cjs.map → js-exec-N5KEZBH7-BLGWy2LA.cjs.map} +1 -1
- package/dist/{js-exec-N5KEZBH7-C5C01q6k.mjs → js-exec-N5KEZBH7-DWi8fMhN.mjs} +4 -4
- package/dist/{js-exec-N5KEZBH7-C5C01q6k.mjs.map → js-exec-N5KEZBH7-DWi8fMhN.mjs.map} +1 -1
- package/dist/{lib-CNke9ACR.mjs → lib-C8lgRYXp.mjs} +2 -2
- package/dist/{lib-CNke9ACR.mjs.map → lib-C8lgRYXp.mjs.map} +1 -1
- package/dist/{lib-CW0fuh-i.cjs → lib-ux1xJJmr.cjs} +2 -2
- package/dist/{lib-CW0fuh-i.cjs.map → lib-ux1xJJmr.cjs.map} +1 -1
- package/dist/{ln-4LGSXXGD-Cy8gNPMC.mjs → ln-4LGSXXGD-BtA5nI4o.mjs} +2 -2
- package/dist/{ln-4LGSXXGD-Cy8gNPMC.mjs.map → ln-4LGSXXGD-BtA5nI4o.mjs.map} +1 -1
- package/dist/{ln-4LGSXXGD-B0nikKzZ.cjs → ln-4LGSXXGD-CkQRVPru.cjs} +2 -2
- package/dist/{ln-4LGSXXGD-B0nikKzZ.cjs.map → ln-4LGSXXGD-CkQRVPru.cjs.map} +1 -1
- package/dist/{ls-ZJGQER7M-DMYpsOhX.mjs → ls-ZJGQER7M-Bm9zc4KC.mjs} +2 -2
- package/dist/{ls-ZJGQER7M-DMYpsOhX.mjs.map → ls-ZJGQER7M-Bm9zc4KC.mjs.map} +1 -1
- package/dist/{ls-ZJGQER7M-CaSRbmLC.cjs → ls-ZJGQER7M-H5DDO7bw.cjs} +2 -2
- package/dist/{ls-ZJGQER7M-CaSRbmLC.cjs.map → ls-ZJGQER7M-H5DDO7bw.cjs.map} +1 -1
- package/dist/{lzma-L8nnN88o.cjs → lzma-CjqgTQ5J.cjs} +2 -2
- package/dist/{lzma-L8nnN88o.cjs.map → lzma-CjqgTQ5J.cjs.map} +1 -1
- package/dist/{md5sum-SPU24VSG-wjaqw6M5.cjs → md5sum-SPU24VSG-B6JGibcS.cjs} +3 -3
- package/dist/{md5sum-SPU24VSG-wjaqw6M5.cjs.map → md5sum-SPU24VSG-B6JGibcS.cjs.map} +1 -1
- package/dist/{md5sum-SPU24VSG-DDehVi3L.mjs → md5sum-SPU24VSG-Dqy3agsE.mjs} +3 -3
- package/dist/{md5sum-SPU24VSG-DDehVi3L.mjs.map → md5sum-SPU24VSG-Dqy3agsE.mjs.map} +1 -1
- package/dist/{mkdir-MEPGZOB6-D6EapQqG.cjs → mkdir-MEPGZOB6-BFwkd4Z7.cjs} +2 -2
- package/dist/{mkdir-MEPGZOB6-D6EapQqG.cjs.map → mkdir-MEPGZOB6-BFwkd4Z7.cjs.map} +1 -1
- package/dist/{mkdir-MEPGZOB6-BoeUbSt6.mjs → mkdir-MEPGZOB6-CMrYu1Ht.mjs} +2 -2
- package/dist/{mkdir-MEPGZOB6-BoeUbSt6.mjs.map → mkdir-MEPGZOB6-CMrYu1Ht.mjs.map} +1 -1
- package/dist/{mv-W5BIQ646-ee9iH5gF.mjs → mv-W5BIQ646-CWgyAnYE.mjs} +2 -2
- package/dist/{mv-W5BIQ646-ee9iH5gF.mjs.map → mv-W5BIQ646-CWgyAnYE.mjs.map} +1 -1
- package/dist/{mv-W5BIQ646-Cl3grRdX.cjs → mv-W5BIQ646-hheW03eh.cjs} +2 -2
- package/dist/{mv-W5BIQ646-Cl3grRdX.cjs.map → mv-W5BIQ646-hheW03eh.cjs.map} +1 -1
- package/dist/{nl-WSDW7I4O-DttNn_cO.cjs → nl-WSDW7I4O-DcVnQp-1.cjs} +2 -2
- package/dist/{nl-WSDW7I4O-DttNn_cO.cjs.map → nl-WSDW7I4O-DcVnQp-1.cjs.map} +1 -1
- package/dist/{nl-WSDW7I4O-DveMZ08l.mjs → nl-WSDW7I4O-hZyrJS6m.mjs} +2 -2
- package/dist/{nl-WSDW7I4O-DveMZ08l.mjs.map → nl-WSDW7I4O-hZyrJS6m.mjs.map} +1 -1
- package/dist/{od-WOKFDJTP-DCy3_AZ5.mjs → od-WOKFDJTP-60QMVWxL.mjs} +2 -2
- package/dist/{od-WOKFDJTP-DCy3_AZ5.mjs.map → od-WOKFDJTP-60QMVWxL.mjs.map} +1 -1
- package/dist/{od-WOKFDJTP-BJWjPFho.cjs → od-WOKFDJTP-CIGKYa74.cjs} +2 -2
- package/dist/{od-WOKFDJTP-BJWjPFho.cjs.map → od-WOKFDJTP-CIGKYa74.cjs.map} +1 -1
- package/dist/{paste-7JC6S4DX-DEoyg9Vv.cjs → paste-7JC6S4DX-CC0xWPbo.cjs} +2 -2
- package/dist/{paste-7JC6S4DX-DEoyg9Vv.cjs.map → paste-7JC6S4DX-CC0xWPbo.cjs.map} +1 -1
- package/dist/{paste-7JC6S4DX-DL9UawIf.mjs → paste-7JC6S4DX-QB7MigtV.mjs} +2 -2
- package/dist/{paste-7JC6S4DX-DL9UawIf.mjs.map → paste-7JC6S4DX-QB7MigtV.mjs.map} +1 -1
- package/dist/{printf-TWGXF445-BlwG6dD2.mjs → printf-TWGXF445-BuI_jQx5.mjs} +2 -2
- package/dist/{printf-TWGXF445-BlwG6dD2.mjs.map → printf-TWGXF445-BuI_jQx5.mjs.map} +1 -1
- package/dist/{printf-TWGXF445-B1fsJl2X.cjs → printf-TWGXF445-bSICkDD6.cjs} +2 -2
- package/dist/{printf-TWGXF445-B1fsJl2X.cjs.map → printf-TWGXF445-bSICkDD6.cjs.map} +1 -1
- package/dist/{python3-POMOR4OA-qY8EzVSe.mjs → python3-POMOR4OA-CQv_ljO3.mjs} +3 -3
- package/dist/{python3-POMOR4OA-qY8EzVSe.mjs.map → python3-POMOR4OA-CQv_ljO3.mjs.map} +1 -1
- package/dist/{python3-POMOR4OA-B8aVGk7h.cjs → python3-POMOR4OA-D8YyzdQy.cjs} +3 -3
- package/dist/{python3-POMOR4OA-B8aVGk7h.cjs.map → python3-POMOR4OA-D8YyzdQy.cjs.map} +1 -1
- package/dist/{rev-5EHFX4EJ-Dxay6iFE.mjs → rev-5EHFX4EJ-BCHr71Dm.mjs} +2 -2
- package/dist/{rev-5EHFX4EJ-Dxay6iFE.mjs.map → rev-5EHFX4EJ-BCHr71Dm.mjs.map} +1 -1
- package/dist/{rev-5EHFX4EJ-B27blDxm.cjs → rev-5EHFX4EJ-BS2n_x9V.cjs} +2 -2
- package/dist/{rev-5EHFX4EJ-B27blDxm.cjs.map → rev-5EHFX4EJ-BS2n_x9V.cjs.map} +1 -1
- package/dist/{rg-S4FXYXWB-BL_fs0a0.cjs → rg-S4FXYXWB-Bol68AvR.cjs} +3 -3
- package/dist/{rg-S4FXYXWB-BL_fs0a0.cjs.map → rg-S4FXYXWB-Bol68AvR.cjs.map} +1 -1
- package/dist/{rg-S4FXYXWB-b3jjC2M6.mjs → rg-S4FXYXWB-C8PEpvTX.mjs} +3 -3
- package/dist/{rg-S4FXYXWB-b3jjC2M6.mjs.map → rg-S4FXYXWB-C8PEpvTX.mjs.map} +1 -1
- package/dist/{rm-SSGETQVQ-CskLcJOp.cjs → rm-SSGETQVQ-BPv10nPA.cjs} +2 -2
- package/dist/{rm-SSGETQVQ-CskLcJOp.cjs.map → rm-SSGETQVQ-BPv10nPA.cjs.map} +1 -1
- package/dist/{rm-SSGETQVQ-D0Grjo65.mjs → rm-SSGETQVQ-C1OgRoSu.mjs} +2 -2
- package/dist/{rm-SSGETQVQ-D0Grjo65.mjs.map → rm-SSGETQVQ-C1OgRoSu.mjs.map} +1 -1
- package/dist/{rmdir-OC4ZLPYA-BZ86Q3Wr.mjs → rmdir-OC4ZLPYA-BFuqEQ5J.mjs} +2 -2
- package/dist/{rmdir-OC4ZLPYA-BZ86Q3Wr.mjs.map → rmdir-OC4ZLPYA-BFuqEQ5J.mjs.map} +1 -1
- package/dist/{rmdir-OC4ZLPYA-Br6jTWJO.cjs → rmdir-OC4ZLPYA-DngaXCWg.cjs} +2 -2
- package/dist/{rmdir-OC4ZLPYA-Br6jTWJO.cjs.map → rmdir-OC4ZLPYA-DngaXCWg.cjs.map} +1 -1
- package/dist/run.cjs +1 -1
- package/dist/run.mjs +1 -1
- package/dist/{sed-S5UIK574-C0ikpRUI.mjs → sed-S5UIK574-C8OThvO-.mjs} +2 -2
- package/dist/{sed-S5UIK574-C0ikpRUI.mjs.map → sed-S5UIK574-C8OThvO-.mjs.map} +1 -1
- package/dist/{sed-S5UIK574-OUlTmK0x.cjs → sed-S5UIK574-CF78rdnK.cjs} +2 -2
- package/dist/{sed-S5UIK574-OUlTmK0x.cjs.map → sed-S5UIK574-CF78rdnK.cjs.map} +1 -1
- package/dist/{sha1sum-2PTOAFR6-hLKNluNQ.mjs → sha1sum-2PTOAFR6-BgSg3k-0.mjs} +3 -3
- package/dist/{sha1sum-2PTOAFR6-hLKNluNQ.mjs.map → sha1sum-2PTOAFR6-BgSg3k-0.mjs.map} +1 -1
- package/dist/{sha1sum-2PTOAFR6-B_DU8HD8.cjs → sha1sum-2PTOAFR6-C48qu6hM.cjs} +3 -3
- package/dist/{sha1sum-2PTOAFR6-B_DU8HD8.cjs.map → sha1sum-2PTOAFR6-C48qu6hM.cjs.map} +1 -1
- package/dist/{sha256sum-NS7D3IXX-c6RHEh31.mjs → sha256sum-NS7D3IXX-BML40mGR.mjs} +3 -3
- package/dist/{sha256sum-NS7D3IXX-c6RHEh31.mjs.map → sha256sum-NS7D3IXX-BML40mGR.mjs.map} +1 -1
- package/dist/{sha256sum-NS7D3IXX-YzzSU71d.cjs → sha256sum-NS7D3IXX-DTZ34xii.cjs} +3 -3
- package/dist/{sha256sum-NS7D3IXX-YzzSU71d.cjs.map → sha256sum-NS7D3IXX-DTZ34xii.cjs.map} +1 -1
- package/dist/{sleep-X22JJINO-lQ5Wi1rP.mjs → sleep-X22JJINO-BzDRKdtv.mjs} +2 -2
- package/dist/{sleep-X22JJINO-lQ5Wi1rP.mjs.map → sleep-X22JJINO-BzDRKdtv.mjs.map} +1 -1
- package/dist/{sleep-X22JJINO-DFWLmtic.cjs → sleep-X22JJINO-Dy9v8Z4n.cjs} +2 -2
- package/dist/{sleep-X22JJINO-DFWLmtic.cjs.map → sleep-X22JJINO-Dy9v8Z4n.cjs.map} +1 -1
- package/dist/{sort-SW2YEO5B-Njc26SUn.mjs → sort-SW2YEO5B-ClyGJwMQ.mjs} +3 -3
- package/dist/{sort-SW2YEO5B-Njc26SUn.mjs.map → sort-SW2YEO5B-ClyGJwMQ.mjs.map} +1 -1
- package/dist/{sort-SW2YEO5B-BlJCEbS7.cjs → sort-SW2YEO5B-DwbO0wml.cjs} +3 -3
- package/dist/{sort-SW2YEO5B-BlJCEbS7.cjs.map → sort-SW2YEO5B-DwbO0wml.cjs.map} +1 -1
- package/dist/{split-4KKZZXXE-DGFsDrFE.cjs → split-4KKZZXXE-D3kKToq-.cjs} +2 -2
- package/dist/{split-4KKZZXXE-DGFsDrFE.cjs.map → split-4KKZZXXE-D3kKToq-.cjs.map} +1 -1
- package/dist/{split-4KKZZXXE-C97QsnxB.mjs → split-4KKZZXXE-oyZFQtYU.mjs} +2 -2
- package/dist/{split-4KKZZXXE-C97QsnxB.mjs.map → split-4KKZZXXE-oyZFQtYU.mjs.map} +1 -1
- package/dist/{sqlite3-CGOEFJAO-HGqCZYuu.mjs → sqlite3-CGOEFJAO-BedLxgf_.mjs} +2 -2
- package/dist/{sqlite3-CGOEFJAO-HGqCZYuu.mjs.map → sqlite3-CGOEFJAO-BedLxgf_.mjs.map} +1 -1
- package/dist/{sqlite3-CGOEFJAO-D78UkTyw.cjs → sqlite3-CGOEFJAO-DUW1XIou.cjs} +2 -2
- package/dist/{sqlite3-CGOEFJAO-D78UkTyw.cjs.map → sqlite3-CGOEFJAO-DUW1XIou.cjs.map} +1 -1
- package/dist/{start-DAlaZ5zj.mjs → start-9_8ZcdaU.mjs} +337 -228
- package/dist/start-9_8ZcdaU.mjs.map +1 -0
- package/dist/{start-BX-bkX9K.cjs → start-CBrH4KOb.cjs} +337 -228
- package/dist/start-CBrH4KOb.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-CeJiCt-u.cjs → strings-6WDHLGMX-5ObhNSGS.cjs} +2 -2
- package/dist/{strings-6WDHLGMX-CeJiCt-u.cjs.map → strings-6WDHLGMX-5ObhNSGS.cjs.map} +1 -1
- package/dist/{strings-6WDHLGMX-Dix-GFiu.mjs → strings-6WDHLGMX-DXaUbNpx.mjs} +2 -2
- package/dist/{strings-6WDHLGMX-Dix-GFiu.mjs.map → strings-6WDHLGMX-DXaUbNpx.mjs.map} +1 -1
- package/dist/{tac-2STMMJYW-DlI5binK.cjs → tac-2STMMJYW-CLSjS7F2.cjs} +2 -2
- package/dist/{tac-2STMMJYW-DlI5binK.cjs.map → tac-2STMMJYW-CLSjS7F2.cjs.map} +1 -1
- package/dist/{tac-2STMMJYW-Bm0D_YqQ.mjs → tac-2STMMJYW-Ov0tcgNn.mjs} +2 -2
- package/dist/{tac-2STMMJYW-Bm0D_YqQ.mjs.map → tac-2STMMJYW-Ov0tcgNn.mjs.map} +1 -1
- package/dist/{tail-R4PCA2C4-TH4AUhAb.cjs → tail-R4PCA2C4-C018_ZAk.cjs} +2 -2
- package/dist/{tail-R4PCA2C4-TH4AUhAb.cjs.map → tail-R4PCA2C4-C018_ZAk.cjs.map} +1 -1
- package/dist/{tail-R4PCA2C4-7wsnh20i.mjs → tail-R4PCA2C4-KgqykSFz.mjs} +2 -2
- package/dist/{tail-R4PCA2C4-7wsnh20i.mjs.map → tail-R4PCA2C4-KgqykSFz.mjs.map} +1 -1
- package/dist/{tar-STHHZTZ6-DELlRab1.cjs → tar-STHHZTZ6-BcBkmdCH.cjs} +4 -4
- package/dist/{tar-STHHZTZ6-DELlRab1.cjs.map → tar-STHHZTZ6-BcBkmdCH.cjs.map} +1 -1
- package/dist/{tar-STHHZTZ6-gShA0vQ1.mjs → tar-STHHZTZ6-CCPYnq7u.mjs} +3 -3
- package/dist/{tar-STHHZTZ6-gShA0vQ1.mjs.map → tar-STHHZTZ6-CCPYnq7u.mjs.map} +1 -1
- package/dist/{tee-YUZ2FKCJ-D_BE3AiF.cjs → tee-YUZ2FKCJ-Cce_gOKf.cjs} +2 -2
- package/dist/{tee-YUZ2FKCJ-D_BE3AiF.cjs.map → tee-YUZ2FKCJ-Cce_gOKf.cjs.map} +1 -1
- package/dist/{tee-YUZ2FKCJ-6jGvzLuO.mjs → tee-YUZ2FKCJ-D7LOkjQo.mjs} +2 -2
- package/dist/{tee-YUZ2FKCJ-6jGvzLuO.mjs.map → tee-YUZ2FKCJ-D7LOkjQo.mjs.map} +1 -1
- package/dist/{time-D4LNBSWX-D7RWA_NU.mjs → time-D4LNBSWX-CvYHvswI.mjs} +2 -2
- package/dist/{time-D4LNBSWX-D7RWA_NU.mjs.map → time-D4LNBSWX-CvYHvswI.mjs.map} +1 -1
- package/dist/{time-D4LNBSWX-zKxg-wM1.cjs → time-D4LNBSWX-D9C8_lG9.cjs} +2 -2
- package/dist/{time-D4LNBSWX-zKxg-wM1.cjs.map → time-D4LNBSWX-D9C8_lG9.cjs.map} +1 -1
- package/dist/{timeout-YDCRSLPQ-D42ruxso.mjs → timeout-YDCRSLPQ-CacPbawx.mjs} +2 -2
- package/dist/{timeout-YDCRSLPQ-D42ruxso.mjs.map → timeout-YDCRSLPQ-CacPbawx.mjs.map} +1 -1
- package/dist/{timeout-YDCRSLPQ-DWs-ACr6.cjs → timeout-YDCRSLPQ-Ccs9ipQM.cjs} +2 -2
- package/dist/{timeout-YDCRSLPQ-DWs-ACr6.cjs.map → timeout-YDCRSLPQ-Ccs9ipQM.cjs.map} +1 -1
- package/dist/{touch-UA33VN3N-OcSMUASX.mjs → touch-UA33VN3N-D2ndvYPZ.mjs} +2 -2
- package/dist/{touch-UA33VN3N-OcSMUASX.mjs.map → touch-UA33VN3N-D2ndvYPZ.mjs.map} +1 -1
- package/dist/{touch-UA33VN3N-BALmWXCe.cjs → touch-UA33VN3N-Dxlmlbm_.cjs} +2 -2
- package/dist/{touch-UA33VN3N-BALmWXCe.cjs.map → touch-UA33VN3N-Dxlmlbm_.cjs.map} +1 -1
- package/dist/{tr-36LHWFRQ-DDHiAg_m.cjs → tr-36LHWFRQ-Bzq2x5-h.cjs} +2 -2
- package/dist/{tr-36LHWFRQ-DDHiAg_m.cjs.map → tr-36LHWFRQ-Bzq2x5-h.cjs.map} +1 -1
- package/dist/{tr-36LHWFRQ-BHhoJAPK.mjs → tr-36LHWFRQ-CWCuChgL.mjs} +2 -2
- package/dist/{tr-36LHWFRQ-BHhoJAPK.mjs.map → tr-36LHWFRQ-CWCuChgL.mjs.map} +1 -1
- package/dist/{tree-YLD52CNT-BqqLx-tM.cjs → tree-YLD52CNT-BQipj5RY.cjs} +2 -2
- package/dist/{tree-YLD52CNT-BqqLx-tM.cjs.map → tree-YLD52CNT-BQipj5RY.cjs.map} +1 -1
- package/dist/{tree-YLD52CNT-CuJMHpsw.mjs → tree-YLD52CNT-CDfF4vcr.mjs} +2 -2
- package/dist/{tree-YLD52CNT-CuJMHpsw.mjs.map → tree-YLD52CNT-CDfF4vcr.mjs.map} +1 -1
- package/dist/{unexpand-CADSA4VO-BORtdsy_.cjs → unexpand-CADSA4VO-C4qGbx-B.cjs} +2 -2
- package/dist/{unexpand-CADSA4VO-BORtdsy_.cjs.map → unexpand-CADSA4VO-C4qGbx-B.cjs.map} +1 -1
- package/dist/{unexpand-CADSA4VO-CHiw_MI4.mjs → unexpand-CADSA4VO-COvRSVlE.mjs} +2 -2
- package/dist/{unexpand-CADSA4VO-CHiw_MI4.mjs.map → unexpand-CADSA4VO-COvRSVlE.mjs.map} +1 -1
- package/dist/{uniq-XSIZR6PB-Byah97Ij.mjs → uniq-XSIZR6PB-C8bN8gfm.mjs} +3 -3
- package/dist/{uniq-XSIZR6PB-Byah97Ij.mjs.map → uniq-XSIZR6PB-C8bN8gfm.mjs.map} +1 -1
- package/dist/{uniq-XSIZR6PB-CyA5DoCP.cjs → uniq-XSIZR6PB-bJo9kdHr.cjs} +3 -3
- package/dist/{uniq-XSIZR6PB-CyA5DoCP.cjs.map → uniq-XSIZR6PB-bJo9kdHr.cjs.map} +1 -1
- package/dist/{wc-LF7NU4LA-CPMTeSun.mjs → wc-LF7NU4LA-D4xFJZxz.mjs} +3 -3
- package/dist/{wc-LF7NU4LA-CPMTeSun.mjs.map → wc-LF7NU4LA-D4xFJZxz.mjs.map} +1 -1
- package/dist/{wc-LF7NU4LA-DUBYnutH.cjs → wc-LF7NU4LA-NAR5lgIG.cjs} +3 -3
- package/dist/{wc-LF7NU4LA-DUBYnutH.cjs.map → wc-LF7NU4LA-NAR5lgIG.cjs.map} +1 -1
- package/dist/{xan-Y6WF3IRG-CLfddWd-.mjs → xan-Y6WF3IRG-D16SQobd.mjs} +6 -6
- package/dist/{xan-Y6WF3IRG-CLfddWd-.mjs.map → xan-Y6WF3IRG-D16SQobd.mjs.map} +1 -1
- package/dist/{xan-Y6WF3IRG-W4Yr19gE.cjs → xan-Y6WF3IRG-RigAd0GA.cjs} +6 -6
- package/dist/{xan-Y6WF3IRG-W4Yr19gE.cjs.map → xan-Y6WF3IRG-RigAd0GA.cjs.map} +1 -1
- package/dist/{xan-view-HDVKHFC2-B_Xy-tdc.mjs → xan-view-HDVKHFC2-CJ527xHS.mjs} +3 -3
- package/dist/{xan-view-HDVKHFC2-B_Xy-tdc.mjs.map → xan-view-HDVKHFC2-CJ527xHS.mjs.map} +1 -1
- package/dist/{xan-view-HDVKHFC2-CWkN0IJ1.cjs → xan-view-HDVKHFC2-pRqYeBi3.cjs} +3 -3
- package/dist/{xan-view-HDVKHFC2-CWkN0IJ1.cjs.map → xan-view-HDVKHFC2-pRqYeBi3.cjs.map} +1 -1
- package/dist/{xargs-MGZPH7AX-B_Ocy3BY.cjs → xargs-MGZPH7AX-C0bVMPGM.cjs} +2 -2
- package/dist/{xargs-MGZPH7AX-B_Ocy3BY.cjs.map → xargs-MGZPH7AX-C0bVMPGM.cjs.map} +1 -1
- package/dist/{xargs-MGZPH7AX-DDoz_2hL.mjs → xargs-MGZPH7AX-DWIn3Zwh.mjs} +2 -2
- package/dist/{xargs-MGZPH7AX-DDoz_2hL.mjs.map → xargs-MGZPH7AX-DWIn3Zwh.mjs.map} +1 -1
- package/dist/{yq-4QJW3EQG-mUhWBJBJ.mjs → yq-4QJW3EQG-CPcwcHbw.mjs} +3 -3
- package/dist/{yq-4QJW3EQG-mUhWBJBJ.mjs.map → yq-4QJW3EQG-CPcwcHbw.mjs.map} +1 -1
- package/dist/{yq-4QJW3EQG-BPBhjinw.cjs → yq-4QJW3EQG-CSTlai1q.cjs} +3 -3
- package/dist/{yq-4QJW3EQG-BPBhjinw.cjs.map → yq-4QJW3EQG-CSTlai1q.cjs.map} +1 -1
- package/package.json +1 -1
- package/dist/dist-70NUfApd.mjs.map +0 -1
- package/dist/start-BX-bkX9K.cjs.map +0 -1
- package/dist/start-DAlaZ5zj.mjs.map +0 -1
|
@@ -6,10 +6,10 @@ import { DEFAULT_DATABASE_URL, claimNextJob, clearCredentialInstanceDefaults, cr
|
|
|
6
6
|
import { z } from "zod";
|
|
7
7
|
import { join } from "node:path";
|
|
8
8
|
import { mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
9
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
9
10
|
import "node:url";
|
|
10
11
|
import { tmpdir } from "node:os";
|
|
11
12
|
import { createCipheriv, createDecipheriv, createHash, randomBytes, randomUUID } from "node:crypto";
|
|
12
|
-
import { AsyncLocalStorage } from "node:async_hooks";
|
|
13
13
|
import { deleteSecretValuesForRef, getOrganizationScopeId, selectSecretValue, upsertSecretValue } from "@keystrokehq/platform-database";
|
|
14
14
|
import "zod/v3";
|
|
15
15
|
import "zod/v4-mini";
|
|
@@ -54,6 +54,10 @@ const PROJECT_SERVER_HEALTH = {
|
|
|
54
54
|
path: "/health",
|
|
55
55
|
port: PROJECT_SERVER_PORT
|
|
56
56
|
};
|
|
57
|
+
/** Builds base64 `KEYSTROKE_ORG_ARTIFACTS` payload for org worker containers. */
|
|
58
|
+
function encodeOrgArtifacts(artifacts) {
|
|
59
|
+
return Buffer.from(JSON.stringify(artifacts)).toString("base64");
|
|
60
|
+
}
|
|
57
61
|
const RUNTIME_ENV_KEYS = [
|
|
58
62
|
"BETTER_AUTH_SECRET",
|
|
59
63
|
"PUBLIC_SERVER_URL",
|
|
@@ -84,28 +88,26 @@ function projectDatabaseRuntimeEnv(database) {
|
|
|
84
88
|
};
|
|
85
89
|
}
|
|
86
90
|
/**
|
|
87
|
-
* Builds the launch spec for
|
|
88
|
-
*
|
|
89
|
-
* no base image, so it is required.
|
|
91
|
+
* Builds the launch spec for an org worker. Each deploy artifact is encoded in
|
|
92
|
+
* `KEYSTROKE_ORG_ARTIFACTS` — there is no base image, so at least one artifact is required.
|
|
90
93
|
*/
|
|
91
|
-
function resolveRuntimeLaunch(options,
|
|
92
|
-
if (
|
|
94
|
+
function resolveRuntimeLaunch(options, artifacts, database, extraEnv) {
|
|
95
|
+
if (artifacts.length === 0) throw new Error("Cannot start an org worker without at least one artifact");
|
|
93
96
|
const env = options.env ?? process.env;
|
|
94
97
|
return {
|
|
95
98
|
image: resolveProjectServerImage(env, options.image),
|
|
96
|
-
env: buildRuntimeEnv(env,
|
|
99
|
+
env: buildRuntimeEnv(env, artifacts, database, extraEnv),
|
|
97
100
|
port: PROJECT_SERVER_PORT,
|
|
98
101
|
health: PROJECT_SERVER_HEALTH
|
|
99
102
|
};
|
|
100
103
|
}
|
|
101
|
-
/** Env vars passed into the
|
|
102
|
-
function buildRuntimeEnv(source,
|
|
104
|
+
/** Env vars passed into the org worker container/machine. */
|
|
105
|
+
function buildRuntimeEnv(source, artifacts, database, extraEnv) {
|
|
103
106
|
const entries = new Map([
|
|
104
107
|
["PORT", String(PROJECT_SERVER_PORT)],
|
|
105
108
|
["KEYSTROKE_ROOT", PROJECT_SERVER_ROOT],
|
|
106
109
|
["KEYSTROKE_RUNTIME_NODE_MODULES", PROJECT_SERVER_FRAMEWORK_NODE_MODULES],
|
|
107
|
-
["
|
|
108
|
-
["PROJECT_ID", database.projectId],
|
|
110
|
+
["KEYSTROKE_ORG_ARTIFACTS", encodeOrgArtifacts(artifacts)],
|
|
109
111
|
["ORGANIZATION_ID", database.organizationId],
|
|
110
112
|
["TENANT_ID", database.organizationId]
|
|
111
113
|
]);
|
|
@@ -208,15 +210,19 @@ const MINIO_DOCKER_NETWORK = process.env.MINIO_DOCKER_NETWORK ?? "keystroke";
|
|
|
208
210
|
function createDockerRuntime(options = {}) {
|
|
209
211
|
const docker = options.docker ?? new Docker();
|
|
210
212
|
return { async start(input) {
|
|
211
|
-
|
|
213
|
+
if (input.projects.length === 0) throw new Error("Docker org runtime requires at least one project deploy");
|
|
214
|
+
const launch = resolveRuntimeLaunch(options, input.projects.map((project) => ({
|
|
215
|
+
projectId: project.projectId,
|
|
216
|
+
artifactStorageKey: project.artifactStorageKey
|
|
217
|
+
})), input.database, input.env);
|
|
212
218
|
await ensureImage(docker, launch.image);
|
|
213
|
-
await removeExistingContainer(docker, input.
|
|
219
|
+
await removeExistingContainer(docker, input.organizationId);
|
|
214
220
|
const container = await docker.createContainer({
|
|
215
221
|
Image: launch.image,
|
|
216
|
-
name: containerName(input.
|
|
222
|
+
name: containerName(input.organizationId),
|
|
217
223
|
Labels: {
|
|
218
|
-
"keystroke.
|
|
219
|
-
"keystroke.project.
|
|
224
|
+
"keystroke.organization.id": input.organizationId,
|
|
225
|
+
"keystroke.project.ids": input.projects.map((project) => project.projectId).join(",")
|
|
220
226
|
},
|
|
221
227
|
ExposedPorts: { [`${launch.port}/tcp`]: {} },
|
|
222
228
|
HostConfig: {
|
|
@@ -229,7 +235,7 @@ function createDockerRuntime(options = {}) {
|
|
|
229
235
|
await container.start();
|
|
230
236
|
const inspect = await container.inspect();
|
|
231
237
|
const binding = inspect.NetworkSettings.Ports?.[`${launch.port}/tcp`]?.[0];
|
|
232
|
-
if (!binding?.HostPort) throw new Error("Failed to resolve
|
|
238
|
+
if (!binding?.HostPort) throw new Error("Failed to resolve org container host port");
|
|
233
239
|
const baseUrl = `http://127.0.0.1:${binding.HostPort}`;
|
|
234
240
|
await waitForHealth(baseUrl, {
|
|
235
241
|
fetchImpl: options.fetchImpl,
|
|
@@ -241,12 +247,12 @@ function createDockerRuntime(options = {}) {
|
|
|
241
247
|
};
|
|
242
248
|
} };
|
|
243
249
|
}
|
|
244
|
-
function containerName(
|
|
245
|
-
return `keystroke-
|
|
250
|
+
function containerName(organizationId) {
|
|
251
|
+
return `keystroke-org-${organizationId}`;
|
|
246
252
|
}
|
|
247
|
-
async function removeExistingContainer(docker,
|
|
253
|
+
async function removeExistingContainer(docker, organizationId) {
|
|
248
254
|
try {
|
|
249
|
-
const existing = docker.getContainer(containerName(
|
|
255
|
+
const existing = docker.getContainer(containerName(organizationId));
|
|
250
256
|
await existing.stop({ t: 5 }).catch(() => void 0);
|
|
251
257
|
await existing.remove({ force: true });
|
|
252
258
|
} catch {}
|
|
@@ -980,7 +986,7 @@ _Object_({
|
|
|
980
986
|
content: String$1({ description: "Content to write to the file" })
|
|
981
987
|
});
|
|
982
988
|
//#endregion
|
|
983
|
-
//#region ../../packages/sandbox/dist/files-
|
|
989
|
+
//#region ../../packages/sandbox/dist/files-XxiqkzS0.mjs
|
|
984
990
|
const SandboxFileContentSchema = z.object({
|
|
985
991
|
path: z.string(),
|
|
986
992
|
file: z.string()
|
|
@@ -997,6 +1003,7 @@ const SandboxDefinitionSchema = z.object({
|
|
|
997
1003
|
key: z.string().optional(),
|
|
998
1004
|
files: z.array(SandboxFileSchema).optional()
|
|
999
1005
|
});
|
|
1006
|
+
new AsyncLocalStorage();
|
|
1000
1007
|
//#endregion
|
|
1001
1008
|
//#region ../../node_modules/.pnpm/just-bash@3.0.1/node_modules/just-bash/dist/bundle/chunks/chunk-4RUAZWKT.js
|
|
1002
1009
|
createRequire(import.meta.url);
|
|
@@ -23799,43 +23806,43 @@ var tt = [
|
|
|
23799
23806
|
},
|
|
23800
23807
|
{
|
|
23801
23808
|
name: "cat",
|
|
23802
|
-
load: async () => (await import("./cat-TSFMZVYS-
|
|
23809
|
+
load: async () => (await import("./cat-TSFMZVYS-BoRCwL0X.mjs")).catCommand
|
|
23803
23810
|
},
|
|
23804
23811
|
{
|
|
23805
23812
|
name: "printf",
|
|
23806
|
-
load: async () => (await import("./printf-TWGXF445-
|
|
23813
|
+
load: async () => (await import("./printf-TWGXF445-BuI_jQx5.mjs")).printfCommand
|
|
23807
23814
|
},
|
|
23808
23815
|
{
|
|
23809
23816
|
name: "ls",
|
|
23810
|
-
load: async () => (await import("./ls-ZJGQER7M-
|
|
23817
|
+
load: async () => (await import("./ls-ZJGQER7M-Bm9zc4KC.mjs")).lsCommand
|
|
23811
23818
|
},
|
|
23812
23819
|
{
|
|
23813
23820
|
name: "mkdir",
|
|
23814
|
-
load: async () => (await import("./mkdir-MEPGZOB6-
|
|
23821
|
+
load: async () => (await import("./mkdir-MEPGZOB6-CMrYu1Ht.mjs")).mkdirCommand
|
|
23815
23822
|
},
|
|
23816
23823
|
{
|
|
23817
23824
|
name: "rmdir",
|
|
23818
|
-
load: async () => (await import("./rmdir-OC4ZLPYA-
|
|
23825
|
+
load: async () => (await import("./rmdir-OC4ZLPYA-BFuqEQ5J.mjs")).rmdirCommand
|
|
23819
23826
|
},
|
|
23820
23827
|
{
|
|
23821
23828
|
name: "touch",
|
|
23822
|
-
load: async () => (await import("./touch-UA33VN3N-
|
|
23829
|
+
load: async () => (await import("./touch-UA33VN3N-D2ndvYPZ.mjs")).touchCommand
|
|
23823
23830
|
},
|
|
23824
23831
|
{
|
|
23825
23832
|
name: "rm",
|
|
23826
|
-
load: async () => (await import("./rm-SSGETQVQ-
|
|
23833
|
+
load: async () => (await import("./rm-SSGETQVQ-C1OgRoSu.mjs")).rmCommand
|
|
23827
23834
|
},
|
|
23828
23835
|
{
|
|
23829
23836
|
name: "cp",
|
|
23830
|
-
load: async () => (await import("./cp-BISAAS7A-
|
|
23837
|
+
load: async () => (await import("./cp-BISAAS7A-C0MVoZpt.mjs")).cpCommand
|
|
23831
23838
|
},
|
|
23832
23839
|
{
|
|
23833
23840
|
name: "mv",
|
|
23834
|
-
load: async () => (await import("./mv-W5BIQ646-
|
|
23841
|
+
load: async () => (await import("./mv-W5BIQ646-CWgyAnYE.mjs")).mvCommand
|
|
23835
23842
|
},
|
|
23836
23843
|
{
|
|
23837
23844
|
name: "ln",
|
|
23838
|
-
load: async () => (await import("./ln-4LGSXXGD-
|
|
23845
|
+
load: async () => (await import("./ln-4LGSXXGD-BtA5nI4o.mjs")).lnCommand
|
|
23839
23846
|
},
|
|
23840
23847
|
{
|
|
23841
23848
|
name: "chmod",
|
|
@@ -23851,15 +23858,15 @@ var tt = [
|
|
|
23851
23858
|
},
|
|
23852
23859
|
{
|
|
23853
23860
|
name: "head",
|
|
23854
|
-
load: async () => (await import("./head-442HYESI-
|
|
23861
|
+
load: async () => (await import("./head-442HYESI-BDYHKho-.mjs")).headCommand
|
|
23855
23862
|
},
|
|
23856
23863
|
{
|
|
23857
23864
|
name: "tail",
|
|
23858
|
-
load: async () => (await import("./tail-R4PCA2C4-
|
|
23865
|
+
load: async () => (await import("./tail-R4PCA2C4-KgqykSFz.mjs")).tailCommand
|
|
23859
23866
|
},
|
|
23860
23867
|
{
|
|
23861
23868
|
name: "wc",
|
|
23862
|
-
load: async () => (await import("./wc-LF7NU4LA-
|
|
23869
|
+
load: async () => (await import("./wc-LF7NU4LA-D4xFJZxz.mjs")).wcCommand
|
|
23863
23870
|
},
|
|
23864
23871
|
{
|
|
23865
23872
|
name: "stat",
|
|
@@ -23867,95 +23874,95 @@ var tt = [
|
|
|
23867
23874
|
},
|
|
23868
23875
|
{
|
|
23869
23876
|
name: "grep",
|
|
23870
|
-
load: async () => (await import("./grep-V3LQVMRQ-
|
|
23877
|
+
load: async () => (await import("./grep-V3LQVMRQ-CUJiTsKp.mjs")).grepCommand
|
|
23871
23878
|
},
|
|
23872
23879
|
{
|
|
23873
23880
|
name: "fgrep",
|
|
23874
|
-
load: async () => (await import("./grep-V3LQVMRQ-
|
|
23881
|
+
load: async () => (await import("./grep-V3LQVMRQ-CUJiTsKp.mjs")).fgrepCommand
|
|
23875
23882
|
},
|
|
23876
23883
|
{
|
|
23877
23884
|
name: "egrep",
|
|
23878
|
-
load: async () => (await import("./grep-V3LQVMRQ-
|
|
23885
|
+
load: async () => (await import("./grep-V3LQVMRQ-CUJiTsKp.mjs")).egrepCommand
|
|
23879
23886
|
},
|
|
23880
23887
|
{
|
|
23881
23888
|
name: "rg",
|
|
23882
|
-
load: async () => (await import("./rg-S4FXYXWB-
|
|
23889
|
+
load: async () => (await import("./rg-S4FXYXWB-C8PEpvTX.mjs")).rgCommand
|
|
23883
23890
|
},
|
|
23884
23891
|
{
|
|
23885
23892
|
name: "sed",
|
|
23886
|
-
load: async () => (await import("./sed-S5UIK574-
|
|
23893
|
+
load: async () => (await import("./sed-S5UIK574-C8OThvO-.mjs")).sedCommand
|
|
23887
23894
|
},
|
|
23888
23895
|
{
|
|
23889
23896
|
name: "awk",
|
|
23890
|
-
load: async () => (await import("./awk2-LA3USKJP-
|
|
23897
|
+
load: async () => (await import("./awk2-LA3USKJP-CPcab6tL.mjs")).awkCommand2
|
|
23891
23898
|
},
|
|
23892
23899
|
{
|
|
23893
23900
|
name: "sort",
|
|
23894
|
-
load: async () => (await import("./sort-SW2YEO5B-
|
|
23901
|
+
load: async () => (await import("./sort-SW2YEO5B-ClyGJwMQ.mjs")).sortCommand
|
|
23895
23902
|
},
|
|
23896
23903
|
{
|
|
23897
23904
|
name: "uniq",
|
|
23898
|
-
load: async () => (await import("./uniq-XSIZR6PB-
|
|
23905
|
+
load: async () => (await import("./uniq-XSIZR6PB-C8bN8gfm.mjs")).uniqCommand
|
|
23899
23906
|
},
|
|
23900
23907
|
{
|
|
23901
23908
|
name: "comm",
|
|
23902
|
-
load: async () => (await import("./comm-VV2LDX2J-
|
|
23909
|
+
load: async () => (await import("./comm-VV2LDX2J-BZdS-Fqy.mjs")).commCommand
|
|
23903
23910
|
},
|
|
23904
23911
|
{
|
|
23905
23912
|
name: "cut",
|
|
23906
|
-
load: async () => (await import("./cut-OKARJCCV-
|
|
23913
|
+
load: async () => (await import("./cut-OKARJCCV-BKWEQwCZ.mjs")).cutCommand
|
|
23907
23914
|
},
|
|
23908
23915
|
{
|
|
23909
23916
|
name: "paste",
|
|
23910
|
-
load: async () => (await import("./paste-7JC6S4DX-
|
|
23917
|
+
load: async () => (await import("./paste-7JC6S4DX-QB7MigtV.mjs")).pasteCommand
|
|
23911
23918
|
},
|
|
23912
23919
|
{
|
|
23913
23920
|
name: "tr",
|
|
23914
|
-
load: async () => (await import("./tr-36LHWFRQ-
|
|
23921
|
+
load: async () => (await import("./tr-36LHWFRQ-CWCuChgL.mjs")).trCommand
|
|
23915
23922
|
},
|
|
23916
23923
|
{
|
|
23917
23924
|
name: "rev",
|
|
23918
|
-
load: async () => (await import("./rev-5EHFX4EJ-
|
|
23925
|
+
load: async () => (await import("./rev-5EHFX4EJ-BCHr71Dm.mjs")).rev
|
|
23919
23926
|
},
|
|
23920
23927
|
{
|
|
23921
23928
|
name: "nl",
|
|
23922
|
-
load: async () => (await import("./nl-WSDW7I4O-
|
|
23929
|
+
load: async () => (await import("./nl-WSDW7I4O-hZyrJS6m.mjs")).nl
|
|
23923
23930
|
},
|
|
23924
23931
|
{
|
|
23925
23932
|
name: "fold",
|
|
23926
|
-
load: async () => (await import("./fold-4TQNYMSW-
|
|
23933
|
+
load: async () => (await import("./fold-4TQNYMSW-DzA5SsAN.mjs")).fold
|
|
23927
23934
|
},
|
|
23928
23935
|
{
|
|
23929
23936
|
name: "expand",
|
|
23930
|
-
load: async () => (await import("./expand-JSPG6VOP-
|
|
23937
|
+
load: async () => (await import("./expand-JSPG6VOP-BtD3fO-u.mjs")).expand
|
|
23931
23938
|
},
|
|
23932
23939
|
{
|
|
23933
23940
|
name: "unexpand",
|
|
23934
|
-
load: async () => (await import("./unexpand-CADSA4VO-
|
|
23941
|
+
load: async () => (await import("./unexpand-CADSA4VO-COvRSVlE.mjs")).unexpand
|
|
23935
23942
|
},
|
|
23936
23943
|
{
|
|
23937
23944
|
name: "strings",
|
|
23938
|
-
load: async () => (await import("./strings-6WDHLGMX-
|
|
23945
|
+
load: async () => (await import("./strings-6WDHLGMX-DXaUbNpx.mjs")).strings
|
|
23939
23946
|
},
|
|
23940
23947
|
{
|
|
23941
23948
|
name: "split",
|
|
23942
|
-
load: async () => (await import("./split-4KKZZXXE-
|
|
23949
|
+
load: async () => (await import("./split-4KKZZXXE-oyZFQtYU.mjs")).split
|
|
23943
23950
|
},
|
|
23944
23951
|
{
|
|
23945
23952
|
name: "column",
|
|
23946
|
-
load: async () => (await import("./column-XT6UFXNQ-
|
|
23953
|
+
load: async () => (await import("./column-XT6UFXNQ-BsXqWbAP.mjs")).column
|
|
23947
23954
|
},
|
|
23948
23955
|
{
|
|
23949
23956
|
name: "join",
|
|
23950
|
-
load: async () => (await import("./join-TBRGI3LQ-
|
|
23957
|
+
load: async () => (await import("./join-TBRGI3LQ-Cb96ZaTF.mjs")).join
|
|
23951
23958
|
},
|
|
23952
23959
|
{
|
|
23953
23960
|
name: "tee",
|
|
23954
|
-
load: async () => (await import("./tee-YUZ2FKCJ-
|
|
23961
|
+
load: async () => (await import("./tee-YUZ2FKCJ-D7LOkjQo.mjs")).teeCommand
|
|
23955
23962
|
},
|
|
23956
23963
|
{
|
|
23957
23964
|
name: "find",
|
|
23958
|
-
load: async () => (await import("./find-INTH3OLC-
|
|
23965
|
+
load: async () => (await import("./find-INTH3OLC-B2oqqlwt.mjs")).findCommand
|
|
23959
23966
|
},
|
|
23960
23967
|
{
|
|
23961
23968
|
name: "basename",
|
|
@@ -23967,19 +23974,19 @@ var tt = [
|
|
|
23967
23974
|
},
|
|
23968
23975
|
{
|
|
23969
23976
|
name: "tree",
|
|
23970
|
-
load: async () => (await import("./tree-YLD52CNT-
|
|
23977
|
+
load: async () => (await import("./tree-YLD52CNT-CDfF4vcr.mjs")).treeCommand
|
|
23971
23978
|
},
|
|
23972
23979
|
{
|
|
23973
23980
|
name: "du",
|
|
23974
|
-
load: async () => (await import("./du-572XNP42-
|
|
23981
|
+
load: async () => (await import("./du-572XNP42-CmxmrMJd.mjs")).duCommand
|
|
23975
23982
|
},
|
|
23976
23983
|
{
|
|
23977
23984
|
name: "env",
|
|
23978
|
-
load: async () => (await import("./env-36M5BO7M-
|
|
23985
|
+
load: async () => (await import("./env-36M5BO7M-DupdD4fz.mjs")).envCommand
|
|
23979
23986
|
},
|
|
23980
23987
|
{
|
|
23981
23988
|
name: "printenv",
|
|
23982
|
-
load: async () => (await import("./env-36M5BO7M-
|
|
23989
|
+
load: async () => (await import("./env-36M5BO7M-DupdD4fz.mjs")).printenvCommand
|
|
23983
23990
|
},
|
|
23984
23991
|
{
|
|
23985
23992
|
name: "alias",
|
|
@@ -23995,7 +24002,7 @@ var tt = [
|
|
|
23995
24002
|
},
|
|
23996
24003
|
{
|
|
23997
24004
|
name: "xargs",
|
|
23998
|
-
load: async () => (await import("./xargs-MGZPH7AX-
|
|
24005
|
+
load: async () => (await import("./xargs-MGZPH7AX-DWIn3Zwh.mjs")).xargsCommand
|
|
23999
24006
|
},
|
|
24000
24007
|
{
|
|
24001
24008
|
name: "true",
|
|
@@ -24011,23 +24018,23 @@ var tt = [
|
|
|
24011
24018
|
},
|
|
24012
24019
|
{
|
|
24013
24020
|
name: "bash",
|
|
24014
|
-
load: async () => (await import("./bash-YZ33HQZQ-
|
|
24021
|
+
load: async () => (await import("./bash-YZ33HQZQ-B7vkAJM1.mjs")).bashCommand
|
|
24015
24022
|
},
|
|
24016
24023
|
{
|
|
24017
24024
|
name: "sh",
|
|
24018
|
-
load: async () => (await import("./bash-YZ33HQZQ-
|
|
24025
|
+
load: async () => (await import("./bash-YZ33HQZQ-B7vkAJM1.mjs")).shCommand
|
|
24019
24026
|
},
|
|
24020
24027
|
{
|
|
24021
24028
|
name: "jq",
|
|
24022
|
-
load: async () => (await import("./jq-4XLYLOS5-
|
|
24029
|
+
load: async () => (await import("./jq-4XLYLOS5-QEF-9JGc.mjs")).jqCommand
|
|
24023
24030
|
},
|
|
24024
24031
|
{
|
|
24025
24032
|
name: "base64",
|
|
24026
|
-
load: async () => (await import("./base64-C2AIWVNC-
|
|
24033
|
+
load: async () => (await import("./base64-C2AIWVNC-BU7vFrSz.mjs")).base64Command
|
|
24027
24034
|
},
|
|
24028
24035
|
{
|
|
24029
24036
|
name: "diff",
|
|
24030
|
-
load: async () => (await import("./diff-MWJFIG7X-
|
|
24037
|
+
load: async () => (await import("./diff-MWJFIG7X-YTniIfbL.mjs")).diffCommand
|
|
24031
24038
|
},
|
|
24032
24039
|
{
|
|
24033
24040
|
name: "date",
|
|
@@ -24035,15 +24042,15 @@ var tt = [
|
|
|
24035
24042
|
},
|
|
24036
24043
|
{
|
|
24037
24044
|
name: "sleep",
|
|
24038
|
-
load: async () => (await import("./sleep-X22JJINO-
|
|
24045
|
+
load: async () => (await import("./sleep-X22JJINO-BzDRKdtv.mjs")).sleepCommand
|
|
24039
24046
|
},
|
|
24040
24047
|
{
|
|
24041
24048
|
name: "timeout",
|
|
24042
|
-
load: async () => (await import("./timeout-YDCRSLPQ-
|
|
24049
|
+
load: async () => (await import("./timeout-YDCRSLPQ-CacPbawx.mjs")).timeoutCommand
|
|
24043
24050
|
},
|
|
24044
24051
|
{
|
|
24045
24052
|
name: "time",
|
|
24046
|
-
load: async () => (await import("./time-D4LNBSWX-
|
|
24053
|
+
load: async () => (await import("./time-D4LNBSWX-CvYHvswI.mjs")).timeCommand
|
|
24047
24054
|
},
|
|
24048
24055
|
{
|
|
24049
24056
|
name: "seq",
|
|
@@ -24051,19 +24058,19 @@ var tt = [
|
|
|
24051
24058
|
},
|
|
24052
24059
|
{
|
|
24053
24060
|
name: "expr",
|
|
24054
|
-
load: async () => (await import("./expr-5JAACS4X-
|
|
24061
|
+
load: async () => (await import("./expr-5JAACS4X-C75E9ncn.mjs")).exprCommand
|
|
24055
24062
|
},
|
|
24056
24063
|
{
|
|
24057
24064
|
name: "md5sum",
|
|
24058
|
-
load: async () => (await import("./md5sum-SPU24VSG-
|
|
24065
|
+
load: async () => (await import("./md5sum-SPU24VSG-Dqy3agsE.mjs")).md5sumCommand
|
|
24059
24066
|
},
|
|
24060
24067
|
{
|
|
24061
24068
|
name: "sha1sum",
|
|
24062
|
-
load: async () => (await import("./sha1sum-2PTOAFR6-
|
|
24069
|
+
load: async () => (await import("./sha1sum-2PTOAFR6-BgSg3k-0.mjs")).sha1sumCommand
|
|
24063
24070
|
},
|
|
24064
24071
|
{
|
|
24065
24072
|
name: "sha256sum",
|
|
24066
|
-
load: async () => (await import("./sha256sum-NS7D3IXX-
|
|
24073
|
+
load: async () => (await import("./sha256sum-NS7D3IXX-BML40mGR.mjs")).sha256sumCommand
|
|
24067
24074
|
},
|
|
24068
24075
|
{
|
|
24069
24076
|
name: "file",
|
|
@@ -24071,11 +24078,11 @@ var tt = [
|
|
|
24071
24078
|
},
|
|
24072
24079
|
{
|
|
24073
24080
|
name: "html-to-markdown",
|
|
24074
|
-
load: async () => (await import("./html-to-markdown-JW4MSQZO-
|
|
24081
|
+
load: async () => (await import("./html-to-markdown-JW4MSQZO-8YYzjAx0.mjs")).htmlToMarkdownCommand
|
|
24075
24082
|
},
|
|
24076
24083
|
{
|
|
24077
24084
|
name: "help",
|
|
24078
|
-
load: async () => (await import("./help-HZ6M2CKN-
|
|
24085
|
+
load: async () => (await import("./help-HZ6M2CKN-C95bcvt_.mjs")).helpCommand
|
|
24079
24086
|
},
|
|
24080
24087
|
{
|
|
24081
24088
|
name: "which",
|
|
@@ -24083,7 +24090,7 @@ var tt = [
|
|
|
24083
24090
|
},
|
|
24084
24091
|
{
|
|
24085
24092
|
name: "tac",
|
|
24086
|
-
load: async () => (await import("./tac-2STMMJYW-
|
|
24093
|
+
load: async () => (await import("./tac-2STMMJYW-Ov0tcgNn.mjs")).tac
|
|
24087
24094
|
},
|
|
24088
24095
|
{
|
|
24089
24096
|
name: "hostname",
|
|
@@ -24095,49 +24102,49 @@ var tt = [
|
|
|
24095
24102
|
},
|
|
24096
24103
|
{
|
|
24097
24104
|
name: "od",
|
|
24098
|
-
load: async () => (await import("./od-WOKFDJTP-
|
|
24105
|
+
load: async () => (await import("./od-WOKFDJTP-60QMVWxL.mjs")).od
|
|
24099
24106
|
},
|
|
24100
24107
|
{
|
|
24101
24108
|
name: "gzip",
|
|
24102
|
-
load: async () => (await import("./gzip-O5ASJAFY-
|
|
24109
|
+
load: async () => (await import("./gzip-O5ASJAFY-D8i6m9_W.mjs")).gzipCommand
|
|
24103
24110
|
},
|
|
24104
24111
|
{
|
|
24105
24112
|
name: "gunzip",
|
|
24106
|
-
load: async () => (await import("./gzip-O5ASJAFY-
|
|
24113
|
+
load: async () => (await import("./gzip-O5ASJAFY-D8i6m9_W.mjs")).gunzipCommand
|
|
24107
24114
|
},
|
|
24108
24115
|
{
|
|
24109
24116
|
name: "zcat",
|
|
24110
|
-
load: async () => (await import("./gzip-O5ASJAFY-
|
|
24117
|
+
load: async () => (await import("./gzip-O5ASJAFY-D8i6m9_W.mjs")).zcatCommand
|
|
24111
24118
|
}
|
|
24112
24119
|
];
|
|
24113
24120
|
(typeof __BROWSER__ > "u" || !__BROWSER__) && (tt.push({
|
|
24114
24121
|
name: "tar",
|
|
24115
|
-
load: async () => (await import("./tar-STHHZTZ6-
|
|
24122
|
+
load: async () => (await import("./tar-STHHZTZ6-CCPYnq7u.mjs")).tarCommand
|
|
24116
24123
|
}), tt.push({
|
|
24117
24124
|
name: "yq",
|
|
24118
|
-
load: async () => (await import("./yq-4QJW3EQG-
|
|
24125
|
+
load: async () => (await import("./yq-4QJW3EQG-CPcwcHbw.mjs")).yqCommand
|
|
24119
24126
|
}), tt.push({
|
|
24120
24127
|
name: "xan",
|
|
24121
|
-
load: async () => (await import("./xan-Y6WF3IRG-
|
|
24128
|
+
load: async () => (await import("./xan-Y6WF3IRG-D16SQobd.mjs")).xanCommand
|
|
24122
24129
|
}), tt.push({
|
|
24123
24130
|
name: "sqlite3",
|
|
24124
|
-
load: async () => (await import("./sqlite3-CGOEFJAO-
|
|
24131
|
+
load: async () => (await import("./sqlite3-CGOEFJAO-BedLxgf_.mjs")).sqlite3Command
|
|
24125
24132
|
}));
|
|
24126
24133
|
var Yt = [];
|
|
24127
24134
|
(typeof __BROWSER__ > "u" || !__BROWSER__) && (Yt.push({
|
|
24128
24135
|
name: "python3",
|
|
24129
|
-
load: async () => (await import("./python3-POMOR4OA-
|
|
24136
|
+
load: async () => (await import("./python3-POMOR4OA-CQv_ljO3.mjs")).python3Command
|
|
24130
24137
|
}), Yt.push({
|
|
24131
24138
|
name: "python",
|
|
24132
|
-
load: async () => (await import("./python3-POMOR4OA-
|
|
24139
|
+
load: async () => (await import("./python3-POMOR4OA-CQv_ljO3.mjs")).pythonCommand
|
|
24133
24140
|
}));
|
|
24134
24141
|
var Qt = [];
|
|
24135
24142
|
(typeof __BROWSER__ > "u" || !__BROWSER__) && (Qt.push({
|
|
24136
24143
|
name: "js-exec",
|
|
24137
|
-
load: async () => (await import("./js-exec-N5KEZBH7-
|
|
24144
|
+
load: async () => (await import("./js-exec-N5KEZBH7-DWi8fMhN.mjs")).jsExecCommand
|
|
24138
24145
|
}), Qt.push({
|
|
24139
24146
|
name: "node",
|
|
24140
|
-
load: async () => (await import("./js-exec-N5KEZBH7-
|
|
24147
|
+
load: async () => (await import("./js-exec-N5KEZBH7-DWi8fMhN.mjs")).nodeStubCommand
|
|
24141
24148
|
}));
|
|
24142
24149
|
new TextEncoder();
|
|
24143
24150
|
Object.freeze({
|
|
@@ -25110,6 +25117,114 @@ const OrganizationSlugSchema = z.string().trim().toLowerCase().min(2, "Slug must
|
|
|
25110
25117
|
const ClaimableOrganizationSlugSchema = OrganizationSlugSchema.refine((slug) => !RESERVED_ORGANIZATION_SLUGS.has(slug), "This slug is reserved");
|
|
25111
25118
|
/** Same format as organization slugs — org-scoped, no global reserved list. */
|
|
25112
25119
|
const ProjectSlugSchema = OrganizationSlugSchema;
|
|
25120
|
+
const PROJECT_SLUG_TAKEN_MESSAGE = "That slug is already taken.";
|
|
25121
|
+
const OrganizationSlugErrorCodeSchema = z.enum([
|
|
25122
|
+
"slug_taken",
|
|
25123
|
+
"slug_reserved",
|
|
25124
|
+
"slug_invalid"
|
|
25125
|
+
]);
|
|
25126
|
+
const SlugAvailabilityReasonSchema = z.enum([
|
|
25127
|
+
"taken",
|
|
25128
|
+
"reserved",
|
|
25129
|
+
"invalid"
|
|
25130
|
+
]);
|
|
25131
|
+
const SlugAvailabilityResponseSchema = z.object({
|
|
25132
|
+
slug: z.string(),
|
|
25133
|
+
available: z.boolean(),
|
|
25134
|
+
reason: SlugAvailabilityReasonSchema.optional(),
|
|
25135
|
+
suggestion: OrganizationSlugSchema.optional()
|
|
25136
|
+
});
|
|
25137
|
+
const SlugAvailabilityQuerySchema = z.object({
|
|
25138
|
+
slug: z.string().trim().min(1),
|
|
25139
|
+
excludeOrganizationId: z.string().min(1).optional()
|
|
25140
|
+
});
|
|
25141
|
+
const ProjectSlugAvailabilityReasonSchema = z.enum(["taken", "invalid"]);
|
|
25142
|
+
const ProjectSlugAvailabilityResponseSchema = z.object({
|
|
25143
|
+
slug: z.string(),
|
|
25144
|
+
available: z.boolean(),
|
|
25145
|
+
reason: ProjectSlugAvailabilityReasonSchema.optional(),
|
|
25146
|
+
suggestion: ProjectSlugSchema.optional()
|
|
25147
|
+
});
|
|
25148
|
+
const ProjectSlugAvailabilityQuerySchema = z.object({
|
|
25149
|
+
slug: z.string().trim().min(1),
|
|
25150
|
+
excludeProjectId: z.string().min(1).optional()
|
|
25151
|
+
});
|
|
25152
|
+
function organizationSlugErrorCodeFromMessage(message) {
|
|
25153
|
+
if (message === "That slug is already taken." || /already taken/i.test(message)) return "slug_taken";
|
|
25154
|
+
if (/reserved/i.test(message)) return "slug_reserved";
|
|
25155
|
+
return "slug_invalid";
|
|
25156
|
+
}
|
|
25157
|
+
const ProjectStatusSchema = z.enum([
|
|
25158
|
+
"inactive",
|
|
25159
|
+
"starting",
|
|
25160
|
+
"active",
|
|
25161
|
+
"failed"
|
|
25162
|
+
]);
|
|
25163
|
+
const OrganizationUserRoleSchema = z.enum([
|
|
25164
|
+
"owner",
|
|
25165
|
+
"admin",
|
|
25166
|
+
"builder"
|
|
25167
|
+
]);
|
|
25168
|
+
const isoDateTime$5 = z.string().datetime();
|
|
25169
|
+
const OrganizationSchema = z.object({
|
|
25170
|
+
id: z.string(),
|
|
25171
|
+
name: z.string(),
|
|
25172
|
+
slug: OrganizationSlugSchema,
|
|
25173
|
+
createdAt: isoDateTime$5,
|
|
25174
|
+
updatedAt: isoDateTime$5
|
|
25175
|
+
});
|
|
25176
|
+
const ProjectSchema = z.object({
|
|
25177
|
+
id: z.string(),
|
|
25178
|
+
organizationId: z.string(),
|
|
25179
|
+
name: z.string(),
|
|
25180
|
+
slug: ProjectSlugSchema,
|
|
25181
|
+
description: z.string().nullable(),
|
|
25182
|
+
status: ProjectStatusSchema,
|
|
25183
|
+
baseUrl: z.string().nullable(),
|
|
25184
|
+
runtimeId: z.string().nullable(),
|
|
25185
|
+
lastError: z.string().nullable(),
|
|
25186
|
+
createdAt: isoDateTime$5,
|
|
25187
|
+
updatedAt: isoDateTime$5
|
|
25188
|
+
});
|
|
25189
|
+
const UserOrganizationSchema = z.object({
|
|
25190
|
+
organization: OrganizationSchema,
|
|
25191
|
+
role: OrganizationUserRoleSchema
|
|
25192
|
+
});
|
|
25193
|
+
const ActiveOrganizationResponseSchema = UserOrganizationSchema.nullable();
|
|
25194
|
+
const ListOrganizationsResponseSchema = z.array(UserOrganizationSchema);
|
|
25195
|
+
const CreateOrganizationRequestSchema = z.object({
|
|
25196
|
+
name: z.string().trim().min(1),
|
|
25197
|
+
/** Format-only at the wire boundary; reserved-name checks run in platform-database. */
|
|
25198
|
+
slug: OrganizationSlugSchema.optional()
|
|
25199
|
+
});
|
|
25200
|
+
const UpdateOrganizationRequestSchema = z.object({
|
|
25201
|
+
name: z.string().trim().min(1).optional(),
|
|
25202
|
+
slug: ClaimableOrganizationSlugSchema.optional()
|
|
25203
|
+
}).refine((data) => data.name !== void 0 || data.slug !== void 0, { message: "At least one field is required" });
|
|
25204
|
+
const CreateOrganizationResponseSchema = UserOrganizationSchema;
|
|
25205
|
+
const ListProjectsResponseSchema = z.array(ProjectSchema);
|
|
25206
|
+
const ProjectListMetricsSchema = z.object({
|
|
25207
|
+
agentCount: z.number(),
|
|
25208
|
+
workflowCount: z.number(),
|
|
25209
|
+
skillCount: z.number(),
|
|
25210
|
+
credentialCount: z.number(),
|
|
25211
|
+
lastDeploymentAt: isoDateTime$5.nullable()
|
|
25212
|
+
});
|
|
25213
|
+
const ListProjectMetricsResponseSchema = z.record(z.string(), ProjectListMetricsSchema);
|
|
25214
|
+
const CreateProjectRequestSchema = z.object({
|
|
25215
|
+
name: z.string().trim().min(1),
|
|
25216
|
+
description: z.string().trim().min(1).optional()
|
|
25217
|
+
});
|
|
25218
|
+
const UpdateProjectRequestSchema = z.object({
|
|
25219
|
+
name: z.string().trim().min(1).optional(),
|
|
25220
|
+
description: z.string().trim().optional(),
|
|
25221
|
+
slug: ProjectSlugSchema.optional()
|
|
25222
|
+
}).refine((data) => data.name !== void 0 || data.description !== void 0 || data.slug !== void 0, { message: "At least one field is required" });
|
|
25223
|
+
const CreateProjectResponseSchema = ProjectSchema;
|
|
25224
|
+
const ProjectResponseSchema = ProjectSchema;
|
|
25225
|
+
const ProjectReachabilityResponseSchema = z.object({ reachable: z.boolean() });
|
|
25226
|
+
/** Org-custom app slug segment (the part after `{orgSlug}/`). Same format as project slugs. */
|
|
25227
|
+
const AppSlugSchema = ProjectSlugSchema;
|
|
25113
25228
|
/** TCP port to bind for a local server, derived from a public URL. */
|
|
25114
25229
|
function listenPortFromUrl(url, fallback) {
|
|
25115
25230
|
const parsed = new URL(url);
|
|
@@ -25139,142 +25254,174 @@ const StoredRouteManifestSkillSchema = z.object({
|
|
|
25139
25254
|
description: z.string().optional(),
|
|
25140
25255
|
moduleFile: z.string()
|
|
25141
25256
|
});
|
|
25142
|
-
const
|
|
25143
|
-
z.
|
|
25144
|
-
|
|
25145
|
-
|
|
25146
|
-
|
|
25147
|
-
}),
|
|
25257
|
+
const attachmentSchemasSchema = z.record(z.string(), z.object({
|
|
25258
|
+
requestSchema: z.record(z.string(), z.unknown()),
|
|
25259
|
+
filterSchema: z.record(z.string(), z.unknown()).optional()
|
|
25260
|
+
}));
|
|
25261
|
+
const storedRouteManifestEntryV2Schema = z.discriminatedUnion("kind", [
|
|
25262
|
+
z.object({ kind: z.literal("health") }),
|
|
25148
25263
|
z.object({
|
|
25149
25264
|
kind: z.literal("agent"),
|
|
25150
|
-
|
|
25151
|
-
path: z.string(),
|
|
25152
|
-
agentSlug: z.string(),
|
|
25265
|
+
slug: z.string(),
|
|
25153
25266
|
moduleFile: z.string(),
|
|
25154
25267
|
name: z.string().optional(),
|
|
25155
25268
|
description: z.string().optional(),
|
|
25156
25269
|
model: z.string(),
|
|
25157
25270
|
systemPrompt: z.string(),
|
|
25158
25271
|
toolCount: z.number().int().nonnegative(),
|
|
25159
|
-
credentialCount: z.number().int().nonnegative()
|
|
25160
|
-
requestSchema: z.record(z.string(), z.unknown()),
|
|
25161
|
-
responseSchema: z.record(z.string(), z.unknown())
|
|
25162
|
-
}),
|
|
25163
|
-
z.object({
|
|
25164
|
-
kind: z.literal("agent-sessions-list"),
|
|
25165
|
-
method: z.literal("GET"),
|
|
25166
|
-
path: z.string(),
|
|
25167
|
-
agentSlug: z.string(),
|
|
25168
|
-
moduleFile: z.string()
|
|
25169
|
-
}),
|
|
25170
|
-
z.object({
|
|
25171
|
-
kind: z.literal("agent-session-detail"),
|
|
25172
|
-
method: z.literal("GET"),
|
|
25173
|
-
path: z.string(),
|
|
25174
|
-
agentSlug: z.string(),
|
|
25175
|
-
moduleFile: z.string()
|
|
25272
|
+
credentialCount: z.number().int().nonnegative()
|
|
25176
25273
|
}),
|
|
25177
25274
|
z.object({
|
|
25178
25275
|
kind: z.literal("workflow"),
|
|
25179
|
-
|
|
25180
|
-
|
|
25181
|
-
workflowSlug: z.string(),
|
|
25182
|
-
workflowName: z.string().optional(),
|
|
25276
|
+
slug: z.string(),
|
|
25277
|
+
name: z.string().optional(),
|
|
25183
25278
|
description: z.string().optional(),
|
|
25184
25279
|
subscribable: z.boolean(),
|
|
25185
25280
|
moduleFile: z.string(),
|
|
25186
|
-
requestSchema: z.record(z.string(), z.unknown())
|
|
25187
|
-
responseSchema: z.record(z.string(), z.unknown())
|
|
25188
|
-
}),
|
|
25189
|
-
z.object({
|
|
25190
|
-
kind: z.literal("workflow-runs-list"),
|
|
25191
|
-
method: z.literal("GET"),
|
|
25192
|
-
path: z.string(),
|
|
25193
|
-
workflowSlug: z.string(),
|
|
25194
|
-
workflowName: z.string().optional(),
|
|
25195
|
-
moduleFile: z.string()
|
|
25196
|
-
}),
|
|
25197
|
-
z.object({
|
|
25198
|
-
kind: z.literal("workflow-run-detail"),
|
|
25199
|
-
method: z.literal("GET"),
|
|
25200
|
-
path: z.string(),
|
|
25201
|
-
workflowSlug: z.string(),
|
|
25202
|
-
workflowName: z.string().optional(),
|
|
25203
|
-
moduleFile: z.string()
|
|
25281
|
+
requestSchema: z.record(z.string(), z.unknown())
|
|
25204
25282
|
}),
|
|
25205
25283
|
z.object({
|
|
25206
25284
|
kind: z.literal("trigger-webhook"),
|
|
25207
|
-
|
|
25208
|
-
path: z.string(),
|
|
25285
|
+
endpoint: z.string(),
|
|
25209
25286
|
attachmentIds: z.array(z.string()),
|
|
25210
25287
|
moduleFile: z.string(),
|
|
25211
|
-
|
|
25212
|
-
attachmentSchemas: z.record(z.string(), z.object({
|
|
25213
|
-
requestSchema: z.record(z.string(), z.unknown()),
|
|
25214
|
-
filterSchema: z.record(z.string(), z.unknown()).optional()
|
|
25215
|
-
})),
|
|
25216
|
-
responseSchema: z.record(z.string(), z.unknown())
|
|
25288
|
+
attachmentSchemas: attachmentSchemasSchema
|
|
25217
25289
|
}),
|
|
25218
25290
|
z.object({
|
|
25219
25291
|
kind: z.literal("trigger-poll"),
|
|
25220
|
-
method: z.literal("POST"),
|
|
25221
|
-
path: z.string(),
|
|
25222
25292
|
attachmentId: z.string(),
|
|
25223
25293
|
moduleFile: z.string(),
|
|
25224
|
-
schedule: z.string()
|
|
25225
|
-
responseSchema: z.record(z.string(), z.unknown())
|
|
25294
|
+
schedule: z.string()
|
|
25226
25295
|
}),
|
|
25227
25296
|
z.object({
|
|
25228
25297
|
kind: z.literal("trigger-poll-group"),
|
|
25229
|
-
method: z.literal("POST"),
|
|
25230
|
-
path: z.string(),
|
|
25231
25298
|
pollId: z.string(),
|
|
25232
25299
|
attachmentIds: z.array(z.string()),
|
|
25233
25300
|
moduleFile: z.string(),
|
|
25234
|
-
schedule: z.string()
|
|
25235
|
-
responseSchema: z.record(z.string(), z.unknown())
|
|
25236
|
-
}),
|
|
25237
|
-
z.object({
|
|
25238
|
-
kind: z.literal("trigger-runs-list"),
|
|
25239
|
-
method: z.literal("GET"),
|
|
25240
|
-
path: z.string(),
|
|
25241
|
-
attachmentId: z.string(),
|
|
25242
|
-
moduleFile: z.string()
|
|
25243
|
-
}),
|
|
25244
|
-
z.object({
|
|
25245
|
-
kind: z.literal("trigger-run-detail"),
|
|
25246
|
-
method: z.literal("GET"),
|
|
25247
|
-
path: z.string(),
|
|
25248
|
-
attachmentId: z.string(),
|
|
25249
|
-
moduleFile: z.string()
|
|
25301
|
+
schedule: z.string()
|
|
25250
25302
|
}),
|
|
25251
25303
|
z.object({
|
|
25252
25304
|
kind: z.literal("cron-schedule"),
|
|
25253
25305
|
attachmentId: z.string(),
|
|
25254
25306
|
moduleFile: z.string(),
|
|
25255
25307
|
schedule: z.string()
|
|
25256
|
-
}),
|
|
25257
|
-
z.object({
|
|
25258
|
-
kind: z.literal("plugin"),
|
|
25259
|
-
method: z.enum([
|
|
25260
|
-
"GET",
|
|
25261
|
-
"POST",
|
|
25262
|
-
"PUT",
|
|
25263
|
-
"PATCH",
|
|
25264
|
-
"DELETE"
|
|
25265
|
-
]),
|
|
25266
|
-
path: z.string(),
|
|
25267
|
-
plugin: z.string()
|
|
25268
25308
|
})
|
|
25269
25309
|
]);
|
|
25270
|
-
const
|
|
25271
|
-
version: z.literal(
|
|
25272
|
-
entries: z.array(
|
|
25310
|
+
const storedRouteManifestV2Schema = z.object({
|
|
25311
|
+
version: z.literal(2),
|
|
25312
|
+
entries: z.array(storedRouteManifestEntryV2Schema),
|
|
25273
25313
|
skills: z.array(StoredRouteManifestSkillSchema).default([]),
|
|
25274
25314
|
integrations: z.array(z.string()).optional()
|
|
25275
25315
|
});
|
|
25316
|
+
const DERIVED_ENTRY_KINDS = new Set([
|
|
25317
|
+
"agent-sessions-list",
|
|
25318
|
+
"agent-session-detail",
|
|
25319
|
+
"workflow-runs-list",
|
|
25320
|
+
"workflow-run-detail",
|
|
25321
|
+
"trigger-runs-list",
|
|
25322
|
+
"trigger-run-detail"
|
|
25323
|
+
]);
|
|
25324
|
+
function webhookEndpointFromPath(path) {
|
|
25325
|
+
return path.replace(/^\/triggers\//, "").replace(/^\/+|\/+$/g, "");
|
|
25326
|
+
}
|
|
25327
|
+
/** TODO remove after all artifacts rebuilt — upcasts legacy v1 manifests to v2. */
|
|
25328
|
+
function normalizeEntryToV2(entry) {
|
|
25329
|
+
const kind = entry.kind;
|
|
25330
|
+
if (typeof kind !== "string") return null;
|
|
25331
|
+
if (DERIVED_ENTRY_KINDS.has(kind) || kind === "plugin") return null;
|
|
25332
|
+
if (kind === "health") return { kind: "health" };
|
|
25333
|
+
if (kind === "agent") {
|
|
25334
|
+
const slug = typeof entry.slug === "string" ? entry.slug : typeof entry.agentSlug === "string" ? entry.agentSlug : void 0;
|
|
25335
|
+
if (!slug || typeof entry.moduleFile !== "string") return null;
|
|
25336
|
+
return {
|
|
25337
|
+
kind: "agent",
|
|
25338
|
+
slug,
|
|
25339
|
+
moduleFile: entry.moduleFile,
|
|
25340
|
+
...typeof entry.name === "string" ? { name: entry.name } : {},
|
|
25341
|
+
...typeof entry.description === "string" ? { description: entry.description } : {},
|
|
25342
|
+
model: typeof entry.model === "string" ? entry.model : "",
|
|
25343
|
+
systemPrompt: typeof entry.systemPrompt === "string" ? entry.systemPrompt : "",
|
|
25344
|
+
toolCount: typeof entry.toolCount === "number" ? entry.toolCount : 0,
|
|
25345
|
+
credentialCount: typeof entry.credentialCount === "number" ? entry.credentialCount : 0
|
|
25346
|
+
};
|
|
25347
|
+
}
|
|
25348
|
+
if (kind === "workflow") {
|
|
25349
|
+
const slug = typeof entry.slug === "string" ? entry.slug : typeof entry.workflowSlug === "string" ? entry.workflowSlug : void 0;
|
|
25350
|
+
if (!slug || typeof entry.moduleFile !== "string") return null;
|
|
25351
|
+
const name = typeof entry.name === "string" ? entry.name : typeof entry.workflowName === "string" ? entry.workflowName : void 0;
|
|
25352
|
+
return {
|
|
25353
|
+
kind: "workflow",
|
|
25354
|
+
slug,
|
|
25355
|
+
moduleFile: entry.moduleFile,
|
|
25356
|
+
...name ? { name } : {},
|
|
25357
|
+
...typeof entry.description === "string" ? { description: entry.description } : {},
|
|
25358
|
+
subscribable: entry.subscribable === true,
|
|
25359
|
+
requestSchema: entry.requestSchema && typeof entry.requestSchema === "object" ? entry.requestSchema : {}
|
|
25360
|
+
};
|
|
25361
|
+
}
|
|
25362
|
+
if (kind === "trigger-webhook") {
|
|
25363
|
+
if (typeof entry.moduleFile !== "string" || !Array.isArray(entry.attachmentIds)) return null;
|
|
25364
|
+
const endpoint = typeof entry.endpoint === "string" ? entry.endpoint : typeof entry.path === "string" ? webhookEndpointFromPath(entry.path) : void 0;
|
|
25365
|
+
if (!endpoint) return null;
|
|
25366
|
+
return {
|
|
25367
|
+
kind: "trigger-webhook",
|
|
25368
|
+
endpoint,
|
|
25369
|
+
attachmentIds: entry.attachmentIds,
|
|
25370
|
+
moduleFile: entry.moduleFile,
|
|
25371
|
+
attachmentSchemas: entry.attachmentSchemas && typeof entry.attachmentSchemas === "object" ? entry.attachmentSchemas : {}
|
|
25372
|
+
};
|
|
25373
|
+
}
|
|
25374
|
+
if (kind === "trigger-poll") {
|
|
25375
|
+
if (typeof entry.attachmentId !== "string" || typeof entry.moduleFile !== "string" || typeof entry.schedule !== "string") return null;
|
|
25376
|
+
return {
|
|
25377
|
+
kind: "trigger-poll",
|
|
25378
|
+
attachmentId: entry.attachmentId,
|
|
25379
|
+
moduleFile: entry.moduleFile,
|
|
25380
|
+
schedule: entry.schedule
|
|
25381
|
+
};
|
|
25382
|
+
}
|
|
25383
|
+
if (kind === "trigger-poll-group") {
|
|
25384
|
+
if (typeof entry.pollId !== "string" || typeof entry.moduleFile !== "string" || typeof entry.schedule !== "string" || !Array.isArray(entry.attachmentIds)) return null;
|
|
25385
|
+
return {
|
|
25386
|
+
kind: "trigger-poll-group",
|
|
25387
|
+
pollId: entry.pollId,
|
|
25388
|
+
attachmentIds: entry.attachmentIds,
|
|
25389
|
+
moduleFile: entry.moduleFile,
|
|
25390
|
+
schedule: entry.schedule
|
|
25391
|
+
};
|
|
25392
|
+
}
|
|
25393
|
+
if (kind === "cron-schedule") {
|
|
25394
|
+
if (typeof entry.attachmentId !== "string" || typeof entry.moduleFile !== "string" || typeof entry.schedule !== "string") return null;
|
|
25395
|
+
return {
|
|
25396
|
+
kind: "cron-schedule",
|
|
25397
|
+
attachmentId: entry.attachmentId,
|
|
25398
|
+
moduleFile: entry.moduleFile,
|
|
25399
|
+
schedule: entry.schedule
|
|
25400
|
+
};
|
|
25401
|
+
}
|
|
25402
|
+
return null;
|
|
25403
|
+
}
|
|
25404
|
+
/** TODO remove after all artifacts rebuilt — upcasts legacy v1 manifests to v2. */
|
|
25405
|
+
function normalizeStoredRouteManifestToV2(value) {
|
|
25406
|
+
if (!value || typeof value !== "object") throw new Error("Invalid route manifest");
|
|
25407
|
+
const raw = value;
|
|
25408
|
+
if (raw.version === 2) return storedRouteManifestV2Schema.parse(value);
|
|
25409
|
+
const entriesRaw = Array.isArray(raw.entries) ? raw.entries : [];
|
|
25410
|
+
const entries = [];
|
|
25411
|
+
for (const entry of entriesRaw) {
|
|
25412
|
+
if (!entry || typeof entry !== "object") continue;
|
|
25413
|
+
const normalized = normalizeEntryToV2(entry);
|
|
25414
|
+
if (normalized) entries.push(normalized);
|
|
25415
|
+
}
|
|
25416
|
+
return storedRouteManifestV2Schema.parse({
|
|
25417
|
+
version: 2,
|
|
25418
|
+
entries,
|
|
25419
|
+
skills: raw.skills ?? [],
|
|
25420
|
+
integrations: raw.integrations
|
|
25421
|
+
});
|
|
25422
|
+
}
|
|
25276
25423
|
function parseStoredRouteManifest(value) {
|
|
25277
|
-
return
|
|
25424
|
+
return normalizeStoredRouteManifestToV2(value);
|
|
25278
25425
|
}
|
|
25279
25426
|
/** Messaging platforms that support agent gateway bindings. */
|
|
25280
25427
|
const ChannelPlatformKeySchema = z.enum(["slack"]);
|
|
@@ -25384,8 +25531,8 @@ const ChannelDirectoryEntrySchema = z.object({
|
|
|
25384
25531
|
memberCount: z.number().int().nonnegative().optional(),
|
|
25385
25532
|
isArchived: z.boolean().optional()
|
|
25386
25533
|
});
|
|
25387
|
-
z.
|
|
25388
|
-
z.
|
|
25534
|
+
z.array(ChannelConnectionSchema);
|
|
25535
|
+
z.array(ChannelDirectoryEntrySchema);
|
|
25389
25536
|
z.object({ teamName: z.string().min(1).optional() });
|
|
25390
25537
|
/** OAuth workspace available for channel bindings (e.g. Slack team). */
|
|
25391
25538
|
const ChannelAccountSchema = z.object({
|
|
@@ -25394,7 +25541,7 @@ const ChannelAccountSchema = z.object({
|
|
|
25394
25541
|
label: z.string().min(1),
|
|
25395
25542
|
connectedAt: z.string()
|
|
25396
25543
|
});
|
|
25397
|
-
z.
|
|
25544
|
+
z.array(ChannelAccountSchema);
|
|
25398
25545
|
const NewChannelBindingInputSchema = z.object({
|
|
25399
25546
|
channelId: z.string().min(1),
|
|
25400
25547
|
channelName: z.string().min(1),
|
|
@@ -25411,6 +25558,29 @@ z.object({ patch: z.object({
|
|
|
25411
25558
|
mode: ChannelListenModeSchema.optional(),
|
|
25412
25559
|
subscribeOnMention: z.boolean().optional()
|
|
25413
25560
|
}) });
|
|
25561
|
+
/** Metadata for one vault field on a custom api_key app. */
|
|
25562
|
+
const AppCredentialFieldSchema = z.object({
|
|
25563
|
+
label: z.string().trim().min(1).optional(),
|
|
25564
|
+
secret: z.boolean().optional(),
|
|
25565
|
+
optional: z.boolean().optional()
|
|
25566
|
+
});
|
|
25567
|
+
/** Credential template keyed by vault field name. */
|
|
25568
|
+
const AppCredentialFieldsSchema = z.record(z.string().regex(/^[a-zA-Z][a-zA-Z0-9_]*$/), AppCredentialFieldSchema).refine((fields) => Object.keys(fields).length > 0, { message: "At least one credential field is required" }).refine((fields) => Object.values(fields).some((field) => field.optional !== true), { message: "At least one credential field must be required" });
|
|
25569
|
+
function validateCredentialValueAgainstFields(fields, value) {
|
|
25570
|
+
for (const [key, field] of Object.entries(fields)) {
|
|
25571
|
+
if (field.optional === true) continue;
|
|
25572
|
+
const raw = value[key];
|
|
25573
|
+
if (typeof raw !== "string" || raw.trim().length === 0) return {
|
|
25574
|
+
ok: false,
|
|
25575
|
+
message: `Missing required credential field "${key}"`
|
|
25576
|
+
};
|
|
25577
|
+
}
|
|
25578
|
+
for (const key of Object.keys(value)) if (!(key in fields)) return {
|
|
25579
|
+
ok: false,
|
|
25580
|
+
message: `Unknown credential field "${key}"`
|
|
25581
|
+
};
|
|
25582
|
+
return { ok: true };
|
|
25583
|
+
}
|
|
25414
25584
|
/** A single OAuth scope an app can request, with human copy for connect UI. */
|
|
25415
25585
|
const OAuthScopeOptionSchema = z.object({
|
|
25416
25586
|
name: z.string().min(1),
|
|
@@ -25438,6 +25608,37 @@ z.object({
|
|
|
25438
25608
|
authKind: AppAuthKindSchema,
|
|
25439
25609
|
oauthScopes: z.array(OAuthScopeOptionSchema)
|
|
25440
25610
|
}).extend({ source: AppSourceSchema });
|
|
25611
|
+
const customAppNameSchema = z.string().trim().min(1, "Name is required");
|
|
25612
|
+
const AppSlugAvailabilityReasonSchema = ProjectSlugAvailabilityReasonSchema;
|
|
25613
|
+
const AppSlugAvailabilityResponseSchema = z.object({
|
|
25614
|
+
slug: z.string(),
|
|
25615
|
+
available: z.boolean(),
|
|
25616
|
+
reason: AppSlugAvailabilityReasonSchema.optional(),
|
|
25617
|
+
suggestion: AppSlugSchema.optional()
|
|
25618
|
+
});
|
|
25619
|
+
const AppSlugAvailabilityQuerySchema = z.object({ slug: z.string().trim().min(1) });
|
|
25620
|
+
/** Request body for creating an org custom api_key app. */
|
|
25621
|
+
const CreateCustomAppRequestSchema = z.object({
|
|
25622
|
+
name: customAppNameSchema,
|
|
25623
|
+
slug: AppSlugSchema,
|
|
25624
|
+
description: z.string().trim().min(1),
|
|
25625
|
+
fields: AppCredentialFieldsSchema
|
|
25626
|
+
});
|
|
25627
|
+
/** Full custom app detail returned by GET (includes credential template for sync). */
|
|
25628
|
+
const CustomAppDetailSchema = z.object({
|
|
25629
|
+
id: z.string().min(1),
|
|
25630
|
+
slug: z.string().min(1),
|
|
25631
|
+
name: z.string().min(1),
|
|
25632
|
+
description: z.string().min(1),
|
|
25633
|
+
category: z.string().min(1),
|
|
25634
|
+
authKind: z.literal("api_key"),
|
|
25635
|
+
source: z.literal("custom"),
|
|
25636
|
+
credentialFields: AppCredentialFieldsSchema,
|
|
25637
|
+
createdAt: z.string().min(1),
|
|
25638
|
+
updatedAt: z.string().min(1)
|
|
25639
|
+
});
|
|
25640
|
+
const CreateCustomAppResponseSchema = CustomAppDetailSchema;
|
|
25641
|
+
const GetCustomAppResponseSchema = CustomAppDetailSchema;
|
|
25441
25642
|
z.object({
|
|
25442
25643
|
id: z.string().min(1),
|
|
25443
25644
|
organizationId: z.string().min(1).nullable(),
|
|
@@ -25449,6 +25650,7 @@ z.object({
|
|
|
25449
25650
|
authKind: AppAuthKindSchema,
|
|
25450
25651
|
oauthScopes: z.array(OAuthScopeOptionSchema),
|
|
25451
25652
|
source: AppSourceSchema,
|
|
25653
|
+
credentialFields: AppCredentialFieldsSchema.optional(),
|
|
25452
25654
|
createdAt: z.string().min(1),
|
|
25453
25655
|
updatedAt: z.string().min(1)
|
|
25454
25656
|
});
|
|
@@ -25465,10 +25667,67 @@ const AppCatalogEntrySchema = z.object({
|
|
|
25465
25667
|
logo: z.string().url().nullable().optional(),
|
|
25466
25668
|
authKind: AppAuthKindSchema,
|
|
25467
25669
|
oauthScopes: z.array(OAuthScopeOptionSchema),
|
|
25670
|
+
/** Where app metadata and execution are sourced (e.g. composio, custom). */
|
|
25671
|
+
source: AppSourceSchema,
|
|
25672
|
+
/** Custom api_key apps — vault field template for connect UI and sync. */
|
|
25673
|
+
credentialFields: AppCredentialFieldsSchema.optional(),
|
|
25468
25674
|
/** When present, the app supports agent gateway bindings (external channels). */
|
|
25469
25675
|
gateway: AppGatewaySchema.optional()
|
|
25470
25676
|
});
|
|
25471
|
-
const ListAppsResponseSchema = z.
|
|
25677
|
+
const ListAppsResponseSchema = z.array(AppCatalogEntrySchema);
|
|
25678
|
+
const CatalogAppSummarySchema = z.object({
|
|
25679
|
+
name: z.string(),
|
|
25680
|
+
description: z.string(),
|
|
25681
|
+
package: z.string()
|
|
25682
|
+
});
|
|
25683
|
+
z.object({
|
|
25684
|
+
items: z.array(CatalogAppSummarySchema),
|
|
25685
|
+
nextCursor: z.string().optional()
|
|
25686
|
+
});
|
|
25687
|
+
z.object({
|
|
25688
|
+
name: z.string(),
|
|
25689
|
+
description: z.string(),
|
|
25690
|
+
package: z.string(),
|
|
25691
|
+
version: z.string().optional()
|
|
25692
|
+
});
|
|
25693
|
+
const CatalogActionSummarySchema = z.object({
|
|
25694
|
+
slug: z.string(),
|
|
25695
|
+
name: z.string(),
|
|
25696
|
+
description: z.string().optional()
|
|
25697
|
+
});
|
|
25698
|
+
z.object({
|
|
25699
|
+
toolkit: z.string().optional(),
|
|
25700
|
+
items: z.array(CatalogActionSummarySchema),
|
|
25701
|
+
nextCursor: z.string().optional()
|
|
25702
|
+
});
|
|
25703
|
+
z.object({
|
|
25704
|
+
slug: z.string(),
|
|
25705
|
+
name: z.string(),
|
|
25706
|
+
description: z.string().optional(),
|
|
25707
|
+
inputParameters: z.record(z.string(), z.unknown()).optional(),
|
|
25708
|
+
outputParameters: z.record(z.string(), z.unknown()).optional(),
|
|
25709
|
+
version: z.string().optional()
|
|
25710
|
+
});
|
|
25711
|
+
const ORG_SLUG_SEPARATOR = "/";
|
|
25712
|
+
/** Parse a stored app slug into official vs org-custom parts. */
|
|
25713
|
+
function parseAppSlug(slug) {
|
|
25714
|
+
const trimmed = slug.trim();
|
|
25715
|
+
if (!trimmed) throw new Error("parseAppSlug requires a non-empty slug");
|
|
25716
|
+
const separatorIndex = trimmed.indexOf(ORG_SLUG_SEPARATOR);
|
|
25717
|
+
if (separatorIndex === -1) return {
|
|
25718
|
+
kind: "official",
|
|
25719
|
+
slug: trimmed
|
|
25720
|
+
};
|
|
25721
|
+
const orgSlug = trimmed.slice(0, separatorIndex);
|
|
25722
|
+
const name = trimmed.slice(separatorIndex + 1);
|
|
25723
|
+
if (!orgSlug || !name || trimmed.indexOf(ORG_SLUG_SEPARATOR, separatorIndex + 1) !== -1) throw new Error(`Invalid org app slug: ${slug}`);
|
|
25724
|
+
return {
|
|
25725
|
+
kind: "org",
|
|
25726
|
+
orgSlug,
|
|
25727
|
+
name,
|
|
25728
|
+
slug: trimmed
|
|
25729
|
+
};
|
|
25730
|
+
}
|
|
25472
25731
|
/** How a credential instance is stored (`credential_instances.auth_kind`). */
|
|
25473
25732
|
const CredentialAuthKindSchema = z.enum([
|
|
25474
25733
|
"api_key",
|
|
@@ -25566,7 +25825,9 @@ function addMissingCredentialTargetIssue(ctx, path = ["projects"]) {
|
|
|
25566
25825
|
const CredentialTargetsFieldsSchema = z.object({
|
|
25567
25826
|
projects: z.array(z.string().min(1)).default([]),
|
|
25568
25827
|
createOrganizationCredential: z.boolean().default(false),
|
|
25569
|
-
createUserProvidedCredential: z.boolean().default(false)
|
|
25828
|
+
createUserProvidedCredential: z.boolean().default(false),
|
|
25829
|
+
/** Display label for created credential instances (apps table / detail page). */
|
|
25830
|
+
label: z.string().trim().min(1).optional()
|
|
25570
25831
|
});
|
|
25571
25832
|
CredentialTargetsFieldsSchema.extend({
|
|
25572
25833
|
appId: z.string().min(1),
|
|
@@ -25577,6 +25838,23 @@ z.object({
|
|
|
25577
25838
|
status: z.enum(["connected", "redirecting"]),
|
|
25578
25839
|
authorizeUrl: z.string().url().nullable()
|
|
25579
25840
|
});
|
|
25841
|
+
z.object({
|
|
25842
|
+
app: z.string().trim().min(1),
|
|
25843
|
+
scopeType: AppCredentialScopeSchema,
|
|
25844
|
+
projectSlug: z.string().trim().min(1).optional(),
|
|
25845
|
+
label: z.string().trim().min(1).optional()
|
|
25846
|
+
}).superRefine((input, ctx) => {
|
|
25847
|
+
if (input.scopeType === "project" && !input.projectSlug?.trim()) ctx.addIssue({
|
|
25848
|
+
code: "custom",
|
|
25849
|
+
message: "projectSlug is required for project scope",
|
|
25850
|
+
path: ["projectSlug"]
|
|
25851
|
+
});
|
|
25852
|
+
});
|
|
25853
|
+
z.object({
|
|
25854
|
+
status: z.enum(["redirecting"]),
|
|
25855
|
+
authorizeUrl: z.string().url(),
|
|
25856
|
+
connectionId: z.string()
|
|
25857
|
+
});
|
|
25580
25858
|
/** Request body for `POST /api/credentials` (manual api-key fan-out). */
|
|
25581
25859
|
const CreateCredentialsRequestSchema = CredentialTargetsFieldsSchema.extend({
|
|
25582
25860
|
appId: z.string().min(1),
|
|
@@ -25602,9 +25880,9 @@ const UpdateCredentialRequestSchema = z.object({
|
|
|
25602
25880
|
isDefault: z.boolean().optional(),
|
|
25603
25881
|
value: credentialSecretValueSchema.optional()
|
|
25604
25882
|
}).refine((input) => input.label !== void 0 || input.isDefault !== void 0 || input.value !== void 0, { message: "At least one field is required" });
|
|
25605
|
-
const ListCredentialsResponseSchema = z.
|
|
25606
|
-
const GetCredentialResponseSchema =
|
|
25607
|
-
const CreateCredentialsResponseSchema = z.
|
|
25883
|
+
const ListCredentialsResponseSchema = z.array(AppCredentialSummarySchema);
|
|
25884
|
+
const GetCredentialResponseSchema = AppCredentialSummarySchema;
|
|
25885
|
+
const CreateCredentialsResponseSchema = z.array(AppCredentialSummarySchema);
|
|
25608
25886
|
const McpConnectionStatusSchema = z.enum([
|
|
25609
25887
|
"INITIATED",
|
|
25610
25888
|
"ACTIVE",
|
|
@@ -25620,7 +25898,7 @@ const McpAppSchema = z.object({
|
|
|
25620
25898
|
connectionId: z.string().optional(),
|
|
25621
25899
|
status: McpConnectionStatusSchema.optional()
|
|
25622
25900
|
});
|
|
25623
|
-
z.
|
|
25901
|
+
z.array(McpAppSchema);
|
|
25624
25902
|
z.object({
|
|
25625
25903
|
connectionId: z.string(),
|
|
25626
25904
|
entityId: z.string(),
|
|
@@ -25630,11 +25908,6 @@ z.object({
|
|
|
25630
25908
|
app: z.string().trim().min(1),
|
|
25631
25909
|
tool: z.string().trim().min(1),
|
|
25632
25910
|
arguments: z.record(z.string(), z.unknown()).default({}),
|
|
25633
|
-
/**
|
|
25634
|
-
* Resolved credential instance to execute against. When set, the platform executes that exact
|
|
25635
|
-
* connection (scoped to the caller's org); when omitted it resolves the app's instance by scope.
|
|
25636
|
-
*/
|
|
25637
|
-
instanceId: z.string().trim().min(1).optional(),
|
|
25638
25911
|
/** Pinned provider toolkit version, sourced from the app definition; forwarded to the provider. */
|
|
25639
25912
|
version: z.string().trim().min(1)
|
|
25640
25913
|
});
|
|
@@ -25654,112 +25927,6 @@ function isCredentialInput(value) {
|
|
|
25654
25927
|
return typeof candidate.key === "string" && CredentialAuthKindSchema.safeParse(candidate.kind).success && candidate.schema instanceof z.ZodType;
|
|
25655
25928
|
}
|
|
25656
25929
|
const credentialInputSchema = z.custom((value) => isCredentialInput(value), "must be a credential requirement");
|
|
25657
|
-
const PROJECT_SLUG_TAKEN_MESSAGE = "That slug is already taken.";
|
|
25658
|
-
const OrganizationSlugErrorCodeSchema = z.enum([
|
|
25659
|
-
"slug_taken",
|
|
25660
|
-
"slug_reserved",
|
|
25661
|
-
"slug_invalid"
|
|
25662
|
-
]);
|
|
25663
|
-
const SlugAvailabilityReasonSchema = z.enum([
|
|
25664
|
-
"taken",
|
|
25665
|
-
"reserved",
|
|
25666
|
-
"invalid"
|
|
25667
|
-
]);
|
|
25668
|
-
const SlugAvailabilityResponseSchema = z.object({
|
|
25669
|
-
slug: z.string(),
|
|
25670
|
-
available: z.boolean(),
|
|
25671
|
-
reason: SlugAvailabilityReasonSchema.optional(),
|
|
25672
|
-
suggestion: OrganizationSlugSchema.optional()
|
|
25673
|
-
});
|
|
25674
|
-
const SlugAvailabilityQuerySchema = z.object({
|
|
25675
|
-
slug: z.string().trim().min(1),
|
|
25676
|
-
excludeOrganizationId: z.string().min(1).optional()
|
|
25677
|
-
});
|
|
25678
|
-
const ProjectSlugAvailabilityReasonSchema = z.enum(["taken", "invalid"]);
|
|
25679
|
-
const ProjectSlugAvailabilityResponseSchema = z.object({
|
|
25680
|
-
slug: z.string(),
|
|
25681
|
-
available: z.boolean(),
|
|
25682
|
-
reason: ProjectSlugAvailabilityReasonSchema.optional(),
|
|
25683
|
-
suggestion: ProjectSlugSchema.optional()
|
|
25684
|
-
});
|
|
25685
|
-
const ProjectSlugAvailabilityQuerySchema = z.object({
|
|
25686
|
-
slug: z.string().trim().min(1),
|
|
25687
|
-
excludeProjectId: z.string().min(1).optional()
|
|
25688
|
-
});
|
|
25689
|
-
function organizationSlugErrorCodeFromMessage(message) {
|
|
25690
|
-
if (message === "That slug is already taken." || /already taken/i.test(message)) return "slug_taken";
|
|
25691
|
-
if (/reserved/i.test(message)) return "slug_reserved";
|
|
25692
|
-
return "slug_invalid";
|
|
25693
|
-
}
|
|
25694
|
-
const ProjectStatusSchema = z.enum([
|
|
25695
|
-
"inactive",
|
|
25696
|
-
"starting",
|
|
25697
|
-
"active",
|
|
25698
|
-
"failed"
|
|
25699
|
-
]);
|
|
25700
|
-
const OrganizationUserRoleSchema = z.enum([
|
|
25701
|
-
"owner",
|
|
25702
|
-
"admin",
|
|
25703
|
-
"builder"
|
|
25704
|
-
]);
|
|
25705
|
-
const isoDateTime$5 = z.string().datetime();
|
|
25706
|
-
const OrganizationSchema = z.object({
|
|
25707
|
-
id: z.string(),
|
|
25708
|
-
name: z.string(),
|
|
25709
|
-
slug: OrganizationSlugSchema,
|
|
25710
|
-
createdAt: isoDateTime$5,
|
|
25711
|
-
updatedAt: isoDateTime$5
|
|
25712
|
-
});
|
|
25713
|
-
const ProjectSchema = z.object({
|
|
25714
|
-
id: z.string(),
|
|
25715
|
-
organizationId: z.string(),
|
|
25716
|
-
name: z.string(),
|
|
25717
|
-
slug: ProjectSlugSchema,
|
|
25718
|
-
description: z.string().nullable(),
|
|
25719
|
-
status: ProjectStatusSchema,
|
|
25720
|
-
baseUrl: z.string().nullable(),
|
|
25721
|
-
runtimeId: z.string().nullable(),
|
|
25722
|
-
lastError: z.string().nullable(),
|
|
25723
|
-
createdAt: isoDateTime$5,
|
|
25724
|
-
updatedAt: isoDateTime$5
|
|
25725
|
-
});
|
|
25726
|
-
const UserOrganizationSchema = z.object({
|
|
25727
|
-
organization: OrganizationSchema,
|
|
25728
|
-
role: OrganizationUserRoleSchema
|
|
25729
|
-
});
|
|
25730
|
-
const ActiveOrganizationResponseSchema = z.object({ organization: UserOrganizationSchema.nullable() });
|
|
25731
|
-
const ListOrganizationsResponseSchema = z.object({ organizations: z.array(UserOrganizationSchema) });
|
|
25732
|
-
const CreateOrganizationRequestSchema = z.object({
|
|
25733
|
-
name: z.string().trim().min(1),
|
|
25734
|
-
/** Format-only at the wire boundary; reserved-name checks run in platform-database. */
|
|
25735
|
-
slug: OrganizationSlugSchema.optional()
|
|
25736
|
-
});
|
|
25737
|
-
const UpdateOrganizationRequestSchema = z.object({
|
|
25738
|
-
name: z.string().trim().min(1).optional(),
|
|
25739
|
-
slug: ClaimableOrganizationSlugSchema.optional()
|
|
25740
|
-
}).refine((data) => data.name !== void 0 || data.slug !== void 0, { message: "At least one field is required" });
|
|
25741
|
-
const CreateOrganizationResponseSchema = z.object({ organization: UserOrganizationSchema });
|
|
25742
|
-
const ListProjectsResponseSchema = z.object({ projects: z.array(ProjectSchema) });
|
|
25743
|
-
const ProjectListMetricsSchema = z.object({
|
|
25744
|
-
agentCount: z.number(),
|
|
25745
|
-
workflowCount: z.number(),
|
|
25746
|
-
skillCount: z.number(),
|
|
25747
|
-
credentialCount: z.number(),
|
|
25748
|
-
lastDeploymentAt: isoDateTime$5.nullable()
|
|
25749
|
-
});
|
|
25750
|
-
const ListProjectMetricsResponseSchema = z.object({ metrics: z.record(z.string(), ProjectListMetricsSchema) });
|
|
25751
|
-
const CreateProjectRequestSchema = z.object({
|
|
25752
|
-
name: z.string().trim().min(1),
|
|
25753
|
-
description: z.string().trim().min(1).optional()
|
|
25754
|
-
});
|
|
25755
|
-
const UpdateProjectRequestSchema = z.object({
|
|
25756
|
-
name: z.string().trim().min(1).optional(),
|
|
25757
|
-
description: z.string().trim().optional(),
|
|
25758
|
-
slug: ProjectSlugSchema.optional()
|
|
25759
|
-
}).refine((data) => data.name !== void 0 || data.description !== void 0 || data.slug !== void 0, { message: "At least one field is required" });
|
|
25760
|
-
const CreateProjectResponseSchema = z.object({ project: ProjectSchema });
|
|
25761
|
-
const ProjectResponseSchema = z.object({ project: ProjectSchema });
|
|
25762
|
-
const ProjectReachabilityResponseSchema = z.object({ reachable: z.boolean() });
|
|
25763
25930
|
const ValidationErrorDetailSchema = z.object({
|
|
25764
25931
|
path: z.string(),
|
|
25765
25932
|
message: z.string()
|
|
@@ -26405,7 +26572,7 @@ const OrganizationMemberSchema = z.object({
|
|
|
26405
26572
|
joinedAt: isoDateTime$4.optional(),
|
|
26406
26573
|
lastActiveAt: isoDateTime$4.nullable().optional()
|
|
26407
26574
|
});
|
|
26408
|
-
const ListOrganizationMembersResponseSchema = z.
|
|
26575
|
+
const ListOrganizationMembersResponseSchema = z.array(OrganizationMemberSchema);
|
|
26409
26576
|
const InviteOrganizationMembersRequestSchema = z.object({
|
|
26410
26577
|
emails: z.array(z.string().trim().email()).min(1),
|
|
26411
26578
|
role: InvitableOrganizationMemberRoleSchema
|
|
@@ -26421,9 +26588,9 @@ const InviteOrganizationMemberResultSchema = z.object({
|
|
|
26421
26588
|
status: InviteOrganizationMemberResultStatusSchema,
|
|
26422
26589
|
invitationId: z.string().optional()
|
|
26423
26590
|
});
|
|
26424
|
-
const InviteOrganizationMembersResponseSchema = z.
|
|
26591
|
+
const InviteOrganizationMembersResponseSchema = z.array(InviteOrganizationMemberResultSchema);
|
|
26425
26592
|
const UpdateOrganizationMemberRequestSchema = z.object({ role: InvitableOrganizationMemberRoleSchema });
|
|
26426
|
-
const UpdateOrganizationMemberResponseSchema =
|
|
26593
|
+
const UpdateOrganizationMemberResponseSchema = OrganizationMemberSchema;
|
|
26427
26594
|
const OrganizationInvitationSchema = z.object({
|
|
26428
26595
|
id: z.string(),
|
|
26429
26596
|
organizationName: z.string(),
|
|
@@ -26432,8 +26599,8 @@ const OrganizationInvitationSchema = z.object({
|
|
|
26432
26599
|
invitedByEmail: z.string().email().optional(),
|
|
26433
26600
|
role: OrganizationMemberRoleSchema
|
|
26434
26601
|
});
|
|
26435
|
-
const ListOrganizationInvitationsResponseSchema = z.
|
|
26436
|
-
const AcceptOrganizationInvitationResponseSchema =
|
|
26602
|
+
const ListOrganizationInvitationsResponseSchema = z.array(OrganizationInvitationSchema);
|
|
26603
|
+
const AcceptOrganizationInvitationResponseSchema = UserOrganizationSchema;
|
|
26437
26604
|
const DeclineOrganizationInvitationResponseSchema = z.object({ success: z.literal(true) });
|
|
26438
26605
|
/** Web path to auto-accept an invitation after sign-in (used in invite emails). */
|
|
26439
26606
|
function organizationInvitationAcceptPath(invitationId) {
|
|
@@ -26456,7 +26623,7 @@ const ApiKeySummarySchema = z.object({
|
|
|
26456
26623
|
createdBy: ApiKeyCreatorSchema,
|
|
26457
26624
|
isCreatedByCurrentUser: z.boolean()
|
|
26458
26625
|
});
|
|
26459
|
-
const ListApiKeysResponseSchema = z.
|
|
26626
|
+
const ListApiKeysResponseSchema = z.array(ApiKeySummarySchema);
|
|
26460
26627
|
const CreateApiKeyRequestSchema = z.object({ name: z.string().trim().min(1).max(128) });
|
|
26461
26628
|
const CreateApiKeyResponseSchema = ApiKeySummarySchema.extend({ secret: z.string() });
|
|
26462
26629
|
const ProjectUserRoleSchema = z.enum(["admin", "builder"]);
|
|
@@ -26474,7 +26641,7 @@ const ProjectMemberSchema = z.object({
|
|
|
26474
26641
|
createdAt: isoDateTime$2,
|
|
26475
26642
|
isCurrentUser: z.boolean().optional()
|
|
26476
26643
|
});
|
|
26477
|
-
const ListProjectMembersResponseSchema = z.
|
|
26644
|
+
const ListProjectMembersResponseSchema = z.array(ProjectMemberSchema);
|
|
26478
26645
|
const InviteProjectMembersRequestSchema = z.object({
|
|
26479
26646
|
emails: z.array(z.string().trim().email()).min(1),
|
|
26480
26647
|
role: ProjectUserRoleSchema
|
|
@@ -26489,9 +26656,9 @@ const InviteProjectMemberResultSchema = z.object({
|
|
|
26489
26656
|
email: z.string(),
|
|
26490
26657
|
status: InviteProjectMemberResultStatusSchema
|
|
26491
26658
|
});
|
|
26492
|
-
const InviteProjectMembersResponseSchema = z.
|
|
26659
|
+
const InviteProjectMembersResponseSchema = z.array(InviteProjectMemberResultSchema);
|
|
26493
26660
|
const UpdateProjectMemberRequestSchema = z.object({ role: ProjectUserRoleSchema });
|
|
26494
|
-
const UpdateProjectMemberResponseSchema =
|
|
26661
|
+
const UpdateProjectMemberResponseSchema = ProjectMemberSchema;
|
|
26495
26662
|
const ProjectSettingsSchema = z.object({
|
|
26496
26663
|
description: z.string(),
|
|
26497
26664
|
defaultRole: ProjectUserRoleSchema,
|
|
@@ -26502,7 +26669,7 @@ const UpdateProjectSettingsRequestSchema = z.object({
|
|
|
26502
26669
|
defaultRole: ProjectUserRoleSchema.optional(),
|
|
26503
26670
|
invitePermission: ProjectInvitePermissionSchema.optional()
|
|
26504
26671
|
}).refine((data) => data.description !== void 0 || data.defaultRole !== void 0 || data.invitePermission !== void 0, { message: "At least one field is required" });
|
|
26505
|
-
const ProjectSettingsResponseSchema =
|
|
26672
|
+
const ProjectSettingsResponseSchema = ProjectSettingsSchema;
|
|
26506
26673
|
/** Custom avatar override; null means fall back to OAuth `users.image`. */
|
|
26507
26674
|
const UserAvatarSchema = z.object({ url: z.url().nullable() });
|
|
26508
26675
|
const UserAvatarPatchSchema = z.object({
|
|
@@ -26729,7 +26896,7 @@ const ProjectDeploymentSchema = z.object({
|
|
|
26729
26896
|
createdAt: isoDateTime$1,
|
|
26730
26897
|
active: z.boolean()
|
|
26731
26898
|
});
|
|
26732
|
-
const ListProjectDeploymentsResponseSchema = z.
|
|
26899
|
+
const ListProjectDeploymentsResponseSchema = z.array(ProjectDeploymentSchema);
|
|
26733
26900
|
const PLATFORM_RESOURCE_UNSUPPORTED_TEXT = "Not Supported";
|
|
26734
26901
|
const optionalCount = z.number().int().nonnegative().nullable().optional();
|
|
26735
26902
|
const optionalTimestamp = z.string().nullable().optional();
|
|
@@ -26978,14 +27145,14 @@ z.object({
|
|
|
26978
27145
|
new AsyncLocalStorage();
|
|
26979
27146
|
new AsyncLocalStorage();
|
|
26980
27147
|
new AbortController().signal;
|
|
26981
|
-
const REGISTRY_KEY = Symbol.for("keystroke.workflowRunGetter");
|
|
26982
|
-
function registry() {
|
|
27148
|
+
const REGISTRY_KEY$1 = Symbol.for("keystroke.workflowRunGetter");
|
|
27149
|
+
function registry$1() {
|
|
26983
27150
|
const globalScope = globalThis;
|
|
26984
|
-
if (!globalScope[REGISTRY_KEY]) globalScope[REGISTRY_KEY] = {};
|
|
26985
|
-
return globalScope[REGISTRY_KEY];
|
|
27151
|
+
if (!globalScope[REGISTRY_KEY$1]) globalScope[REGISTRY_KEY$1] = {};
|
|
27152
|
+
return globalScope[REGISTRY_KEY$1];
|
|
26986
27153
|
}
|
|
26987
27154
|
function registerWorkflowRunGetter(fn) {
|
|
26988
|
-
registry().getter = fn;
|
|
27155
|
+
registry$1().getter = fn;
|
|
26989
27156
|
}
|
|
26990
27157
|
new AsyncLocalStorage();
|
|
26991
27158
|
//#endregion
|
|
@@ -48823,9 +48990,10 @@ function getPgBoss() {
|
|
|
48823
48990
|
return boss;
|
|
48824
48991
|
}
|
|
48825
48992
|
/** Postgres NOTIFY channel — lowercase identifier (project ids are UUIDs, well under 63 chars). */
|
|
48826
|
-
function pgCancelChannelName(scope,
|
|
48993
|
+
function pgCancelChannelName(scope, id) {
|
|
48827
48994
|
if (scope === "platform") return "keystroke_cancel_platform";
|
|
48828
|
-
return `
|
|
48995
|
+
if (scope === "organization") return `keystroke_cancel_org_${(id ?? "default").replace(/[^a-z0-9_]/gi, "_").toLowerCase()}`;
|
|
48996
|
+
return `keystroke_cancel_${(id ?? "default").replace(/[^a-z0-9_]/gi, "_").toLowerCase()}`;
|
|
48829
48997
|
}
|
|
48830
48998
|
/** Shared queue name for the platform control-plane scope. */
|
|
48831
48999
|
const DEFAULT_QUEUE_NAME = "keystroke";
|
|
@@ -48841,12 +49009,20 @@ function pgBossProjectQueueName(projectId) {
|
|
|
48841
49009
|
if (name.length <= 50) return name;
|
|
48842
49010
|
return `${DEFAULT_QUEUE_NAME}_${createHash("sha1").update(projectId).digest("hex").slice(0, 40)}`;
|
|
48843
49011
|
}
|
|
49012
|
+
function pgBossOrgQueueName(organizationId) {
|
|
49013
|
+
const name = `${DEFAULT_QUEUE_NAME}_org_${organizationId.replace(/[^a-zA-Z0-9_]/g, "_")}`;
|
|
49014
|
+
if (name.length <= 50) return name;
|
|
49015
|
+
return `${DEFAULT_QUEUE_NAME}_org_${createHash("sha1").update(organizationId).digest("hex").slice(0, 36)}`;
|
|
49016
|
+
}
|
|
48844
49017
|
function buildPgBossJobQueue(boss, options) {
|
|
48845
49018
|
const queueName = options.queueName ?? "keystroke";
|
|
48846
|
-
const cancelChannel = createPostgresCancelChannel(options.connectionString, pgCancelChannelName(options.cancelScope ?? "platform", options.projectId));
|
|
49019
|
+
const cancelChannel = createPostgresCancelChannel(options.connectionString, pgCancelChannelName(options.cancelScope ?? "platform", options.cancelScope === "organization" ? options.organizationId : options.projectId));
|
|
48847
49020
|
return {
|
|
48848
49021
|
async enqueue(input) {
|
|
48849
|
-
const jobId = await boss.send(queueName,
|
|
49022
|
+
const jobId = await boss.send(queueName, {
|
|
49023
|
+
...input,
|
|
49024
|
+
payload: input.payload
|
|
49025
|
+
}, {
|
|
48850
49026
|
retryLimit: (input.maxAttempts ?? 3) - 1,
|
|
48851
49027
|
retryDelay: Math.ceil(retryDelayMs(1) / 1e3),
|
|
48852
49028
|
startAfter: input.scheduledAt,
|
|
@@ -48880,7 +49056,8 @@ function buildPgBossJobQueue(boss, options) {
|
|
|
48880
49056
|
attempt,
|
|
48881
49057
|
maxAttempts,
|
|
48882
49058
|
exhaustedRetries: attempt >= maxAttempts,
|
|
48883
|
-
scheduledAt: data.scheduledAt ? new Date(data.scheduledAt) : /* @__PURE__ */ new Date()
|
|
49059
|
+
scheduledAt: data.scheduledAt ? new Date(data.scheduledAt) : /* @__PURE__ */ new Date(),
|
|
49060
|
+
projectId: data.projectId
|
|
48884
49061
|
});
|
|
48885
49062
|
});
|
|
48886
49063
|
return async () => {
|
|
@@ -48908,8 +49085,9 @@ async function createPgBossQueue(options) {
|
|
|
48908
49085
|
stopBossOnWorkerStop: true,
|
|
48909
49086
|
queueName,
|
|
48910
49087
|
connectionString: options.connectionString,
|
|
48911
|
-
cancelScope: "project",
|
|
48912
|
-
projectId: options.projectId
|
|
49088
|
+
cancelScope: options.cancelScope ?? "project",
|
|
49089
|
+
projectId: options.projectId,
|
|
49090
|
+
organizationId: options.organizationId
|
|
48913
49091
|
});
|
|
48914
49092
|
}
|
|
48915
49093
|
async function createSharedPgBossJobQueue(boss, options) {
|
|
@@ -48924,7 +49102,7 @@ async function createSharedPgBossJobQueue(boss, options) {
|
|
|
48924
49102
|
function resolveUrl(ctx) {
|
|
48925
49103
|
return ctx.url ?? resolveProjectDatabaseUrlFromEnv(process.env) ?? DEFAULT_DATABASE_URL;
|
|
48926
49104
|
}
|
|
48927
|
-
/** Postgres pg-boss backend. Platform scope shares one queue;
|
|
49105
|
+
/** Postgres pg-boss backend. Platform scope shares one queue; org scope gets one queue per org. */
|
|
48928
49106
|
function pgBossSchedulerPlugin() {
|
|
48929
49107
|
return defineSchedulerPlugin({
|
|
48930
49108
|
name: "pg-boss",
|
|
@@ -48934,6 +49112,16 @@ function pgBossSchedulerPlugin() {
|
|
|
48934
49112
|
await startPgBoss(url);
|
|
48935
49113
|
return createSharedPgBossJobQueue(getPgBoss(), { connectionString: url });
|
|
48936
49114
|
}
|
|
49115
|
+
if (ctx.scope === "organization") {
|
|
49116
|
+
const organizationId = ctx.organizationId;
|
|
49117
|
+
if (!organizationId) throw new Error("organizationId is required for organization-scoped pg-boss queue");
|
|
49118
|
+
return createPgBossQueue({
|
|
49119
|
+
connectionString: url,
|
|
49120
|
+
queueName: pgBossOrgQueueName(organizationId),
|
|
49121
|
+
cancelScope: "organization",
|
|
49122
|
+
organizationId
|
|
49123
|
+
});
|
|
49124
|
+
}
|
|
48937
49125
|
const projectId = ctx.projectId ?? getProjectScopeId();
|
|
48938
49126
|
return createPgBossQueue({
|
|
48939
49127
|
connectionString: url,
|
|
@@ -49328,6 +49516,6 @@ function minioStoragePlugin(options = {}) {
|
|
|
49328
49516
|
};
|
|
49329
49517
|
}
|
|
49330
49518
|
//#endregion
|
|
49331
|
-
export {
|
|
49519
|
+
export { InviteProjectMembersRequestSchema as $, WorkflowSummaryListResponseSchema as $t, CompleteProjectArtifactResponseSchema as A, x$1 as An, SkillSummaryDetailResponseSchema as At, CreateProjectRequestSchema as B, b$1 as Bn, UpdateOrganizationMemberResponseSchema as Bt, AcceptOrganizationInvitationResponseSchema as C, i as Cn, ProjectResponseSchema as Ct, AgentSummarySchema as D, x as Dn, ProjectSourceResourcesSchema as Dt, AgentSummaryListResponseSchema as E, p as En, ProjectSlugAvailabilityResponseSchema as Et, CreateCustomAppRequestSchema as F, u as Fn, StoredProjectSourceManifestSchema as Ft, GetCredentialResponseSchema as G, __commonJSMin as Gn, UpdateProjectSettingsRequestSchema as Gt, DeclineOrganizationInvitationResponseSchema as H, r1 as Hn, UpdateProjectMemberRequestSchema as Ht, CreateCustomAppResponseSchema as I, e as In, SubmitTeamRequestRequestSchema as It, HistoryRunDetailResponseSchema as J, UserAvatarPatchSchema as Jt, GetCustomAppResponseSchema as K, __require as Kn, UploadProjectSourceManifestRequestSchema as Kt, CreateOrganizationRequestSchema as L, o as Ln, SubmitTeamRequestResponseSchema as Lt, CreateApiKeyResponseSchema as M, r as Mn, SkillSummarySchema as Mt, CreateCredentialsRequestSchema as N, r$1 as Nn, SlugAvailabilityQuerySchema as Nt, AppSlugAvailabilityQuerySchema as O, a$1 as On, RecentResourceListResponseSchema as Ot, CreateCredentialsResponseSchema as P, b as Pn, SlugAvailabilityResponseSchema as Pt, InviteOrganizationMembersResponseSchema as Q, WorkflowSummaryDetailResponseSchema as Qt, CreateOrganizationResponseSchema as R, r$3 as Rn, UpdateCredentialRequestSchema as Rt, ACTIVE_ORG_HEADER as S, n as Sn, ProjectReachabilityResponseSchema as St, AgentSummaryDetailResponseSchema as T, c as Tn, ProjectSlugAvailabilityQuerySchema as Tt, DownloadActiveProjectArtifactResponseSchema as U, defaultHostingPlugin as Un, UpdateProjectMemberResponseSchema as Ut, CreateProjectResponseSchema as V, I1 as Vn, UpdateOrganizationRequestSchema as Vt, ErrorResponseSchema as W, pingProjectTarget as Wn, UpdateProjectRequestSchema as Wt, HistoryRunListResponseSchema as X, UserPreferencesPatchSchema as Xt, HistoryRunListQuerySchema as Y, UserAvatarSchema as Yt, InviteOrganizationMembersRequestSchema as Z, UserPreferencesSchema as Zt, createJobQueue as _, parseStoredRouteManifest as _n, PresignOrgLogoResponseSchema as _t, isKeystrokeAssetsAvatarPublicUrl as a, mapOrganizationMember as an, ListOrganizationMembersResponseSchema as at, readCredentialInstanceSecret as b, validateCredentialValueAgainstFields as bn, PresignUserAvatarRequestSchema as bt, isUserAvatarStorageKey as c, mapProjectDeployment as cn, ListProjectFilesResponseSchema as ct, minioStoragePlugin as d, mapUserOrganization as dn, ListProjectsResponseSchema as dt, WorkflowSummarySchema as en, InviteProjectMembersResponseSchema as et, orgLogoStorageKey as f, mergeUserPreferences as fn, OrganizationSidebarBrandingPatchSchema as ft, userAvatarStorageKey as g, parseAppSlug as gn, PresignOrgLogoRequestSchema as gt, publicKeystrokeAssetsObjectUrl as h, organizationSlugErrorCodeFromMessage as hn, PROJECT_SLUG_TAKEN_MESSAGE as ht, extractRouteManifestFromArtifact as i, mapOrganizationInvitation as in, ListOrganizationInvitationsResponseSchema as it, CreateApiKeyRequestSchema as j, c$1 as jn, SkillSummaryListResponseSchema as jt, AppSlugAvailabilityResponseSchema as k, d$1 as kn, RecentResourceSchema as kt, keystrokeAssetsAvatarKeyFromPublicUrl as l, mapProjectMember as ln, ListProjectMembersResponseSchema as lt, projectSourceBlobKey as m, organizationInvitationAcceptPath as mn, PLATFORM_RESOURCE_UNSUPPORTED_TEXT as mt, createAssetsStorageClient as n, displayCredentialAppName as nn, ListAppsResponseSchema as nt, isKeystrokeAssetsOrgLogoPublicUrl as o, mapProject as on, ListOrganizationsResponseSchema as ot, projectArtifactKey as p, normalizeUserPreferences as pn, OrganizationSidebarBrandingSchema as pt, HistoryRunCancelResponseSchema as q, __toESM as qn, UploadProjectSourceResponseSchema as qt, ensureKeystrokeAssetsBucket as r, listenPortFromPublicUrl as rn, ListCredentialsResponseSchema as rt, isOrgLogoStorageKey as s, mapProjectArtifact as sn, ListProjectDeploymentsResponseSchema as st, RouteManifestNotFoundError as t, buildCredentialInstanceLabel as tn, ListApiKeysResponseSchema as tt, keystrokeAssetsOrgLogoKeyFromPublicUrl as u, mapProjectSettings as un, ListProjectMetricsResponseSchema as ut, defaultSchedulerPlugin as v, projectFileId as vn, PresignProjectSourceRequestSchema as vt, ActiveOrganizationResponseSchema as w, n$1 as wn, ProjectSettingsResponseSchema as wt, setCredentialInstanceSecret as x, validationErrorResponse as xn, PresignUserAvatarResponseSchema as xt, deleteCredentialInstanceSecret as y, resolveUniqueCredentialInstanceLabel as yn, PresignProjectSourceResponseSchema as yt, CreateProjectArtifactResponseSchema as z, h as zn, UpdateOrganizationMemberRequestSchema as zt };
|
|
49332
49520
|
|
|
49333
|
-
//# sourceMappingURL=dist-
|
|
49521
|
+
//# sourceMappingURL=dist-CQMZgfp_.mjs.map
|