@decocms/mesh 2.90.0 → 2.91.0

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 (156) hide show
  1. package/dist/client/assets/{AlertCircle-C7tRYAkQ.js → AlertCircle-D3uMaIep.js} +1 -1
  2. package/dist/client/assets/{AlertOctagon-D28THNQG.js → AlertOctagon-D8xrBki-.js} +1 -1
  3. package/dist/client/assets/{ArrowLeft-ClBGgo4l.js → ArrowLeft-BjqYsLvO.js} +1 -1
  4. package/dist/client/assets/{ArrowUp-BpGy_9ab.js → ArrowUp-BZmoIrId.js} +1 -1
  5. package/dist/client/assets/{Check-BlM4FeFk.js → Check-BezMXh3m.js} +1 -1
  6. package/dist/client/assets/{CheckCircle-D3DqVSof.js → CheckCircle-BJs6jTra.js} +1 -1
  7. package/dist/client/assets/{CheckDone01-BfRwhIAp.js → CheckDone01-B8_tfP98.js} +1 -1
  8. package/dist/client/assets/{ChevronDown-n5N_Lrv1.js → ChevronDown-Cvn22peU.js} +1 -1
  9. package/dist/client/assets/{ChevronRight-lgE9DrmA.js → ChevronRight-CTxl6bgR.js} +1 -1
  10. package/dist/client/assets/{Clock-3uBZYEa5.js → Clock-0kD4NxnQ.js} +1 -1
  11. package/dist/client/assets/{Code01-cW71Rk7W.js → Code01-BQDW5YjG.js} +1 -1
  12. package/dist/client/assets/{Copy01-DXqcDIlB.js → Copy01---hH64QW.js} +1 -1
  13. package/dist/client/assets/{Dataflow03-BjBcE8LM.js → Dataflow03-Ewf19tYQ.js} +1 -1
  14. package/dist/client/assets/{DotsHorizontal-RsDeFGvO.js → DotsHorizontal-KHWDbLx3.js} +1 -1
  15. package/dist/client/assets/{DotsVertical-Co7jTcE3.js → DotsVertical-CMwmj3Es.js} +1 -1
  16. package/dist/client/assets/{Download01-Bmf0yTxv.js → Download01-D2v6tnjT.js} +1 -1
  17. package/dist/client/assets/{Edit01-N_wE51Ji.js → Edit01-DLX_Q0on.js} +1 -1
  18. package/dist/client/assets/{Eye-Cjx3gmL-.js → Eye-DRhYa9c6.js} +1 -1
  19. package/dist/client/assets/{File02-B0_YpZ9K.js → File02-CJp6EwHF.js} +1 -1
  20. package/dist/client/assets/{File06-D5WlkKz7.js → File06-DVtDhdE5.js} +1 -1
  21. package/dist/client/assets/{FilterLines-ByV6YQqf.js → FilterLines-BcYSGfMN.js} +1 -1
  22. package/dist/client/assets/{Grid01-g5UbnnWY.js → Grid01-CgGHrqe5.js} +1 -1
  23. package/dist/client/assets/{Home02-6R9rPjal.js → Home02-uUB8Atfq.js} +1 -1
  24. package/dist/client/assets/{Image01-BoBW5lkf.js → Image01-C2cIbm7r.js} +1 -1
  25. package/dist/client/assets/{Inbox01-V2c_v8Vp.js → Inbox01-De5dzagw.js} +1 -1
  26. package/dist/client/assets/{InfoCircle-DbRe7m5X.js → InfoCircle-CWs-zdhv.js} +1 -1
  27. package/dist/client/assets/{LinkExternal01-B46QCd1_.js → LinkExternal01-7UvZi8_7.js} +1 -1
  28. package/dist/client/assets/{List-CnnFCaa_.js → List-B1anaj6z.js} +1 -1
  29. package/dist/client/assets/{Loading01-Ccnn8_nz.js → Loading01-CLaVZz2q.js} +1 -1
  30. package/dist/client/assets/{Lock01-CVg2TqaU.js → Lock01-DQZtigfQ.js} +1 -1
  31. package/dist/client/assets/{Pin01-CF5MBNG_.js → Pin01-DbMTghLG.js} +1 -1
  32. package/dist/client/assets/{Play-C_QZtdLh.js → Play-DifJQu9t.js} +1 -1
  33. package/dist/client/assets/{Plus-CvcYPEKD.js → Plus-BSoD06T5.js} +1 -1
  34. package/dist/client/assets/{RefreshCcw01-BhE8Z0sx.js → RefreshCcw01-vEyX2U13.js} +1 -1
  35. package/dist/client/assets/{SearchMd-B9p0bq1M.js → SearchMd-C3imEkj_.js} +1 -1
  36. package/dist/client/assets/{Settings01-BhBPpX3P.js → Settings01-D8Z_Og0d.js} +1 -1
  37. package/dist/client/assets/{Settings02-C75jbNRo.js → Settings02-DgNG_ojd.js} +1 -1
  38. package/dist/client/assets/{Share07-CA-_juFF.js → Share07-hI7-H_19.js} +1 -1
  39. package/dist/client/assets/{Terminal-D42HfJTr.js → Terminal-DY1lkBQp.js} +1 -1
  40. package/dist/client/assets/{Tool01-KjU2GsJW.js → Tool01-0C3r9eV1.js} +1 -1
  41. package/dist/client/assets/{Trash01-D_mSmFpX.js → Trash01-DMOrN3jw.js} +1 -1
  42. package/dist/client/assets/{Upload01-CYF85wnV.js → Upload01-BexbsGa1.js} +1 -1
  43. package/dist/client/assets/{Users03-DnAc5DRq.js → Users03-BwVADaNJ.js} +1 -1
  44. package/dist/client/assets/{X-CTTAOdP5.js → X-Bl4EbJn_.js} +1 -1
  45. package/dist/client/assets/{XClose-BDwJzgQF.js → XClose-9BHLBZyJ.js} +1 -1
  46. package/dist/client/assets/{agent-connections-preview-WthQDsUW.js → agent-connections-preview-bfNWF9f4.js} +1 -1
  47. package/dist/client/assets/{agent-detail-BqH9cJNR.js → agent-detail-C0LVwYuk.js} +1 -1
  48. package/dist/client/assets/{agents-BKnANQQN.js → agents-Da7CoTZX.js} +1 -1
  49. package/dist/client/assets/{alert-dialog-BJDYLAWS.js → alert-dialog-COW9KsrJ.js} +1 -1
  50. package/dist/client/assets/{auth-catchall-CuG4SMT1.js → auth-catchall-Cx74TIV5.js} +1 -1
  51. package/dist/client/assets/{avatar-hfcMVnoj.js → avatar-B3_biBMx.js} +1 -1
  52. package/dist/client/assets/{badge-CIAJTYZ7.js → badge-BdBlFaz2.js} +1 -1
  53. package/dist/client/assets/{binder--fFRikp7.js → binder-C_nJEmPU.js} +1 -1
  54. package/dist/client/assets/{breadcrumb-D1rwM2Yk.js → breadcrumb-CFvRp0LA.js} +1 -1
  55. package/dist/client/assets/{button-BnN5ws1J.js → button-DjRH1lB9.js} +1 -1
  56. package/dist/client/assets/{card-BX6VrB48.js → card-Crky3Dgs.js} +1 -1
  57. package/dist/client/assets/{checkbox-DOeM5BVC.js → checkbox-Buxpr0H5.js} +1 -1
  58. package/dist/client/assets/{circle-alert-CanUFwMg.js → circle-alert-B1x_VZv1.js} +1 -1
  59. package/dist/client/assets/{collection-detail-BfT9tQOH.js → collection-detail-hSjhUQb2.js} +1 -1
  60. package/dist/client/assets/{collection-search-Bg9cWleV.js → collection-search-Bznozec1.js} +1 -1
  61. package/dist/client/assets/{collection-tab-CMls2aRz.js → collection-tab-ETUYU_1h.js} +1 -1
  62. package/dist/client/assets/{collection-table-wrapper-IH3SFlYc.js → collection-table-wrapper-vIBxhjD_.js} +1 -1
  63. package/dist/client/assets/{collection-tabs-HtJ4lBOg.js → collection-tabs-Bsw5t_Dk.js} +1 -1
  64. package/dist/client/assets/{command-DKX4YOs7.js → command-BAunXmp4.js} +1 -1
  65. package/dist/client/assets/{connect-CScXrMiF.js → connect-r9AFxBWi.js} +1 -1
  66. package/dist/client/assets/{connection-card-8FtaUNQo.js → connection-card-BDRzJeyM.js} +1 -1
  67. package/dist/client/assets/{connection-detail-Bth-DhCL.js → connection-detail-BdzqkQsY.js} +1 -1
  68. package/dist/client/assets/{connections-CdtHndVF.js → connections-Ba704Ay2.js} +1 -1
  69. package/dist/client/assets/constants-B-3MHVrP.js +1 -0
  70. package/dist/client/assets/{constants-C28hHydK.js → constants-BbV5_Gvn.js} +1 -1
  71. package/dist/client/assets/{create-organization-dialog-ACj0lCMg.js → create-organization-dialog-CjDiPAzO.js} +1 -1
  72. package/dist/client/assets/{create-project-dialog-CG1IAO6H.js → create-project-dialog-BdjSvU61.js} +1 -1
  73. package/dist/client/assets/{dialog-DeXMCOEf.js → dialog-Ci90OZB_.js} +1 -1
  74. package/dist/client/assets/{dropdown-menu-DPxrC0cn.js → dropdown-menu-D0d6DveS.js} +1 -1
  75. package/dist/client/assets/{dynamic-plugin-layout-RLjAjaM3.js → dynamic-plugin-layout-Cde8Zw72.js} +1 -1
  76. package/dist/client/assets/{empty-state-DXwHwR9N.js → empty-state-B1u2cnEd.js} +1 -1
  77. package/dist/client/assets/{empty-state-C7dCfthv.js → empty-state-Db26F2g6.js} +1 -1
  78. package/dist/client/assets/{env-vars-editor-CLkN05wk.js → env-vars-editor-CCksRmt4.js} +1 -1
  79. package/dist/client/assets/{error-boundary-D93CFTiZ.js → error-boundary-DAtnvYEv.js} +1 -1
  80. package/dist/client/assets/{extract-connection-data-BXN_EDIw.js → extract-connection-data-C1ap4UAi.js} +1 -1
  81. package/dist/client/assets/{file-browser-BS2NyUbN.js → file-browser-vsIHIoyy.js} +2 -2
  82. package/dist/client/assets/{form-BCLb-UZ8.js → form-DwpSVrp-.js} +1 -1
  83. package/dist/client/assets/{grid-view-ooajsBAE.js → grid-view-B0rAMSSu.js} +1 -1
  84. package/dist/client/assets/{home-DxR7zQcl.js → home-BvOOt5Jz.js} +1 -1
  85. package/dist/client/assets/{index-sPSrSvLX.js → index-B6v49bFc.js} +1 -1
  86. package/dist/client/assets/{index-COa_SM9b.js → index-BWt7IZ6Z.js} +1 -1
  87. package/dist/client/assets/{index-Ddnu0nh3.js → index-Bs-0nDVT.js} +1 -1
  88. package/dist/client/assets/{index-CIh8Wxq9.js → index-C0Cm9UFB.js} +1 -1
  89. package/dist/client/assets/{index-BKKW7mU3.js → index-CGRyA9w8.js} +2 -2
  90. package/dist/client/assets/{index-BeRVkHG-.js → index-CnWGXAB7.js} +1 -1
  91. package/dist/client/assets/{index-Yaa_q04V.js → index-DA6l4j1R.js} +1 -1
  92. package/dist/client/assets/{index-Cm60R_4-.js → index-DF5Pmq_t.js} +1 -1
  93. package/dist/client/assets/{index-DH-kjK80.js → index-DirGeY-G.js} +1 -1
  94. package/dist/client/assets/{infiniteQueryObserver-C--Cp687.js → infiniteQueryObserver-Bz2qGnnL.js} +1 -1
  95. package/dist/client/assets/{input-U8YSaKi9.js → input-BN8tWROr.js} +1 -1
  96. package/dist/client/assets/{integration-icon-CAACzZ59.js → integration-icon-C_JseQQS.js} +1 -1
  97. package/dist/client/assets/{label-DSCjug1q.js → label-DgY9ov9i.js} +1 -1
  98. package/dist/client/assets/{layout-D93kgkkB.js → layout-CBw836gt.js} +1 -1
  99. package/dist/client/assets/{localstorage-keys-B_Uu7Ngj.js → localstorage-keys-nexyeweP.js} +1 -1
  100. package/dist/client/assets/{login-mt0PAQTm.js → login-CiVf3zef.js} +1 -1
  101. package/dist/client/assets/{mcp-oauth-BmANfNMA.js → mcp-oauth-B6wyAMx4.js} +1 -1
  102. package/dist/client/assets/{mcp-server-card-DOw4tptS.js → mcp-server-card-OYdKEPTN.js} +1 -1
  103. package/dist/client/assets/{mcp-server-detail-HN9d-4zv.js → mcp-server-detail-CuJRzZD8.js} +2 -2
  104. package/dist/client/assets/{members-o9UHewte.js → members-DkeJcxqi.js} +1 -1
  105. package/dist/client/assets/{monitoring-DeMCxpp8.js → monitoring-egwPLjp0.js} +1 -1
  106. package/dist/client/assets/{oauth-callback-OXPIh8UO.js → oauth-callback-CiwqJVg6.js} +1 -1
  107. package/dist/client/assets/{page-D8ANTJRr.js → page-BmoxBndy.js} +1 -1
  108. package/dist/client/assets/{page-D1jCMFVy.js → page-YgKzJWRP.js} +1 -1
  109. package/dist/client/assets/{plugin-empty-state-CseSTXo8.js → plugin-empty-state-Bm8j6Yah.js} +1 -1
  110. package/dist/client/assets/{plugin-empty-state-BztjA2Hv.js → plugin-empty-state-Cg6QQuTW.js} +1 -1
  111. package/dist/client/assets/{plugin-header-CYOR-GLV.js → plugin-header-BiBPfNm9.js} +1 -1
  112. package/dist/client/assets/{plugin-header-CJXqQw-8.js → plugin-header-Za0zOP8_.js} +1 -1
  113. package/dist/client/assets/{popover-Z8clS3LN.js → popover-DBISvNt-.js} +1 -1
  114. package/dist/client/assets/{project-layout-CToIFtP6.js → project-layout-wSllqfdZ.js} +1 -1
  115. package/dist/client/assets/{project-settings-BjPBm7hi.js → project-settings-B34SlsnE.js} +1 -1
  116. package/dist/client/assets/{projects-list-B8b521eA.js → projects-list-KQgHFl7X.js} +1 -1
  117. package/dist/client/assets/{registry-utils-CCgmzWkr.js → registry-utils-D9WTBcQy.js} +1 -1
  118. package/dist/client/assets/{resizable-CcAX-qs1.js → resizable-J8Aer48-.js} +1 -1
  119. package/dist/client/assets/{scroll-area-F4PB57Kk.js → scroll-area-DMcUXGPI.js} +1 -1
  120. package/dist/client/assets/{select-CPhIWiJc.js → select-CMUKnHD5.js} +1 -1
  121. package/dist/client/assets/{shell-layout-D9dQPkQK.js → shell-layout-CSqxCJ3A.js} +3 -3
  122. package/dist/client/assets/{spinner-BJo9JKPd.js → spinner-BWmTCne_.js} +1 -1
  123. package/dist/client/assets/{store-invite-BEQkmcfX.js → store-invite-DQVzahJ1.js} +1 -1
  124. package/dist/client/assets/{switch-C7RggtH3.js → switch-C-ipB4wM.js} +1 -1
  125. package/dist/client/assets/{table-GcQdAqoi.js → table-CTqJjnnx.js} +1 -1
  126. package/dist/client/assets/{tasks-B82Xf5C5.js → tasks-DQVfyRle.js} +1 -1
  127. package/dist/client/assets/{textarea-DWFHG2PH.js → textarea-BqR62h0i.js} +1 -1
  128. package/dist/client/assets/{tools-list-BziYrhBQ.js → tools-list-1sYuTCQT.js} +1 -1
  129. package/dist/client/assets/{topbar-portal-DGJkq20l.js → topbar-portal-uY9HhOr1.js} +1 -1
  130. package/dist/client/assets/{typewriter-title-BBGN8eX7.js → typewriter-title-rlX4QtWe.js} +1 -1
  131. package/dist/client/assets/{use-binding-C4vpH74C.js → use-binding-CBFm-KJH.js} +1 -1
  132. package/dist/client/assets/{use-connection-BWi2Db6r.js → use-connection-TBbvY88o.js} +1 -1
  133. package/dist/client/assets/{use-create-virtual-mcp-CccQ7wjf.js → use-create-virtual-mcp-DkEEEEVB.js} +1 -1
  134. package/dist/client/assets/{use-deco-chat-open-B9pKJybL.js → use-deco-chat-open-B3MDOzNO.js} +1 -1
  135. package/dist/client/assets/{use-install-from-registry-CNEIPsot.js → use-install-from-registry-CanzeI6m.js} +1 -1
  136. package/dist/client/assets/{use-list-state-D5f0NwUO.js → use-list-state-CB60FBzS.js} +1 -1
  137. package/dist/client/assets/{use-llm-DYhOWhPI.js → use-llm-D5XtsGft.js} +1 -1
  138. package/dist/client/assets/{use-mcp-prompts-CH0-e-U1.js → use-mcp-prompts-DdiPSE2K.js} +1 -1
  139. package/dist/client/assets/{use-mcp-tools-Yi0eODm2.js → use-mcp-tools-DreUeH6b.js} +1 -1
  140. package/dist/client/assets/{use-mobile-mUe1k1NH.js → use-mobile-C8iqPQJB.js} +1 -1
  141. package/dist/client/assets/{use-organization-settings-ZMMNYlgW.js → use-organization-settings-BjgTdt4t.js} +1 -1
  142. package/dist/client/assets/{use-project-C8eld6R6.js → use-project-kGpYxwPL.js} +1 -1
  143. package/dist/client/assets/{use-virtual-mcp-C7qHxpwx.js → use-virtual-mcp-C7Kk1mBJ.js} +1 -1
  144. package/dist/client/assets/useInfiniteQuery-XNPJlDVU.js +1 -0
  145. package/dist/client/assets/{useMutation-Bmfdf_Yk.js → useMutation-Bm-DrAfF.js} +1 -1
  146. package/dist/client/assets/useQuery-DM_qidpz.js +1 -0
  147. package/dist/client/assets/{view-mode-toggle-BseoteE9.js → view-mode-toggle-a-_OzLvE.js} +1 -1
  148. package/dist/client/assets/{workflow-DK9VwlEt.js → workflow-Q7ys8Pux.js} +1 -1
  149. package/dist/client/index.html +1 -1
  150. package/dist/server/cli.js +1 -1
  151. package/dist/server/migrate.js +1 -1
  152. package/dist/server/server.js +1 -1
  153. package/package.json +1 -1
  154. package/dist/client/assets/constants-9Txgq7Bp.js +0 -1
  155. package/dist/client/assets/useInfiniteQuery-B1egfGHi.js +0 -1
  156. package/dist/client/assets/useQuery-DoLjDGJT.js +0 -1
@@ -1 +1 @@
1
- import{u as w,g as H,m as q,r as $,j as t,O as B,c as k,aK as G,z as Q,K as W,t as A}from"./index-BKKW7mU3.js";import{a as J,u as V,e as Y}from"./constants-C28hHydK.js";import{C as X}from"./collection-tab-CMls2aRz.js";import{g as Z,h as ee}from"./use-connection-BWi2Db6r.js";import{B as I}from"./button-BnN5ws1J.js";import{E as R}from"./empty-state-DXwHwR9N.js";import{E as te,i as ne}from"./error-boundary-D93CFTiZ.js";import{P as x}from"./index-DH-kjK80.js";import{B as F,a as z,b as M,c as T}from"./breadcrumb-D1rwM2Yk.js";import{a as se,b as ie}from"./use-binding-C4vpH74C.js";import{i as oe}from"./Loading01-Ccnn8_nz.js";import{s as le}from"./RefreshCcw01-BhE8Z0sx.js";import{a as re}from"./Settings02-C75jbNRo.js";import{u as ce}from"./useMutation-Bmfdf_Yk.js";import{e as ae}from"./Dataflow03-BjBcE8LM.js";import"./generate-id-Dyweu44Y.js";import"./collection-table-wrapper-IH3SFlYc.js";import"./dropdown-menu-DPxrC0cn.js";import"./ChevronRight-lgE9DrmA.js";import"./ArrowUp-BpGy_9ab.js";import"./Check-BlM4FeFk.js";import"./Grid01-g5UbnnWY.js";import"./List-CnnFCaa_.js";import"./integration-icon-CAACzZ59.js";import"./index-Cm60R_4-.js";import"./view-mode-toggle-BseoteE9.js";import"./table-GcQdAqoi.js";import"./collection-search-Bg9cWleV.js";import"./SearchMd-B9p0bq1M.js";import"./input-U8YSaKi9.js";import"./card-BX6VrB48.js";import"./Copy01-DXqcDIlB.js";import"./DotsVertical-Co7jTcE3.js";import"./Edit01-N_wE51Ji.js";import"./Eye-Cjx3gmL-.js";import"./Trash01-D_mSmFpX.js";import"./empty-state-C7dCfthv.js";import"./Inbox01-V2c_v8Vp.js";import"./use-list-state-D5f0NwUO.js";import"./avatar-hfcMVnoj.js";import"./useQuery-DoLjDGJT.js";import"./use-mobile-mUe1k1NH.js";import"./constants-9Txgq7Bp.js";import"./alert-dialog-BJDYLAWS.js";import"./Plus-CvcYPEKD.js";import"./layout-D93kgkkB.js";import"./binder--fFRikp7.js";function me({title:n,description:e,wellKnownMcp:o,imageSrc:c,onConnected:i}){const a=Z(),{org:{slug:s}}=w(),{data:r}=H.useSession(),m=q(),[d,p]=$.useState(!1),l=async()=>{if(!(!o||!r?.user?.id)){p(!0);try{const f=await a.create.mutateAsync(o);i?.(f.id),m({to:"/$org/$project/mcps/$connectionId",params:{org:s,project:B,connectionId:f.id}})}finally{p(!1)}}},u=()=>{m({to:"/$org/$project/mcps",params:{org:s,project:B},search:{action:"create"}})};return t.jsx(R,{image:c?t.jsx("img",{src:c,alt:n,width:336,height:320,className:"max-w-full h-auto"}):null,title:n,description:e,actions:t.jsxs(t.Fragment,{children:[t.jsxs(I,{variant:"outline",onClick:l,disabled:d||!o,children:[o?.icon&&t.jsx("img",{src:o.icon,alt:"",className:"size-4"}),d?"Installing...":`Install ${o?.title||"MCP"}`]}),t.jsx(I,{variant:"outline",onClick:u,children:"Custom Connection"})]})})}function de(n){const e=k.c(35),{bindingName:o,collectionName:c,title:i,emptyState:a,wellKnownMcp:s}=n,{org:r}=w(),m=ee();let d;e[0]!==m||e[1]!==o?(d={connections:m,binding:o},e[0]=m,e[1]=o,e[2]=d):d=e[2];const l=se(d)[0],u=ie(l);let f;if(e[3]!==c||e[4]!==u){let g;e[6]!==c?(g=L=>L.name.toLowerCase()===c.toLowerCase(),e[6]=c,e[7]=g):g=e[7],f=u.find(g),e[3]=c,e[4]=u,e[5]=f}else f=e[5];const E=f,[K,U]=$.useState(null),_=l&&E&&(l.id||K);let j;e[8]!==i?(j=t.jsx(x.Header,{children:t.jsx(x.Header.Left,{children:t.jsx(F,{children:t.jsx(z,{children:t.jsx(M,{children:t.jsx(T,{children:i})})})})})}),e[8]=i,e[9]=j):j=e[9];let h;e[10]!==l||e[11]!==r||e[12]!==i?(h=g=>{const{error:L,resetError:D}=g;return t.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center h-full p-6 text-center space-y-4",children:[t.jsx("div",{className:"bg-destructive/10 p-3 rounded-full",children:t.jsx(ne,{className:"h-6 w-6 text-destructive"})}),t.jsxs("div",{className:"space-y-2",children:[t.jsxs("h3",{className:"text-lg font-medium",children:["Failed to load ",i.toLowerCase()]}),t.jsx("p",{className:"text-sm text-muted-foreground max-w-xs mx-auto",children:L?.message||"Unable to connect to the server. Please check that it is running and accessible."})]}),t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsxs(I,{variant:"outline",onClick:D,children:[t.jsx(le,{className:"size-4"}),"Try again"]}),l&&t.jsx(I,{variant:"outline",asChild:!0,children:t.jsxs(G,{to:"/$org/$project/mcps/$connectionId",params:{org:r.slug,project:B,connectionId:l.id},search:{tab:"settings"},children:[t.jsx(re,{className:"size-4"}),"Connection Settings"]})})]})]})},e[10]=l,e[11]=r,e[12]=i,e[13]=h):h=e[13];let S;e[14]===Symbol.for("react.memo_cache_sentinel")?(S=t.jsx(oe,{size:32,className:"animate-spin text-muted-foreground mb-4"}),e[14]=S):S=e[14];let b;e[15]!==i?(b=i.toLowerCase(),e[15]=i,e[16]=b):b=e[16];let C;e[17]!==b?(C=t.jsxs("div",{className:"flex flex-col items-center justify-center h-full",children:[S,t.jsxs("p",{className:"text-sm text-muted-foreground",children:["Loading ",b,"..."]})]}),e[17]=b,e[18]=C):C=e[18];let y;e[19]!==E||e[20]!==l||e[21]!==a||e[22]!==r||e[23]!==_||e[24]!==s?(y=_?t.jsx(X,{connectionId:l.id,org:r.slug,activeCollection:E}):t.jsx("div",{className:"flex flex-col items-center justify-center h-full",children:t.jsx(me,{title:a.title,description:a.description,wellKnownMcp:s,imageSrc:a.imageSrc,onConnected:g=>{U(g)}})}),e[19]=E,e[20]=l,e[21]=a,e[22]=r,e[23]=_,e[24]=s,e[25]=y):y=e[25];let P;e[26]!==C||e[27]!==y?(P=t.jsx($.Suspense,{fallback:C,children:y}),e[26]=C,e[27]=y,e[28]=P):P=e[28];let N;e[29]!==h||e[30]!==P?(N=t.jsx(x.Content,{children:t.jsx(te,{fallback:h,children:P})}),e[29]=h,e[30]=P,e[31]=N):N=e[31];let v;return e[32]!==N||e[33]!==j?(v=t.jsxs(x,{children:[j,N]}),e[32]=N,e[33]=j,e[34]=v):v=e[34],v}function ue(){const n=k.c(12),{org:e,project:o}=w(),c=Q();let i;n[0]!==e.id?(i={connectionId:J,orgId:e.id},n[0]=e.id,n[1]=i):i=n[1];const a=V(i);let s;n[2]!==a||n[3]!==o?(s=async p=>{const l=o.enabledPlugins??[];if(l.includes(p))return;const u=[...l,p],f=await a.callTool({name:"PROJECT_UPDATE",arguments:{projectId:o.id,enabledPlugins:u}});return f.structuredContent??f},n[2]=a,n[3]=o,n[4]=s):s=n[4];let r;n[5]!==e.id||n[6]!==o||n[7]!==c?(r=()=>{c.invalidateQueries({queryKey:W.project(e.id,o.slug)}),c.invalidateQueries({queryKey:W.projects(e.id)})},n[5]=e.id,n[6]=o,n[7]=c,n[8]=r):r=n[8];let m;return n[9]!==s||n[10]!==r?(m={mutationFn:s,onSuccess:r,onError:pe},n[9]=s,n[10]=r,n[11]=m):m=n[11],ce(m)}function pe(n){A.error("Failed to enable plugin: "+(n instanceof Error?n.message:"Unknown error"))}function fe(n){const e=k.c(12),{pluginId:o,title:c,description:i,icon:a}=n,s=ue();let r;e[0]!==s||e[1]!==o?(r=async()=>{try{await s.mutateAsync(o),A.success("Plugin enabled!")}catch{}},e[0]=s,e[1]=o,e[2]=r):r=e[2];const m=r,d=a??null,p=s.isPending?"Enabling…":"Enable plugin";let l;e[3]!==s.isPending||e[4]!==m||e[5]!==p?(l=t.jsx(I,{onClick:m,disabled:s.isPending,children:p}),e[3]=s.isPending,e[4]=m,e[5]=p,e[6]=l):l=e[6];let u;return e[7]!==i||e[8]!==d||e[9]!==l||e[10]!==c?(u=t.jsx(R,{image:d,title:c,description:i,actions:l}),e[7]=i,e[8]=d,e[9]=l,e[10]=c,e[11]=u):u=e[11],u}const O="workflows";function ct(){const n=k.c(3),{project:e}=w();if(!(e.enabledPlugins??[]).includes(O)){let a;n[0]===Symbol.for("react.memo_cache_sentinel")?(a=t.jsx(x.Header,{children:t.jsx(x.Header.Left,{children:t.jsx(F,{children:t.jsx(z,{children:t.jsx(M,{children:t.jsx(T,{children:"Workflows"})})})})})}),n[0]=a):a=n[0];let s;return n[1]===Symbol.for("react.memo_cache_sentinel")?(s=t.jsxs(x,{children:[a,t.jsx(x.Content,{children:t.jsx("div",{className:"flex flex-col items-center justify-center h-full",children:t.jsx(fe,{pluginId:O,title:"Enable Workflows",description:"Automate multi-step processes by enabling the Workflows plugin. Once enabled you can create, run, and monitor workflows.",icon:t.jsx("div",{className:"bg-muted p-4 rounded-full",children:t.jsx(ae,{className:"size-8 text-muted-foreground"})})})})})]}),n[1]=s):s=n[1],s}let i;return n[2]===Symbol.for("react.memo_cache_sentinel")?(i=t.jsx(de,{bindingName:"WORKFLOW",collectionName:"workflow",title:"Workflows",emptyState:{title:"Create Workflows",description:"Run durable MCP tool calls in background."},wellKnownMcp:Y()}),n[2]=i):i=n[2],i}export{ct as default};
1
+ import{u as w,g as H,m as q,r as $,j as t,O as B,c as k,aK as G,z as Q,K as W,t as A}from"./index-CGRyA9w8.js";import{a as J,u as V,e as Y}from"./constants-BbV5_Gvn.js";import{C as X}from"./collection-tab-ETUYU_1h.js";import{g as Z,h as ee}from"./use-connection-TBbvY88o.js";import{B as I}from"./button-DjRH1lB9.js";import{E as R}from"./empty-state-B1u2cnEd.js";import{E as te,i as ne}from"./error-boundary-DAtnvYEv.js";import{P as x}from"./index-DirGeY-G.js";import{B as F,a as z,b as M,c as T}from"./breadcrumb-CFvRp0LA.js";import{a as se,b as ie}from"./use-binding-CBFm-KJH.js";import{i as oe}from"./Loading01-CLaVZz2q.js";import{s as le}from"./RefreshCcw01-vEyX2U13.js";import{a as re}from"./Settings02-DgNG_ojd.js";import{u as ce}from"./useMutation-Bm-DrAfF.js";import{e as ae}from"./Dataflow03-Ewf19tYQ.js";import"./generate-id-Dyweu44Y.js";import"./collection-table-wrapper-vIBxhjD_.js";import"./dropdown-menu-D0d6DveS.js";import"./ChevronRight-CTxl6bgR.js";import"./ArrowUp-BZmoIrId.js";import"./Check-BezMXh3m.js";import"./Grid01-CgGHrqe5.js";import"./List-B1anaj6z.js";import"./integration-icon-C_JseQQS.js";import"./index-DF5Pmq_t.js";import"./view-mode-toggle-a-_OzLvE.js";import"./table-CTqJjnnx.js";import"./collection-search-Bznozec1.js";import"./SearchMd-C3imEkj_.js";import"./input-BN8tWROr.js";import"./card-Crky3Dgs.js";import"./Copy01---hH64QW.js";import"./DotsVertical-CMwmj3Es.js";import"./Edit01-DLX_Q0on.js";import"./Eye-DRhYa9c6.js";import"./Trash01-DMOrN3jw.js";import"./empty-state-Db26F2g6.js";import"./Inbox01-De5dzagw.js";import"./use-list-state-CB60FBzS.js";import"./avatar-B3_biBMx.js";import"./useQuery-DM_qidpz.js";import"./use-mobile-C8iqPQJB.js";import"./constants-B-3MHVrP.js";import"./alert-dialog-COW9KsrJ.js";import"./Plus-BSoD06T5.js";import"./layout-CBw836gt.js";import"./binder-C_nJEmPU.js";function me({title:n,description:e,wellKnownMcp:o,imageSrc:c,onConnected:i}){const a=Z(),{org:{slug:s}}=w(),{data:r}=H.useSession(),m=q(),[d,p]=$.useState(!1),l=async()=>{if(!(!o||!r?.user?.id)){p(!0);try{const f=await a.create.mutateAsync(o);i?.(f.id),m({to:"/$org/$project/mcps/$connectionId",params:{org:s,project:B,connectionId:f.id}})}finally{p(!1)}}},u=()=>{m({to:"/$org/$project/mcps",params:{org:s,project:B},search:{action:"create"}})};return t.jsx(R,{image:c?t.jsx("img",{src:c,alt:n,width:336,height:320,className:"max-w-full h-auto"}):null,title:n,description:e,actions:t.jsxs(t.Fragment,{children:[t.jsxs(I,{variant:"outline",onClick:l,disabled:d||!o,children:[o?.icon&&t.jsx("img",{src:o.icon,alt:"",className:"size-4"}),d?"Installing...":`Install ${o?.title||"MCP"}`]}),t.jsx(I,{variant:"outline",onClick:u,children:"Custom Connection"})]})})}function de(n){const e=k.c(35),{bindingName:o,collectionName:c,title:i,emptyState:a,wellKnownMcp:s}=n,{org:r}=w(),m=ee();let d;e[0]!==m||e[1]!==o?(d={connections:m,binding:o},e[0]=m,e[1]=o,e[2]=d):d=e[2];const l=se(d)[0],u=ie(l);let f;if(e[3]!==c||e[4]!==u){let g;e[6]!==c?(g=L=>L.name.toLowerCase()===c.toLowerCase(),e[6]=c,e[7]=g):g=e[7],f=u.find(g),e[3]=c,e[4]=u,e[5]=f}else f=e[5];const E=f,[K,U]=$.useState(null),_=l&&E&&(l.id||K);let j;e[8]!==i?(j=t.jsx(x.Header,{children:t.jsx(x.Header.Left,{children:t.jsx(F,{children:t.jsx(z,{children:t.jsx(M,{children:t.jsx(T,{children:i})})})})})}),e[8]=i,e[9]=j):j=e[9];let h;e[10]!==l||e[11]!==r||e[12]!==i?(h=g=>{const{error:L,resetError:D}=g;return t.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center h-full p-6 text-center space-y-4",children:[t.jsx("div",{className:"bg-destructive/10 p-3 rounded-full",children:t.jsx(ne,{className:"h-6 w-6 text-destructive"})}),t.jsxs("div",{className:"space-y-2",children:[t.jsxs("h3",{className:"text-lg font-medium",children:["Failed to load ",i.toLowerCase()]}),t.jsx("p",{className:"text-sm text-muted-foreground max-w-xs mx-auto",children:L?.message||"Unable to connect to the server. Please check that it is running and accessible."})]}),t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsxs(I,{variant:"outline",onClick:D,children:[t.jsx(le,{className:"size-4"}),"Try again"]}),l&&t.jsx(I,{variant:"outline",asChild:!0,children:t.jsxs(G,{to:"/$org/$project/mcps/$connectionId",params:{org:r.slug,project:B,connectionId:l.id},search:{tab:"settings"},children:[t.jsx(re,{className:"size-4"}),"Connection Settings"]})})]})]})},e[10]=l,e[11]=r,e[12]=i,e[13]=h):h=e[13];let S;e[14]===Symbol.for("react.memo_cache_sentinel")?(S=t.jsx(oe,{size:32,className:"animate-spin text-muted-foreground mb-4"}),e[14]=S):S=e[14];let b;e[15]!==i?(b=i.toLowerCase(),e[15]=i,e[16]=b):b=e[16];let C;e[17]!==b?(C=t.jsxs("div",{className:"flex flex-col items-center justify-center h-full",children:[S,t.jsxs("p",{className:"text-sm text-muted-foreground",children:["Loading ",b,"..."]})]}),e[17]=b,e[18]=C):C=e[18];let y;e[19]!==E||e[20]!==l||e[21]!==a||e[22]!==r||e[23]!==_||e[24]!==s?(y=_?t.jsx(X,{connectionId:l.id,org:r.slug,activeCollection:E}):t.jsx("div",{className:"flex flex-col items-center justify-center h-full",children:t.jsx(me,{title:a.title,description:a.description,wellKnownMcp:s,imageSrc:a.imageSrc,onConnected:g=>{U(g)}})}),e[19]=E,e[20]=l,e[21]=a,e[22]=r,e[23]=_,e[24]=s,e[25]=y):y=e[25];let P;e[26]!==C||e[27]!==y?(P=t.jsx($.Suspense,{fallback:C,children:y}),e[26]=C,e[27]=y,e[28]=P):P=e[28];let N;e[29]!==h||e[30]!==P?(N=t.jsx(x.Content,{children:t.jsx(te,{fallback:h,children:P})}),e[29]=h,e[30]=P,e[31]=N):N=e[31];let v;return e[32]!==N||e[33]!==j?(v=t.jsxs(x,{children:[j,N]}),e[32]=N,e[33]=j,e[34]=v):v=e[34],v}function ue(){const n=k.c(12),{org:e,project:o}=w(),c=Q();let i;n[0]!==e.id?(i={connectionId:J,orgId:e.id},n[0]=e.id,n[1]=i):i=n[1];const a=V(i);let s;n[2]!==a||n[3]!==o?(s=async p=>{const l=o.enabledPlugins??[];if(l.includes(p))return;const u=[...l,p],f=await a.callTool({name:"PROJECT_UPDATE",arguments:{projectId:o.id,enabledPlugins:u}});return f.structuredContent??f},n[2]=a,n[3]=o,n[4]=s):s=n[4];let r;n[5]!==e.id||n[6]!==o||n[7]!==c?(r=()=>{c.invalidateQueries({queryKey:W.project(e.id,o.slug)}),c.invalidateQueries({queryKey:W.projects(e.id)})},n[5]=e.id,n[6]=o,n[7]=c,n[8]=r):r=n[8];let m;return n[9]!==s||n[10]!==r?(m={mutationFn:s,onSuccess:r,onError:pe},n[9]=s,n[10]=r,n[11]=m):m=n[11],ce(m)}function pe(n){A.error("Failed to enable plugin: "+(n instanceof Error?n.message:"Unknown error"))}function fe(n){const e=k.c(12),{pluginId:o,title:c,description:i,icon:a}=n,s=ue();let r;e[0]!==s||e[1]!==o?(r=async()=>{try{await s.mutateAsync(o),A.success("Plugin enabled!")}catch{}},e[0]=s,e[1]=o,e[2]=r):r=e[2];const m=r,d=a??null,p=s.isPending?"Enabling…":"Enable plugin";let l;e[3]!==s.isPending||e[4]!==m||e[5]!==p?(l=t.jsx(I,{onClick:m,disabled:s.isPending,children:p}),e[3]=s.isPending,e[4]=m,e[5]=p,e[6]=l):l=e[6];let u;return e[7]!==i||e[8]!==d||e[9]!==l||e[10]!==c?(u=t.jsx(R,{image:d,title:c,description:i,actions:l}),e[7]=i,e[8]=d,e[9]=l,e[10]=c,e[11]=u):u=e[11],u}const O="workflows";function ct(){const n=k.c(3),{project:e}=w();if(!(e.enabledPlugins??[]).includes(O)){let a;n[0]===Symbol.for("react.memo_cache_sentinel")?(a=t.jsx(x.Header,{children:t.jsx(x.Header.Left,{children:t.jsx(F,{children:t.jsx(z,{children:t.jsx(M,{children:t.jsx(T,{children:"Workflows"})})})})})}),n[0]=a):a=n[0];let s;return n[1]===Symbol.for("react.memo_cache_sentinel")?(s=t.jsxs(x,{children:[a,t.jsx(x.Content,{children:t.jsx("div",{className:"flex flex-col items-center justify-center h-full",children:t.jsx(fe,{pluginId:O,title:"Enable Workflows",description:"Automate multi-step processes by enabling the Workflows plugin. Once enabled you can create, run, and monitor workflows.",icon:t.jsx("div",{className:"bg-muted p-4 rounded-full",children:t.jsx(ae,{className:"size-8 text-muted-foreground"})})})})})]}),n[1]=s):s=n[1],s}let i;return n[2]===Symbol.for("react.memo_cache_sentinel")?(i=t.jsx(de,{bindingName:"WORKFLOW",collectionName:"workflow",title:"Workflows",emptyState:{title:"Create Workflows",description:"Run durable MCP tool calls in background."},wellKnownMcp:Y()}),n[2]=i):i=n[2],i}export{ct as default};
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <title>MCP Mesh</title>
5
5
  <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
6
- <script type="module" crossorigin src="/assets/index-BKKW7mU3.js"></script>
6
+ <script type="module" crossorigin src="/assets/index-CGRyA9w8.js"></script>
7
7
  <link rel="stylesheet" crossorigin href="/assets/index-tLM0E_qV.css">
8
8
  </head>
9
9
  <body>
@@ -1350,7 +1350,7 @@ ${Y.stack}`;return Q}if(typeof Y==="object"&&Y!==null){let Q=Y,X="";if(typeof Q.
1350
1350
  ${Q.stack}`;return X}try{let G=JSON.stringify(Q,null,2);if(G!=="{}"&&G.length<1000){if(typeof Q.stack==="string"&&Q.stack&&Q.stack.length<2000)return`${G}
1351
1351
 
1352
1352
  Stack trace:
1353
- ${Q.stack}`;return G}}catch{}if(typeof Q.toString==="function")try{let G=Q.toString();if(G!=="[object Object]")return G}catch{}let J=Object.keys(Q);if(J.length>0)return`Object with keys: ${J.join(", ")}`;return"[object Object]"}if(typeof Y==="string")return Y;if(typeof Y==="number"||typeof Y==="boolean")return String(Y);if(typeof Y==="function")return`[Function: ${Y.name||"anon"}]`;if(typeof Y==="symbol")return Y.toString();if(typeof Y==="bigint")return Y.toString();try{return String(Y)}catch{return"Unknown value (could not convert to string)"}}function MN(Y,Q){switch(typeof Q){case"string":return Y.newString(Q);case"number":return Y.newNumber(Q);case"boolean":return Q?Y.true:Y.false;case"undefined":return Y.undefined;case"object":{if(Q===null)return Y.null;if(Array.isArray(Q)){let J=Y.newArray();return Q.forEach((G,K)=>{let W=MN(Y,G);try{Y.setProp(J,String(K),W)}finally{W.dispose?.()}}),J}let X=Y.newObject();for(let[J,G]of Object.entries(Q)){let K=MN(Y,G);try{Y.setProp(X,J,K)}finally{K.dispose?.()}}return X}case"function":{let X=`__hostFn_${Date.now()}_${Math.random().toString(36).substr(2,9)}`;return Y.newFunction(X,(...G)=>{try{let K=G.map((Z)=>Y.dump(Z)),W=Q(...K);if(W&&typeof W.then==="function"){let Z=Y.newPromise();return W.then((H)=>{try{let F=MN(Y,H);Z.resolve(F),F.dispose()}catch(F){let $=NN(F),V=Y.newString(`Promise resolution error: ${$}`);Z.reject(V),V.dispose()}finally{Y.runtime.executePendingJobs()}}).catch((H)=>{let F=NN(H),$=Y.newString(`Promise rejection: ${F}`);Z.reject($),$.dispose(),Y.runtime.executePendingJobs()}),Z.handle}return MN(Y,W)}catch(K){let W=NN(K);return Y.newString(`HostFunctionError: ${W}`)}finally{G.forEach((K)=>K.dispose())}})}case"bigint":return Y.newString(Q.toString());case"symbol":return Y.newString(Q.toString());default:try{return Y.newString(String(Q))}catch{return Y.undefined}}}var FC0=()=>{};function VC0(Y){let Q=Y.runtime.executePendingJobs(100);try{if("unwrap"in Q&&typeof Q.unwrap==="function")Q.unwrap()}finally{if("dispose"in Q&&typeof Q.dispose==="function")Q.dispose()}}async function $C0(Y,Q,X){let J=Date.now(),G=Y.resolvePromise(Q);while(!0){VC0(Y);let K=await Promise.race([G,mB4(0).then(()=>null)]);if(K!==null)return K;if(Date.now()-J>X)throw Error(`Timed out after ${X}ms while awaiting a QuickJS promise`)}}async function qR({tools:Y,code:Q,timeoutMs:X}){let W=[];try{const J=VI(W,await KC0({memoryLimitBytes:33554432,stackSizeBytes:524288}),0);const G=VI(W,J.newContext({interruptAfterMs:X}),0);const K=VI(W,JC0(G),0);try{let $=G.evalCode(Q,"index.mjs",{strip:!0,strict:!0,type:"module"}),V=G.unwrapResult($),q=MN(G,Y);G.setProp(G.global,"tools",q);let z=G.runtime.hasPendingJob()?G.unwrapResult(await $C0(G,V,X)):V;if(z!==V)V.dispose();let U=G.getProp(z,"default"),D=G.typeof(U);if(D!=="function")return U.dispose(),z.dispose(),q.dispose(),{error:`Code must export default a function (tools). Got ${D}. Example: export default async (tools) => { /* ... */ }`,consoleLogs:K.logs};let M=G.callFunction(U,G.undefined,q);q.dispose(),U.dispose(),z.dispose();let w=G.unwrapResult(M),R=await $C0(G,w,X);w.dispose();let P=G.unwrapResult(R);if(G.runtime.hasPendingJob())VC0(G);let T=G.dump(P);return P.dispose(),{returnValue:T,consoleLogs:K.logs}}catch($){return console.log($),{error:NN($),consoleLogs:K.logs}}}catch(Z){var H=Z,F=1}finally{FV1(W,H,F)}}var mB4=(Y)=>new Promise((Q)=>setTimeout(Q,Y));var qC0=S(()=>{HC0();FC0()});var a31=S(()=>{qC0()});async function lB4(Y,Q){let X=Y.connections.map((K)=>K.connection_id),J=[];for(let K of X){let W=await Q.storage.connections.findById(K);if(W&&W.status==="active")J.push(W)}return J.map((K)=>{let W=Y.connections.find((Z)=>Z.connection_id===K.id);return{connection:K,selectedTools:W?.selected_tools??null,selectedResources:W?.selected_resources??null,selectedPrompts:W?.selected_prompts??null}})}async function BC0(Y,Q){return(await Q.storage.connections.list(Y)).filter((J)=>J.status==="active").map((J)=>({connection:J,selectedTools:null,selectedResources:null,selectedPrompts:null}))}async function dB4(Y,Q){let X=new Map;for(let q of Y)X.set(q.connection.id,q);let J=Y.map((q)=>q.connection),G=new Map,K=await Promise.allSettled(J.map(async(q)=>{try{let z=await Q.createMCPProxy(q);return{connection:q,proxy:z}}catch(z){return console.warn(`[code-execution] Failed to create proxy for connection ${q.id}:`,z),null}}));for(let q of K)if(q.status==="fulfilled"&&q.value)G.set(q.value.connection.id,q.value);let W=await Promise.allSettled(Array.from(G.entries()).map(async([q,z])=>{try{let D=(await z.proxy.listTools()).tools,M=X.get(q);if(M?.selectedTools&&M.selectedTools.length>0){let w=new Set(M.selectedTools);D=D.filter((R)=>w.has(R.name))}return{connectionId:q,connectionTitle:z.connection.title,tools:D}}catch(U){return console.error(`[code-execution] Failed to list tools for connection ${q}:`,U),null}})),Z=new Set,H=[],F=new Map;for(let q of W){if(q.status!=="fulfilled"||!q.value)continue;let{connectionId:z,connectionTitle:U,tools:D}=q.value;for(let M of D){if(Z.has(M.name))continue;Z.add(M.name),H.push({...M,_meta:{connectionId:z,connectionTitle:U}}),F.set(M.name,z)}}let $=async(q,z)=>{let U=F.get(q);if(!U)return{content:[{type:"text",text:`Tool not found: ${q}`}],isError:!0};let D=G.get(U);if(!D)return{content:[{type:"text",text:`Connection not found for tool: ${q}`}],isError:!0};return await D.proxy.callTool({name:q,arguments:z})},V=[];for(let[,q]of G)V.push(q.proxy.close().catch(()=>{}));return await Promise.all(V),{tools:H,callTool:$}}async function wN(Y){let Q=A0(Y),X;if(Y.connectionId){let J=await Y.storage.virtualMcps.findById(Y.connectionId,Y.organization?.id);if(J)X=await lB4(J,Y);else X=await BC0(Q.id,Y)}else X=await BC0(Q.id,Y);return dB4(X,Y)}function pB4(Y){return Y.toLowerCase().split(/[\s_\-./]+/).filter((Q)=>Q.length>=2)}function cB4(Y,Q){let X=0,J=Q.name.toLowerCase(),G=(Q.description??"").toLowerCase(),K=(Q._meta?.connectionTitle??"").toLowerCase();for(let W of Y){if(J===W)X+=10;else if(J.includes(W))X+=3;if(G.includes(W))X+=2;if(K.includes(W))X+=1}return X}function ol(Y,Q,X){let J=pB4(Y);if(J.length===0)return Q.slice(0,X);return Q.map((G)=>({tool:G,score:cB4(J,G)})).filter((G)=>G.score>0).sort((G,K)=>K.score-G.score).slice(0,X).map((G)=>G.tool)}function sl(Y,Q){let X=new Map(Q.map((G)=>[G.name,G]));return{tools:Y.map((G)=>X.get(G)).filter((G)=>G!==void 0).map((G)=>({name:G.name,description:G.description,connection:G._meta?.connectionTitle??"",inputSchema:G.inputSchema,outputSchema:G.outputSchema})),notFound:Y.filter((G)=>!X.has(G))}}async function tl(Y,Q,X){let J=Object.fromEntries(Q.tools.map((G)=>[G.name,async(K)=>Q.callTool(G.name,K??{})]));return qR({code:Y,tools:J,timeoutMs:X})}function BR(Y){return{content:[{type:"text",text:JSON.stringify(Y,null,2)}]}}function N$(Y){return{content:[{type:"text",text:JSON.stringify(Y,null,2)}],isError:!0}}function k3(Y){let Q=new Set(nB4);return Y.filter((X)=>!Q.has(X.name))}var nB4;var nB=S(()=>{a31();nB4=["CODE_EXECUTION_SEARCH_TOOLS","CODE_EXECUTION_DESCRIBE_TOOLS","CODE_EXECUTION_RUN_CODE"]});var r31;var zC0=S(()=>{c0();VR();nB();r31=d1({name:"CODE_EXECUTION_SEARCH_TOOLS",description:"Search for available tools by name or description. Returns tool names and brief descriptions without full schemas. Use this to discover tools before calling CODE_EXECUTION_DESCRIBE_TOOLS for detailed schemas.",inputSchema:sT0,outputSchema:tT0,handler:async(Y,Q)=>{r1(Q),A0(Q),await Q.access.check();let X=await wN(Q),J=ol(Y.query,X.tools,Y.limit);return{query:Y.query,results:J.map((G)=>({name:G.name,description:G.description,connection:G._meta?.connectionTitle??""})),totalAvailable:X.tools.length}}})});var o31;var UC0=S(()=>{c0();VR();nB();o31=d1({name:"CODE_EXECUTION_DESCRIBE_TOOLS",description:"Get detailed schemas for specific tools. Call after CODE_EXECUTION_SEARCH_TOOLS to get full input/output schemas before executing code.",inputSchema:eT0,outputSchema:YC0,handler:async(Y,Q)=>{r1(Q),A0(Q),await Q.access.check();let X=await wN(Q);return sl(Y.tools,X.tools)}})});var s31;var DC0=S(()=>{c0();VR();nB();s31=d1({name:"CODE_EXECUTION_RUN_CODE",description:'Run JavaScript code in a sandbox. Code must be an ES module that `export default`s an async function that receives (tools) as its first parameter. Use CODE_EXECUTION_DESCRIBE_TOOLS to understand the input/output schemas for a tool before calling it. Use `await tools.toolName(args)` or `await tools["tool-name"](args)` to call tools.',inputSchema:QC0,outputSchema:XC0,handler:async(Y,Q)=>{r1(Q),A0(Q),await Q.access.check();let X=await wN(Q);return await tl(Y.code,X,Y.timeoutMs)}})});var OC0=S(()=>{zC0();UC0();DC0();VR()});var aB4,rB4,t31;var LC0=S(()=>{JY();p1();c0();pm();z3();aB4=B.object({data:CA.describe("Data for the new connection (id is auto-generated if not provided)")}),rB4=B.object({item:wQ.describe("The created connection entity")}),t31=d1({name:"COLLECTION_CONNECTIONS_CREATE",description:"Create a new MCP connection in the organization",inputSchema:aB4,outputSchema:rB4,handler:async(Y,Q)=>{r1(Q);let X=A0(Q);await Q.access.check();let J=M9(Q);if(!J)throw Error("User ID required to create connection");let G={...Y.data,organization_id:X.id,created_by:J};if(G.connection_type==="VIRTUAL"){let H=MV(G.connection_url);if(!H)throw Error("VIRTUAL connection requires connection_url in format: virtual://$virtual_mcp_id");let F=await Q.storage.virtualMcps.findById(H);if(!F)throw Error(`Virtual MCP not found: ${H}`);if(F.organization_id!==X.id)throw Error("Virtual MCP does not belong to the current organization");G.connection_url=wV(H)}let K=await oL({id:`pending-${Date.now()}`,title:G.title,connection_type:G.connection_type,connection_url:G.connection_url,connection_token:G.connection_token,connection_headers:G.connection_headers}).catch(()=>null),W=K?.length?K:null,Z=await Q.storage.connections.create({...G,tools:W});return await Q.eventBus.publish(X.id,MQ.SELF(X.id),{type:"connection.created",data:Z}),{item:Z}}})});var oB4,NC0,h_8;var MC0=S(()=>{p1();EJ();oB4=B.object({id:B.string(),name:B.string(),description:B.string().optional(),inputSchema:B.record(B.string(),B.unknown()),outputSchema:B.record(B.string(),B.unknown()).optional()}),NC0=jZ.extend({_meta:B.object({"io.decocms":B.object({id:B.string(),verified:B.boolean(),scopeName:B.string(),appName:B.string(),friendlyName:B.string().nullable().optional(),metadata:B.record(B.string(),B.unknown()).nullable().optional(),publishedAt:B.string().datetime().optional(),updatedAt:B.string().datetime().optional(),tools:B.array(oB4).nullable().optional().describe("Available tools exposed by this app")}).optional()}).optional(),server:B.object({$schema:B.string().optional(),_meta:B.record(B.string(),B.unknown()).optional(),name:B.string().describe("The server name (scope/app)"),title:B.string().optional().describe("User-friendly title"),description:B.string().optional().describe("Server description"),icons:B.array(B.object({src:B.string(),mimeType:B.string().optional(),sizes:B.array(B.string()).optional(),theme:B.enum(["light","dark"]).optional()})).optional(),remotes:B.array(B.object({type:B.enum(["http","stdio","sse"]),url:B.string().optional(),headers:B.array(B.unknown()).optional()})).optional(),packages:B.array(B.unknown()).optional(),repository:B.object({url:B.string(),source:B.string().optional(),subfolder:B.string().optional()}).optional(),version:B.string().optional(),websiteUrl:B.string().optional()})}),h_8=SZ("registry_app",NC0,{readOnly:!0})});var wC0,AC0,PC0,EC0,TC0,e31;var CC0=S(()=>{p1();sL();wC0=B.object({specversion:B.literal("1.0").describe("CloudEvents specification version"),id:B.string().describe("Unique identifier for this event (UUID recommended)"),source:B.string().describe("Connection ID of the event publisher"),type:B.string().describe("Event type (e.g., 'order.created', 'user.signup')"),time:B.string().datetime().optional().describe("Timestamp of when the event occurred (ISO 8601)"),subject:B.string().optional().describe("Subject/resource identifier (e.g., order ID, user ID)"),datacontenttype:B.string().optional().default("application/json").describe("Content type of the data attribute"),dataschema:B.string().url().optional().describe("URI to the schema for the data attribute"),data:B.unknown().optional().describe("Event payload (any JSON value)")}),AC0=B.object({events:B.array(wC0).min(1).describe("Batch of CloudEvents to process")}),PC0=B.object({success:B.boolean().optional().describe("Whether this event was processed successfully"),error:B.string().optional().describe("Error message for this event"),retryAfter:B.number().int().positive().optional().describe("Re-deliver this event after this many ms")}),EC0=B.object({success:B.boolean().optional().describe("Batch success - applies to events not in results"),error:B.string().optional().describe("Batch error message - applies to events not in results"),processedCount:B.number().int().min(0).optional().describe("Number of events successfully processed"),retryAfter:B.number().int().positive().optional().describe("Batch retryAfter - applies to events not in results"),results:B.record(B.string(),PC0).optional().describe("Per-event results keyed by event ID")}),TC0=[{name:"ON_EVENTS",inputSchema:AC0,outputSchema:EC0}],e31=O3(TC0)});var zR,UR,DR,OR,RC0,IC0,LR,NR,MR,wR,AR,PR,ER,TR,jC0,sB4;var SC0=S(()=>{p1();sL();zR=B.object({type:B.string().min(1).max(255).describe("Event type identifier"),subject:B.string().max(255).optional().describe("Subject/resource identifier (e.g., order ID)"),data:B.unknown().optional().describe("Event payload"),deliverAt:B.string().datetime().optional().describe("Scheduled delivery time (ISO 8601). Omit for immediate delivery."),cron:B.string().max(100).optional().describe("Cron expression for recurring delivery. Use EVENT_CANCEL to stop.")}),UR=B.object({id:B.string().describe("Unique event ID"),type:B.string().describe("Event type"),source:B.string().describe("Source connection ID"),time:B.string().describe("Event timestamp")}),DR=B.object({eventType:B.string().min(1).max(255).describe("Event type to subscribe to"),publisher:B.string().optional().describe("Filter events by publisher connection ID"),filter:B.string().max(1000).optional().describe("JSONPath filter expression on event data")}),OR=B.object({subscription:B.object({id:B.string().describe("Subscription ID"),connectionId:B.string().describe("Subscriber connection ID"),eventType:B.string().describe("Event type pattern"),publisher:B.string().nullable().describe("Publisher connection filter"),filter:B.string().nullable().describe("JSONPath filter expression"),enabled:B.boolean().describe("Whether subscription is enabled"),createdAt:B.string().datetime().describe("Created timestamp (ISO 8601)"),updatedAt:B.string().datetime().describe("Updated timestamp (ISO 8601)")})}),RC0=B.object({eventType:B.string().min(1).max(255).describe("Event type to subscribe to"),publisher:B.string().optional().describe("Filter events by publisher connection ID"),filter:B.string().max(1000).optional().describe("JSONPath filter expression on event data")}),IC0=B.object({id:B.string().describe("Subscription ID"),connectionId:B.string().describe("Subscriber connection ID"),eventType:B.string().describe("Event type pattern"),publisher:B.string().nullable().describe("Publisher connection filter"),filter:B.string().nullable().describe("JSONPath filter expression"),enabled:B.boolean().describe("Whether subscription is enabled"),createdAt:B.string().datetime().describe("Created timestamp (ISO 8601)"),updatedAt:B.string().datetime().describe("Updated timestamp (ISO 8601)")}),LR=B.object({subscriptions:B.array(RC0).describe("Desired subscriptions - system will create/update/delete to match")}),NR=B.object({created:B.number().int().min(0).describe("Number of subscriptions created"),updated:B.number().int().min(0).describe("Number of subscriptions with filter updated"),deleted:B.number().int().min(0).describe("Number of subscriptions removed"),unchanged:B.number().int().min(0).describe("Number of subscriptions unchanged"),subscriptions:B.array(IC0).describe("Current subscriptions after sync")}),MR=B.object({subscriptionId:B.string().describe("Subscription ID to remove")}),wR=B.object({success:B.boolean().describe("Whether unsubscribe was successful"),subscriptionId:B.string().describe("Subscription ID that was removed")}),AR=B.object({eventId:B.string().describe("Event ID to cancel")}),PR=B.object({success:B.boolean().describe("Whether cancellation was successful"),eventId:B.string().describe("Event ID that was cancelled")}),ER=B.object({eventId:B.string().describe("Event ID to acknowledge")}),TR=B.object({success:B.boolean().describe("Whether ACK was successful"),eventId:B.string().describe("Event ID that was acknowledged")}),jC0=[{name:"EVENT_PUBLISH",inputSchema:zR,outputSchema:UR},{name:"EVENT_SUBSCRIBE",inputSchema:DR,outputSchema:OR},{name:"EVENT_UNSUBSCRIBE",inputSchema:MR,outputSchema:wR},{name:"EVENT_CANCEL",inputSchema:AR,outputSchema:PR},{name:"EVENT_ACK",inputSchema:ER,outputSchema:TR},{name:"EVENT_SYNC_SUBSCRIPTIONS",inputSchema:LR,outputSchema:NR}],sB4=O3(jC0)});var tB4,eB4,Yz4,Qz4,Xz4,Jz4,Gz4,Wz4,Zz4,Kz4,Hz4,Fz4,CR;var el=S(()=>{p1();tB4=B.object({prefix:B.string().optional().describe("Filter objects by prefix (e.g., 'folder/' for folder contents)"),maxKeys:B.number().optional().default(1000).describe("Maximum number of keys to return (default: 1000)"),continuationToken:B.string().optional().describe("Token for pagination from previous response"),delimiter:B.string().optional().describe("Delimiter for grouping keys (typically '/'). When set, commonPrefixes returns folder paths.")}),eB4=B.object({objects:B.array(B.object({key:B.string().describe("Object key/path"),size:B.number().describe("Object size in bytes"),lastModified:B.string().describe("Last modified timestamp"),etag:B.string().describe("Entity tag for the object")})),nextContinuationToken:B.string().optional().describe("Token for fetching next page of results"),isTruncated:B.boolean().describe("Whether there are more results available"),commonPrefixes:B.array(B.string()).optional().describe("Folder paths when delimiter is used (e.g., ['photos/2024/', 'photos/2025/'])")}),Yz4=B.object({key:B.string().describe("Object key/path to get metadata for")}),Qz4=B.object({contentType:B.string().optional().describe("MIME type of the object"),contentLength:B.number().describe("Size of the object in bytes"),lastModified:B.string().describe("Last modified timestamp"),etag:B.string().describe("Entity tag for the object"),metadata:B.record(B.string(),B.string()).optional().describe("Custom metadata key-value pairs")}),Xz4=B.object({key:B.string().describe("Object key/path to generate URL for"),expiresIn:B.number().optional().describe("URL expiration time in seconds (default: from state config or 3600)")}),Jz4=B.object({url:B.string().describe("Presigned URL for downloading the object"),expiresIn:B.number().describe("Expiration time in seconds that was used")}),Gz4=B.object({key:B.string().describe("Object key/path for the upload"),expiresIn:B.number().optional().describe("URL expiration time in seconds (default: from state config or 3600)"),contentType:B.string().optional().describe("MIME type for the object being uploaded")}),Wz4=B.object({url:B.string().describe("Presigned URL for uploading the object"),expiresIn:B.number().describe("Expiration time in seconds that was used")}),Zz4=B.object({key:B.string().describe("Object key/path to delete")}),Kz4=B.object({success:B.boolean().describe("Whether the deletion was successful"),key:B.string().describe("The key that was deleted")}),Hz4=B.object({keys:B.array(B.string()).max(1000).describe("Array of object keys/paths to delete (max 1000)")}),Fz4=B.object({deleted:B.array(B.string()).describe("Array of successfully deleted keys"),errors:B.array(B.object({key:B.string(),message:B.string()})).describe("Array of errors for failed deletions")}),CR=[{name:"LIST_OBJECTS",inputSchema:tB4,outputSchema:eB4},{name:"GET_OBJECT_METADATA",inputSchema:Yz4,outputSchema:Qz4},{name:"GET_PRESIGNED_URL",inputSchema:Xz4,outputSchema:Jz4},{name:"PUT_PRESIGNED_URL",inputSchema:Gz4,outputSchema:Wz4},{name:"DELETE_OBJECT",inputSchema:Zz4,outputSchema:Kz4},{name:"DELETE_OBJECTS",inputSchema:Hz4,outputSchema:Fz4}]});var Yd=S(()=>{sL();MC0();CC0();SC0();el();tL()});var $z4,Vz4,vC0;var kC0=S(()=>{p1();EJ();$z4=jZ.extend({avatar:B.string().describe("URL or data URI to the assistant's avatar image"),system_prompt:B.string().describe("System prompt that defines the assistant's behavior"),virtual_mcp_id:B.string().describe("Virtual MCP ID to use for this assistant"),model:B.object({id:B.string().describe("Model ID"),connectionId:B.string().describe("Connection ID that provides the model")}).describe("Selected model reference for this assistant")}),Vz4=SZ("assistant",$z4),vC0=[...Vz4]});var RR,_3,yC0,qz4,Bz4,fC0,zz4,Uz4,Dz4,Oz4,Lz4,Nz4,hC0,Mz4,wz4,Az4,Pz4,Ez4,Tz4,Cz4,Rz4,Iz4,jz4,Ky8,Sz4,Hy8,_C0,vz4,kz4,YH1,IR;var Qd=S(()=>{p1();sL();EJ();RR=B.lazy(()=>B.union([B.null(),B.string(),B.number(),B.boolean(),B.record(B.string(),RR),B.array(RR)])),_3=B.record(B.string(),B.record(B.string(),RR)).optional().describe("Additional provider-specific options. Outer record keyed by provider name, inner by option key"),yC0=B.object({type:B.literal("text"),text:B.string().describe("The text content"),providerOptions:_3}),qz4=B.object({type:B.literal("text"),text:B.string().describe("The text content"),providerMetadata:B.any().optional().describe("Additional provider-specific metadata")}),Bz4=B.string().describe("File data as URL string"),fC0=B.object({type:B.literal("file"),filename:B.string().optional().describe("Optional filename of the file"),data:Bz4,mediaType:B.string().describe("IANA media type of the file (e.g., image/png, audio/mp3)"),providerOptions:_3}),zz4=B.object({type:B.literal("file"),mediaType:B.string().describe("IANA media type of the file (e.g., image/png, audio/mp3)"),data:B.string().describe("Generated file data as base64 encoded string")}),Uz4=B.object({type:B.literal("reasoning"),text:B.string().describe("The reasoning text"),providerOptions:_3}),Dz4=B.object({type:B.literal("reasoning"),text:B.string().describe("The reasoning text"),providerMetadata:B.any().optional().describe("Additional provider-specific metadata")}),Oz4=B.object({type:B.literal("tool-call"),toolCallId:B.string().describe("ID of the tool call, used to match with tool result"),toolName:B.string().describe("Name of the tool being called"),input:B.string().describe("Arguments of the tool call (JSON-serializable object matching tool input schema)"),providerExecuted:B.boolean().optional().describe("Whether the tool call will be executed by the provider"),providerOptions:_3}),Lz4=B.object({type:B.literal("tool-call"),toolCallId:B.string().describe("ID of the tool call"),toolName:B.string().describe("Name of the tool being called"),input:B.string().describe("Stringified JSON object with the tool call arguments"),providerExecuted:B.boolean().optional().describe("Whether the tool call will be executed by the provider"),providerMetadata:B.any().optional().describe("Additional provider-specific metadata")}),Nz4=B.union([B.object({type:B.literal("text"),value:B.string()}),B.object({type:B.literal("json"),value:RR}),B.object({type:B.literal("error-text"),value:B.string()}),B.object({type:B.literal("error-json"),value:RR}),B.object({type:B.literal("content"),value:B.array(B.union([B.object({type:B.literal("text"),text:B.string().describe("Text content")}),B.object({type:B.literal("media"),data:B.string().describe("Base-64 encoded media data"),mediaType:B.string().describe("IANA media type")})]))})]),hC0=B.object({type:B.literal("tool-result"),toolCallId:B.string().describe("ID of the tool call that this result is associated with"),toolName:B.string().describe("Name of the tool that generated this result"),output:Nz4.describe("Result of the tool call"),result:B.unknown().describe("Unknown result of the tool call"),providerOptions:_3}),Mz4=B.object({type:B.literal("tool-result"),toolCallId:B.string().describe("ID of the tool call that this result is associated with"),toolName:B.string().describe("Name of the tool that generated this result"),result:B.any().describe("Result of the tool call (JSON-serializable)"),isError:B.boolean().optional().describe("Whether the result is an error or error message"),providerExecuted:B.boolean().optional().describe("Whether the tool result was generated by the provider"),providerMetadata:B.any().optional().describe("Additional provider-specific metadata")}),wz4=B.union([B.object({type:B.literal("source"),sourceType:B.literal("url"),id:B.string().describe("The ID of the source"),url:B.string().describe("The URL of the source"),title:B.string().optional().describe("The title of the source"),providerMetadata:B.any().optional().describe("Additional provider-specific metadata")}),B.object({type:B.literal("source"),sourceType:B.literal("document"),id:B.string().describe("The ID of the source"),mediaType:B.string().describe("IANA media type of the document (e.g., application/pdf)"),title:B.string().describe("The title of the document"),filename:B.string().optional().describe("Optional filename of the document"),providerMetadata:B.any().optional().describe("Additional provider-specific metadata")})]),Az4=B.object({role:B.literal("system"),content:B.string().describe("System message content"),providerOptions:_3}),Pz4=B.object({role:B.literal("user"),content:B.array(B.union([yC0,fC0])).describe("User message content parts (text or file)"),providerOptions:_3}),Ez4=B.object({role:B.literal("assistant"),content:B.array(B.union([yC0,fC0,Uz4,Oz4,hC0])).describe("Assistant message content parts (text, file, reasoning, tool-call, or tool-result)"),providerOptions:_3}),Tz4=B.object({role:B.literal("tool"),content:B.array(hC0).describe("Tool message content (tool results)"),providerOptions:_3}),Cz4=B.union([Az4,Pz4,Ez4,Tz4]),Rz4=B.array(Cz4).describe("A list of messages forming the prompt"),Iz4=B.object({prompt:Rz4.describe("A language model prompt is a standardized prompt type (array of messages with roles: system, user, assistant, tool)"),maxOutputTokens:B.number().optional().describe("Maximum number of tokens to generate"),temperature:B.number().optional().describe("Temperature setting. The range depends on the provider and model"),topP:B.number().optional().describe("Nucleus sampling parameter"),topK:B.number().optional().describe("Only sample from the top K options for each subsequent token. Used to remove long tail low probability responses"),presencePenalty:B.number().optional().describe("Presence penalty setting. It affects the likelihood of the model to repeat information that is already in the prompt"),frequencyPenalty:B.number().optional().describe("Frequency penalty setting. It affects the likelihood of the model to repeatedly use the same words or phrases"),seed:B.number().optional().describe("The seed (integer) to use for random sampling. If set and supported by the model, calls will generate deterministic results"),stopSequences:B.array(B.string()).optional().describe("Stop sequences. If set, the model will stop generating text when one of the stop sequences is generated"),responseFormat:B.union([B.object({type:B.literal("text")}),B.object({type:B.literal("json"),schema:B.any().optional().describe("JSON schema that the generated output should conform to"),name:B.string().optional().describe("Name of output that should be generated"),description:B.string().optional().describe("Description of the output that should be generated")})]).optional().describe("Response format. The output can either be text or JSON. Default is text"),tools:B.array(B.any()).optional().describe("The tools that are available for the model"),toolChoice:B.any().optional().describe("Specifies how the tool should be selected. Defaults to 'auto'"),includeRawChunks:B.boolean().optional().describe("Include raw chunks in the stream. Only applicable for streaming calls"),abortSignal:B.any().optional().describe("Abort signal for cancelling the operation"),providerOptions:B.any().optional().describe("Additional provider-specific options")}),jz4=B.object({content:B.array(B.union([qz4,zz4,Dz4,Lz4,Mz4,wz4])).describe("Ordered content that the model has generated (text, tool-calls, reasoning, files, sources)"),finishReason:B.enum(["stop","length","content-filter","tool-calls","error","other","unknown"]).describe("Reason why generation stopped"),usage:B.looseObject({inputTokens:B.number().optional(),outputTokens:B.number().optional(),totalTokens:B.number().optional(),reasoningTokens:B.number().optional()}).describe("Usage information for the language model call"),providerMetadata:B.any().optional().describe("Additional provider-specific metadata"),request:B.object({body:B.any().optional().describe("Request HTTP body sent to the provider API")}).optional().describe("Optional request information for telemetry and debugging"),response:B.object({id:B.string().optional().describe("ID for the generated response"),timestamp:B.iso.datetime().optional().describe("Timestamp for the start of the generated response"),modelId:B.string().optional().describe("The ID of the response model that was used"),headers:B.record(B.string(),B.string()).optional().describe("Response headers"),body:B.any().optional().describe("Response HTTP body")}).optional().describe("Optional response information for telemetry and debugging"),warnings:B.array(B.any()).describe("Warnings for the call, e.g. unsupported settings")}),Ky8=B.object({stream:B.any().describe("ReadableStream of LanguageModelV2StreamPart"),request:B.object({body:B.any().optional().describe("Request HTTP body sent to the provider API")}).optional().describe("Optional request information for telemetry and debugging"),response:B.object({headers:B.record(B.string(),B.string()).optional().describe("Response headers")}).optional().describe("Optional response data")}),Sz4=B.object({supportedUrls:B.record(B.string(),B.array(B.string())).describe("Supported URL patterns by media type for the provider")}),Hy8=B.object({modelId:B.string().describe("The ID of the model"),logo:B.string().nullable(),description:B.string().nullable(),capabilities:B.array(B.string()),limits:B.object({contextWindow:B.number(),maxOutputTokens:B.number()}).nullable(),costs:B.object({input:B.number(),output:B.number()}).nullable(),provider:B.enum(["openai","anthropic","google","x-ai","deepseek","openai-compatible","openrouter"]).nullable()}),_C0=B.object({modelId:B.string().describe("The ID of the model"),callOptions:Iz4}),vz4=jZ.extend({logo:B.string().nullable(),description:B.string().nullable(),capabilities:B.array(B.string()),limits:B.object({contextWindow:B.number(),maxOutputTokens:B.number()}).nullable(),costs:B.object({input:B.number(),output:B.number()}).nullable(),provider:B.enum(["openai","anthropic","google","xai","deepseek","openai-compatible","openrouter"]).nullable()}),kz4=SZ("llm",vz4,{readOnly:!0}),YH1=[{name:"LLM_METADATA",inputSchema:B.object({modelId:B.string().describe("The ID of the model")}),outputSchema:Sz4},{name:"LLM_DO_STREAM",inputSchema:_C0,streamable:!0},{name:"LLM_DO_GENERATE",inputSchema:_C0,outputSchema:jz4},...kz4],IR=O3(YH1)});function AN(){return!1}function Xd(Y,Q){return Y===MQ.DEV_ASSETS(Q)}function PN(Y,Q){let X=ss(Q,Y),J=new Date().toISOString();return{id:X.id??MQ.DEV_ASSETS(Y),title:X.title,description:X.description??null,icon:X.icon??null,app_name:X.app_name??null,app_id:X.app_id??null,organization_id:Y,created_by:"system",created_at:J,updated_at:J,connection_type:X.connection_type,connection_url:X.connection_url??null,connection_token:null,connection_headers:null,oauth_config:null,configuration_state:null,configuration_scopes:null,metadata:X.metadata??null,tools:_z4,bindings:["OBJECT_STORAGE"],status:"active"}}var _z4;var Jd=S(()=>{el();JY();p1();_z4=CR.map((Y)=>({name:Y.name,description:`${Y.name} operation for local file storage`,inputSchema:B.toJSONSchema(Y.inputSchema),outputSchema:B.toJSONSchema(Y.outputSchema)}))});function fz4(Y){let Q=[],X=0;while(X<Y.length){let J=Y[X];if(J==="%")Q.push(".*");else if(J==="_")Q.push(".");else if(/[.*+?^${}()|[\]\\]/.test(J))Q.push("\\"+J);else Q.push(J);X++}return Q.join("")}function M$(Y){return typeof Y==="string"||typeof Y==="number"}function Gd(Y,Q){if("conditions"in Q){let{operator:Z,conditions:H}=Q;switch(Z){case"and":return H.every((F)=>Gd(Y,F));case"or":return H.some((F)=>Gd(Y,F));case"not":return!H.every((F)=>Gd(Y,F));default:return!0}}let{field:X,operator:J,value:G}=Q,K=X.join("."),W=QH1(Y,K);switch(J){case"eq":return W===G;case"gt":return M$(W)&&M$(G)&&W>G;case"gte":return M$(W)&&M$(G)&&W>=G;case"lt":return M$(W)&&M$(G)&&W<G;case"lte":return M$(W)&&M$(G)&&W<=G;case"in":return Array.isArray(G)&&G.includes(W);case"like":if(typeof W!=="string"||typeof G!=="string")return!1;if(G.length>100)return!1;let Z=fz4(G);return new RegExp(`^${Z}$`,"i").test(W);case"contains":if(typeof W!=="string"||typeof G!=="string")return!1;return W.toLowerCase().includes(G.toLowerCase());default:return!0}}function QH1(Y,Q){let X=Q.split("."),J=Y;for(let G of X){if(J==null||typeof J!=="object")return;J=J[G]}return J}function hz4(Y,Q){return[...Y].sort((X,J)=>{for(let G of Q){let K=G.field.join("."),W=QH1(X,K),Z=QH1(J,K),H=0;if(W==null&&Z==null)continue;if(W==null)H=G.nulls==="first"?-1:1;else if(Z==null)H=G.nulls==="first"?1:-1;else if(typeof W==="string"&&typeof Z==="string")H=W.localeCompare(Z);else if(typeof W==="number"&&typeof Z==="number")H=W-Z;else H=String(W).localeCompare(String(Z));if(H!==0)return G.direction==="desc"?-H:H}return 0})}var yz4,bz4,xz4,XH1;var bC0=S(()=>{Yd();kC0();EJ();Qd();el();JY();p1();c0();Jd();z3();yz4={LLM:YH1,ASSISTANTS:vC0,OBJECT_STORAGE:CR};bz4=L3.extend({binding:B.union([B.object({}).passthrough(),B.string()]).optional(),include_virtual:B.boolean().optional().describe("Whether to include VIRTUAL connections in the results. Defaults to false.")}),xz4=N3(wQ),XH1=d1({name:"COLLECTION_CONNECTIONS_LIST",description:"List all connections in the organization with filtering, sorting, and pagination",inputSchema:bz4,outputSchema:xz4,handler:async(Y,Q)=>{await Q.access.check();let X=A0(Q),J=Y.binding?typeof Y.binding==="string"?(()=>{let q=yz4[Y.binding.toUpperCase()];if(!q)throw Error(`Unknown binding: ${Y.binding}`);return q})():Y.binding:void 0,G=J?sm(J):void 0,K=await Q.storage.connections.list(X.id,{includeVirtual:Y.include_virtual??!1});if(AN()){let q=DJ(),z=MQ.DEV_ASSETS(X.id);if(!K.some((U)=>U.id===z)){let U=PN(X.id,q);K.unshift(U)}}let W=G?await Promise.all(K.map(async(q)=>{if(!q.tools||q.tools.length===0)return null;return G.isImplementedBy(q.tools.map((U)=>({name:U.name,inputSchema:U.inputSchema,outputSchema:U.outputSchema})))?q:null})).then((q)=>q.filter((z)=>z!==null)):K;if(Y.where)W=W.filter((q)=>Gd(q,Y.where));if(Y.orderBy&&Y.orderBy.length>0)W=hz4(W,Y.orderBy);let Z=W.length,H=Y.offset??0,F=Y.limit??100,$=W.slice(H,H+F),V=H+F<Z;return{items:$,totalCount:Z,hasMore:V}}})});var gz4,JH1;var xC0=S(()=>{EJ();c0();Jd();z3();gz4=vC(wQ),JH1=d1({name:"COLLECTION_CONNECTIONS_GET",description:"Get connection details by ID",inputSchema:SC,outputSchema:gz4,handler:async(Y,Q)=>{let X=A0(Q);if(await Q.access.check(),AN()&&Xd(Y.id,X.id))return{item:PN(X.id,DJ())};let J=await Q.storage.connections.findById(Y.id);if(!J||J.organization_id!==X.id)return{item:null};return{item:J}}})});var Wd=(Y,Q)=>{if(Q===null||Q===void 0)return;let X=Y.replace(/\[(\w+)\]/g,".$1").split(".").filter(Boolean),J=Q;for(let G of X){if(J===null||J===void 0||typeof J!=="object")return;J=J[G]}return J};function gC0(Y){let Q=Y.split("::");if(Q.length!==2||!Q[0]||!Q[1])throw Error(`Invalid scope format: ${Y}. Expected format: "KEY::SCOPE"`);return Q}function uz4(Y){let Q=Y.split("::");if(Q.length!==2||!Q[0]||!Q[1])return null;return Q}function mz4(Y){if(typeof Y==="object"&&Y!==null&&"value"in Y){let Q=Y.value;if(typeof Q==="string")return Q}return null}function GH1(Y,Q){let X={};if(!Y||!Q)return X;for(let J of Q){if(J==="*"){X["*"]=["*"];continue}let G=uz4(J);if(!G)continue;let[K,W]=G,Z=Wd(K,Y),H=mz4(Z);if(H){if(!X[H])X[H]=[];X[H].push(W)}}return X}function uC0(Y,Q){let X=GH1(Y,Q);return new Set(Object.keys(X).filter((J)=>J!=="*"))}var WH1=()=>{};import{randomBytes as lz4}from"crypto";function mC0(){if(jR)return jR;let Y=process.env.MESH_JWT_SECRET??t9.jwt?.secret??process.env.BETTER_AUTH_SECRET;if(Y)jR=new TextEncoder().encode(Y);else console.warn("MESH_JWT_SECRET not set - generating random secret (not persistent)"),jR=new Uint8Array(lz4(32));return jR}async function lC0(Y,Q="5m"){let X=mC0();return await new UX(Y).setProtectedHeader({alg:"HS256",typ:"JWT"}).setIssuedAt().setExpirationTime(Q).sign(X)}async function dC0(Y){try{let Q=mC0(),{payload:X}=await r8(Y,Q);return X}catch{return}}var jR=null;var ZH1=S(()=>{sX();EN()});async function pC0(Y){if(!Y.refreshToken)return{success:!1,error:"No refresh token available"};if(!Y.tokenEndpoint)return{success:!1,error:"No token endpoint available"};if(!Y.clientId)return{success:!1,error:"No client ID available"};try{let Q=new URLSearchParams({grant_type:"refresh_token",refresh_token:Y.refreshToken,client_id:Y.clientId});if(Y.clientSecret)Q.set("client_secret",Y.clientSecret);if(Y.scope)Q.set("scope",Y.scope);let X=await fetch(Y.tokenEndpoint,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:Q.toString()});if(!X.ok){let G=await X.text();console.error(`[TokenRefresh] Failed to refresh token: ${X.status}`,G);try{let K=JSON.parse(G);return{success:!1,error:K.error_description||K.error||`Token refresh failed: ${X.status}`}}catch{return{success:!1,error:`Token refresh failed: ${X.status}`}}}let J=await X.json();return{success:!0,accessToken:J.access_token,refreshToken:J.refresh_token||Y.refreshToken,expiresIn:J.expires_in,scope:J.scope}}catch(Q){return console.error("[TokenRefresh] Error refreshing token:",Q),{success:!1,error:Q instanceof Error?Q.message:"Token refresh failed"}}}class y3{db;vault;constructor(Y,Q){this.db=Y;this.vault=Q}async get(Y){let Q=await this.db.selectFrom("downstream_tokens").selectAll().where("connectionId","=",Y).executeTakeFirst();if(!Q)return null;return this.decryptToken(Q)}async upsert(Y){let Q=new Date().toISOString(),X=await this.vault.encrypt(Y.accessToken),J=Y.refreshToken?await this.vault.encrypt(Y.refreshToken):null,G=Y.clientSecret?await this.vault.encrypt(Y.clientSecret):null;return await this.db.transaction().execute(async(K)=>{let W=await K.selectFrom("downstream_tokens").select(["id","createdAt"]).where("connectionId","=",Y.connectionId).executeTakeFirst();if(W)return await K.updateTable("downstream_tokens").set({accessToken:X,refreshToken:J,scope:Y.scope,expiresAt:Y.expiresAt?.toISOString()??null,clientId:Y.clientId,clientSecret:G,tokenEndpoint:Y.tokenEndpoint,updatedAt:Q}).where("id","=",W.id).execute(),{id:W.id,connectionId:Y.connectionId,accessToken:Y.accessToken,refreshToken:Y.refreshToken,scope:Y.scope,expiresAt:Y.expiresAt,createdAt:W.createdAt,updatedAt:Q,clientId:Y.clientId,clientSecret:Y.clientSecret,tokenEndpoint:Y.tokenEndpoint};let Z=N8("dtok");return await K.insertInto("downstream_tokens").values({id:Z,connectionId:Y.connectionId,accessToken:X,refreshToken:J,scope:Y.scope,expiresAt:Y.expiresAt?.toISOString()??null,clientId:Y.clientId,clientSecret:G,tokenEndpoint:Y.tokenEndpoint,createdAt:Q,updatedAt:Q}).execute(),{id:Z,connectionId:Y.connectionId,accessToken:Y.accessToken,refreshToken:Y.refreshToken,scope:Y.scope,expiresAt:Y.expiresAt,createdAt:Q,updatedAt:Q,clientId:Y.clientId,clientSecret:Y.clientSecret,tokenEndpoint:Y.tokenEndpoint}})}async delete(Y){await this.db.deleteFrom("downstream_tokens").where("connectionId","=",Y).execute()}isExpired(Y,Q=0){if(!Y.expiresAt)return!1;let J=(Y.expiresAt instanceof Date?Y.expiresAt:new Date(Y.expiresAt)).getTime();if(Number.isNaN(J))return!0;return J-Q<Date.now()}async decryptToken(Y){let Q=await this.vault.decrypt(Y.accessToken),X=Y.refreshToken?await this.vault.decrypt(Y.refreshToken):null,J=Y.clientSecret?await this.vault.decrypt(Y.clientSecret):null;return{id:Y.id,connectionId:Y.connectionId,accessToken:Q,refreshToken:X,scope:Y.scope,expiresAt:Y.expiresAt,createdAt:Y.createdAt,updatedAt:Y.updatedAt,clientId:Y.clientId,clientSecret:J,tokenEndpoint:Y.tokenEndpoint}}}var Zd=S(()=>{b7()});async function SR(Y,Q,X){let J=Y.id,G=GH1(Y.configuration_state,Y.configuration_scopes),K=Q.auth.user?.id??Q.auth.apiKey?.userId??(X?Y.created_by:void 0),[W,Z]=K?await lC0({sub:K,user:{id:K},metadata:{state:Y.configuration_state??void 0,meshUrl:process.env.MESH_URL??Q.baseUrl,connectionId:J,organizationId:Q.organization?.id},permissions:G}).then((z)=>[z,null]).catch((z)=>[null,z]):[null,Error("User ID required to issue configuration token")];if(Z)console.error("Failed to issue configuration token:",W);let H=Q.auth.user?.connectionId,F={...H?{"x-caller-id":H}:{},...Q.metadata.wellKnownForwardableHeaders??{},"x-request-id":Q.metadata.requestId},$=null,V=new y3(Q.db,Q.vault),q=await V.get(J);if(q){let z=!!q.refreshToken&&!!q.tokenEndpoint;if(V.isExpired(q,z?300000:0))if(z){console.log(`[Proxy] Token expired for ${J}, attempting refresh`);let D=await pC0(q);if(D.success&&D.accessToken)await V.upsert({connectionId:J,accessToken:D.accessToken,refreshToken:D.refreshToken??q.refreshToken,scope:D.scope??q.scope,expiresAt:D.expiresIn?new Date(Date.now()+D.expiresIn*1000):null,clientId:q.clientId,clientSecret:q.clientSecret,tokenEndpoint:q.tokenEndpoint}),$=D.accessToken,console.log(`[Proxy] Token refreshed for ${J}`);else await V.delete(J),console.error(`[Proxy] Token refresh failed for ${J}: ${D.error}`)}else await V.delete(J),console.log(`[Proxy] Token expired without refresh capability for ${J}`);else $=q.accessToken}if(!$&&Y.connection_token)$=Y.connection_token;if($)F.Authorization=`Bearer ${$}`;if(W)F["x-mesh-token"]=W;return F}var KH1=S(()=>{WH1();ZH1();Zd()});function Kd(){let Y=new Map;function Q(J,G){let K=Y.get(G);if(K)return console.log(`[ClientPool] Reusing cached client for ${G}`),K;console.log(`[ClientPool] Creating new client for ${G}`);let W=new VX({name:`outbound-client-${G}`,version:"1.0.0"},{capabilities:{tasks:{list:{},cancel:{},requests:{tool:{call:{}}}}}});W.onclose=()=>{Y.delete(G)};let Z=W.connect(J,{timeout:30000}).then(()=>W).catch((H)=>{throw Y.delete(G),H});return Y.set(G,Z),Z}return Object.assign(Q,{[Symbol.asyncDispose]:async()=>{let J=[];for(let[G,K]of Y)J.push(K.then((W)=>W.close()).catch((W)=>console.error(`[ClientPool] Error closing client ${G}:`,W)));await Promise.all(J),Y.clear()}})}var HH1=S(()=>{LV()});function cC0(Y){let Q=new PC({command:Y.command,args:Y.args,env:Y.env,cwd:Y.cwd,stderr:"pipe"}),X=Y.name||Y.id,J="\x1B[2m",G="\x1B[0m";return Q.stderr?.on("data",(K)=>{let W=K.toString().trimEnd();if(W)console.error(`${W} \x1B[2m[${X}]\x1B[0m`)}),Q}var nC0=S(()=>{yZ1()});class vR{innerTransport;constructor(Y){this.innerTransport=Y}async start(){return this.innerTransport.onmessage=(Y)=>{this.handleIncomingMessage(Y)},this.innerTransport.onerror=(Y)=>{this.onerror?.(Y)},this.innerTransport.onclose=()=>{this.onclose?.()},this.innerTransport.start()}async send(Y){return this.handleOutgoingMessage(Y)}async close(){return this.innerTransport.close()}async handleOutgoingMessage(Y){return this.innerTransport.send(Y)}handleIncomingMessage(Y){this.onmessage?.(Y)}isRequest(Y){return"method"in Y&&Y.method!==void 0}isResponse(Y){return"result"in Y||"error"in Y&&!("method"in Y)}onmessage;onerror;onclose}function kR(Y,...Q){return Q.reduce((X,J)=>J(X),Y)}var iC0="mcp.mesh";var aC0,FH1,f3;var _R=S(()=>{aC0=class aC0 extends Error{constructor(Y){super(Y);this.name="UnauthorizedError"}};FH1=class FH1 extends Error{constructor(Y){super(Y);this.name="ForbiddenError"}};f3=class f3{userId;toolName;boundAuth;role;connectionId;getToolMeta;_granted=!1;constructor(Y,Q,X,J,G,K="self",W){this.userId=Q;this.toolName=X;this.boundAuth=J;this.role=G;this.connectionId=K;this.getToolMeta=W}[Symbol.dispose](){this._granted=!1}setToolName(Y){this.toolName=Y}grant(){return this._granted=!0,{[Symbol.dispose]:()=>{this._granted=!1}}}async check(...Y){if(this._granted)return;if(this.toolName?.startsWith("MESH_PUBLIC_")){this.grant();return}if(!this.userId&&!this.boundAuth){if(this.getToolMeta&&await this.isToolPublic()){this.grant();return}throw new aC0("Authentication required. Please provide a valid OAuth token or API key.")}let Q=Y.length>0?Y:this.toolName?[this.toolName]:[];if(Q.length===0)throw new FH1("No resources specified for access check");for(let X of Q)if(await this.checkResource(X)){this.grant();return}throw new FH1(`Access denied to: ${Q.join(", ")}`)}async checkResource(Y){if(!this.userId&&!this.boundAuth)return!1;if(this.role==="admin"||this.role==="owner")return!0;if(!this.boundAuth)return!1;let Q={};if(this.connectionId)Q[this.connectionId]=[Y];return this.boundAuth.hasPermission(Q)}async isToolPublic(){if(this.toolName?.startsWith("MESH_PUBLIC_"))return!0;if(!this.getToolMeta)return!1;try{let Y=await this.getToolMeta();if(!Y)return!1;let X=Y[iC0]?.public_tool;return X===!0||X==="true"}catch{return!1}}granted(){return this._granted}}});var dz4="mcp.mesh",TN;var rC0=S(()=>{_R();TN=class TN extends vR{options;cachedToolsMap=null;constructor(Y,Q){super(Y);this.options=Q;if(Q.connection.tools)this.cachedToolsMap=new Map(Q.connection.tools.map((X)=>[X.name,X]))}async handleOutgoingMessage(Y){if(!this.isRequest(Y))return this.innerTransport.send(Y);let Q=Y;if(Q.method==="tools/call")await this.authorizeToolCall(Q),this.stripMetaFromArguments(Q);return this.innerTransport.send(Y)}async authorizeToolCall(Y){if(this.options.superUser)return;let X=Y.params.name,{ctx:J,connection:G}=this.options;if(this.isPublicTool(X))return;if(!J.auth.user?.id&&!J.auth.apiKey?.id)throw Error("Authentication required. Please provide a valid OAuth token or API key.");let K=async()=>{return this.cachedToolsMap?.get(X)?._meta};await new f3(J.authInstance,J.auth.user?.id??J.auth.apiKey?.userId,X,J.boundAuth,J.auth.user?.role,G.id,K).check(X)}isPublicTool(Y){if(Y.startsWith("MESH_PUBLIC_"))return!0;if(!this.cachedToolsMap)return!1;let Q=this.cachedToolsMap.get(Y);if(!Q?._meta)return!1;return Q._meta[dz4]?.public_tool===!0}stripMetaFromArguments(Y){let Q=Y.params;if(Q.arguments&&"_meta"in Q.arguments){let{_meta:X,...J}=Q.arguments;Q.arguments=J}}}});function sC0(Y){if(!Y.isError)return;let Q=Y.content;if(!Array.isArray(Q))return;for(let X of Q)if(X&&typeof X==="object"&&"type"in X&&X.type==="text"&&"text"in X&&typeof X.text==="string")return X.text;return}function VH1(Y){if(!Y)return;let Q=Y._meta;if(!Q||typeof Q!=="object"||Array.isArray(Q))return;let X=Q.properties;if(!X||typeof X!=="object"||Array.isArray(X))return;let J={};for(let[G,K]of Object.entries(X))if(typeof K==="string")J[G]=K;return Object.keys(J).length>0?J:void 0}function qH1(Y,Q){if(!Y&&!Q)return;if(!Y)return Q;if(!Q)return Y;return{...Q,...Y}}function BH1(Y){if(Y&&typeof Y==="object"&&!Array.isArray(Y)){let Q=Y,X=Q.structuredContent;if(X&&typeof X==="object"&&!Array.isArray(X))return X;return Q}return{value:Y}}async function pz4(Y,Q){let X=Y.body;if(!X)return{text:"",truncated:!1};let J=X.getReader(),G=new TextDecoder,K=!1,W=0,Z=[];try{while(!0){let{value:H,done:F}=await J.read();if(F)break;if(H){if(W+=H.byteLength,W>Q){K=!0;let $=Q-(W-H.byteLength);if($>0)Z.push(G.decode(H.slice(0,$),{stream:!0}));break}Z.push(G.decode(H,{stream:!0}))}}}finally{J.releaseLock()}return Z.push(G.decode()),{text:Z.join(""),truncated:K}}async function $H1(Y){let{ctx:Q,enabled:X}=Y,J=Y.organizationId??Q.organization?.id;if(!X||!J)return;if(WK(Y.connectionId))return;let G=VH1(Y.request.params.arguments),K=qH1(Q.metadata.properties,G),W=Q.auth.user?.id||Q.auth.apiKey?.userId;if(W)try{let Z=await Q.storage.tags.getUserTagsInOrg(W,J);if(Z.length>0){let H=Z.map((F)=>F.name).join(",");K={...K,user_tags:H}}}catch{}await Q.storage.monitoring.log({organizationId:J,connectionId:Y.connectionId,connectionTitle:Y.connectionTitle,toolName:Y.request.params.name,input:Y.request.params.arguments??{},output:Y.output,isError:Y.isError,errorMessage:Y.errorMessage,durationMs:Y.durationMs,timestamp:new Date,userId:Q.auth.user?.id||Q.auth.apiKey?.userId||null,requestId:Q.metadata.requestId,userAgent:Q.metadata.userAgent,virtualMcpId:Y.virtualMcpId,properties:K})}function tC0(Y){let{ctx:Q,enabled:X,connectionId:J,connectionTitle:G,virtualMcpId:K}=Y;return async(W,Z)=>{let H=Date.now();try{let F=await Z(),$=Q.organization?.id;if(X&&$){let V=F.clone();(async()=>{try{let{text:q,truncated:z}=await pz4(V,oC0),U=Date.now()-H,D=V.headers.get("content-type")??"",M=q;if(D.includes("application/json"))try{M=q.length?JSON.parse(q):null}catch{M=q}let w=F.status>=400,R=w&&M&&typeof M==="object"&&"error"in M?M.error:void 0,P=typeof R==="string"&&R?R:w&&typeof M==="string"&&M.trim()?M.slice(0,500):w?`HTTP ${F.status} ${F.statusText}`.trim():z?`Response body truncated to ${oC0} bytes`:void 0;await $H1({ctx:Q,enabled:X,organizationId:$,connectionId:J,connectionTitle:G,virtualMcpId:K,request:W,output:BH1(M),isError:w,errorMessage:P,durationMs:U})}catch(q){let z=Date.now()-H;await $H1({ctx:Q,enabled:X,organizationId:$,connectionId:J,connectionTitle:G,virtualMcpId:K,request:W,output:{},isError:!0,errorMessage:`Failed to read streamable response body: ${q.message}`,durationMs:z})}})()}return F}catch(F){let $=F,V=Date.now()-H;throw await $H1({ctx:Q,enabled:X,connectionId:J,connectionTitle:G,virtualMcpId:K,request:W,output:{},isError:!0,errorMessage:$.message,durationMs:V}),F}}}var oC0=262144;var zH1=S(()=>{JY()});var CN;var eC0=S(()=>{t2();zH1();CN=class CN extends vR{options;inflightRequests=new Map;constructor(Y,Q){super(Y);this.options=Q}async handleOutgoingMessage(Y){if(this.isRequest(Y)){let Q=Y;this.onRequestStart(Q)}return this.innerTransport.send(Y)}handleIncomingMessage(Y){if(this.isResponse(Y)){let Q=Y;this.onResponseEnd(Q)}this.onmessage?.(Y)}onRequestStart(Y){let{ctx:Q,connectionId:X}=this.options,J,G;if(Y.method==="tools/call"&&Y.params){let W=Y.params;J=W.name,G=W.arguments}let K;if(Y.method==="tools/call"&&J)K=Q.tracer.startSpan("mcp.proxy.callTool",{attributes:{"connection.id":X,"tool.name":J,"request.id":Q.metadata.requestId,"jsonrpc.id":Y.id,"jsonrpc.method":Y.method}});if(Y.id!==null&&Y.id!==void 0)this.inflightRequests.set(Y.id,{startTime:Date.now(),method:Y.method,toolName:J,toolArguments:G,span:K})}onResponseEnd(Y){if(Y.id===null||Y.id===void 0)return;let Q=this.inflightRequests.get(Y.id);if(!Q)return;let{ctx:X,connectionId:J}=this.options,{startTime:G,method:K,toolName:W,toolArguments:Z,span:H}=Q,F=Date.now()-G;if(this.inflightRequests.delete(Y.id),K!=="tools/call"||!W)return;let $="error"in Y,V=$?Y.error:Y.result,q=$?{content:[{type:"text",text:Y.error?.message||"Unknown error"}],isError:!0}:V;if(X.meter.createHistogram("connection.proxy.duration").record(F,{"connection.id":J,"tool.name":W,status:$?"error":"success"}),$)X.meter.createCounter("connection.proxy.errors").add(1,{"connection.id":J,"tool.name":W,error:Y.error?.message});else X.meter.createCounter("connection.proxy.requests").add(1,{"connection.id":J,"tool.name":W,status:"success"});if(H){if($&&Y.error)H.recordException(Error(Y.error.message)),H.setAttributes({error:!0,"error.code":Y.error.code,"error.message":Y.error.message});H.end()}this.logToDatabase({toolName:W,toolArguments:Z,result:q,duration:F,isError:Boolean($)})}async logToDatabase(Y){let{ctx:Q,connectionId:X,connectionTitle:J,virtualMcpId:G}=this.options,{toolName:K,toolArguments:W,result:Z,duration:H,isError:F}=Y;if(!fb().enabled)return;let V=Q.organization?.id;if(!V)return;let q=sC0(Z),z=BH1(Z),U=VH1(W),D=qH1(Q.metadata.properties,U);try{await Q.storage.monitoring.log({organizationId:V,connectionId:X,connectionTitle:J,toolName:K,input:W??{},output:z,isError:F,errorMessage:q,durationMs:H,timestamp:new Date,userId:Q.auth.user?.id||Q.auth.apiKey?.userId||null,requestId:Q.metadata.requestId,userAgent:Q.metadata.userAgent,virtualMcpId:G,properties:D})}catch(M){console.error("[MonitoringTransport] Failed to log to database:",M)}}async close(){for(let Y of this.inflightRequests.values())if(Y.span)Y.span.setAttributes({"transport.closed":!0}),Y.span.end();return this.inflightRequests.clear(),super.close()}}});var YR0=S(()=>{rC0();eC0()});async function QR0(Y,Q,X=!1){let J=Y.id,G=Q.connectionId&&Q.connectionId!==J?Q.connectionId:void 0;switch(Y.connection_type){case"STDIO":{if(process.env.UNSAFE_ALLOW_STDIO_TRANSPORT!=="true")throw Error("STDIO connections are disabled in production. Set UNSAFE_ALLOW_STDIO_TRANSPORT=true to enable.");let K=Y.connection_headers;if(!DW(K))throw Error("STDIO connection missing parameters");let W=cC0({id:J,name:Y.title,command:K.command,args:K.args,env:K.envVars,cwd:K.cwd});return W=kR(W,(Z)=>new TN(Z,{ctx:Q,connection:Y,superUser:X}),(Z)=>new CN(Z,{ctx:Q,connectionId:J,connectionTitle:Y.title,virtualMcpId:G})),cz4(W,J)}case"HTTP":case"Websocket":{if(!Y.connection_url)throw Error(`${Y.connection_type} connection missing URL`);let K=await SR(Y,Q,X),W=Y.connection_headers;if(W&&"headers"in W)Object.assign(K,W.headers);let Z=new jH(new URL(Y.connection_url),{requestInit:{headers:K}});return Z=kR(Z,(H)=>new TN(H,{ctx:Q,connection:Y,superUser:X}),(H)=>new CN(H,{ctx:Q,connectionId:J,connectionTitle:Y.title,virtualMcpId:G})),Q.getOrCreateClient(Z,J)}case"SSE":{if(!Y.connection_url)throw Error("SSE connection missing URL");let K=await SR(Y,Q,X),W=Y.connection_headers;if(W&&"headers"in W)Object.assign(K,W.headers);let Z=new kB(new URL(Y.connection_url),{requestInit:{headers:K}});return Z=kR(Z,(H)=>new TN(H,{ctx:Q,connection:Y,superUser:X}),(H)=>new CN(H,{ctx:Q,connectionId:J,connectionTitle:Y.title,virtualMcpId:G})),Q.getOrCreateClient(Z,J)}default:throw Error(`Unknown connection type: ${Y.connection_type}`)}}var cz4;var XR0=S(()=>{z3();mm();TA();KH1();HH1();nC0();YR0();cz4=Kd()});function w$(Y){if(!Y?._meta)return!1;return typeof Y._meta["mcp.mesh"]?.["tool.fn"]==="string"}function WR0(Y){return Y._meta["mcp.mesh"]["tool.fn"]}function yR(Y,Q,X,J){return{id:Y,name:Q.name,description:Q.description,inputSchema:Q.inputSchema,outputSchema:Q.outputSchema,annotations:Q.annotations,code:Q._meta["mcp.mesh"]["tool.fn"],connection_dependencies:Q._meta.connectionDependencies??[],created_at:X,updated_at:J}}var UH1,Tf8,fZ,JR0,GR0;var h3=S(()=>{p1();UH1=B.object({title:B.string().optional(),readOnlyHint:B.boolean().optional(),destructiveHint:B.boolean().optional(),idempotentHint:B.boolean().optional(),openWorldHint:B.boolean().optional()}),Tf8=B.object({"tool.fn":B.string().describe("JavaScript ES module code that exports a default async function")}),fZ=B.object({id:B.string().describe("Unique identifier for the virtual tool (auto-generated)"),name:B.string().min(1).max(255).describe("Tool name (must be unique within the Virtual MCP)"),description:B.string().optional().describe("Human-readable description of what the tool does"),inputSchema:B.record(B.string(),B.unknown()).describe("JSON Schema defining the tool's input parameters"),outputSchema:B.record(B.string(),B.unknown()).optional().describe("JSON Schema defining the tool's output (optional)"),annotations:UH1.optional().describe("MCP tool annotations"),code:B.string().describe("JavaScript ES module code. Must export default an async function: export default async (tools, args) => { ... }"),connection_dependencies:B.array(B.string()).describe("Connection IDs that this tool depends on (specified by the creator)"),created_at:B.string().describe("When the virtual tool was created"),updated_at:B.string().describe("When the virtual tool was last updated")}),JR0=B.object({name:B.string().min(1).max(255).describe("Tool name (must be unique within the Virtual MCP)"),description:B.string().optional().describe("Human-readable description"),inputSchema:B.record(B.string(),B.unknown()).describe("JSON Schema defining the tool's input parameters"),outputSchema:B.record(B.string(),B.unknown()).optional().describe("JSON Schema for output"),annotations:UH1.optional().describe("MCP tool annotations"),code:B.string().describe("JavaScript ES module code. Must export default an async function: export default async (tools, args) => { ... }"),connection_dependencies:B.array(B.string()).optional().describe("Connection IDs that this tool depends on. Creates indirect aggregations to prevent deletion of referenced connections.")}),GR0=B.object({name:B.string().min(1).max(255).optional().describe("New tool name"),description:B.string().nullable().optional().describe("New description (null to clear)"),inputSchema:B.record(B.string(),B.unknown()).optional().describe("New input schema"),outputSchema:B.record(B.string(),B.unknown()).nullable().optional().describe("New output schema (null to clear)"),annotations:UH1.nullable().optional().describe("New annotations (null to clear)"),code:B.string().optional().describe("New JavaScript code"),connection_dependencies:B.array(B.string()).optional().describe("Connection IDs that this tool depends on. Replaces existing dependencies if provided.")})});function iB(Y){return(Q)=>{if(Q instanceof w0&&Q.code===C0.MethodNotFound)return Y;throw Q}}var DH1=S(()=>{DY()});class ZR0{factory;promise=null;constructor(Y){this.factory=Y}getOrCreatePromise(){if(!this.promise)this.promise=this.factory();return this.promise}then(Y,Q){return this.getOrCreatePromise().then(Y,Q)}catch(Y){return this.getOrCreatePromise().catch(Y)}finally(Y){return this.getOrCreatePromise().finally(Y)}}function aB(Y){return new ZR0(Y)}async function nz4(Y,Q,X=!1){let J=await Promise.all(Y.map(async(G)=>{try{let K=await sQ(G,Q,X);return[G.id,K]}catch(K){return console.warn(`[aggregator] Failed to create client for connection ${G.id}:`,K),null}}));return new Map(J.filter((G)=>!!G))}async function KR0(Y){let Q=[];for(let[,X]of Y)Q.push(X.close().catch(()=>{}));await Promise.all(Q)}var RN;var OH1=S(()=>{IN();DH1();LV();a31();h3();RN=class RN extends VX{options;ctx;_cachedTools;_cachedResources;_cachedPrompts;_clients;_connections;_selectionMap;constructor(Y,Q){super({name:"virtual-mcp-passthrough",version:"1.0.0"},{capabilities:{tasks:{list:{},cancel:{},requests:{tool:{call:{}}}}}});this.options=Y;this.ctx=Q;this._selectionMap=new Map;for(let X of Y.virtualMcp.connections)this._selectionMap.set(X.connection_id,X);this._connections=new Map;for(let X of Y.connections)this._connections.set(X.id,X);this._clients=aB(()=>nz4(this.options.connections,this.ctx,this.options.superUser)),this._cachedTools=aB(()=>this.loadToolsCache()),this._cachedResources=aB(()=>this.loadCache("resources")),this._cachedPrompts=aB(()=>this.loadCache("prompts"))}async loadToolsCache(){let Y=await this._clients,Q=await Promise.all(Array.from(Y.entries()).map(async([W,Z])=>{try{let H=await Z.listTools().then(($)=>$.tools),F=this._selectionMap.get(W);if(F?.selected_tools?.length){let $=new Set(F.selected_tools);H=H.filter((V)=>$.has(V.name))}return{connectionId:W,data:H}}catch(H){return console.error(`[PassthroughClient] Failed to load tools for connection ${W}:`,H),null}})),X=[],J=new Map,G=new Map,K=this.options.virtualTools??[];for(let W of K){if(J.has(W.name))continue;let Z={name:W.name,description:W.description,inputSchema:W.inputSchema,outputSchema:W.outputSchema,annotations:W.annotations,_meta:{connectionId:this.options.virtualMcp.id??"__VIRTUAL__",connectionTitle:this.options.virtualMcp.title}};X.push(Z),J.set(W.name,"__VIRTUAL__"),G.set(W.name,W)}for(let W of Q){if(!W)continue;let{connectionId:Z,data:H}=W,$=this._connections.get(Z)?.title??"";for(let V of H){let q=V.name;if(J.has(q))continue;let z={...V,_meta:{connectionId:Z,connectionTitle:$,...V?._meta}};X.push(z),J.set(q,Z)}}return{data:X,mappings:J,virtualTools:G}}async loadCache(Y){let Q=await this._clients,X=await Promise.all(Array.from(Q.entries()).map(async([K,W])=>{try{let Z=Y==="resources"?await W.listResources().catch(iB({resources:[]})).then(($)=>$.resources):await W.listPrompts().catch(iB({prompts:[]})).then(($)=>$.prompts),H=this._selectionMap.get(K),F=Y==="resources"?"selected_resources":"selected_prompts";if(H?.[F]?.length){let $=new Set(H[F]);return{connectionId:K,data:Z.filter((V)=>$.has(V.name))}}return{connectionId:K,data:Z}}catch(Z){return console.error(`[PassthroughClient] Failed to load cache for connection ${K}:`,Z),null}})),J=[],G=new Map;for(let K of X){if(!K)continue;let{connectionId:W,data:Z}=K,F=this._connections.get(W)?.title??"";for(let $ of Z){let V=$.name??$.uri;if(G.has(V))continue;let q={...$,_meta:{connectionId:W,connectionTitle:F,...$?._meta}};J.push(q),G.set(V,W)}}return{data:J,mappings:G}}async listTools(){return{tools:(await this._cachedTools).data}}async callTool(Y){let[Q,X]=await Promise.all([this._cachedTools,this._clients]),J=Q.mappings.get(Y.name);if(!J)return{content:[{type:"text",text:`Tool not found: ${Y.name}`}],isError:!0};if(J==="__VIRTUAL__")return this.executeVirtualTool(Y.name,Y.arguments??{},Q,X);let G=X.get(J);if(!G)return{content:[{type:"text",text:`Connection not found for tool: ${Y.name}`}],isError:!0};return await G.callTool({name:Y.name,arguments:Y.arguments??{}})}async executeVirtualTool(Y,Q,X,J){let G=X.virtualTools.get(Y);if(!G)return{content:[{type:"text",text:`Virtual tool not found: ${Y}`}],isError:!0};let K=WR0(G),W={};for(let[Z,H]of X.mappings){if(H==="__VIRTUAL__")continue;let F=J.get(H);if(!F)continue;W[Z]=async($)=>{let V=await F.callTool({name:Z,arguments:$}),q=V.content;if(q?.[0]?.type==="text"&&q[0].text)try{return JSON.parse(q[0].text)}catch{return q[0].text}return V}}try{let H=`
1353
+ ${Q.stack}`;return G}}catch{}if(typeof Q.toString==="function")try{let G=Q.toString();if(G!=="[object Object]")return G}catch{}let J=Object.keys(Q);if(J.length>0)return`Object with keys: ${J.join(", ")}`;return"[object Object]"}if(typeof Y==="string")return Y;if(typeof Y==="number"||typeof Y==="boolean")return String(Y);if(typeof Y==="function")return`[Function: ${Y.name||"anon"}]`;if(typeof Y==="symbol")return Y.toString();if(typeof Y==="bigint")return Y.toString();try{return String(Y)}catch{return"Unknown value (could not convert to string)"}}function MN(Y,Q){switch(typeof Q){case"string":return Y.newString(Q);case"number":return Y.newNumber(Q);case"boolean":return Q?Y.true:Y.false;case"undefined":return Y.undefined;case"object":{if(Q===null)return Y.null;if(Array.isArray(Q)){let J=Y.newArray();return Q.forEach((G,K)=>{let W=MN(Y,G);try{Y.setProp(J,String(K),W)}finally{W.dispose?.()}}),J}let X=Y.newObject();for(let[J,G]of Object.entries(Q)){let K=MN(Y,G);try{Y.setProp(X,J,K)}finally{K.dispose?.()}}return X}case"function":{let X=`__hostFn_${Date.now()}_${Math.random().toString(36).substr(2,9)}`;return Y.newFunction(X,(...G)=>{try{let K=G.map((Z)=>Y.dump(Z)),W=Q(...K);if(W&&typeof W.then==="function"){let Z=Y.newPromise();return W.then((H)=>{try{let F=MN(Y,H);Z.resolve(F),F.dispose()}catch(F){let $=NN(F),V=Y.newString(`Promise resolution error: ${$}`);Z.reject(V),V.dispose()}finally{Y.runtime.executePendingJobs()}}).catch((H)=>{let F=NN(H),$=Y.newString(`Promise rejection: ${F}`);Z.reject($),$.dispose(),Y.runtime.executePendingJobs()}),Z.handle}return MN(Y,W)}catch(K){let W=NN(K);return Y.newString(`HostFunctionError: ${W}`)}finally{G.forEach((K)=>K.dispose())}})}case"bigint":return Y.newString(Q.toString());case"symbol":return Y.newString(Q.toString());default:try{return Y.newString(String(Q))}catch{return Y.undefined}}}var FC0=()=>{};function VC0(Y){let Q=Y.runtime.executePendingJobs(100);try{if("unwrap"in Q&&typeof Q.unwrap==="function")Q.unwrap()}finally{if("dispose"in Q&&typeof Q.dispose==="function")Q.dispose()}}async function $C0(Y,Q,X){let J=Date.now(),G=Y.resolvePromise(Q);while(!0){VC0(Y);let K=await Promise.race([G,mB4(0).then(()=>null)]);if(K!==null)return K;if(Date.now()-J>X)throw Error(`Timed out after ${X}ms while awaiting a QuickJS promise`)}}async function qR({tools:Y,code:Q,timeoutMs:X}){let W=[];try{const J=VI(W,await KC0({memoryLimitBytes:33554432,stackSizeBytes:524288}),0);const G=VI(W,J.newContext({interruptAfterMs:X}),0);const K=VI(W,JC0(G),0);try{let $=G.evalCode(Q,"index.mjs",{strip:!0,strict:!0,type:"module"}),V=G.unwrapResult($),q=MN(G,Y);G.setProp(G.global,"tools",q);let z=G.runtime.hasPendingJob()?G.unwrapResult(await $C0(G,V,X)):V;if(z!==V)V.dispose();let U=G.getProp(z,"default"),D=G.typeof(U);if(D!=="function")return U.dispose(),z.dispose(),q.dispose(),{error:`Code must export default a function (tools). Got ${D}. Example: export default async (tools) => { /* ... */ }`,consoleLogs:K.logs};let M=G.callFunction(U,G.undefined,q);q.dispose(),U.dispose(),z.dispose();let w=G.unwrapResult(M),R=await $C0(G,w,X);w.dispose();let P=G.unwrapResult(R);if(G.runtime.hasPendingJob())VC0(G);let T=G.dump(P);return P.dispose(),{returnValue:T,consoleLogs:K.logs}}catch($){return console.log($),{error:NN($),consoleLogs:K.logs}}}catch(Z){var H=Z,F=1}finally{FV1(W,H,F)}}var mB4=(Y)=>new Promise((Q)=>setTimeout(Q,Y));var qC0=S(()=>{HC0();FC0()});var a31=S(()=>{qC0()});async function lB4(Y,Q){let X=Y.connections.map((K)=>K.connection_id),J=[];for(let K of X){let W=await Q.storage.connections.findById(K);if(W&&W.status==="active")J.push(W)}return J.map((K)=>{let W=Y.connections.find((Z)=>Z.connection_id===K.id);return{connection:K,selectedTools:W?.selected_tools??null,selectedResources:W?.selected_resources??null,selectedPrompts:W?.selected_prompts??null}})}async function BC0(Y,Q){return(await Q.storage.connections.list(Y)).filter((J)=>J.status==="active").map((J)=>({connection:J,selectedTools:null,selectedResources:null,selectedPrompts:null}))}async function dB4(Y,Q){let X=new Map;for(let q of Y)X.set(q.connection.id,q);let J=Y.map((q)=>q.connection),G=new Map,K=await Promise.allSettled(J.map(async(q)=>{try{let z=await Q.createMCPProxy(q);return{connection:q,proxy:z}}catch(z){return console.warn(`[code-execution] Failed to create proxy for connection ${q.id}:`,z),null}}));for(let q of K)if(q.status==="fulfilled"&&q.value)G.set(q.value.connection.id,q.value);let W=await Promise.allSettled(Array.from(G.entries()).map(async([q,z])=>{try{let D=(await z.proxy.listTools()).tools,M=X.get(q);if(M?.selectedTools&&M.selectedTools.length>0){let w=new Set(M.selectedTools);D=D.filter((R)=>w.has(R.name))}return{connectionId:q,connectionTitle:z.connection.title,tools:D}}catch(U){return console.error(`[code-execution] Failed to list tools for connection ${q}:`,U),null}})),Z=new Set,H=[],F=new Map;for(let q of W){if(q.status!=="fulfilled"||!q.value)continue;let{connectionId:z,connectionTitle:U,tools:D}=q.value;for(let M of D){if(Z.has(M.name))continue;Z.add(M.name),H.push({...M,_meta:{connectionId:z,connectionTitle:U}}),F.set(M.name,z)}}let $=async(q,z)=>{let U=F.get(q);if(!U)return{content:[{type:"text",text:`Tool not found: ${q}`}],isError:!0};let D=G.get(U);if(!D)return{content:[{type:"text",text:`Connection not found for tool: ${q}`}],isError:!0};return await D.proxy.callTool({name:q,arguments:z})},V=[];for(let[,q]of G)V.push(q.proxy.close().catch(()=>{}));return await Promise.all(V),{tools:H,callTool:$}}async function wN(Y){let Q=A0(Y),X;if(Y.connectionId){let J=await Y.storage.virtualMcps.findById(Y.connectionId,Y.organization?.id);if(J)X=await lB4(J,Y);else X=await BC0(Q.id,Y)}else X=await BC0(Q.id,Y);return dB4(X,Y)}function pB4(Y){return Y.toLowerCase().split(/[\s_\-./]+/).filter((Q)=>Q.length>=2)}function cB4(Y,Q){let X=0,J=Q.name.toLowerCase(),G=(Q.description??"").toLowerCase(),K=(Q._meta?.connectionTitle??"").toLowerCase();for(let W of Y){if(J===W)X+=10;else if(J.includes(W))X+=3;if(G.includes(W))X+=2;if(K.includes(W))X+=1}return X}function ol(Y,Q,X){let J=pB4(Y);if(J.length===0)return Q.slice(0,X);return Q.map((G)=>({tool:G,score:cB4(J,G)})).filter((G)=>G.score>0).sort((G,K)=>K.score-G.score).slice(0,X).map((G)=>G.tool)}function sl(Y,Q){let X=new Map(Q.map((G)=>[G.name,G]));return{tools:Y.map((G)=>X.get(G)).filter((G)=>G!==void 0).map((G)=>({name:G.name,description:G.description,connection:G._meta?.connectionTitle??"",inputSchema:G.inputSchema,outputSchema:G.outputSchema})),notFound:Y.filter((G)=>!X.has(G))}}async function tl(Y,Q,X){let J=Object.fromEntries(Q.tools.map((G)=>[G.name,async(K)=>{let W=await Q.callTool(G.name,K??{});if(W.structuredContent&&typeof W.structuredContent==="object")return W.structuredContent;let Z=W.content;if(Z?.[0]?.type==="text"&&Z[0].text)try{return JSON.parse(Z[0].text)}catch{return Z[0].text}return W}]));return qR({code:Y,tools:J,timeoutMs:X})}function BR(Y){return{content:[{type:"text",text:JSON.stringify(Y,null,2)}]}}function N$(Y){return{content:[{type:"text",text:JSON.stringify(Y,null,2)}],isError:!0}}function k3(Y){let Q=new Set(nB4);return Y.filter((X)=>!Q.has(X.name))}var nB4;var nB=S(()=>{a31();nB4=["CODE_EXECUTION_SEARCH_TOOLS","CODE_EXECUTION_DESCRIBE_TOOLS","CODE_EXECUTION_RUN_CODE"]});var r31;var zC0=S(()=>{c0();VR();nB();r31=d1({name:"CODE_EXECUTION_SEARCH_TOOLS",description:"Search for available tools by name or description. Returns tool names and brief descriptions without full schemas. Use this to discover tools before calling CODE_EXECUTION_DESCRIBE_TOOLS for detailed schemas.",inputSchema:sT0,outputSchema:tT0,handler:async(Y,Q)=>{r1(Q),A0(Q),await Q.access.check();let X=await wN(Q),J=ol(Y.query,X.tools,Y.limit);return{query:Y.query,results:J.map((G)=>({name:G.name,description:G.description,connection:G._meta?.connectionTitle??""})),totalAvailable:X.tools.length}}})});var o31;var UC0=S(()=>{c0();VR();nB();o31=d1({name:"CODE_EXECUTION_DESCRIBE_TOOLS",description:"Get detailed schemas for specific tools. Call after CODE_EXECUTION_SEARCH_TOOLS to get full input/output schemas before executing code.",inputSchema:eT0,outputSchema:YC0,handler:async(Y,Q)=>{r1(Q),A0(Q),await Q.access.check();let X=await wN(Q);return sl(Y.tools,X.tools)}})});var s31;var DC0=S(()=>{c0();VR();nB();s31=d1({name:"CODE_EXECUTION_RUN_CODE",description:'Run JavaScript code in a sandbox. Code must be an ES module that `export default`s an async function that receives (tools) as its first parameter. Use CODE_EXECUTION_DESCRIBE_TOOLS to understand the input/output schemas for a tool before calling it. Use `await tools.toolName(args)` or `await tools["tool-name"](args)` to call tools.',inputSchema:QC0,outputSchema:XC0,handler:async(Y,Q)=>{r1(Q),A0(Q),await Q.access.check();let X=await wN(Q);return await tl(Y.code,X,Y.timeoutMs)}})});var OC0=S(()=>{zC0();UC0();DC0();VR()});var aB4,rB4,t31;var LC0=S(()=>{JY();p1();c0();pm();z3();aB4=B.object({data:CA.describe("Data for the new connection (id is auto-generated if not provided)")}),rB4=B.object({item:wQ.describe("The created connection entity")}),t31=d1({name:"COLLECTION_CONNECTIONS_CREATE",description:"Create a new MCP connection in the organization",inputSchema:aB4,outputSchema:rB4,handler:async(Y,Q)=>{r1(Q);let X=A0(Q);await Q.access.check();let J=M9(Q);if(!J)throw Error("User ID required to create connection");let G={...Y.data,organization_id:X.id,created_by:J};if(G.connection_type==="VIRTUAL"){let H=MV(G.connection_url);if(!H)throw Error("VIRTUAL connection requires connection_url in format: virtual://$virtual_mcp_id");let F=await Q.storage.virtualMcps.findById(H);if(!F)throw Error(`Virtual MCP not found: ${H}`);if(F.organization_id!==X.id)throw Error("Virtual MCP does not belong to the current organization");G.connection_url=wV(H)}let K=await oL({id:`pending-${Date.now()}`,title:G.title,connection_type:G.connection_type,connection_url:G.connection_url,connection_token:G.connection_token,connection_headers:G.connection_headers}).catch(()=>null),W=K?.length?K:null,Z=await Q.storage.connections.create({...G,tools:W});return await Q.eventBus.publish(X.id,MQ.SELF(X.id),{type:"connection.created",data:Z}),{item:Z}}})});var oB4,NC0,h_8;var MC0=S(()=>{p1();EJ();oB4=B.object({id:B.string(),name:B.string(),description:B.string().optional(),inputSchema:B.record(B.string(),B.unknown()),outputSchema:B.record(B.string(),B.unknown()).optional()}),NC0=jZ.extend({_meta:B.object({"io.decocms":B.object({id:B.string(),verified:B.boolean(),scopeName:B.string(),appName:B.string(),friendlyName:B.string().nullable().optional(),metadata:B.record(B.string(),B.unknown()).nullable().optional(),publishedAt:B.string().datetime().optional(),updatedAt:B.string().datetime().optional(),tools:B.array(oB4).nullable().optional().describe("Available tools exposed by this app")}).optional()}).optional(),server:B.object({$schema:B.string().optional(),_meta:B.record(B.string(),B.unknown()).optional(),name:B.string().describe("The server name (scope/app)"),title:B.string().optional().describe("User-friendly title"),description:B.string().optional().describe("Server description"),icons:B.array(B.object({src:B.string(),mimeType:B.string().optional(),sizes:B.array(B.string()).optional(),theme:B.enum(["light","dark"]).optional()})).optional(),remotes:B.array(B.object({type:B.enum(["http","stdio","sse"]),url:B.string().optional(),headers:B.array(B.unknown()).optional()})).optional(),packages:B.array(B.unknown()).optional(),repository:B.object({url:B.string(),source:B.string().optional(),subfolder:B.string().optional()}).optional(),version:B.string().optional(),websiteUrl:B.string().optional()})}),h_8=SZ("registry_app",NC0,{readOnly:!0})});var wC0,AC0,PC0,EC0,TC0,e31;var CC0=S(()=>{p1();sL();wC0=B.object({specversion:B.literal("1.0").describe("CloudEvents specification version"),id:B.string().describe("Unique identifier for this event (UUID recommended)"),source:B.string().describe("Connection ID of the event publisher"),type:B.string().describe("Event type (e.g., 'order.created', 'user.signup')"),time:B.string().datetime().optional().describe("Timestamp of when the event occurred (ISO 8601)"),subject:B.string().optional().describe("Subject/resource identifier (e.g., order ID, user ID)"),datacontenttype:B.string().optional().default("application/json").describe("Content type of the data attribute"),dataschema:B.string().url().optional().describe("URI to the schema for the data attribute"),data:B.unknown().optional().describe("Event payload (any JSON value)")}),AC0=B.object({events:B.array(wC0).min(1).describe("Batch of CloudEvents to process")}),PC0=B.object({success:B.boolean().optional().describe("Whether this event was processed successfully"),error:B.string().optional().describe("Error message for this event"),retryAfter:B.number().int().positive().optional().describe("Re-deliver this event after this many ms")}),EC0=B.object({success:B.boolean().optional().describe("Batch success - applies to events not in results"),error:B.string().optional().describe("Batch error message - applies to events not in results"),processedCount:B.number().int().min(0).optional().describe("Number of events successfully processed"),retryAfter:B.number().int().positive().optional().describe("Batch retryAfter - applies to events not in results"),results:B.record(B.string(),PC0).optional().describe("Per-event results keyed by event ID")}),TC0=[{name:"ON_EVENTS",inputSchema:AC0,outputSchema:EC0}],e31=O3(TC0)});var zR,UR,DR,OR,RC0,IC0,LR,NR,MR,wR,AR,PR,ER,TR,jC0,sB4;var SC0=S(()=>{p1();sL();zR=B.object({type:B.string().min(1).max(255).describe("Event type identifier"),subject:B.string().max(255).optional().describe("Subject/resource identifier (e.g., order ID)"),data:B.unknown().optional().describe("Event payload"),deliverAt:B.string().datetime().optional().describe("Scheduled delivery time (ISO 8601). Omit for immediate delivery."),cron:B.string().max(100).optional().describe("Cron expression for recurring delivery. Use EVENT_CANCEL to stop.")}),UR=B.object({id:B.string().describe("Unique event ID"),type:B.string().describe("Event type"),source:B.string().describe("Source connection ID"),time:B.string().describe("Event timestamp")}),DR=B.object({eventType:B.string().min(1).max(255).describe("Event type to subscribe to"),publisher:B.string().optional().describe("Filter events by publisher connection ID"),filter:B.string().max(1000).optional().describe("JSONPath filter expression on event data")}),OR=B.object({subscription:B.object({id:B.string().describe("Subscription ID"),connectionId:B.string().describe("Subscriber connection ID"),eventType:B.string().describe("Event type pattern"),publisher:B.string().nullable().describe("Publisher connection filter"),filter:B.string().nullable().describe("JSONPath filter expression"),enabled:B.boolean().describe("Whether subscription is enabled"),createdAt:B.string().datetime().describe("Created timestamp (ISO 8601)"),updatedAt:B.string().datetime().describe("Updated timestamp (ISO 8601)")})}),RC0=B.object({eventType:B.string().min(1).max(255).describe("Event type to subscribe to"),publisher:B.string().optional().describe("Filter events by publisher connection ID"),filter:B.string().max(1000).optional().describe("JSONPath filter expression on event data")}),IC0=B.object({id:B.string().describe("Subscription ID"),connectionId:B.string().describe("Subscriber connection ID"),eventType:B.string().describe("Event type pattern"),publisher:B.string().nullable().describe("Publisher connection filter"),filter:B.string().nullable().describe("JSONPath filter expression"),enabled:B.boolean().describe("Whether subscription is enabled"),createdAt:B.string().datetime().describe("Created timestamp (ISO 8601)"),updatedAt:B.string().datetime().describe("Updated timestamp (ISO 8601)")}),LR=B.object({subscriptions:B.array(RC0).describe("Desired subscriptions - system will create/update/delete to match")}),NR=B.object({created:B.number().int().min(0).describe("Number of subscriptions created"),updated:B.number().int().min(0).describe("Number of subscriptions with filter updated"),deleted:B.number().int().min(0).describe("Number of subscriptions removed"),unchanged:B.number().int().min(0).describe("Number of subscriptions unchanged"),subscriptions:B.array(IC0).describe("Current subscriptions after sync")}),MR=B.object({subscriptionId:B.string().describe("Subscription ID to remove")}),wR=B.object({success:B.boolean().describe("Whether unsubscribe was successful"),subscriptionId:B.string().describe("Subscription ID that was removed")}),AR=B.object({eventId:B.string().describe("Event ID to cancel")}),PR=B.object({success:B.boolean().describe("Whether cancellation was successful"),eventId:B.string().describe("Event ID that was cancelled")}),ER=B.object({eventId:B.string().describe("Event ID to acknowledge")}),TR=B.object({success:B.boolean().describe("Whether ACK was successful"),eventId:B.string().describe("Event ID that was acknowledged")}),jC0=[{name:"EVENT_PUBLISH",inputSchema:zR,outputSchema:UR},{name:"EVENT_SUBSCRIBE",inputSchema:DR,outputSchema:OR},{name:"EVENT_UNSUBSCRIBE",inputSchema:MR,outputSchema:wR},{name:"EVENT_CANCEL",inputSchema:AR,outputSchema:PR},{name:"EVENT_ACK",inputSchema:ER,outputSchema:TR},{name:"EVENT_SYNC_SUBSCRIPTIONS",inputSchema:LR,outputSchema:NR}],sB4=O3(jC0)});var tB4,eB4,Yz4,Qz4,Xz4,Jz4,Gz4,Wz4,Zz4,Kz4,Hz4,Fz4,CR;var el=S(()=>{p1();tB4=B.object({prefix:B.string().optional().describe("Filter objects by prefix (e.g., 'folder/' for folder contents)"),maxKeys:B.number().optional().default(1000).describe("Maximum number of keys to return (default: 1000)"),continuationToken:B.string().optional().describe("Token for pagination from previous response"),delimiter:B.string().optional().describe("Delimiter for grouping keys (typically '/'). When set, commonPrefixes returns folder paths.")}),eB4=B.object({objects:B.array(B.object({key:B.string().describe("Object key/path"),size:B.number().describe("Object size in bytes"),lastModified:B.string().describe("Last modified timestamp"),etag:B.string().describe("Entity tag for the object")})),nextContinuationToken:B.string().optional().describe("Token for fetching next page of results"),isTruncated:B.boolean().describe("Whether there are more results available"),commonPrefixes:B.array(B.string()).optional().describe("Folder paths when delimiter is used (e.g., ['photos/2024/', 'photos/2025/'])")}),Yz4=B.object({key:B.string().describe("Object key/path to get metadata for")}),Qz4=B.object({contentType:B.string().optional().describe("MIME type of the object"),contentLength:B.number().describe("Size of the object in bytes"),lastModified:B.string().describe("Last modified timestamp"),etag:B.string().describe("Entity tag for the object"),metadata:B.record(B.string(),B.string()).optional().describe("Custom metadata key-value pairs")}),Xz4=B.object({key:B.string().describe("Object key/path to generate URL for"),expiresIn:B.number().optional().describe("URL expiration time in seconds (default: from state config or 3600)")}),Jz4=B.object({url:B.string().describe("Presigned URL for downloading the object"),expiresIn:B.number().describe("Expiration time in seconds that was used")}),Gz4=B.object({key:B.string().describe("Object key/path for the upload"),expiresIn:B.number().optional().describe("URL expiration time in seconds (default: from state config or 3600)"),contentType:B.string().optional().describe("MIME type for the object being uploaded")}),Wz4=B.object({url:B.string().describe("Presigned URL for uploading the object"),expiresIn:B.number().describe("Expiration time in seconds that was used")}),Zz4=B.object({key:B.string().describe("Object key/path to delete")}),Kz4=B.object({success:B.boolean().describe("Whether the deletion was successful"),key:B.string().describe("The key that was deleted")}),Hz4=B.object({keys:B.array(B.string()).max(1000).describe("Array of object keys/paths to delete (max 1000)")}),Fz4=B.object({deleted:B.array(B.string()).describe("Array of successfully deleted keys"),errors:B.array(B.object({key:B.string(),message:B.string()})).describe("Array of errors for failed deletions")}),CR=[{name:"LIST_OBJECTS",inputSchema:tB4,outputSchema:eB4},{name:"GET_OBJECT_METADATA",inputSchema:Yz4,outputSchema:Qz4},{name:"GET_PRESIGNED_URL",inputSchema:Xz4,outputSchema:Jz4},{name:"PUT_PRESIGNED_URL",inputSchema:Gz4,outputSchema:Wz4},{name:"DELETE_OBJECT",inputSchema:Zz4,outputSchema:Kz4},{name:"DELETE_OBJECTS",inputSchema:Hz4,outputSchema:Fz4}]});var Yd=S(()=>{sL();MC0();CC0();SC0();el();tL()});var $z4,Vz4,vC0;var kC0=S(()=>{p1();EJ();$z4=jZ.extend({avatar:B.string().describe("URL or data URI to the assistant's avatar image"),system_prompt:B.string().describe("System prompt that defines the assistant's behavior"),virtual_mcp_id:B.string().describe("Virtual MCP ID to use for this assistant"),model:B.object({id:B.string().describe("Model ID"),connectionId:B.string().describe("Connection ID that provides the model")}).describe("Selected model reference for this assistant")}),Vz4=SZ("assistant",$z4),vC0=[...Vz4]});var RR,_3,yC0,qz4,Bz4,fC0,zz4,Uz4,Dz4,Oz4,Lz4,Nz4,hC0,Mz4,wz4,Az4,Pz4,Ez4,Tz4,Cz4,Rz4,Iz4,jz4,Ky8,Sz4,Hy8,_C0,vz4,kz4,YH1,IR;var Qd=S(()=>{p1();sL();EJ();RR=B.lazy(()=>B.union([B.null(),B.string(),B.number(),B.boolean(),B.record(B.string(),RR),B.array(RR)])),_3=B.record(B.string(),B.record(B.string(),RR)).optional().describe("Additional provider-specific options. Outer record keyed by provider name, inner by option key"),yC0=B.object({type:B.literal("text"),text:B.string().describe("The text content"),providerOptions:_3}),qz4=B.object({type:B.literal("text"),text:B.string().describe("The text content"),providerMetadata:B.any().optional().describe("Additional provider-specific metadata")}),Bz4=B.string().describe("File data as URL string"),fC0=B.object({type:B.literal("file"),filename:B.string().optional().describe("Optional filename of the file"),data:Bz4,mediaType:B.string().describe("IANA media type of the file (e.g., image/png, audio/mp3)"),providerOptions:_3}),zz4=B.object({type:B.literal("file"),mediaType:B.string().describe("IANA media type of the file (e.g., image/png, audio/mp3)"),data:B.string().describe("Generated file data as base64 encoded string")}),Uz4=B.object({type:B.literal("reasoning"),text:B.string().describe("The reasoning text"),providerOptions:_3}),Dz4=B.object({type:B.literal("reasoning"),text:B.string().describe("The reasoning text"),providerMetadata:B.any().optional().describe("Additional provider-specific metadata")}),Oz4=B.object({type:B.literal("tool-call"),toolCallId:B.string().describe("ID of the tool call, used to match with tool result"),toolName:B.string().describe("Name of the tool being called"),input:B.string().describe("Arguments of the tool call (JSON-serializable object matching tool input schema)"),providerExecuted:B.boolean().optional().describe("Whether the tool call will be executed by the provider"),providerOptions:_3}),Lz4=B.object({type:B.literal("tool-call"),toolCallId:B.string().describe("ID of the tool call"),toolName:B.string().describe("Name of the tool being called"),input:B.string().describe("Stringified JSON object with the tool call arguments"),providerExecuted:B.boolean().optional().describe("Whether the tool call will be executed by the provider"),providerMetadata:B.any().optional().describe("Additional provider-specific metadata")}),Nz4=B.union([B.object({type:B.literal("text"),value:B.string()}),B.object({type:B.literal("json"),value:RR}),B.object({type:B.literal("error-text"),value:B.string()}),B.object({type:B.literal("error-json"),value:RR}),B.object({type:B.literal("content"),value:B.array(B.union([B.object({type:B.literal("text"),text:B.string().describe("Text content")}),B.object({type:B.literal("media"),data:B.string().describe("Base-64 encoded media data"),mediaType:B.string().describe("IANA media type")})]))})]),hC0=B.object({type:B.literal("tool-result"),toolCallId:B.string().describe("ID of the tool call that this result is associated with"),toolName:B.string().describe("Name of the tool that generated this result"),output:Nz4.describe("Result of the tool call"),result:B.unknown().describe("Unknown result of the tool call"),providerOptions:_3}),Mz4=B.object({type:B.literal("tool-result"),toolCallId:B.string().describe("ID of the tool call that this result is associated with"),toolName:B.string().describe("Name of the tool that generated this result"),result:B.any().describe("Result of the tool call (JSON-serializable)"),isError:B.boolean().optional().describe("Whether the result is an error or error message"),providerExecuted:B.boolean().optional().describe("Whether the tool result was generated by the provider"),providerMetadata:B.any().optional().describe("Additional provider-specific metadata")}),wz4=B.union([B.object({type:B.literal("source"),sourceType:B.literal("url"),id:B.string().describe("The ID of the source"),url:B.string().describe("The URL of the source"),title:B.string().optional().describe("The title of the source"),providerMetadata:B.any().optional().describe("Additional provider-specific metadata")}),B.object({type:B.literal("source"),sourceType:B.literal("document"),id:B.string().describe("The ID of the source"),mediaType:B.string().describe("IANA media type of the document (e.g., application/pdf)"),title:B.string().describe("The title of the document"),filename:B.string().optional().describe("Optional filename of the document"),providerMetadata:B.any().optional().describe("Additional provider-specific metadata")})]),Az4=B.object({role:B.literal("system"),content:B.string().describe("System message content"),providerOptions:_3}),Pz4=B.object({role:B.literal("user"),content:B.array(B.union([yC0,fC0])).describe("User message content parts (text or file)"),providerOptions:_3}),Ez4=B.object({role:B.literal("assistant"),content:B.array(B.union([yC0,fC0,Uz4,Oz4,hC0])).describe("Assistant message content parts (text, file, reasoning, tool-call, or tool-result)"),providerOptions:_3}),Tz4=B.object({role:B.literal("tool"),content:B.array(hC0).describe("Tool message content (tool results)"),providerOptions:_3}),Cz4=B.union([Az4,Pz4,Ez4,Tz4]),Rz4=B.array(Cz4).describe("A list of messages forming the prompt"),Iz4=B.object({prompt:Rz4.describe("A language model prompt is a standardized prompt type (array of messages with roles: system, user, assistant, tool)"),maxOutputTokens:B.number().optional().describe("Maximum number of tokens to generate"),temperature:B.number().optional().describe("Temperature setting. The range depends on the provider and model"),topP:B.number().optional().describe("Nucleus sampling parameter"),topK:B.number().optional().describe("Only sample from the top K options for each subsequent token. Used to remove long tail low probability responses"),presencePenalty:B.number().optional().describe("Presence penalty setting. It affects the likelihood of the model to repeat information that is already in the prompt"),frequencyPenalty:B.number().optional().describe("Frequency penalty setting. It affects the likelihood of the model to repeatedly use the same words or phrases"),seed:B.number().optional().describe("The seed (integer) to use for random sampling. If set and supported by the model, calls will generate deterministic results"),stopSequences:B.array(B.string()).optional().describe("Stop sequences. If set, the model will stop generating text when one of the stop sequences is generated"),responseFormat:B.union([B.object({type:B.literal("text")}),B.object({type:B.literal("json"),schema:B.any().optional().describe("JSON schema that the generated output should conform to"),name:B.string().optional().describe("Name of output that should be generated"),description:B.string().optional().describe("Description of the output that should be generated")})]).optional().describe("Response format. The output can either be text or JSON. Default is text"),tools:B.array(B.any()).optional().describe("The tools that are available for the model"),toolChoice:B.any().optional().describe("Specifies how the tool should be selected. Defaults to 'auto'"),includeRawChunks:B.boolean().optional().describe("Include raw chunks in the stream. Only applicable for streaming calls"),abortSignal:B.any().optional().describe("Abort signal for cancelling the operation"),providerOptions:B.any().optional().describe("Additional provider-specific options")}),jz4=B.object({content:B.array(B.union([qz4,zz4,Dz4,Lz4,Mz4,wz4])).describe("Ordered content that the model has generated (text, tool-calls, reasoning, files, sources)"),finishReason:B.enum(["stop","length","content-filter","tool-calls","error","other","unknown"]).describe("Reason why generation stopped"),usage:B.looseObject({inputTokens:B.number().optional(),outputTokens:B.number().optional(),totalTokens:B.number().optional(),reasoningTokens:B.number().optional()}).describe("Usage information for the language model call"),providerMetadata:B.any().optional().describe("Additional provider-specific metadata"),request:B.object({body:B.any().optional().describe("Request HTTP body sent to the provider API")}).optional().describe("Optional request information for telemetry and debugging"),response:B.object({id:B.string().optional().describe("ID for the generated response"),timestamp:B.iso.datetime().optional().describe("Timestamp for the start of the generated response"),modelId:B.string().optional().describe("The ID of the response model that was used"),headers:B.record(B.string(),B.string()).optional().describe("Response headers"),body:B.any().optional().describe("Response HTTP body")}).optional().describe("Optional response information for telemetry and debugging"),warnings:B.array(B.any()).describe("Warnings for the call, e.g. unsupported settings")}),Ky8=B.object({stream:B.any().describe("ReadableStream of LanguageModelV2StreamPart"),request:B.object({body:B.any().optional().describe("Request HTTP body sent to the provider API")}).optional().describe("Optional request information for telemetry and debugging"),response:B.object({headers:B.record(B.string(),B.string()).optional().describe("Response headers")}).optional().describe("Optional response data")}),Sz4=B.object({supportedUrls:B.record(B.string(),B.array(B.string())).describe("Supported URL patterns by media type for the provider")}),Hy8=B.object({modelId:B.string().describe("The ID of the model"),logo:B.string().nullable(),description:B.string().nullable(),capabilities:B.array(B.string()),limits:B.object({contextWindow:B.number(),maxOutputTokens:B.number()}).nullable(),costs:B.object({input:B.number(),output:B.number()}).nullable(),provider:B.enum(["openai","anthropic","google","x-ai","deepseek","openai-compatible","openrouter"]).nullable()}),_C0=B.object({modelId:B.string().describe("The ID of the model"),callOptions:Iz4}),vz4=jZ.extend({logo:B.string().nullable(),description:B.string().nullable(),capabilities:B.array(B.string()),limits:B.object({contextWindow:B.number(),maxOutputTokens:B.number()}).nullable(),costs:B.object({input:B.number(),output:B.number()}).nullable(),provider:B.enum(["openai","anthropic","google","xai","deepseek","openai-compatible","openrouter"]).nullable()}),kz4=SZ("llm",vz4,{readOnly:!0}),YH1=[{name:"LLM_METADATA",inputSchema:B.object({modelId:B.string().describe("The ID of the model")}),outputSchema:Sz4},{name:"LLM_DO_STREAM",inputSchema:_C0,streamable:!0},{name:"LLM_DO_GENERATE",inputSchema:_C0,outputSchema:jz4},...kz4],IR=O3(YH1)});function AN(){return!1}function Xd(Y,Q){return Y===MQ.DEV_ASSETS(Q)}function PN(Y,Q){let X=ss(Q,Y),J=new Date().toISOString();return{id:X.id??MQ.DEV_ASSETS(Y),title:X.title,description:X.description??null,icon:X.icon??null,app_name:X.app_name??null,app_id:X.app_id??null,organization_id:Y,created_by:"system",created_at:J,updated_at:J,connection_type:X.connection_type,connection_url:X.connection_url??null,connection_token:null,connection_headers:null,oauth_config:null,configuration_state:null,configuration_scopes:null,metadata:X.metadata??null,tools:_z4,bindings:["OBJECT_STORAGE"],status:"active"}}var _z4;var Jd=S(()=>{el();JY();p1();_z4=CR.map((Y)=>({name:Y.name,description:`${Y.name} operation for local file storage`,inputSchema:B.toJSONSchema(Y.inputSchema),outputSchema:B.toJSONSchema(Y.outputSchema)}))});function fz4(Y){let Q=[],X=0;while(X<Y.length){let J=Y[X];if(J==="%")Q.push(".*");else if(J==="_")Q.push(".");else if(/[.*+?^${}()|[\]\\]/.test(J))Q.push("\\"+J);else Q.push(J);X++}return Q.join("")}function M$(Y){return typeof Y==="string"||typeof Y==="number"}function Gd(Y,Q){if("conditions"in Q){let{operator:Z,conditions:H}=Q;switch(Z){case"and":return H.every((F)=>Gd(Y,F));case"or":return H.some((F)=>Gd(Y,F));case"not":return!H.every((F)=>Gd(Y,F));default:return!0}}let{field:X,operator:J,value:G}=Q,K=X.join("."),W=QH1(Y,K);switch(J){case"eq":return W===G;case"gt":return M$(W)&&M$(G)&&W>G;case"gte":return M$(W)&&M$(G)&&W>=G;case"lt":return M$(W)&&M$(G)&&W<G;case"lte":return M$(W)&&M$(G)&&W<=G;case"in":return Array.isArray(G)&&G.includes(W);case"like":if(typeof W!=="string"||typeof G!=="string")return!1;if(G.length>100)return!1;let Z=fz4(G);return new RegExp(`^${Z}$`,"i").test(W);case"contains":if(typeof W!=="string"||typeof G!=="string")return!1;return W.toLowerCase().includes(G.toLowerCase());default:return!0}}function QH1(Y,Q){let X=Q.split("."),J=Y;for(let G of X){if(J==null||typeof J!=="object")return;J=J[G]}return J}function hz4(Y,Q){return[...Y].sort((X,J)=>{for(let G of Q){let K=G.field.join("."),W=QH1(X,K),Z=QH1(J,K),H=0;if(W==null&&Z==null)continue;if(W==null)H=G.nulls==="first"?-1:1;else if(Z==null)H=G.nulls==="first"?1:-1;else if(typeof W==="string"&&typeof Z==="string")H=W.localeCompare(Z);else if(typeof W==="number"&&typeof Z==="number")H=W-Z;else H=String(W).localeCompare(String(Z));if(H!==0)return G.direction==="desc"?-H:H}return 0})}var yz4,bz4,xz4,XH1;var bC0=S(()=>{Yd();kC0();EJ();Qd();el();JY();p1();c0();Jd();z3();yz4={LLM:YH1,ASSISTANTS:vC0,OBJECT_STORAGE:CR};bz4=L3.extend({binding:B.union([B.object({}).passthrough(),B.string()]).optional(),include_virtual:B.boolean().optional().describe("Whether to include VIRTUAL connections in the results. Defaults to false.")}),xz4=N3(wQ),XH1=d1({name:"COLLECTION_CONNECTIONS_LIST",description:"List all connections in the organization with filtering, sorting, and pagination",inputSchema:bz4,outputSchema:xz4,handler:async(Y,Q)=>{await Q.access.check();let X=A0(Q),J=Y.binding?typeof Y.binding==="string"?(()=>{let q=yz4[Y.binding.toUpperCase()];if(!q)throw Error(`Unknown binding: ${Y.binding}`);return q})():Y.binding:void 0,G=J?sm(J):void 0,K=await Q.storage.connections.list(X.id,{includeVirtual:Y.include_virtual??!1});if(AN()){let q=DJ(),z=MQ.DEV_ASSETS(X.id);if(!K.some((U)=>U.id===z)){let U=PN(X.id,q);K.unshift(U)}}let W=G?await Promise.all(K.map(async(q)=>{if(!q.tools||q.tools.length===0)return null;return G.isImplementedBy(q.tools.map((U)=>({name:U.name,inputSchema:U.inputSchema,outputSchema:U.outputSchema})))?q:null})).then((q)=>q.filter((z)=>z!==null)):K;if(Y.where)W=W.filter((q)=>Gd(q,Y.where));if(Y.orderBy&&Y.orderBy.length>0)W=hz4(W,Y.orderBy);let Z=W.length,H=Y.offset??0,F=Y.limit??100,$=W.slice(H,H+F),V=H+F<Z;return{items:$,totalCount:Z,hasMore:V}}})});var gz4,JH1;var xC0=S(()=>{EJ();c0();Jd();z3();gz4=vC(wQ),JH1=d1({name:"COLLECTION_CONNECTIONS_GET",description:"Get connection details by ID",inputSchema:SC,outputSchema:gz4,handler:async(Y,Q)=>{let X=A0(Q);if(await Q.access.check(),AN()&&Xd(Y.id,X.id))return{item:PN(X.id,DJ())};let J=await Q.storage.connections.findById(Y.id);if(!J||J.organization_id!==X.id)return{item:null};return{item:J}}})});var Wd=(Y,Q)=>{if(Q===null||Q===void 0)return;let X=Y.replace(/\[(\w+)\]/g,".$1").split(".").filter(Boolean),J=Q;for(let G of X){if(J===null||J===void 0||typeof J!=="object")return;J=J[G]}return J};function gC0(Y){let Q=Y.split("::");if(Q.length!==2||!Q[0]||!Q[1])throw Error(`Invalid scope format: ${Y}. Expected format: "KEY::SCOPE"`);return Q}function uz4(Y){let Q=Y.split("::");if(Q.length!==2||!Q[0]||!Q[1])return null;return Q}function mz4(Y){if(typeof Y==="object"&&Y!==null&&"value"in Y){let Q=Y.value;if(typeof Q==="string")return Q}return null}function GH1(Y,Q){let X={};if(!Y||!Q)return X;for(let J of Q){if(J==="*"){X["*"]=["*"];continue}let G=uz4(J);if(!G)continue;let[K,W]=G,Z=Wd(K,Y),H=mz4(Z);if(H){if(!X[H])X[H]=[];X[H].push(W)}}return X}function uC0(Y,Q){let X=GH1(Y,Q);return new Set(Object.keys(X).filter((J)=>J!=="*"))}var WH1=()=>{};import{randomBytes as lz4}from"crypto";function mC0(){if(jR)return jR;let Y=process.env.MESH_JWT_SECRET??t9.jwt?.secret??process.env.BETTER_AUTH_SECRET;if(Y)jR=new TextEncoder().encode(Y);else console.warn("MESH_JWT_SECRET not set - generating random secret (not persistent)"),jR=new Uint8Array(lz4(32));return jR}async function lC0(Y,Q="5m"){let X=mC0();return await new UX(Y).setProtectedHeader({alg:"HS256",typ:"JWT"}).setIssuedAt().setExpirationTime(Q).sign(X)}async function dC0(Y){try{let Q=mC0(),{payload:X}=await r8(Y,Q);return X}catch{return}}var jR=null;var ZH1=S(()=>{sX();EN()});async function pC0(Y){if(!Y.refreshToken)return{success:!1,error:"No refresh token available"};if(!Y.tokenEndpoint)return{success:!1,error:"No token endpoint available"};if(!Y.clientId)return{success:!1,error:"No client ID available"};try{let Q=new URLSearchParams({grant_type:"refresh_token",refresh_token:Y.refreshToken,client_id:Y.clientId});if(Y.clientSecret)Q.set("client_secret",Y.clientSecret);if(Y.scope)Q.set("scope",Y.scope);let X=await fetch(Y.tokenEndpoint,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:Q.toString()});if(!X.ok){let G=await X.text();console.error(`[TokenRefresh] Failed to refresh token: ${X.status}`,G);try{let K=JSON.parse(G);return{success:!1,error:K.error_description||K.error||`Token refresh failed: ${X.status}`}}catch{return{success:!1,error:`Token refresh failed: ${X.status}`}}}let J=await X.json();return{success:!0,accessToken:J.access_token,refreshToken:J.refresh_token||Y.refreshToken,expiresIn:J.expires_in,scope:J.scope}}catch(Q){return console.error("[TokenRefresh] Error refreshing token:",Q),{success:!1,error:Q instanceof Error?Q.message:"Token refresh failed"}}}class y3{db;vault;constructor(Y,Q){this.db=Y;this.vault=Q}async get(Y){let Q=await this.db.selectFrom("downstream_tokens").selectAll().where("connectionId","=",Y).executeTakeFirst();if(!Q)return null;return this.decryptToken(Q)}async upsert(Y){let Q=new Date().toISOString(),X=await this.vault.encrypt(Y.accessToken),J=Y.refreshToken?await this.vault.encrypt(Y.refreshToken):null,G=Y.clientSecret?await this.vault.encrypt(Y.clientSecret):null;return await this.db.transaction().execute(async(K)=>{let W=await K.selectFrom("downstream_tokens").select(["id","createdAt"]).where("connectionId","=",Y.connectionId).executeTakeFirst();if(W)return await K.updateTable("downstream_tokens").set({accessToken:X,refreshToken:J,scope:Y.scope,expiresAt:Y.expiresAt?.toISOString()??null,clientId:Y.clientId,clientSecret:G,tokenEndpoint:Y.tokenEndpoint,updatedAt:Q}).where("id","=",W.id).execute(),{id:W.id,connectionId:Y.connectionId,accessToken:Y.accessToken,refreshToken:Y.refreshToken,scope:Y.scope,expiresAt:Y.expiresAt,createdAt:W.createdAt,updatedAt:Q,clientId:Y.clientId,clientSecret:Y.clientSecret,tokenEndpoint:Y.tokenEndpoint};let Z=N8("dtok");return await K.insertInto("downstream_tokens").values({id:Z,connectionId:Y.connectionId,accessToken:X,refreshToken:J,scope:Y.scope,expiresAt:Y.expiresAt?.toISOString()??null,clientId:Y.clientId,clientSecret:G,tokenEndpoint:Y.tokenEndpoint,createdAt:Q,updatedAt:Q}).execute(),{id:Z,connectionId:Y.connectionId,accessToken:Y.accessToken,refreshToken:Y.refreshToken,scope:Y.scope,expiresAt:Y.expiresAt,createdAt:Q,updatedAt:Q,clientId:Y.clientId,clientSecret:Y.clientSecret,tokenEndpoint:Y.tokenEndpoint}})}async delete(Y){await this.db.deleteFrom("downstream_tokens").where("connectionId","=",Y).execute()}isExpired(Y,Q=0){if(!Y.expiresAt)return!1;let J=(Y.expiresAt instanceof Date?Y.expiresAt:new Date(Y.expiresAt)).getTime();if(Number.isNaN(J))return!0;return J-Q<Date.now()}async decryptToken(Y){let Q=await this.vault.decrypt(Y.accessToken),X=Y.refreshToken?await this.vault.decrypt(Y.refreshToken):null,J=Y.clientSecret?await this.vault.decrypt(Y.clientSecret):null;return{id:Y.id,connectionId:Y.connectionId,accessToken:Q,refreshToken:X,scope:Y.scope,expiresAt:Y.expiresAt,createdAt:Y.createdAt,updatedAt:Y.updatedAt,clientId:Y.clientId,clientSecret:J,tokenEndpoint:Y.tokenEndpoint}}}var Zd=S(()=>{b7()});async function SR(Y,Q,X){let J=Y.id,G=GH1(Y.configuration_state,Y.configuration_scopes),K=Q.auth.user?.id??Q.auth.apiKey?.userId??(X?Y.created_by:void 0),[W,Z]=K?await lC0({sub:K,user:{id:K},metadata:{state:Y.configuration_state??void 0,meshUrl:process.env.MESH_URL??Q.baseUrl,connectionId:J,organizationId:Q.organization?.id},permissions:G}).then((z)=>[z,null]).catch((z)=>[null,z]):[null,Error("User ID required to issue configuration token")];if(Z)console.error("Failed to issue configuration token:",W);let H=Q.auth.user?.connectionId,F={...H?{"x-caller-id":H}:{},...Q.metadata.wellKnownForwardableHeaders??{},"x-request-id":Q.metadata.requestId},$=null,V=new y3(Q.db,Q.vault),q=await V.get(J);if(q){let z=!!q.refreshToken&&!!q.tokenEndpoint;if(V.isExpired(q,z?300000:0))if(z){console.log(`[Proxy] Token expired for ${J}, attempting refresh`);let D=await pC0(q);if(D.success&&D.accessToken)await V.upsert({connectionId:J,accessToken:D.accessToken,refreshToken:D.refreshToken??q.refreshToken,scope:D.scope??q.scope,expiresAt:D.expiresIn?new Date(Date.now()+D.expiresIn*1000):null,clientId:q.clientId,clientSecret:q.clientSecret,tokenEndpoint:q.tokenEndpoint}),$=D.accessToken,console.log(`[Proxy] Token refreshed for ${J}`);else await V.delete(J),console.error(`[Proxy] Token refresh failed for ${J}: ${D.error}`)}else await V.delete(J),console.log(`[Proxy] Token expired without refresh capability for ${J}`);else $=q.accessToken}if(!$&&Y.connection_token)$=Y.connection_token;if($)F.Authorization=`Bearer ${$}`;if(W)F["x-mesh-token"]=W;return F}var KH1=S(()=>{WH1();ZH1();Zd()});function Kd(){let Y=new Map;function Q(J,G){let K=Y.get(G);if(K)return console.log(`[ClientPool] Reusing cached client for ${G}`),K;console.log(`[ClientPool] Creating new client for ${G}`);let W=new VX({name:`outbound-client-${G}`,version:"1.0.0"},{capabilities:{tasks:{list:{},cancel:{},requests:{tool:{call:{}}}}}});W.onclose=()=>{Y.delete(G)};let Z=W.connect(J,{timeout:30000}).then(()=>W).catch((H)=>{throw Y.delete(G),H});return Y.set(G,Z),Z}return Object.assign(Q,{[Symbol.asyncDispose]:async()=>{let J=[];for(let[G,K]of Y)J.push(K.then((W)=>W.close()).catch((W)=>console.error(`[ClientPool] Error closing client ${G}:`,W)));await Promise.all(J),Y.clear()}})}var HH1=S(()=>{LV()});function cC0(Y){let Q=new PC({command:Y.command,args:Y.args,env:Y.env,cwd:Y.cwd,stderr:"pipe"}),X=Y.name||Y.id,J="\x1B[2m",G="\x1B[0m";return Q.stderr?.on("data",(K)=>{let W=K.toString().trimEnd();if(W)console.error(`${W} \x1B[2m[${X}]\x1B[0m`)}),Q}var nC0=S(()=>{yZ1()});class vR{innerTransport;constructor(Y){this.innerTransport=Y}async start(){return this.innerTransport.onmessage=(Y)=>{this.handleIncomingMessage(Y)},this.innerTransport.onerror=(Y)=>{this.onerror?.(Y)},this.innerTransport.onclose=()=>{this.onclose?.()},this.innerTransport.start()}async send(Y){return this.handleOutgoingMessage(Y)}async close(){return this.innerTransport.close()}async handleOutgoingMessage(Y){return this.innerTransport.send(Y)}handleIncomingMessage(Y){this.onmessage?.(Y)}isRequest(Y){return"method"in Y&&Y.method!==void 0}isResponse(Y){return"result"in Y||"error"in Y&&!("method"in Y)}onmessage;onerror;onclose}function kR(Y,...Q){return Q.reduce((X,J)=>J(X),Y)}var iC0="mcp.mesh";var aC0,FH1,f3;var _R=S(()=>{aC0=class aC0 extends Error{constructor(Y){super(Y);this.name="UnauthorizedError"}};FH1=class FH1 extends Error{constructor(Y){super(Y);this.name="ForbiddenError"}};f3=class f3{userId;toolName;boundAuth;role;connectionId;getToolMeta;_granted=!1;constructor(Y,Q,X,J,G,K="self",W){this.userId=Q;this.toolName=X;this.boundAuth=J;this.role=G;this.connectionId=K;this.getToolMeta=W}[Symbol.dispose](){this._granted=!1}setToolName(Y){this.toolName=Y}grant(){return this._granted=!0,{[Symbol.dispose]:()=>{this._granted=!1}}}async check(...Y){if(this._granted)return;if(this.toolName?.startsWith("MESH_PUBLIC_")){this.grant();return}if(!this.userId&&!this.boundAuth){if(this.getToolMeta&&await this.isToolPublic()){this.grant();return}throw new aC0("Authentication required. Please provide a valid OAuth token or API key.")}let Q=Y.length>0?Y:this.toolName?[this.toolName]:[];if(Q.length===0)throw new FH1("No resources specified for access check");for(let X of Q)if(await this.checkResource(X)){this.grant();return}throw new FH1(`Access denied to: ${Q.join(", ")}`)}async checkResource(Y){if(!this.userId&&!this.boundAuth)return!1;if(this.role==="admin"||this.role==="owner")return!0;if(!this.boundAuth)return!1;let Q={};if(this.connectionId)Q[this.connectionId]=[Y];return this.boundAuth.hasPermission(Q)}async isToolPublic(){if(this.toolName?.startsWith("MESH_PUBLIC_"))return!0;if(!this.getToolMeta)return!1;try{let Y=await this.getToolMeta();if(!Y)return!1;let X=Y[iC0]?.public_tool;return X===!0||X==="true"}catch{return!1}}granted(){return this._granted}}});var dz4="mcp.mesh",TN;var rC0=S(()=>{_R();TN=class TN extends vR{options;cachedToolsMap=null;constructor(Y,Q){super(Y);this.options=Q;if(Q.connection.tools)this.cachedToolsMap=new Map(Q.connection.tools.map((X)=>[X.name,X]))}async handleOutgoingMessage(Y){if(!this.isRequest(Y))return this.innerTransport.send(Y);let Q=Y;if(Q.method==="tools/call")await this.authorizeToolCall(Q),this.stripMetaFromArguments(Q);return this.innerTransport.send(Y)}async authorizeToolCall(Y){if(this.options.superUser)return;let X=Y.params.name,{ctx:J,connection:G}=this.options;if(this.isPublicTool(X))return;if(!J.auth.user?.id&&!J.auth.apiKey?.id)throw Error("Authentication required. Please provide a valid OAuth token or API key.");let K=async()=>{return this.cachedToolsMap?.get(X)?._meta};await new f3(J.authInstance,J.auth.user?.id??J.auth.apiKey?.userId,X,J.boundAuth,J.auth.user?.role,G.id,K).check(X)}isPublicTool(Y){if(Y.startsWith("MESH_PUBLIC_"))return!0;if(!this.cachedToolsMap)return!1;let Q=this.cachedToolsMap.get(Y);if(!Q?._meta)return!1;return Q._meta[dz4]?.public_tool===!0}stripMetaFromArguments(Y){let Q=Y.params;if(Q.arguments&&"_meta"in Q.arguments){let{_meta:X,...J}=Q.arguments;Q.arguments=J}}}});function sC0(Y){if(!Y.isError)return;let Q=Y.content;if(!Array.isArray(Q))return;for(let X of Q)if(X&&typeof X==="object"&&"type"in X&&X.type==="text"&&"text"in X&&typeof X.text==="string")return X.text;return}function VH1(Y){if(!Y)return;let Q=Y._meta;if(!Q||typeof Q!=="object"||Array.isArray(Q))return;let X=Q.properties;if(!X||typeof X!=="object"||Array.isArray(X))return;let J={};for(let[G,K]of Object.entries(X))if(typeof K==="string")J[G]=K;return Object.keys(J).length>0?J:void 0}function qH1(Y,Q){if(!Y&&!Q)return;if(!Y)return Q;if(!Q)return Y;return{...Q,...Y}}function BH1(Y){if(Y&&typeof Y==="object"&&!Array.isArray(Y)){let Q=Y,X=Q.structuredContent;if(X&&typeof X==="object"&&!Array.isArray(X))return X;return Q}return{value:Y}}async function pz4(Y,Q){let X=Y.body;if(!X)return{text:"",truncated:!1};let J=X.getReader(),G=new TextDecoder,K=!1,W=0,Z=[];try{while(!0){let{value:H,done:F}=await J.read();if(F)break;if(H){if(W+=H.byteLength,W>Q){K=!0;let $=Q-(W-H.byteLength);if($>0)Z.push(G.decode(H.slice(0,$),{stream:!0}));break}Z.push(G.decode(H,{stream:!0}))}}}finally{J.releaseLock()}return Z.push(G.decode()),{text:Z.join(""),truncated:K}}async function $H1(Y){let{ctx:Q,enabled:X}=Y,J=Y.organizationId??Q.organization?.id;if(!X||!J)return;if(WK(Y.connectionId))return;let G=VH1(Y.request.params.arguments),K=qH1(Q.metadata.properties,G),W=Q.auth.user?.id||Q.auth.apiKey?.userId;if(W)try{let Z=await Q.storage.tags.getUserTagsInOrg(W,J);if(Z.length>0){let H=Z.map((F)=>F.name).join(",");K={...K,user_tags:H}}}catch{}await Q.storage.monitoring.log({organizationId:J,connectionId:Y.connectionId,connectionTitle:Y.connectionTitle,toolName:Y.request.params.name,input:Y.request.params.arguments??{},output:Y.output,isError:Y.isError,errorMessage:Y.errorMessage,durationMs:Y.durationMs,timestamp:new Date,userId:Q.auth.user?.id||Q.auth.apiKey?.userId||null,requestId:Q.metadata.requestId,userAgent:Q.metadata.userAgent,virtualMcpId:Y.virtualMcpId,properties:K})}function tC0(Y){let{ctx:Q,enabled:X,connectionId:J,connectionTitle:G,virtualMcpId:K}=Y;return async(W,Z)=>{let H=Date.now();try{let F=await Z(),$=Q.organization?.id;if(X&&$){let V=F.clone();(async()=>{try{let{text:q,truncated:z}=await pz4(V,oC0),U=Date.now()-H,D=V.headers.get("content-type")??"",M=q;if(D.includes("application/json"))try{M=q.length?JSON.parse(q):null}catch{M=q}let w=F.status>=400,R=w&&M&&typeof M==="object"&&"error"in M?M.error:void 0,P=typeof R==="string"&&R?R:w&&typeof M==="string"&&M.trim()?M.slice(0,500):w?`HTTP ${F.status} ${F.statusText}`.trim():z?`Response body truncated to ${oC0} bytes`:void 0;await $H1({ctx:Q,enabled:X,organizationId:$,connectionId:J,connectionTitle:G,virtualMcpId:K,request:W,output:BH1(M),isError:w,errorMessage:P,durationMs:U})}catch(q){let z=Date.now()-H;await $H1({ctx:Q,enabled:X,organizationId:$,connectionId:J,connectionTitle:G,virtualMcpId:K,request:W,output:{},isError:!0,errorMessage:`Failed to read streamable response body: ${q.message}`,durationMs:z})}})()}return F}catch(F){let $=F,V=Date.now()-H;throw await $H1({ctx:Q,enabled:X,connectionId:J,connectionTitle:G,virtualMcpId:K,request:W,output:{},isError:!0,errorMessage:$.message,durationMs:V}),F}}}var oC0=262144;var zH1=S(()=>{JY()});var CN;var eC0=S(()=>{t2();zH1();CN=class CN extends vR{options;inflightRequests=new Map;constructor(Y,Q){super(Y);this.options=Q}async handleOutgoingMessage(Y){if(this.isRequest(Y)){let Q=Y;this.onRequestStart(Q)}return this.innerTransport.send(Y)}handleIncomingMessage(Y){if(this.isResponse(Y)){let Q=Y;this.onResponseEnd(Q)}this.onmessage?.(Y)}onRequestStart(Y){let{ctx:Q,connectionId:X}=this.options,J,G;if(Y.method==="tools/call"&&Y.params){let W=Y.params;J=W.name,G=W.arguments}let K;if(Y.method==="tools/call"&&J)K=Q.tracer.startSpan("mcp.proxy.callTool",{attributes:{"connection.id":X,"tool.name":J,"request.id":Q.metadata.requestId,"jsonrpc.id":Y.id,"jsonrpc.method":Y.method}});if(Y.id!==null&&Y.id!==void 0)this.inflightRequests.set(Y.id,{startTime:Date.now(),method:Y.method,toolName:J,toolArguments:G,span:K})}onResponseEnd(Y){if(Y.id===null||Y.id===void 0)return;let Q=this.inflightRequests.get(Y.id);if(!Q)return;let{ctx:X,connectionId:J}=this.options,{startTime:G,method:K,toolName:W,toolArguments:Z,span:H}=Q,F=Date.now()-G;if(this.inflightRequests.delete(Y.id),K!=="tools/call"||!W)return;let $="error"in Y,V=$?Y.error:Y.result,q=$?{content:[{type:"text",text:Y.error?.message||"Unknown error"}],isError:!0}:V;if(X.meter.createHistogram("connection.proxy.duration").record(F,{"connection.id":J,"tool.name":W,status:$?"error":"success"}),$)X.meter.createCounter("connection.proxy.errors").add(1,{"connection.id":J,"tool.name":W,error:Y.error?.message});else X.meter.createCounter("connection.proxy.requests").add(1,{"connection.id":J,"tool.name":W,status:"success"});if(H){if($&&Y.error)H.recordException(Error(Y.error.message)),H.setAttributes({error:!0,"error.code":Y.error.code,"error.message":Y.error.message});H.end()}this.logToDatabase({toolName:W,toolArguments:Z,result:q,duration:F,isError:Boolean($)})}async logToDatabase(Y){let{ctx:Q,connectionId:X,connectionTitle:J,virtualMcpId:G}=this.options,{toolName:K,toolArguments:W,result:Z,duration:H,isError:F}=Y;if(!fb().enabled)return;let V=Q.organization?.id;if(!V)return;let q=sC0(Z),z=BH1(Z),U=VH1(W),D=qH1(Q.metadata.properties,U);try{await Q.storage.monitoring.log({organizationId:V,connectionId:X,connectionTitle:J,toolName:K,input:W??{},output:z,isError:F,errorMessage:q,durationMs:H,timestamp:new Date,userId:Q.auth.user?.id||Q.auth.apiKey?.userId||null,requestId:Q.metadata.requestId,userAgent:Q.metadata.userAgent,virtualMcpId:G,properties:D})}catch(M){console.error("[MonitoringTransport] Failed to log to database:",M)}}async close(){for(let Y of this.inflightRequests.values())if(Y.span)Y.span.setAttributes({"transport.closed":!0}),Y.span.end();return this.inflightRequests.clear(),super.close()}}});var YR0=S(()=>{rC0();eC0()});async function QR0(Y,Q,X=!1){let J=Y.id,G=Q.connectionId&&Q.connectionId!==J?Q.connectionId:void 0;switch(Y.connection_type){case"STDIO":{if(process.env.UNSAFE_ALLOW_STDIO_TRANSPORT!=="true")throw Error("STDIO connections are disabled in production. Set UNSAFE_ALLOW_STDIO_TRANSPORT=true to enable.");let K=Y.connection_headers;if(!DW(K))throw Error("STDIO connection missing parameters");let W=cC0({id:J,name:Y.title,command:K.command,args:K.args,env:K.envVars,cwd:K.cwd});return W=kR(W,(Z)=>new TN(Z,{ctx:Q,connection:Y,superUser:X}),(Z)=>new CN(Z,{ctx:Q,connectionId:J,connectionTitle:Y.title,virtualMcpId:G})),cz4(W,J)}case"HTTP":case"Websocket":{if(!Y.connection_url)throw Error(`${Y.connection_type} connection missing URL`);let K=await SR(Y,Q,X),W=Y.connection_headers;if(W&&"headers"in W)Object.assign(K,W.headers);let Z=new jH(new URL(Y.connection_url),{requestInit:{headers:K}});return Z=kR(Z,(H)=>new TN(H,{ctx:Q,connection:Y,superUser:X}),(H)=>new CN(H,{ctx:Q,connectionId:J,connectionTitle:Y.title,virtualMcpId:G})),Q.getOrCreateClient(Z,J)}case"SSE":{if(!Y.connection_url)throw Error("SSE connection missing URL");let K=await SR(Y,Q,X),W=Y.connection_headers;if(W&&"headers"in W)Object.assign(K,W.headers);let Z=new kB(new URL(Y.connection_url),{requestInit:{headers:K}});return Z=kR(Z,(H)=>new TN(H,{ctx:Q,connection:Y,superUser:X}),(H)=>new CN(H,{ctx:Q,connectionId:J,connectionTitle:Y.title,virtualMcpId:G})),Q.getOrCreateClient(Z,J)}default:throw Error(`Unknown connection type: ${Y.connection_type}`)}}var cz4;var XR0=S(()=>{z3();mm();TA();KH1();HH1();nC0();YR0();cz4=Kd()});function w$(Y){if(!Y?._meta)return!1;return typeof Y._meta["mcp.mesh"]?.["tool.fn"]==="string"}function WR0(Y){return Y._meta["mcp.mesh"]["tool.fn"]}function yR(Y,Q,X,J){return{id:Y,name:Q.name,description:Q.description,inputSchema:Q.inputSchema,outputSchema:Q.outputSchema,annotations:Q.annotations,code:Q._meta["mcp.mesh"]["tool.fn"],connection_dependencies:Q._meta.connectionDependencies??[],created_at:X,updated_at:J}}var UH1,Tf8,fZ,JR0,GR0;var h3=S(()=>{p1();UH1=B.object({title:B.string().optional(),readOnlyHint:B.boolean().optional(),destructiveHint:B.boolean().optional(),idempotentHint:B.boolean().optional(),openWorldHint:B.boolean().optional()}),Tf8=B.object({"tool.fn":B.string().describe("JavaScript ES module code that exports a default async function")}),fZ=B.object({id:B.string().describe("Unique identifier for the virtual tool (auto-generated)"),name:B.string().min(1).max(255).describe("Tool name (must be unique within the Virtual MCP)"),description:B.string().optional().describe("Human-readable description of what the tool does"),inputSchema:B.record(B.string(),B.unknown()).describe("JSON Schema defining the tool's input parameters"),outputSchema:B.record(B.string(),B.unknown()).optional().describe("JSON Schema defining the tool's output (optional)"),annotations:UH1.optional().describe("MCP tool annotations"),code:B.string().describe("JavaScript ES module code. Must export default an async function: export default async (tools, args) => { ... }"),connection_dependencies:B.array(B.string()).describe("Connection IDs that this tool depends on (specified by the creator)"),created_at:B.string().describe("When the virtual tool was created"),updated_at:B.string().describe("When the virtual tool was last updated")}),JR0=B.object({name:B.string().min(1).max(255).describe("Tool name (must be unique within the Virtual MCP)"),description:B.string().optional().describe("Human-readable description"),inputSchema:B.record(B.string(),B.unknown()).describe("JSON Schema defining the tool's input parameters"),outputSchema:B.record(B.string(),B.unknown()).optional().describe("JSON Schema for output"),annotations:UH1.optional().describe("MCP tool annotations"),code:B.string().describe("JavaScript ES module code. Must export default an async function: export default async (tools, args) => { ... }"),connection_dependencies:B.array(B.string()).optional().describe("Connection IDs that this tool depends on. Creates indirect aggregations to prevent deletion of referenced connections.")}),GR0=B.object({name:B.string().min(1).max(255).optional().describe("New tool name"),description:B.string().nullable().optional().describe("New description (null to clear)"),inputSchema:B.record(B.string(),B.unknown()).optional().describe("New input schema"),outputSchema:B.record(B.string(),B.unknown()).nullable().optional().describe("New output schema (null to clear)"),annotations:UH1.nullable().optional().describe("New annotations (null to clear)"),code:B.string().optional().describe("New JavaScript code"),connection_dependencies:B.array(B.string()).optional().describe("Connection IDs that this tool depends on. Replaces existing dependencies if provided.")})});function iB(Y){return(Q)=>{if(Q instanceof w0&&Q.code===C0.MethodNotFound)return Y;throw Q}}var DH1=S(()=>{DY()});class ZR0{factory;promise=null;constructor(Y){this.factory=Y}getOrCreatePromise(){if(!this.promise)this.promise=this.factory();return this.promise}then(Y,Q){return this.getOrCreatePromise().then(Y,Q)}catch(Y){return this.getOrCreatePromise().catch(Y)}finally(Y){return this.getOrCreatePromise().finally(Y)}}function aB(Y){return new ZR0(Y)}async function nz4(Y,Q,X=!1){let J=await Promise.all(Y.map(async(G)=>{try{let K=await sQ(G,Q,X);return[G.id,K]}catch(K){return console.warn(`[aggregator] Failed to create client for connection ${G.id}:`,K),null}}));return new Map(J.filter((G)=>!!G))}async function KR0(Y){let Q=[];for(let[,X]of Y)Q.push(X.close().catch(()=>{}));await Promise.all(Q)}var RN;var OH1=S(()=>{IN();DH1();LV();a31();h3();RN=class RN extends VX{options;ctx;_cachedTools;_cachedResources;_cachedPrompts;_clients;_connections;_selectionMap;constructor(Y,Q){super({name:"virtual-mcp-passthrough",version:"1.0.0"},{capabilities:{tasks:{list:{},cancel:{},requests:{tool:{call:{}}}}}});this.options=Y;this.ctx=Q;this._selectionMap=new Map;for(let X of Y.virtualMcp.connections)this._selectionMap.set(X.connection_id,X);this._connections=new Map;for(let X of Y.connections)this._connections.set(X.id,X);this._clients=aB(()=>nz4(this.options.connections,this.ctx,this.options.superUser)),this._cachedTools=aB(()=>this.loadToolsCache()),this._cachedResources=aB(()=>this.loadCache("resources")),this._cachedPrompts=aB(()=>this.loadCache("prompts"))}async loadToolsCache(){let Y=await this._clients,Q=await Promise.all(Array.from(Y.entries()).map(async([W,Z])=>{try{let H=await Z.listTools().then(($)=>$.tools),F=this._selectionMap.get(W);if(F?.selected_tools?.length){let $=new Set(F.selected_tools);H=H.filter((V)=>$.has(V.name))}return{connectionId:W,data:H}}catch(H){return console.error(`[PassthroughClient] Failed to load tools for connection ${W}:`,H),null}})),X=[],J=new Map,G=new Map,K=this.options.virtualTools??[];for(let W of K){if(J.has(W.name))continue;let Z={name:W.name,description:W.description,inputSchema:W.inputSchema,outputSchema:W.outputSchema,annotations:W.annotations,_meta:{connectionId:this.options.virtualMcp.id??"__VIRTUAL__",connectionTitle:this.options.virtualMcp.title}};X.push(Z),J.set(W.name,"__VIRTUAL__"),G.set(W.name,W)}for(let W of Q){if(!W)continue;let{connectionId:Z,data:H}=W,$=this._connections.get(Z)?.title??"";for(let V of H){let q=V.name;if(J.has(q))continue;let z={...V,_meta:{connectionId:Z,connectionTitle:$,...V?._meta}};X.push(z),J.set(q,Z)}}return{data:X,mappings:J,virtualTools:G}}async loadCache(Y){let Q=await this._clients,X=await Promise.all(Array.from(Q.entries()).map(async([K,W])=>{try{let Z=Y==="resources"?await W.listResources().catch(iB({resources:[]})).then(($)=>$.resources):await W.listPrompts().catch(iB({prompts:[]})).then(($)=>$.prompts),H=this._selectionMap.get(K),F=Y==="resources"?"selected_resources":"selected_prompts";if(H?.[F]?.length){let $=new Set(H[F]);return{connectionId:K,data:Z.filter((V)=>$.has(V.name))}}return{connectionId:K,data:Z}}catch(Z){return console.error(`[PassthroughClient] Failed to load cache for connection ${K}:`,Z),null}})),J=[],G=new Map;for(let K of X){if(!K)continue;let{connectionId:W,data:Z}=K,F=this._connections.get(W)?.title??"";for(let $ of Z){let V=$.name??$.uri;if(G.has(V))continue;let q={...$,_meta:{connectionId:W,connectionTitle:F,...$?._meta}};J.push(q),G.set(V,W)}}return{data:J,mappings:G}}async listTools(){return{tools:(await this._cachedTools).data}}async callTool(Y){let[Q,X]=await Promise.all([this._cachedTools,this._clients]),J=Q.mappings.get(Y.name);if(!J)return{content:[{type:"text",text:`Tool not found: ${Y.name}`}],isError:!0};if(J==="__VIRTUAL__")return this.executeVirtualTool(Y.name,Y.arguments??{},Q,X);let G=X.get(J);if(!G)return{content:[{type:"text",text:`Connection not found for tool: ${Y.name}`}],isError:!0};return await G.callTool({name:Y.name,arguments:Y.arguments??{}})}async executeVirtualTool(Y,Q,X,J){let G=X.virtualTools.get(Y);if(!G)return{content:[{type:"text",text:`Virtual tool not found: ${Y}`}],isError:!0};let K=WR0(G),W={};for(let[Z,H]of X.mappings){if(H==="__VIRTUAL__")continue;let F=J.get(H);if(!F)continue;W[Z]=async($)=>{let V=await F.callTool({name:Z,arguments:$});if(V.structuredContent&&typeof V.structuredContent==="object")return V.structuredContent;let q=V.content;if(q?.[0]?.type==="text"&&q[0].text)try{return JSON.parse(q[0].text)}catch{return q[0].text}return V}}try{let H=`
1354
1354
  const __virtualToolFn = ${K.replace(/^\s*export\s+default\s+/,"").trim()};
1355
1355
  export default async (tools) => {
1356
1356
  const args = ${JSON.stringify(Q)};