@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
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { $ as
|
|
1
|
+
import { $ as InviteProjectMembersRequestSchema, $t as WorkflowSummaryListResponseSchema, A as CompleteProjectArtifactResponseSchema, At as SkillSummaryDetailResponseSchema, B as CreateProjectRequestSchema, Bt as UpdateOrganizationMemberResponseSchema, C as AcceptOrganizationInvitationResponseSchema, Ct as ProjectResponseSchema, D as AgentSummarySchema, Dt as ProjectSourceResourcesSchema, E as AgentSummaryListResponseSchema, Et as ProjectSlugAvailabilityResponseSchema, F as CreateCustomAppRequestSchema, Ft as StoredProjectSourceManifestSchema, G as GetCredentialResponseSchema, Gt as UpdateProjectSettingsRequestSchema, H as DeclineOrganizationInvitationResponseSchema, Ht as UpdateProjectMemberRequestSchema, I as CreateCustomAppResponseSchema, It as SubmitTeamRequestRequestSchema, J as HistoryRunDetailResponseSchema, Jt as UserAvatarPatchSchema, K as GetCustomAppResponseSchema, Kt as UploadProjectSourceManifestRequestSchema, L as CreateOrganizationRequestSchema, Lt as SubmitTeamRequestResponseSchema, M as CreateApiKeyResponseSchema, Mt as SkillSummarySchema, N as CreateCredentialsRequestSchema, Nt as SlugAvailabilityQuerySchema, O as AppSlugAvailabilityQuerySchema, Ot as RecentResourceListResponseSchema, P as CreateCredentialsResponseSchema, Pt as SlugAvailabilityResponseSchema, Q as InviteOrganizationMembersResponseSchema, Qt as WorkflowSummaryDetailResponseSchema, R as CreateOrganizationResponseSchema, Rt as UpdateCredentialRequestSchema, S as ACTIVE_ORG_HEADER, St as ProjectReachabilityResponseSchema, T as AgentSummaryDetailResponseSchema, Tt as ProjectSlugAvailabilityQuerySchema, U as DownloadActiveProjectArtifactResponseSchema, Ut as UpdateProjectMemberResponseSchema, V as CreateProjectResponseSchema, Vt as UpdateOrganizationRequestSchema, W as ErrorResponseSchema, Wn as pingProjectTarget, Wt as UpdateProjectRequestSchema, X as HistoryRunListResponseSchema, Xt as UserPreferencesPatchSchema, Y as HistoryRunListQuerySchema, Yt as UserAvatarSchema, Z as InviteOrganizationMembersRequestSchema, Zt as UserPreferencesSchema, _ as createJobQueue, _n as parseStoredRouteManifest, _t as PresignOrgLogoResponseSchema, a as isKeystrokeAssetsAvatarPublicUrl, an as mapOrganizationMember, at as ListOrganizationMembersResponseSchema, b as readCredentialInstanceSecret, bn as validateCredentialValueAgainstFields, bt as PresignUserAvatarRequestSchema, c as isUserAvatarStorageKey, cn as mapProjectDeployment, ct as ListProjectFilesResponseSchema, dn as mapUserOrganization, dt as ListProjectsResponseSchema, en as WorkflowSummarySchema, et as InviteProjectMembersResponseSchema, f as orgLogoStorageKey, fn as mergeUserPreferences, ft as OrganizationSidebarBrandingPatchSchema, g as userAvatarStorageKey, gn as parseAppSlug, gt as PresignOrgLogoRequestSchema, h as publicKeystrokeAssetsObjectUrl, hn as organizationSlugErrorCodeFromMessage, ht as PROJECT_SLUG_TAKEN_MESSAGE, i as extractRouteManifestFromArtifact, in as mapOrganizationInvitation, it as ListOrganizationInvitationsResponseSchema, j as CreateApiKeyRequestSchema, jt as SkillSummaryListResponseSchema, k as AppSlugAvailabilityResponseSchema, kt as RecentResourceSchema, l as keystrokeAssetsAvatarKeyFromPublicUrl, ln as mapProjectMember, lt as ListProjectMembersResponseSchema, m as projectSourceBlobKey, mn as organizationInvitationAcceptPath, mt as PLATFORM_RESOURCE_UNSUPPORTED_TEXT, n as createAssetsStorageClient, nn as displayCredentialAppName, nt as ListAppsResponseSchema, o as isKeystrokeAssetsOrgLogoPublicUrl, on as mapProject, ot as ListOrganizationsResponseSchema, p as projectArtifactKey, pn as normalizeUserPreferences, pt as OrganizationSidebarBrandingSchema, q as HistoryRunCancelResponseSchema, qt as UploadProjectSourceResponseSchema, r as ensureKeystrokeAssetsBucket, rn as listenPortFromPublicUrl, rt as ListCredentialsResponseSchema, s as isOrgLogoStorageKey, sn as mapProjectArtifact, st as ListProjectDeploymentsResponseSchema, t as RouteManifestNotFoundError, tn as buildCredentialInstanceLabel, tt as ListApiKeysResponseSchema, u as keystrokeAssetsOrgLogoKeyFromPublicUrl, un as mapProjectSettings, ut as ListProjectMetricsResponseSchema, v as defaultSchedulerPlugin, vn as projectFileId, vt as PresignProjectSourceRequestSchema, w as ActiveOrganizationResponseSchema, wt as ProjectSettingsResponseSchema, x as setCredentialInstanceSecret, xn as validationErrorResponse, xt as PresignUserAvatarResponseSchema, y as deleteCredentialInstanceSecret, yn as resolveUniqueCredentialInstanceLabel, yt as PresignProjectSourceResponseSchema, z as CreateProjectArtifactResponseSchema, zt as UpdateOrganizationMemberRequestSchema } from "./dist-CQMZgfp_.mjs";
|
|
2
2
|
import { buildHistoryAgentSessionDetail, buildHistoryWorkflowRunDetail, cancelAgentSession, cancelWorkflowRun, clearCredentialInstanceDefaults, deleteCredentialInstanceById, findHistoryRunCore, getServerTenantScopeId, inferDialect, listActiveAgents, listActiveSkills, listActiveWorkflows, listAllCredentialInstances, listCredentialInstancesByConnectionId, listHistoryRuns, listRecentResourceActivity, runWithProjectDatabase, runWithProjectScope, runWithTenantScope, selectActiveAgentById, selectActiveAgentsByIds, selectActiveSkillById, selectActiveSkillsByIds, selectActiveWorkflowById, selectActiveWorkflowsByIds, selectAgentLastRunAtByIds, selectAgentSessionById, selectCredentialInstanceById, selectCredentialInstancesForScope, selectEphemeralTriggerAttachments, selectProjectResourceCounts, selectWorkflowLastRunAtByIds, selectWorkflowRunById, touchResourceActivity, upsertCredentialInstance } from "@keystrokehq/database";
|
|
3
3
|
import { ZodError, z } from "zod";
|
|
4
4
|
import "node:path";
|
|
5
5
|
import "node:fs";
|
|
6
6
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
7
|
-
import { CannotModifyOwnerError, OrgPlatformApiKeyNotFoundError, OrganizationInvitationExpiredError, OrganizationInvitationForbiddenError, OrganizationInvitationNotFoundError, OrganizationMemberNotFoundError, OrganizationSlugTakenError, OrganizationSlugTakenError as OrganizationSlugTakenError$1, ProjectMemberNotFoundError, ProjectSlugTakenError, acceptInvitation, checkOrganizationSlugAvailability, checkProjectSlugAvailability, completeProjectArtifact, createOrgPlatformApiKey, createOrgStorageClient, createOrganizationForUser, createProjectForOrganization, declineInvitation, deleteOAuthConnectionById, deleteProjectForOrganization, encryptCredentialPayload as encryptCredentialPayload$1, ensureProjectPgBossGrants, ensureWebhookApiKeyForRoute, ensureWebhookApiKeys, initDatabase, insertProjectArtifact, inviteOrganizationMembers, inviteProjectMembers, isOrganizationStorageBucketInUse,
|
|
7
|
+
import { CannotModifyOwnerError, OrgAppSlugTakenError, OrgPlatformApiKeyNotFoundError, OrganizationInvitationExpiredError, OrganizationInvitationForbiddenError, OrganizationInvitationNotFoundError, OrganizationMemberNotFoundError, OrganizationSlugTakenError, OrganizationSlugTakenError as OrganizationSlugTakenError$1, ProjectMemberNotFoundError, ProjectSlugTakenError, acceptInvitation, checkOrgAppSlugAvailability, checkOrganizationSlugAvailability, checkProjectSlugAvailability, completeProjectArtifact, createOrgApp, createOrgPlatformApiKey, createOrgStorageClient, createOrganizationForUser, createProjectForOrganization, declineInvitation, deleteOAuthConnectionById, deleteProjectForOrganization, encryptCredentialPayload as encryptCredentialPayload$1, ensureProjectPgBossGrants, ensureWebhookApiKeyForRoute, ensureWebhookApiKeys, hasCredentialFieldTemplate, initDatabase, insertProjectArtifact, inviteOrganizationMembers, inviteProjectMembers, isOrganizationStorageBucketInUse, listAppsForOrganization, listOrgPlatformApiKeysForOrganization, listOrgPlatformApiKeysForUser, loadOrgPlatformApiKeyUser, mapOrgPlatformApiKeyCreator, mapOrgPlatformApiKeyCreatorOrDeleted, orgWorkspacesRuntimeEnv, organizationRowToSidebarBranding, promoteProjectArtifact, removeOrganizationMember, removeProjectMember, resolveNewOrganizationIdentity, resolveOrgDatabaseUrl, resolveOrgRuntimeDatabase, revokeOrgPlatformApiKey, runWithOrganizationScope, runWithWorkspaceContext, selectActiveArtifactSourceManifestForProject, selectActiveProjectArtifactForProject, selectAppForOrganization, selectLastDeploymentAtByProject, selectOAuthConnectionsByIds, selectOrgPlatformApiKeyForOrganization, selectOrganizationById, selectOrganizationMembers, selectPendingInvitationsForUser, selectProjectArtifactById, selectProjectArtifactForProject, selectProjectById, selectProjectDeployments, selectProjectForOrganization, selectProjectForOrganizationBySlug, selectProjectIdsForUser, selectProjectMembers, selectProjectsByOrganizationId, selectUserById, selectUserOrganizationMembership, selectUserOrganizations, selectUserProjectMembership, selectUsersByIds, updateOrganizationActive, updateOrganizationFailed, updateOrganizationMemberRole, updateOrganizationName, updateOrganizationSidebarBranding, updateOrganizationSlug, updateProjectActive, updateProjectArtifactManifest, updateProjectArtifactSourceManifest, updateProjectForOrganization, updateProjectMemberRole, updateProjectSettings, updateUserById, verifyOrgPlatformApiKeySecret } from "@keystrokehq/platform-database";
|
|
8
8
|
import { serve } from "@hono/node-server";
|
|
9
9
|
import { AUTH_API_PATH, createAuth, createDefaultAuthJwtVerifier, extractWebhookApiKeyFromRequest, handleAuthRequest, resolveAuthEmailFrom, resolveRequestAuth } from "@keystrokehq/auth";
|
|
10
10
|
import { buildWebhookUrl, createCredentialMaterializeHandler, extractWebhookRoutesFromManifest, seedOAuthAppsFromEnvForAllOrganizations, seedOAuthAppsFromEnvForOrganization, syncRegistryFromStoredManifest } from "@keystrokehq/runtime";
|
|
@@ -127,20 +127,11 @@ async function promoteProjectDeploy(input) {
|
|
|
127
127
|
const webhookRoutes = [...extractWebhookRoutesFromManifest(manifest), ...ephemeralRoutes];
|
|
128
128
|
if (webhookRoutes.length > 0) await ensureWebhookApiKeys(project.id, webhookRoutes, project.id);
|
|
129
129
|
}
|
|
130
|
-
/**
|
|
131
|
-
function
|
|
132
|
-
if (
|
|
133
|
-
if (
|
|
134
|
-
|
|
135
|
-
if (!artifactId) return {
|
|
136
|
-
action: "error",
|
|
137
|
-
message: `Project ${project.id} has no pending artifact`
|
|
138
|
-
};
|
|
139
|
-
if (!project.pendingArtifactId && project.activeArtifactId === artifactId && project.status === "active" && project.baseUrl && project.runtimeId) return { action: "skip" };
|
|
140
|
-
return {
|
|
141
|
-
action: "run",
|
|
142
|
-
artifactId
|
|
143
|
-
};
|
|
130
|
+
/** True when a project still needs an org worker rebuild after a runtime job finishes. */
|
|
131
|
+
function projectNeedsRuntimeFollowUp(project) {
|
|
132
|
+
if (project.status === "starting" && project.pendingArtifactId) return true;
|
|
133
|
+
if (project.pendingArtifactId && project.activeArtifactId !== project.pendingArtifactId) return true;
|
|
134
|
+
return false;
|
|
144
135
|
}
|
|
145
136
|
let runtimeQueue;
|
|
146
137
|
let runtimeQueueInit;
|
|
@@ -150,7 +141,7 @@ function configureProjectRuntimeScheduler(plugin) {
|
|
|
150
141
|
runtimeQueue = void 0;
|
|
151
142
|
runtimeQueueInit = void 0;
|
|
152
143
|
}
|
|
153
|
-
async function
|
|
144
|
+
async function getOrgRuntimeQueue() {
|
|
154
145
|
if (runtimeQueue) return runtimeQueue;
|
|
155
146
|
if (!runtimeQueueInit) runtimeQueueInit = (async () => {
|
|
156
147
|
const queue = await createJobQueue({
|
|
@@ -162,27 +153,60 @@ async function getProjectRuntimeQueue() {
|
|
|
162
153
|
})();
|
|
163
154
|
return runtimeQueueInit;
|
|
164
155
|
}
|
|
165
|
-
function
|
|
156
|
+
function toOrgRuntimeJob(payload) {
|
|
166
157
|
const job = payload.payload;
|
|
167
|
-
if (!job?.
|
|
158
|
+
if (!job?.organizationId) throw new Error("Invalid org runtime job payload");
|
|
168
159
|
return {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
160
|
+
organizationId: job.organizationId,
|
|
161
|
+
triggerProjectId: job.triggerProjectId,
|
|
162
|
+
triggerArtifactId: job.triggerArtifactId
|
|
172
163
|
};
|
|
173
164
|
}
|
|
174
|
-
async function
|
|
175
|
-
|
|
165
|
+
async function resolveOrgProjects(job) {
|
|
166
|
+
const projects = await selectProjectsByOrganizationId(job.organizationId);
|
|
167
|
+
const deploys = [];
|
|
168
|
+
for (const project of projects) {
|
|
169
|
+
const artifactId = project.id === job.triggerProjectId && job.triggerArtifactId ? job.triggerArtifactId : project.pendingArtifactId ?? project.activeArtifactId;
|
|
170
|
+
if (!artifactId) continue;
|
|
171
|
+
const artifact = await selectProjectArtifactById(artifactId);
|
|
172
|
+
if (!artifact || artifact.projectId !== project.id || artifact.status !== "ready") {
|
|
173
|
+
if (project.id === job.triggerProjectId) throw new Error(`Project ${project.id} pending artifact is not ready`);
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
deploys.push({
|
|
177
|
+
projectId: project.id,
|
|
178
|
+
name: project.name,
|
|
179
|
+
artifactId,
|
|
180
|
+
artifactStorageKey: artifact.storageKey
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
if (deploys.length === 0) throw new Error(`Organization ${job.organizationId} has no deployable projects`);
|
|
184
|
+
return deploys;
|
|
185
|
+
}
|
|
186
|
+
async function orgNeedsRuntimeFollowUp(organizationId) {
|
|
187
|
+
return (await selectProjectsByOrganizationId(organizationId)).some(projectNeedsRuntimeFollowUp);
|
|
188
|
+
}
|
|
189
|
+
async function enqueueOrgRuntime(job) {
|
|
190
|
+
return (await getOrgRuntimeQueue()).enqueue({
|
|
176
191
|
kind: "runtime",
|
|
177
|
-
targetId: job.
|
|
178
|
-
runId:
|
|
192
|
+
targetId: job.organizationId,
|
|
193
|
+
runId: crypto.randomUUID(),
|
|
179
194
|
trigger: "api",
|
|
180
195
|
payload: job,
|
|
181
196
|
maxAttempts: 5,
|
|
182
|
-
dedupeKey: job.
|
|
197
|
+
dedupeKey: job.organizationId
|
|
183
198
|
});
|
|
184
199
|
}
|
|
185
|
-
async function
|
|
200
|
+
async function enqueueProjectRuntime(job) {
|
|
201
|
+
const project = await selectProjectById(job.projectId);
|
|
202
|
+
if (!project) throw new Error(`Project ${job.projectId} not found`);
|
|
203
|
+
return enqueueOrgRuntime({
|
|
204
|
+
organizationId: project.organizationId,
|
|
205
|
+
triggerProjectId: job.projectId,
|
|
206
|
+
triggerArtifactId: job.artifactId
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
async function destroyOrgRuntime(runtime, input, runtimeId) {
|
|
186
210
|
if (!runtime.destroy) return;
|
|
187
211
|
try {
|
|
188
212
|
await runtime.destroy({
|
|
@@ -190,49 +214,60 @@ async function destroyProjectRuntime(runtime, input, runtimeId) {
|
|
|
190
214
|
hosting: input.hosting
|
|
191
215
|
});
|
|
192
216
|
} catch (destroyError) {
|
|
193
|
-
console.error(`[
|
|
217
|
+
console.error(`[org.runtime] failed to destroy runtime ${runtimeId}`, destroyError);
|
|
194
218
|
}
|
|
195
219
|
}
|
|
196
|
-
async function
|
|
220
|
+
async function handleOrgRuntimeJob(runtime, resolveStartInput, payload) {
|
|
197
221
|
if (payload.kind !== "runtime") return;
|
|
198
|
-
const job =
|
|
222
|
+
const job = toOrgRuntimeJob(payload);
|
|
199
223
|
try {
|
|
200
|
-
const
|
|
201
|
-
if (!
|
|
202
|
-
const
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
224
|
+
const organization = await selectOrganizationById(job.organizationId);
|
|
225
|
+
if (!organization) throw new Error(`Organization ${job.organizationId} not found`);
|
|
226
|
+
const projects = await resolveOrgProjects(job);
|
|
227
|
+
const input = await resolveStartInput(job);
|
|
228
|
+
const mergedInput = {
|
|
229
|
+
...input,
|
|
230
|
+
organizationId: job.organizationId,
|
|
231
|
+
projects,
|
|
232
|
+
previousRuntimeId: input.previousRuntimeId ?? organization.runtimeId
|
|
233
|
+
};
|
|
209
234
|
let result;
|
|
210
235
|
try {
|
|
211
|
-
result = await runtime.start(
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
236
|
+
result = await runtime.start(mergedInput);
|
|
237
|
+
for (const project of projects) {
|
|
238
|
+
await promoteProjectDeploy({
|
|
239
|
+
projectId: project.projectId,
|
|
240
|
+
artifactId: project.artifactId,
|
|
241
|
+
baseUrl: result.baseUrl
|
|
242
|
+
});
|
|
243
|
+
await updateProjectActive(project.projectId, {
|
|
244
|
+
baseUrl: result.baseUrl,
|
|
245
|
+
runtimeId: result.runtimeId
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
await updateOrganizationActive(job.organizationId, {
|
|
249
|
+
baseUrl: result.baseUrl,
|
|
250
|
+
runtimeId: result.runtimeId
|
|
216
251
|
});
|
|
217
|
-
await
|
|
218
|
-
if (
|
|
252
|
+
if (mergedInput.previousRuntimeId) await destroyOrgRuntime(runtime, mergedInput, mergedInput.previousRuntimeId);
|
|
253
|
+
if (await orgNeedsRuntimeFollowUp(job.organizationId)) await enqueueOrgRuntime({ organizationId: job.organizationId });
|
|
219
254
|
} catch (error) {
|
|
220
|
-
if (result) await
|
|
255
|
+
if (result) await destroyOrgRuntime(runtime, mergedInput, result.runtimeId);
|
|
221
256
|
throw error;
|
|
222
257
|
}
|
|
223
258
|
} catch (error) {
|
|
224
|
-
console.error(`[
|
|
225
|
-
if (payload.exhaustedRetries) await
|
|
259
|
+
console.error(`[org.runtime] ${job.organizationId} failed`, error);
|
|
260
|
+
if (payload.exhaustedRetries) await updateOrganizationFailed(job.organizationId, "Org runtime failed after retries");
|
|
226
261
|
throw error;
|
|
227
262
|
}
|
|
228
263
|
}
|
|
229
264
|
async function startProjectRuntimeWorker(runtime, options = {}) {
|
|
230
|
-
const queue = await
|
|
265
|
+
const queue = await getOrgRuntimeQueue();
|
|
231
266
|
const resolveStartInput = options.resolveStartInput ?? (async (job) => {
|
|
232
|
-
throw new Error(`
|
|
267
|
+
throw new Error(`Org runtime for ${job.organizationId} requires resolveStartInput with database credentials`);
|
|
233
268
|
});
|
|
234
269
|
await queue.startWorker(async (payload) => {
|
|
235
|
-
await
|
|
270
|
+
await handleOrgRuntimeJob(runtime, resolveStartInput, payload);
|
|
236
271
|
});
|
|
237
272
|
}
|
|
238
273
|
//#endregion
|
|
@@ -538,7 +573,7 @@ function requireOrganizationParam() {
|
|
|
538
573
|
};
|
|
539
574
|
}
|
|
540
575
|
//#endregion
|
|
541
|
-
//#region ../../packages/http/dist/with-public-project-runtime-
|
|
576
|
+
//#region ../../packages/http/dist/with-public-project-runtime-B7hmgjbi.mjs
|
|
542
577
|
const requestBackgroundTasks = new AsyncLocalStorage();
|
|
543
578
|
function runWithRequestBackgroundTasks(fn) {
|
|
544
579
|
return requestBackgroundTasks.run([], fn);
|
|
@@ -576,7 +611,7 @@ function withOrganizationProjectDatabase() {
|
|
|
576
611
|
}
|
|
577
612
|
//#endregion
|
|
578
613
|
//#region src/routes/account/users/me/avatar/GET.ts
|
|
579
|
-
const handler$
|
|
614
|
+
const handler$63 = async (c) => {
|
|
580
615
|
const dbUser = await selectUserById(c.get("user").id);
|
|
581
616
|
if (!dbUser) return c.json(ErrorResponseSchema.parse({ error: "User not found" }), 404);
|
|
582
617
|
return c.json(UserAvatarSchema.parse({ url: dbUser.image ?? null }));
|
|
@@ -595,7 +630,7 @@ function avatarExtensionForContentType(contentType) {
|
|
|
595
630
|
}
|
|
596
631
|
//#endregion
|
|
597
632
|
//#region src/routes/account/users/me/avatar/presign/POST.ts
|
|
598
|
-
const handler$
|
|
633
|
+
const handler$62 = async (c) => {
|
|
599
634
|
const parsed = PresignUserAvatarRequestSchema.safeParse(await c.req.json().catch(() => null));
|
|
600
635
|
if (!parsed.success) return c.json(ErrorResponseSchema.parse({ error: "Invalid avatar upload request" }), 400);
|
|
601
636
|
const extension = avatarExtensionForContentType(parsed.data.contentType);
|
|
@@ -635,7 +670,7 @@ async function deleteStoredImageIfOwned(input) {
|
|
|
635
670
|
}
|
|
636
671
|
//#endregion
|
|
637
672
|
//#region src/routes/account/users/me/avatar/PATCH.ts
|
|
638
|
-
const handler$
|
|
673
|
+
const handler$61 = async (c) => {
|
|
639
674
|
const parsed = UserAvatarPatchSchema.safeParse(await c.req.json().catch(() => null));
|
|
640
675
|
if (!parsed.success) return c.json(ErrorResponseSchema.parse({ error: "Invalid avatar update" }), 400);
|
|
641
676
|
const user = c.get("user");
|
|
@@ -677,14 +712,14 @@ const handler$58 = async (c) => {
|
|
|
677
712
|
};
|
|
678
713
|
//#endregion
|
|
679
714
|
//#region src/routes/account/users/me/preferences/GET.ts
|
|
680
|
-
const handler$
|
|
715
|
+
const handler$60 = async (c) => {
|
|
681
716
|
const dbUser = await selectUserById(c.get("user").id);
|
|
682
717
|
if (!dbUser) return c.json(ErrorResponseSchema.parse({ error: "User not found" }), 404);
|
|
683
718
|
return c.json(UserPreferencesSchema.parse(normalizeUserPreferences(dbUser.preferences)));
|
|
684
719
|
};
|
|
685
720
|
//#endregion
|
|
686
721
|
//#region src/routes/account/users/me/preferences/PATCH.ts
|
|
687
|
-
const handler$
|
|
722
|
+
const handler$59 = async (c) => {
|
|
688
723
|
const parsed = UserPreferencesPatchSchema.safeParse(await c.req.json().catch(() => null));
|
|
689
724
|
if (!parsed.success) return c.json(ErrorResponseSchema.parse({ error: "Invalid preferences update" }), 400);
|
|
690
725
|
const user = c.get("user");
|
|
@@ -699,9 +734,9 @@ const handler$56 = async (c) => {
|
|
|
699
734
|
};
|
|
700
735
|
//#endregion
|
|
701
736
|
//#region src/routes/account/organizations/GET.ts
|
|
702
|
-
const handler$
|
|
737
|
+
const handler$58 = async (c) => {
|
|
703
738
|
const memberships = await selectUserOrganizations(c.get("user").id);
|
|
704
|
-
return c.json(ListOrganizationsResponseSchema.parse(
|
|
739
|
+
return c.json(ListOrganizationsResponseSchema.parse(memberships.map(mapUserOrganization)));
|
|
705
740
|
};
|
|
706
741
|
//#endregion
|
|
707
742
|
//#region src/services/create-organization.ts
|
|
@@ -767,7 +802,7 @@ function createOrganizationHandler(deps) {
|
|
|
767
802
|
if (!parsed.success) return c.json(ErrorResponseSchema.parse({ error: "Invalid organization request" }), 400);
|
|
768
803
|
try {
|
|
769
804
|
const membership = await createOrganizationWithHosting(deps, user.id, parsed.data.name, parsed.data.slug);
|
|
770
|
-
return c.json(CreateOrganizationResponseSchema.parse(
|
|
805
|
+
return c.json(CreateOrganizationResponseSchema.parse(mapUserOrganization(membership)), 201);
|
|
771
806
|
} catch (error) {
|
|
772
807
|
if (error instanceof OrganizationSlugTakenError$1) return c.json(ErrorResponseSchema.parse(organizationSlugErrorBody(error)), 409);
|
|
773
808
|
if (error instanceof ZodError) return c.json(ErrorResponseSchema.parse(organizationSlugErrorBody(error)), 400);
|
|
@@ -777,7 +812,7 @@ function createOrganizationHandler(deps) {
|
|
|
777
812
|
}
|
|
778
813
|
//#endregion
|
|
779
814
|
//#region src/routes/account/organizations/slug-available/GET.ts
|
|
780
|
-
const handler$
|
|
815
|
+
const handler$57 = async (c) => {
|
|
781
816
|
const parsed = SlugAvailabilityQuerySchema.safeParse({
|
|
782
817
|
slug: c.req.query("slug"),
|
|
783
818
|
excludeOrganizationId: c.req.query("excludeOrganizationId")
|
|
@@ -788,15 +823,15 @@ const handler$54 = async (c) => {
|
|
|
788
823
|
};
|
|
789
824
|
//#endregion
|
|
790
825
|
//#region src/routes/account/organizations/[organizationId]/GET.ts
|
|
791
|
-
const handler$
|
|
826
|
+
const handler$56 = async (c) => {
|
|
792
827
|
const { organizationId } = c.get("organization");
|
|
793
828
|
const membership = await selectUserOrganizationMembership(c.get("user").id, organizationId);
|
|
794
829
|
if (!membership) throw new Error(`Organization membership missing after param guard: ${organizationId}`);
|
|
795
|
-
return c.json(ActiveOrganizationResponseSchema.parse(
|
|
830
|
+
return c.json(ActiveOrganizationResponseSchema.parse(mapUserOrganization(membership)));
|
|
796
831
|
};
|
|
797
832
|
//#endregion
|
|
798
833
|
//#region src/routes/account/organizations/[organizationId]/PATCH.ts
|
|
799
|
-
const handler$
|
|
834
|
+
const handler$55 = async (c) => {
|
|
800
835
|
const organization = c.get("organization");
|
|
801
836
|
const body = await c.req.json().catch(() => null);
|
|
802
837
|
const parsed = UpdateOrganizationRequestSchema.safeParse(body);
|
|
@@ -809,10 +844,10 @@ const handler$52 = async (c) => {
|
|
|
809
844
|
if (parsed.data.name !== void 0) updated = await updateOrganizationName(organization.organizationId, parsed.data.name);
|
|
810
845
|
if (parsed.data.slug !== void 0) updated = await updateOrganizationSlug(organization.organizationId, parsed.data.slug);
|
|
811
846
|
if (!updated) throw new Error(`Organization update produced no result: ${organization.organizationId}`);
|
|
812
|
-
return c.json(ActiveOrganizationResponseSchema.parse(
|
|
847
|
+
return c.json(ActiveOrganizationResponseSchema.parse(mapUserOrganization({
|
|
813
848
|
organization: updated,
|
|
814
849
|
role: organization.role
|
|
815
|
-
})
|
|
850
|
+
})));
|
|
816
851
|
} catch (error) {
|
|
817
852
|
if (error instanceof OrganizationSlugTakenError) return c.json(ErrorResponseSchema.parse(organizationSlugErrorBody(error)), 409);
|
|
818
853
|
if (error instanceof ZodError) return c.json(ErrorResponseSchema.parse(organizationSlugErrorBody(error)), 400);
|
|
@@ -821,7 +856,7 @@ const handler$52 = async (c) => {
|
|
|
821
856
|
};
|
|
822
857
|
//#endregion
|
|
823
858
|
//#region src/routes/account/organizations/[organizationId]/branding/GET.ts
|
|
824
|
-
const handler$
|
|
859
|
+
const handler$54 = async (c) => {
|
|
825
860
|
const { organizationId } = c.get("organization");
|
|
826
861
|
const organization = await selectOrganizationById(organizationId);
|
|
827
862
|
if (!organization) return c.json(ErrorResponseSchema.parse({ error: "Organization not found" }), 404);
|
|
@@ -870,7 +905,7 @@ async function finalizeOrgLogoVariant(input) {
|
|
|
870
905
|
publicUrl: finalized.publicUrl
|
|
871
906
|
};
|
|
872
907
|
}
|
|
873
|
-
const handler$
|
|
908
|
+
const handler$53 = async (c) => {
|
|
874
909
|
const parsed = OrganizationSidebarBrandingPatchSchema.safeParse(await c.req.json().catch(() => null));
|
|
875
910
|
if (!parsed.success) return c.json(ErrorResponseSchema.parse({ error: "Invalid branding update" }), 400);
|
|
876
911
|
const { organizationId } = c.get("organization");
|
|
@@ -898,7 +933,7 @@ const handler$50 = async (c) => {
|
|
|
898
933
|
};
|
|
899
934
|
//#endregion
|
|
900
935
|
//#region src/routes/account/organizations/[organizationId]/branding/logo/presign/POST.ts
|
|
901
|
-
const handler$
|
|
936
|
+
const handler$52 = async (c) => {
|
|
902
937
|
const parsed = PresignOrgLogoRequestSchema.safeParse(await c.req.json().catch(() => null));
|
|
903
938
|
if (!parsed.success) return c.json(ErrorResponseSchema.parse({ error: "Invalid logo upload request" }), 400);
|
|
904
939
|
const extension = avatarExtensionForContentType(parsed.data.contentType);
|
|
@@ -989,7 +1024,7 @@ async function attachRanAsToDetail(detail, ranByUserId) {
|
|
|
989
1024
|
}
|
|
990
1025
|
//#endregion
|
|
991
1026
|
//#region src/routes/account/history/GET.ts
|
|
992
|
-
const handler$
|
|
1027
|
+
const handler$51 = async (c) => {
|
|
993
1028
|
const organization = c.get("organization");
|
|
994
1029
|
const ctx = accessContext(c);
|
|
995
1030
|
const query = HistoryRunListQuerySchema.parse({
|
|
@@ -1012,7 +1047,7 @@ const handler$48 = async (c) => {
|
|
|
1012
1047
|
};
|
|
1013
1048
|
//#endregion
|
|
1014
1049
|
//#region src/routes/account/history/[runId]/GET.ts
|
|
1015
|
-
const handler$
|
|
1050
|
+
const handler$50 = async (c) => {
|
|
1016
1051
|
const runId = c.req.param("runId") ?? "";
|
|
1017
1052
|
if (!runId) return c.json(null, 404);
|
|
1018
1053
|
const core = await findHistoryRunCore(runId);
|
|
@@ -1063,7 +1098,7 @@ function toAgentSummary(row, options) {
|
|
|
1063
1098
|
}
|
|
1064
1099
|
//#endregion
|
|
1065
1100
|
//#region src/routes/account/agents/GET.ts
|
|
1066
|
-
const handler$
|
|
1101
|
+
const handler$49 = async (c) => {
|
|
1067
1102
|
const filter = await resolveListProjectIds(c, listScope(c, agentListScope(accessContext(c))), c.req.query("projectId"));
|
|
1068
1103
|
if (filter === "empty") return c.json(AgentSummaryListResponseSchema.parse([]));
|
|
1069
1104
|
const rows = await listActiveAgents(filter);
|
|
@@ -1077,7 +1112,7 @@ function touchResourceActivityBestEffort(options) {
|
|
|
1077
1112
|
}
|
|
1078
1113
|
//#endregion
|
|
1079
1114
|
//#region src/routes/account/agents/[agentId]/GET.ts
|
|
1080
|
-
const handler$
|
|
1115
|
+
const handler$48 = async (c) => {
|
|
1081
1116
|
const agentId = c.req.param("agentId") ?? "";
|
|
1082
1117
|
const row = agentId ? await selectActiveAgentById(agentId) : void 0;
|
|
1083
1118
|
if (!row || !await canAccessProjectId(c, row.projectId, canAccessAgent)) return c.json(AgentSummaryDetailResponseSchema.parse(null));
|
|
@@ -1112,7 +1147,7 @@ async function cancelHistoryRun(c, kind, cancel) {
|
|
|
1112
1147
|
}
|
|
1113
1148
|
//#endregion
|
|
1114
1149
|
//#region src/routes/account/agents/sessions/[sessionId]/cancel/POST.ts
|
|
1115
|
-
const handler$
|
|
1150
|
+
const handler$47 = (c) => cancelHistoryRun(c, "agent", cancelAgentSession);
|
|
1116
1151
|
//#endregion
|
|
1117
1152
|
//#region src/routes/account/resources/workflows.ts
|
|
1118
1153
|
function toWorkflowSummary(row, options) {
|
|
@@ -1129,7 +1164,7 @@ function toWorkflowSummary(row, options) {
|
|
|
1129
1164
|
}
|
|
1130
1165
|
//#endregion
|
|
1131
1166
|
//#region src/routes/account/workflows/GET.ts
|
|
1132
|
-
const handler$
|
|
1167
|
+
const handler$46 = async (c) => {
|
|
1133
1168
|
const filter = await resolveListProjectIds(c, listScope(c, workflowListScope(accessContext(c))), c.req.query("projectId"));
|
|
1134
1169
|
if (filter === "empty") return c.json(WorkflowSummaryListResponseSchema.parse([]));
|
|
1135
1170
|
const rows = await listActiveWorkflows(filter);
|
|
@@ -1138,7 +1173,7 @@ const handler$43 = async (c) => {
|
|
|
1138
1173
|
};
|
|
1139
1174
|
//#endregion
|
|
1140
1175
|
//#region src/routes/account/workflows/[workflowId]/GET.ts
|
|
1141
|
-
const handler$
|
|
1176
|
+
const handler$45 = async (c) => {
|
|
1142
1177
|
const workflowId = c.req.param("workflowId") ?? "";
|
|
1143
1178
|
const row = workflowId ? await selectActiveWorkflowById(workflowId) : void 0;
|
|
1144
1179
|
if (!row || !await canAccessProjectId(c, row.projectId, canAccessWorkflow)) return c.json(WorkflowSummaryDetailResponseSchema.parse(null));
|
|
@@ -1153,7 +1188,7 @@ const handler$42 = async (c) => {
|
|
|
1153
1188
|
};
|
|
1154
1189
|
//#endregion
|
|
1155
1190
|
//#region src/routes/account/workflows/runs/[runId]/cancel/POST.ts
|
|
1156
|
-
const handler$
|
|
1191
|
+
const handler$44 = (c) => cancelHistoryRun(c, "workflow", cancelWorkflowRun);
|
|
1157
1192
|
//#endregion
|
|
1158
1193
|
//#region src/routes/account/resources/skills.ts
|
|
1159
1194
|
function toSkillSummary(row) {
|
|
@@ -1169,7 +1204,7 @@ function toSkillSummary(row) {
|
|
|
1169
1204
|
}
|
|
1170
1205
|
//#endregion
|
|
1171
1206
|
//#region src/routes/account/skills/GET.ts
|
|
1172
|
-
const handler$
|
|
1207
|
+
const handler$43 = async (c) => {
|
|
1173
1208
|
const filter = await resolveListProjectIds(c, listScope(c, skillListScope(accessContext(c))), c.req.query("projectId"));
|
|
1174
1209
|
if (filter === "empty") return c.json(SkillSummaryListResponseSchema.parse([]));
|
|
1175
1210
|
const rows = await listActiveSkills(filter);
|
|
@@ -1177,7 +1212,7 @@ const handler$40 = async (c) => {
|
|
|
1177
1212
|
};
|
|
1178
1213
|
//#endregion
|
|
1179
1214
|
//#region src/routes/account/skills/[skillId]/GET.ts
|
|
1180
|
-
const handler$
|
|
1215
|
+
const handler$42 = async (c) => {
|
|
1181
1216
|
const skillId = c.req.param("skillId") ?? "";
|
|
1182
1217
|
const row = skillId ? await selectActiveSkillById(skillId) : void 0;
|
|
1183
1218
|
if (!row || !await canAccessProjectId(c, row.projectId, canAccessSkill)) return c.json(SkillSummaryDetailResponseSchema.parse(null));
|
|
@@ -1224,7 +1259,7 @@ function latestRecentInteractionAt(recent) {
|
|
|
1224
1259
|
//#endregion
|
|
1225
1260
|
//#region src/routes/account/recents/GET.ts
|
|
1226
1261
|
const RECENTS_LIMIT = 50;
|
|
1227
|
-
const handler$
|
|
1262
|
+
const handler$41 = async (c) => {
|
|
1228
1263
|
const userId = c.get("user").id;
|
|
1229
1264
|
const organization = c.get("organization");
|
|
1230
1265
|
const grantedProjectIdsList = await grantedProjectIds(c, { kind: "member-only" });
|
|
@@ -1250,11 +1285,11 @@ const handler$38 = async (c) => {
|
|
|
1250
1285
|
};
|
|
1251
1286
|
//#endregion
|
|
1252
1287
|
//#region src/routes/account/projects/GET.ts
|
|
1253
|
-
const handler$
|
|
1288
|
+
const handler$40 = async (c) => {
|
|
1254
1289
|
const organization = c.get("organization");
|
|
1255
1290
|
const grantedProjectIdsList = await grantedProjectIds(c, listScope(c, projectListScope(accessContext(c))));
|
|
1256
1291
|
const projects = await selectProjectsByOrganizationId(organization.organizationId, { grantedProjectIds: grantedProjectIdsList });
|
|
1257
|
-
return c.json(ListProjectsResponseSchema.parse(
|
|
1292
|
+
return c.json(ListProjectsResponseSchema.parse(projects.map(mapProject)));
|
|
1258
1293
|
};
|
|
1259
1294
|
//#endregion
|
|
1260
1295
|
//#region src/routes/account/projects/metrics/merge-project-list-metrics.ts
|
|
@@ -1276,7 +1311,7 @@ function mergeProjectListMetrics(input) {
|
|
|
1276
1311
|
}
|
|
1277
1312
|
//#endregion
|
|
1278
1313
|
//#region src/routes/account/projects/metrics/GET.ts
|
|
1279
|
-
const handler$
|
|
1314
|
+
const handler$39 = async (c) => {
|
|
1280
1315
|
const organization = c.get("organization");
|
|
1281
1316
|
const grantedProjectIdsList = await grantedProjectIds(c, listScope(c, projectListScope(accessContext(c))));
|
|
1282
1317
|
const [resourceCounts, lastDeploymentAtByProject] = await Promise.all([selectProjectResourceCounts(grantedProjectIdsList !== void 0 ? { projectIds: grantedProjectIdsList } : void 0), selectLastDeploymentAtByProject(organization.organizationId)]);
|
|
@@ -1288,22 +1323,22 @@ const handler$36 = async (c) => {
|
|
|
1288
1323
|
const allowed = new Set(grantedProjectIdsList);
|
|
1289
1324
|
metrics = Object.fromEntries(Object.entries(metrics).filter(([projectId]) => allowed.has(projectId)));
|
|
1290
1325
|
}
|
|
1291
|
-
return c.json(ListProjectMetricsResponseSchema.parse(
|
|
1326
|
+
return c.json(ListProjectMetricsResponseSchema.parse(metrics));
|
|
1292
1327
|
};
|
|
1293
1328
|
//#endregion
|
|
1294
1329
|
//#region src/routes/account/projects/POST.ts
|
|
1295
|
-
const handler$
|
|
1330
|
+
const handler$38 = async (c) => {
|
|
1296
1331
|
const organization = c.get("organization");
|
|
1297
1332
|
const user = c.get("user");
|
|
1298
1333
|
const body = await c.req.json().catch(() => null);
|
|
1299
1334
|
const parsed = CreateProjectRequestSchema.safeParse(body);
|
|
1300
1335
|
if (!parsed.success) return c.json(ErrorResponseSchema.parse({ error: "Project name is required" }), 400);
|
|
1301
1336
|
const project = await createProjectForOrganization(organization.organizationId, parsed.data.name, parsed.data.description, user.id);
|
|
1302
|
-
return c.json(CreateProjectResponseSchema.parse(
|
|
1337
|
+
return c.json(CreateProjectResponseSchema.parse(mapProject(project)), 201);
|
|
1303
1338
|
};
|
|
1304
1339
|
//#endregion
|
|
1305
1340
|
//#region src/routes/account/projects/slug-available/GET.ts
|
|
1306
|
-
const handler$
|
|
1341
|
+
const handler$37 = async (c) => {
|
|
1307
1342
|
const organization = c.get("organization");
|
|
1308
1343
|
const parsed = ProjectSlugAvailabilityQuerySchema.safeParse({
|
|
1309
1344
|
slug: c.req.query("slug"),
|
|
@@ -1315,12 +1350,12 @@ const handler$34 = async (c) => {
|
|
|
1315
1350
|
};
|
|
1316
1351
|
//#endregion
|
|
1317
1352
|
//#region src/routes/account/projects/[projectId]/GET.ts
|
|
1318
|
-
const handler$
|
|
1319
|
-
return c.json(ProjectResponseSchema.parse(
|
|
1353
|
+
const handler$36 = async (c) => {
|
|
1354
|
+
return c.json(ProjectResponseSchema.parse(routeProject(c.get("project"))));
|
|
1320
1355
|
};
|
|
1321
1356
|
//#endregion
|
|
1322
1357
|
//#region src/routes/account/projects/[projectId]/PATCH.ts
|
|
1323
|
-
const handler$
|
|
1358
|
+
const handler$35 = async (c) => {
|
|
1324
1359
|
const organization = c.get("organization");
|
|
1325
1360
|
const project = c.get("project");
|
|
1326
1361
|
const body = await c.req.json().catch(() => null);
|
|
@@ -1334,11 +1369,11 @@ const handler$32 = async (c) => {
|
|
|
1334
1369
|
throw error;
|
|
1335
1370
|
}
|
|
1336
1371
|
if (!updated) return c.json(ErrorResponseSchema.parse({ error: "Project not found" }), 404);
|
|
1337
|
-
return c.json(ProjectResponseSchema.parse(
|
|
1372
|
+
return c.json(ProjectResponseSchema.parse(mapProject(updated)));
|
|
1338
1373
|
};
|
|
1339
1374
|
//#endregion
|
|
1340
1375
|
//#region src/routes/account/projects/[projectId]/DELETE.ts
|
|
1341
|
-
const handler$
|
|
1376
|
+
const handler$34 = async (c) => {
|
|
1342
1377
|
const organization = c.get("organization");
|
|
1343
1378
|
const project = c.get("project");
|
|
1344
1379
|
if (!await deleteProjectForOrganization(organization.organizationId, project.id)) return c.json(ErrorResponseSchema.parse({ error: "Project not found" }), 404);
|
|
@@ -1346,15 +1381,15 @@ const handler$31 = async (c) => {
|
|
|
1346
1381
|
};
|
|
1347
1382
|
//#endregion
|
|
1348
1383
|
//#region src/routes/account/projects/[projectId]/deployments/GET.ts
|
|
1349
|
-
const handler$
|
|
1384
|
+
const handler$33 = async (c) => {
|
|
1350
1385
|
const rows = await selectProjectDeployments(c.get("project").id);
|
|
1351
|
-
return c.json(ListProjectDeploymentsResponseSchema.parse(
|
|
1386
|
+
return c.json(ListProjectDeploymentsResponseSchema.parse(rows.map(mapProjectDeployment)));
|
|
1352
1387
|
};
|
|
1353
1388
|
//#endregion
|
|
1354
1389
|
//#region src/routes/account/projects/[projectId]/artifacts/POST.ts
|
|
1355
1390
|
const DEFAULT_PRESIGN_TTL_SECONDS$1 = 900;
|
|
1356
1391
|
const ARTIFACT_CONTENT_TYPE = "application/gzip";
|
|
1357
|
-
const handler$
|
|
1392
|
+
const handler$32 = async (c) => {
|
|
1358
1393
|
const project = c.get("project");
|
|
1359
1394
|
const { organizationId } = c.get("organization");
|
|
1360
1395
|
const organization = await selectOrganizationById(organizationId);
|
|
@@ -1382,7 +1417,7 @@ const handler$29 = async (c) => {
|
|
|
1382
1417
|
//#endregion
|
|
1383
1418
|
//#region src/routes/account/projects/[projectId]/artifacts/active/download/GET.ts
|
|
1384
1419
|
const DEFAULT_PRESIGN_TTL_SECONDS = 900;
|
|
1385
|
-
const handler$
|
|
1420
|
+
const handler$31 = async (c) => {
|
|
1386
1421
|
const project = c.get("project");
|
|
1387
1422
|
const { organizationId } = c.get("organization");
|
|
1388
1423
|
const organization = await selectOrganizationById(organizationId);
|
|
@@ -1401,7 +1436,7 @@ const handler$28 = async (c) => {
|
|
|
1401
1436
|
};
|
|
1402
1437
|
//#endregion
|
|
1403
1438
|
//#region src/routes/account/projects/[projectId]/artifacts/[artifactId]/complete/POST.ts
|
|
1404
|
-
const handler$
|
|
1439
|
+
const handler$30 = async (c) => {
|
|
1405
1440
|
const project = c.get("project");
|
|
1406
1441
|
const artifactId = c.req.param("artifactId");
|
|
1407
1442
|
if (!artifactId) return c.json(ErrorResponseSchema.parse({ error: "Artifact id is required" }), 400);
|
|
@@ -1440,7 +1475,7 @@ const handler$27 = async (c) => {
|
|
|
1440
1475
|
//#endregion
|
|
1441
1476
|
//#region src/routes/account/projects/[projectId]/artifacts/[artifactId]/source/presign/POST.ts
|
|
1442
1477
|
const SOURCE_BLOB_CONTENT_TYPE = "text/plain; charset=utf-8";
|
|
1443
|
-
const handler$
|
|
1478
|
+
const handler$29 = async (c) => {
|
|
1444
1479
|
const project = c.get("project");
|
|
1445
1480
|
const artifactId = c.req.param("artifactId");
|
|
1446
1481
|
if (!artifactId) return c.json(ErrorResponseSchema.parse({ error: "Artifact id is required" }), 400);
|
|
@@ -1468,7 +1503,7 @@ const handler$26 = async (c) => {
|
|
|
1468
1503
|
};
|
|
1469
1504
|
//#endregion
|
|
1470
1505
|
//#region src/routes/account/projects/[projectId]/artifacts/[artifactId]/source/manifest/POST.ts
|
|
1471
|
-
const handler$
|
|
1506
|
+
const handler$28 = async (c) => {
|
|
1472
1507
|
const project = c.get("project");
|
|
1473
1508
|
const artifactId = c.req.param("artifactId");
|
|
1474
1509
|
if (!artifactId) return c.json(ErrorResponseSchema.parse({ error: "Artifact id is required" }), 400);
|
|
@@ -1513,7 +1548,7 @@ function resolveSourcePaths(rows, kindDir, filePaths) {
|
|
|
1513
1548
|
}] : [];
|
|
1514
1549
|
});
|
|
1515
1550
|
}
|
|
1516
|
-
const handler$
|
|
1551
|
+
const handler$27 = async (c) => {
|
|
1517
1552
|
const project = c.get("project");
|
|
1518
1553
|
const active = await selectActiveArtifactSourceManifestForProject(project.id);
|
|
1519
1554
|
if (!active || !active.sourceManifestJson) return c.json(ListProjectFilesResponseSchema.parse({
|
|
@@ -1547,7 +1582,7 @@ const handler$24 = async (c) => {
|
|
|
1547
1582
|
};
|
|
1548
1583
|
//#endregion
|
|
1549
1584
|
//#region src/routes/account/projects/[projectId]/artifacts/[artifactId]/files/content/GET.ts
|
|
1550
|
-
const handler$
|
|
1585
|
+
const handler$26 = async (c) => {
|
|
1551
1586
|
const project = c.get("project");
|
|
1552
1587
|
const artifactId = c.req.param("artifactId");
|
|
1553
1588
|
if (!artifactId) return c.json(ErrorResponseSchema.parse({ error: "Artifact id is required" }), 400);
|
|
@@ -1576,24 +1611,25 @@ function createProjectReachabilityHandler(hosting) {
|
|
|
1576
1611
|
return async (c) => {
|
|
1577
1612
|
const project = c.get("project");
|
|
1578
1613
|
if (project.status !== "active") return c.json(ProjectReachabilityResponseSchema.parse({ reachable: false }));
|
|
1614
|
+
const organization = await selectOrganizationById(project.organizationId);
|
|
1579
1615
|
const reachable = await pingProjectTarget({
|
|
1580
|
-
baseUrl: project.baseUrl,
|
|
1581
|
-
runtimeId: project.runtimeId
|
|
1616
|
+
baseUrl: organization?.baseUrl ?? project.baseUrl,
|
|
1617
|
+
runtimeId: organization?.runtimeId ?? project.runtimeId
|
|
1582
1618
|
}, { plugin: hosting });
|
|
1583
1619
|
return c.json(ProjectReachabilityResponseSchema.parse({ reachable }));
|
|
1584
1620
|
};
|
|
1585
1621
|
}
|
|
1586
1622
|
//#endregion
|
|
1587
1623
|
//#region src/routes/account/projects/[projectId]/members/GET.ts
|
|
1588
|
-
const handler$
|
|
1624
|
+
const handler$25 = async (c) => {
|
|
1589
1625
|
const project = c.get("project");
|
|
1590
1626
|
const currentUserId = c.get("user").id;
|
|
1591
1627
|
const members = await selectProjectMembers(project.id);
|
|
1592
|
-
return c.json(ListProjectMembersResponseSchema.parse(
|
|
1628
|
+
return c.json(ListProjectMembersResponseSchema.parse(members.map((member) => mapProjectMember(member, { isCurrentUser: member.id === currentUserId }))));
|
|
1593
1629
|
};
|
|
1594
1630
|
//#endregion
|
|
1595
1631
|
//#region src/routes/account/projects/[projectId]/members/POST.ts
|
|
1596
|
-
const handler$
|
|
1632
|
+
const handler$24 = async (c) => {
|
|
1597
1633
|
const organization = c.get("organization");
|
|
1598
1634
|
const project = c.get("project");
|
|
1599
1635
|
const body = await c.req.json().catch(() => null);
|
|
@@ -1605,11 +1641,11 @@ const handler$21 = async (c) => {
|
|
|
1605
1641
|
emails: parsed.data.emails,
|
|
1606
1642
|
role: parsed.data.role
|
|
1607
1643
|
});
|
|
1608
|
-
return c.json(InviteProjectMembersResponseSchema.parse(
|
|
1644
|
+
return c.json(InviteProjectMembersResponseSchema.parse(results));
|
|
1609
1645
|
};
|
|
1610
1646
|
//#endregion
|
|
1611
1647
|
//#region src/routes/account/projects/[projectId]/members/[userId]/PATCH.ts
|
|
1612
|
-
const handler$
|
|
1648
|
+
const handler$23 = async (c) => {
|
|
1613
1649
|
const project = c.get("project");
|
|
1614
1650
|
const userId = c.req.param("userId");
|
|
1615
1651
|
const body = await c.req.json().catch(() => null);
|
|
@@ -1618,7 +1654,7 @@ const handler$20 = async (c) => {
|
|
|
1618
1654
|
if (!parsed.success) return c.json(ErrorResponseSchema.parse({ error: "Invalid member update request" }), 400);
|
|
1619
1655
|
try {
|
|
1620
1656
|
const member = await updateProjectMemberRole(project.id, userId, parsed.data.role);
|
|
1621
|
-
return c.json(UpdateProjectMemberResponseSchema.parse(
|
|
1657
|
+
return c.json(UpdateProjectMemberResponseSchema.parse(mapProjectMember(member)));
|
|
1622
1658
|
} catch (error) {
|
|
1623
1659
|
if (error instanceof ProjectMemberNotFoundError) return c.json(ErrorResponseSchema.parse({ error: error.message }), 400);
|
|
1624
1660
|
throw error;
|
|
@@ -1626,7 +1662,7 @@ const handler$20 = async (c) => {
|
|
|
1626
1662
|
};
|
|
1627
1663
|
//#endregion
|
|
1628
1664
|
//#region src/routes/account/projects/[projectId]/members/[userId]/DELETE.ts
|
|
1629
|
-
const handler$
|
|
1665
|
+
const handler$22 = async (c) => {
|
|
1630
1666
|
const project = c.get("project");
|
|
1631
1667
|
const userId = c.req.param("userId");
|
|
1632
1668
|
if (!userId) return c.json(ErrorResponseSchema.parse({ error: "User id is required" }), 400);
|
|
@@ -1640,7 +1676,7 @@ const handler$19 = async (c) => {
|
|
|
1640
1676
|
};
|
|
1641
1677
|
//#endregion
|
|
1642
1678
|
//#region src/routes/account/projects/[projectId]/members/me/DELETE.ts
|
|
1643
|
-
const handler$
|
|
1679
|
+
const handler$21 = async (c) => {
|
|
1644
1680
|
const project = c.get("project");
|
|
1645
1681
|
const userId = c.get("user").id;
|
|
1646
1682
|
try {
|
|
@@ -1653,13 +1689,13 @@ const handler$18 = async (c) => {
|
|
|
1653
1689
|
};
|
|
1654
1690
|
//#endregion
|
|
1655
1691
|
//#region src/routes/account/projects/[projectId]/settings/GET.ts
|
|
1656
|
-
const handler$
|
|
1692
|
+
const handler$20 = async (c) => {
|
|
1657
1693
|
const project = c.get("project");
|
|
1658
|
-
return c.json(ProjectSettingsResponseSchema.parse(
|
|
1694
|
+
return c.json(ProjectSettingsResponseSchema.parse(mapProjectSettings(project)));
|
|
1659
1695
|
};
|
|
1660
1696
|
//#endregion
|
|
1661
1697
|
//#region src/routes/account/projects/[projectId]/settings/PATCH.ts
|
|
1662
|
-
const handler$
|
|
1698
|
+
const handler$19 = async (c) => {
|
|
1663
1699
|
const organization = c.get("organization");
|
|
1664
1700
|
const project = c.get("project");
|
|
1665
1701
|
const body = await c.req.json().catch(() => null);
|
|
@@ -1671,7 +1707,7 @@ const handler$16 = async (c) => {
|
|
|
1671
1707
|
invitePermission: parsed.data.invitePermission
|
|
1672
1708
|
});
|
|
1673
1709
|
if (!updated) return c.json(ErrorResponseSchema.parse({ error: "Project not found" }), 404);
|
|
1674
|
-
return c.json(ProjectSettingsResponseSchema.parse(
|
|
1710
|
+
return c.json(ProjectSettingsResponseSchema.parse(mapProjectSettings(updated)));
|
|
1675
1711
|
};
|
|
1676
1712
|
//#endregion
|
|
1677
1713
|
//#region src/routes/account/credentials/enrich.ts
|
|
@@ -1693,8 +1729,12 @@ function canManageCredential(row, userId) {
|
|
|
1693
1729
|
if (row.scopeType === "user") return userId !== void 0 && row.scopeId === userId;
|
|
1694
1730
|
return true;
|
|
1695
1731
|
}
|
|
1696
|
-
/** Display name derived from the
|
|
1732
|
+
/** Display name derived from the app slug (org-custom slugs use the segment after `/`). */
|
|
1697
1733
|
function displayAppName(appId) {
|
|
1734
|
+
try {
|
|
1735
|
+
const parsed = parseAppSlug(appId);
|
|
1736
|
+
if (parsed.kind === "org") return displayCredentialAppName(parsed.name);
|
|
1737
|
+
} catch {}
|
|
1698
1738
|
return displayCredentialAppName(appId);
|
|
1699
1739
|
}
|
|
1700
1740
|
/** Masked preview of a secret — last 4 chars revealed, the rest masked. Plaintext never returned. */
|
|
@@ -1781,10 +1821,10 @@ async function enrichCredentialInstances(rows, organizationId) {
|
|
|
1781
1821
|
}
|
|
1782
1822
|
//#endregion
|
|
1783
1823
|
//#region src/routes/account/credentials/GET.ts
|
|
1784
|
-
const handler$
|
|
1824
|
+
const handler$18 = async (c) => {
|
|
1785
1825
|
const organization = c.get("organization");
|
|
1786
1826
|
const credentials = await enrichCredentialInstances(await listAllCredentialInstances(), organization.organizationId);
|
|
1787
|
-
return c.json(ListCredentialsResponseSchema.parse(
|
|
1827
|
+
return c.json(ListCredentialsResponseSchema.parse(credentials));
|
|
1788
1828
|
};
|
|
1789
1829
|
//#endregion
|
|
1790
1830
|
//#region src/routes/account/credentials/POST.ts
|
|
@@ -1792,7 +1832,7 @@ function withTargetScope(target, fn) {
|
|
|
1792
1832
|
if (target.projectScope) return runWithProjectScope(target.projectScope, fn);
|
|
1793
1833
|
return fn();
|
|
1794
1834
|
}
|
|
1795
|
-
const handler$
|
|
1835
|
+
const handler$17 = async (c) => {
|
|
1796
1836
|
const organization = c.get("organization");
|
|
1797
1837
|
const user = c.get("user");
|
|
1798
1838
|
const parsed = CreateCredentialsRequestSchema.safeParse(await c.req.json().catch(() => null));
|
|
@@ -1801,6 +1841,13 @@ const handler$14 = async (c) => {
|
|
|
1801
1841
|
return c.json({ error: message }, 400);
|
|
1802
1842
|
}
|
|
1803
1843
|
const input = parsed.data;
|
|
1844
|
+
if (input.connectionKind === "manual" && input.value) {
|
|
1845
|
+
const app = await selectAppForOrganization(organization.organizationId, input.appId);
|
|
1846
|
+
if (app && hasCredentialFieldTemplate(app)) {
|
|
1847
|
+
const validation = validateCredentialValueAgainstFields(app.credentialFields, input.value);
|
|
1848
|
+
if (!validation.ok) return c.json({ error: validation.message }, 400);
|
|
1849
|
+
}
|
|
1850
|
+
}
|
|
1804
1851
|
const resolvedProjects = [];
|
|
1805
1852
|
for (const slug of input.projects) {
|
|
1806
1853
|
const project = await selectProjectForOrganizationBySlug(organization.organizationId, slug);
|
|
@@ -1837,7 +1884,7 @@ const handler$14 = async (c) => {
|
|
|
1837
1884
|
for (const target of targets) {
|
|
1838
1885
|
const siblings = await withTargetScope(target, () => selectCredentialInstancesForScope(input.appId, target.scopeType, target.scopeId));
|
|
1839
1886
|
const label = resolveUniqueCredentialInstanceLabel({
|
|
1840
|
-
baseLabel: buildCredentialInstanceLabel({
|
|
1887
|
+
baseLabel: input.label?.trim() || buildCredentialInstanceLabel({
|
|
1841
1888
|
scopeType: target.scopeType,
|
|
1842
1889
|
appName,
|
|
1843
1890
|
projectName: target.projectName
|
|
@@ -1862,21 +1909,21 @@ const handler$14 = async (c) => {
|
|
|
1862
1909
|
if (row) rows.push(row);
|
|
1863
1910
|
}
|
|
1864
1911
|
const credentials = await enrichCredentialInstances(rows, organization.organizationId);
|
|
1865
|
-
return c.json(CreateCredentialsResponseSchema.parse(
|
|
1912
|
+
return c.json(CreateCredentialsResponseSchema.parse(credentials), 201);
|
|
1866
1913
|
};
|
|
1867
1914
|
//#endregion
|
|
1868
1915
|
//#region src/routes/account/credentials/[credentialId]/GET.ts
|
|
1869
|
-
const handler$
|
|
1916
|
+
const handler$16 = async (c) => {
|
|
1870
1917
|
const organization = c.get("organization");
|
|
1871
1918
|
const credentialId = c.req.param("credentialId") ?? "";
|
|
1872
1919
|
const row = credentialId ? await selectCredentialInstanceById(credentialId) : void 0;
|
|
1873
1920
|
if (!row || toAppCredentialScope(row.scopeType) === null) return c.json({ error: "Credential not found" }, 404);
|
|
1874
1921
|
const [credential] = await enrichCredentialInstances([row], organization.organizationId);
|
|
1875
|
-
return c.json(GetCredentialResponseSchema.parse(
|
|
1922
|
+
return c.json(GetCredentialResponseSchema.parse(credential));
|
|
1876
1923
|
};
|
|
1877
1924
|
//#endregion
|
|
1878
1925
|
//#region src/routes/account/credentials/[credentialId]/PATCH.ts
|
|
1879
|
-
const handler$
|
|
1926
|
+
const handler$15 = async (c) => {
|
|
1880
1927
|
const organization = c.get("organization");
|
|
1881
1928
|
const user = c.get("user");
|
|
1882
1929
|
const credentialId = c.req.param("credentialId") ?? "";
|
|
@@ -1929,7 +1976,7 @@ const handler$12 = async (c) => {
|
|
|
1929
1976
|
});
|
|
1930
1977
|
const updated = await selectCredentialInstanceById(credentialId);
|
|
1931
1978
|
const [credential] = await enrichCredentialInstances(updated ? [updated] : [], organization.organizationId);
|
|
1932
|
-
return c.json(GetCredentialResponseSchema.parse(
|
|
1979
|
+
return c.json(GetCredentialResponseSchema.parse(credential));
|
|
1933
1980
|
};
|
|
1934
1981
|
//#endregion
|
|
1935
1982
|
//#region src/routes/account/credentials/[credentialId]/DELETE.ts
|
|
@@ -1958,10 +2005,10 @@ function createDeleteCredentialHandler(options = {}) {
|
|
|
1958
2005
|
}
|
|
1959
2006
|
//#endregion
|
|
1960
2007
|
//#region src/routes/account/members/GET.ts
|
|
1961
|
-
const handler$
|
|
2008
|
+
const handler$14 = async (c) => {
|
|
1962
2009
|
const { organizationId } = c.get("organization");
|
|
1963
2010
|
const members = await selectOrganizationMembers(organizationId);
|
|
1964
|
-
return c.json(ListOrganizationMembersResponseSchema.parse(
|
|
2011
|
+
return c.json(ListOrganizationMembersResponseSchema.parse(members.map(mapOrganizationMember)));
|
|
1965
2012
|
};
|
|
1966
2013
|
//#endregion
|
|
1967
2014
|
//#region src/email/organization-invite-email.ts
|
|
@@ -2006,7 +2053,7 @@ async function sendOrganizationInviteEmail(payload, resend) {
|
|
|
2006
2053
|
}
|
|
2007
2054
|
//#endregion
|
|
2008
2055
|
//#region src/routes/account/members/invitations/POST.ts
|
|
2009
|
-
const handler$
|
|
2056
|
+
const handler$13 = async (c) => {
|
|
2010
2057
|
const user = c.get("user");
|
|
2011
2058
|
const organization = c.get("organization");
|
|
2012
2059
|
const body = await c.req.json().catch(() => null);
|
|
@@ -2028,11 +2075,11 @@ const handler$10 = async (c) => {
|
|
|
2028
2075
|
inviterName: inviter?.name
|
|
2029
2076
|
});
|
|
2030
2077
|
}
|
|
2031
|
-
return c.json(InviteOrganizationMembersResponseSchema.parse(
|
|
2078
|
+
return c.json(InviteOrganizationMembersResponseSchema.parse(results));
|
|
2032
2079
|
};
|
|
2033
2080
|
//#endregion
|
|
2034
2081
|
//#region src/routes/account/members/[userId]/PATCH.ts
|
|
2035
|
-
const handler$
|
|
2082
|
+
const handler$12 = async (c) => {
|
|
2036
2083
|
const { organizationId } = c.get("organization");
|
|
2037
2084
|
const userId = c.req.param("userId");
|
|
2038
2085
|
const body = await c.req.json().catch(() => null);
|
|
@@ -2041,7 +2088,7 @@ const handler$9 = async (c) => {
|
|
|
2041
2088
|
if (!parsed.success) return c.json(ErrorResponseSchema.parse({ error: "Invalid member update request" }), 400);
|
|
2042
2089
|
try {
|
|
2043
2090
|
const member = await updateOrganizationMemberRole(organizationId, userId, parsed.data.role);
|
|
2044
|
-
return c.json(UpdateOrganizationMemberResponseSchema.parse(
|
|
2091
|
+
return c.json(UpdateOrganizationMemberResponseSchema.parse(mapOrganizationMember(member)));
|
|
2045
2092
|
} catch (error) {
|
|
2046
2093
|
if (error instanceof CannotModifyOwnerError || error instanceof OrganizationMemberNotFoundError) return c.json(ErrorResponseSchema.parse({ error: error.message }), 400);
|
|
2047
2094
|
throw error;
|
|
@@ -2049,7 +2096,7 @@ const handler$9 = async (c) => {
|
|
|
2049
2096
|
};
|
|
2050
2097
|
//#endregion
|
|
2051
2098
|
//#region src/routes/account/members/[userId]/DELETE.ts
|
|
2052
|
-
const handler$
|
|
2099
|
+
const handler$11 = async (c) => {
|
|
2053
2100
|
const { organizationId } = c.get("organization");
|
|
2054
2101
|
const userId = c.req.param("userId");
|
|
2055
2102
|
if (!userId) return c.json(ErrorResponseSchema.parse({ error: "User id is required" }), 400);
|
|
@@ -2063,19 +2110,19 @@ const handler$8 = async (c) => {
|
|
|
2063
2110
|
};
|
|
2064
2111
|
//#endregion
|
|
2065
2112
|
//#region src/routes/account/invitations/GET.ts
|
|
2066
|
-
const handler$
|
|
2113
|
+
const handler$10 = async (c) => {
|
|
2067
2114
|
const invitations = await selectPendingInvitationsForUser(c.get("user").id);
|
|
2068
|
-
return c.json(ListOrganizationInvitationsResponseSchema.parse(
|
|
2115
|
+
return c.json(ListOrganizationInvitationsResponseSchema.parse(invitations.map(mapOrganizationInvitation)));
|
|
2069
2116
|
};
|
|
2070
2117
|
//#endregion
|
|
2071
2118
|
//#region src/routes/account/invitations/[invitationId]/accept/POST.ts
|
|
2072
|
-
const handler$
|
|
2119
|
+
const handler$9 = async (c) => {
|
|
2073
2120
|
const user = c.get("user");
|
|
2074
2121
|
const invitationId = c.req.param("invitationId");
|
|
2075
2122
|
if (!invitationId) return c.json(ErrorResponseSchema.parse({ error: "Invitation id is required" }), 400);
|
|
2076
2123
|
try {
|
|
2077
2124
|
const membership = await acceptInvitation(invitationId, user.id);
|
|
2078
|
-
return c.json(AcceptOrganizationInvitationResponseSchema.parse(
|
|
2125
|
+
return c.json(AcceptOrganizationInvitationResponseSchema.parse(mapUserOrganization(membership)));
|
|
2079
2126
|
} catch (error) {
|
|
2080
2127
|
if (error instanceof OrganizationInvitationNotFoundError) return c.json(ErrorResponseSchema.parse({ error: error.message }), 404);
|
|
2081
2128
|
if (error instanceof OrganizationInvitationForbiddenError) return c.json(ErrorResponseSchema.parse({ error: error.message }), 403);
|
|
@@ -2085,7 +2132,7 @@ const handler$6 = async (c) => {
|
|
|
2085
2132
|
};
|
|
2086
2133
|
//#endregion
|
|
2087
2134
|
//#region src/routes/account/invitations/[invitationId]/decline/POST.ts
|
|
2088
|
-
const handler$
|
|
2135
|
+
const handler$8 = async (c) => {
|
|
2089
2136
|
const user = c.get("user");
|
|
2090
2137
|
const invitationId = c.req.param("invitationId");
|
|
2091
2138
|
if (!invitationId) return c.json(ErrorResponseSchema.parse({ error: "Invitation id is required" }), 400);
|
|
@@ -2110,14 +2157,83 @@ function appRowToCatalogEntry(row) {
|
|
|
2110
2157
|
integrationDescription: row.description,
|
|
2111
2158
|
...row.logo ? { logo: row.logo } : {},
|
|
2112
2159
|
authKind: row.authKind,
|
|
2113
|
-
oauthScopes: row.oauthScopes
|
|
2160
|
+
oauthScopes: row.oauthScopes,
|
|
2161
|
+
source: row.source,
|
|
2162
|
+
...hasCredentialFieldTemplate(row) ? { credentialFields: row.credentialFields } : {}
|
|
2163
|
+
};
|
|
2164
|
+
}
|
|
2165
|
+
function appRowToCustomAppDetail(row) {
|
|
2166
|
+
if (row.source !== "custom" || row.authKind !== "api_key") throw new Error(`App is not a custom api_key app: ${row.slug}`);
|
|
2167
|
+
if (!hasCredentialFieldTemplate(row)) throw new Error(`Custom app is missing credential fields: ${row.slug}`);
|
|
2168
|
+
return {
|
|
2169
|
+
id: row.slug,
|
|
2170
|
+
slug: row.slug,
|
|
2171
|
+
name: row.name,
|
|
2172
|
+
description: row.description,
|
|
2173
|
+
category: row.category,
|
|
2174
|
+
authKind: "api_key",
|
|
2175
|
+
source: "custom",
|
|
2176
|
+
credentialFields: row.credentialFields,
|
|
2177
|
+
createdAt: row.createdAt.toISOString(),
|
|
2178
|
+
updatedAt: row.updatedAt.toISOString()
|
|
2114
2179
|
};
|
|
2115
2180
|
}
|
|
2116
2181
|
//#endregion
|
|
2117
2182
|
//#region src/routes/account/apps/GET.ts
|
|
2183
|
+
const handler$7 = async (c) => {
|
|
2184
|
+
const apps = (await listAppsForOrganization(c.get("organization").organizationId)).map(appRowToCatalogEntry);
|
|
2185
|
+
return c.json(ListAppsResponseSchema.parse(apps));
|
|
2186
|
+
};
|
|
2187
|
+
//#endregion
|
|
2188
|
+
//#region src/routes/account/apps/POST.ts
|
|
2189
|
+
const handler$6 = async (c) => {
|
|
2190
|
+
const organization = c.get("organization");
|
|
2191
|
+
const parsed = CreateCustomAppRequestSchema.safeParse(await c.req.json().catch(() => null));
|
|
2192
|
+
if (!parsed.success) {
|
|
2193
|
+
const message = parsed.error.issues[0]?.message ?? "Invalid request body";
|
|
2194
|
+
return c.json(ErrorResponseSchema.parse({ error: message }), 400);
|
|
2195
|
+
}
|
|
2196
|
+
const org = await selectOrganizationById(organization.organizationId);
|
|
2197
|
+
if (!org) return c.json(ErrorResponseSchema.parse({ error: "Organization not found" }), 404);
|
|
2198
|
+
try {
|
|
2199
|
+
const row = await createOrgApp({
|
|
2200
|
+
organizationId: organization.organizationId,
|
|
2201
|
+
orgSlug: org.slug,
|
|
2202
|
+
name: parsed.data.name,
|
|
2203
|
+
slug: parsed.data.slug,
|
|
2204
|
+
description: parsed.data.description,
|
|
2205
|
+
credentialFields: parsed.data.fields
|
|
2206
|
+
});
|
|
2207
|
+
return c.json(CreateCustomAppResponseSchema.parse(appRowToCustomAppDetail(row)), 201);
|
|
2208
|
+
} catch (error) {
|
|
2209
|
+
if (error instanceof OrgAppSlugTakenError) return c.json(ErrorResponseSchema.parse({ error: error.message }), 409);
|
|
2210
|
+
throw error;
|
|
2211
|
+
}
|
|
2212
|
+
};
|
|
2213
|
+
//#endregion
|
|
2214
|
+
//#region src/routes/account/apps/slug-available/GET.ts
|
|
2215
|
+
const handler$5 = async (c) => {
|
|
2216
|
+
const organization = c.get("organization");
|
|
2217
|
+
const parsed = AppSlugAvailabilityQuerySchema.safeParse({ slug: c.req.query("slug") });
|
|
2218
|
+
if (!parsed.success) return c.json(ErrorResponseSchema.parse({ error: "Invalid slug query" }), 400);
|
|
2219
|
+
const org = await selectOrganizationById(organization.organizationId);
|
|
2220
|
+
if (!org) return c.json(ErrorResponseSchema.parse({ error: "Organization not found" }), 404);
|
|
2221
|
+
const availability = await checkOrgAppSlugAvailability(org.slug, parsed.data.slug);
|
|
2222
|
+
return c.json(AppSlugAvailabilityResponseSchema.parse(availability));
|
|
2223
|
+
};
|
|
2224
|
+
//#endregion
|
|
2225
|
+
//#region src/routes/account/apps/[slug]/GET.ts
|
|
2118
2226
|
const handler$4 = async (c) => {
|
|
2119
|
-
const
|
|
2120
|
-
|
|
2227
|
+
const organization = c.get("organization");
|
|
2228
|
+
const slug = c.req.param("slug") ?? "";
|
|
2229
|
+
if (!slug) return c.json(ErrorResponseSchema.parse({ error: "App not found" }), 404);
|
|
2230
|
+
const row = await selectAppForOrganization(organization.organizationId, decodeURIComponent(slug));
|
|
2231
|
+
if (!row || row.source !== "custom") return c.json(ErrorResponseSchema.parse({ error: "App not found" }), 404);
|
|
2232
|
+
try {
|
|
2233
|
+
return c.json(GetCustomAppResponseSchema.parse(appRowToCustomAppDetail(row)));
|
|
2234
|
+
} catch {
|
|
2235
|
+
return c.json(ErrorResponseSchema.parse({ error: "App not found" }), 404);
|
|
2236
|
+
}
|
|
2121
2237
|
};
|
|
2122
2238
|
//#endregion
|
|
2123
2239
|
//#region src/routes/account/api-keys/GET.ts
|
|
@@ -2127,14 +2243,14 @@ const handler$3 = async (c) => {
|
|
|
2127
2243
|
const records = apiKeyListScope(accessContext(c)).kind === "all" ? await listOrgPlatformApiKeysForOrganization(organizationId) : await listOrgPlatformApiKeysForUser(organizationId, user.id);
|
|
2128
2244
|
const creators = await selectUsersByIds([...new Set(records.map((record) => record.createdByUserId))]);
|
|
2129
2245
|
const creatorsById = new Map(creators.map((creator) => [creator.id, creator]));
|
|
2130
|
-
return c.json(ListApiKeysResponseSchema.parse(
|
|
2246
|
+
return c.json(ListApiKeysResponseSchema.parse(records.map((record) => ({
|
|
2131
2247
|
id: record.id,
|
|
2132
2248
|
name: record.name,
|
|
2133
2249
|
keyPreview: record.keyPreview,
|
|
2134
2250
|
createdAt: record.createdAt.toISOString(),
|
|
2135
2251
|
createdBy: mapOrgPlatformApiKeyCreatorOrDeleted(record.createdByUserId, creatorsById.get(record.createdByUserId)),
|
|
2136
2252
|
isCreatedByCurrentUser: record.createdByUserId === user.id
|
|
2137
|
-
}))
|
|
2253
|
+
}))));
|
|
2138
2254
|
};
|
|
2139
2255
|
//#endregion
|
|
2140
2256
|
//#region src/routes/account/api-keys/POST.ts
|
|
@@ -2311,71 +2427,74 @@ function mountAccountRoutes(options) {
|
|
|
2311
2427
|
const requireProjectManageMembers = authorize(projectActions.manageMembers);
|
|
2312
2428
|
const requireInvitableProjectRole = authorizePayload(InviteProjectMembersRequestSchema, ({ c, ctx, body }) => canInviteToProject(ctx, { invitePermission: getProjectInvitePermission(c) }, body.role));
|
|
2313
2429
|
const requireOrgParam = requireOrganizationParam();
|
|
2314
|
-
account.get("/organizations", handler$
|
|
2315
|
-
account.get("/organizations/slug-available", handler$
|
|
2430
|
+
account.get("/organizations", handler$58);
|
|
2431
|
+
account.get("/organizations/slug-available", handler$57);
|
|
2316
2432
|
account.post("/organizations", createOrganizationHandler(options));
|
|
2317
|
-
account.get("/organizations/:organizationId", requireOrgParam, handler$
|
|
2318
|
-
account.patch("/organizations/:organizationId", requireOrgParam, requireOrgUpdate, handler$
|
|
2319
|
-
account.get("/organizations/:organizationId/branding", requireOrgParam, handler$
|
|
2320
|
-
account.patch("/organizations/:organizationId/branding", requireOrgParam, requireOrgUpdate, handler$
|
|
2321
|
-
account.post("/organizations/:organizationId/branding/logo/presign", requireOrgParam, requireOrgUpdate, handler$
|
|
2322
|
-
account.get("/invitations", handler$
|
|
2323
|
-
account.post("/invitations/:invitationId/accept", handler$
|
|
2324
|
-
account.post("/invitations/:invitationId/decline", handler$
|
|
2325
|
-
account.get("/users/me/avatar", handler$
|
|
2326
|
-
account.post("/users/me/avatar/presign", handler$
|
|
2327
|
-
account.patch("/users/me/avatar", handler$
|
|
2328
|
-
account.get("/users/me/preferences", handler$
|
|
2329
|
-
account.patch("/users/me/preferences", handler$
|
|
2330
|
-
|
|
2331
|
-
orgScoped.get("/
|
|
2332
|
-
orgScoped.post("/
|
|
2333
|
-
orgScoped.
|
|
2334
|
-
orgScoped.
|
|
2433
|
+
account.get("/organizations/:organizationId", requireOrgParam, handler$56);
|
|
2434
|
+
account.patch("/organizations/:organizationId", requireOrgParam, requireOrgUpdate, handler$55);
|
|
2435
|
+
account.get("/organizations/:organizationId/branding", requireOrgParam, handler$54);
|
|
2436
|
+
account.patch("/organizations/:organizationId/branding", requireOrgParam, requireOrgUpdate, handler$53);
|
|
2437
|
+
account.post("/organizations/:organizationId/branding/logo/presign", requireOrgParam, requireOrgUpdate, handler$52);
|
|
2438
|
+
account.get("/invitations", handler$10);
|
|
2439
|
+
account.post("/invitations/:invitationId/accept", handler$9);
|
|
2440
|
+
account.post("/invitations/:invitationId/decline", handler$8);
|
|
2441
|
+
account.get("/users/me/avatar", handler$63);
|
|
2442
|
+
account.post("/users/me/avatar/presign", handler$62);
|
|
2443
|
+
account.patch("/users/me/avatar", handler$61);
|
|
2444
|
+
account.get("/users/me/preferences", handler$60);
|
|
2445
|
+
account.patch("/users/me/preferences", handler$59);
|
|
2446
|
+
orgScoped.get("/apps", handler$7);
|
|
2447
|
+
orgScoped.get("/apps/slug-available", handler$5);
|
|
2448
|
+
orgScoped.post("/apps", requireOrgUpdate, handler$6);
|
|
2449
|
+
orgScoped.get("/apps/:slug", handler$4);
|
|
2450
|
+
orgScoped.get("/members", handler$14);
|
|
2451
|
+
orgScoped.post("/members/invitations", requireUserInvite, requireInvitableRole, handler$13);
|
|
2452
|
+
orgScoped.patch("/members/:userId", requireUserManage, handler$12);
|
|
2453
|
+
orgScoped.delete("/members/:userId", requireUserManage, handler$11);
|
|
2335
2454
|
orgScoped.get("/api-keys", handler$3);
|
|
2336
2455
|
orgScoped.post("/api-keys", requireApiKeyCreate, handler$2);
|
|
2337
2456
|
orgScoped.delete("/api-keys/:apiKeyId", handler$1);
|
|
2338
2457
|
const withOrgDb = withOrganizationProjectDatabase();
|
|
2339
|
-
orgScoped.get("/agents", withOrgDb, handler$
|
|
2340
|
-
orgScoped.get("/agents/:agentId", withOrgDb, handler$
|
|
2341
|
-
orgScoped.get("/workflows", withOrgDb, handler$
|
|
2342
|
-
orgScoped.get("/workflows/:workflowId", withOrgDb, handler$
|
|
2343
|
-
orgScoped.get("/skills", withOrgDb, handler$
|
|
2344
|
-
orgScoped.get("/skills/:skillId", withOrgDb, handler$
|
|
2345
|
-
orgScoped.get("/recents", withOrgDb, handler$
|
|
2346
|
-
orgScoped.get("/history", withOrgDb, handler$
|
|
2458
|
+
orgScoped.get("/agents", withOrgDb, handler$49);
|
|
2459
|
+
orgScoped.get("/agents/:agentId", withOrgDb, handler$48);
|
|
2460
|
+
orgScoped.get("/workflows", withOrgDb, handler$46);
|
|
2461
|
+
orgScoped.get("/workflows/:workflowId", withOrgDb, handler$45);
|
|
2462
|
+
orgScoped.get("/skills", withOrgDb, handler$43);
|
|
2463
|
+
orgScoped.get("/skills/:skillId", withOrgDb, handler$42);
|
|
2464
|
+
orgScoped.get("/recents", withOrgDb, handler$41);
|
|
2465
|
+
orgScoped.get("/history", withOrgDb, handler$51);
|
|
2347
2466
|
orgScoped.post("/team-requests", handler);
|
|
2348
|
-
orgScoped.get("/history/:runId", withOrgDb, handler$
|
|
2349
|
-
orgScoped.post("/workflows/runs/:runId/cancel", withOrgDb, handler$
|
|
2350
|
-
orgScoped.post("/agents/sessions/:sessionId/cancel", withOrgDb, handler$
|
|
2351
|
-
orgScoped.get("/credentials", withOrgDb, handler$
|
|
2352
|
-
orgScoped.post("/credentials", withOrgDb, handler$
|
|
2353
|
-
orgScoped.get("/credentials/:credentialId", withOrgDb, (c, next) => c.req.param("credentialId") === "instances" ? next() : handler$
|
|
2354
|
-
orgScoped.patch("/credentials/:credentialId", withOrgDb, handler$
|
|
2467
|
+
orgScoped.get("/history/:runId", withOrgDb, handler$50);
|
|
2468
|
+
orgScoped.post("/workflows/runs/:runId/cancel", withOrgDb, handler$44);
|
|
2469
|
+
orgScoped.post("/agents/sessions/:sessionId/cancel", withOrgDb, handler$47);
|
|
2470
|
+
orgScoped.get("/credentials", withOrgDb, handler$18);
|
|
2471
|
+
orgScoped.post("/credentials", withOrgDb, handler$17);
|
|
2472
|
+
orgScoped.get("/credentials/:credentialId", withOrgDb, (c, next) => c.req.param("credentialId") === "instances" ? next() : handler$16(c, next));
|
|
2473
|
+
orgScoped.patch("/credentials/:credentialId", withOrgDb, handler$15);
|
|
2355
2474
|
orgScoped.delete("/credentials/:credentialId", withOrgDb, deleteCredential);
|
|
2356
|
-
orgScoped.get("/projects", handler$
|
|
2357
|
-
orgScoped.get("/projects/slug-available", handler$
|
|
2358
|
-
orgScoped.get("/projects/metrics", withOrgDb, handler$
|
|
2359
|
-
orgScoped.post("/projects", handler$
|
|
2360
|
-
projectScoped.get("/:projectId", requireProject(), requireProjectMember, handler$
|
|
2361
|
-
projectScoped.patch("/:projectId", requireProject(), requireProjectMember, requireProjectUpdate, handler$
|
|
2362
|
-
projectScoped.delete("/:projectId", requireProject(), requireProjectMember, requireProjectDelete, handler$
|
|
2363
|
-
projectScoped.get("/:projectId/settings", requireProject(), requireProjectMember, handler$
|
|
2364
|
-
projectScoped.patch("/:projectId/settings", requireProject(), requireProjectMember, requireProjectUpdate, handler$
|
|
2365
|
-
projectScoped.get("/:projectId/members", requireProject(), requireProjectMember, handler$
|
|
2366
|
-
projectScoped.post("/:projectId/members", requireProject(), requireProjectMember, requireInvitableProjectRole, handler$
|
|
2367
|
-
projectScoped.patch("/:projectId/members/:userId", requireProject(), requireProjectMember, requireProjectManageMembers, handler$
|
|
2368
|
-
projectScoped.delete("/:projectId/members/:userId", requireProject(), requireProjectMember, requireProjectManageMembers, handler$
|
|
2369
|
-
projectScoped.delete("/:projectId/members/me", requireProject(), requireProjectMember, handler$
|
|
2475
|
+
orgScoped.get("/projects", handler$40);
|
|
2476
|
+
orgScoped.get("/projects/slug-available", handler$37);
|
|
2477
|
+
orgScoped.get("/projects/metrics", withOrgDb, handler$39);
|
|
2478
|
+
orgScoped.post("/projects", handler$38);
|
|
2479
|
+
projectScoped.get("/:projectId", requireProject(), requireProjectMember, handler$36);
|
|
2480
|
+
projectScoped.patch("/:projectId", requireProject(), requireProjectMember, requireProjectUpdate, handler$35);
|
|
2481
|
+
projectScoped.delete("/:projectId", requireProject(), requireProjectMember, requireProjectDelete, handler$34);
|
|
2482
|
+
projectScoped.get("/:projectId/settings", requireProject(), requireProjectMember, handler$20);
|
|
2483
|
+
projectScoped.patch("/:projectId/settings", requireProject(), requireProjectMember, requireProjectUpdate, handler$19);
|
|
2484
|
+
projectScoped.get("/:projectId/members", requireProject(), requireProjectMember, handler$25);
|
|
2485
|
+
projectScoped.post("/:projectId/members", requireProject(), requireProjectMember, requireInvitableProjectRole, handler$24);
|
|
2486
|
+
projectScoped.patch("/:projectId/members/:userId", requireProject(), requireProjectMember, requireProjectManageMembers, handler$23);
|
|
2487
|
+
projectScoped.delete("/:projectId/members/:userId", requireProject(), requireProjectMember, requireProjectManageMembers, handler$22);
|
|
2488
|
+
projectScoped.delete("/:projectId/members/me", requireProject(), requireProjectMember, handler$21);
|
|
2370
2489
|
projectScoped.get("/:projectId/reachability", requireProject(), requireProjectMember, createProjectReachabilityHandler(options.hosting));
|
|
2371
|
-
projectScoped.get("/:projectId/files", requireProject(), requireProjectMember, withOrgDb, handler$
|
|
2372
|
-
projectScoped.get("/:projectId/artifacts/:artifactId/files/content", requireProject(), requireProjectMember, handler$
|
|
2373
|
-
projectScoped.get("/:projectId/deployments", requireProject(), requireProjectMember, handler$
|
|
2374
|
-
projectScoped.get("/:projectId/artifacts/active/download", requireProject(), requireProjectMember, requireProjectDeploy, handler$
|
|
2375
|
-
projectScoped.post("/:projectId/artifacts", requireProject(), requireProjectMember, requireProjectDeploy, handler$
|
|
2376
|
-
projectScoped.post("/:projectId/artifacts/:artifactId/complete", requireProject(), requireProjectMember, requireProjectDeploy, handler$
|
|
2377
|
-
projectScoped.post("/:projectId/artifacts/:artifactId/source/presign", requireProject(), requireProjectMember, requireProjectDeploy, handler$
|
|
2378
|
-
projectScoped.post("/:projectId/artifacts/:artifactId/source/manifest", requireProject(), requireProjectMember, requireProjectDeploy, handler$
|
|
2490
|
+
projectScoped.get("/:projectId/files", requireProject(), requireProjectMember, withOrgDb, handler$27);
|
|
2491
|
+
projectScoped.get("/:projectId/artifacts/:artifactId/files/content", requireProject(), requireProjectMember, handler$26);
|
|
2492
|
+
projectScoped.get("/:projectId/deployments", requireProject(), requireProjectMember, handler$33);
|
|
2493
|
+
projectScoped.get("/:projectId/artifacts/active/download", requireProject(), requireProjectMember, requireProjectDeploy, handler$31);
|
|
2494
|
+
projectScoped.post("/:projectId/artifacts", requireProject(), requireProjectMember, requireProjectDeploy, handler$32);
|
|
2495
|
+
projectScoped.post("/:projectId/artifacts/:artifactId/complete", requireProject(), requireProjectMember, requireProjectDeploy, handler$30);
|
|
2496
|
+
projectScoped.post("/:projectId/artifacts/:artifactId/source/presign", requireProject(), requireProjectMember, requireProjectDeploy, handler$29);
|
|
2497
|
+
projectScoped.post("/:projectId/artifacts/:artifactId/source/manifest", requireProject(), requireProjectMember, requireProjectDeploy, handler$28);
|
|
2379
2498
|
orgScoped.route("/projects", projectScoped);
|
|
2380
2499
|
account.route("/", orgScoped);
|
|
2381
2500
|
return account;
|
|
@@ -2471,11 +2590,12 @@ const SandboxWriteBodySchema = SandboxSessionBodySchema.extend({
|
|
|
2471
2590
|
path: z.string().trim().min(1),
|
|
2472
2591
|
content: z.string()
|
|
2473
2592
|
});
|
|
2474
|
-
function mountInternalRoutes(workerToken, tokenRefresh, llmProxy, sandboxProxy) {
|
|
2593
|
+
function mountInternalRoutes(workerToken, tokenRefresh, llmProxy, sandboxProxy, mcp) {
|
|
2475
2594
|
const internal = new Hono();
|
|
2476
2595
|
const protect = requireWorkerToken(workerToken);
|
|
2477
2596
|
const materialize = createCredentialMaterializeHandler(tokenRefresh);
|
|
2478
2597
|
internal.use("/*", protect);
|
|
2598
|
+
mcp?.mountInternalRoutes?.(internal, { withProjectScope });
|
|
2479
2599
|
internal.post("/projects/:projectId/credentials/materialize", async (c) => {
|
|
2480
2600
|
const response = await withProjectScope(c.req.param("projectId"), async () => materialize(c));
|
|
2481
2601
|
if (response === void 0) return c.json({ error: "Project not found" }, 404);
|
|
@@ -2628,7 +2748,7 @@ async function createApp$1(auth, options) {
|
|
|
2628
2748
|
}));
|
|
2629
2749
|
},
|
|
2630
2750
|
mountInternal: (app, { tokenRefresh }) => {
|
|
2631
|
-
app.route("/internal", mountInternalRoutes(options.hosting.workerRuntime.workerToken, tokenRefresh, options.llmProxy, options.sandboxProxy));
|
|
2751
|
+
app.route("/internal", mountInternalRoutes(options.hosting.workerRuntime.workerToken, tokenRefresh, options.llmProxy, options.sandboxProxy, options.mcp));
|
|
2632
2752
|
}
|
|
2633
2753
|
});
|
|
2634
2754
|
}
|
|
@@ -2652,45 +2772,34 @@ async function startPlatformServer(platformConfig, hooks = {}) {
|
|
|
2652
2772
|
if (usesPgBossScheduler(platformConfig)) await ensureProjectPgBossGrants();
|
|
2653
2773
|
configureProjectRuntimeScheduler(platformConfig.scheduler);
|
|
2654
2774
|
await startProjectRuntimeWorker(runtime, { resolveStartInput: async (job) => {
|
|
2655
|
-
const
|
|
2656
|
-
if (!
|
|
2657
|
-
const
|
|
2658
|
-
if (resolved.action === "error") throw new Error(resolved.message);
|
|
2659
|
-
if (resolved.action === "skip") throw new Error(`Project ${job.projectId} has no deploy artifact to start`);
|
|
2660
|
-
const artifact = await selectProjectArtifactById(resolved.artifactId);
|
|
2661
|
-
if (!artifact || artifact.status !== "ready") throw new Error(`Project ${job.projectId} pending artifact is not ready`);
|
|
2662
|
-
const organization = await selectOrganizationById(project.organizationId);
|
|
2663
|
-
if (!organization) throw new Error(`Organization not found for project ${job.projectId}`);
|
|
2775
|
+
const organization = await selectOrganizationById(job.organizationId);
|
|
2776
|
+
if (!organization) throw new Error(`Organization ${job.organizationId} not found`);
|
|
2777
|
+
const database = await resolveOrgRuntimeDatabase(job.organizationId);
|
|
2664
2778
|
const workerRuntime = platformConfig.hosting.workerRuntime;
|
|
2665
2779
|
return {
|
|
2666
|
-
|
|
2667
|
-
|
|
2668
|
-
|
|
2669
|
-
|
|
2670
|
-
|
|
2671
|
-
|
|
2672
|
-
projectId: project.id
|
|
2673
|
-
}),
|
|
2780
|
+
organizationId: job.organizationId,
|
|
2781
|
+
projects: [],
|
|
2782
|
+
database: {
|
|
2783
|
+
...database,
|
|
2784
|
+
organizationId: job.organizationId
|
|
2785
|
+
},
|
|
2674
2786
|
env: {
|
|
2675
2787
|
...orgWorkspacesRuntimeEnv(organization, { containerEnv: process.env }),
|
|
2676
2788
|
...platformConfig.llmProxy?.workerEnv({
|
|
2677
2789
|
platformUrl: workerRuntime.platformUrl,
|
|
2678
|
-
workerToken: workerRuntime.workerToken
|
|
2679
|
-
projectId: project.id
|
|
2790
|
+
workerToken: workerRuntime.workerToken
|
|
2680
2791
|
}),
|
|
2681
2792
|
...platformConfig.sandboxProxy?.workerEnv({
|
|
2682
2793
|
platformUrl: workerRuntime.platformUrl,
|
|
2683
|
-
workerToken: workerRuntime.workerToken
|
|
2684
|
-
projectId: project.id
|
|
2794
|
+
workerToken: workerRuntime.workerToken
|
|
2685
2795
|
}),
|
|
2686
2796
|
...platformConfig.workerEnv?.({
|
|
2687
2797
|
platformUrl: workerRuntime.platformUrl,
|
|
2688
|
-
workerToken: workerRuntime.workerToken
|
|
2689
|
-
projectId: project.id
|
|
2798
|
+
workerToken: workerRuntime.workerToken
|
|
2690
2799
|
})
|
|
2691
2800
|
},
|
|
2692
2801
|
hosting: organization.hostingAppName ? { appName: organization.hostingAppName } : void 0,
|
|
2693
|
-
previousRuntimeId:
|
|
2802
|
+
previousRuntimeId: organization.runtimeId
|
|
2694
2803
|
};
|
|
2695
2804
|
} });
|
|
2696
2805
|
const webUrl = process.env.PUBLIC_WEB_URL;
|
|
@@ -2724,4 +2833,4 @@ async function startPlatformServer(platformConfig, hooks = {}) {
|
|
|
2724
2833
|
//#endregion
|
|
2725
2834
|
export { startPlatformServer as t };
|
|
2726
2835
|
|
|
2727
|
-
//# sourceMappingURL=start-
|
|
2836
|
+
//# sourceMappingURL=start-9_8ZcdaU.mjs.map
|