@keystrokehq/platform 0.1.117 → 0.1.119
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-Dvoy0Jo4.cjs → awk2-LA3USKJP-BW5gD7Ek.cjs} +2 -2
- package/dist/{awk2-LA3USKJP-Dvoy0Jo4.cjs.map → awk2-LA3USKJP-BW5gD7Ek.cjs.map} +1 -1
- package/dist/{awk2-LA3USKJP-DpvnYjX2.mjs → awk2-LA3USKJP-C_uJ9UTC.mjs} +2 -2
- package/dist/{awk2-LA3USKJP-DpvnYjX2.mjs.map → awk2-LA3USKJP-C_uJ9UTC.mjs.map} +1 -1
- package/dist/{base64-C2AIWVNC-CTQAdSG0.cjs → base64-C2AIWVNC-Deofn7Tz.cjs} +2 -2
- package/dist/{base64-C2AIWVNC-CTQAdSG0.cjs.map → base64-C2AIWVNC-Deofn7Tz.cjs.map} +1 -1
- package/dist/{base64-C2AIWVNC-DNibLND0.mjs → base64-C2AIWVNC-Dj_3ikno.mjs} +2 -2
- package/dist/{base64-C2AIWVNC-DNibLND0.mjs.map → base64-C2AIWVNC-Dj_3ikno.mjs.map} +1 -1
- package/dist/{bash-YZ33HQZQ-BBhsNCSj.mjs → bash-YZ33HQZQ-0OgzIjsV.mjs} +2 -2
- package/dist/{bash-YZ33HQZQ-BBhsNCSj.mjs.map → bash-YZ33HQZQ-0OgzIjsV.mjs.map} +1 -1
- package/dist/{bash-YZ33HQZQ-CqiP9-IN.cjs → bash-YZ33HQZQ-DiCTIB0C.cjs} +2 -2
- package/dist/{bash-YZ33HQZQ-CqiP9-IN.cjs.map → bash-YZ33HQZQ-DiCTIB0C.cjs.map} +1 -1
- package/dist/{cat-TSFMZVYS-CzLIxs_Y.mjs → cat-TSFMZVYS-19ZMdpAq.mjs} +3 -3
- package/dist/{cat-TSFMZVYS-CzLIxs_Y.mjs.map → cat-TSFMZVYS-19ZMdpAq.mjs.map} +1 -1
- package/dist/{cat-TSFMZVYS-BqA9dC8-.cjs → cat-TSFMZVYS-DPSpsOSF.cjs} +3 -3
- package/dist/{cat-TSFMZVYS-BqA9dC8-.cjs.map → cat-TSFMZVYS-DPSpsOSF.cjs.map} +1 -1
- package/dist/{chunk-5H5SCKJM-bwO1_x66.mjs → chunk-5H5SCKJM-DZPFrWS7.mjs} +2 -2
- package/dist/{chunk-5H5SCKJM-bwO1_x66.mjs.map → chunk-5H5SCKJM-DZPFrWS7.mjs.map} +1 -1
- package/dist/{chunk-5H5SCKJM-DbJ6QWgq.cjs → chunk-5H5SCKJM-mInR0aVw.cjs} +2 -2
- package/dist/{chunk-5H5SCKJM-DbJ6QWgq.cjs.map → chunk-5H5SCKJM-mInR0aVw.cjs.map} +1 -1
- package/dist/{chunk-AQ6FYS2X-dyvh_3_k.cjs → chunk-AQ6FYS2X-BSdtBwzs.cjs} +2 -2
- package/dist/{chunk-AQ6FYS2X-dyvh_3_k.cjs.map → chunk-AQ6FYS2X-BSdtBwzs.cjs.map} +1 -1
- package/dist/{chunk-AQ6FYS2X-BlpUjVwc.mjs → chunk-AQ6FYS2X-Z7TDlycS.mjs} +2 -2
- package/dist/{chunk-AQ6FYS2X-BlpUjVwc.mjs.map → chunk-AQ6FYS2X-Z7TDlycS.mjs.map} +1 -1
- package/dist/{chunk-CHFEPBH4-PkR6Rg7k.cjs → chunk-CHFEPBH4-34GTMZQg.cjs} +2 -2
- package/dist/{chunk-CHFEPBH4-PkR6Rg7k.cjs.map → chunk-CHFEPBH4-34GTMZQg.cjs.map} +1 -1
- package/dist/{chunk-CHFEPBH4-B3-VFcQl.mjs → chunk-CHFEPBH4-CAH6NdaH.mjs} +2 -2
- package/dist/{chunk-CHFEPBH4-B3-VFcQl.mjs.map → chunk-CHFEPBH4-CAH6NdaH.mjs.map} +1 -1
- package/dist/{chunk-EBAPSGAO-CB7OXdxC.mjs → chunk-EBAPSGAO-DkISHjdI.mjs} +2 -2
- package/dist/{chunk-EBAPSGAO-CB7OXdxC.mjs.map → chunk-EBAPSGAO-DkISHjdI.mjs.map} +1 -1
- package/dist/{chunk-EBAPSGAO-Crn54yub.cjs → chunk-EBAPSGAO-mqIfq_c1.cjs} +2 -2
- package/dist/{chunk-EBAPSGAO-Crn54yub.cjs.map → chunk-EBAPSGAO-mqIfq_c1.cjs.map} +1 -1
- package/dist/{chunk-LEKBROJD-B3cLm6oa.mjs → chunk-LEKBROJD-CSy2cC7R.mjs} +2 -2
- package/dist/{chunk-LEKBROJD-B3cLm6oa.mjs.map → chunk-LEKBROJD-CSy2cC7R.mjs.map} +1 -1
- package/dist/{chunk-LEKBROJD-BAKGB8s6.cjs → chunk-LEKBROJD-D44MqVtt.cjs} +2 -2
- package/dist/{chunk-LEKBROJD-BAKGB8s6.cjs.map → chunk-LEKBROJD-D44MqVtt.cjs.map} +1 -1
- package/dist/{chunk-VPADYNBD-BuWaBJwi.cjs → chunk-VPADYNBD-DNBSUueR.cjs} +2 -2
- package/dist/{chunk-VPADYNBD-BuWaBJwi.cjs.map → chunk-VPADYNBD-DNBSUueR.cjs.map} +1 -1
- package/dist/{chunk-VPADYNBD-B902D9e8.mjs → chunk-VPADYNBD-l5-X8hMy.mjs} +2 -2
- package/dist/{chunk-VPADYNBD-B902D9e8.mjs.map → chunk-VPADYNBD-l5-X8hMy.mjs.map} +1 -1
- package/dist/{chunk-YCLFEX4T-Dn4vKiDg.cjs → chunk-YCLFEX4T-CMZ-flBc.cjs} +2 -2
- package/dist/{chunk-YCLFEX4T-Dn4vKiDg.cjs.map → chunk-YCLFEX4T-CMZ-flBc.cjs.map} +1 -1
- package/dist/{chunk-YCLFEX4T-LIwTH9SY.mjs → chunk-YCLFEX4T-uJ2V8d7w.mjs} +2 -2
- package/dist/{chunk-YCLFEX4T-LIwTH9SY.mjs.map → chunk-YCLFEX4T-uJ2V8d7w.mjs.map} +1 -1
- package/dist/{column-XT6UFXNQ-kaZr3ck1.mjs → column-XT6UFXNQ-B8k4MbkY.mjs} +2 -2
- package/dist/{column-XT6UFXNQ-kaZr3ck1.mjs.map → column-XT6UFXNQ-B8k4MbkY.mjs.map} +1 -1
- package/dist/{column-XT6UFXNQ-Boj04bYt.cjs → column-XT6UFXNQ-DqZnm5qa.cjs} +2 -2
- package/dist/{column-XT6UFXNQ-Boj04bYt.cjs.map → column-XT6UFXNQ-DqZnm5qa.cjs.map} +1 -1
- package/dist/{comm-VV2LDX2J-BcfPIK9n.mjs → comm-VV2LDX2J-C3W7A-jn.mjs} +2 -2
- package/dist/{comm-VV2LDX2J-BcfPIK9n.mjs.map → comm-VV2LDX2J-C3W7A-jn.mjs.map} +1 -1
- package/dist/{comm-VV2LDX2J-DgVwT105.cjs → comm-VV2LDX2J-CR1wbzGf.cjs} +2 -2
- package/dist/{comm-VV2LDX2J-DgVwT105.cjs.map → comm-VV2LDX2J-CR1wbzGf.cjs.map} +1 -1
- package/dist/config.cjs +2 -2
- package/dist/config.mjs +2 -2
- package/dist/{cp-BISAAS7A-Bcf_ba9y.cjs → cp-BISAAS7A-CEFW3zU-.cjs} +2 -2
- package/dist/{cp-BISAAS7A-Bcf_ba9y.cjs.map → cp-BISAAS7A-CEFW3zU-.cjs.map} +1 -1
- package/dist/{cp-BISAAS7A-D85tMW1Y.mjs → cp-BISAAS7A-aP1UYqJd.mjs} +2 -2
- package/dist/{cp-BISAAS7A-D85tMW1Y.mjs.map → cp-BISAAS7A-aP1UYqJd.mjs.map} +1 -1
- package/dist/{cut-OKARJCCV-B1JE4QQ8.mjs → cut-OKARJCCV-DfCVAblN.mjs} +3 -3
- package/dist/{cut-OKARJCCV-B1JE4QQ8.mjs.map → cut-OKARJCCV-DfCVAblN.mjs.map} +1 -1
- package/dist/{cut-OKARJCCV-JizvZoF6.cjs → cut-OKARJCCV-YbUZRW2m.cjs} +3 -3
- package/dist/{cut-OKARJCCV-JizvZoF6.cjs.map → cut-OKARJCCV-YbUZRW2m.cjs.map} +1 -1
- package/dist/{diff-MWJFIG7X-DNpSNYB2.mjs → diff-MWJFIG7X-Db23ZFvu.mjs} +2 -2
- package/dist/{diff-MWJFIG7X-DNpSNYB2.mjs.map → diff-MWJFIG7X-Db23ZFvu.mjs.map} +1 -1
- package/dist/{diff-MWJFIG7X-BMYp-iAk.cjs → diff-MWJFIG7X-uzFU7vBr.cjs} +2 -2
- package/dist/{diff-MWJFIG7X-BMYp-iAk.cjs.map → diff-MWJFIG7X-uzFU7vBr.cjs.map} +1 -1
- package/dist/{dist-Cj3RPKwD.mjs → dist-B2lPLfrR.mjs} +415 -158
- package/dist/dist-B2lPLfrR.mjs.map +1 -0
- package/dist/{dist-AKkRwuhE.cjs → dist-CkBSbX2_.cjs} +414 -157
- package/dist/dist-CkBSbX2_.cjs.map +1 -0
- package/dist/{dist-D7eFCDTR.mjs → dist-D_ICFiVc.mjs} +21 -4
- package/dist/dist-D_ICFiVc.mjs.map +1 -0
- package/dist/{dist-bLC4LOvt.cjs → dist-QS2Dafen.cjs} +21 -4
- package/dist/dist-QS2Dafen.cjs.map +1 -0
- package/dist/{du-572XNP42-BwvbhLB4.mjs → du-572XNP42-B724WDI9.mjs} +2 -2
- package/dist/{du-572XNP42-BwvbhLB4.mjs.map → du-572XNP42-B724WDI9.mjs.map} +1 -1
- package/dist/{du-572XNP42-tSkGjDhu.cjs → du-572XNP42-CX6RDfLF.cjs} +2 -2
- package/dist/{du-572XNP42-tSkGjDhu.cjs.map → du-572XNP42-CX6RDfLF.cjs.map} +1 -1
- package/dist/{env-36M5BO7M-ClR8f-u_.mjs → env-36M5BO7M-BLMWIQAH.mjs} +2 -2
- package/dist/{env-36M5BO7M-ClR8f-u_.mjs.map → env-36M5BO7M-BLMWIQAH.mjs.map} +1 -1
- package/dist/{env-36M5BO7M-BwKubobQ.cjs → env-36M5BO7M-okDipi6p.cjs} +2 -2
- package/dist/{env-36M5BO7M-BwKubobQ.cjs.map → env-36M5BO7M-okDipi6p.cjs.map} +1 -1
- package/dist/{expand-JSPG6VOP-BeHkk5Oo.cjs → expand-JSPG6VOP-BRdJhhzq.cjs} +2 -2
- package/dist/{expand-JSPG6VOP-BeHkk5Oo.cjs.map → expand-JSPG6VOP-BRdJhhzq.cjs.map} +1 -1
- package/dist/{expand-JSPG6VOP-BWU9TNYW.mjs → expand-JSPG6VOP-DUj7F9Cu.mjs} +2 -2
- package/dist/{expand-JSPG6VOP-BWU9TNYW.mjs.map → expand-JSPG6VOP-DUj7F9Cu.mjs.map} +1 -1
- package/dist/{expr-5JAACS4X-DjCkxQwm.mjs → expr-5JAACS4X-CfrWhuNY.mjs} +2 -2
- package/dist/{expr-5JAACS4X-DjCkxQwm.mjs.map → expr-5JAACS4X-CfrWhuNY.mjs.map} +1 -1
- package/dist/{expr-5JAACS4X-CuMpHcmU.cjs → expr-5JAACS4X-XEZLTHHs.cjs} +2 -2
- package/dist/{expr-5JAACS4X-CuMpHcmU.cjs.map → expr-5JAACS4X-XEZLTHHs.cjs.map} +1 -1
- package/dist/{find-INTH3OLC-CGo48GJL.cjs → find-INTH3OLC-ChUCh5M0.cjs} +3 -3
- package/dist/{find-INTH3OLC-CGo48GJL.cjs.map → find-INTH3OLC-ChUCh5M0.cjs.map} +1 -1
- package/dist/{find-INTH3OLC-ANEYvUZg.mjs → find-INTH3OLC-CxFHfo_D.mjs} +3 -3
- package/dist/{find-INTH3OLC-ANEYvUZg.mjs.map → find-INTH3OLC-CxFHfo_D.mjs.map} +1 -1
- package/dist/{fold-4TQNYMSW-BmpYm0H1.mjs → fold-4TQNYMSW-B8TGVC7j.mjs} +2 -2
- package/dist/{fold-4TQNYMSW-BmpYm0H1.mjs.map → fold-4TQNYMSW-B8TGVC7j.mjs.map} +1 -1
- package/dist/{fold-4TQNYMSW-C8GWRkk8.cjs → fold-4TQNYMSW-D5LbDNK2.cjs} +2 -2
- package/dist/{fold-4TQNYMSW-C8GWRkk8.cjs.map → fold-4TQNYMSW-D5LbDNK2.cjs.map} +1 -1
- package/dist/{grep-V3LQVMRQ-FFO9h2h8.mjs → grep-V3LQVMRQ-DN1wiZly.mjs} +4 -4
- package/dist/{grep-V3LQVMRQ-FFO9h2h8.mjs.map → grep-V3LQVMRQ-DN1wiZly.mjs.map} +1 -1
- package/dist/{grep-V3LQVMRQ-9V45Njd7.cjs → grep-V3LQVMRQ-WVUeOxin.cjs} +4 -4
- package/dist/{grep-V3LQVMRQ-9V45Njd7.cjs.map → grep-V3LQVMRQ-WVUeOxin.cjs.map} +1 -1
- package/dist/{gzip-O5ASJAFY-CRDFlLbr.mjs → gzip-O5ASJAFY-C7v6CBdm.mjs} +2 -2
- package/dist/{gzip-O5ASJAFY-CRDFlLbr.mjs.map → gzip-O5ASJAFY-C7v6CBdm.mjs.map} +1 -1
- package/dist/{gzip-O5ASJAFY-B43NZFRO.cjs → gzip-O5ASJAFY-DFGo8ssh.cjs} +2 -2
- package/dist/{gzip-O5ASJAFY-B43NZFRO.cjs.map → gzip-O5ASJAFY-DFGo8ssh.cjs.map} +1 -1
- package/dist/{head-442HYESI-CXxOStnC.mjs → head-442HYESI-DYhCEt04.mjs} +2 -2
- package/dist/{head-442HYESI-CXxOStnC.mjs.map → head-442HYESI-DYhCEt04.mjs.map} +1 -1
- package/dist/{head-442HYESI-CmVujDWk.cjs → head-442HYESI-oqGD9fkS.cjs} +2 -2
- package/dist/{head-442HYESI-CmVujDWk.cjs.map → head-442HYESI-oqGD9fkS.cjs.map} +1 -1
- package/dist/{help-HZ6M2CKN-DO23r8PQ.cjs → help-HZ6M2CKN-CQnNa3uh.cjs} +2 -2
- package/dist/{help-HZ6M2CKN-DO23r8PQ.cjs.map → help-HZ6M2CKN-CQnNa3uh.cjs.map} +1 -1
- package/dist/{help-HZ6M2CKN-_fBE8i_X.mjs → help-HZ6M2CKN-WHmZpsJe.mjs} +2 -2
- package/dist/{help-HZ6M2CKN-_fBE8i_X.mjs.map → help-HZ6M2CKN-WHmZpsJe.mjs.map} +1 -1
- package/dist/{html-to-markdown-JW4MSQZO-CaYVbaxu.cjs → html-to-markdown-JW4MSQZO-BRaey0zy.cjs} +3 -3
- package/dist/{html-to-markdown-JW4MSQZO-CaYVbaxu.cjs.map → html-to-markdown-JW4MSQZO-BRaey0zy.cjs.map} +1 -1
- package/dist/{html-to-markdown-JW4MSQZO-B_ZXZPwG.mjs → html-to-markdown-JW4MSQZO-CezmhFZv.mjs} +3 -3
- package/dist/{html-to-markdown-JW4MSQZO-B_ZXZPwG.mjs.map → html-to-markdown-JW4MSQZO-CezmhFZv.mjs.map} +1 -1
- package/dist/internal.cjs +1 -1
- package/dist/internal.mjs +1 -1
- package/dist/{join-TBRGI3LQ-BKh_m7Ck.cjs → join-TBRGI3LQ-DGC98Vff.cjs} +2 -2
- package/dist/{join-TBRGI3LQ-BKh_m7Ck.cjs.map → join-TBRGI3LQ-DGC98Vff.cjs.map} +1 -1
- package/dist/{join-TBRGI3LQ-Bryan1uc.mjs → join-TBRGI3LQ-DavcUkrI.mjs} +2 -2
- package/dist/{join-TBRGI3LQ-Bryan1uc.mjs.map → join-TBRGI3LQ-DavcUkrI.mjs.map} +1 -1
- package/dist/{jq-4XLYLOS5-DlA0DGTU.mjs → jq-4XLYLOS5-BIRMGhL2.mjs} +4 -4
- package/dist/{jq-4XLYLOS5-DlA0DGTU.mjs.map → jq-4XLYLOS5-BIRMGhL2.mjs.map} +1 -1
- package/dist/{jq-4XLYLOS5-BxFW6--8.cjs → jq-4XLYLOS5-DwHcJv8h.cjs} +4 -4
- package/dist/{jq-4XLYLOS5-BxFW6--8.cjs.map → jq-4XLYLOS5-DwHcJv8h.cjs.map} +1 -1
- package/dist/{js-exec-N5KEZBH7-hTtZY8cm.cjs → js-exec-N5KEZBH7-BfEgJ3O-.cjs} +3 -3
- package/dist/{js-exec-N5KEZBH7-hTtZY8cm.cjs.map → js-exec-N5KEZBH7-BfEgJ3O-.cjs.map} +1 -1
- package/dist/{js-exec-N5KEZBH7-1jBR3z1f.mjs → js-exec-N5KEZBH7-CENniwUd.mjs} +3 -3
- package/dist/{js-exec-N5KEZBH7-1jBR3z1f.mjs.map → js-exec-N5KEZBH7-CENniwUd.mjs.map} +1 -1
- package/dist/{lib-DLNAr9hM.mjs → lib-r4uXvKzY.mjs} +2 -2
- package/dist/{lib-DLNAr9hM.mjs.map → lib-r4uXvKzY.mjs.map} +1 -1
- package/dist/{lib-DEuFQ8jW.cjs → lib-s1Tq9Ck6.cjs} +2 -2
- package/dist/{lib-DEuFQ8jW.cjs.map → lib-s1Tq9Ck6.cjs.map} +1 -1
- package/dist/{ln-4LGSXXGD-DoMwqtWM.mjs → ln-4LGSXXGD-Bm1sddvE.mjs} +2 -2
- package/dist/{ln-4LGSXXGD-DoMwqtWM.mjs.map → ln-4LGSXXGD-Bm1sddvE.mjs.map} +1 -1
- package/dist/{ln-4LGSXXGD-DZ20jRcK.cjs → ln-4LGSXXGD-C2-zvnH-.cjs} +2 -2
- package/dist/{ln-4LGSXXGD-DZ20jRcK.cjs.map → ln-4LGSXXGD-C2-zvnH-.cjs.map} +1 -1
- package/dist/{ls-ZJGQER7M-B5gaVKxE.mjs → ls-ZJGQER7M-EzhpSJMB.mjs} +2 -2
- package/dist/{ls-ZJGQER7M-B5gaVKxE.mjs.map → ls-ZJGQER7M-EzhpSJMB.mjs.map} +1 -1
- package/dist/{ls-ZJGQER7M-Dethi67D.cjs → ls-ZJGQER7M-Kk7mhuiM.cjs} +2 -2
- package/dist/{ls-ZJGQER7M-Dethi67D.cjs.map → ls-ZJGQER7M-Kk7mhuiM.cjs.map} +1 -1
- package/dist/{lzma-O8OSBX-9.cjs → lzma-Bss45nA5.cjs} +2 -2
- package/dist/{lzma-O8OSBX-9.cjs.map → lzma-Bss45nA5.cjs.map} +1 -1
- package/dist/{md5sum-SPU24VSG-Dh6HTP0G.cjs → md5sum-SPU24VSG-DpKxsaMc.cjs} +3 -3
- package/dist/{md5sum-SPU24VSG-Dh6HTP0G.cjs.map → md5sum-SPU24VSG-DpKxsaMc.cjs.map} +1 -1
- package/dist/{md5sum-SPU24VSG-CAE_-OrT.mjs → md5sum-SPU24VSG-DuY3W47X.mjs} +3 -3
- package/dist/{md5sum-SPU24VSG-CAE_-OrT.mjs.map → md5sum-SPU24VSG-DuY3W47X.mjs.map} +1 -1
- package/dist/{mkdir-MEPGZOB6-BaXX8tym.mjs → mkdir-MEPGZOB6-B54I-co9.mjs} +2 -2
- package/dist/{mkdir-MEPGZOB6-BaXX8tym.mjs.map → mkdir-MEPGZOB6-B54I-co9.mjs.map} +1 -1
- package/dist/{mkdir-MEPGZOB6-D5whvinj.cjs → mkdir-MEPGZOB6-CQG6PmsH.cjs} +2 -2
- package/dist/{mkdir-MEPGZOB6-D5whvinj.cjs.map → mkdir-MEPGZOB6-CQG6PmsH.cjs.map} +1 -1
- package/dist/{mv-W5BIQ646-CwWkCaw1.mjs → mv-W5BIQ646-BOGImyXG.mjs} +2 -2
- package/dist/{mv-W5BIQ646-CwWkCaw1.mjs.map → mv-W5BIQ646-BOGImyXG.mjs.map} +1 -1
- package/dist/{mv-W5BIQ646-Bkt3Wkxb.cjs → mv-W5BIQ646-W82Guf5l.cjs} +2 -2
- package/dist/{mv-W5BIQ646-Bkt3Wkxb.cjs.map → mv-W5BIQ646-W82Guf5l.cjs.map} +1 -1
- package/dist/{nl-WSDW7I4O-DKNWPtTC.mjs → nl-WSDW7I4O-C5Tn3qyh.mjs} +2 -2
- package/dist/{nl-WSDW7I4O-DKNWPtTC.mjs.map → nl-WSDW7I4O-C5Tn3qyh.mjs.map} +1 -1
- package/dist/{nl-WSDW7I4O-DgLzrg9w.cjs → nl-WSDW7I4O-DHCupEKS.cjs} +2 -2
- package/dist/{nl-WSDW7I4O-DgLzrg9w.cjs.map → nl-WSDW7I4O-DHCupEKS.cjs.map} +1 -1
- package/dist/{od-WOKFDJTP-8pORtSkj.cjs → od-WOKFDJTP-CQQETIge.cjs} +2 -2
- package/dist/{od-WOKFDJTP-8pORtSkj.cjs.map → od-WOKFDJTP-CQQETIge.cjs.map} +1 -1
- package/dist/{od-WOKFDJTP-Ci-7AUKD.mjs → od-WOKFDJTP-Dhall4HD.mjs} +2 -2
- package/dist/{od-WOKFDJTP-Ci-7AUKD.mjs.map → od-WOKFDJTP-Dhall4HD.mjs.map} +1 -1
- package/dist/{paste-7JC6S4DX-By-QZFhH.mjs → paste-7JC6S4DX-CQu-heii.mjs} +2 -2
- package/dist/{paste-7JC6S4DX-By-QZFhH.mjs.map → paste-7JC6S4DX-CQu-heii.mjs.map} +1 -1
- package/dist/{paste-7JC6S4DX-CcluY3SW.cjs → paste-7JC6S4DX-DRUvmKbL.cjs} +2 -2
- package/dist/{paste-7JC6S4DX-CcluY3SW.cjs.map → paste-7JC6S4DX-DRUvmKbL.cjs.map} +1 -1
- package/dist/{printf-TWGXF445-B2JFcHkJ.cjs → printf-TWGXF445-BL70_Mu8.cjs} +3 -3
- package/dist/{printf-TWGXF445-B2JFcHkJ.cjs.map → printf-TWGXF445-BL70_Mu8.cjs.map} +1 -1
- package/dist/{printf-TWGXF445-BIL2LikJ.mjs → printf-TWGXF445-Dt9gKujx.mjs} +3 -3
- package/dist/{printf-TWGXF445-BIL2LikJ.mjs.map → printf-TWGXF445-Dt9gKujx.mjs.map} +1 -1
- package/dist/{python3-POMOR4OA-CRUFjgTB.mjs → python3-POMOR4OA-CudEUuqu.mjs} +3 -3
- package/dist/{python3-POMOR4OA-CRUFjgTB.mjs.map → python3-POMOR4OA-CudEUuqu.mjs.map} +1 -1
- package/dist/{python3-POMOR4OA-Bn9o5xa_.cjs → python3-POMOR4OA-k99Mukqm.cjs} +3 -3
- package/dist/{python3-POMOR4OA-Bn9o5xa_.cjs.map → python3-POMOR4OA-k99Mukqm.cjs.map} +1 -1
- package/dist/{rev-5EHFX4EJ-DupNIGct.cjs → rev-5EHFX4EJ-BncrTaPe.cjs} +2 -2
- package/dist/{rev-5EHFX4EJ-DupNIGct.cjs.map → rev-5EHFX4EJ-BncrTaPe.cjs.map} +1 -1
- package/dist/{rev-5EHFX4EJ-CVOJJds6.mjs → rev-5EHFX4EJ-Da-_OtYp.mjs} +2 -2
- package/dist/{rev-5EHFX4EJ-CVOJJds6.mjs.map → rev-5EHFX4EJ-Da-_OtYp.mjs.map} +1 -1
- package/dist/{rg-S4FXYXWB-CezCFXCC.mjs → rg-S4FXYXWB-DpNsd4K9.mjs} +3 -3
- package/dist/{rg-S4FXYXWB-CezCFXCC.mjs.map → rg-S4FXYXWB-DpNsd4K9.mjs.map} +1 -1
- package/dist/{rg-S4FXYXWB-DT3iZWlx.cjs → rg-S4FXYXWB-k-o32NUm.cjs} +3 -3
- package/dist/{rg-S4FXYXWB-DT3iZWlx.cjs.map → rg-S4FXYXWB-k-o32NUm.cjs.map} +1 -1
- package/dist/{rm-SSGETQVQ-Dpw1qQmO.cjs → rm-SSGETQVQ-BdEQdiqA.cjs} +2 -2
- package/dist/{rm-SSGETQVQ-Dpw1qQmO.cjs.map → rm-SSGETQVQ-BdEQdiqA.cjs.map} +1 -1
- package/dist/{rm-SSGETQVQ-DamSzyVi.mjs → rm-SSGETQVQ-D3OzLKaR.mjs} +2 -2
- package/dist/{rm-SSGETQVQ-DamSzyVi.mjs.map → rm-SSGETQVQ-D3OzLKaR.mjs.map} +1 -1
- package/dist/{rmdir-OC4ZLPYA-BgRhHhqc.cjs → rmdir-OC4ZLPYA-CwNexp-K.cjs} +2 -2
- package/dist/{rmdir-OC4ZLPYA-BgRhHhqc.cjs.map → rmdir-OC4ZLPYA-CwNexp-K.cjs.map} +1 -1
- package/dist/{rmdir-OC4ZLPYA-CjhUuzYY.mjs → rmdir-OC4ZLPYA-Vs8pjIJ4.mjs} +2 -2
- package/dist/{rmdir-OC4ZLPYA-CjhUuzYY.mjs.map → rmdir-OC4ZLPYA-Vs8pjIJ4.mjs.map} +1 -1
- package/dist/run.cjs +1 -1
- package/dist/run.mjs +1 -1
- package/dist/{sed-S5UIK574-CAB4O14o.cjs → sed-S5UIK574-CmYMd5gV.cjs} +2 -2
- package/dist/{sed-S5UIK574-CAB4O14o.cjs.map → sed-S5UIK574-CmYMd5gV.cjs.map} +1 -1
- package/dist/{sed-S5UIK574-W9sjT6JH.mjs → sed-S5UIK574-DyJHugnM.mjs} +2 -2
- package/dist/{sed-S5UIK574-W9sjT6JH.mjs.map → sed-S5UIK574-DyJHugnM.mjs.map} +1 -1
- package/dist/{sha1sum-2PTOAFR6-CjO1AnCs.mjs → sha1sum-2PTOAFR6-BNMNnH4a.mjs} +3 -3
- package/dist/{sha1sum-2PTOAFR6-CjO1AnCs.mjs.map → sha1sum-2PTOAFR6-BNMNnH4a.mjs.map} +1 -1
- package/dist/{sha1sum-2PTOAFR6-CQXvW7hE.cjs → sha1sum-2PTOAFR6-CHkmBbuF.cjs} +3 -3
- package/dist/{sha1sum-2PTOAFR6-CQXvW7hE.cjs.map → sha1sum-2PTOAFR6-CHkmBbuF.cjs.map} +1 -1
- package/dist/{sha256sum-NS7D3IXX-CfwCHZAO.cjs → sha256sum-NS7D3IXX-D8Ows_EQ.cjs} +3 -3
- package/dist/{sha256sum-NS7D3IXX-CfwCHZAO.cjs.map → sha256sum-NS7D3IXX-D8Ows_EQ.cjs.map} +1 -1
- package/dist/{sha256sum-NS7D3IXX-CUL2cnM9.mjs → sha256sum-NS7D3IXX-DCiObRGK.mjs} +3 -3
- package/dist/{sha256sum-NS7D3IXX-CUL2cnM9.mjs.map → sha256sum-NS7D3IXX-DCiObRGK.mjs.map} +1 -1
- package/dist/{sleep-X22JJINO-DterE54A.mjs → sleep-X22JJINO-DCiATAgx.mjs} +2 -2
- package/dist/{sleep-X22JJINO-DterE54A.mjs.map → sleep-X22JJINO-DCiATAgx.mjs.map} +1 -1
- package/dist/{sleep-X22JJINO-f7XVUQXn.cjs → sleep-X22JJINO-DgywhtkX.cjs} +2 -2
- package/dist/{sleep-X22JJINO-f7XVUQXn.cjs.map → sleep-X22JJINO-DgywhtkX.cjs.map} +1 -1
- package/dist/{sort-SW2YEO5B-Bwsz5nWP.mjs → sort-SW2YEO5B-BIld1500.mjs} +3 -3
- package/dist/{sort-SW2YEO5B-Bwsz5nWP.mjs.map → sort-SW2YEO5B-BIld1500.mjs.map} +1 -1
- package/dist/{sort-SW2YEO5B-CxI3IB8r.cjs → sort-SW2YEO5B-K29bZEkt.cjs} +3 -3
- package/dist/{sort-SW2YEO5B-CxI3IB8r.cjs.map → sort-SW2YEO5B-K29bZEkt.cjs.map} +1 -1
- package/dist/{split-4KKZZXXE-CbYicfn8.cjs → split-4KKZZXXE-C2sHnk6E.cjs} +2 -2
- package/dist/{split-4KKZZXXE-CbYicfn8.cjs.map → split-4KKZZXXE-C2sHnk6E.cjs.map} +1 -1
- package/dist/{split-4KKZZXXE-CSlaFM2x.mjs → split-4KKZZXXE-C682TL18.mjs} +2 -2
- package/dist/{split-4KKZZXXE-CSlaFM2x.mjs.map → split-4KKZZXXE-C682TL18.mjs.map} +1 -1
- package/dist/{sqlite3-CGOEFJAO-c1BPhcI3.mjs → sqlite3-CGOEFJAO-BCIPkSxm.mjs} +3 -3
- package/dist/{sqlite3-CGOEFJAO-c1BPhcI3.mjs.map → sqlite3-CGOEFJAO-BCIPkSxm.mjs.map} +1 -1
- package/dist/{sqlite3-CGOEFJAO-ZWNmR0V9.cjs → sqlite3-CGOEFJAO-Dh0oqw-k.cjs} +3 -3
- package/dist/{sqlite3-CGOEFJAO-ZWNmR0V9.cjs.map → sqlite3-CGOEFJAO-Dh0oqw-k.cjs.map} +1 -1
- package/dist/{start-CKxh9Ozm.mjs → start-C8A5Y1es.mjs} +180 -124
- package/dist/start-C8A5Y1es.mjs.map +1 -0
- package/dist/{start-MBSz5HQb.cjs → start-DcC-zxF1.cjs} +180 -124
- package/dist/start-DcC-zxF1.cjs.map +1 -0
- package/dist/start.cjs +1 -1
- package/dist/start.mjs +1 -1
- package/dist/{strings-6WDHLGMX-DiYPNtXb.mjs → strings-6WDHLGMX-DfgljZYU.mjs} +2 -2
- package/dist/{strings-6WDHLGMX-DiYPNtXb.mjs.map → strings-6WDHLGMX-DfgljZYU.mjs.map} +1 -1
- package/dist/{strings-6WDHLGMX-BdetudYk.cjs → strings-6WDHLGMX-DljwAIWz.cjs} +2 -2
- package/dist/{strings-6WDHLGMX-BdetudYk.cjs.map → strings-6WDHLGMX-DljwAIWz.cjs.map} +1 -1
- package/dist/{tac-2STMMJYW-B7OoWT_U.mjs → tac-2STMMJYW-B3AcXTdf.mjs} +2 -2
- package/dist/{tac-2STMMJYW-B7OoWT_U.mjs.map → tac-2STMMJYW-B3AcXTdf.mjs.map} +1 -1
- package/dist/{tac-2STMMJYW-BSY6Cwj8.cjs → tac-2STMMJYW-BnVw01dK.cjs} +2 -2
- package/dist/{tac-2STMMJYW-BSY6Cwj8.cjs.map → tac-2STMMJYW-BnVw01dK.cjs.map} +1 -1
- package/dist/{tail-R4PCA2C4-DjxLbbV-.cjs → tail-R4PCA2C4-8A3op41b.cjs} +2 -2
- package/dist/{tail-R4PCA2C4-DjxLbbV-.cjs.map → tail-R4PCA2C4-8A3op41b.cjs.map} +1 -1
- package/dist/{tail-R4PCA2C4-CLN95T7S.mjs → tail-R4PCA2C4-BrONSl6R.mjs} +2 -2
- package/dist/{tail-R4PCA2C4-CLN95T7S.mjs.map → tail-R4PCA2C4-BrONSl6R.mjs.map} +1 -1
- package/dist/{tar-STHHZTZ6-DF-n62Vs.mjs → tar-STHHZTZ6-BAXlUOR5.mjs} +4 -4
- package/dist/{tar-STHHZTZ6-DF-n62Vs.mjs.map → tar-STHHZTZ6-BAXlUOR5.mjs.map} +1 -1
- package/dist/{tar-STHHZTZ6-DvB6AkG2.cjs → tar-STHHZTZ6-DIkfQzE0.cjs} +5 -5
- package/dist/{tar-STHHZTZ6-DvB6AkG2.cjs.map → tar-STHHZTZ6-DIkfQzE0.cjs.map} +1 -1
- package/dist/{tee-YUZ2FKCJ-CksTNads.cjs → tee-YUZ2FKCJ-BkwF9rxX.cjs} +2 -2
- package/dist/{tee-YUZ2FKCJ-CksTNads.cjs.map → tee-YUZ2FKCJ-BkwF9rxX.cjs.map} +1 -1
- package/dist/{tee-YUZ2FKCJ-_l9qTJch.mjs → tee-YUZ2FKCJ-DBlSS73M.mjs} +2 -2
- package/dist/{tee-YUZ2FKCJ-_l9qTJch.mjs.map → tee-YUZ2FKCJ-DBlSS73M.mjs.map} +1 -1
- package/dist/{time-D4LNBSWX-40_1kPdP.mjs → time-D4LNBSWX-7MVmAtQo.mjs} +2 -2
- package/dist/{time-D4LNBSWX-40_1kPdP.mjs.map → time-D4LNBSWX-7MVmAtQo.mjs.map} +1 -1
- package/dist/{time-D4LNBSWX-DiI0vjvV.cjs → time-D4LNBSWX-alYfSUdv.cjs} +2 -2
- package/dist/{time-D4LNBSWX-DiI0vjvV.cjs.map → time-D4LNBSWX-alYfSUdv.cjs.map} +1 -1
- package/dist/{timeout-YDCRSLPQ-cmqLQn-O.cjs → timeout-YDCRSLPQ-D7uw71ZK.cjs} +2 -2
- package/dist/{timeout-YDCRSLPQ-cmqLQn-O.cjs.map → timeout-YDCRSLPQ-D7uw71ZK.cjs.map} +1 -1
- package/dist/{timeout-YDCRSLPQ-CUgf7efV.mjs → timeout-YDCRSLPQ-V4Gc33PA.mjs} +2 -2
- package/dist/{timeout-YDCRSLPQ-CUgf7efV.mjs.map → timeout-YDCRSLPQ-V4Gc33PA.mjs.map} +1 -1
- package/dist/{touch-UA33VN3N-02vOLkJx.mjs → touch-UA33VN3N-BvdCDNvh.mjs} +2 -2
- package/dist/{touch-UA33VN3N-02vOLkJx.mjs.map → touch-UA33VN3N-BvdCDNvh.mjs.map} +1 -1
- package/dist/{touch-UA33VN3N-B3rLDkVA.cjs → touch-UA33VN3N-rmsOL84Q.cjs} +2 -2
- package/dist/{touch-UA33VN3N-B3rLDkVA.cjs.map → touch-UA33VN3N-rmsOL84Q.cjs.map} +1 -1
- package/dist/{tr-36LHWFRQ-BfGf2mLy.cjs → tr-36LHWFRQ-D672NK0o.cjs} +2 -2
- package/dist/{tr-36LHWFRQ-BfGf2mLy.cjs.map → tr-36LHWFRQ-D672NK0o.cjs.map} +1 -1
- package/dist/{tr-36LHWFRQ-BwnDmJhv.mjs → tr-36LHWFRQ-DQL-CWbQ.mjs} +2 -2
- package/dist/{tr-36LHWFRQ-BwnDmJhv.mjs.map → tr-36LHWFRQ-DQL-CWbQ.mjs.map} +1 -1
- package/dist/{tree-YLD52CNT-B3eXfjPn.cjs → tree-YLD52CNT-B9MlNWhD.cjs} +2 -2
- package/dist/{tree-YLD52CNT-B3eXfjPn.cjs.map → tree-YLD52CNT-B9MlNWhD.cjs.map} +1 -1
- package/dist/{tree-YLD52CNT-DqLUz109.mjs → tree-YLD52CNT-LmR2Tdyi.mjs} +2 -2
- package/dist/{tree-YLD52CNT-DqLUz109.mjs.map → tree-YLD52CNT-LmR2Tdyi.mjs.map} +1 -1
- package/dist/{unexpand-CADSA4VO-VlwyRCQP.mjs → unexpand-CADSA4VO-BlcDiLij.mjs} +2 -2
- package/dist/{unexpand-CADSA4VO-VlwyRCQP.mjs.map → unexpand-CADSA4VO-BlcDiLij.mjs.map} +1 -1
- package/dist/{unexpand-CADSA4VO-CdhtwV2v.cjs → unexpand-CADSA4VO-DHAAlelL.cjs} +2 -2
- package/dist/{unexpand-CADSA4VO-CdhtwV2v.cjs.map → unexpand-CADSA4VO-DHAAlelL.cjs.map} +1 -1
- package/dist/{uniq-XSIZR6PB-DAXqaH8E.mjs → uniq-XSIZR6PB-3tHE1GmH.mjs} +3 -3
- package/dist/{uniq-XSIZR6PB-DAXqaH8E.mjs.map → uniq-XSIZR6PB-3tHE1GmH.mjs.map} +1 -1
- package/dist/{uniq-XSIZR6PB-Ch7QSVAZ.cjs → uniq-XSIZR6PB-DEfJnyaW.cjs} +3 -3
- package/dist/{uniq-XSIZR6PB-Ch7QSVAZ.cjs.map → uniq-XSIZR6PB-DEfJnyaW.cjs.map} +1 -1
- package/dist/{wc-LF7NU4LA-Ny3uANGM.cjs → wc-LF7NU4LA-DMBDVHsS.cjs} +3 -3
- package/dist/{wc-LF7NU4LA-Ny3uANGM.cjs.map → wc-LF7NU4LA-DMBDVHsS.cjs.map} +1 -1
- package/dist/{wc-LF7NU4LA-Q1EAygpb.mjs → wc-LF7NU4LA-DRj3yyc9.mjs} +3 -3
- package/dist/{wc-LF7NU4LA-Q1EAygpb.mjs.map → wc-LF7NU4LA-DRj3yyc9.mjs.map} +1 -1
- package/dist/{with-project-scope-BqDYOg9O.mjs → with-project-scope-DkQ6P3hm.mjs} +2 -2
- package/dist/{with-project-scope-BqDYOg9O.mjs.map → with-project-scope-DkQ6P3hm.mjs.map} +1 -1
- package/dist/{with-project-scope-CYWdNoND.cjs → with-project-scope-DtpKIH7m.cjs} +2 -2
- package/dist/{with-project-scope-CYWdNoND.cjs.map → with-project-scope-DtpKIH7m.cjs.map} +1 -1
- package/dist/{xan-Y6WF3IRG-unqwcLj2.mjs → xan-Y6WF3IRG-Bk9GoBFW.mjs} +6 -6
- package/dist/{xan-Y6WF3IRG-unqwcLj2.mjs.map → xan-Y6WF3IRG-Bk9GoBFW.mjs.map} +1 -1
- package/dist/{xan-Y6WF3IRG-QiEtoTG4.cjs → xan-Y6WF3IRG-C6Rea9i5.cjs} +6 -6
- package/dist/{xan-Y6WF3IRG-QiEtoTG4.cjs.map → xan-Y6WF3IRG-C6Rea9i5.cjs.map} +1 -1
- package/dist/{xan-view-HDVKHFC2-BuH-MKEl.cjs → xan-view-HDVKHFC2-D8wWmUlF.cjs} +3 -3
- package/dist/{xan-view-HDVKHFC2-BuH-MKEl.cjs.map → xan-view-HDVKHFC2-D8wWmUlF.cjs.map} +1 -1
- package/dist/{xan-view-HDVKHFC2-Dg8w1JPa.mjs → xan-view-HDVKHFC2-DU4gFwCD.mjs} +3 -3
- package/dist/{xan-view-HDVKHFC2-Dg8w1JPa.mjs.map → xan-view-HDVKHFC2-DU4gFwCD.mjs.map} +1 -1
- package/dist/{xargs-MGZPH7AX-BbxYcwaV.cjs → xargs-MGZPH7AX-B_25UIWm.cjs} +2 -2
- package/dist/{xargs-MGZPH7AX-BbxYcwaV.cjs.map → xargs-MGZPH7AX-B_25UIWm.cjs.map} +1 -1
- package/dist/{xargs-MGZPH7AX-2U3kL7dv.mjs → xargs-MGZPH7AX-Bokgq8NQ.mjs} +2 -2
- package/dist/{xargs-MGZPH7AX-2U3kL7dv.mjs.map → xargs-MGZPH7AX-Bokgq8NQ.mjs.map} +1 -1
- package/dist/{yq-4QJW3EQG-DxlASFGb.cjs → yq-4QJW3EQG-BfnftBmC.cjs} +3 -3
- package/dist/{yq-4QJW3EQG-DxlASFGb.cjs.map → yq-4QJW3EQG-BfnftBmC.cjs.map} +1 -1
- package/dist/{yq-4QJW3EQG-DNbPHGic.mjs → yq-4QJW3EQG-D-gf6DFH.mjs} +3 -3
- package/dist/{yq-4QJW3EQG-DNbPHGic.mjs.map → yq-4QJW3EQG-D-gf6DFH.mjs.map} +1 -1
- package/package.json +1 -1
- package/dist/dist-AKkRwuhE.cjs.map +0 -1
- package/dist/dist-Cj3RPKwD.mjs.map +0 -1
- package/dist/dist-D7eFCDTR.mjs.map +0 -1
- package/dist/dist-bLC4LOvt.cjs.map +0 -1
- package/dist/start-CKxh9Ozm.mjs.map +0 -1
- package/dist/start-MBSz5HQb.cjs.map +0 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { createRequire } from "node:module";
|
|
2
|
-
import { createCipheriv, createDecipheriv, createHash, randomBytes, randomUUID } from "node:crypto";
|
|
2
|
+
import { createCipheriv, createDecipheriv, createHash, createHmac, randomBytes, randomUUID, timingSafeEqual } from "node:crypto";
|
|
3
3
|
import { DEFAULT_DATABASE_URL, claimDueTriggers, claimDueTriggersForOrg, claimNextJob, clearCredentialInstanceDefaults, createPostgresCancelChannel, decryptCredentialPayload, disableAllTriggerSchedules, disableTriggerSchedulesNotInSlugs, encryptCredentialPayload, enqueueJob, ensureOAuthCredentialInstance, failAgentSession, failWorkflowRun, getProjectScopeId, getServerTenantScopeId, inferDialect, isDatabaseInitialized, listCredentialAssignmentsByTarget, listEnabledScheduledTriggers, listExecutableAttachmentsByTriggerIds, markJobComplete, markJobFailed, requeueExpiredLeases, resolvePostgresUrlFromEnv, resolveProjectDatabaseUrlFromEnv, scheduleJobRetry, selectActiveEphemeralScheduledTriggerSlugs, selectCredentialInstancesByIds, selectCredentialInstancesForScope, selectCredentialInstancesForScopes, selectTriggerBySlug, setTriggerScheduleEnabled, triggerTimezoneFromConfig, upsertCredentialInstance, upsertTriggerScheduleFields } from "@keystrokehq/database";
|
|
4
4
|
import EventEmitter$1, { EventEmitter } from "node:events";
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
7
|
-
import { deleteManagedServiceCredential, deleteSecretValuesForRef, ensureOAuthApp, getManagedServiceCredential, getOrganizationScopeId, insertManagedServiceCredential, saveOAuthConnection, selectSecretValue, updateManagedServiceCredentialValue, upsertSecretValue } from "@keystrokehq/platform-database";
|
|
7
|
+
import { deleteManagedServiceCredential, deleteSecretValuesForRef, ensureOAuthApp, getDecryptedOAuthAppBySlug, getManagedServiceCredential, getOrganizationScopeId, insertManagedServiceCredential, putOAuthPendingState, saveOAuthConnection, selectSecretValue, takeOAuthPendingState, updateManagedServiceCredentialValue, upsertSecretValue } from "@keystrokehq/platform-database";
|
|
8
8
|
import * as z$1 from "zod/v4";
|
|
9
9
|
import "zod/v3";
|
|
10
10
|
import * as z4mini from "zod/v4-mini";
|
|
@@ -10243,6 +10243,7 @@ function mcpProbeToAppTemplate(probe) {
|
|
|
10243
10243
|
};
|
|
10244
10244
|
return {
|
|
10245
10245
|
authKind: "api_key",
|
|
10246
|
+
credentialScheme: "NO_AUTH",
|
|
10246
10247
|
credentialFields: {},
|
|
10247
10248
|
oauthScopes: [],
|
|
10248
10249
|
url
|
|
@@ -10743,10 +10744,10 @@ const CreateCredentialsRequestSchema = CredentialTargetsFieldsSchema.extend({
|
|
|
10743
10744
|
message: "OAuth credentials are created via the OAuth callback",
|
|
10744
10745
|
path: ["connectionKind"]
|
|
10745
10746
|
});
|
|
10746
|
-
if (input.connectionKind === "none") ctx.addIssue({
|
|
10747
|
+
if (input.connectionKind === "none" && input.value) ctx.addIssue({
|
|
10747
10748
|
code: "custom",
|
|
10748
|
-
message: "
|
|
10749
|
-
path: ["
|
|
10749
|
+
message: "value is not allowed for no-auth connections",
|
|
10750
|
+
path: ["value"]
|
|
10750
10751
|
});
|
|
10751
10752
|
});
|
|
10752
10753
|
/** Request body for `PATCH /api/credentials/:id`. */
|
|
@@ -13206,7 +13207,7 @@ function registerWorkflowRunGetter(fn) {
|
|
|
13206
13207
|
}
|
|
13207
13208
|
new AsyncLocalStorage();
|
|
13208
13209
|
//#endregion
|
|
13209
|
-
//#region ../../packages/credentials/dist/store-
|
|
13210
|
+
//#region ../../packages/credentials/dist/store-B7IWQPwD.mjs
|
|
13210
13211
|
function normalizeRow(row) {
|
|
13211
13212
|
const { projectId: _projectId, ...rest } = row;
|
|
13212
13213
|
return rest;
|
|
@@ -24862,21 +24863,29 @@ var StreamableHTTPClientTransport = class {
|
|
|
24862
24863
|
};
|
|
24863
24864
|
//#endregion
|
|
24864
24865
|
//#region ../../packages/mcp/dist/index.mjs
|
|
24865
|
-
|
|
24866
|
-
|
|
24867
|
-
|
|
24868
|
-
|
|
24869
|
-
|
|
24870
|
-
|
|
24871
|
-
|
|
24872
|
-
|
|
24873
|
-
|
|
24874
|
-
|
|
24875
|
-
|
|
24876
|
-
|
|
24877
|
-
|
|
24878
|
-
|
|
24879
|
-
|
|
24866
|
+
function challengeParameter(value, name) {
|
|
24867
|
+
const match = new RegExp(`(?:^|,)\\s*${name}\\s*=\\s*(?:"((?:[^"\\\\]|\\\\.)*)"|([^,\\s]+))`, "i").exec(value);
|
|
24868
|
+
return (match?.[1] ?? match?.[2])?.replace(/\\(["\\])/g, "$1").trim() || void 0;
|
|
24869
|
+
}
|
|
24870
|
+
/** Parse the Bearer challenge even when another authentication scheme appears first. */
|
|
24871
|
+
function parseMcpBearerChallenge(response) {
|
|
24872
|
+
const header = response.headers.get("www-authenticate");
|
|
24873
|
+
if (!header) return {};
|
|
24874
|
+
const bearer = /(?:^|,)\s*Bearer(?:\s+|$)/i.exec(header);
|
|
24875
|
+
if (!bearer) return {};
|
|
24876
|
+
const parameters = header.slice(bearer.index + bearer[0].length);
|
|
24877
|
+
const resourceMetadata = challengeParameter(parameters, "resource_metadata");
|
|
24878
|
+
const scope = challengeParameter(parameters, "scope");
|
|
24879
|
+
const error = challengeParameter(parameters, "error");
|
|
24880
|
+
let resourceMetadataUrl;
|
|
24881
|
+
if (resourceMetadata) try {
|
|
24882
|
+
resourceMetadataUrl = new URL(resourceMetadata);
|
|
24883
|
+
} catch {}
|
|
24884
|
+
return {
|
|
24885
|
+
...resourceMetadataUrl ? { resourceMetadataUrl } : {},
|
|
24886
|
+
...scope ? { scope } : {},
|
|
24887
|
+
...error ? { error } : {}
|
|
24888
|
+
};
|
|
24880
24889
|
}
|
|
24881
24890
|
/** Thrown when a URL is not safe for server-side outbound fetch (SSRF guard). */
|
|
24882
24891
|
var PublicHttpUrlError = class extends Error {
|
|
@@ -24989,6 +24998,7 @@ function createPublicHttpFetch(fetchFn = fetch) {
|
|
|
24989
24998
|
});
|
|
24990
24999
|
};
|
|
24991
25000
|
}
|
|
25001
|
+
const MCP_AUTHORIZATION_PROTOCOL_VERSION = "2025-11-25";
|
|
24992
25002
|
function resourceNameFromMetadata(metadata) {
|
|
24993
25003
|
return metadata?.resource_name?.trim() || void 0;
|
|
24994
25004
|
}
|
|
@@ -25008,6 +25018,74 @@ async function probeUnauthenticatedStatus(url, fetchFn) {
|
|
|
25008
25018
|
return {};
|
|
25009
25019
|
}
|
|
25010
25020
|
}
|
|
25021
|
+
function assertHttps(value, label) {
|
|
25022
|
+
if (new URL(value).protocol !== "https:") throw new Error(`${label} must use HTTPS`);
|
|
25023
|
+
}
|
|
25024
|
+
function assertPublicHttpsUrl(value, label) {
|
|
25025
|
+
assertPublicHttpUrl(value);
|
|
25026
|
+
assertHttps(value, label);
|
|
25027
|
+
}
|
|
25028
|
+
function assertResourceIdentity(serverUrl, resource) {
|
|
25029
|
+
const resourceUrl = new URL(resource);
|
|
25030
|
+
if (serverUrl.hash || resourceUrl.hash || resourceUrl.toString() !== serverUrl.toString()) throw new Error("MCP protected resource does not match the requested MCP server URL");
|
|
25031
|
+
}
|
|
25032
|
+
function validateAuthorizationServerMetadata(authorizationServerUrl, metadata) {
|
|
25033
|
+
if (metadata.issuer !== authorizationServerUrl) throw new Error("MCP authorization server metadata issuer does not match authorization server");
|
|
25034
|
+
if (!metadata.authorization_endpoint || !metadata.token_endpoint) throw new Error("MCP authorization server metadata is missing required endpoints");
|
|
25035
|
+
assertPublicHttpsUrl(metadata.authorization_endpoint, "MCP authorization endpoint");
|
|
25036
|
+
assertPublicHttpsUrl(metadata.token_endpoint, "MCP token endpoint");
|
|
25037
|
+
if (metadata.registration_endpoint) assertPublicHttpsUrl(metadata.registration_endpoint, "MCP registration endpoint");
|
|
25038
|
+
}
|
|
25039
|
+
async function discoverMcpOAuthServerFromProbe(url, safeFetch, initial) {
|
|
25040
|
+
const serverUrl = new URL(url);
|
|
25041
|
+
assertHttps(serverUrl, "MCP server URL");
|
|
25042
|
+
const { status } = initial;
|
|
25043
|
+
const wwwAuthenticate = status === 401 ? initial.wwwAuthenticate : void 0;
|
|
25044
|
+
let resourceMetadataUrl;
|
|
25045
|
+
let challengeScope;
|
|
25046
|
+
if (wwwAuthenticate) {
|
|
25047
|
+
const params = parseMcpBearerChallenge(new Response(null, { headers: { "www-authenticate": wwwAuthenticate } }));
|
|
25048
|
+
resourceMetadataUrl = params.resourceMetadataUrl;
|
|
25049
|
+
challengeScope = params.scope?.trim() || void 0;
|
|
25050
|
+
if (resourceMetadataUrl) {
|
|
25051
|
+
assertPublicHttpUrl(resourceMetadataUrl.toString());
|
|
25052
|
+
assertHttps(resourceMetadataUrl, "MCP resource metadata URL");
|
|
25053
|
+
}
|
|
25054
|
+
}
|
|
25055
|
+
const resourceMetadata = await discoverOAuthProtectedResourceMetadata(serverUrl, {
|
|
25056
|
+
protocolVersion: MCP_AUTHORIZATION_PROTOCOL_VERSION,
|
|
25057
|
+
...resourceMetadataUrl ? { resourceMetadataUrl } : {}
|
|
25058
|
+
}, safeFetch);
|
|
25059
|
+
if (!resourceMetadata.resource) throw new Error("MCP protected resource metadata is missing resource");
|
|
25060
|
+
if (!resourceMetadata.authorization_servers?.length) throw new Error("MCP protected resource metadata is missing authorization_servers");
|
|
25061
|
+
assertResourceIdentity(serverUrl, resourceMetadata.resource);
|
|
25062
|
+
const authorizationServerUrl = resourceMetadata.authorization_servers[0];
|
|
25063
|
+
if (!authorizationServerUrl) throw new Error("MCP protected resource metadata is missing authorization_servers");
|
|
25064
|
+
assertPublicHttpsUrl(authorizationServerUrl, "MCP authorization server URL");
|
|
25065
|
+
const authorizationServerMetadata = await discoverAuthorizationServerMetadata(authorizationServerUrl, {
|
|
25066
|
+
fetchFn: safeFetch,
|
|
25067
|
+
protocolVersion: MCP_AUTHORIZATION_PROTOCOL_VERSION
|
|
25068
|
+
});
|
|
25069
|
+
if (!authorizationServerMetadata) throw new Error("MCP authorization server metadata was not found");
|
|
25070
|
+
validateAuthorizationServerMetadata(authorizationServerUrl, authorizationServerMetadata);
|
|
25071
|
+
return {
|
|
25072
|
+
authorizationServerUrl,
|
|
25073
|
+
authorizationServerMetadata,
|
|
25074
|
+
resourceMetadata,
|
|
25075
|
+
...resourceMetadataUrl ? { resourceMetadataUrl: resourceMetadataUrl.toString() } : {},
|
|
25076
|
+
...challengeScope ? { challengeScope } : {},
|
|
25077
|
+
...status !== void 0 ? { unauthenticatedStatus: status } : {}
|
|
25078
|
+
};
|
|
25079
|
+
}
|
|
25080
|
+
/**
|
|
25081
|
+
* Discover an MCP authorization server without the legacy origin fallback.
|
|
25082
|
+
* MCP 2025-11-25 requires protected-resource metadata for AS selection.
|
|
25083
|
+
*/
|
|
25084
|
+
async function discoverMcpOAuthServer(url, fetchFn = fetch) {
|
|
25085
|
+
assertPublicHttpUrl(url);
|
|
25086
|
+
const safeFetch = createPublicHttpFetch(fetchFn);
|
|
25087
|
+
return discoverMcpOAuthServerFromProbe(url, safeFetch, await probeUnauthenticatedStatus(url, safeFetch));
|
|
25088
|
+
}
|
|
25011
25089
|
function scopesFromMetadata(metadata) {
|
|
25012
25090
|
if (!metadata?.scopes_supported?.length) return [];
|
|
25013
25091
|
return metadata.scopes_supported;
|
|
@@ -25020,68 +25098,37 @@ function logProbeFallback(phase, error) {
|
|
|
25020
25098
|
async function probeMcpAuth(url, fetchFn = fetch) {
|
|
25021
25099
|
assertPublicHttpUrl(url);
|
|
25022
25100
|
const safeFetch = createPublicHttpFetch(fetchFn);
|
|
25023
|
-
const
|
|
25024
|
-
const { status, wwwAuthenticate } = await probeUnauthenticatedStatus(url, safeFetch);
|
|
25025
|
-
let resourceMetadataUrl;
|
|
25026
|
-
if (wwwAuthenticate) {
|
|
25027
|
-
resourceMetadataUrl = extractWWWAuthenticateParams(new Response(null, { headers: { "www-authenticate": wwwAuthenticate } })).resourceMetadataUrl?.toString();
|
|
25028
|
-
if (resourceMetadataUrl) assertPublicHttpUrl(resourceMetadataUrl);
|
|
25029
|
-
}
|
|
25101
|
+
const initial = await probeUnauthenticatedStatus(url, safeFetch);
|
|
25030
25102
|
try {
|
|
25031
|
-
const discovered = await
|
|
25032
|
-
fetchFn: safeFetch,
|
|
25033
|
-
...resourceMetadataUrl ? { resourceMetadataUrl: new URL(resourceMetadataUrl) } : {}
|
|
25034
|
-
});
|
|
25103
|
+
const discovered = await discoverMcpOAuthServerFromProbe(url, safeFetch, initial);
|
|
25035
25104
|
const metadata = discovered.authorizationServerMetadata;
|
|
25036
25105
|
if (metadata?.authorization_endpoint && metadata.token_endpoint) return {
|
|
25037
25106
|
url,
|
|
25038
25107
|
mode: "oauth",
|
|
25039
|
-
unauthenticatedStatus: status,
|
|
25108
|
+
unauthenticatedStatus: initial.status,
|
|
25040
25109
|
oauth: {
|
|
25041
25110
|
issuer: metadata.issuer,
|
|
25042
25111
|
authorizationEndpoint: metadata.authorization_endpoint,
|
|
25043
25112
|
tokenEndpoint: metadata.token_endpoint,
|
|
25044
25113
|
registrationEndpoint: metadata.registration_endpoint,
|
|
25045
|
-
scopes:
|
|
25114
|
+
scopes: discovered.challengeScope ? discovered.challengeScope.split(/\s+/).filter(Boolean) : scopesFromMetadata(discovered.resourceMetadata),
|
|
25046
25115
|
resource: discovered.resourceMetadata?.resource,
|
|
25047
25116
|
resourceName: resourceNameFromMetadata(discovered.resourceMetadata)
|
|
25048
25117
|
}
|
|
25049
25118
|
};
|
|
25050
25119
|
} catch (error) {
|
|
25051
|
-
logProbeFallback("
|
|
25052
|
-
}
|
|
25053
|
-
try {
|
|
25054
|
-
const protectedResource = await discoverOAuthProtectedResourceMetadata(serverUrl, {}, safeFetch);
|
|
25055
|
-
const authorizationServerUrl = protectedResource.authorization_servers?.[0] ?? serverUrl.origin;
|
|
25056
|
-
assertPublicHttpUrl(authorizationServerUrl);
|
|
25057
|
-
const metadata = await discoverAuthorizationServerMetadata(authorizationServerUrl, { fetchFn: safeFetch });
|
|
25058
|
-
if (metadata?.authorization_endpoint && metadata.token_endpoint) return {
|
|
25059
|
-
url,
|
|
25060
|
-
mode: "oauth",
|
|
25061
|
-
unauthenticatedStatus: status,
|
|
25062
|
-
oauth: {
|
|
25063
|
-
issuer: metadata.issuer,
|
|
25064
|
-
authorizationEndpoint: metadata.authorization_endpoint,
|
|
25065
|
-
tokenEndpoint: metadata.token_endpoint,
|
|
25066
|
-
registrationEndpoint: metadata.registration_endpoint,
|
|
25067
|
-
scopes: mergeOAuthScopes(scopesFromMetadata(metadata), scopesFromMetadata(protectedResource)),
|
|
25068
|
-
resource: protectedResource.resource,
|
|
25069
|
-
resourceName: resourceNameFromMetadata(protectedResource)
|
|
25070
|
-
}
|
|
25071
|
-
};
|
|
25072
|
-
} catch (error) {
|
|
25073
|
-
logProbeFallback("discoverOAuthProtectedResourceMetadata", error);
|
|
25120
|
+
logProbeFallback("discoverMcpOAuthServer", error);
|
|
25074
25121
|
}
|
|
25075
|
-
if (status === 401 || status === 403) return {
|
|
25122
|
+
if (initial.status === 401 || initial.status === 403) return {
|
|
25076
25123
|
url,
|
|
25077
25124
|
mode: "token",
|
|
25078
|
-
unauthenticatedStatus: status,
|
|
25125
|
+
unauthenticatedStatus: initial.status,
|
|
25079
25126
|
scheme: "BEARER_TOKEN"
|
|
25080
25127
|
};
|
|
25081
25128
|
return {
|
|
25082
25129
|
url,
|
|
25083
25130
|
mode: "none",
|
|
25084
|
-
unauthenticatedStatus: status
|
|
25131
|
+
unauthenticatedStatus: initial.status
|
|
25085
25132
|
};
|
|
25086
25133
|
}
|
|
25087
25134
|
/** Best-effort server metadata for no-auth MCP servers (initialize handshake). */
|
|
@@ -31898,11 +31945,70 @@ async function describeCredentialBindings(requirements, context) {
|
|
|
31898
31945
|
preload
|
|
31899
31946
|
}, preload));
|
|
31900
31947
|
}
|
|
31901
|
-
|
|
31902
|
-
|
|
31903
|
-
|
|
31904
|
-
|
|
31905
|
-
return
|
|
31948
|
+
const DEFAULT_STATE_TTL_MS = 600 * 1e3;
|
|
31949
|
+
function defaultSigningKey() {
|
|
31950
|
+
const secret = process.env.CREDENTIALS_ENCRYPTION_KEY?.trim();
|
|
31951
|
+
if (!secret) throw new Error("CREDENTIALS_ENCRYPTION_KEY is required");
|
|
31952
|
+
return secret;
|
|
31953
|
+
}
|
|
31954
|
+
function signPayload(payload, signingKey) {
|
|
31955
|
+
return createHmac("sha256", signingKey()).update(payload).digest("base64url");
|
|
31956
|
+
}
|
|
31957
|
+
function createOAuthState(options = {}) {
|
|
31958
|
+
const signingKey = options.signingKey ?? defaultSigningKey;
|
|
31959
|
+
const payload = options.payload ?? {};
|
|
31960
|
+
const payloadSegment = (options.serializePayload ?? (() => ""))(payload);
|
|
31961
|
+
const id = randomBytes(16).toString("hex");
|
|
31962
|
+
const expiresAt = Date.now() + (options.ttlMs ?? DEFAULT_STATE_TTL_MS);
|
|
31963
|
+
const signedPayload = payloadSegment ? `${id}.${expiresAt}.${payloadSegment}` : `${id}.${expiresAt}`;
|
|
31964
|
+
return {
|
|
31965
|
+
state: `${signedPayload}.${signPayload(signedPayload, signingKey)}`,
|
|
31966
|
+
payload,
|
|
31967
|
+
id,
|
|
31968
|
+
expiresAt
|
|
31969
|
+
};
|
|
31970
|
+
}
|
|
31971
|
+
function verifyOAuthState(options, state) {
|
|
31972
|
+
if (!state) return null;
|
|
31973
|
+
const hasPayload = Boolean(options.deserializePayload);
|
|
31974
|
+
const parts = state.split(".");
|
|
31975
|
+
if (parts.length !== (hasPayload ? 4 : 3)) return null;
|
|
31976
|
+
const [id, expiresRaw] = parts;
|
|
31977
|
+
const signature = parts.at(-1);
|
|
31978
|
+
if (!id || !expiresRaw || !signature) return null;
|
|
31979
|
+
const payloadSegment = hasPayload ? parts[2] ?? "" : "";
|
|
31980
|
+
const expected = signPayload(hasPayload ? `${id}.${expiresRaw}.${payloadSegment}` : `${id}.${expiresRaw}`, options.signingKey ?? defaultSigningKey);
|
|
31981
|
+
const signatureBuffer = Buffer.from(signature);
|
|
31982
|
+
const expectedBuffer = Buffer.from(expected);
|
|
31983
|
+
if (signatureBuffer.length !== expectedBuffer.length || !timingSafeEqual(signatureBuffer, expectedBuffer)) return null;
|
|
31984
|
+
const expiresAt = Number(expiresRaw);
|
|
31985
|
+
if (!Number.isFinite(expiresAt) || expiresAt < Date.now()) return null;
|
|
31986
|
+
if (!hasPayload) return {};
|
|
31987
|
+
return options.deserializePayload(payloadSegment);
|
|
31988
|
+
}
|
|
31989
|
+
async function encodeOAuthState(payload, ttlMs) {
|
|
31990
|
+
const { state, id, expiresAt } = createOAuthState({
|
|
31991
|
+
payload,
|
|
31992
|
+
ttlMs
|
|
31993
|
+
});
|
|
31994
|
+
await putOAuthPendingState({
|
|
31995
|
+
id,
|
|
31996
|
+
payloadCiphertext: encryptCredentialPayload(JSON.stringify(payload)),
|
|
31997
|
+
expiresAt: new Date(expiresAt)
|
|
31998
|
+
});
|
|
31999
|
+
return state;
|
|
32000
|
+
}
|
|
32001
|
+
async function decodeOAuthState(state) {
|
|
32002
|
+
const verified = verifyOAuthState({}, state);
|
|
32003
|
+
const id = state.split(".")[0];
|
|
32004
|
+
if (!verified || !id) throw new Error("OAuth state is invalid or expired");
|
|
32005
|
+
const ciphertext = await takeOAuthPendingState(id);
|
|
32006
|
+
if (!ciphertext) throw new Error("OAuth state is invalid or expired");
|
|
32007
|
+
try {
|
|
32008
|
+
return JSON.parse(decryptCredentialPayload(ciphertext));
|
|
32009
|
+
} catch {
|
|
32010
|
+
throw new Error("OAuth state is invalid or expired");
|
|
32011
|
+
}
|
|
31906
32012
|
}
|
|
31907
32013
|
function oauthAppMetadata(oauth, mcpUrl, options) {
|
|
31908
32014
|
return {
|
|
@@ -31913,7 +32019,9 @@ function oauthAppMetadata(oauth, mcpUrl, options) {
|
|
|
31913
32019
|
resource: oauth.resource,
|
|
31914
32020
|
issuer: oauth.issuer,
|
|
31915
32021
|
scopes: oauth.scopes,
|
|
31916
|
-
...options?.tokenEndpointAuthMethod ? { tokenEndpointAuthMethod: options.tokenEndpointAuthMethod } : {}
|
|
32022
|
+
...options?.tokenEndpointAuthMethod ? { tokenEndpointAuthMethod: options.tokenEndpointAuthMethod } : {},
|
|
32023
|
+
...options?.clientRegistrationMode ? { clientRegistrationMode: options.clientRegistrationMode } : {},
|
|
32024
|
+
...options?.redirectUri ? { redirectUri: options.redirectUri } : {}
|
|
31917
32025
|
};
|
|
31918
32026
|
}
|
|
31919
32027
|
function oauthClientSecretForStorage(clientSecret) {
|
|
@@ -31944,14 +32052,62 @@ async function discoverMcpApp(url) {
|
|
|
31944
32052
|
};
|
|
31945
32053
|
}
|
|
31946
32054
|
var McpOAuthConnectError = class extends Error {
|
|
32055
|
+
phase;
|
|
31947
32056
|
diagnostics;
|
|
31948
|
-
phase =
|
|
31949
|
-
|
|
31950
|
-
|
|
32057
|
+
constructor(phase, message, diagnostics = {}) {
|
|
32058
|
+
super(message);
|
|
32059
|
+
this.phase = phase;
|
|
31951
32060
|
this.diagnostics = diagnostics;
|
|
31952
32061
|
this.name = "McpOAuthConnectError";
|
|
31953
32062
|
}
|
|
31954
32063
|
};
|
|
32064
|
+
function oauthErrorCode(error) {
|
|
32065
|
+
if (!error || typeof error !== "object" || !("errorCode" in error)) return;
|
|
32066
|
+
const value = Reflect.get(error, "errorCode");
|
|
32067
|
+
return typeof value === "string" && /^[a-z0-9_]+$/i.test(value) ? value : void 0;
|
|
32068
|
+
}
|
|
32069
|
+
const SUPPORTED_TOKEN_AUTH_METHODS = [
|
|
32070
|
+
"client_secret_basic",
|
|
32071
|
+
"client_secret_post",
|
|
32072
|
+
"none"
|
|
32073
|
+
];
|
|
32074
|
+
function requireHttpsUrl(value, label) {
|
|
32075
|
+
const url = new URL(value);
|
|
32076
|
+
if (url.protocol !== "https:") throw new Error(`${label} must use HTTPS`);
|
|
32077
|
+
return url;
|
|
32078
|
+
}
|
|
32079
|
+
function validateRedirectUri(value) {
|
|
32080
|
+
const url = new URL(value);
|
|
32081
|
+
const isLocalhost = url.hostname === "localhost" || url.hostname === "127.0.0.1";
|
|
32082
|
+
if (url.protocol !== "https:" && !(url.protocol === "http:" && isLocalhost)) throw new Error("OAuth redirect URI must use HTTPS or HTTP localhost");
|
|
32083
|
+
}
|
|
32084
|
+
function validateMcpResource(mcpUrl, resourceUrl) {
|
|
32085
|
+
const serverUrl = new URL(mcpUrl);
|
|
32086
|
+
if (serverUrl.hash || resourceUrl.hash || resourceUrl.toString() !== serverUrl.toString()) throw new Error("MCP protected resource does not identify the requested MCP server");
|
|
32087
|
+
}
|
|
32088
|
+
function selectTokenEndpointAuthMethod(metadata) {
|
|
32089
|
+
const advertised = metadata.token_endpoint_auth_methods_supported;
|
|
32090
|
+
const supported = advertised?.length ? advertised : ["client_secret_basic"];
|
|
32091
|
+
const selected = SUPPORTED_TOKEN_AUTH_METHODS.find((method) => supported.includes(method));
|
|
32092
|
+
if (!selected) throw new Error(`MCP authorization server only supports unsupported token endpoint authentication methods: ${supported.join(", ")}`);
|
|
32093
|
+
return selected;
|
|
32094
|
+
}
|
|
32095
|
+
function validateAuthorizationCapabilities(metadata) {
|
|
32096
|
+
if (!metadata.response_types_supported?.includes("code")) throw new Error("MCP authorization server does not support the code response type");
|
|
32097
|
+
if (metadata.grant_types_supported?.length && !metadata.grant_types_supported.includes("authorization_code")) throw new Error("MCP authorization server does not support authorization_code");
|
|
32098
|
+
if (!metadata.code_challenge_methods_supported?.includes("S256")) throw new Error("MCP authorization server does not advertise PKCE S256 support");
|
|
32099
|
+
}
|
|
32100
|
+
function validateRegisteredClientInformation(clientInformation, requestedMethod, advertisedMethods) {
|
|
32101
|
+
const assignedMethod = clientInformation.token_endpoint_auth_method ?? requestedMethod;
|
|
32102
|
+
if (!SUPPORTED_TOKEN_AUTH_METHODS.includes(assignedMethod)) throw new Error(`MCP authorization server assigned unsupported token endpoint authentication method: ${assignedMethod}`);
|
|
32103
|
+
if (!advertisedMethods.includes(assignedMethod)) throw new Error(`MCP authorization server assigned an unadvertised token endpoint authentication method: ${assignedMethod}`);
|
|
32104
|
+
if (assignedMethod !== "none" && !clientInformation.client_secret?.trim()) throw new Error(`MCP authorization server assigned ${assignedMethod} without a client_secret`);
|
|
32105
|
+
return {
|
|
32106
|
+
...clientInformation,
|
|
32107
|
+
token_endpoint_auth_method: assignedMethod,
|
|
32108
|
+
registrationMode: "dcr"
|
|
32109
|
+
};
|
|
32110
|
+
}
|
|
31955
32111
|
/**
|
|
31956
32112
|
* Prefer CIMD (URL client_id) when the AS advertises support and we have an
|
|
31957
32113
|
* HTTPS metadata URL; otherwise DCR. Localhost HTTP cannot be a CIMD client_id
|
|
@@ -31962,15 +32118,27 @@ var McpOAuthConnectError = class extends Error {
|
|
|
31962
32118
|
*/
|
|
31963
32119
|
async function resolveMcpOAuthClientInformation(options) {
|
|
31964
32120
|
const supportsCimd = options.metadata.client_id_metadata_document_supported === true;
|
|
31965
|
-
|
|
32121
|
+
const supportsPublicClient = options.metadata.token_endpoint_auth_methods_supported?.includes("none") === true;
|
|
32122
|
+
if (supportsCimd && supportsPublicClient && Boolean(options.clientMetadataUrl) && isHttpsUrl(options.clientMetadataUrl) && options.clientMetadataUrl) return {
|
|
31966
32123
|
client_id: options.clientMetadataUrl,
|
|
31967
|
-
token_endpoint_auth_method: "none"
|
|
32124
|
+
token_endpoint_auth_method: "none",
|
|
32125
|
+
registrationMode: "cimd"
|
|
31968
32126
|
};
|
|
31969
32127
|
if (options.metadata.registration_endpoint) {
|
|
31970
|
-
const grantTypes = ["authorization_code", "refresh_token"];
|
|
31971
|
-
const tokenEndpointAuthMethod =
|
|
32128
|
+
const grantTypes = ["authorization_code", ...options.metadata.grant_types_supported?.includes("refresh_token") ? ["refresh_token"] : []];
|
|
32129
|
+
const tokenEndpointAuthMethod = selectTokenEndpointAuthMethod(options.metadata);
|
|
32130
|
+
const currentlySupportedAuthMethods = options.metadata.token_endpoint_auth_methods_supported?.length ? options.metadata.token_endpoint_auth_methods_supported : ["client_secret_basic"];
|
|
32131
|
+
const existing = await getDecryptedOAuthAppBySlug(options.appSlug);
|
|
32132
|
+
if (existing?.provider === "mcp" && existing.metadata?.clientRegistrationMode === "dcr" && existing.metadata.issuer === options.metadata.issuer && existing.metadata.registrationEndpoint === options.metadata.registration_endpoint && existing.metadata.resource === options.resource && existing.metadata.redirectUri === options.redirectUri && existing.metadata.tokenEndpointAuthMethod && SUPPORTED_TOKEN_AUTH_METHODS.includes(existing.metadata.tokenEndpointAuthMethod) && currentlySupportedAuthMethods.includes(existing.metadata.tokenEndpointAuthMethod)) return {
|
|
32133
|
+
client_id: existing.clientId,
|
|
32134
|
+
...existing.clientSecret ? { client_secret: existing.clientSecret } : {},
|
|
32135
|
+
token_endpoint_auth_method: existing.metadata.tokenEndpointAuthMethod,
|
|
32136
|
+
registrationMode: "dcr"
|
|
32137
|
+
};
|
|
32138
|
+
let providerHttpStatus;
|
|
31972
32139
|
try {
|
|
31973
|
-
|
|
32140
|
+
const safeFetch = createPublicHttpFetch();
|
|
32141
|
+
return validateRegisteredClientInformation(await registerClient(options.authorizationServerUrl, {
|
|
31974
32142
|
metadata: options.metadata,
|
|
31975
32143
|
clientMetadata: {
|
|
31976
32144
|
client_name: "Keystroke",
|
|
@@ -31979,54 +32147,112 @@ async function resolveMcpOAuthClientInformation(options) {
|
|
|
31979
32147
|
response_types: ["code"],
|
|
31980
32148
|
token_endpoint_auth_method: tokenEndpointAuthMethod
|
|
31981
32149
|
},
|
|
31982
|
-
scope: options.scope
|
|
31983
|
-
|
|
32150
|
+
scope: options.scope,
|
|
32151
|
+
fetchFn: async (input, init) => {
|
|
32152
|
+
const response = await safeFetch(input, init);
|
|
32153
|
+
providerHttpStatus = response.status;
|
|
32154
|
+
return response;
|
|
32155
|
+
}
|
|
32156
|
+
}), tokenEndpointAuthMethod, currentlySupportedAuthMethods);
|
|
31984
32157
|
} catch (error) {
|
|
31985
|
-
throw new McpOAuthConnectError(
|
|
32158
|
+
throw new McpOAuthConnectError("client_registration", providerHttpStatus === 403 ? "MCP server rejected dynamic client registration; it may require a pre-approved OAuth client" : "MCP OAuth client registration failed", {
|
|
32159
|
+
correlationId: options.correlationId,
|
|
31986
32160
|
authorizationServerUrl: options.authorizationServerUrl,
|
|
31987
32161
|
registrationEndpoint: options.metadata.registration_endpoint,
|
|
31988
32162
|
grantTypes,
|
|
31989
|
-
tokenEndpointAuthMethod
|
|
32163
|
+
tokenEndpointAuthMethod,
|
|
32164
|
+
...providerHttpStatus ? { providerHttpStatus } : {},
|
|
32165
|
+
...oauthErrorCode(error) ? { oauthError: oauthErrorCode(error) } : {}
|
|
31990
32166
|
});
|
|
31991
32167
|
}
|
|
31992
32168
|
}
|
|
31993
|
-
if (supportsCimd) throw new Error("Authorization server
|
|
32169
|
+
if (supportsCimd) throw new Error("Authorization server supports Client ID Metadata Documents, but not Keystroke's public-client authentication or HTTPS metadata URL");
|
|
31994
32170
|
throw new Error("MCP authorization server does not support Client ID Metadata Documents or Dynamic Client Registration");
|
|
31995
32171
|
}
|
|
31996
32172
|
async function beginMcpOAuthConnect(options) {
|
|
31997
32173
|
const appUrl = options.app.url?.trim();
|
|
31998
32174
|
if (!appUrl || options.app.source !== "mcp" || options.app.authKind !== "oauth") throw new Error("App is not a direct MCP OAuth app");
|
|
31999
|
-
const
|
|
32175
|
+
const correlationId = crypto.randomUUID();
|
|
32176
|
+
let discovered;
|
|
32177
|
+
try {
|
|
32178
|
+
validateRedirectUri(options.redirectUri);
|
|
32179
|
+
requireHttpsUrl(appUrl, "MCP server URL");
|
|
32180
|
+
discovered = await discoverMcpOAuthServer(appUrl);
|
|
32181
|
+
} catch {
|
|
32182
|
+
throw new McpOAuthConnectError("resource_discovery", "Failed to discover MCP OAuth protected-resource metadata", { correlationId });
|
|
32183
|
+
}
|
|
32000
32184
|
const metadata = discovered.authorizationServerMetadata;
|
|
32001
|
-
|
|
32185
|
+
try {
|
|
32186
|
+
if (!metadata?.authorization_endpoint || !metadata.token_endpoint) throw new Error("MCP server does not expose OAuth authorization metadata");
|
|
32187
|
+
validateAuthorizationCapabilities(metadata);
|
|
32188
|
+
requireHttpsUrl(discovered.authorizationServerUrl, "OAuth authorization server URL");
|
|
32189
|
+
requireHttpsUrl(metadata.authorization_endpoint, "OAuth authorization endpoint");
|
|
32190
|
+
requireHttpsUrl(metadata.token_endpoint, "OAuth token endpoint");
|
|
32191
|
+
if (metadata.registration_endpoint) requireHttpsUrl(metadata.registration_endpoint, "OAuth registration endpoint");
|
|
32192
|
+
} catch {
|
|
32193
|
+
throw new McpOAuthConnectError("authorization_server_discovery", "MCP authorization server metadata is incompatible", {
|
|
32194
|
+
correlationId,
|
|
32195
|
+
authorizationServerUrl: discovered.authorizationServerUrl
|
|
32196
|
+
});
|
|
32197
|
+
}
|
|
32198
|
+
let resourceUrl;
|
|
32199
|
+
try {
|
|
32200
|
+
resourceUrl = requireHttpsUrl(discovered.resourceMetadata.resource, "MCP protected resource");
|
|
32201
|
+
if (resourceUrl.hash) throw new Error("MCP protected resource must not include a fragment");
|
|
32202
|
+
validateMcpResource(appUrl, resourceUrl);
|
|
32203
|
+
} catch {
|
|
32204
|
+
throw new McpOAuthConnectError("resource_discovery", "MCP protected-resource metadata contains an invalid resource", { correlationId });
|
|
32205
|
+
}
|
|
32002
32206
|
const oauth = {
|
|
32003
32207
|
issuer: metadata.issuer,
|
|
32004
32208
|
authorizationEndpoint: metadata.authorization_endpoint,
|
|
32005
32209
|
tokenEndpoint: metadata.token_endpoint,
|
|
32006
32210
|
registrationEndpoint: metadata.registration_endpoint,
|
|
32007
|
-
scopes:
|
|
32008
|
-
resource:
|
|
32211
|
+
scopes: discovered.challengeScope ? discovered.challengeScope.split(/\s+/).filter(Boolean) : discovered.resourceMetadata.scopes_supported ?? [],
|
|
32212
|
+
resource: resourceUrl.toString(),
|
|
32009
32213
|
resourceName: discovered.resourceMetadata?.resource_name?.trim() || void 0
|
|
32010
32214
|
};
|
|
32011
|
-
const
|
|
32012
|
-
const
|
|
32013
|
-
const
|
|
32014
|
-
|
|
32015
|
-
|
|
32016
|
-
|
|
32017
|
-
|
|
32018
|
-
|
|
32019
|
-
|
|
32020
|
-
|
|
32021
|
-
|
|
32022
|
-
|
|
32023
|
-
|
|
32024
|
-
|
|
32025
|
-
|
|
32026
|
-
|
|
32027
|
-
})
|
|
32028
|
-
|
|
32215
|
+
const requestedScopes = options.input.scopes?.map((value) => value.trim()).filter(Boolean) ?? [];
|
|
32216
|
+
const challengedScopes = discovered.challengeScope?.split(/\s+/).filter(Boolean) ?? [];
|
|
32217
|
+
const selectedScopes = challengedScopes.length > 0 ? [...new Set([...challengedScopes, ...requestedScopes])] : requestedScopes.length > 0 ? requestedScopes : discovered.resourceMetadata.scopes_supported ?? [];
|
|
32218
|
+
const scope = selectedScopes.length > 0 ? selectedScopes.join(" ") : void 0;
|
|
32219
|
+
let clientInformation;
|
|
32220
|
+
try {
|
|
32221
|
+
clientInformation = await resolveMcpOAuthClientInformation({
|
|
32222
|
+
appSlug: options.app.slug,
|
|
32223
|
+
correlationId,
|
|
32224
|
+
authorizationServerUrl: discovered.authorizationServerUrl,
|
|
32225
|
+
metadata,
|
|
32226
|
+
resource: resourceUrl.toString(),
|
|
32227
|
+
redirectUri: options.redirectUri,
|
|
32228
|
+
scope,
|
|
32229
|
+
clientMetadataUrl: options.clientMetadataUrl
|
|
32230
|
+
});
|
|
32231
|
+
} catch (error) {
|
|
32232
|
+
if (error instanceof McpOAuthConnectError) throw error;
|
|
32233
|
+
throw new McpOAuthConnectError("client_registration", "MCP authorization server does not support a compatible client registration", {
|
|
32234
|
+
correlationId,
|
|
32235
|
+
authorizationServerUrl: discovered.authorizationServerUrl
|
|
32236
|
+
});
|
|
32237
|
+
}
|
|
32238
|
+
try {
|
|
32239
|
+
await ensureOAuthApp({
|
|
32240
|
+
slug: options.app.slug,
|
|
32241
|
+
provider: "mcp",
|
|
32242
|
+
tokenStrategy: "refresh",
|
|
32243
|
+
clientId: clientInformation.client_id,
|
|
32244
|
+
clientSecret: oauthClientSecretForStorage(clientInformation.client_secret),
|
|
32245
|
+
metadata: oauthAppMetadata(oauth, appUrl, {
|
|
32246
|
+
tokenEndpointAuthMethod: clientInformation.token_endpoint_auth_method,
|
|
32247
|
+
clientRegistrationMode: clientInformation.registrationMode,
|
|
32248
|
+
redirectUri: options.redirectUri
|
|
32249
|
+
})
|
|
32250
|
+
});
|
|
32251
|
+
} catch {
|
|
32252
|
+
throw new McpOAuthConnectError("credential_persistence", "Failed to save MCP OAuth client registration", { correlationId });
|
|
32253
|
+
}
|
|
32029
32254
|
const statePayload = {
|
|
32255
|
+
correlationId,
|
|
32030
32256
|
codeVerifier: "",
|
|
32031
32257
|
appSlug: options.app.slug,
|
|
32032
32258
|
organizationId: options.organizationId,
|
|
@@ -32038,76 +32264,107 @@ async function beginMcpOAuthConnect(options) {
|
|
|
32038
32264
|
authorizationServerUrl: discovered.authorizationServerUrl,
|
|
32039
32265
|
resource: oauth.resource,
|
|
32040
32266
|
oauthMetadata: oauth,
|
|
32267
|
+
authorizationServerMetadata: metadata,
|
|
32041
32268
|
mcpUrl: appUrl,
|
|
32042
32269
|
redirectUri: options.redirectUri,
|
|
32043
32270
|
clientId: clientInformation.client_id,
|
|
32044
32271
|
clientSecret: clientInformation.client_secret,
|
|
32045
32272
|
tokenEndpointAuthMethod: clientInformation.token_endpoint_auth_method,
|
|
32273
|
+
clientRegistrationMode: clientInformation.registrationMode,
|
|
32046
32274
|
label: options.input.label,
|
|
32047
32275
|
credentialInstanceId: options.input.credentialInstanceId
|
|
32048
32276
|
};
|
|
32049
|
-
|
|
32050
|
-
|
|
32051
|
-
|
|
32052
|
-
|
|
32053
|
-
|
|
32054
|
-
|
|
32055
|
-
|
|
32277
|
+
let authorizationUrl;
|
|
32278
|
+
let codeVerifier;
|
|
32279
|
+
try {
|
|
32280
|
+
({authorizationUrl, codeVerifier} = await startAuthorization(discovered.authorizationServerUrl, {
|
|
32281
|
+
metadata,
|
|
32282
|
+
clientInformation,
|
|
32283
|
+
redirectUrl: options.redirectUri,
|
|
32284
|
+
scope,
|
|
32285
|
+
resource: resourceUrl
|
|
32286
|
+
}));
|
|
32287
|
+
} catch (error) {
|
|
32288
|
+
throw new McpOAuthConnectError("authorization_start", "Failed to start MCP authorization", {
|
|
32289
|
+
correlationId,
|
|
32290
|
+
authorizationServerUrl: discovered.authorizationServerUrl,
|
|
32291
|
+
...oauthErrorCode(error) ? { oauthError: oauthErrorCode(error) } : {}
|
|
32292
|
+
});
|
|
32293
|
+
}
|
|
32056
32294
|
statePayload.codeVerifier = codeVerifier;
|
|
32057
|
-
const state = encodeOAuthState(statePayload);
|
|
32295
|
+
const state = await encodeOAuthState(statePayload);
|
|
32058
32296
|
authorizationUrl.searchParams.set("state", state);
|
|
32059
32297
|
return { authorizeUrl: authorizationUrl.toString() };
|
|
32060
32298
|
}
|
|
32061
32299
|
async function completeMcpOAuthConnect(options) {
|
|
32062
|
-
const payload =
|
|
32063
|
-
const metadata = {
|
|
32064
|
-
issuer: payload.oauthMetadata.issuer ?? payload.authorizationServerUrl,
|
|
32065
|
-
authorization_endpoint: payload.oauthMetadata.authorizationEndpoint,
|
|
32066
|
-
token_endpoint: payload.oauthMetadata.tokenEndpoint,
|
|
32067
|
-
registration_endpoint: payload.oauthMetadata.registrationEndpoint,
|
|
32068
|
-
scopes_supported: payload.oauthMetadata.scopes,
|
|
32069
|
-
response_types_supported: ["code"],
|
|
32070
|
-
code_challenge_methods_supported: ["S256"]
|
|
32071
|
-
};
|
|
32300
|
+
const { payload } = options;
|
|
32072
32301
|
const resourceUrl = payload.resource ? new URL(payload.resource) : void 0;
|
|
32073
|
-
|
|
32074
|
-
|
|
32075
|
-
|
|
32076
|
-
|
|
32077
|
-
|
|
32078
|
-
|
|
32079
|
-
|
|
32080
|
-
|
|
32081
|
-
|
|
32082
|
-
|
|
32083
|
-
|
|
32084
|
-
|
|
32085
|
-
|
|
32086
|
-
|
|
32087
|
-
|
|
32088
|
-
|
|
32089
|
-
|
|
32090
|
-
|
|
32091
|
-
|
|
32092
|
-
|
|
32093
|
-
|
|
32094
|
-
|
|
32095
|
-
|
|
32096
|
-
|
|
32097
|
-
|
|
32098
|
-
|
|
32099
|
-
|
|
32100
|
-
|
|
32101
|
-
|
|
32102
|
-
|
|
32103
|
-
|
|
32104
|
-
|
|
32105
|
-
|
|
32106
|
-
|
|
32107
|
-
|
|
32108
|
-
|
|
32109
|
-
|
|
32110
|
-
|
|
32302
|
+
if (!resourceUrl) throw new McpOAuthConnectError("authorization_callback", "OAuth callback state is missing the MCP resource", { correlationId: payload.correlationId });
|
|
32303
|
+
let tokens;
|
|
32304
|
+
let providerHttpStatus;
|
|
32305
|
+
try {
|
|
32306
|
+
const safeFetch = createPublicHttpFetch();
|
|
32307
|
+
tokens = await exchangeAuthorization(payload.authorizationServerUrl, {
|
|
32308
|
+
metadata: payload.authorizationServerMetadata,
|
|
32309
|
+
clientInformation: {
|
|
32310
|
+
client_id: payload.clientId,
|
|
32311
|
+
...payload.clientSecret ? { client_secret: payload.clientSecret } : {},
|
|
32312
|
+
...payload.tokenEndpointAuthMethod ? { token_endpoint_auth_method: payload.tokenEndpointAuthMethod } : {}
|
|
32313
|
+
},
|
|
32314
|
+
authorizationCode: options.code,
|
|
32315
|
+
codeVerifier: payload.codeVerifier,
|
|
32316
|
+
redirectUri: payload.redirectUri,
|
|
32317
|
+
resource: resourceUrl,
|
|
32318
|
+
fetchFn: async (input, init) => {
|
|
32319
|
+
const response = await safeFetch(input, init);
|
|
32320
|
+
providerHttpStatus = response.status;
|
|
32321
|
+
return response;
|
|
32322
|
+
}
|
|
32323
|
+
});
|
|
32324
|
+
} catch (error) {
|
|
32325
|
+
throw new McpOAuthConnectError("token_exchange", "MCP OAuth token exchange failed", {
|
|
32326
|
+
correlationId: payload.correlationId,
|
|
32327
|
+
authorizationServerUrl: payload.authorizationServerUrl,
|
|
32328
|
+
...providerHttpStatus ? { providerHttpStatus } : {},
|
|
32329
|
+
...oauthErrorCode(error) ? { oauthError: oauthErrorCode(error) } : {}
|
|
32330
|
+
});
|
|
32331
|
+
}
|
|
32332
|
+
let oauthAppId;
|
|
32333
|
+
let connectionId;
|
|
32334
|
+
try {
|
|
32335
|
+
({id: oauthAppId} = await ensureOAuthApp({
|
|
32336
|
+
slug: payload.appSlug,
|
|
32337
|
+
provider: "mcp",
|
|
32338
|
+
tokenStrategy: "refresh",
|
|
32339
|
+
clientId: payload.clientId,
|
|
32340
|
+
clientSecret: oauthClientSecretForStorage(payload.clientSecret),
|
|
32341
|
+
metadata: oauthAppMetadata(payload.oauthMetadata, payload.mcpUrl, {
|
|
32342
|
+
tokenEndpointAuthMethod: payload.tokenEndpointAuthMethod,
|
|
32343
|
+
clientRegistrationMode: payload.clientRegistrationMode,
|
|
32344
|
+
redirectUri: payload.redirectUri
|
|
32345
|
+
})
|
|
32346
|
+
}));
|
|
32347
|
+
connectionId = await saveOAuthConnection({
|
|
32348
|
+
appId: oauthAppId,
|
|
32349
|
+
externalId: payload.userId,
|
|
32350
|
+
accessToken: tokens.access_token,
|
|
32351
|
+
refreshToken: tokens.refresh_token,
|
|
32352
|
+
accessTokenExpiresAt: accessTokenExpiresAt(tokens.expires_in),
|
|
32353
|
+
grantedScopes: grantedScopesFromToken(tokens.scope, payload.oauthMetadata.scopes),
|
|
32354
|
+
metadata: { mcpUrl: payload.oauthMetadata.resource }
|
|
32355
|
+
});
|
|
32356
|
+
await ensureOAuthCredentialInstance({
|
|
32357
|
+
credentialKey: payload.appSlug,
|
|
32358
|
+
connectionId,
|
|
32359
|
+
accountLabel: payload.label,
|
|
32360
|
+
externalId: payload.userId,
|
|
32361
|
+
userLabel: payload.label,
|
|
32362
|
+
targets: payload.scopeTargets,
|
|
32363
|
+
credentialInstanceId: payload.credentialInstanceId
|
|
32364
|
+
});
|
|
32365
|
+
} catch {
|
|
32366
|
+
throw new McpOAuthConnectError("credential_persistence", "Failed to save the MCP OAuth credential", { correlationId: payload.correlationId });
|
|
32367
|
+
}
|
|
32111
32368
|
return {
|
|
32112
32369
|
appSlug: payload.appSlug,
|
|
32113
32370
|
connectionId,
|
|
@@ -37740,4 +37997,4 @@ function minioStoragePlugin(options = {}) {
|
|
|
37740
37997
|
//#endregion
|
|
37741
37998
|
export { ChannelPlatformSchema as $, TemplateKindSchema as $n, mapProjectSettings as $r, ListProjectDeploymentsResponseSchema as $t, decodeOAuthState as A, ProjectSlugAvailabilityResponseSchema as An, WorkspaceTriggerDetailSchema as Ar, GetTemplateResponseSchema as At, readCredentialInstanceSecret as B, SkillSummaryDetailResponseSchema as Bn, deriveCredentialInstanceSlug as Br, InviteProjectMembersResponseSchema as Bt, userAvatarStorageKey as C, PresignProjectSourceResponseSchema as Cn, WorkflowFormResponseSchema as Cr, ErrorResponseSchema as Ct, McpOAuthConnectError as D, ProjectResponseSchema as Dn, WorkflowSummaryDetailResponseSchema as Dr, GetAppCatalogEntryResponseSchema as Dt, cronPayloadSchema as E, ProjectReachabilityResponseSchema as En, WorkflowRunInputsSchema as Er, FinalizeCustomAppLogoResponseSchema as Et, isDiscoveryError as F, PublicModelsResponseSchema as Fn, WorkspaceWorkflowOverviewSchema as Fr, HistoryRunListQuerySchema as Ft, ActiveOrganizationResponseSchema as G, StartMcpOAuthConnectionInputSchema as Gn, jsonSchemaToWorkflowInputSchema as Gr, ListChannelPlatformsResponseSchema as Gt, setManagedServiceCredential as H, SkillSummarySchema as Hn, isAllowedChatAttachmentMediaType as Hr, ListAgentWorkspaceFilesResponseSchema as Ht, withCredentialAssignments as I, PublishedFormListResponseSchema as In, agentMemoryFileId as Ir, HistoryRunListResponseSchema as It, AgentSummaryListResponseSchema as J, SubmitMarketingContactRequestSchema as Jn, mapOrganizationMember as Jr, ListManagedServiceCredentialsResponseSchema as Jt, AgentMemoryFileSummarySchema as K, StartMcpOAuthConnectionResultSchema as Kn, listenPortFromPublicUrl as Kr, ListCredentialsPageQuerySchema as Kt, PublicHttpUrlError as L, PublishedFormSchema as Ln, agentWorkspaceFileId as Lr, InviteOrganizationMembersRequestSchema as Lt, discoverGraphqlApp as M, PublicFormMetadataSchema as Mn, WorkspaceTriggerListResponseSchema as Mr, GraphqlDiscoverResponseSchema as Mt, discoverMcpApp as N, PublicFormSubmitBodySchema as Nn, WorkspaceTriggerOverviewSchema as Nr, HistoryRunCancelResponseSchema as Nt, beginMcpOAuthConnect as O, ProjectSettingsResponseSchema as On, WorkflowSummaryListResponseSchema as Or, GetCredentialResponseSchema as Ot, discoverOpenApiApp as P, PublicFormSubmitResponseSchema as Pn, WorkspaceTriggerRunListResponseSchema as Pr, HistoryRunDetailResponseSchema as Pt, AppSlugAvailabilityResponseSchema as Q, TemplateFilesResponseSchema as Qn, mapProjectMember as Qr, ListOrganizationsResponseSchema as Qt, deleteCredentialInstanceSecret as R, RecentResourceListResponseSchema as Rn, buildCredentialInstanceLabel as Rr, InviteOrganizationMembersResponseSchema as Rt, publicKeystrokeAssetsObjectUrl as S, PresignProjectSourceRequestSchema as Sn, WorkflowCanvasSchema as Sr, DuplicateCredentialsResponseSchema as St, defaultSchedulerPlugin as T, PresignUserAvatarResponseSchema as Tn, WorkflowRunInputsPutBodySchema as Tr, FinalizeCustomAppLogoRequestSchema as Tt, ACTIVE_ORG_HEADER as U, SlugAvailabilityQuerySchema as Un, isHelloWorldTemplateSlug as Ur, ListApiKeysResponseSchema as Ut, setCredentialInstanceSecret as V, SkillSummaryListResponseSchema as Vn, displayCredentialAppName as Vr, ListAgentMemoryFilesResponseSchema as Vt, AcceptOrganizationInvitationResponseSchema as W, SlugAvailabilityResponseSchema as Wn, isLlmProviderSlug as Wr, ListAppsResponseSchema as Wt, AgentWorkspaceFileSummarySchema as X, SubmitTeamRequestRequestSchema as Xn, mapProjectArtifact as Xr, ListOrganizationMembersPageQuerySchema as Xt, AgentSummarySchema as Y, SubmitMarketingContactResponseSchema as Yn, mapProject as Yr, ListOrganizationInvitationsResponseSchema as Yt, AppSlugAvailabilityQuerySchema as Z, SubmitTeamRequestResponseSchema as Zn, mapProjectDeployment as Zr, ListOrganizationMembersPageResponseSchema as Zt, loadProjectSourceFiles as _, validationErrorResponse as _i, PresignChatAttachmentResponseSchema as _n, UserAvatarSchema as _r, DbProxyQueryRequestSchema as _t, ensureKeystrokeAssetsBucket as a, organizationSlugErrorCodeFromMessage as ai, MICRO_CREDITS_PER_CREDIT as an, UpdateCredentialRequestSchema as ar, CreateCredentialsResponseSchema as at, projectArtifactKey as b, __toESM as bi, PresignOrgLogoRequestSchema as bn, WorkflowCanvasCredentialBindingsSchema as br, DownloadActiveProjectSourceResponseSchema as bt, isChatAttachmentStorageKey as c, projectFileId as ci, McpDiscoverRequestSchema as cn, UpdateOrganizationMemberResponseSchema as cr, CreateOrganizationRequestSchema as ct, isOrgLogoStorageKey as d, resolveUniqueCredentialInstanceLabel as di, OpenApiDiscoverResponseSchema as dn, UpdateProjectMemberResponseSchema as dr, CreateProjectRequestSchema as dt, mapUserOrganization as ei, ListProjectFilesResponseSchema as en, TriggerAttachmentUpdateRequestSchema as er, CompleteProjectArtifactResponseSchema as et, isStorageBucketNotFoundError as f, schemaHasFileFields as fi, OrganizationSidebarBrandingPatchSchema as fn, UpdateProjectRequestSchema as fr, CreateProjectResponseSchema as ft, keystrokeAssetsOrgLogoKeyFromPublicUrl as g, validateWorkflowRunInputValues as gi, PresignChatAttachmentRequestSchema as gn, UserAvatarPatchSchema as gr, DEFAULT_WORKFLOW_OVERVIEW_MODEL as gt, keystrokeAssetsAvatarKeyFromPublicUrl as h, validateFormFieldConfig as hi, PROJECT_SLUG_TAKEN_MESSAGE as hn, UploadProjectSourceResponseSchema as hr, DEFAULT_WORKFLOW_CANVAS_MODEL as ht, createAssetsStorageClient as i, organizationInvitationAcceptPath as ii, ListTemplatesResponseSchema as in, TriggerRunListQuerySchema as ir, CreateCredentialsRequestSchema as it, describeCredentialBindings as j, ProjectSourceResourcesSchema as jn, WorkspaceTriggerFileSchema as jr, GraphqlDiscoverRequestSchema as jt, completeMcpOAuthConnect as k, ProjectSlugAvailabilityQuerySchema as kn, WorkflowSummarySchema as kr, GetCustomAppResponseSchema as kt, isKeystrokeAssetsAvatarPublicUrl as l, resolveExternalPlatformOrigin as li, McpDiscoverResponseSchema as ln, UpdateOrganizationRequestSchema as lr, CreateOrganizationResponseSchema as lt, isUserAvatarStorageKey as m, validateCredentialValueAgainstFields as mi, PLATFORM_RESOURCE_UNSUPPORTED_TEXT as mn, UploadProjectSourceManifestRequestSchema as mr, DEFAULT_TRIGGER_OVERVIEW_MODEL as mt, appLogoStorageKey as n, mergeUserPreferences as ni, ListProjectMetricsResponseSchema as nn, TriggerInvokeRequestSchema as nr, CreateApiKeyRequestSchema as nt, extractRouteManifestFromArtifact as o, parseAppSlug as oi, ManagedServiceCredentialSchema as on, UpdateManagedServiceCredentialRequestSchema as or, CreateCustomAppRequestSchema as ot, isStorageNotFoundError as p, schemaHasUnsupportedFormFields as pi, OrganizationSidebarBrandingSchema as pn, UpdateProjectSettingsRequestSchema as pr, DEFAULT_CLOUD_PLATFORM_ORIGIN as pt, AgentSummaryDetailResponseSchema as q, StoredProjectSourceManifestSchema as qn, mapOrganizationInvitation as qr, ListCredentialsPageResponseSchema as qt, chatAttachmentStorageKey as r, normalizeUserPreferences as ri, ListProjectsResponseSchema as rn, TriggerInvokeResponseSchema as rr, CreateApiKeyResponseSchema as rt, isAppLogoStorageKey as s, parseStoredRouteManifest as si, ManagedServiceKindSchema as sn, UpdateOrganizationMemberRequestSchema as sr, CreateCustomAppResponseSchema as st, RouteManifestNotFoundError as t, mcpEntityId as ti, ListProjectMembersResponseSchema as tn, TriggerInvokeInputsSchema as tr, ConnectManagedServiceCredentialRequestSchema as tt, isKeystrokeAssetsOrgLogoPublicUrl as u, resolvePublicFormFields as ui, OpenApiDiscoverRequestSchema as un, UpdateProjectMemberRequestSchema as ur, CreateProjectArtifactResponseSchema as ut, minioStoragePlugin as v, __commonJSMin as vi, PresignCustomAppLogoRequestSchema as vn, UserPreferencesPatchSchema as vr, DeclineOrganizationInvitationResponseSchema as vt, createJobQueue as w, PresignUserAvatarRequestSchema as wn, WorkflowFormUpsertBodySchema as wr, FilePartSchema as wt, projectSourceBlobKey as x, PresignOrgLogoResponseSchema as xn, WorkflowCanvasRunSchema as xr, DuplicateCredentialRequestSchema as xt, orgLogoStorageKey as y, __require as yi, PresignCustomAppLogoResponseSchema as yn, UserPreferencesSchema as yr, DownloadActiveProjectArtifactResponseSchema as yt, deleteManagedServiceCredential$1 as z, RecentResourceSchema as zn, chatAttachmentExtension as zr, InviteProjectMembersRequestSchema as zt };
|
|
37742
37999
|
|
|
37743
|
-
//# sourceMappingURL=dist-
|
|
38000
|
+
//# sourceMappingURL=dist-B2lPLfrR.mjs.map
|