@keystrokehq/platform 0.1.116 → 0.1.118

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.
Files changed (309) hide show
  1. package/dist/{awk2-LA3USKJP-B6uw2Bt6.cjs → awk2-LA3USKJP-C544FFGP.cjs} +2 -2
  2. package/dist/{awk2-LA3USKJP-B6uw2Bt6.cjs.map → awk2-LA3USKJP-C544FFGP.cjs.map} +1 -1
  3. package/dist/{awk2-LA3USKJP-cJ-Z6J9j.mjs → awk2-LA3USKJP-OaTNLGfL.mjs} +2 -2
  4. package/dist/{awk2-LA3USKJP-cJ-Z6J9j.mjs.map → awk2-LA3USKJP-OaTNLGfL.mjs.map} +1 -1
  5. package/dist/{base64-C2AIWVNC-DYCurUAR.cjs → base64-C2AIWVNC-BnyRxaRd.cjs} +2 -2
  6. package/dist/{base64-C2AIWVNC-DYCurUAR.cjs.map → base64-C2AIWVNC-BnyRxaRd.cjs.map} +1 -1
  7. package/dist/{base64-C2AIWVNC-Cs404cyq.mjs → base64-C2AIWVNC-DcAp1c2p.mjs} +2 -2
  8. package/dist/{base64-C2AIWVNC-Cs404cyq.mjs.map → base64-C2AIWVNC-DcAp1c2p.mjs.map} +1 -1
  9. package/dist/{bash-YZ33HQZQ-C0VzjZ-L.cjs → bash-YZ33HQZQ-BRMsK3RY.cjs} +2 -2
  10. package/dist/{bash-YZ33HQZQ-C0VzjZ-L.cjs.map → bash-YZ33HQZQ-BRMsK3RY.cjs.map} +1 -1
  11. package/dist/{bash-YZ33HQZQ-WlueOlNq.mjs → bash-YZ33HQZQ-DukphZlQ.mjs} +2 -2
  12. package/dist/{bash-YZ33HQZQ-WlueOlNq.mjs.map → bash-YZ33HQZQ-DukphZlQ.mjs.map} +1 -1
  13. package/dist/{cat-TSFMZVYS-CkwNl54c.mjs → cat-TSFMZVYS-B9ZweZ0g.mjs} +3 -3
  14. package/dist/{cat-TSFMZVYS-CkwNl54c.mjs.map → cat-TSFMZVYS-B9ZweZ0g.mjs.map} +1 -1
  15. package/dist/{cat-TSFMZVYS-mZAwc0jT.cjs → cat-TSFMZVYS-KZgn9B7l.cjs} +3 -3
  16. package/dist/{cat-TSFMZVYS-mZAwc0jT.cjs.map → cat-TSFMZVYS-KZgn9B7l.cjs.map} +1 -1
  17. package/dist/{chunk-5H5SCKJM-CO858h-N.mjs → chunk-5H5SCKJM-BaQNy7Uj.mjs} +2 -2
  18. package/dist/{chunk-5H5SCKJM-CO858h-N.mjs.map → chunk-5H5SCKJM-BaQNy7Uj.mjs.map} +1 -1
  19. package/dist/{chunk-5H5SCKJM-DK56WXdS.cjs → chunk-5H5SCKJM-DjtB3NAz.cjs} +2 -2
  20. package/dist/{chunk-5H5SCKJM-DK56WXdS.cjs.map → chunk-5H5SCKJM-DjtB3NAz.cjs.map} +1 -1
  21. package/dist/{chunk-AQ6FYS2X-B-tU21b6.mjs → chunk-AQ6FYS2X-CXdwzuuw.mjs} +2 -2
  22. package/dist/{chunk-AQ6FYS2X-B-tU21b6.mjs.map → chunk-AQ6FYS2X-CXdwzuuw.mjs.map} +1 -1
  23. package/dist/{chunk-AQ6FYS2X-Bs7siMd-.cjs → chunk-AQ6FYS2X-CsoGKQ2j.cjs} +2 -2
  24. package/dist/{chunk-AQ6FYS2X-Bs7siMd-.cjs.map → chunk-AQ6FYS2X-CsoGKQ2j.cjs.map} +1 -1
  25. package/dist/{chunk-CHFEPBH4-u97K-hHE.cjs → chunk-CHFEPBH4-B7SK6y0J.cjs} +2 -2
  26. package/dist/{chunk-CHFEPBH4-u97K-hHE.cjs.map → chunk-CHFEPBH4-B7SK6y0J.cjs.map} +1 -1
  27. package/dist/{chunk-CHFEPBH4-B1dGi1Rp.mjs → chunk-CHFEPBH4-DWsPJ6bE.mjs} +2 -2
  28. package/dist/{chunk-CHFEPBH4-B1dGi1Rp.mjs.map → chunk-CHFEPBH4-DWsPJ6bE.mjs.map} +1 -1
  29. package/dist/{chunk-EBAPSGAO-bvBL5lI0.mjs → chunk-EBAPSGAO-Bo2g3Ra0.mjs} +2 -2
  30. package/dist/{chunk-EBAPSGAO-bvBL5lI0.mjs.map → chunk-EBAPSGAO-Bo2g3Ra0.mjs.map} +1 -1
  31. package/dist/{chunk-EBAPSGAO-DM-EDh0Q.cjs → chunk-EBAPSGAO-DxcD_wN0.cjs} +2 -2
  32. package/dist/{chunk-EBAPSGAO-DM-EDh0Q.cjs.map → chunk-EBAPSGAO-DxcD_wN0.cjs.map} +1 -1
  33. package/dist/{chunk-LEKBROJD-CFeNqItx.mjs → chunk-LEKBROJD-CKOwe9-J.mjs} +2 -2
  34. package/dist/{chunk-LEKBROJD-CFeNqItx.mjs.map → chunk-LEKBROJD-CKOwe9-J.mjs.map} +1 -1
  35. package/dist/{chunk-LEKBROJD-BxQr5osL.cjs → chunk-LEKBROJD-lSH8qRL-.cjs} +2 -2
  36. package/dist/{chunk-LEKBROJD-BxQr5osL.cjs.map → chunk-LEKBROJD-lSH8qRL-.cjs.map} +1 -1
  37. package/dist/{chunk-VPADYNBD-DMP8a1Df.cjs → chunk-VPADYNBD-Cjfz5Alm.cjs} +2 -2
  38. package/dist/{chunk-VPADYNBD-DMP8a1Df.cjs.map → chunk-VPADYNBD-Cjfz5Alm.cjs.map} +1 -1
  39. package/dist/{chunk-VPADYNBD-BEjilLRl.mjs → chunk-VPADYNBD-D106m_2F.mjs} +2 -2
  40. package/dist/{chunk-VPADYNBD-BEjilLRl.mjs.map → chunk-VPADYNBD-D106m_2F.mjs.map} +1 -1
  41. package/dist/{chunk-YCLFEX4T-CWA_wK0s.cjs → chunk-YCLFEX4T-BKdilKg9.cjs} +2 -2
  42. package/dist/{chunk-YCLFEX4T-CWA_wK0s.cjs.map → chunk-YCLFEX4T-BKdilKg9.cjs.map} +1 -1
  43. package/dist/{chunk-YCLFEX4T-DmvjyT00.mjs → chunk-YCLFEX4T-BNcQm2wg.mjs} +2 -2
  44. package/dist/{chunk-YCLFEX4T-DmvjyT00.mjs.map → chunk-YCLFEX4T-BNcQm2wg.mjs.map} +1 -1
  45. package/dist/{column-XT6UFXNQ-Dt98eUoT.cjs → column-XT6UFXNQ-BE9ZFChf.cjs} +2 -2
  46. package/dist/{column-XT6UFXNQ-Dt98eUoT.cjs.map → column-XT6UFXNQ-BE9ZFChf.cjs.map} +1 -1
  47. package/dist/{column-XT6UFXNQ-D6Fbpwt1.mjs → column-XT6UFXNQ-Cv-T7URw.mjs} +2 -2
  48. package/dist/{column-XT6UFXNQ-D6Fbpwt1.mjs.map → column-XT6UFXNQ-Cv-T7URw.mjs.map} +1 -1
  49. package/dist/{comm-VV2LDX2J-CiGWgPMT.mjs → comm-VV2LDX2J-CwlEnHpG.mjs} +2 -2
  50. package/dist/{comm-VV2LDX2J-CiGWgPMT.mjs.map → comm-VV2LDX2J-CwlEnHpG.mjs.map} +1 -1
  51. package/dist/{comm-VV2LDX2J-BgLYoDm3.cjs → comm-VV2LDX2J-DToPWFK0.cjs} +2 -2
  52. package/dist/{comm-VV2LDX2J-BgLYoDm3.cjs.map → comm-VV2LDX2J-DToPWFK0.cjs.map} +1 -1
  53. package/dist/config.cjs +2 -2
  54. package/dist/config.mjs +2 -2
  55. package/dist/{cp-BISAAS7A-CvK9sTBw.mjs → cp-BISAAS7A-Baa7jHjq.mjs} +2 -2
  56. package/dist/{cp-BISAAS7A-CvK9sTBw.mjs.map → cp-BISAAS7A-Baa7jHjq.mjs.map} +1 -1
  57. package/dist/{cp-BISAAS7A-tr7byIHy.cjs → cp-BISAAS7A-CkmJTroD.cjs} +2 -2
  58. package/dist/{cp-BISAAS7A-tr7byIHy.cjs.map → cp-BISAAS7A-CkmJTroD.cjs.map} +1 -1
  59. package/dist/{cut-OKARJCCV-5SkYB3UW.mjs → cut-OKARJCCV-BB4GpDEw.mjs} +3 -3
  60. package/dist/{cut-OKARJCCV-5SkYB3UW.mjs.map → cut-OKARJCCV-BB4GpDEw.mjs.map} +1 -1
  61. package/dist/{cut-OKARJCCV-CkKFeEW0.cjs → cut-OKARJCCV-LjiQbogw.cjs} +3 -3
  62. package/dist/{cut-OKARJCCV-CkKFeEW0.cjs.map → cut-OKARJCCV-LjiQbogw.cjs.map} +1 -1
  63. package/dist/{diff-MWJFIG7X-D8BfV9CZ.cjs → diff-MWJFIG7X-4T0AtZb6.cjs} +2 -2
  64. package/dist/{diff-MWJFIG7X-D8BfV9CZ.cjs.map → diff-MWJFIG7X-4T0AtZb6.cjs.map} +1 -1
  65. package/dist/{diff-MWJFIG7X-FpRPeBBI.mjs → diff-MWJFIG7X-CoLpB5r8.mjs} +2 -2
  66. package/dist/{diff-MWJFIG7X-FpRPeBBI.mjs.map → diff-MWJFIG7X-CoLpB5r8.mjs.map} +1 -1
  67. package/dist/{dist-mntRulD_.cjs → dist-1gAqMJCK.cjs} +19 -7
  68. package/dist/dist-1gAqMJCK.cjs.map +1 -0
  69. package/dist/{dist-06B__3tk.mjs → dist-B2lPLfrR.mjs} +455 -164
  70. package/dist/dist-B2lPLfrR.mjs.map +1 -0
  71. package/dist/{dist-Da9lzYN7.mjs → dist-BBJhHiW3.mjs} +19 -7
  72. package/dist/dist-BBJhHiW3.mjs.map +1 -0
  73. package/dist/{dist-CyAg630h.cjs → dist-ZPZwDr3w.cjs} +459 -162
  74. package/dist/dist-ZPZwDr3w.cjs.map +1 -0
  75. package/dist/{du-572XNP42-CHAO-EDI.mjs → du-572XNP42-B4W75agS.mjs} +2 -2
  76. package/dist/{du-572XNP42-CHAO-EDI.mjs.map → du-572XNP42-B4W75agS.mjs.map} +1 -1
  77. package/dist/{du-572XNP42-Bd6_2Wf2.cjs → du-572XNP42-Bu2lK3XF.cjs} +2 -2
  78. package/dist/{du-572XNP42-Bd6_2Wf2.cjs.map → du-572XNP42-Bu2lK3XF.cjs.map} +1 -1
  79. package/dist/{env-36M5BO7M-Cz62ZfWq.cjs → env-36M5BO7M-Buj1j2Ha.cjs} +2 -2
  80. package/dist/{env-36M5BO7M-Cz62ZfWq.cjs.map → env-36M5BO7M-Buj1j2Ha.cjs.map} +1 -1
  81. package/dist/{env-36M5BO7M-C9VWir-k.mjs → env-36M5BO7M-CzYSWBAm.mjs} +2 -2
  82. package/dist/{env-36M5BO7M-C9VWir-k.mjs.map → env-36M5BO7M-CzYSWBAm.mjs.map} +1 -1
  83. package/dist/{expand-JSPG6VOP-CEgbfGV6.mjs → expand-JSPG6VOP-B3OiXvMy.mjs} +2 -2
  84. package/dist/{expand-JSPG6VOP-CEgbfGV6.mjs.map → expand-JSPG6VOP-B3OiXvMy.mjs.map} +1 -1
  85. package/dist/{expand-JSPG6VOP-mLdVVa0I.cjs → expand-JSPG6VOP-Ydh9BD2_.cjs} +2 -2
  86. package/dist/{expand-JSPG6VOP-mLdVVa0I.cjs.map → expand-JSPG6VOP-Ydh9BD2_.cjs.map} +1 -1
  87. package/dist/{expr-5JAACS4X-KKuazyxt.mjs → expr-5JAACS4X-C4pTNZ3u.mjs} +2 -2
  88. package/dist/{expr-5JAACS4X-KKuazyxt.mjs.map → expr-5JAACS4X-C4pTNZ3u.mjs.map} +1 -1
  89. package/dist/{expr-5JAACS4X-Djnbsszh.cjs → expr-5JAACS4X-DhFIFxWY.cjs} +2 -2
  90. package/dist/{expr-5JAACS4X-Djnbsszh.cjs.map → expr-5JAACS4X-DhFIFxWY.cjs.map} +1 -1
  91. package/dist/{find-INTH3OLC-RdP-hsVF.mjs → find-INTH3OLC-BXgosBN-.mjs} +3 -3
  92. package/dist/{find-INTH3OLC-RdP-hsVF.mjs.map → find-INTH3OLC-BXgosBN-.mjs.map} +1 -1
  93. package/dist/{find-INTH3OLC-B0B0iGkl.cjs → find-INTH3OLC-CgGC1SmT.cjs} +3 -3
  94. package/dist/{find-INTH3OLC-B0B0iGkl.cjs.map → find-INTH3OLC-CgGC1SmT.cjs.map} +1 -1
  95. package/dist/{fold-4TQNYMSW-ytylbYbP.cjs → fold-4TQNYMSW-D9mL8Sn3.cjs} +2 -2
  96. package/dist/{fold-4TQNYMSW-ytylbYbP.cjs.map → fold-4TQNYMSW-D9mL8Sn3.cjs.map} +1 -1
  97. package/dist/{fold-4TQNYMSW-D_qTDJiB.mjs → fold-4TQNYMSW-DMdiKJ06.mjs} +2 -2
  98. package/dist/{fold-4TQNYMSW-D_qTDJiB.mjs.map → fold-4TQNYMSW-DMdiKJ06.mjs.map} +1 -1
  99. package/dist/{grep-V3LQVMRQ-DwK2lHc5.mjs → grep-V3LQVMRQ-BKB3zi73.mjs} +4 -4
  100. package/dist/{grep-V3LQVMRQ-DwK2lHc5.mjs.map → grep-V3LQVMRQ-BKB3zi73.mjs.map} +1 -1
  101. package/dist/{grep-V3LQVMRQ-BBKdYjFL.cjs → grep-V3LQVMRQ-DdECgTsM.cjs} +4 -4
  102. package/dist/{grep-V3LQVMRQ-BBKdYjFL.cjs.map → grep-V3LQVMRQ-DdECgTsM.cjs.map} +1 -1
  103. package/dist/{gzip-O5ASJAFY--t4Ce_9v.cjs → gzip-O5ASJAFY-DXYfhNMl.cjs} +2 -2
  104. package/dist/{gzip-O5ASJAFY--t4Ce_9v.cjs.map → gzip-O5ASJAFY-DXYfhNMl.cjs.map} +1 -1
  105. package/dist/{gzip-O5ASJAFY-CeiWqkFz.mjs → gzip-O5ASJAFY-qGwUq87o.mjs} +2 -2
  106. package/dist/{gzip-O5ASJAFY-CeiWqkFz.mjs.map → gzip-O5ASJAFY-qGwUq87o.mjs.map} +1 -1
  107. package/dist/{head-442HYESI-DtllcF1s.mjs → head-442HYESI-C6Z7-vE9.mjs} +2 -2
  108. package/dist/{head-442HYESI-DtllcF1s.mjs.map → head-442HYESI-C6Z7-vE9.mjs.map} +1 -1
  109. package/dist/{head-442HYESI-DQCuZDHN.cjs → head-442HYESI-j5KhFbpE.cjs} +2 -2
  110. package/dist/{head-442HYESI-DQCuZDHN.cjs.map → head-442HYESI-j5KhFbpE.cjs.map} +1 -1
  111. package/dist/{help-HZ6M2CKN-B_6MZaoj.cjs → help-HZ6M2CKN-C8nI-RQW.cjs} +2 -2
  112. package/dist/{help-HZ6M2CKN-B_6MZaoj.cjs.map → help-HZ6M2CKN-C8nI-RQW.cjs.map} +1 -1
  113. package/dist/{help-HZ6M2CKN-C9cpA_J5.mjs → help-HZ6M2CKN-CZ6qTcLB.mjs} +2 -2
  114. package/dist/{help-HZ6M2CKN-C9cpA_J5.mjs.map → help-HZ6M2CKN-CZ6qTcLB.mjs.map} +1 -1
  115. package/dist/{html-to-markdown-JW4MSQZO-DqeKb1nJ.mjs → html-to-markdown-JW4MSQZO-DUhiVkMF.mjs} +3 -3
  116. package/dist/{html-to-markdown-JW4MSQZO-DqeKb1nJ.mjs.map → html-to-markdown-JW4MSQZO-DUhiVkMF.mjs.map} +1 -1
  117. package/dist/{html-to-markdown-JW4MSQZO-DswlYeG4.cjs → html-to-markdown-JW4MSQZO-g6j8npLf.cjs} +3 -3
  118. package/dist/{html-to-markdown-JW4MSQZO-DswlYeG4.cjs.map → html-to-markdown-JW4MSQZO-g6j8npLf.cjs.map} +1 -1
  119. package/dist/internal.cjs +1 -1
  120. package/dist/internal.mjs +1 -1
  121. package/dist/{join-TBRGI3LQ-CMRDiRTo.cjs → join-TBRGI3LQ-CbBwIms1.cjs} +2 -2
  122. package/dist/{join-TBRGI3LQ-CMRDiRTo.cjs.map → join-TBRGI3LQ-CbBwIms1.cjs.map} +1 -1
  123. package/dist/{join-TBRGI3LQ-B30ZmR0Q.mjs → join-TBRGI3LQ-CytgtxxD.mjs} +2 -2
  124. package/dist/{join-TBRGI3LQ-B30ZmR0Q.mjs.map → join-TBRGI3LQ-CytgtxxD.mjs.map} +1 -1
  125. package/dist/{jq-4XLYLOS5-DQ6iLRD3.mjs → jq-4XLYLOS5-BhbSj1D9.mjs} +4 -4
  126. package/dist/{jq-4XLYLOS5-DQ6iLRD3.mjs.map → jq-4XLYLOS5-BhbSj1D9.mjs.map} +1 -1
  127. package/dist/{jq-4XLYLOS5-ooK5g6Fs.cjs → jq-4XLYLOS5-C90BkvNt.cjs} +4 -4
  128. package/dist/{jq-4XLYLOS5-ooK5g6Fs.cjs.map → jq-4XLYLOS5-C90BkvNt.cjs.map} +1 -1
  129. package/dist/{js-exec-N5KEZBH7-CjOi5GO8.mjs → js-exec-N5KEZBH7-B2gt37yR.mjs} +3 -3
  130. package/dist/{js-exec-N5KEZBH7-CjOi5GO8.mjs.map → js-exec-N5KEZBH7-B2gt37yR.mjs.map} +1 -1
  131. package/dist/{js-exec-N5KEZBH7-XVj9n9p1.cjs → js-exec-N5KEZBH7-Mu2CT-LK.cjs} +3 -3
  132. package/dist/{js-exec-N5KEZBH7-XVj9n9p1.cjs.map → js-exec-N5KEZBH7-Mu2CT-LK.cjs.map} +1 -1
  133. package/dist/{lib-CA1jBj20.cjs → lib-B8audCXM.cjs} +2 -2
  134. package/dist/{lib-CA1jBj20.cjs.map → lib-B8audCXM.cjs.map} +1 -1
  135. package/dist/{lib-C7W1TYft.mjs → lib-r4uXvKzY.mjs} +2 -2
  136. package/dist/{lib-C7W1TYft.mjs.map → lib-r4uXvKzY.mjs.map} +1 -1
  137. package/dist/{ln-4LGSXXGD-BE8ne5S9.cjs → ln-4LGSXXGD-BwI1Ba1v.cjs} +2 -2
  138. package/dist/{ln-4LGSXXGD-BE8ne5S9.cjs.map → ln-4LGSXXGD-BwI1Ba1v.cjs.map} +1 -1
  139. package/dist/{ln-4LGSXXGD-BjPc8rbU.mjs → ln-4LGSXXGD-DK1HQ-Z7.mjs} +2 -2
  140. package/dist/{ln-4LGSXXGD-BjPc8rbU.mjs.map → ln-4LGSXXGD-DK1HQ-Z7.mjs.map} +1 -1
  141. package/dist/{ls-ZJGQER7M-Bg2jOL21.cjs → ls-ZJGQER7M-BH8enpfY.cjs} +2 -2
  142. package/dist/{ls-ZJGQER7M-Bg2jOL21.cjs.map → ls-ZJGQER7M-BH8enpfY.cjs.map} +1 -1
  143. package/dist/{ls-ZJGQER7M-BeFruBgl.mjs → ls-ZJGQER7M-CDvVLwGN.mjs} +2 -2
  144. package/dist/{ls-ZJGQER7M-BeFruBgl.mjs.map → ls-ZJGQER7M-CDvVLwGN.mjs.map} +1 -1
  145. package/dist/{lzma-lNLOHHZi.cjs → lzma-DRcwNt3i.cjs} +2 -2
  146. package/dist/{lzma-lNLOHHZi.cjs.map → lzma-DRcwNt3i.cjs.map} +1 -1
  147. package/dist/{md5sum-SPU24VSG-AYgghvvm.mjs → md5sum-SPU24VSG-10wb8jSM.mjs} +3 -3
  148. package/dist/{md5sum-SPU24VSG-AYgghvvm.mjs.map → md5sum-SPU24VSG-10wb8jSM.mjs.map} +1 -1
  149. package/dist/{md5sum-SPU24VSG-BIlD5qo9.cjs → md5sum-SPU24VSG-e7geuGSr.cjs} +3 -3
  150. package/dist/{md5sum-SPU24VSG-BIlD5qo9.cjs.map → md5sum-SPU24VSG-e7geuGSr.cjs.map} +1 -1
  151. package/dist/{mkdir-MEPGZOB6-DykmapJj.cjs → mkdir-MEPGZOB6-DHvBslz2.cjs} +2 -2
  152. package/dist/{mkdir-MEPGZOB6-DykmapJj.cjs.map → mkdir-MEPGZOB6-DHvBslz2.cjs.map} +1 -1
  153. package/dist/{mkdir-MEPGZOB6-H0tBQtjo.mjs → mkdir-MEPGZOB6-KgCHTAGt.mjs} +2 -2
  154. package/dist/{mkdir-MEPGZOB6-H0tBQtjo.mjs.map → mkdir-MEPGZOB6-KgCHTAGt.mjs.map} +1 -1
  155. package/dist/{mv-W5BIQ646-BXi-ExY0.cjs → mv-W5BIQ646-BvUigdVa.cjs} +2 -2
  156. package/dist/{mv-W5BIQ646-BXi-ExY0.cjs.map → mv-W5BIQ646-BvUigdVa.cjs.map} +1 -1
  157. package/dist/{mv-W5BIQ646-BbhqKmzw.mjs → mv-W5BIQ646-m6KvTj2j.mjs} +2 -2
  158. package/dist/{mv-W5BIQ646-BbhqKmzw.mjs.map → mv-W5BIQ646-m6KvTj2j.mjs.map} +1 -1
  159. package/dist/{nl-WSDW7I4O-wPl2Yq0Y.cjs → nl-WSDW7I4O-BHCgsxiV.cjs} +2 -2
  160. package/dist/{nl-WSDW7I4O-wPl2Yq0Y.cjs.map → nl-WSDW7I4O-BHCgsxiV.cjs.map} +1 -1
  161. package/dist/{nl-WSDW7I4O-CNnDTT1z.mjs → nl-WSDW7I4O-BOU_uI5i.mjs} +2 -2
  162. package/dist/{nl-WSDW7I4O-CNnDTT1z.mjs.map → nl-WSDW7I4O-BOU_uI5i.mjs.map} +1 -1
  163. package/dist/{od-WOKFDJTP-C4-ghkBs.cjs → od-WOKFDJTP-CsiFbtX8.cjs} +2 -2
  164. package/dist/{od-WOKFDJTP-C4-ghkBs.cjs.map → od-WOKFDJTP-CsiFbtX8.cjs.map} +1 -1
  165. package/dist/{od-WOKFDJTP-D5s8wG2y.mjs → od-WOKFDJTP-D9CDg_0N.mjs} +2 -2
  166. package/dist/{od-WOKFDJTP-D5s8wG2y.mjs.map → od-WOKFDJTP-D9CDg_0N.mjs.map} +1 -1
  167. package/dist/{paste-7JC6S4DX-o6U9XjU7.mjs → paste-7JC6S4DX-BPZM8va6.mjs} +2 -2
  168. package/dist/{paste-7JC6S4DX-o6U9XjU7.mjs.map → paste-7JC6S4DX-BPZM8va6.mjs.map} +1 -1
  169. package/dist/{paste-7JC6S4DX-CJ9_DYYE.cjs → paste-7JC6S4DX-DOfui9Os.cjs} +2 -2
  170. package/dist/{paste-7JC6S4DX-CJ9_DYYE.cjs.map → paste-7JC6S4DX-DOfui9Os.cjs.map} +1 -1
  171. package/dist/{printf-TWGXF445-28RqQWhG.mjs → printf-TWGXF445-BFtTTFUx.mjs} +3 -3
  172. package/dist/{printf-TWGXF445-28RqQWhG.mjs.map → printf-TWGXF445-BFtTTFUx.mjs.map} +1 -1
  173. package/dist/{printf-TWGXF445-CHj81GwC.cjs → printf-TWGXF445-CxEPw_qf.cjs} +3 -3
  174. package/dist/{printf-TWGXF445-CHj81GwC.cjs.map → printf-TWGXF445-CxEPw_qf.cjs.map} +1 -1
  175. package/dist/{python3-POMOR4OA-y8l5MsiF.mjs → python3-POMOR4OA-BrPhKjye.mjs} +3 -3
  176. package/dist/{python3-POMOR4OA-y8l5MsiF.mjs.map → python3-POMOR4OA-BrPhKjye.mjs.map} +1 -1
  177. package/dist/{python3-POMOR4OA-CgFXvSVe.cjs → python3-POMOR4OA-C4csB3z_.cjs} +3 -3
  178. package/dist/{python3-POMOR4OA-CgFXvSVe.cjs.map → python3-POMOR4OA-C4csB3z_.cjs.map} +1 -1
  179. package/dist/{rev-5EHFX4EJ-DGFN700v.cjs → rev-5EHFX4EJ-BDPraoKf.cjs} +2 -2
  180. package/dist/{rev-5EHFX4EJ-DGFN700v.cjs.map → rev-5EHFX4EJ-BDPraoKf.cjs.map} +1 -1
  181. package/dist/{rev-5EHFX4EJ-DwXsQgcN.mjs → rev-5EHFX4EJ-DT84cm7e.mjs} +2 -2
  182. package/dist/{rev-5EHFX4EJ-DwXsQgcN.mjs.map → rev-5EHFX4EJ-DT84cm7e.mjs.map} +1 -1
  183. package/dist/{rg-S4FXYXWB-UN8eCHqJ.cjs → rg-S4FXYXWB-BOtIPQjO.cjs} +3 -3
  184. package/dist/{rg-S4FXYXWB-UN8eCHqJ.cjs.map → rg-S4FXYXWB-BOtIPQjO.cjs.map} +1 -1
  185. package/dist/{rg-S4FXYXWB-D81ZWHI9.mjs → rg-S4FXYXWB-DvLBW3FF.mjs} +3 -3
  186. package/dist/{rg-S4FXYXWB-D81ZWHI9.mjs.map → rg-S4FXYXWB-DvLBW3FF.mjs.map} +1 -1
  187. package/dist/{rm-SSGETQVQ-Dqrc3jE1.mjs → rm-SSGETQVQ-CSmxrWHU.mjs} +2 -2
  188. package/dist/{rm-SSGETQVQ-Dqrc3jE1.mjs.map → rm-SSGETQVQ-CSmxrWHU.mjs.map} +1 -1
  189. package/dist/{rm-SSGETQVQ-Cl2LnNzO.cjs → rm-SSGETQVQ-mSI8N9e1.cjs} +2 -2
  190. package/dist/{rm-SSGETQVQ-Cl2LnNzO.cjs.map → rm-SSGETQVQ-mSI8N9e1.cjs.map} +1 -1
  191. package/dist/{rmdir-OC4ZLPYA-CEJSJ6A1.mjs → rmdir-OC4ZLPYA-DBRCWWxY.mjs} +2 -2
  192. package/dist/{rmdir-OC4ZLPYA-CEJSJ6A1.mjs.map → rmdir-OC4ZLPYA-DBRCWWxY.mjs.map} +1 -1
  193. package/dist/{rmdir-OC4ZLPYA-BG3p2vpE.cjs → rmdir-OC4ZLPYA-KewwQ5OQ.cjs} +2 -2
  194. package/dist/{rmdir-OC4ZLPYA-BG3p2vpE.cjs.map → rmdir-OC4ZLPYA-KewwQ5OQ.cjs.map} +1 -1
  195. package/dist/run.cjs +1 -1
  196. package/dist/run.mjs +1 -1
  197. package/dist/{sed-S5UIK574-Chy3VxE9.mjs → sed-S5UIK574-BPN7JI6S.mjs} +2 -2
  198. package/dist/{sed-S5UIK574-Chy3VxE9.mjs.map → sed-S5UIK574-BPN7JI6S.mjs.map} +1 -1
  199. package/dist/{sed-S5UIK574-1h3qcNsZ.cjs → sed-S5UIK574-D2fQ08wE.cjs} +2 -2
  200. package/dist/{sed-S5UIK574-1h3qcNsZ.cjs.map → sed-S5UIK574-D2fQ08wE.cjs.map} +1 -1
  201. package/dist/{sha1sum-2PTOAFR6-B8LW6P2v.cjs → sha1sum-2PTOAFR6-CUzO9jAy.cjs} +3 -3
  202. package/dist/{sha1sum-2PTOAFR6-B8LW6P2v.cjs.map → sha1sum-2PTOAFR6-CUzO9jAy.cjs.map} +1 -1
  203. package/dist/{sha1sum-2PTOAFR6-DKC60eG9.mjs → sha1sum-2PTOAFR6-CaclrBG7.mjs} +3 -3
  204. package/dist/{sha1sum-2PTOAFR6-DKC60eG9.mjs.map → sha1sum-2PTOAFR6-CaclrBG7.mjs.map} +1 -1
  205. package/dist/{sha256sum-NS7D3IXX-CFLb9_WC.cjs → sha256sum-NS7D3IXX-CyjoG_Fo.cjs} +3 -3
  206. package/dist/{sha256sum-NS7D3IXX-CFLb9_WC.cjs.map → sha256sum-NS7D3IXX-CyjoG_Fo.cjs.map} +1 -1
  207. package/dist/{sha256sum-NS7D3IXX-Db_9vDzm.mjs → sha256sum-NS7D3IXX-Dirjqo9R.mjs} +3 -3
  208. package/dist/{sha256sum-NS7D3IXX-Db_9vDzm.mjs.map → sha256sum-NS7D3IXX-Dirjqo9R.mjs.map} +1 -1
  209. package/dist/{sleep-X22JJINO-CQbA47u6.cjs → sleep-X22JJINO-BmN15X75.cjs} +2 -2
  210. package/dist/{sleep-X22JJINO-CQbA47u6.cjs.map → sleep-X22JJINO-BmN15X75.cjs.map} +1 -1
  211. package/dist/{sleep-X22JJINO-CczkV6Jp.mjs → sleep-X22JJINO-C85vW9bl.mjs} +2 -2
  212. package/dist/{sleep-X22JJINO-CczkV6Jp.mjs.map → sleep-X22JJINO-C85vW9bl.mjs.map} +1 -1
  213. package/dist/{sort-SW2YEO5B-DtBL2mtr.cjs → sort-SW2YEO5B-BXo_cCn8.cjs} +3 -3
  214. package/dist/{sort-SW2YEO5B-DtBL2mtr.cjs.map → sort-SW2YEO5B-BXo_cCn8.cjs.map} +1 -1
  215. package/dist/{sort-SW2YEO5B-BixT2IGq.mjs → sort-SW2YEO5B-OWnbfe9g.mjs} +3 -3
  216. package/dist/{sort-SW2YEO5B-BixT2IGq.mjs.map → sort-SW2YEO5B-OWnbfe9g.mjs.map} +1 -1
  217. package/dist/{split-4KKZZXXE-XdGKmEtG.cjs → split-4KKZZXXE-BRZ9Onc5.cjs} +2 -2
  218. package/dist/{split-4KKZZXXE-XdGKmEtG.cjs.map → split-4KKZZXXE-BRZ9Onc5.cjs.map} +1 -1
  219. package/dist/{split-4KKZZXXE-D5nTYjy5.mjs → split-4KKZZXXE-Do1z2dE5.mjs} +2 -2
  220. package/dist/{split-4KKZZXXE-D5nTYjy5.mjs.map → split-4KKZZXXE-Do1z2dE5.mjs.map} +1 -1
  221. package/dist/{sqlite3-CGOEFJAO-C-uTzpm4.cjs → sqlite3-CGOEFJAO-B6nuurF0.cjs} +3 -3
  222. package/dist/{sqlite3-CGOEFJAO-C-uTzpm4.cjs.map → sqlite3-CGOEFJAO-B6nuurF0.cjs.map} +1 -1
  223. package/dist/{sqlite3-CGOEFJAO-DJBV9PV_.mjs → sqlite3-CGOEFJAO-DrBY4xSR.mjs} +3 -3
  224. package/dist/{sqlite3-CGOEFJAO-DJBV9PV_.mjs.map → sqlite3-CGOEFJAO-DrBY4xSR.mjs.map} +1 -1
  225. package/dist/{start-xlynNay5.cjs → start-ClWb87N-.cjs} +226 -115
  226. package/dist/start-ClWb87N-.cjs.map +1 -0
  227. package/dist/{start-B8JPSU7i.mjs → start-zbLIFKlv.mjs} +226 -115
  228. package/dist/start-zbLIFKlv.mjs.map +1 -0
  229. package/dist/start.cjs +1 -1
  230. package/dist/start.mjs +1 -1
  231. package/dist/{strings-6WDHLGMX-XF_GU89U.cjs → strings-6WDHLGMX-Cja4C0R3.cjs} +2 -2
  232. package/dist/{strings-6WDHLGMX-XF_GU89U.cjs.map → strings-6WDHLGMX-Cja4C0R3.cjs.map} +1 -1
  233. package/dist/{strings-6WDHLGMX-V2dSbxzd.mjs → strings-6WDHLGMX-DPcD3lVo.mjs} +2 -2
  234. package/dist/{strings-6WDHLGMX-V2dSbxzd.mjs.map → strings-6WDHLGMX-DPcD3lVo.mjs.map} +1 -1
  235. package/dist/{tac-2STMMJYW-BqghTfkz.mjs → tac-2STMMJYW-Bap8fjvo.mjs} +2 -2
  236. package/dist/{tac-2STMMJYW-BqghTfkz.mjs.map → tac-2STMMJYW-Bap8fjvo.mjs.map} +1 -1
  237. package/dist/{tac-2STMMJYW-G1amMMPZ.cjs → tac-2STMMJYW-hqV9IWjO.cjs} +2 -2
  238. package/dist/{tac-2STMMJYW-G1amMMPZ.cjs.map → tac-2STMMJYW-hqV9IWjO.cjs.map} +1 -1
  239. package/dist/{tail-R4PCA2C4-c0nW2CyO.mjs → tail-R4PCA2C4-D8gTAJv4.mjs} +2 -2
  240. package/dist/{tail-R4PCA2C4-c0nW2CyO.mjs.map → tail-R4PCA2C4-D8gTAJv4.mjs.map} +1 -1
  241. package/dist/{tail-R4PCA2C4-CvCjQ05N.cjs → tail-R4PCA2C4-DLYInTSg.cjs} +2 -2
  242. package/dist/{tail-R4PCA2C4-CvCjQ05N.cjs.map → tail-R4PCA2C4-DLYInTSg.cjs.map} +1 -1
  243. package/dist/{tar-STHHZTZ6-B96J4oRi.mjs → tar-STHHZTZ6-BvaMjwan.mjs} +4 -4
  244. package/dist/{tar-STHHZTZ6-B96J4oRi.mjs.map → tar-STHHZTZ6-BvaMjwan.mjs.map} +1 -1
  245. package/dist/{tar-STHHZTZ6-Dfjz4EC5.cjs → tar-STHHZTZ6-C1coMUN-.cjs} +5 -5
  246. package/dist/{tar-STHHZTZ6-Dfjz4EC5.cjs.map → tar-STHHZTZ6-C1coMUN-.cjs.map} +1 -1
  247. package/dist/{tee-YUZ2FKCJ-DuUbDRxw.mjs → tee-YUZ2FKCJ-BeZbMeQg.mjs} +2 -2
  248. package/dist/{tee-YUZ2FKCJ-DuUbDRxw.mjs.map → tee-YUZ2FKCJ-BeZbMeQg.mjs.map} +1 -1
  249. package/dist/{tee-YUZ2FKCJ-BwUNKs2X.cjs → tee-YUZ2FKCJ-DZjg1j71.cjs} +2 -2
  250. package/dist/{tee-YUZ2FKCJ-BwUNKs2X.cjs.map → tee-YUZ2FKCJ-DZjg1j71.cjs.map} +1 -1
  251. package/dist/{time-D4LNBSWX-BRz7RnVy.mjs → time-D4LNBSWX-CwNJDX9k.mjs} +2 -2
  252. package/dist/{time-D4LNBSWX-BRz7RnVy.mjs.map → time-D4LNBSWX-CwNJDX9k.mjs.map} +1 -1
  253. package/dist/{time-D4LNBSWX-CbsvG2z7.cjs → time-D4LNBSWX-D0o9WKnd.cjs} +2 -2
  254. package/dist/{time-D4LNBSWX-CbsvG2z7.cjs.map → time-D4LNBSWX-D0o9WKnd.cjs.map} +1 -1
  255. package/dist/{timeout-YDCRSLPQ-C9Veu7n5.mjs → timeout-YDCRSLPQ-BYQu8FB_.mjs} +2 -2
  256. package/dist/{timeout-YDCRSLPQ-C9Veu7n5.mjs.map → timeout-YDCRSLPQ-BYQu8FB_.mjs.map} +1 -1
  257. package/dist/{timeout-YDCRSLPQ-CycIyLJm.cjs → timeout-YDCRSLPQ-gCL0dPir.cjs} +2 -2
  258. package/dist/{timeout-YDCRSLPQ-CycIyLJm.cjs.map → timeout-YDCRSLPQ-gCL0dPir.cjs.map} +1 -1
  259. package/dist/{touch-UA33VN3N-C7WkFgl9.mjs → touch-UA33VN3N-Clj615aH.mjs} +2 -2
  260. package/dist/{touch-UA33VN3N-C7WkFgl9.mjs.map → touch-UA33VN3N-Clj615aH.mjs.map} +1 -1
  261. package/dist/{touch-UA33VN3N-t4veoaI7.cjs → touch-UA33VN3N-W1buBQYM.cjs} +2 -2
  262. package/dist/{touch-UA33VN3N-t4veoaI7.cjs.map → touch-UA33VN3N-W1buBQYM.cjs.map} +1 -1
  263. package/dist/{tr-36LHWFRQ-CGja3l0p.mjs → tr-36LHWFRQ-DPz3syv0.mjs} +2 -2
  264. package/dist/{tr-36LHWFRQ-CGja3l0p.mjs.map → tr-36LHWFRQ-DPz3syv0.mjs.map} +1 -1
  265. package/dist/{tr-36LHWFRQ-BS0pC6It.cjs → tr-36LHWFRQ-DS2DvRpE.cjs} +2 -2
  266. package/dist/{tr-36LHWFRQ-BS0pC6It.cjs.map → tr-36LHWFRQ-DS2DvRpE.cjs.map} +1 -1
  267. package/dist/{tree-YLD52CNT-DSyy-MaG.mjs → tree-YLD52CNT-BbMGKPvW.mjs} +2 -2
  268. package/dist/{tree-YLD52CNT-DSyy-MaG.mjs.map → tree-YLD52CNT-BbMGKPvW.mjs.map} +1 -1
  269. package/dist/{tree-YLD52CNT-CtMWTsYT.cjs → tree-YLD52CNT-BoQBXdSr.cjs} +2 -2
  270. package/dist/{tree-YLD52CNT-CtMWTsYT.cjs.map → tree-YLD52CNT-BoQBXdSr.cjs.map} +1 -1
  271. package/dist/{unexpand-CADSA4VO-BkAfFBwc.mjs → unexpand-CADSA4VO-C0IRoV5k.mjs} +2 -2
  272. package/dist/{unexpand-CADSA4VO-BkAfFBwc.mjs.map → unexpand-CADSA4VO-C0IRoV5k.mjs.map} +1 -1
  273. package/dist/{unexpand-CADSA4VO-BF9r6Hlz.cjs → unexpand-CADSA4VO-DM36-Dne.cjs} +2 -2
  274. package/dist/{unexpand-CADSA4VO-BF9r6Hlz.cjs.map → unexpand-CADSA4VO-DM36-Dne.cjs.map} +1 -1
  275. package/dist/{uniq-XSIZR6PB-Bqd4ELx5.mjs → uniq-XSIZR6PB-DTNQOumC.mjs} +3 -3
  276. package/dist/{uniq-XSIZR6PB-Bqd4ELx5.mjs.map → uniq-XSIZR6PB-DTNQOumC.mjs.map} +1 -1
  277. package/dist/{uniq-XSIZR6PB-CE3SlFfS.cjs → uniq-XSIZR6PB-cbqtNDFd.cjs} +3 -3
  278. package/dist/{uniq-XSIZR6PB-CE3SlFfS.cjs.map → uniq-XSIZR6PB-cbqtNDFd.cjs.map} +1 -1
  279. package/dist/{wc-LF7NU4LA-CYC8jmy9.cjs → wc-LF7NU4LA-CmxEf7a9.cjs} +3 -3
  280. package/dist/{wc-LF7NU4LA-CYC8jmy9.cjs.map → wc-LF7NU4LA-CmxEf7a9.cjs.map} +1 -1
  281. package/dist/{wc-LF7NU4LA-CtqoQj3c.mjs → wc-LF7NU4LA-CrZ2_f9J.mjs} +3 -3
  282. package/dist/{wc-LF7NU4LA-CtqoQj3c.mjs.map → wc-LF7NU4LA-CrZ2_f9J.mjs.map} +1 -1
  283. package/dist/{with-project-scope-CTrtQy8z.mjs → with-project-scope-5Gfc8263.mjs} +2 -2
  284. package/dist/{with-project-scope-CTrtQy8z.mjs.map → with-project-scope-5Gfc8263.mjs.map} +1 -1
  285. package/dist/{with-project-scope-DZDKeaiS.cjs → with-project-scope-Hh6iqeoh.cjs} +2 -2
  286. package/dist/{with-project-scope-DZDKeaiS.cjs.map → with-project-scope-Hh6iqeoh.cjs.map} +1 -1
  287. package/dist/{xan-Y6WF3IRG-DWQra2c5.cjs → xan-Y6WF3IRG-CdBO57j3.cjs} +6 -6
  288. package/dist/{xan-Y6WF3IRG-DWQra2c5.cjs.map → xan-Y6WF3IRG-CdBO57j3.cjs.map} +1 -1
  289. package/dist/{xan-Y6WF3IRG--gAjwdYb.mjs → xan-Y6WF3IRG-rLQOC4c5.mjs} +6 -6
  290. package/dist/{xan-Y6WF3IRG--gAjwdYb.mjs.map → xan-Y6WF3IRG-rLQOC4c5.mjs.map} +1 -1
  291. package/dist/{xan-view-HDVKHFC2-CFde5tqZ.mjs → xan-view-HDVKHFC2-BLteyNnh.mjs} +3 -3
  292. package/dist/{xan-view-HDVKHFC2-CFde5tqZ.mjs.map → xan-view-HDVKHFC2-BLteyNnh.mjs.map} +1 -1
  293. package/dist/{xan-view-HDVKHFC2-Pq5GdBxq.cjs → xan-view-HDVKHFC2-CJxt0KHg.cjs} +3 -3
  294. package/dist/{xan-view-HDVKHFC2-Pq5GdBxq.cjs.map → xan-view-HDVKHFC2-CJxt0KHg.cjs.map} +1 -1
  295. package/dist/{xargs-MGZPH7AX-CB3V2Mdc.cjs → xargs-MGZPH7AX-BwI33_UH.cjs} +2 -2
  296. package/dist/{xargs-MGZPH7AX-CB3V2Mdc.cjs.map → xargs-MGZPH7AX-BwI33_UH.cjs.map} +1 -1
  297. package/dist/{xargs-MGZPH7AX-BkmiflqU.mjs → xargs-MGZPH7AX-zJMHUR_2.mjs} +2 -2
  298. package/dist/{xargs-MGZPH7AX-BkmiflqU.mjs.map → xargs-MGZPH7AX-zJMHUR_2.mjs.map} +1 -1
  299. package/dist/{yq-4QJW3EQG-VXsgb_hI.mjs → yq-4QJW3EQG-B_jhRTwa.mjs} +3 -3
  300. package/dist/{yq-4QJW3EQG-VXsgb_hI.mjs.map → yq-4QJW3EQG-B_jhRTwa.mjs.map} +1 -1
  301. package/dist/{yq-4QJW3EQG-DErcLiTm.cjs → yq-4QJW3EQG-CpEslf6d.cjs} +3 -3
  302. package/dist/{yq-4QJW3EQG-DErcLiTm.cjs.map → yq-4QJW3EQG-CpEslf6d.cjs.map} +1 -1
  303. package/package.json +1 -1
  304. package/dist/dist-06B__3tk.mjs.map +0 -1
  305. package/dist/dist-CyAg630h.cjs.map +0 -1
  306. package/dist/dist-Da9lzYN7.mjs.map +0 -1
  307. package/dist/dist-mntRulD_.cjs.map +0 -1
  308. package/dist/start-B8JPSU7i.mjs.map +0 -1
  309. package/dist/start-xlynNay5.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";
@@ -10026,12 +10026,13 @@ const AppAuthKindSchema = z.enum([
10026
10026
  "api_key",
10027
10027
  "keystroke"
10028
10028
  ]);
10029
- /** Composio auth scheme for API-key style connections. */
10029
+ /** Composio auth scheme for API-key / no-auth style connections. */
10030
10030
  const AppCredentialSchemeSchema = z.enum([
10031
10031
  "API_KEY",
10032
10032
  "BEARER_TOKEN",
10033
10033
  "BASIC",
10034
- "BASIC_WITH_JWT"
10034
+ "BASIC_WITH_JWT",
10035
+ "NO_AUTH"
10035
10036
  ]);
10036
10037
  /**
10037
10038
  * Where app metadata and execution are sourced (e.g. native, composio, pipedream, custom).
@@ -10153,7 +10154,9 @@ const AppCatalogSummarySchema = z.object({
10153
10154
  /** Endpoint URL for MCP, OpenAPI, or GraphQL custom apps. */
10154
10155
  url: z.string().url().nullable().optional(),
10155
10156
  /** True when the app has a non-empty credential field template. */
10156
- hasCredentialFields: z.boolean().optional()
10157
+ hasCredentialFields: z.boolean().optional(),
10158
+ /** Composio auth scheme — present for API-key and NO_AUTH apps so the picker can choose a flow. */
10159
+ credentialScheme: AppCredentialSchemeSchema.optional()
10157
10160
  });
10158
10161
  /**
10159
10162
  * Full connectable integration detail (scopes + credential template). An "app"
@@ -10163,7 +10166,7 @@ const AppCatalogEntrySchema = AppCatalogSummarySchema.extend({
10163
10166
  oauthScopes: z.array(OAuthScopeOptionSchema),
10164
10167
  /** Custom api_key apps — vault field template for connect UI and sync. */
10165
10168
  credentialFields: AppCredentialFieldsSchema.optional(),
10166
- /** Composio auth scheme when credentialFields are present. */
10169
+ /** Composio auth scheme for API-key or NO_AUTH connections. */
10167
10170
  credentialScheme: AppCredentialSchemeSchema.optional(),
10168
10171
  /** When present, the app supports agent gateway bindings (external channels). */
10169
10172
  gateway: AppGatewaySchema.optional()
@@ -10240,6 +10243,7 @@ function mcpProbeToAppTemplate(probe) {
10240
10243
  };
10241
10244
  return {
10242
10245
  authKind: "api_key",
10246
+ credentialScheme: "NO_AUTH",
10243
10247
  credentialFields: {},
10244
10248
  oauthScopes: [],
10245
10249
  url
@@ -10638,8 +10642,12 @@ const AppCredentialScopeSchema = z.enum([
10638
10642
  "project",
10639
10643
  "organization"
10640
10644
  ]);
10641
- /** How the credential was connected (OAuth vs manual api-key entry). */
10642
- const AppCredentialConnectionKindSchema = z.enum(["oauth", "manual"]);
10645
+ /** How the credential was connected (OAuth, manual api-key entry, or no-auth). */
10646
+ const AppCredentialConnectionKindSchema = z.enum([
10647
+ "oauth",
10648
+ "manual",
10649
+ "none"
10650
+ ]);
10643
10651
  /** Connect-dialog permission preset for OAuth scope selection. */
10644
10652
  const OAuthPermissionModeSchema = z.enum(["default", "restricted"]);
10645
10653
  const optionalTimestamp$1 = z.string().optional();
@@ -10736,6 +10744,11 @@ const CreateCredentialsRequestSchema = CredentialTargetsFieldsSchema.extend({
10736
10744
  message: "OAuth credentials are created via the OAuth callback",
10737
10745
  path: ["connectionKind"]
10738
10746
  });
10747
+ if (input.connectionKind === "none" && input.value) ctx.addIssue({
10748
+ code: "custom",
10749
+ message: "value is not allowed for no-auth connections",
10750
+ path: ["value"]
10751
+ });
10739
10752
  });
10740
10753
  /** Request body for `PATCH /api/credentials/:id`. */
10741
10754
  const UpdateCredentialRequestSchema = z.object({
@@ -13194,7 +13207,7 @@ function registerWorkflowRunGetter(fn) {
13194
13207
  }
13195
13208
  new AsyncLocalStorage();
13196
13209
  //#endregion
13197
- //#region ../../packages/credentials/dist/store-C6DRzb2o.mjs
13210
+ //#region ../../packages/credentials/dist/store-B7IWQPwD.mjs
13198
13211
  function normalizeRow(row) {
13199
13212
  const { projectId: _projectId, ...rest } = row;
13200
13213
  return rest;
@@ -24850,21 +24863,29 @@ var StreamableHTTPClientTransport = class {
24850
24863
  };
24851
24864
  //#endregion
24852
24865
  //#region ../../packages/mcp/dist/index.mjs
24853
- /** Union OAuth scope names from metadata sources, preserving first-seen order. */
24854
- function mergeOAuthScopes(...lists) {
24855
- const seen = /* @__PURE__ */ new Set();
24856
- const result = [];
24857
- for (const list of lists) {
24858
- if (!list?.length) continue;
24859
- for (const scope of list) {
24860
- const trimmed = scope.trim();
24861
- if (trimmed && !seen.has(trimmed)) {
24862
- seen.add(trimmed);
24863
- result.push(trimmed);
24864
- }
24865
- }
24866
- }
24867
- return result;
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
+ };
24868
24889
  }
24869
24890
  /** Thrown when a URL is not safe for server-side outbound fetch (SSRF guard). */
24870
24891
  var PublicHttpUrlError = class extends Error {
@@ -24977,6 +24998,7 @@ function createPublicHttpFetch(fetchFn = fetch) {
24977
24998
  });
24978
24999
  };
24979
25000
  }
25001
+ const MCP_AUTHORIZATION_PROTOCOL_VERSION = "2025-11-25";
24980
25002
  function resourceNameFromMetadata(metadata) {
24981
25003
  return metadata?.resource_name?.trim() || void 0;
24982
25004
  }
@@ -24996,6 +25018,74 @@ async function probeUnauthenticatedStatus(url, fetchFn) {
24996
25018
  return {};
24997
25019
  }
24998
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
+ }
24999
25089
  function scopesFromMetadata(metadata) {
25000
25090
  if (!metadata?.scopes_supported?.length) return [];
25001
25091
  return metadata.scopes_supported;
@@ -25008,68 +25098,37 @@ function logProbeFallback(phase, error) {
25008
25098
  async function probeMcpAuth(url, fetchFn = fetch) {
25009
25099
  assertPublicHttpUrl(url);
25010
25100
  const safeFetch = createPublicHttpFetch(fetchFn);
25011
- const serverUrl = new URL(url);
25012
- const { status, wwwAuthenticate } = await probeUnauthenticatedStatus(url, safeFetch);
25013
- let resourceMetadataUrl;
25014
- if (wwwAuthenticate) {
25015
- resourceMetadataUrl = extractWWWAuthenticateParams(new Response(null, { headers: { "www-authenticate": wwwAuthenticate } })).resourceMetadataUrl?.toString();
25016
- if (resourceMetadataUrl) assertPublicHttpUrl(resourceMetadataUrl);
25017
- }
25101
+ const initial = await probeUnauthenticatedStatus(url, safeFetch);
25018
25102
  try {
25019
- const discovered = await discoverOAuthServerInfo(serverUrl, {
25020
- fetchFn: safeFetch,
25021
- ...resourceMetadataUrl ? { resourceMetadataUrl: new URL(resourceMetadataUrl) } : {}
25022
- });
25103
+ const discovered = await discoverMcpOAuthServerFromProbe(url, safeFetch, initial);
25023
25104
  const metadata = discovered.authorizationServerMetadata;
25024
25105
  if (metadata?.authorization_endpoint && metadata.token_endpoint) return {
25025
25106
  url,
25026
25107
  mode: "oauth",
25027
- unauthenticatedStatus: status,
25108
+ unauthenticatedStatus: initial.status,
25028
25109
  oauth: {
25029
25110
  issuer: metadata.issuer,
25030
25111
  authorizationEndpoint: metadata.authorization_endpoint,
25031
25112
  tokenEndpoint: metadata.token_endpoint,
25032
25113
  registrationEndpoint: metadata.registration_endpoint,
25033
- scopes: mergeOAuthScopes(scopesFromMetadata(metadata), scopesFromMetadata(discovered.resourceMetadata)),
25114
+ scopes: discovered.challengeScope ? discovered.challengeScope.split(/\s+/).filter(Boolean) : scopesFromMetadata(discovered.resourceMetadata),
25034
25115
  resource: discovered.resourceMetadata?.resource,
25035
25116
  resourceName: resourceNameFromMetadata(discovered.resourceMetadata)
25036
25117
  }
25037
25118
  };
25038
25119
  } catch (error) {
25039
- logProbeFallback("discoverOAuthServerInfo", error);
25040
- }
25041
- try {
25042
- const protectedResource = await discoverOAuthProtectedResourceMetadata(serverUrl, {}, safeFetch);
25043
- const authorizationServerUrl = protectedResource.authorization_servers?.[0] ?? serverUrl.origin;
25044
- assertPublicHttpUrl(authorizationServerUrl);
25045
- const metadata = await discoverAuthorizationServerMetadata(authorizationServerUrl, { fetchFn: safeFetch });
25046
- if (metadata?.authorization_endpoint && metadata.token_endpoint) return {
25047
- url,
25048
- mode: "oauth",
25049
- unauthenticatedStatus: status,
25050
- oauth: {
25051
- issuer: metadata.issuer,
25052
- authorizationEndpoint: metadata.authorization_endpoint,
25053
- tokenEndpoint: metadata.token_endpoint,
25054
- registrationEndpoint: metadata.registration_endpoint,
25055
- scopes: mergeOAuthScopes(scopesFromMetadata(metadata), scopesFromMetadata(protectedResource)),
25056
- resource: protectedResource.resource,
25057
- resourceName: resourceNameFromMetadata(protectedResource)
25058
- }
25059
- };
25060
- } catch (error) {
25061
- logProbeFallback("discoverOAuthProtectedResourceMetadata", error);
25120
+ logProbeFallback("discoverMcpOAuthServer", error);
25062
25121
  }
25063
- if (status === 401 || status === 403) return {
25122
+ if (initial.status === 401 || initial.status === 403) return {
25064
25123
  url,
25065
25124
  mode: "token",
25066
- unauthenticatedStatus: status,
25125
+ unauthenticatedStatus: initial.status,
25067
25126
  scheme: "BEARER_TOKEN"
25068
25127
  };
25069
25128
  return {
25070
25129
  url,
25071
25130
  mode: "none",
25072
- unauthenticatedStatus: status
25131
+ unauthenticatedStatus: initial.status
25073
25132
  };
25074
25133
  }
25075
25134
  /** Best-effort server metadata for no-auth MCP servers (initialize handshake). */
@@ -31886,11 +31945,70 @@ async function describeCredentialBindings(requirements, context) {
31886
31945
  preload
31887
31946
  }, preload));
31888
31947
  }
31889
- function encodeOAuthState(payload) {
31890
- return encryptCredentialPayload(JSON.stringify(payload));
31891
- }
31892
- function decodeOAuthState(state) {
31893
- return JSON.parse(decryptCredentialPayload(state));
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
+ }
31894
32012
  }
31895
32013
  function oauthAppMetadata(oauth, mcpUrl, options) {
31896
32014
  return {
@@ -31901,7 +32019,9 @@ function oauthAppMetadata(oauth, mcpUrl, options) {
31901
32019
  resource: oauth.resource,
31902
32020
  issuer: oauth.issuer,
31903
32021
  scopes: oauth.scopes,
31904
- ...options?.tokenEndpointAuthMethod ? { tokenEndpointAuthMethod: options.tokenEndpointAuthMethod } : {}
32022
+ ...options?.tokenEndpointAuthMethod ? { tokenEndpointAuthMethod: options.tokenEndpointAuthMethod } : {},
32023
+ ...options?.clientRegistrationMode ? { clientRegistrationMode: options.clientRegistrationMode } : {},
32024
+ ...options?.redirectUri ? { redirectUri: options.redirectUri } : {}
31905
32025
  };
31906
32026
  }
31907
32027
  function oauthClientSecretForStorage(clientSecret) {
@@ -31931,6 +32051,63 @@ async function discoverMcpApp(url) {
31931
32051
  }
31932
32052
  };
31933
32053
  }
32054
+ var McpOAuthConnectError = class extends Error {
32055
+ phase;
32056
+ diagnostics;
32057
+ constructor(phase, message, diagnostics = {}) {
32058
+ super(message);
32059
+ this.phase = phase;
32060
+ this.diagnostics = diagnostics;
32061
+ this.name = "McpOAuthConnectError";
32062
+ }
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
+ }
31934
32111
  /**
31935
32112
  * Prefer CIMD (URL client_id) when the AS advertises support and we have an
31936
32113
  * HTTPS metadata URL; otherwise DCR. Localhost HTTP cannot be a CIMD client_id
@@ -31941,58 +32118,141 @@ async function discoverMcpApp(url) {
31941
32118
  */
31942
32119
  async function resolveMcpOAuthClientInformation(options) {
31943
32120
  const supportsCimd = options.metadata.client_id_metadata_document_supported === true;
31944
- if (supportsCimd && Boolean(options.clientMetadataUrl) && isHttpsUrl(options.clientMetadataUrl) && options.clientMetadataUrl) return {
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 {
31945
32123
  client_id: options.clientMetadataUrl,
31946
- token_endpoint_auth_method: "none"
31947
- };
31948
- if (options.metadata.registration_endpoint) return registerClient(options.authorizationServerUrl, {
31949
- metadata: options.metadata,
31950
- clientMetadata: {
31951
- client_name: "Keystroke",
31952
- redirect_uris: [options.redirectUri],
31953
- grant_types: ["authorization_code", "refresh_token"],
31954
- response_types: ["code"],
31955
- token_endpoint_auth_method: "client_secret_post"
31956
- },
31957
- scope: options.scope
31958
- });
31959
- if (supportsCimd) throw new Error("Authorization server requires Client ID Metadata Documents, but Keystroke has no HTTPS client metadata URL configured (set PUBLIC_PLATFORM_URL or PUBLIC_PLATFORM_PROXY_URL to an HTTPS origin)");
32124
+ token_endpoint_auth_method: "none",
32125
+ registrationMode: "cimd"
32126
+ };
32127
+ if (options.metadata.registration_endpoint) {
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;
32139
+ try {
32140
+ const safeFetch = createPublicHttpFetch();
32141
+ return validateRegisteredClientInformation(await registerClient(options.authorizationServerUrl, {
32142
+ metadata: options.metadata,
32143
+ clientMetadata: {
32144
+ client_name: "Keystroke",
32145
+ redirect_uris: [options.redirectUri],
32146
+ grant_types: grantTypes,
32147
+ response_types: ["code"],
32148
+ token_endpoint_auth_method: tokenEndpointAuthMethod
32149
+ },
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);
32157
+ } catch (error) {
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,
32160
+ authorizationServerUrl: options.authorizationServerUrl,
32161
+ registrationEndpoint: options.metadata.registration_endpoint,
32162
+ grantTypes,
32163
+ tokenEndpointAuthMethod,
32164
+ ...providerHttpStatus ? { providerHttpStatus } : {},
32165
+ ...oauthErrorCode(error) ? { oauthError: oauthErrorCode(error) } : {}
32166
+ });
32167
+ }
32168
+ }
32169
+ if (supportsCimd) throw new Error("Authorization server supports Client ID Metadata Documents, but not Keystroke's public-client authentication or HTTPS metadata URL");
31960
32170
  throw new Error("MCP authorization server does not support Client ID Metadata Documents or Dynamic Client Registration");
31961
32171
  }
31962
32172
  async function beginMcpOAuthConnect(options) {
31963
32173
  const appUrl = options.app.url?.trim();
31964
32174
  if (!appUrl || options.app.source !== "mcp" || options.app.authKind !== "oauth") throw new Error("App is not a direct MCP OAuth app");
31965
- const discovered = await discoverOAuthServerInfo(new URL(appUrl), {});
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
+ }
31966
32184
  const metadata = discovered.authorizationServerMetadata;
31967
- if (!metadata?.authorization_endpoint || !metadata.token_endpoint) throw new Error("MCP server does not expose OAuth authorization metadata");
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
+ }
31968
32206
  const oauth = {
31969
32207
  issuer: metadata.issuer,
31970
32208
  authorizationEndpoint: metadata.authorization_endpoint,
31971
32209
  tokenEndpoint: metadata.token_endpoint,
31972
32210
  registrationEndpoint: metadata.registration_endpoint,
31973
- scopes: mergeOAuthScopes(metadata.scopes_supported, discovered.resourceMetadata?.scopes_supported, options.app.oauthScopes.map((scope) => scope.name)),
31974
- resource: discovered.resourceMetadata?.resource,
32211
+ scopes: discovered.challengeScope ? discovered.challengeScope.split(/\s+/).filter(Boolean) : discovered.resourceMetadata.scopes_supported ?? [],
32212
+ resource: resourceUrl.toString(),
31975
32213
  resourceName: discovered.resourceMetadata?.resource_name?.trim() || void 0
31976
32214
  };
31977
- const defaultScopeNames = options.app.oauthScopes.flatMap((entry) => entry.defaultSelected !== false ? [entry.name] : []);
31978
- const scope = options.input.scopes?.join(" ") || (defaultScopeNames.length > 0 ? defaultScopeNames.join(" ") : oauth.scopes.join(" "));
31979
- const clientInformation = await resolveMcpOAuthClientInformation({
31980
- authorizationServerUrl: discovered.authorizationServerUrl,
31981
- metadata,
31982
- redirectUri: options.redirectUri,
31983
- scope: scope || void 0,
31984
- clientMetadataUrl: options.clientMetadataUrl
31985
- });
31986
- await ensureOAuthApp({
31987
- slug: options.app.slug,
31988
- provider: "mcp",
31989
- tokenStrategy: "refresh",
31990
- clientId: clientInformation.client_id,
31991
- clientSecret: oauthClientSecretForStorage(clientInformation.client_secret),
31992
- metadata: oauthAppMetadata(oauth, appUrl, { tokenEndpointAuthMethod: clientInformation.token_endpoint_auth_method })
31993
- });
31994
- const resourceUrl = oauth.resource ? new URL(oauth.resource) : new URL(appUrl);
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
+ }
31995
32254
  const statePayload = {
32255
+ correlationId,
31996
32256
  codeVerifier: "",
31997
32257
  appSlug: options.app.slug,
31998
32258
  organizationId: options.organizationId,
@@ -32004,76 +32264,107 @@ async function beginMcpOAuthConnect(options) {
32004
32264
  authorizationServerUrl: discovered.authorizationServerUrl,
32005
32265
  resource: oauth.resource,
32006
32266
  oauthMetadata: oauth,
32267
+ authorizationServerMetadata: metadata,
32007
32268
  mcpUrl: appUrl,
32008
32269
  redirectUri: options.redirectUri,
32009
32270
  clientId: clientInformation.client_id,
32010
32271
  clientSecret: clientInformation.client_secret,
32011
32272
  tokenEndpointAuthMethod: clientInformation.token_endpoint_auth_method,
32273
+ clientRegistrationMode: clientInformation.registrationMode,
32012
32274
  label: options.input.label,
32013
32275
  credentialInstanceId: options.input.credentialInstanceId
32014
32276
  };
32015
- const { authorizationUrl, codeVerifier } = await startAuthorization(discovered.authorizationServerUrl, {
32016
- metadata,
32017
- clientInformation,
32018
- redirectUrl: options.redirectUri,
32019
- scope: scope || void 0,
32020
- resource: resourceUrl
32021
- });
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
+ }
32022
32294
  statePayload.codeVerifier = codeVerifier;
32023
- const state = encodeOAuthState(statePayload);
32295
+ const state = await encodeOAuthState(statePayload);
32024
32296
  authorizationUrl.searchParams.set("state", state);
32025
32297
  return { authorizeUrl: authorizationUrl.toString() };
32026
32298
  }
32027
32299
  async function completeMcpOAuthConnect(options) {
32028
- const payload = decodeOAuthState(options.state);
32029
- const metadata = {
32030
- issuer: payload.oauthMetadata.issuer ?? payload.authorizationServerUrl,
32031
- authorization_endpoint: payload.oauthMetadata.authorizationEndpoint,
32032
- token_endpoint: payload.oauthMetadata.tokenEndpoint,
32033
- registration_endpoint: payload.oauthMetadata.registrationEndpoint,
32034
- scopes_supported: payload.oauthMetadata.scopes,
32035
- response_types_supported: ["code"],
32036
- code_challenge_methods_supported: ["S256"]
32037
- };
32300
+ const { payload } = options;
32038
32301
  const resourceUrl = payload.resource ? new URL(payload.resource) : void 0;
32039
- const tokens = await exchangeAuthorization(payload.authorizationServerUrl, {
32040
- metadata,
32041
- clientInformation: {
32042
- client_id: payload.clientId,
32043
- ...payload.clientSecret ? { client_secret: payload.clientSecret } : {},
32044
- ...payload.tokenEndpointAuthMethod ? { token_endpoint_auth_method: payload.tokenEndpointAuthMethod } : {}
32045
- },
32046
- authorizationCode: options.code,
32047
- codeVerifier: payload.codeVerifier,
32048
- redirectUri: payload.redirectUri,
32049
- resource: resourceUrl
32050
- });
32051
- const { id: oauthAppId } = await ensureOAuthApp({
32052
- slug: payload.appSlug,
32053
- provider: "mcp",
32054
- tokenStrategy: "refresh",
32055
- clientId: payload.clientId,
32056
- clientSecret: oauthClientSecretForStorage(payload.clientSecret),
32057
- metadata: oauthAppMetadata(payload.oauthMetadata, payload.mcpUrl, { tokenEndpointAuthMethod: payload.tokenEndpointAuthMethod })
32058
- });
32059
- const connectionId = await saveOAuthConnection({
32060
- appId: oauthAppId,
32061
- externalId: payload.userId,
32062
- accessToken: tokens.access_token,
32063
- refreshToken: tokens.refresh_token,
32064
- accessTokenExpiresAt: accessTokenExpiresAt(tokens.expires_in),
32065
- grantedScopes: grantedScopesFromToken(tokens.scope, payload.oauthMetadata.scopes),
32066
- metadata: { mcpUrl: payload.oauthMetadata.resource }
32067
- });
32068
- await ensureOAuthCredentialInstance({
32069
- credentialKey: payload.appSlug,
32070
- connectionId,
32071
- accountLabel: payload.label,
32072
- externalId: payload.userId,
32073
- userLabel: payload.label,
32074
- targets: payload.scopeTargets,
32075
- credentialInstanceId: payload.credentialInstanceId
32076
- });
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
+ }
32077
32368
  return {
32078
32369
  appSlug: payload.appSlug,
32079
32370
  connectionId,
@@ -37704,6 +37995,6 @@ function minioStoragePlugin(options = {}) {
37704
37995
  };
37705
37996
  }
37706
37997
  //#endregion
37707
- export { CompleteProjectArtifactResponseSchema as $, TriggerAttachmentUpdateRequestSchema as $n, mapUserOrganization as $r, ListProjectFilesResponseSchema as $t, describeCredentialBindings as A, ProjectSourceResourcesSchema as An, WorkspaceTriggerFileSchema as Ar, GraphqlDiscoverRequestSchema as At, setCredentialInstanceSecret as B, SkillSummaryListResponseSchema as Bn, displayCredentialAppName as Br, ListAgentMemoryFilesResponseSchema as Bt, userAvatarStorageKey as C, PresignUserAvatarRequestSchema as Cn, WorkflowFormUpsertBodySchema as Cr, FilePartSchema as Ct, beginMcpOAuthConnect as D, ProjectSettingsResponseSchema as Dn, WorkflowSummaryListResponseSchema as Dr, GetCredentialResponseSchema as Dt, cronPayloadSchema as E, ProjectResponseSchema as En, WorkflowSummaryDetailResponseSchema as Er, GetAppCatalogEntryResponseSchema as Et, withCredentialAssignments as F, PublishedFormListResponseSchema as Fn, agentMemoryFileId as Fr, HistoryRunListResponseSchema as Ft, AgentMemoryFileSummarySchema as G, StartMcpOAuthConnectionResultSchema as Gn, listenPortFromPublicUrl as Gr, ListCredentialsPageQuerySchema as Gt, ACTIVE_ORG_HEADER as H, SlugAvailabilityQuerySchema as Hn, isHelloWorldTemplateSlug as Hr, ListApiKeysResponseSchema as Ht, PublicHttpUrlError as I, PublishedFormSchema as In, agentWorkspaceFileId as Ir, InviteOrganizationMembersRequestSchema as It, AgentSummarySchema as J, SubmitMarketingContactResponseSchema as Jn, mapProject as Jr, ListOrganizationInvitationsResponseSchema as Jt, AgentSummaryDetailResponseSchema as K, StoredProjectSourceManifestSchema as Kn, mapOrganizationInvitation as Kr, ListCredentialsPageResponseSchema as Kt, deleteCredentialInstanceSecret as L, RecentResourceListResponseSchema as Ln, buildCredentialInstanceLabel as Lr, InviteOrganizationMembersResponseSchema as Lt, discoverMcpApp as M, PublicFormSubmitBodySchema as Mn, WorkspaceTriggerOverviewSchema as Mr, HistoryRunCancelResponseSchema as Mt, discoverOpenApiApp as N, PublicFormSubmitResponseSchema as Nn, WorkspaceTriggerRunListResponseSchema as Nr, HistoryRunDetailResponseSchema as Nt, completeMcpOAuthConnect as O, ProjectSlugAvailabilityQuerySchema as On, WorkflowSummarySchema as Or, GetCustomAppResponseSchema as Ot, isDiscoveryError as P, PublicModelsResponseSchema as Pn, WorkspaceWorkflowOverviewSchema as Pr, HistoryRunListQuerySchema as Pt, ChannelPlatformSchema as Q, TemplateKindSchema as Qn, mapProjectSettings as Qr, ListProjectDeploymentsResponseSchema as Qt, deleteManagedServiceCredential$1 as R, RecentResourceSchema as Rn, chatAttachmentExtension as Rr, InviteProjectMembersRequestSchema as Rt, publicKeystrokeAssetsObjectUrl as S, PresignProjectSourceResponseSchema as Sn, WorkflowFormResponseSchema as Sr, ErrorResponseSchema as St, defaultSchedulerPlugin as T, ProjectReachabilityResponseSchema as Tn, WorkflowRunInputsSchema as Tr, FinalizeCustomAppLogoResponseSchema as Tt, AcceptOrganizationInvitationResponseSchema as U, SlugAvailabilityResponseSchema as Un, isLlmProviderSlug as Ur, ListAppsResponseSchema as Ut, setManagedServiceCredential as V, SkillSummarySchema as Vn, isAllowedChatAttachmentMediaType as Vr, ListAgentWorkspaceFilesResponseSchema as Vt, ActiveOrganizationResponseSchema as W, StartMcpOAuthConnectionInputSchema as Wn, jsonSchemaToWorkflowInputSchema as Wr, ListChannelPlatformsResponseSchema as Wt, AppSlugAvailabilityQuerySchema as X, SubmitTeamRequestResponseSchema as Xn, mapProjectDeployment as Xr, ListOrganizationMembersPageResponseSchema as Xt, AgentWorkspaceFileSummarySchema as Y, SubmitTeamRequestRequestSchema as Yn, mapProjectArtifact as Yr, ListOrganizationMembersPageQuerySchema as Yt, AppSlugAvailabilityResponseSchema as Z, TemplateFilesResponseSchema as Zn, mapProjectMember as Zr, ListOrganizationsResponseSchema as Zt, loadProjectSourceFiles as _, __commonJSMin as _i, PresignCustomAppLogoRequestSchema as _n, UserPreferencesPatchSchema as _r, DeclineOrganizationInvitationResponseSchema as _t, ensureKeystrokeAssetsBucket as a, parseAppSlug as ai, ManagedServiceCredentialSchema as an, UpdateManagedServiceCredentialRequestSchema as ar, CreateCustomAppRequestSchema as at, projectArtifactKey as b, PresignOrgLogoResponseSchema as bn, WorkflowCanvasRunSchema as br, DuplicateCredentialRequestSchema as bt, isChatAttachmentStorageKey as c, resolveExternalPlatformOrigin as ci, McpDiscoverResponseSchema as cn, UpdateOrganizationRequestSchema as cr, CreateOrganizationResponseSchema as ct, isOrgLogoStorageKey as d, schemaHasFileFields as di, OrganizationSidebarBrandingPatchSchema as dn, UpdateProjectRequestSchema as dr, CreateProjectResponseSchema as dt, mcpEntityId as ei, ListProjectMembersResponseSchema as en, TriggerInvokeInputsSchema as er, ConnectManagedServiceCredentialRequestSchema as et, isStorageBucketNotFoundError as f, schemaHasUnsupportedFormFields as fi, OrganizationSidebarBrandingSchema as fn, UpdateProjectSettingsRequestSchema as fr, DEFAULT_CLOUD_PLATFORM_ORIGIN as ft, keystrokeAssetsOrgLogoKeyFromPublicUrl as g, validationErrorResponse as gi, PresignChatAttachmentResponseSchema as gn, UserAvatarSchema as gr, DbProxyQueryRequestSchema as gt, keystrokeAssetsAvatarKeyFromPublicUrl as h, validateWorkflowRunInputValues as hi, PresignChatAttachmentRequestSchema as hn, UserAvatarPatchSchema as hr, DEFAULT_WORKFLOW_OVERVIEW_MODEL as ht, createAssetsStorageClient as i, organizationSlugErrorCodeFromMessage as ii, MICRO_CREDITS_PER_CREDIT as in, UpdateCredentialRequestSchema as ir, CreateCredentialsResponseSchema as it, discoverGraphqlApp as j, PublicFormMetadataSchema as jn, WorkspaceTriggerListResponseSchema as jr, GraphqlDiscoverResponseSchema as jt, decodeOAuthState as k, ProjectSlugAvailabilityResponseSchema as kn, WorkspaceTriggerDetailSchema as kr, GetTemplateResponseSchema as kt, isKeystrokeAssetsAvatarPublicUrl as l, resolvePublicFormFields as li, OpenApiDiscoverRequestSchema as ln, UpdateProjectMemberRequestSchema as lr, CreateProjectArtifactResponseSchema as lt, isUserAvatarStorageKey as m, validateFormFieldConfig as mi, PROJECT_SLUG_TAKEN_MESSAGE as mn, UploadProjectSourceResponseSchema as mr, DEFAULT_WORKFLOW_CANVAS_MODEL as mt, appLogoStorageKey as n, normalizeUserPreferences as ni, ListProjectsResponseSchema as nn, TriggerInvokeResponseSchema as nr, CreateApiKeyResponseSchema as nt, extractRouteManifestFromArtifact as o, parseStoredRouteManifest as oi, ManagedServiceKindSchema as on, UpdateOrganizationMemberRequestSchema as or, CreateCustomAppResponseSchema as ot, isStorageNotFoundError as p, validateCredentialValueAgainstFields as pi, PLATFORM_RESOURCE_UNSUPPORTED_TEXT as pn, UploadProjectSourceManifestRequestSchema as pr, DEFAULT_TRIGGER_OVERVIEW_MODEL as pt, AgentSummaryListResponseSchema as q, SubmitMarketingContactRequestSchema as qn, mapOrganizationMember as qr, ListManagedServiceCredentialsResponseSchema as qt, chatAttachmentStorageKey as r, organizationInvitationAcceptPath as ri, ListTemplatesResponseSchema as rn, TriggerRunListQuerySchema as rr, CreateCredentialsRequestSchema as rt, isAppLogoStorageKey as s, projectFileId as si, McpDiscoverRequestSchema as sn, UpdateOrganizationMemberResponseSchema as sr, CreateOrganizationRequestSchema as st, RouteManifestNotFoundError as t, mergeUserPreferences as ti, ListProjectMetricsResponseSchema as tn, TriggerInvokeRequestSchema as tr, CreateApiKeyRequestSchema as tt, isKeystrokeAssetsOrgLogoPublicUrl as u, resolveUniqueCredentialInstanceLabel as ui, OpenApiDiscoverResponseSchema as un, UpdateProjectMemberResponseSchema as ur, CreateProjectRequestSchema as ut, minioStoragePlugin as v, __require as vi, PresignCustomAppLogoResponseSchema as vn, UserPreferencesSchema as vr, DownloadActiveProjectArtifactResponseSchema as vt, createJobQueue as w, PresignUserAvatarResponseSchema as wn, WorkflowRunInputsPutBodySchema as wr, FinalizeCustomAppLogoRequestSchema as wt, projectSourceBlobKey as x, PresignProjectSourceRequestSchema as xn, WorkflowCanvasSchema as xr, DuplicateCredentialsResponseSchema as xt, orgLogoStorageKey as y, __toESM as yi, PresignOrgLogoRequestSchema as yn, WorkflowCanvasCredentialBindingsSchema as yr, DownloadActiveProjectSourceResponseSchema as yt, readCredentialInstanceSecret as z, SkillSummaryDetailResponseSchema as zn, deriveCredentialInstanceSlug as zr, InviteProjectMembersResponseSchema as zt };
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 };
37708
37999
 
37709
- //# sourceMappingURL=dist-06B__3tk.mjs.map
38000
+ //# sourceMappingURL=dist-B2lPLfrR.mjs.map