@decocms/mesh 2.81.0 → 2.81.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/assets/{AlertCircle-xWltNfEq.js → AlertCircle-BriHSsDi.js} +1 -1
- package/dist/client/assets/{ArrowUp-CUQneK4P.js → ArrowUp-i12rZ4bC.js} +1 -1
- package/dist/client/assets/{Calendar-Y3ThXr2h.js → Calendar-CWY0p93U.js} +1 -1
- package/dist/client/assets/{Check-CJAfxThT.js → Check-BxlJx98f.js} +1 -1
- package/dist/client/assets/{CheckCircle-WASxycr6.js → CheckCircle-xFKJEUSQ.js} +1 -1
- package/dist/client/assets/{CheckDone01-PM896wVf.js → CheckDone01-lkOOyomf.js} +1 -1
- package/dist/client/assets/{ChevronDown-Dld_B1wq.js → ChevronDown-DuRNRCY6.js} +1 -1
- package/dist/client/assets/{ChevronRight-Cq8A1HG0.js → ChevronRight-CqCGzMN6.js} +1 -1
- package/dist/client/assets/{Code01-ChhMACJn.js → Code01-DZ0UUcZ8.js} +1 -1
- package/dist/client/assets/{Copy01-Bi307Fis.js → Copy01-C2Q2p5c2.js} +1 -1
- package/dist/client/assets/{DotsHorizontal-DcG4iWPg.js → DotsHorizontal-Cxqptoai.js} +1 -1
- package/dist/client/assets/{DotsVertical-BPAPN4Vy.js → DotsVertical-laHdFCQU.js} +1 -1
- package/dist/client/assets/{Download01-DRqJBc9y.js → Download01-DcT332M7.js} +1 -1
- package/dist/client/assets/{Edit01-BcGMiw_q.js → Edit01-zLDVXLzI.js} +1 -1
- package/dist/client/assets/{File02-DeXzXnSO.js → File02-COgDJaci.js} +1 -1
- package/dist/client/assets/{File06-rEVum9HB.js → File06-Cj4Y5b2m.js} +1 -1
- package/dist/client/assets/{FilterLines-DrS5EiaX.js → FilterLines-CPVDoUmX.js} +1 -1
- package/dist/client/assets/{Globe02-Cl0jyOd0.js → Globe02-CUlx6qcS.js} +1 -1
- package/dist/client/assets/{Grid01-CVEw4oPD.js → Grid01-B8SJspS0.js} +1 -1
- package/dist/client/assets/{Home02-Bd4juFGZ.js → Home02-fJj1y8uL.js} +1 -1
- package/dist/client/assets/{Image01-rVwlpIKS.js → Image01-CmYsURmQ.js} +1 -1
- package/dist/client/assets/{Inbox01-Bkz_LV5C.js → Inbox01-_n6o3kGd.js} +1 -1
- package/dist/client/assets/{InfoCircle-SJsH0_B2.js → InfoCircle-DziizJVv.js} +1 -1
- package/dist/client/assets/{LinkExternal01-BSi9tdvX.js → LinkExternal01-BMdddb1b.js} +1 -1
- package/dist/client/assets/{List-B74x-rf5.js → List-Coc7z7o7.js} +1 -1
- package/dist/client/assets/{Loading01-RCsoo1ix.js → Loading01-B3Pni08n.js} +1 -1
- package/dist/client/assets/{Lock01-CfncREYU.js → Lock01-D24hVWFo.js} +1 -1
- package/dist/client/assets/{Pin01-Czz1A6-0.js → Pin01-BiywCLzA.js} +1 -1
- package/dist/client/assets/{Play-C8CLPL7D.js → Play-BhAy-KND.js} +1 -1
- package/dist/client/assets/{Plus-CpyX6WFq.js → Plus-BdyMfjlQ.js} +1 -1
- package/dist/client/assets/{RefreshCcw01-BuLmgwFb.js → RefreshCcw01-DTNmocKX.js} +1 -1
- package/dist/client/assets/{SearchMd-BOA0hXkq.js → SearchMd-BPng8FSJ.js} +1 -1
- package/dist/client/assets/{Settings01-BcXVtEQp.js → Settings01-CSUTKR10.js} +1 -1
- package/dist/client/assets/{Settings02-Dk5wthsz.js → Settings02-DMCWo4rp.js} +1 -1
- package/dist/client/assets/{Share07-CJfVmj5Z.js → Share07-BUKajswg.js} +1 -1
- package/dist/client/assets/{Terminal-XQYzEwI_.js → Terminal-Yn6i1iRF.js} +1 -1
- package/dist/client/assets/{Tool01-CNnhnfli.js → Tool01-CCldJkGu.js} +1 -1
- package/dist/client/assets/{Trash01-Cz4Sm-xC.js → Trash01-adue8W_d.js} +1 -1
- package/dist/client/assets/{Upload01-0EICpVas.js → Upload01-DB1yt8I4.js} +1 -1
- package/dist/client/assets/{Users03-DQvz8FEb.js → Users03-BaWY3qvq.js} +1 -1
- package/dist/client/assets/{X-CCXl2rQT.js → X-DqD8j9v2.js} +1 -1
- package/dist/client/assets/{XClose-5S7WPLdS.js → XClose--XgeBkwr.js} +1 -1
- package/dist/client/assets/{agent-connections-preview-BQ8Arzvl.js → agent-connections-preview-B8C9EFLS.js} +1 -1
- package/dist/client/assets/{agent-detail-BZGpCuwy.js → agent-detail-Bq9RCiiy.js} +1 -1
- package/dist/client/assets/{agents-DO0n38y9.js → agents-Dj2Su3h_.js} +1 -1
- package/dist/client/assets/{alert-dialog-C85Zzn2R.js → alert-dialog-DCXzichj.js} +1 -1
- package/dist/client/assets/{auth-catchall-DBcX3yyJ.js → auth-catchall-C_DSjE91.js} +1 -1
- package/dist/client/assets/{avatar-9AUKxcSp.js → avatar-CeD0BbQn.js} +1 -1
- package/dist/client/assets/{badge-w3pFrziF.js → badge-B6bCeje4.js} +1 -1
- package/dist/client/assets/{binder-CJ8-0VEz.js → binder-Cb6Wl__b.js} +1 -1
- package/dist/client/assets/{breadcrumb-DIY9dflk.js → breadcrumb-DtLQbyaF.js} +1 -1
- package/dist/client/assets/{button-Cp5BMKMH.js → button-CI6Qz1R-.js} +1 -1
- package/dist/client/assets/{card-Cmxh92DM.js → card-BaFB_MHC.js} +1 -1
- package/dist/client/assets/{checkbox-bkECPKDF.js → checkbox-C1bp9U4k.js} +1 -1
- package/dist/client/assets/{circle-alert-BPyWz2k5.js → circle-alert-Bk9eUP4K.js} +1 -1
- package/dist/client/assets/{collection-detail-B5lZPagv.js → collection-detail-Dg4BobV_.js} +3 -3
- package/dist/client/assets/{collection-search-DQ21VTxr.js → collection-search-DJr_CHOU.js} +1 -1
- package/dist/client/assets/{collection-tab-BRK0dkZT.js → collection-tab-CFZqsnCK.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-D8a3iWFK.js → collection-table-wrapper-ByuBQ5I0.js} +1 -1
- package/dist/client/assets/{collection-tabs-DKjfE4EA.js → collection-tabs-MQRdEitG.js} +1 -1
- package/dist/client/assets/{command-EttVHAem.js → command-Cw8xRaNa.js} +1 -1
- package/dist/client/assets/{connect-Br-CchSG.js → connect-QjYETL45.js} +1 -1
- package/dist/client/assets/{connection-card-Vy4xyhPj.js → connection-card-tJwMoVSm.js} +1 -1
- package/dist/client/assets/{connection-detail-D4nhotsv.js → connection-detail-2ICX27CW.js} +1 -1
- package/dist/client/assets/{connections-C4fecNGZ.js → connections-D0CDq5W2.js} +1 -1
- package/dist/client/assets/{constants-DmlZIPyZ.js → constants-BO_LXUXz.js} +1 -1
- package/dist/client/assets/constants-CyTi9pEu.js +1 -0
- package/dist/client/assets/{create-organization-dialog-Bsc2-YVd.js → create-organization-dialog-DRB8mwMy.js} +1 -1
- package/dist/client/assets/{create-project-dialog-BElDYbC2.js → create-project-dialog-B66rh7wg.js} +1 -1
- package/dist/client/assets/{dialog-CqONuPoH.js → dialog-BsjLjsYg.js} +1 -1
- package/dist/client/assets/{dropdown-menu-DbWYDLhc.js → dropdown-menu-x7qJkDJL.js} +1 -1
- package/dist/client/assets/{dynamic-plugin-layout-DDIYWN0Z.js → dynamic-plugin-layout-jQFMz0A2.js} +1 -1
- package/dist/client/assets/{empty-state-C6xECif3.js → empty-state-DG5GXdek.js} +1 -1
- package/dist/client/assets/{empty-state-TNWwGe1b.js → empty-state-DdKn0RjR.js} +1 -1
- package/dist/client/assets/{env-vars-editor-SQPq2SMw.js → env-vars-editor-C7j7_hhp.js} +1 -1
- package/dist/client/assets/{error-boundary-CQ81ah0p.js → error-boundary-BSJzT02T.js} +1 -1
- package/dist/client/assets/{extract-connection-data-DCfPkqOO.js → extract-connection-data-B0T1fqap.js} +1 -1
- package/dist/client/assets/{file-browser-Be2N1sr-.js → file-browser-CPCYK8pp.js} +2 -2
- package/dist/client/assets/{form-D1jv9Gm5.js → form-DGI3YJ8r.js} +1 -1
- package/dist/client/assets/{grid-view-BJp4miY2.js → grid-view-Oa-z_8GK.js} +1 -1
- package/dist/client/assets/{home-Dbb8lMh9.js → home-vEf_G_xB.js} +1 -1
- package/dist/client/assets/{index-SkCx09UW.js → index-B2MlYUE4.js} +1 -1
- package/dist/client/assets/{index-Cfpj4va-.js → index-B3t7SU8I.js} +1 -1
- package/dist/client/assets/{index-B5kEoFQg.js → index-Bb0N6Jv7.js} +1 -1
- package/dist/client/assets/{index-sMKRwjf9.js → index-CMmruKrs.js} +1 -1
- package/dist/client/assets/{index-wi-I7Eui.js → index-DFFKmyJ8.js} +1 -1
- package/dist/client/assets/{index-DtyUlmPl.js → index-DOFegECD.js} +1 -1
- package/dist/client/assets/{index-DBg-x3r6.js → index-MVTHwl6J.js} +1 -1
- package/dist/client/assets/{index-IBsTMWBT.js → index-VkF9k6ks.js} +1 -1
- package/dist/client/assets/{index-Dzrb5IU0.js → index-nJr2p0Ur.js} +2 -2
- package/dist/client/assets/{infiniteQueryObserver-5Bkiqb7u.js → infiniteQueryObserver-08Jwt6Ie.js} +1 -1
- package/dist/client/assets/{input-Bu9KNsQu.js → input-Dp2b2YW2.js} +1 -1
- package/dist/client/assets/{integration-icon-BuUoAcdc.js → integration-icon-CHjZqTcU.js} +1 -1
- package/dist/client/assets/{label-D0ZJ_6Ha.js → label-DfeY1wVH.js} +1 -1
- package/dist/client/assets/{layout-DFPNMqpJ.js → layout-B8RGcIsr.js} +1 -1
- package/dist/client/assets/{localstorage-keys-nksI6kwp.js → localstorage-keys-BcmGXPnp.js} +1 -1
- package/dist/client/assets/{login-B-_b1BOn.js → login-BGjdv8pz.js} +1 -1
- package/dist/client/assets/{mcp-oauth-DaMoaVBx.js → mcp-oauth-GEMF43mJ.js} +1 -1
- package/dist/client/assets/{mcp-server-card-Cpl_kpP3.js → mcp-server-card-BevaYqXN.js} +1 -1
- package/dist/client/assets/{mcp-server-detail-_FD04jDS.js → mcp-server-detail-BmxsssiD.js} +2 -2
- package/dist/client/assets/{members-DO_WmXz3.js → members-DF4Q1v4U.js} +1 -1
- package/dist/client/assets/{monaco-editor-DF-DdcnU.js → monaco-editor-B9mdcQrZ.js} +1 -1
- package/dist/client/assets/{monitoring-tDpFQNoM.js → monitoring-CbDA_I5o.js} +1 -1
- package/dist/client/assets/{oauth-callback-Chbx8CiU.js → oauth-callback-vPjTIiUB.js} +1 -1
- package/dist/client/assets/{page-DFmFdhtk.js → page-BxwcqbkF.js} +1 -1
- package/dist/client/assets/{page-Cr6F7BId.js → page-Cg46LXl_.js} +1 -1
- package/dist/client/assets/{plugin-empty-state-mrTHqDqE.js → plugin-empty-state-D-3J4fLO.js} +1 -1
- package/dist/client/assets/{plugin-header-D3ZBGzZe.js → plugin-header-CvNaJbtC.js} +1 -1
- package/dist/client/assets/{popover-BgoGCOG_.js → popover-D8Ii1hpP.js} +1 -1
- package/dist/client/assets/{project-layout-CA0ey3ks.js → project-layout-DC7XGUVZ.js} +1 -1
- package/dist/client/assets/{project-settings-C-0cxG5w.js → project-settings-BtPRk0bk.js} +1 -1
- package/dist/client/assets/{projects-list-CUoGozz1.js → projects-list-DffSdx_R.js} +1 -1
- package/dist/client/assets/{registry-utils-NAWclyJP.js → registry-utils--1g-r5sl.js} +1 -1
- package/dist/client/assets/{resizable-prxDWhaY.js → resizable-U7jpqh4y.js} +1 -1
- package/dist/client/assets/{select-DY04D7me.js → select-B0_ruE0i.js} +1 -1
- package/dist/client/assets/{shell-layout-C8gb_VmT.js → shell-layout-DsM8eaTj.js} +4 -4
- package/dist/client/assets/{spinner-Ba8lcdGm.js → spinner-BZoWVAUs.js} +1 -1
- package/dist/client/assets/{store-invite-EQ2BmRrN.js → store-invite-BiitWKV_.js} +1 -1
- package/dist/client/assets/{switch-1RIMvplB.js → switch-XrUomums.js} +1 -1
- package/dist/client/assets/{table-CIf5nOqR.js → table-PGwDYAem.js} +1 -1
- package/dist/client/assets/{tasks-DddwuAN-.js → tasks-QLN4IlAw.js} +1 -1
- package/dist/client/assets/{textarea-m6hdro6B.js → textarea-qf1_mBEC.js} +1 -1
- package/dist/client/assets/{tools-list-TG2ebMlL.js → tools-list-D2TOByH8.js} +1 -1
- package/dist/client/assets/{topbar-portal-BnFckW6e.js → topbar-portal-DnUaUnGw.js} +1 -1
- package/dist/client/assets/{typewriter-title-HfylJpxK.js → typewriter-title-6rhBmvDv.js} +1 -1
- package/dist/client/assets/{use-binding-CvlOQ3_o.js → use-binding-9uQwYycc.js} +1 -1
- package/dist/client/assets/{use-connection-galsKjsg.js → use-connection-aRath4eM.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-CLMmnEIF.js → use-create-virtual-mcp-DaqUJMAb.js} +1 -1
- package/dist/client/assets/{use-deco-chat-open-56JOsu98.js → use-deco-chat-open-D5QBecJF.js} +1 -1
- package/dist/client/assets/{use-install-from-registry--6M51Zsc.js → use-install-from-registry-CV8U2x8j.js} +1 -1
- package/dist/client/assets/{use-list-state-C66VwH6t.js → use-list-state-gMWm0NfH.js} +1 -1
- package/dist/client/assets/{use-llm-Di7QCbsC.js → use-llm-GZkbY68V.js} +1 -1
- package/dist/client/assets/{use-mcp-prompts-D7NVjhSC.js → use-mcp-prompts-0MND_Zcc.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-u-Z7-vQF.js → use-mcp-tools-C6uZHiGN.js} +1 -1
- package/dist/client/assets/{use-mobile-BODNLqyc.js → use-mobile-BmuVbUMr.js} +1 -1
- package/dist/client/assets/{use-organization-settings-ha2vXAOb.js → use-organization-settings-CJyHXViN.js} +1 -1
- package/dist/client/assets/{use-project-k6C7YOp8.js → use-project-B_d59hZH.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-CXLv90mq.js → use-virtual-mcp-BwK2LqmX.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-JNJhfoVc.js +1 -0
- package/dist/client/assets/{useMutation-BtMBiEQ3.js → useMutation-3O7e7RJJ.js} +1 -1
- package/dist/client/assets/useQuery-BOYiYYrx.js +1 -0
- package/dist/client/assets/utils-wRW8GnC8.js +1 -0
- package/dist/client/assets/{view-mode-toggle-CL2zNed4.js → view-mode-toggle-CVwe-4f6.js} +1 -1
- package/dist/client/assets/{workflow-1Lg2Gqwk.js → workflow-CgGXwHlo.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +1 -1
- package/dist/server/server.js +1 -1
- package/package.json +1 -1
- package/dist/client/assets/constants-RSNbjd4V.js +0 -1
- package/dist/client/assets/useInfiniteQuery-DB7F-uIw.js +0 -1
- package/dist/client/assets/useQuery-C3_CC7sI.js +0 -1
- package/dist/client/assets/utils-BSGC96Lh.js +0 -1
package/dist/server/cli.js
CHANGED
|
@@ -1186,7 +1186,7 @@ ${X.stack}`;return G}}catch{}if(typeof X.toString==="function")try{let G=X.toStr
|
|
|
1186
1186
|
const args = ${JSON.stringify(X)};
|
|
1187
1187
|
return await __virtualToolFn(tools, args);
|
|
1188
1188
|
};
|
|
1189
|
-
`,F=await D2({code:H,tools:W,timeoutMs:30000});if(F.error)return{content:[{type:"text",text:`Virtual tool error: ${F.error}`}],isError:!0};return{content:[{type:"text",text:JSON.stringify(F.returnValue??null)}]}}catch(Z){return{content:[{type:"text",text:`Virtual tool execution failed: ${Z instanceof Error?Z.message:String(Z)}`}],isError:!0}}}async listResources(){return{resources:(await this._cachedResources).data}}async readResource(Y){let[X,Q]=await Promise.all([this._cachedResources,this._clients]),J=X.mappings.get(Y.uri);if(!J)throw Error(`Resource not found: ${Y.uri}`);let G=Q.get(J);if(!G)throw Error(`Connection not found for resource: ${Y.uri}`);return await G.readResource(Y)}async listPrompts(){return{prompts:(await this._cachedPrompts).data}}async getPrompt(Y){let[X,Q]=await Promise.all([this._cachedPrompts,this._clients]),J=X.mappings.get(Y.name);if(!J)throw Error(`Prompt not found: ${Y.name}`);let G=Q.get(J);if(!G)throw Error(`Connection not found for prompt: ${Y.name}`);return await G.getPrompt(Y)}async callStreamableTool(Y,X){let[Q,J]=await Promise.all([this._cachedTools,this._clients]),G=Q.mappings.get(Y);if(G){let W=J.get(G);if(W&&"callStreamableTool"in W)return W.callStreamableTool(Y,X)}let K=await this.callTool({name:Y,arguments:X});return new Response(JSON.stringify(K),{headers:{"Content-Type":"application/json"}})}async[Symbol.asyncDispose](){let Y=await this._clients;if(Y)await SN1(Y)}async close(){let Y=await this._clients;if(Y)await SN1(Y);await super.close()}getInstructions(){return this.options.virtualMcp.metadata?.instructions??void 0}}});var kN1,GJ4,vN1,WJ4,c2;var eG0=j(()=>{b0();Qq();tG0();kN1=z.object({query:z.string().min(1).describe("Search query to find tools by name or description"),limit:z.number().default(10).describe("Maximum number of results to return")}),GJ4=z.toJSONSchema(kN1),vN1=z.object({tools:z.array(z.string()).min(1).describe("Array of tool names to get detailed schemas for")}),WJ4=z.toJSONSchema(vN1);c2=class c2 extends UO{constructor(Y,X){super(Y,X)}getSearchTool(Y){return{name:"GATEWAY_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 GATEWAY_DESCRIBE_TOOLS for detailed schemas. Total tools: ${Y}.`,inputSchema:GJ4}}getDescribeTool(){return{name:"GATEWAY_DESCRIBE_TOOLS",description:"Get detailed schemas for specific tools. Call after GATEWAY_SEARCH_TOOLS to get full input/output schemas.",inputSchema:WJ4}}async handleSearch(Y){let X=kN1.safeParse(Y);if(!X.success)return l3({error:X.error.flatten()});let Q=await this._cachedTools,J=WK(Q.data),G=$u(X.data.query,J,X.data.limit);return O2({query:X.data.query,results:G.map((K)=>({name:K.name,description:K.description,connection:K._meta.connectionTitle})),totalAvailable:J.length})}async handleDescribe(Y){let X=vN1.safeParse(Y);if(!X.success)return l3({error:X.error.flatten()});let Q=await this._cachedTools,J=WK(Q.data),G=Vu(X.data.tools,J);return O2({tools:G.tools,notFound:G.notFound})}async listTools(){let Y=await this._cachedTools,X=WK(Y.data);return{tools:[this.getSearchTool(X.length),this.getDescribeTool()]}}async callTool(Y){if(Y.name==="GATEWAY_SEARCH_TOOLS")return this.handleSearch(Y.arguments??{});if(Y.name==="GATEWAY_DESCRIBE_TOOLS")return this.handleDescribe(Y.arguments??{});return{content:[{type:"text",text:`Unknown tool: ${Y.name}. Available: GATEWAY_SEARCH_TOOLS, GATEWAY_DESCRIBE_TOOLS`}],isError:!0}}async routeToolCall(Y){return UO.prototype.callTool.call(this,Y)}}});var _N1,ZJ4,Y70;var yN1=j(()=>{b0();Qq();eG0();_N1=z.object({code:z.string().min(1).describe("JavaScript code to execute. It runs as an async function body; you can use top-level `return` and `await`."),timeoutMs:z.number().default(3000).describe("Max execution time in milliseconds (default: 3000).")}),ZJ4=z.toJSONSchema(_N1);Y70=class Y70 extends c2{constructor(Y,X){super(Y,X)}getRunCodeTool(){return{name:"GATEWAY_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 GATEWAY_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:ZJ4}}async handleRunCode(Y){let X=_N1.safeParse(Y);if(!X.success)return l3({error:X.error.flatten()});let Q=await this._cachedTools,G={tools:WK(Q.data),callTool:async(W,Z)=>{return this.routeToolCall({name:W,arguments:Z})}},K=await qu(X.data.code,G,X.data.timeoutMs);if(K.error)return l3(K);return O2(K)}async listTools(){return{tools:[...(await super.listTools()).tools,this.getRunCodeTool()]}}async callTool(Y){if(Y.name==="GATEWAY_RUN_CODE")return this.handleRunCode(Y.arguments??{});return super.callTool(Y)}}});function hN1(Y){let X=Y.slice().sort().join(","),Q=fN1.get(X);if(!Q){let J=z.object({name:(Y.length>0?z.enum(Y):z.string()).describe("The name of the tool to execute"),arguments:z.record(z.string(),z.unknown()).default({}).describe("Arguments to pass to the tool")});Q={schema:J,jsonSchema:z.toJSONSchema(J)},fN1.set(X,Q)}return Q}var fN1,X70;var bN1=j(()=>{b0();Qq();eG0();fN1=new Map;X70=class X70 extends c2{constructor(Y,X){super(Y,X)}async getCallTool(){let Y=await this._cachedTools,Q=WK(Y.data).map((G)=>G.name),{jsonSchema:J}=hN1(Q);return{name:"GATEWAY_CALL_TOOL",description:"Execute a tool by name. Use GATEWAY_DESCRIBE_TOOLS first to understand the input schema.",inputSchema:J}}async handleCallTool(Y){let X=await this._cachedTools,Q=WK(X.data),J=Q.map((F)=>F.name),{schema:G}=hN1(J),K=G.safeParse(Y);if(!K.success)return l3({error:K.error.flatten()});let{name:W,arguments:Z}=K.data;if(!new Map(Q.map((F)=>[F.name,F])).has(W))return{content:[{type:"text",text:`Tool not found: ${W}. Use GATEWAY_SEARCH_TOOLS to find available tools.`}],isError:!0};return this.routeToolCall({name:W,arguments:Z})}async listTools(){let Y=await super.listTools(),X=await this.getCallTool();return{tools:[...Y.tools,X]}}async callTool(Y){if(Y.name==="GATEWAY_CALL_TOOL")return this.handleCallTool(Y.arguments??{});return super.callTool(Y)}}});function Q70(Y){switch(Y){case"smart_tool_selection":return"smart_tool_selection";case"code_execution":return"code_execution";case"passthrough":default:return"passthrough"}}function KJ4(Y,X){if(Y.connection_type!=="VIRTUAL")return!1;if(!X||GH(X))return!1;return Y.id===X}async function xN1(Y,X){let Q=Y.id,J=await X.storage.virtualMcps.findById(Q);if(!J)throw Error(`Virtual MCP not found: ${Q}`);return n2(J,X,"passthrough")}async function n2(Y,X,Q){let G=Y.connections.map(($)=>$.connection_id).map(($)=>X.storage.connections.findById($)),K=Y.id?await X.storage.connections.findById(Y.id):null,W=await Promise.all(G),Z=[];if(K?.tools){for(let $ of K.tools)if(p3($))Z.push($)}let F={connections:W.filter(($)=>$!==null&&$.status==="active"&&!KJ4($,Y.id)),virtualMcp:Y,virtualTools:Z.length>0?Z:void 0};return Q==="smart_tool_selection"?new X70(F,X):Q==="code_execution"?new Y70(F,X):new UO(F,X)}var Cu=j(()=>{RY();VK();yN1();tG0();bN1()});async function GQ(Y,X,Q=!1){if(Y.connection_type==="VIRTUAL")return xN1(Y,X);return TN1(Y,X,Q)}var J70=j(()=>{EN1();Cu()});async function G70(Y,X,Q){let J=await GQ(Y,X,Q),G=gF(J,{name:"mcp-mesh-enhanced",version:"1.0.0"},{capabilities:HJ4,instructions:J.getInstructions()});return G.server.setRequestHandler(pK,async()=>{return await J.listResources().catch(Gq({resources:[]}))}),G.server.setRequestHandler(cK,async()=>{return await J.listResourceTemplates().catch(Gq({resourceTemplates:[]}))}),G.server.setRequestHandler(nK,async()=>{return await J.listPrompts().catch(Gq({prompts:[]}))}),G}var HJ4;var uN1=j(()=>{RY();_9();J70();sG0();HJ4={tools:{},resources:{},prompts:{}}});function W70(Y,X){let Q=Y.listTools.bind(Y);return{...Y,listTools:async()=>{if(X.connection_type!=="VIRTUAL"&&X.tools&&X.tools.length>0)return{tools:X.tools.map((K)=>({name:K.name,description:K.description,inputSchema:K.inputSchema,outputSchema:K.outputSchema,annotations:K.annotations,_meta:K._meta}))};return await Q()}}}function FJ4(Y,X,Q){return async(J,G)=>{try{let K=J.params.name,W=async()=>{let{tools:H}=await Q();return H.find(($)=>$.name===K)?._meta};return await new $K(Y.authInstance,Y.auth.user?.id??Y.auth.apiKey?.userId,K,Y.boundAuth,Y.auth.user?.role,X,W).check(K),await G()}catch(K){return new Response(JSON.stringify({error:`Authorization failed: ${K.message}`}),{status:403,headers:{"Content-Type":"application/json"}})}}}function i2(Y,X,Q,J,G){let K=async(Z,H)=>{if(Q.connection_type==="VIRTUAL"){let L=await Y.callTool({name:Z,arguments:H});return new Response(JSON.stringify(L),{headers:{"Content-Type":"application/json"}})}if(!Q.connection_url)throw Error("Streamable tools require HTTP connection with URL");let F=Q.connection_url,$={method:"tools/call",params:{name:Z,arguments:H}};if(!G.superUser){let w=await FJ4(J,X,Y.listTools.bind(Y))($,async()=>{return new Response});if(!w.ok)return w}let V=await g2(Q,J,G.superUser),q=Q.connection_headers;if(q&&"headers"in q)Object.assign(V,q.headers);let B=new URL(F);B.pathname=B.pathname.replace(/\/$/,"")+`/call-tool/${$.params.name}`;let D=JSON.parse(JSON.stringify($.params.arguments,(L,w)=>{if(w instanceof AbortSignal)return;if(typeof w==="function"||typeof w==="symbol")return;if(w===void 0)return;return w})),O=JSON.stringify(D);return await J.tracer.startActiveSpan("mcp.proxy.callStreamableTool",{attributes:{"connection.id":X,"tool.name":$.params.name,"request.id":J.metadata.requestId}},async(L)=>{let w=Date.now();try{let I=await fetch(B.toString(),{method:"POST",redirect:"manual",body:O,headers:{...V,"Content-Type":"application/json"}}),A=Date.now()-w;return J.meter.createHistogram("connection.proxy.streamable.duration").record(A,{"connection.id":X,"tool.name":$.params.name,status:I.ok?"success":"error"}),J.meter.createCounter("connection.proxy.streamable.requests").add(1,{"connection.id":X,"tool.name":$.params.name,status:I.ok?"success":"error"}),L.end(),I}catch(I){let A=I,T=Date.now()-w;throw console.error("[with-streaming-support] fetch error",{connectionId:X,toolName:$.params.name,error:A.message,errorStack:A.stack,duration:T}),J.meter.createHistogram("connection.proxy.streamable.duration").record(T,{"connection.id":X,"tool.name":$.params.name,status:"error"}),J.meter.createCounter("connection.proxy.streamable.errors").add(1,{"connection.id":X,"tool.name":$.params.name,error:A.message}),L.recordException(A),L.end(),I}})},W=Object.assign(Object.create(Object.getPrototypeOf(Y)),Y);return W.callStreamableTool=K,W}var gN1=j(()=>{iG0();d2()});var mN1=j(()=>{gN1()});var DO=j(()=>{J70();uN1();mN1()});async function qJ4(Y,X,Q,J){for(let K of X){if(K==="*")continue;let[W]=ZN1(K),Z=Pu(W,Y);if(Z===void 0||Z===null)throw Error(`Scope references key "${W}" but it's not present in state`)}let G=KN1(Y,X);for(let K of G){if(K.endsWith("_self"))continue;let W=await J.storage.connections.findById(K);if(!W||W.organization_id!==Q)throw Error(`Referenced connection not found: ${K}`);try{await J.access.check(K)}catch(Z){throw Error(`Access denied to referenced connection: ${K}. ${Z.message}`)}}}var $J4,VJ4,Z70;var lN1=j(()=>{cG0();DO();Tu();b0();k1();Xu();XK();$J4=z.object({id:z.string().describe("ID of the connection to update"),data:qw.describe("Partial connection data to update")}),VJ4=z.object({item:kX.describe("The updated connection entity")});Z70=f0({name:"COLLECTION_CONNECTIONS_UPDATE",description:"Update an existing MCP connection in the organization",inputSchema:$J4,outputSchema:VJ4,handler:async(Y,X)=>{g0(X);let Q=q1(X);await X.access.check();let J=g8(X);if(!J)throw Error("User ID required to update connection");let{id:G,data:K}=Y,W=await X.storage.connections.findById(G);if(!W||W.organization_id!==Q.id)throw Error("Connection not found in organization");let Z=K.connection_type??W.connection_type,H=K.connection_url??W.connection_url;if(Z==="VIRTUAL"){let L=xF(H);if(!L)throw Error("VIRTUAL connection requires connection_url in format: virtual://$virtual_mcp_id");let w=await X.storage.virtualMcps.findById(L);if(!w)throw Error(`Virtual MCP not found: ${L}`);if(w.organization_id!==Q.id)throw Error("Virtual MCP does not belong to the current organization");H=uF(L)}let F=K.configuration_state??W.configuration_state??{},$=K.configuration_scopes??W.configuration_scopes??[];if(K.configuration_state!==void 0||K.configuration_scopes!==void 0){if(K.configuration_state!==void 0)F=K.configuration_state??{};else if(F===null||F===void 0)F={};if(K.configuration_scopes!==void 0)$=K.configuration_scopes??[];if($.length>0)await qJ4(F,$,Q.id,X)}let V=K.connection_token??W.connection_token;if(!V)try{let w=await new FK(X.db,X.vault).get(G);if(w?.accessToken)V=w.accessToken}catch{}let q=await QO({id:W.id,title:K.title??W.title,connection_type:Z,connection_url:H,connection_token:V,connection_headers:K.connection_headers??W.connection_headers}).catch(()=>null),B=q?.length?q:null,D={...K,connection_url:H,tools:B,configuration_state:F,configuration_scopes:$,updated_by:J},O=await X.storage.connections.update(G,D);if((K.configuration_state!==void 0||K.configuration_scopes!==void 0)&&F&&$)try{await(await GQ(O,X,!1)).callTool({name:"ON_MCP_CONFIGURATION",arguments:{state:F,scopes:$}})}catch(L){console.error("Failed to invoke ON_MCP_CONFIGURATION callback",L)}return{item:O}}})});var K70;var dN1=j(()=>{_5();k1();XK();K70=f0({name:"COLLECTION_CONNECTIONS_DELETE",description:"Delete a connection",inputSchema:A2,outputSchema:P2(kX),handler:async(Y,X)=>{g0(X);let Q=q1(X);await X.access.check();let J=await X.storage.connections.findById(Y.id);if(!J)throw Error(`Connection not found: ${Y.id}`);if(J.organization_id!==Q.id)throw Error("Connection not found in organization");if(J.metadata?.isFixed===!0)throw Error("This connection is a fixed system connection and cannot be deleted");return await X.storage.connections.delete(Y.id),{item:J}}})});var H70;var pN1=j(()=>{b0();k1();H70=f0({name:"CONNECTION_TEST",description:"Test connection health and latency",inputSchema:z.object({id:z.string()}),outputSchema:z.object({id:z.string(),healthy:z.boolean(),latencyMs:z.number()}),handler:async(Y,X)=>{let Q=q1(X);await X.access.check();let J=await X.storage.connections.findById(Y.id);if(!J||J.organization_id!==Q.id)throw Error("Connection not found");let G=await X.storage.connections.testConnection(Y.id);return{id:Y.id,...G}}})});var cN1=j(()=>{IO1();GN1();WN1();lN1();dN1();pN1()});import{sql as $4}from"kysely";function nN1(Y){if(Y===null||Y===void 0)return"NULL";if(typeof Y==="number")return String(Y);if(typeof Y==="boolean")return Y?"TRUE":"FALSE";if(typeof Y==="string")return`'${Y.replace(/'/g,"''")}'`;if(Y instanceof Date)return`'${Y.toISOString()}'`;return`'${JSON.stringify(Y).replace(/'/g,"''")}'`}function UJ4(Y,X){let Q=Y;for(let G=X.length;G>=1;G--){let K=`$${G}`;if(Q.includes(K))Q=Q.replaceAll(K,nN1(X[G-1]))}let J=[];for(let G=0;G<Q.length;G++)if(Q[G]==="?")J.push(G);for(let G=Math.min(J.length,X.length)-1;G>=0;G--){let K=J[G],W=nN1(X[G]);Q=Q.slice(0,K)+W+Q.slice(K+1)}return Q}function iN1(Y){return Y.replace(/-/g,"_")}function OJ4(Y){return`app_${iN1(Y)}`}function NJ4(Y){return`app_role_${iN1(Y)}`}function LJ4(Y){if(Y instanceof Error){let X=Y.message.toLowerCase(),Q=Y.code;return Q==="3F000"||Q==="42704"||Q==="22023"||X.includes("schema")&&X.includes("does not exist")||X.includes("role")&&X.includes("does not exist")}return!1}async function wJ4(Y,X,Q){if(await $4`CREATE SCHEMA IF NOT EXISTS ${$4.id(X)}`.execute(Y),!(await $4`
|
|
1189
|
+
`,F=await D2({code:H,tools:W,timeoutMs:30000});if(F.error)return{content:[{type:"text",text:`Virtual tool error: ${F.error}`}],isError:!0};return{content:[{type:"text",text:JSON.stringify(F.returnValue??null)}]}}catch(Z){return{content:[{type:"text",text:`Virtual tool execution failed: ${Z instanceof Error?Z.message:String(Z)}`}],isError:!0}}}async listResources(){return{resources:(await this._cachedResources).data}}async readResource(Y){let[X,Q]=await Promise.all([this._cachedResources,this._clients]),J=X.mappings.get(Y.uri);if(!J)throw Error(`Resource not found: ${Y.uri}`);let G=Q.get(J);if(!G)throw Error(`Connection not found for resource: ${Y.uri}`);return await G.readResource(Y)}async listPrompts(){return{prompts:(await this._cachedPrompts).data}}async getPrompt(Y){let[X,Q]=await Promise.all([this._cachedPrompts,this._clients]),J=X.mappings.get(Y.name);if(!J)throw Error(`Prompt not found: ${Y.name}`);let G=Q.get(J);if(!G)throw Error(`Connection not found for prompt: ${Y.name}`);return await G.getPrompt(Y)}async callStreamableTool(Y,X){let[Q,J]=await Promise.all([this._cachedTools,this._clients]),G=Q.mappings.get(Y);if(G){let W=J.get(G);if(W&&"callStreamableTool"in W)return W.callStreamableTool(Y,X)}let K=await this.callTool({name:Y,arguments:X});return new Response(JSON.stringify(K),{headers:{"Content-Type":"application/json"}})}async[Symbol.asyncDispose](){let Y=await this._clients;if(Y)await SN1(Y)}async close(){let Y=await this._clients;if(Y)await SN1(Y);await super.close()}getInstructions(){return this.options.virtualMcp.metadata?.instructions??void 0}}});var kN1,GJ4,vN1,WJ4,c2;var eG0=j(()=>{b0();Qq();tG0();kN1=z.object({query:z.string().min(1).describe("Search query to find tools by name or description"),limit:z.number().default(10).describe("Maximum number of results to return")}),GJ4=z.toJSONSchema(kN1),vN1=z.object({tools:z.array(z.string()).min(1).describe("Array of tool names to get detailed schemas for")}),WJ4=z.toJSONSchema(vN1);c2=class c2 extends UO{constructor(Y,X){super(Y,X)}getSearchTool(Y){return{name:"GATEWAY_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 GATEWAY_DESCRIBE_TOOLS for detailed schemas. Total tools: ${Y}.`,inputSchema:GJ4}}getDescribeTool(){return{name:"GATEWAY_DESCRIBE_TOOLS",description:"Get detailed schemas for specific tools. Call after GATEWAY_SEARCH_TOOLS to get full input/output schemas.",inputSchema:WJ4}}async handleSearch(Y){let X=kN1.safeParse(Y);if(!X.success)return l3({error:X.error.flatten()});let Q=await this._cachedTools,J=WK(Q.data),G=$u(X.data.query,J,X.data.limit);return O2({query:X.data.query,results:G.map((K)=>({name:K.name,description:K.description,connection:K._meta.connectionTitle})),totalAvailable:J.length})}async handleDescribe(Y){let X=vN1.safeParse(Y);if(!X.success)return l3({error:X.error.flatten()});let Q=await this._cachedTools,J=WK(Q.data),G=Vu(X.data.tools,J);return O2({tools:G.tools,notFound:G.notFound})}async listTools(){let Y=await this._cachedTools,X=WK(Y.data);return{tools:[this.getSearchTool(X.length),this.getDescribeTool()]}}async callTool(Y){if(Y.name==="GATEWAY_SEARCH_TOOLS")return this.handleSearch(Y.arguments??{});if(Y.name==="GATEWAY_DESCRIBE_TOOLS")return this.handleDescribe(Y.arguments??{});return{content:[{type:"text",text:`Unknown tool: ${Y.name}. Available: GATEWAY_SEARCH_TOOLS, GATEWAY_DESCRIBE_TOOLS`}],isError:!0}}async routeToolCall(Y){return UO.prototype.callTool.call(this,Y)}}});var _N1,ZJ4,Y70;var yN1=j(()=>{b0();Qq();eG0();_N1=z.object({code:z.string().min(1).describe("JavaScript code to execute. It runs as an async function body; you can use top-level `return` and `await`."),timeoutMs:z.number().default(3000).describe("Max execution time in milliseconds (default: 3000).")}),ZJ4=z.toJSONSchema(_N1);Y70=class Y70 extends c2{constructor(Y,X){super(Y,X)}getRunCodeTool(){return{name:"GATEWAY_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 GATEWAY_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:ZJ4}}async handleRunCode(Y){let X=_N1.safeParse(Y);if(!X.success)return l3({error:X.error.flatten()});let Q=await this._cachedTools,G={tools:WK(Q.data),callTool:async(W,Z)=>{return this.routeToolCall({name:W,arguments:Z})}},K=await qu(X.data.code,G,X.data.timeoutMs);if(K.error)return l3(K);return O2(K)}async listTools(){return{tools:[...(await super.listTools()).tools,this.getRunCodeTool()]}}async callTool(Y){if(Y.name==="GATEWAY_RUN_CODE")return this.handleRunCode(Y.arguments??{});return super.callTool(Y)}}});function hN1(Y){let X=Y.slice().sort().join(","),Q=fN1.get(X);if(!Q){let J=z.object({name:(Y.length>0?z.enum(Y):z.string()).describe("The name of the tool to execute"),arguments:z.record(z.string(),z.unknown()).default({}).describe("Arguments to pass to the tool")});Q={schema:J,jsonSchema:z.toJSONSchema(J)},fN1.set(X,Q)}return Q}var fN1,X70;var bN1=j(()=>{b0();Qq();eG0();fN1=new Map;X70=class X70 extends c2{constructor(Y,X){super(Y,X)}async getCallTool(){let Y=await this._cachedTools,Q=WK(Y.data).map((G)=>G.name),{jsonSchema:J}=hN1(Q);return{name:"GATEWAY_CALL_TOOL",description:"Execute a tool by name. Use GATEWAY_DESCRIBE_TOOLS first to understand the input schema.",inputSchema:J}}async handleCallTool(Y){let X=await this._cachedTools,Q=WK(X.data),J=Q.map((F)=>F.name),{schema:G}=hN1(J),K=G.safeParse(Y);if(!K.success)return l3({error:K.error.flatten()});let{name:W,arguments:Z}=K.data;if(!new Map(Q.map((F)=>[F.name,F])).has(W))return{content:[{type:"text",text:`Tool not found: ${W}. Use GATEWAY_SEARCH_TOOLS to find available tools.`}],isError:!0};return this.routeToolCall({name:W,arguments:Z})}async listTools(){let Y=await super.listTools(),X=await this.getCallTool();return{tools:[...Y.tools,X]}}async callTool(Y){if(Y.name==="GATEWAY_CALL_TOOL")return this.handleCallTool(Y.arguments??{});return super.callTool(Y)}}});function Q70(Y){switch(Y){case"smart_tool_selection":return"smart_tool_selection";case"code_execution":return"code_execution";case"passthrough":default:return"passthrough"}}function KJ4(Y,X){if(Y.connection_type!=="VIRTUAL")return!1;if(!X||GH(X))return!1;return Y.id===X}async function xN1(Y,X){let Q=Y.id,J=await X.storage.virtualMcps.findById(Q);if(!J)throw Error(`Virtual MCP not found: ${Q}`);return n2(J,X,"passthrough")}async function n2(Y,X,Q){let G=Y.connections.map(($)=>$.connection_id).map(($)=>X.storage.connections.findById($)),K=Y.id?await X.storage.connections.findById(Y.id):null,W=await Promise.all(G),Z=[];if(K?.tools){for(let $ of K.tools)if(p3($))Z.push($)}let F={connections:W.filter(($)=>$!==null&&$.status==="active"&&!KJ4($,Y.id)),virtualMcp:Y,virtualTools:Z.length>0?Z:void 0};return Q==="smart_tool_selection"?new X70(F,X):Q==="code_execution"?new Y70(F,X):new UO(F,X)}var Cu=j(()=>{RY();VK();yN1();tG0();bN1()});async function GQ(Y,X,Q=!1){if(Y.connection_type==="VIRTUAL")return xN1(Y,X);return TN1(Y,X,Q)}var J70=j(()=>{EN1();Cu()});async function G70(Y,X,Q){let J=await GQ(Y,X,Q),G=gF(J,{name:"mcp-mesh-enhanced",version:"1.0.0"},{capabilities:HJ4,instructions:J.getInstructions()});return G.server.setRequestHandler(pK,async()=>{return await J.listResources().catch(Gq({resources:[]}))}),G.server.setRequestHandler(cK,async()=>{return await J.listResourceTemplates().catch(Gq({resourceTemplates:[]}))}),G.server.setRequestHandler(nK,async()=>{return await J.listPrompts().catch(Gq({prompts:[]}))}),G}var HJ4;var uN1=j(()=>{RY();_9();J70();sG0();HJ4={tools:{},resources:{},prompts:{}}});function W70(Y,X){let Q=Y.listTools.bind(Y),J=async()=>{if(X.connection_type!=="VIRTUAL"&&X.tools&&X.tools.length>0)return{tools:X.tools.map((K)=>({name:K.name,description:K.description,inputSchema:K.inputSchema,outputSchema:K.outputSchema,annotations:K.annotations,_meta:K._meta}))};return await Q()};return Y.listTools=J,Y}function FJ4(Y,X,Q){return async(J,G)=>{try{let K=J.params.name,W=async()=>{let{tools:H}=await Q();return H.find(($)=>$.name===K)?._meta};return await new $K(Y.authInstance,Y.auth.user?.id??Y.auth.apiKey?.userId,K,Y.boundAuth,Y.auth.user?.role,X,W).check(K),await G()}catch(K){return new Response(JSON.stringify({error:`Authorization failed: ${K.message}`}),{status:403,headers:{"Content-Type":"application/json"}})}}}function i2(Y,X,Q,J,G){let K=async(Z,H)=>{if(Q.connection_type==="VIRTUAL"){let L=await Y.callTool({name:Z,arguments:H});return new Response(JSON.stringify(L),{headers:{"Content-Type":"application/json"}})}if(!Q.connection_url)throw Error("Streamable tools require HTTP connection with URL");let F=Q.connection_url,$={method:"tools/call",params:{name:Z,arguments:H}};if(!G.superUser){let w=await FJ4(J,X,Y.listTools.bind(Y))($,async()=>{return new Response});if(!w.ok)return w}let V=await g2(Q,J,G.superUser),q=Q.connection_headers;if(q&&"headers"in q)Object.assign(V,q.headers);let B=new URL(F);B.pathname=B.pathname.replace(/\/$/,"")+`/call-tool/${$.params.name}`;let D=JSON.parse(JSON.stringify($.params.arguments,(L,w)=>{if(w instanceof AbortSignal)return;if(typeof w==="function"||typeof w==="symbol")return;if(w===void 0)return;return w})),O=JSON.stringify(D);return await J.tracer.startActiveSpan("mcp.proxy.callStreamableTool",{attributes:{"connection.id":X,"tool.name":$.params.name,"request.id":J.metadata.requestId}},async(L)=>{let w=Date.now();try{let I=await fetch(B.toString(),{method:"POST",redirect:"manual",body:O,headers:{...V,"Content-Type":"application/json"}}),A=Date.now()-w;return J.meter.createHistogram("connection.proxy.streamable.duration").record(A,{"connection.id":X,"tool.name":$.params.name,status:I.ok?"success":"error"}),J.meter.createCounter("connection.proxy.streamable.requests").add(1,{"connection.id":X,"tool.name":$.params.name,status:I.ok?"success":"error"}),L.end(),I}catch(I){let A=I,T=Date.now()-w;throw console.error("[with-streaming-support] fetch error",{connectionId:X,toolName:$.params.name,error:A.message,errorStack:A.stack,duration:T}),J.meter.createHistogram("connection.proxy.streamable.duration").record(T,{"connection.id":X,"tool.name":$.params.name,status:"error"}),J.meter.createCounter("connection.proxy.streamable.errors").add(1,{"connection.id":X,"tool.name":$.params.name,error:A.message}),L.recordException(A),L.end(),I}})},W=Object.assign(Object.create(Object.getPrototypeOf(Y)),Y);return W.callStreamableTool=K,W}var gN1=j(()=>{iG0();d2()});var mN1=j(()=>{gN1()});var DO=j(()=>{J70();uN1();mN1()});async function qJ4(Y,X,Q,J){for(let K of X){if(K==="*")continue;let[W]=ZN1(K),Z=Pu(W,Y);if(Z===void 0||Z===null)throw Error(`Scope references key "${W}" but it's not present in state`)}let G=KN1(Y,X);for(let K of G){if(K.endsWith("_self"))continue;let W=await J.storage.connections.findById(K);if(!W||W.organization_id!==Q)throw Error(`Referenced connection not found: ${K}`);try{await J.access.check(K)}catch(Z){throw Error(`Access denied to referenced connection: ${K}. ${Z.message}`)}}}var $J4,VJ4,Z70;var lN1=j(()=>{cG0();DO();Tu();b0();k1();Xu();XK();$J4=z.object({id:z.string().describe("ID of the connection to update"),data:qw.describe("Partial connection data to update")}),VJ4=z.object({item:kX.describe("The updated connection entity")});Z70=f0({name:"COLLECTION_CONNECTIONS_UPDATE",description:"Update an existing MCP connection in the organization",inputSchema:$J4,outputSchema:VJ4,handler:async(Y,X)=>{g0(X);let Q=q1(X);await X.access.check();let J=g8(X);if(!J)throw Error("User ID required to update connection");let{id:G,data:K}=Y,W=await X.storage.connections.findById(G);if(!W||W.organization_id!==Q.id)throw Error("Connection not found in organization");let Z=K.connection_type??W.connection_type,H=K.connection_url??W.connection_url;if(Z==="VIRTUAL"){let L=xF(H);if(!L)throw Error("VIRTUAL connection requires connection_url in format: virtual://$virtual_mcp_id");let w=await X.storage.virtualMcps.findById(L);if(!w)throw Error(`Virtual MCP not found: ${L}`);if(w.organization_id!==Q.id)throw Error("Virtual MCP does not belong to the current organization");H=uF(L)}let F=K.configuration_state??W.configuration_state??{},$=K.configuration_scopes??W.configuration_scopes??[];if(K.configuration_state!==void 0||K.configuration_scopes!==void 0){if(K.configuration_state!==void 0)F=K.configuration_state??{};else if(F===null||F===void 0)F={};if(K.configuration_scopes!==void 0)$=K.configuration_scopes??[];if($.length>0)await qJ4(F,$,Q.id,X)}let V=K.connection_token??W.connection_token;if(!V)try{let w=await new FK(X.db,X.vault).get(G);if(w?.accessToken)V=w.accessToken}catch{}let q=await QO({id:W.id,title:K.title??W.title,connection_type:Z,connection_url:H,connection_token:V,connection_headers:K.connection_headers??W.connection_headers}).catch(()=>null),B=q?.length?q:null,D={...K,connection_url:H,tools:B,configuration_state:F,configuration_scopes:$,updated_by:J},O=await X.storage.connections.update(G,D);if((K.configuration_state!==void 0||K.configuration_scopes!==void 0)&&F&&$)try{await(await GQ(O,X,!1)).callTool({name:"ON_MCP_CONFIGURATION",arguments:{state:F,scopes:$}})}catch(L){console.error("Failed to invoke ON_MCP_CONFIGURATION callback",L)}return{item:O}}})});var K70;var dN1=j(()=>{_5();k1();XK();K70=f0({name:"COLLECTION_CONNECTIONS_DELETE",description:"Delete a connection",inputSchema:A2,outputSchema:P2(kX),handler:async(Y,X)=>{g0(X);let Q=q1(X);await X.access.check();let J=await X.storage.connections.findById(Y.id);if(!J)throw Error(`Connection not found: ${Y.id}`);if(J.organization_id!==Q.id)throw Error("Connection not found in organization");if(J.metadata?.isFixed===!0)throw Error("This connection is a fixed system connection and cannot be deleted");return await X.storage.connections.delete(Y.id),{item:J}}})});var H70;var pN1=j(()=>{b0();k1();H70=f0({name:"CONNECTION_TEST",description:"Test connection health and latency",inputSchema:z.object({id:z.string()}),outputSchema:z.object({id:z.string(),healthy:z.boolean(),latencyMs:z.number()}),handler:async(Y,X)=>{let Q=q1(X);await X.access.check();let J=await X.storage.connections.findById(Y.id);if(!J||J.organization_id!==Q.id)throw Error("Connection not found");let G=await X.storage.connections.testConnection(Y.id);return{id:Y.id,...G}}})});var cN1=j(()=>{IO1();GN1();WN1();lN1();dN1();pN1()});import{sql as $4}from"kysely";function nN1(Y){if(Y===null||Y===void 0)return"NULL";if(typeof Y==="number")return String(Y);if(typeof Y==="boolean")return Y?"TRUE":"FALSE";if(typeof Y==="string")return`'${Y.replace(/'/g,"''")}'`;if(Y instanceof Date)return`'${Y.toISOString()}'`;return`'${JSON.stringify(Y).replace(/'/g,"''")}'`}function UJ4(Y,X){let Q=Y;for(let G=X.length;G>=1;G--){let K=`$${G}`;if(Q.includes(K))Q=Q.replaceAll(K,nN1(X[G-1]))}let J=[];for(let G=0;G<Q.length;G++)if(Q[G]==="?")J.push(G);for(let G=Math.min(J.length,X.length)-1;G>=0;G--){let K=J[G],W=nN1(X[G]);Q=Q.slice(0,K)+W+Q.slice(K+1)}return Q}function iN1(Y){return Y.replace(/-/g,"_")}function OJ4(Y){return`app_${iN1(Y)}`}function NJ4(Y){return`app_role_${iN1(Y)}`}function LJ4(Y){if(Y instanceof Error){let X=Y.message.toLowerCase(),Q=Y.code;return Q==="3F000"||Q==="42704"||Q==="22023"||X.includes("schema")&&X.includes("does not exist")||X.includes("role")&&X.includes("does not exist")}return!1}async function wJ4(Y,X,Q){if(await $4`CREATE SCHEMA IF NOT EXISTS ${$4.id(X)}`.execute(Y),!(await $4`
|
|
1190
1190
|
SELECT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = ${Q}) as exists
|
|
1191
1191
|
`.execute(Y)).rows[0]?.exists)await $4`CREATE ROLE ${$4.id(Q)} NOLOGIN`.execute(Y);await $4`GRANT ${$4.id(Q)} TO CURRENT_USER`.execute(Y),await $4`GRANT USAGE, CREATE ON SCHEMA ${$4.id(X)} TO ${$4.id(Q)}`.execute(Y),await $4`GRANT ALL ON ALL TABLES IN SCHEMA ${$4.id(X)} TO ${$4.id(Q)}`.execute(Y),await $4`GRANT ALL ON ALL SEQUENCES IN SCHEMA ${$4.id(X)} TO ${$4.id(Q)}`.execute(Y),await $4`ALTER DEFAULT PRIVILEGES IN SCHEMA ${$4.id(X)} GRANT ALL ON TABLES TO ${$4.id(Q)}`.execute(Y),await $4`ALTER DEFAULT PRIVILEGES IN SCHEMA ${$4.id(X)} GRANT ALL ON SEQUENCES TO ${$4.id(Q)}`.execute(Y),await $4`REVOKE ALL ON SCHEMA public FROM ${$4.id(Q)}`.execute(Y)}async function MJ4(Y,X,Q,J){try{return await Y.transaction().execute(async(G)=>{return await $4`SET LOCAL ROLE ${$4.id(Q)}`.execute(G),await $4`SET LOCAL search_path TO ${$4.id(X)}`.execute(G),await $4.raw(J).execute(G)})}catch(G){if(LJ4(G))return await wJ4(Y,X,Q),await Y.transaction().execute(async(K)=>{return await $4`SET LOCAL ROLE ${$4.id(Q)}`.execute(K),await $4`SET LOCAL search_path TO ${$4.id(X)}`.execute(K),await $4.raw(J).execute(K)});throw G}}var BJ4,DJ4,aN1;var rN1=j(()=>{b0();k1();BJ4=z.object({results:z.array(z.unknown()).optional(),success:z.boolean().optional()});DJ4=z.object({sql:z.string().describe("The SQL query to run"),params:z.array(z.any()).describe("The parameters to pass to the SQL query").optional()});aN1=f0({name:"DATABASES_RUN_SQL",description:"Run a SQL query against the database",inputSchema:DJ4,outputSchema:z.object({result:z.array(BJ4)}),handler:async(Y,X)=>{g0(X),await X.access.check();let Q=UJ4(Y.sql,Y.params||[]);if(!X.connectionId)throw Error("Connection context required for database access");let J=OJ4(X.connectionId),G=NJ4(X.connectionId);return{result:[{results:(await MJ4(X.db,J,G,Q)).rows,success:!0}]}}})});var oN1,PJ4,sN1;var qK=j(()=>{b0();Nu();oN1=z.object({connectionId:z.string().optional().describe("Filter subscriptions by connection ID (optional)")}),PJ4=z.object({id:z.string().describe("Subscription ID"),connectionId:z.string().describe("Subscriber connection ID"),eventType:z.string().describe("Event type pattern"),publisher:z.string().nullable().describe("Publisher connection filter (null = all publishers)"),filter:z.string().nullable().describe("JSONPath filter expression"),enabled:z.boolean().describe("Whether subscription is enabled"),createdAt:z.string().datetime().describe("Created timestamp (ISO 8601)"),updatedAt:z.string().datetime().describe("Updated timestamp (ISO 8601)")}),sN1=z.object({subscriptions:z.array(PJ4).describe("List of subscriptions")})});var F70;var tN1=j(()=>{k1();qK();F70=f0({name:"EVENT_PUBLISH",description:"Publish an event to the event bus. Supports immediate, scheduled (deliverAt), and recurring (cron) delivery. The source is automatically set to the caller's connection ID.",inputSchema:T2,outputSchema:E2,handler:async(Y,X)=>{g0(X);let Q=q1(X);await X.access.check();let J=X.connectionId;if(!J)throw Error("Connection ID required to publish events. Use a connection-scoped token.");let G=await X.eventBus.publish(Q.id,J,{type:Y.type,subject:Y.subject,data:Y.data,deliverAt:Y.deliverAt,cron:Y.cron});return{id:G.id,type:G.type,source:G.source,time:G.time}}})});var $70;var eN1=j(()=>{k1();qK();$70=f0({name:"EVENT_SUBSCRIBE",description:"Subscribe to events of a specific type. The subscriber is automatically set to the caller's connection.",inputSchema:C2,outputSchema:I2,handler:async(Y,X)=>{g0(X);let Q=q1(X);await X.access.check();let J=X.connectionId;if(!J)throw Error("Connection ID required to subscribe. Use a connection-scoped token.");let G=await X.eventBus.subscribe(Q.id,{connectionId:J,eventType:Y.eventType,publisher:Y.publisher,filter:Y.filter});return{subscription:{id:G.id,connectionId:G.connectionId,eventType:G.eventType,publisher:G.publisher,filter:G.filter,enabled:G.enabled,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():G.createdAt,updatedAt:G.updatedAt instanceof Date?G.updatedAt.toISOString():G.updatedAt}}}})});var V70;var YL1=j(()=>{k1();qK();V70=f0({name:"EVENT_UNSUBSCRIBE",description:"Unsubscribe from events by removing a subscription.",inputSchema:S2,outputSchema:k2,handler:async(Y,X)=>{g0(X);let Q=q1(X);await X.access.check();let J=X.connectionId;if(!J)throw Error("Connection ID required to unsubscribe. Use a connection-scoped token.");let G=await X.eventBus.getSubscription(Q.id,Y.subscriptionId);if(!G)throw Error(`Subscription not found: ${Y.subscriptionId}`);if(G.connectionId!==J)throw Error("Cannot unsubscribe from a subscription owned by another connection");return{success:(await X.eventBus.unsubscribe(Q.id,Y.subscriptionId)).success,subscriptionId:Y.subscriptionId}}})});var q70;var XL1=j(()=>{k1();qK();q70=f0({name:"EVENT_CANCEL",description:"Cancel a recurring event to stop future deliveries. Only the publisher can cancel their own events.",inputSchema:v2,outputSchema:_2,handler:async(Y,X)=>{g0(X);let Q=q1(X);await X.access.check();let J=X.connectionId;if(!J)throw Error("Connection ID required to cancel events. Use a connection-scoped token.");if(!await X.eventBus.getEvent(Q.id,Y.eventId))throw Error(`Event not found: ${Y.eventId}`);if(!(await X.eventBus.cancelEvent(Q.id,Y.eventId,J)).success)throw Error("Failed to cancel event. Either the event is already completed/failed, or you are not the publisher.");return{success:!0,eventId:Y.eventId}}})});var z70;var QL1=j(()=>{k1();qK();z70=f0({name:"EVENT_ACK",description:"Acknowledge delivery of an event. Call after successfully processing an event received via ON_EVENTS with retryAfter.",inputSchema:y2,outputSchema:f2,handler:async(Y,X)=>{g0(X);let Q=q1(X);await X.access.check();let J=X.connectionId;if(!J)throw Error("Connection ID required to acknowledge events. Use a connection-scoped token.");if(!(await X.eventBus.ackEvent(Q.id,Y.eventId,J)).success)throw Error("Failed to acknowledge event. Either the event was not found, already delivered, or you are not a subscriber.");return{success:!0,eventId:Y.eventId}}})});var B70;var JL1=j(()=>{k1();qK();B70=f0({name:"EVENT_SUBSCRIPTION_LIST",description:"List event subscriptions, optionally filtered by connection ID.",inputSchema:oN1,outputSchema:sN1,handler:async(Y,X)=>{g0(X);let Q=q1(X);return await X.access.check(),{subscriptions:(await X.eventBus.listSubscriptions(Q.id,Y.connectionId)).map((G)=>({id:G.id,connectionId:G.connectionId,eventType:G.eventType,publisher:G.publisher,filter:G.filter,enabled:G.enabled,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():G.createdAt,updatedAt:G.updatedAt instanceof Date?G.updatedAt.toISOString():G.updatedAt}))}}})});var U70;var GL1=j(()=>{k1();qK();U70=f0({name:"EVENT_SYNC_SUBSCRIPTIONS",description:"Sync subscriptions to desired state. Creates new, deletes removed, updates changed filters. Subscriptions are identified by (eventType, publisher).",inputSchema:R2,outputSchema:j2,handler:async(Y,X)=>{g0(X);let Q=q1(X);await X.access.check();let J=X.connectionId;if(!J)throw Error("Connection ID required to sync subscriptions. Use a connection-scoped token.");let G=await X.eventBus.syncSubscriptions(Q.id,{connectionId:J,subscriptions:Y.subscriptions});return{created:G.created,updated:G.updated,deleted:G.deleted,unchanged:G.unchanged,subscriptions:G.subscriptions.map((K)=>({id:K.id,connectionId:K.connectionId,eventType:K.eventType,publisher:K.publisher,filter:K.filter,enabled:K.enabled,createdAt:K.createdAt instanceof Date?K.createdAt.toISOString():K.createdAt,updatedAt:K.updatedAt instanceof Date?K.updatedAt.toISOString():K.updatedAt}))}}})});var WL1=j(()=>{tN1();eN1();YL1();XL1();QL1();JL1();GL1();qK()});var OO=j(()=>{_S()});var EJ4,CJ4,D70;var ZL1=j(()=>{b0();k1();OO();EJ4=z.object({data:Bw.describe("Data for the new virtual MCP")}),CJ4=z.object({item:sQ.describe("The created virtual MCP entity")}),D70=f0({name:"COLLECTION_VIRTUAL_MCP_CREATE",description:"Create a new MCP virtual MCP in the organization",inputSchema:EJ4,outputSchema:CJ4,handler:async(Y,X)=>{g0(X);let Q=q1(X);await X.access.check();let J=g8(X);if(!J)throw Error("User ID required to create virtual MCP");return{item:await X.storage.virtualMcps.create(Q.id,J,Y.data)}}})});function IJ4(Y){let X=[],Q=0;while(Q<Y.length){let J=Y[Q];if(J==="%")X.push(".*");else if(J==="_")X.push(".");else if(/[.*+?^${}()|[\]\\]/.test(J))X.push("\\"+J);else X.push(J);Q++}return X.join("")}function c3(Y){return typeof Y==="string"||typeof Y==="number"}function O70(Y,X){let Q=X.split("."),J=Y;for(let G of Q){if(J==null||typeof J!=="object")return;J=J[G]}return J}function RJ4(Y,X){return Y.connections.some((Q)=>Q.connection_id===X)}function Iu(Y,X){if("conditions"in X){let{operator:Z,conditions:H}=X;switch(Z){case"and":return H.every((F)=>Iu(Y,F));case"or":return H.some((F)=>Iu(Y,F));case"not":return!H.every((F)=>Iu(Y,F));default:return!0}}let{field:Q,operator:J,value:G}=X,K=Q.join(".");if(K==="connection_id"){if(J!=="eq"||typeof G!=="string")return!1;return RJ4(Y,G)}let W=O70(Y,K);switch(J){case"eq":return W===G;case"gt":return c3(W)&&c3(G)&&W>G;case"gte":return c3(W)&&c3(G)&&W>=G;case"lt":return c3(W)&&c3(G)&&W<G;case"lte":return c3(W)&&c3(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=IJ4(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 jJ4(Y,X){return[...Y].sort((Q,J)=>{for(let G of X){let K=G.field.join("."),W=O70(Q,K),Z=O70(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 SJ4,kJ4,N70;var KL1=j(()=>{_5();k1();OO();SJ4=ZK,kJ4=KK(sQ),N70=f0({name:"COLLECTION_VIRTUAL_MCP_LIST",description:"List all MCP virtual MCPs in the organization",inputSchema:SJ4,outputSchema:kJ4,handler:async(Y,X)=>{await X.access.check();let Q=q1(X),J=Y.where&&!("conditions"in Y.where)&&Y.where.field.join(".")==="connection_id"&&Y.where.operator==="eq"&&typeof Y.where.value==="string"?Y.where.value:void 0,K=J?await X.storage.virtualMcps.listByConnectionId(Q.id,J):await X.storage.virtualMcps.list(Q.id);if(Y.where)K=K.filter((V)=>Iu(V,Y.where));if(Y.orderBy&&Y.orderBy.length>0)K=jJ4(K,Y.orderBy);let W=K.length,Z=Y.offset??0,H=Y.limit??100,F=K.slice(Z,Z+H),$=Z+H<W;return{items:F,totalCount:W,hasMore:$}}})});var vJ4,_J4,L70;var HL1=j(()=>{b0();k1();OO();vJ4=z.object({id:z.string().describe("ID of the virtual MCP to retrieve")}),_J4=z.object({item:sQ.nullable().describe("The retrieved virtual MCP, or null if not found")}),L70=f0({name:"COLLECTION_VIRTUAL_MCP_GET",description:"Get an MCP virtual MCP by ID",inputSchema:vJ4,outputSchema:_J4,handler:async(Y,X)=>{g0(X);let Q=q1(X);await X.access.check();let J=await X.storage.virtualMcps.findById(Y.id);if(J&&J.organization_id!==Q.id)return{item:null};if(!J)return{item:null};return{item:J}}})});var yJ4,fJ4,w70;var FL1=j(()=>{b0();k1();OO();yJ4=z.object({id:z.string().describe("ID of the virtual MCP to update"),data:Uw.describe("Partial virtual MCP data to update")}),fJ4=z.object({item:sQ.describe("The updated virtual MCP entity")}),w70=f0({name:"COLLECTION_VIRTUAL_MCP_UPDATE",description:"Update an MCP virtual MCP",inputSchema:yJ4,outputSchema:fJ4,handler:async(Y,X)=>{g0(X);let Q=q1(X);await X.access.check();let J=g8(X);if(!J)throw Error("User ID required to update virtual MCP");let G=await X.storage.virtualMcps.findById(Y.id);if(!G)throw Error(`Virtual MCP not found: ${Y.id}`);if(G.organization_id!==Q.id)throw Error(`Virtual MCP not found: ${Y.id}`);return{item:await X.storage.virtualMcps.update(Y.id,J,Y.data)}}})});var hJ4,bJ4,M70;var $L1=j(()=>{b0();k1();OO();hJ4=z.object({id:z.string().describe("ID of the virtual MCP to delete")}),bJ4=z.object({item:sQ.describe("The deleted virtual MCP entity")}),M70=f0({name:"COLLECTION_VIRTUAL_MCP_DELETE",description:"Delete an MCP virtual MCP",inputSchema:hJ4,outputSchema:bJ4,handler:async(Y,X)=>{g0(X);let Q=q1(X);await X.access.check();let J=await X.storage.virtualMcps.findById(Y.id);if(!J)throw Error(`Virtual MCP not found: ${Y.id}`);if(J.organization_id!==Q.id)throw Error(`Virtual MCP not found: ${Y.id}`);return await X.storage.virtualMcps.delete(Y.id),{item:J}}})});var VL1=j(()=>{ZL1();KL1();HL1();FL1();$L1()});var uJ4,gJ4,A70;var qL1=j(()=>{b0();k1();VK();uJ4=z.object({virtual_mcp_id:z.string().describe("ID of the Virtual MCP to add the tool to"),data:CN1.describe("Virtual tool data")}),gJ4=z.object({item:MW.describe("The created virtual tool")}),A70=f0({name:"COLLECTION_VIRTUAL_TOOLS_CREATE",description:"Create a new virtual tool on a Virtual MCP. The tool code should be a JavaScript ES module that exports a default async function: export default async (tools, args) => { ... }. Specify connection_dependencies to indicate which connections this tool uses.",inputSchema:uJ4,outputSchema:gJ4,handler:async(Y,X)=>{g0(X);let Q=q1(X);await X.access.check();let J=await X.storage.virtualMcps.findById(Y.virtual_mcp_id);if(!J||J.organization_id!==Q.id)throw Error(`Virtual MCP not found: ${Y.virtual_mcp_id}`);let G=Y.data.connection_dependencies??[];return{item:await X.storage.virtualMcps.createVirtualTool(Y.virtual_mcp_id,Y.data,G)}}})});var mJ4,lJ4,P70;var zL1=j(()=>{b0();k1();VK();mJ4=z.object({virtual_mcp_id:z.string().describe("ID of the Virtual MCP to list tools for"),limit:z.number().int().min(1).max(1000).optional().describe("Maximum number of items to return"),offset:z.number().int().min(0).optional().describe("Number of items to skip")}),lJ4=z.object({items:z.array(MW).describe("Array of virtual tools"),totalCount:z.number().int().min(0).optional().describe("Total number of virtual tools"),hasMore:z.boolean().optional().describe("Whether there are more items available")}),P70=f0({name:"COLLECTION_VIRTUAL_TOOLS_LIST",description:"List all virtual tools for a Virtual MCP",inputSchema:mJ4,outputSchema:lJ4,handler:async(Y,X)=>{g0(X);let Q=q1(X);await X.access.check();let J=await X.storage.virtualMcps.findById(Y.virtual_mcp_id);if(!J||J.organization_id!==Q.id)return{items:[],totalCount:0,hasMore:!1};let G=await X.storage.virtualMcps.listVirtualTools(Y.virtual_mcp_id),K=G.length,W=Y.offset??0,Z=Y.limit??100,H=G.slice(W,W+Z),F=W+Z<K;return{items:H,totalCount:K,hasMore:F}}})});var dJ4,pJ4,T70;var BL1=j(()=>{b0();k1();VK();dJ4=z.object({virtual_mcp_id:z.string().describe("ID of the Virtual MCP"),name:z.string().describe("Name of the virtual tool to retrieve")}),pJ4=z.object({item:MW.nullable().describe("The retrieved virtual tool, or null if not found")}),T70=f0({name:"COLLECTION_VIRTUAL_TOOLS_GET",description:"Get a virtual tool by name from a Virtual MCP",inputSchema:dJ4,outputSchema:pJ4,handler:async(Y,X)=>{g0(X);let Q=q1(X);await X.access.check();let J=await X.storage.virtualMcps.findById(Y.virtual_mcp_id);if(!J||J.organization_id!==Q.id)return{item:null};return{item:await X.storage.virtualMcps.getVirtualTool(Y.virtual_mcp_id,Y.name)}}})});var cJ4,nJ4,E70;var UL1=j(()=>{b0();k1();VK();cJ4=z.object({virtual_mcp_id:z.string().describe("ID of the Virtual MCP"),name:z.string().describe("Current name of the virtual tool to update"),data:IN1.describe("Partial virtual tool data to update")}),nJ4=z.object({item:MW.describe("The updated virtual tool")}),E70=f0({name:"COLLECTION_VIRTUAL_TOOLS_UPDATE",description:"Update an existing virtual tool on a Virtual MCP. Specify connection_dependencies to update which connections this tool uses.",inputSchema:cJ4,outputSchema:nJ4,handler:async(Y,X)=>{g0(X);let Q=q1(X);await X.access.check();let J=await X.storage.virtualMcps.findById(Y.virtual_mcp_id);if(!J||J.organization_id!==Q.id)throw Error(`Virtual MCP not found: ${Y.virtual_mcp_id}`);if(!await X.storage.virtualMcps.getVirtualTool(Y.virtual_mcp_id,Y.name))throw Error(`Virtual tool not found: ${Y.name}`);let K=Y.data.connection_dependencies;return{item:await X.storage.virtualMcps.updateVirtualTool(Y.virtual_mcp_id,Y.name,Y.data,K)}}})});var iJ4,aJ4,C70;var DL1=j(()=>{b0();k1();VK();iJ4=z.object({virtual_mcp_id:z.string().describe("ID of the Virtual MCP"),name:z.string().describe("Name of the virtual tool to delete")}),aJ4=z.object({item:MW.describe("The deleted virtual tool")}),C70=f0({name:"COLLECTION_VIRTUAL_TOOLS_DELETE",description:"Delete a virtual tool from a Virtual MCP",inputSchema:iJ4,outputSchema:aJ4,handler:async(Y,X)=>{g0(X);let Q=q1(X);await X.access.check();let J=await X.storage.virtualMcps.findById(Y.virtual_mcp_id);if(!J||J.organization_id!==Q.id)throw Error(`Virtual MCP not found: ${Y.virtual_mcp_id}`);let G=await X.storage.virtualMcps.getVirtualTool(Y.virtual_mcp_id,Y.name);if(!G)throw Error(`Virtual tool not found: ${Y.name}`);return await X.storage.virtualMcps.deleteVirtualTool(Y.virtual_mcp_id,Y.name),{item:G}}})});var OL1=j(()=>{qL1();zL1();BL1();UL1();DL1()});var oJ4,I70;var NL1=j(()=>{k1();b0();oJ4=z.object({id:z.string().optional().describe("Unique log identifier"),organizationId:z.string().describe("Organization ID"),connectionId:z.string().describe("Connection ID"),connectionTitle:z.string().describe("Connection display name"),toolName:z.string().describe("Name of the tool that was called"),input:z.record(z.string(),z.unknown()).describe("Redacted tool input"),output:z.record(z.string(),z.unknown()).describe("Redacted tool output"),isError:z.boolean().describe("Whether the call resulted in an error"),errorMessage:z.string().nullish().describe("Error message if applicable"),durationMs:z.number().describe("Call duration in milliseconds"),timestamp:z.string().describe("ISO 8601 timestamp of the call"),userId:z.string().nullish().describe("User who triggered the call"),requestId:z.string().describe("Unique request identifier"),userAgent:z.string().nullish().describe("Client identifier (x-mesh-client header)"),virtualMcpId:z.string().nullish().describe("Virtual MCP (Agent) ID if routed through an agent"),properties:z.record(z.string(),z.string()).nullish().describe("Custom key-value metadata attached to the log")}),I70=f0({name:"MONITORING_LOGS_LIST",description:"List monitoring logs for tool calls in the organization",inputSchema:z.object({connectionId:z.string().optional().describe("Filter by connection ID"),excludeConnectionIds:z.array(z.string()).optional().describe("Exclude logs from these connection IDs (e.g. system connections)"),virtualMcpId:z.string().optional().describe("Filter by Virtual MCP (Agent) ID"),toolName:z.string().optional().describe("Filter by tool name"),isError:z.boolean().optional().describe("Filter by error status"),startDate:z.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:z.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),limit:z.number().default(20).describe("Maximum number of results"),offset:z.number().default(0).describe("Offset for pagination"),properties:z.record(z.string(),z.string()).optional().describe("Filter by exact property key=value matches"),propertyKeys:z.array(z.string()).optional().describe("Filter by logs that have these property keys"),propertyPatterns:z.record(z.string(),z.string()).optional().describe("Filter by property value patterns (SQL LIKE, use % as wildcard)"),propertyInValues:z.record(z.string(),z.string()).optional().describe("Filter by exact match within comma-separated values (e.g., user_tags in 'Engineering')")}),outputSchema:z.object({logs:z.array(oJ4).describe("Array of monitoring logs"),total:z.number().describe("Total number of logs matching filters"),offset:z.number().describe("Current offset for pagination"),limit:z.number().describe("Current limit for pagination")}),handler:async(Y,X)=>{let Q=q1(X),G=Y.properties||Y.propertyKeys||Y.propertyPatterns||Y.propertyInValues?{properties:Y.properties,propertyKeys:Y.propertyKeys,propertyPatterns:Y.propertyPatterns,propertyInValues:Y.propertyInValues}:void 0,K={organizationId:Q.id,connectionId:Y.connectionId,excludeConnectionIds:Y.excludeConnectionIds,virtualMcpId:Y.virtualMcpId,toolName:Y.toolName,isError:Y.isError,startDate:Y.startDate?new Date(Y.startDate):void 0,endDate:Y.endDate?new Date(Y.endDate):void 0,limit:Y.limit,offset:Y.offset,propertyFilters:G},W=await X.storage.monitoring.query(K);return{logs:W.logs.map((Z)=>({...Z,timestamp:Z.timestamp instanceof Date?Z.timestamp.toISOString():Z.timestamp})),total:W.total,offset:Y.offset,limit:Y.limit}}})});var R70;var LL1=j(()=>{k1();b0();R70=f0({name:"MONITORING_STATS",description:"Get aggregated statistics for tool call monitoring",inputSchema:z.object({startDate:z.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:z.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)")}),outputSchema:z.object({totalCalls:z.number().describe("Total number of tool calls"),errorRate:z.number().describe("Error rate as a decimal (0 to 1)"),avgDurationMs:z.number().describe("Average call duration in milliseconds"),errorRatePercent:z.string().describe("Error rate as a percentage string")}),handler:async(Y,X)=>{let J={organizationId:q1(X).id,startDate:Y.startDate?new Date(Y.startDate):void 0,endDate:Y.endDate?new Date(Y.endDate):void 0},G=await X.storage.monitoring.getStats(J);return{...G,errorRatePercent:(G.errorRate*100).toFixed(2)}}})});var wL1=j(()=>{NL1();LL1()});var j70;var ML1=j(()=>{b0();k1();j70=f0({name:"ORGANIZATION_CREATE",description:"Create a new organization",inputSchema:z.object({slug:z.string().min(1).max(50).regex(/^[a-z0-9-]+$/,"Slug must be lowercase alphanumeric with hyphens"),name:z.string().min(1).max(255),description:z.string().optional()}),outputSchema:z.object({id:z.string(),name:z.string(),slug:z.string(),logo:z.string().nullable().optional(),metadata:z.any().optional(),createdAt:z.string().datetime().describe("ISO 8601 timestamp"),members:z.array(z.any()).optional()}),handler:async(Y,X)=>{g0(X),await X.access.check();let Q=g8(X);if(!Q)throw Error("User ID required to create organization");let J=await X.boundAuth.organization.create({name:Y.name,slug:Y.slug,metadata:Y.description?{description:Y.description}:void 0,userId:Q});if(!J)throw Error("Failed to create organization");return{...J,createdAt:J.createdAt instanceof Date?J.createdAt.toISOString():J.createdAt}}})});var S70;var AL1=j(()=>{b0();k1();S70=f0({name:"ORGANIZATION_LIST",description:"List all organizations user has access to",inputSchema:z.object({userId:z.string().optional()}),outputSchema:z.object({organizations:z.array(z.object({id:z.string(),name:z.string(),slug:z.string(),logo:z.string().nullable().optional(),metadata:z.any().optional(),createdAt:z.string().datetime().describe("ISO 8601 timestamp")}))}),handler:async(Y,X)=>{g0(X),await X.access.check();let Q=g8(X),J=Y.userId||Q;if(!J)throw Error("User ID required to list organizations");return{organizations:(await X.boundAuth.organization.list(J)).map((K)=>({...K,createdAt:K.createdAt instanceof Date?K.createdAt.toISOString():K.createdAt}))}}})});var k70;var PL1=j(()=>{b0();k1();k70=f0({name:"ORGANIZATION_GET",description:"Get organization details by slug or ID",inputSchema:z.object({}),outputSchema:z.object({id:z.string(),name:z.string(),slug:z.string(),logo:z.string().nullable().optional(),metadata:z.any().optional(),createdAt:z.string().datetime().describe("ISO 8601 timestamp"),members:z.array(z.any()).optional(),invitations:z.array(z.any()).optional()}),handler:async(Y,X)=>{g0(X),await X.access.check();let Q=await X.boundAuth.organization.get();if(!Q)throw Error("No active organization found");let J=new Date,G=Q.invitations?.filter((K)=>new Date(K.expiresAt)>J);return{...Q,invitations:G,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt}}})});var v70;var TL1=j(()=>{b0();k1();v70=f0({name:"ORGANIZATION_UPDATE",description:"Update an existing organization",inputSchema:z.object({id:z.string(),slug:z.string().min(1).max(50).regex(/^[a-z0-9-]+$/).optional(),name:z.string().min(1).max(255).optional(),description:z.string().optional()}),outputSchema:z.object({id:z.string(),name:z.string(),slug:z.string(),logo:z.string().nullable().optional(),metadata:z.any().optional(),createdAt:z.string().datetime().describe("ISO 8601 timestamp")}),handler:async(Y,X)=>{g0(X),await X.access.check();let Q={};if(Y.name)Q.name=Y.name;if(Y.slug)Q.slug=Y.slug;if(Y.description)Q.metadata={description:Y.description};let J=await X.boundAuth.organization.update({organizationId:Y.id,data:Q});if(!J)throw Error("Failed to update organization");return{...J,createdAt:J.createdAt instanceof Date?J.createdAt.toISOString():J.createdAt}}})});var _70;var EL1=j(()=>{b0();k1();_70=f0({name:"ORGANIZATION_DELETE",description:"Delete an organization",inputSchema:z.object({id:z.string()}),outputSchema:z.object({success:z.boolean(),id:z.string()}),handler:async(Y,X)=>{return g0(X),await X.access.check(),await X.boundAuth.organization.delete(Y.id),{success:!0,id:Y.id}}})});var a2;var y70=j(()=>{b0();a2=z.object({title:z.string(),url:z.string(),icon:z.string()})});var f70;var CL1=j(()=>{b0();k1();y70();f70=f0({name:"ORGANIZATION_SETTINGS_GET",description:"Get organization-level settings",inputSchema:z.object({}),outputSchema:z.object({organizationId:z.string(),sidebar_items:z.array(a2).nullable().optional(),enabled_plugins:z.array(z.string()).nullable().optional(),createdAt:z.string().datetime().optional().describe("ISO 8601 timestamp"),updatedAt:z.string().datetime().optional().describe("ISO 8601 timestamp")}),handler:async(Y,X)=>{g0(X),await X.access.check();let Q=X.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let J=await X.storage.organizationSettings.get(Q);if(!J)return{organizationId:Q};return{...J,createdAt:J.createdAt instanceof Date?J.createdAt.toISOString():J.createdAt,updatedAt:J.updatedAt instanceof Date?J.updatedAt.toISOString():J.updatedAt}}})});var h70;var IL1=j(()=>{b0();k1();y70();h70=f0({name:"ORGANIZATION_SETTINGS_UPDATE",description:"Update organization-level settings",inputSchema:z.object({organizationId:z.string(),sidebar_items:z.array(a2).optional(),enabled_plugins:z.array(z.string()).optional()}),outputSchema:z.object({organizationId:z.string(),sidebar_items:z.array(a2).nullable().optional(),enabled_plugins:z.array(z.string()).nullable().optional(),createdAt:z.string().datetime().describe("ISO 8601 timestamp"),updatedAt:z.string().datetime().describe("ISO 8601 timestamp")}),handler:async(Y,X)=>{if(g0(X),await X.access.check(),X.organization&&X.organization.id!==Y.organizationId)throw Error("Cannot update settings for a different organization");let Q=await X.storage.organizationSettings.upsert(Y.organizationId,{sidebar_items:Y.sidebar_items,enabled_plugins:Y.enabled_plugins});return{...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt,updatedAt:Q.updatedAt instanceof Date?Q.updatedAt.toISOString():Q.updatedAt}}})});var b70;var RL1=j(()=>{b0();k1();b70=f0({name:"ORGANIZATION_MEMBER_ADD",description:"Add a member to an organization",inputSchema:z.object({organizationId:z.string().optional(),userId:z.string(),role:z.array(z.string())}),outputSchema:z.object({id:z.string(),organizationId:z.string(),userId:z.string(),role:z.union([z.string(),z.array(z.string())]),createdAt:z.string().datetime().describe("ISO 8601 timestamp")}),handler:async(Y,X)=>{g0(X),await X.access.check();let Q=Y.organizationId||X.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let J=await X.boundAuth.organization.addMember({organizationId:Q,userId:Y.userId,role:Y.role});if(!J)throw Error("Failed to add member");return{...J,role:J.role,createdAt:J.createdAt instanceof Date?J.createdAt.toISOString():J.createdAt}}})});var x70;var jL1=j(()=>{b0();k1();x70=f0({name:"ORGANIZATION_MEMBER_REMOVE",description:"Remove a member from an organization",inputSchema:z.object({organizationId:z.string().optional(),memberIdOrEmail:z.string()}),outputSchema:z.object({success:z.boolean(),memberIdOrEmail:z.string()}),handler:async(Y,X)=>{g0(X),await X.access.check();let Q=Y.organizationId||X.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");return await X.boundAuth.organization.removeMember({organizationId:Q,memberIdOrEmail:Y.memberIdOrEmail}),{success:!0,memberIdOrEmail:Y.memberIdOrEmail}}})});var u70;var SL1=j(()=>{b0();k1();u70=f0({name:"ORGANIZATION_MEMBER_LIST",description:"List all members in an organization",inputSchema:z.object({limit:z.number().optional(),offset:z.number().optional()}),outputSchema:z.object({members:z.array(z.object({id:z.string(),organizationId:z.string(),userId:z.string(),role:z.string(),createdAt:z.string().datetime().describe("ISO 8601 timestamp"),user:z.object({id:z.string(),name:z.string(),email:z.string(),image:z.string().optional()}).optional()}))}),handler:async(Y,X)=>{g0(X),await X.access.check();let Q=X.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let J=await X.boundAuth.organization.listMembers({organizationId:Q,limit:Y.limit,offset:Y.offset});return{members:(Array.isArray(J)?J:[]).map((K)=>({...K,createdAt:K.createdAt instanceof Date?K.createdAt.toISOString():K.createdAt}))}}})});var g70;var kL1=j(()=>{b0();k1();g70=f0({name:"ORGANIZATION_MEMBER_UPDATE_ROLE",description:"Update a member's role in an organization",inputSchema:z.object({organizationId:z.string().optional(),memberId:z.string(),role:z.array(z.string())}),outputSchema:z.object({id:z.string(),organizationId:z.string(),userId:z.string(),role:z.union([z.literal("admin"),z.literal("member"),z.literal("owner")]),createdAt:z.string().datetime().describe("ISO 8601 timestamp"),user:z.object({email:z.string(),name:z.string(),image:z.string().optional()})}),handler:async(Y,X)=>{g0(X),await X.access.check();let Q=Y.organizationId||X.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let J=await X.boundAuth.organization.updateMemberRole({organizationId:Q,memberId:Y.memberId,role:Y.role});if(!J)throw Error("Failed to update member role");return{...J,createdAt:J.createdAt instanceof Date?J.createdAt.toISOString():J.createdAt}}})});var vL1=j(()=>{ML1();AL1();PL1();TL1();EL1();CL1();IL1();RL1();jL1();SL1();kL1()});var eJ4,Ru,Y54,Zq,_L1,ju;var Kq=j(()=>{b0();eJ4=z.object({banner:z.string().nullable(),bannerColor:z.string().nullable(),icon:z.string().nullable(),themeColor:z.string().nullable()}),Ru=z.object({banner:z.string().nullable().optional(),bannerColor:z.string().nullable().optional(),icon:z.string().nullable().optional(),themeColor:z.string().nullable().optional()}),Y54=z.object({id:z.string(),title:z.string(),icon:z.string().nullable()}),Zq=z.object({id:z.string(),organizationId:z.string(),slug:z.string(),name:z.string(),description:z.string().nullable(),enabledPlugins:z.array(z.string()).nullable(),ui:eJ4.nullable(),createdAt:z.string().datetime().describe("ISO 8601 timestamp"),updatedAt:z.string().datetime().describe("ISO 8601 timestamp")}),_L1=Zq.omit({organizationId:!0}).extend({boundConnections:z.array(Y54)}),ju=z.object({id:z.string(),projectId:z.string(),pluginId:z.string(),connectionId:z.string().nullable(),settings:z.record(z.string(),z.unknown()).nullable(),createdAt:z.string().datetime().describe("ISO 8601 timestamp"),updatedAt:z.string().datetime().describe("ISO 8601 timestamp")})});var m70;var yL1=j(()=>{b0();k1();Kq();m70=f0({name:"PROJECT_LIST",description:"List all projects in an organization",inputSchema:z.object({organizationId:z.string().describe("Organization ID to list projects for")}),outputSchema:z.object({projects:z.array(_L1)}),handler:async(Y,X)=>{g0(X),await X.access.check();let Q=await X.storage.projects.list(Y.organizationId),J=Q.map((K)=>K.id),G=await X.storage.projectPluginConfigs.getBoundConnectionsForProjects(J);return{projects:Q.map((K)=>({id:K.id,slug:K.slug,name:K.name,description:K.description,enabledPlugins:K.enabledPlugins,ui:K.ui,boundConnections:G.get(K.id)??[],createdAt:K.createdAt instanceof Date?K.createdAt.toISOString():K.createdAt,updatedAt:K.updatedAt instanceof Date?K.updatedAt.toISOString():K.updatedAt}))}}})});var l70;var fL1=j(()=>{b0();k1();Kq();l70=f0({name:"PROJECT_GET",description:"Get a project by ID or slug",inputSchema:z.object({organizationId:z.string().describe("Organization ID"),projectId:z.string().optional().describe("Project ID (either this or slug required)"),slug:z.string().optional().describe("Project slug (either this or projectId required)")}).refine((Y)=>Y.projectId||Y.slug,{message:"Either projectId or slug must be provided"}),outputSchema:z.object({project:Zq.nullable()}),handler:async(Y,X)=>{g0(X),await X.access.check();let Q=null;if(Y.projectId)Q=await X.storage.projects.get(Y.projectId);else if(Y.slug)Q=await X.storage.projects.getBySlug(Y.organizationId,Y.slug);if(!Q)return{project:null};return{project:{id:Q.id,organizationId:Q.organizationId,slug:Q.slug,name:Q.name,description:Q.description,enabledPlugins:Q.enabledPlugins,ui:Q.ui,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt,updatedAt:Q.updatedAt instanceof Date?Q.updatedAt.toISOString():Q.updatedAt}}}})});var d70;var hL1=j(()=>{b0();RY();k1();Kq();d70=f0({name:"PROJECT_CREATE",description:"Create a new project in an organization",inputSchema:z.object({organizationId:z.string().describe("Organization ID"),slug:z.string().min(1).max(100).regex(/^[a-z0-9-]+$/,"Slug must be lowercase alphanumeric with hyphens").describe("URL-friendly identifier"),name:z.string().min(1).max(200).describe("Display name"),description:z.string().max(1000).nullable().optional().describe("Project description"),enabledPlugins:z.array(z.string()).nullable().optional().describe("Plugin IDs to enable"),ui:Ru.nullable().optional().describe("UI customization")}),outputSchema:z.object({project:Zq}),handler:async(Y,X)=>{g0(X),await X.access.check();let{organizationId:Q,slug:J,name:G,description:K,enabledPlugins:W,ui:Z}=Y;if(J===x5)throw Error(`Slug "${x5}" is reserved`);if(await X.storage.projects.getBySlug(Q,J))throw Error(`Project with slug "${J}" already exists in this organization`);let F=Z?{banner:Z.banner??null,bannerColor:Z.bannerColor??null,icon:Z.icon??null,themeColor:Z.themeColor??null}:null,$=await X.storage.projects.create({organizationId:Q,slug:J,name:G,description:K??null,enabledPlugins:W??null,ui:F});return{project:{id:$.id,organizationId:$.organizationId,slug:$.slug,name:$.name,description:$.description,enabledPlugins:$.enabledPlugins,ui:$.ui,createdAt:$.createdAt instanceof Date?$.createdAt.toISOString():$.createdAt,updatedAt:$.updatedAt instanceof Date?$.updatedAt.toISOString():$.updatedAt}}}})});var p70;var bL1=j(()=>{b0();k1();Kq();p70=f0({name:"PROJECT_UPDATE",description:"Update a project's details",inputSchema:z.object({projectId:z.string().describe("Project ID to update"),name:z.string().min(1).max(200).optional().describe("New display name"),description:z.string().max(1000).nullable().optional().describe("New description"),enabledPlugins:z.array(z.string()).nullable().optional().describe("Updated plugin IDs"),ui:Ru.nullable().optional().describe("Updated UI customization")}),outputSchema:z.object({project:Zq.nullable()}),handler:async(Y,X)=>{g0(X),await X.access.check();let{projectId:Q,name:J,description:G,enabledPlugins:K,ui:W}=Y,Z={};if(J!==void 0)Z.name=J;if(G!==void 0)Z.description=G;if(K!==void 0)Z.enabledPlugins=K;if(W!==void 0)Z.ui=W?{banner:W.banner??null,bannerColor:W.bannerColor??null,icon:W.icon??null,themeColor:W.themeColor??null}:null;let H=await X.storage.projects.update(Q,Z);if(!H)return{project:null};return{project:{id:H.id,organizationId:H.organizationId,slug:H.slug,name:H.name,description:H.description,enabledPlugins:H.enabledPlugins,ui:H.ui,createdAt:H.createdAt instanceof Date?H.createdAt.toISOString():H.createdAt,updatedAt:H.updatedAt instanceof Date?H.updatedAt.toISOString():H.updatedAt}}}})});var c70;var xL1=j(()=>{b0();RY();k1();c70=f0({name:"PROJECT_DELETE",description:"Delete a project (cannot delete org-admin)",inputSchema:z.object({projectId:z.string().describe("Project ID to delete")}),outputSchema:z.object({success:z.boolean(),message:z.string().optional()}),handler:async(Y,X)=>{g0(X),await X.access.check();let{projectId:Q}=Y,J=await X.storage.projects.get(Q);if(!J)return{success:!1,message:"Project not found"};if(J.slug===x5)return{success:!1,message:"Cannot delete the org-admin project"};return{success:await X.storage.projects.delete(Q)}}})});var n70;var uL1=j(()=>{b0();k1();Kq();n70=f0({name:"PROJECT_PLUGIN_CONFIG_GET",description:"Get plugin configuration for a project",inputSchema:z.object({projectId:z.string().describe("Project ID"),pluginId:z.string().describe("Plugin ID")}),outputSchema:z.object({config:ju.nullable()}),handler:async(Y,X)=>{g0(X),await X.access.check();let{projectId:Q,pluginId:J}=Y,G=await X.storage.projectPluginConfigs.get(Q,J);if(!G)return{config:null};return{config:{id:G.id,projectId:G.projectId,pluginId:G.pluginId,connectionId:G.connectionId,settings:G.settings,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():G.createdAt,updatedAt:G.updatedAt instanceof Date?G.updatedAt.toISOString():G.updatedAt}}}})});var i70;var gL1=j(()=>{b0();k1();Kq();Mu();i70=f0({name:"PROJECT_PLUGIN_CONFIG_UPDATE",description:"Update or create plugin configuration for a project",inputSchema:z.object({projectId:z.string().describe("Project ID"),pluginId:z.string().describe("Plugin ID"),connectionId:z.string().nullable().optional().describe("MCP connection to bind"),settings:z.record(z.string(),z.unknown()).nullable().optional().describe("Plugin-specific settings")}),outputSchema:z.object({config:ju}),handler:async(Y,X)=>{g0(X),await X.access.check();let{projectId:Q,pluginId:J,connectionId:G,settings:K}=Y,W=g8(X),Z=await X.storage.projects.get(Q);if(!Z)throw Error(`Project not found: ${Q}`);let H=G?await X.storage.connections.findById(G):null;if(G&&Z.organizationId&&!H&&$O()){if(wu(G,Z.organizationId)){if(!W)throw Error("User ID required to create dev-assets connection");let $=VO(Z.organizationId,NJ());await X.storage.connections.create({...$,organization_id:Z.organizationId,created_by:W})}}let F=await X.storage.projectPluginConfigs.upsert(Q,J,{connectionId:G,settings:K});return{config:{id:F.id,projectId:F.projectId,pluginId:F.pluginId,connectionId:F.connectionId,settings:F.settings,createdAt:F.createdAt instanceof Date?F.createdAt.toISOString():F.createdAt,updatedAt:F.updatedAt instanceof Date?F.updatedAt.toISOString():F.updatedAt}}}})});var mL1=j(()=>{yL1();fL1();hL1();bL1();xL1();uL1();gL1()});var a70;var lL1=j(()=>{b0();k1();a70=f0({name:"TAGS_LIST",description:"List all tags in an organization",inputSchema:z.object({}),outputSchema:z.object({tags:z.array(z.object({id:z.string(),organizationId:z.string(),name:z.string(),createdAt:z.string().describe("ISO 8601 timestamp")}))}),handler:async(Y,X)=>{g0(X),await X.access.check();let Q=q1(X);return{tags:(await X.storage.tags.listOrgTags(Q.id)).map((G)=>({...G,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():String(G.createdAt)}))}}})});var r70;var dL1=j(()=>{b0();k1();r70=f0({name:"TAGS_CREATE",description:"Create a new tag in an organization",inputSchema:z.object({name:z.string().min(1).max(50).describe("Tag name")}),outputSchema:z.object({tag:z.object({id:z.string(),organizationId:z.string(),name:z.string(),createdAt:z.string().describe("ISO 8601 timestamp")})}),handler:async(Y,X)=>{g0(X),await X.access.check();let Q=q1(X),J=await X.storage.tags.createTag(Q.id,Y.name);return{tag:{...J,createdAt:J.createdAt instanceof Date?J.createdAt.toISOString():String(J.createdAt)}}}})});var o70;var pL1=j(()=>{b0();k1();o70=f0({name:"TAGS_DELETE",description:"Delete a tag from an organization (removes from all members)",inputSchema:z.object({tagId:z.string().describe("Tag ID to delete")}),outputSchema:z.object({success:z.boolean()}),handler:async(Y,X)=>{g0(X),await X.access.check();let Q=q1(X),J=await X.storage.tags.getTag(Y.tagId);if(!J)throw Error("Tag not found");if(J.organizationId!==Q.id)throw Error("Tag does not belong to this organization");return await X.storage.tags.deleteTag(Y.tagId),{success:!0}}})});var s70;var cL1=j(()=>{b0();k1();s70=f0({name:"MEMBER_TAGS_GET",description:"Get tags assigned to a member",inputSchema:z.object({memberId:z.string().describe("Member ID")}),outputSchema:z.object({tags:z.array(z.object({id:z.string(),organizationId:z.string(),name:z.string(),createdAt:z.string().describe("ISO 8601 timestamp")}))}),handler:async(Y,X)=>{g0(X),await X.access.check();let Q=q1(X);if(!await X.storage.tags.verifyMemberOrg(Y.memberId,Q.id))throw Error(`Member not found in this organization: ${Y.memberId}`);return{tags:(await X.storage.tags.getMemberTags(Y.memberId)).map((K)=>({...K,createdAt:K.createdAt instanceof Date?K.createdAt.toISOString():String(K.createdAt)}))}}})});var t70;var nL1=j(()=>{b0();k1();t70=f0({name:"MEMBER_TAGS_SET",description:"Set tags for a member (replaces all existing tags)",inputSchema:z.object({memberId:z.string().describe("Member ID"),tagIds:z.array(z.string()).describe("Array of tag IDs to assign")}),outputSchema:z.object({success:z.boolean(),tags:z.array(z.object({id:z.string(),organizationId:z.string(),name:z.string(),createdAt:z.string().describe("ISO 8601 timestamp")}))}),handler:async(Y,X)=>{g0(X),await X.access.check();let Q=q1(X);if(!await X.storage.tags.verifyMemberOrg(Y.memberId,Q.id))throw Error(`Member not found in this organization: ${Y.memberId}`);for(let K of Y.tagIds){let W=await X.storage.tags.getTag(K);if(!W)throw Error(`Tag not found: ${K}`);if(W.organizationId!==Q.id)throw Error(`Tag does not belong to this organization: ${K}`)}return await X.storage.tags.setMemberTags(Y.memberId,Y.tagIds),{success:!0,tags:(await X.storage.tags.getMemberTags(Y.memberId)).map((K)=>({...K,createdAt:K.createdAt instanceof Date?K.createdAt.toISOString():String(K.createdAt)}))}}})});var iL1=j(()=>{lL1();dL1();pL1();cL1();nL1()});var aL1,AW,rL1,oL1;var Hq=j(()=>{b0();aL1=z.object({id:z.string().describe("Unique message ID"),threadId:z.string().describe("ID of the parent thread"),metadata:z.unknown().optional().describe("Optional message metadata"),parts:z.array(z.record(z.string(),z.unknown())).describe("Message content parts (AI SDK UIMessagePart format)"),role:z.enum(["user","assistant","system"]).describe("Message role"),createdAt:z.string().datetime().describe("Timestamp of creation"),updatedAt:z.string().datetime().describe("Timestamp of last update")}),AW=z.object({id:z.string().describe("Unique thread ID"),organizationId:z.string().describe("Organization this thread belongs to"),title:z.string().describe("Thread title"),description:z.string().nullable().describe("Thread description"),createdAt:z.string().datetime().describe("Timestamp of creation"),updatedAt:z.string().datetime().describe("Timestamp of last update"),hidden:z.boolean().optional().describe("Whether the thread is hidden"),createdBy:z.string().describe("User ID who created the thread"),updatedBy:z.string().nullable().describe("User ID who last updated the thread")}),rL1=z.object({id:z.string().optional().describe("Optional custom ID for the thread"),title:z.string().describe("Thread title"),description:z.string().nullish().describe("Thread description")}),oL1=z.object({title:z.string().optional().describe("New thread title"),description:z.string().nullish().describe("New thread description"),hidden:z.boolean().optional().describe("Whether the thread is hidden")})});var J54,G54,e70;var sL1=j(()=>{b0();k1();Hq();v5();J54=z.object({data:rL1.describe("Data for the new thread (id is auto-generated if not provided)")}),G54=z.object({item:AW.describe("The created thread entity")}),e70=f0({name:"COLLECTION_THREADS_CREATE",description:"Create a new thread in the organization",inputSchema:J54,outputSchema:G54,handler:async(Y,X)=>{g0(X);let Q=q1(X);await X.access.check();let J=g8(X);if(!J)throw Error("User ID required to create thread");let G=Y.data.id??y4("thrd"),K=await X.storage.threads.create({id:G,organizationId:Q.id,title:Y.data.title,description:Y.data.description,createdBy:J});return{item:{...K,hidden:K.hidden??!1}}}})});var W54,Z54,YW0;var tL1=j(()=>{_5();k1();Hq();b0();W54=ZK.extend({where:z.object({created_by:z.string().optional()}).optional()}),Z54=KK(AW),YW0=f0({name:"COLLECTION_THREADS_LIST",description:"List all threads in the organization with filtering, sorting, and pagination",inputSchema:W54,outputSchema:Z54,handler:async(Y,X)=>{await X.access.check();let Q=X.auth.user?.id;if(!Q)throw Error("User ID required to list threads");let J=q1(X),G=Y.offset??0,K=Y.limit??100,{threads:W,total:Z}=await X.storage.threads.list(J.id,Q,{limit:K,offset:G}),H=G+K<Z;return{items:W.map((F)=>({...F,hidden:F.hidden??!1})),totalCount:Z,hasMore:H}}})});var K54,XW0;var eL1=j(()=>{_5();k1();Hq();K54=M2(AW),XW0=f0({name:"COLLECTION_THREADS_GET",description:"Get thread details by ID",inputSchema:w2,outputSchema:K54,handler:async(Y,X)=>{g0(X);let Q=q1(X);await X.access.check();let J=await X.storage.threads.get(Y.id);if(!J||J.organizationId!==Q.id)return{item:null};return{item:{...J,hidden:J.hidden??!1}}}})});var H54,F54,QW0;var Yw1=j(()=>{b0();k1();Hq();H54=z.object({id:z.string().describe("ID of the thread to update"),data:oL1.describe("Partial thread data to update")}),F54=z.object({item:AW.describe("The updated thread entity")}),QW0=f0({name:"COLLECTION_THREADS_UPDATE",description:"Update an existing thread in the organization",inputSchema:H54,outputSchema:F54,handler:async(Y,X)=>{g0(X);let Q=q1(X);await X.access.check();let J=g8(X);if(!J)throw Error("User ID required to update thread");let{id:G,data:K}=Y,W=await X.storage.threads.get(G);if(!W||W.organizationId!==Q.id)throw Error("Thread not found in organization");let Z=await X.storage.threads.update(G,{title:K.title,description:K.description,hidden:K.hidden,updatedBy:J});return{item:{...Z,hidden:Z.hidden??!1}}}})});var JW0;var Xw1=j(()=>{_5();k1();Hq();JW0=f0({name:"COLLECTION_THREADS_DELETE",description:"Delete a thread",inputSchema:A2,outputSchema:P2(AW),handler:async(Y,X)=>{g0(X);let Q=q1(X);await X.access.check();let J=await X.storage.threads.get(Y.id);if(!J)throw Error(`Thread not found: ${Y.id}`);if(J.organizationId!==Q.id)throw Error(`Thread not found: ${Y.id}`);return await X.storage.threads.delete(Y.id),{item:{...J,hidden:J.hidden??!1}}}})});function Qw1(Y){if(!Y)return null;if("field"in Y&&Y.field[0]==="threadId"&&Y.operator==="eq")return String(Y.value);if("conditions"in Y)for(let X of Y.conditions){let Q=Qw1(X);if(Q)return Q}return null}var $54,GW0;var Jw1=j(()=>{_5();k1();Hq();$54=KK(aL1),GW0=f0({name:"COLLECTION_THREAD_MESSAGES_LIST",description:"List all messages for a specific thread",inputSchema:ZK,outputSchema:$54,handler:async(Y,X)=>{let Q=q1(X);await X.access.check();let J=Qw1(Y.where);if(!J)throw Error("threadId filter is required in where clause");let G=await X.storage.threads.get(J);if(!G||G.organizationId!==Q.id)return{items:[],totalCount:0,hasMore:!1};let K=Y.offset??0,W=Y.limit??100,{messages:Z,total:H}=await X.storage.threads.listMessages(J,{limit:W,offset:K}),F=K+W<H;return{items:Z,totalCount:H,hasMore:F}}})});var Gw1=j(()=>{sL1();tL1();eL1();Yw1();Xw1();Jw1()});var q54,z54,WW0;var Ww1=j(()=>{b0();k1();q54=z.object({id:z.string().min(1)}),z54=z.object({user:z.object({id:z.string(),name:z.string(),email:z.string(),image:z.string().nullable()}).nullable()}),WW0=f0({name:"USER_GET",description:"Get a user by id (restricted to shared organizations)",inputSchema:q54,outputSchema:z54,handler:async(Y,X)=>{await X.access.check(),g0(X);let Q=g8(X);if(!Q)throw Error("Authentication required");let J=await X.storage.users.findById(Y.id,Q);if(!J)return{user:null};return{user:{id:J.id,name:J.name,email:J.email,image:J.image??null}}}})});var Zw1=j(()=>{Ww1()});var Hw1={};l1(Hw1,{managementMCP:()=>ZW0,ALL_TOOLS:()=>Kw1});var U54,D54,Kw1,ZW0=async(Y)=>{let X=null;if(Y.organization)X=(await Y.storage.organizationSettings.get(Y.organization.id))?.enabled_plugins??null;let Q=ND1(Kw1,X),J=new Ow({name:"mcp-mesh-management",version:"1.0.0"},{capabilities:{tools:{}}});for(let G of Q){let K=G.inputSchema&&typeof G.inputSchema==="object"&&"shape"in G.inputSchema?G.inputSchema:z.object({}),W=G.outputSchema&&typeof G.outputSchema==="object"&&"shape"in G.outputSchema?G.outputSchema:void 0,Z=K.shape,H=W?.shape;J.registerTool(G.name,{description:G.description??"",inputSchema:Z,outputSchema:H},async(F)=>{Y.access.setToolName(G.name);try{let $=await G.execute(F,Y);return{content:[{type:"text",text:JSON.stringify($)}],structuredContent:$}}catch($){return{content:[{type:"text",text:`Error: ${$.message}`}],isError:!0}}})}return J};var KW0=j(()=>{Wu();Sa();b0();hD1();CO1();cN1();rN1();WL1();VL1();OL1();wL1();vL1();mL1();iL1();Gw1();Zw1();U54=[j70,S70,k70,v70,_70,f70,h70,b70,x70,u70,g70,hG0,lG0,dG0,Z70,K70,H70,D70,N70,L70,w70,M70,A70,P70,T70,E70,C70,aN1,I70,R70,$G0,qG0,zG0,VG0,F70,$70,V70,q70,z70,B70,U70,WW0,_G0,yG0,fG0,e70,YW0,XW0,QW0,JW0,GW0,a70,r70,o70,s70,t70,m70,l70,d70,p70,c70,n70,i70],D54=LD1(),Kw1=[...U54,...D54]});function O54(Y){return[{permissions:{self:["*"]},getTools:async()=>{let{ALL_TOOLS:X}=await Promise.resolve().then(() => (KW0(),Hw1));return X.map((Q)=>{return{name:Q.name,inputSchema:z.toJSONSchema(Q.inputSchema,{unrepresentable:"any"}),outputSchema:Q.outputSchema?z.toJSONSchema(Q.outputSchema,{unrepresentable:"any"}):void 0,description:Q.description}})},data:Ua(NJ(),Y)},{data:Ba()},{data:za(Y)}]}async function Fw1(Y,X){try{let Q=aV(),J=new rV(process.env.ENCRYPTION_KEY||""),G=new X2(Q.db,J),K=new Q2(Q.db),W=O54(Y);try{await K.create({organizationId:Y,slug:x5,name:Iq,description:"Organization administration and settings",enabledPlugins:null,ui:null})}catch(Z){console.warn("Could not create org-admin project (may already exist):",Z)}await Promise.all(W.map(async(Z)=>{let H=null;if(Z.permissions)H=(await fG.api.createApiKey({body:{name:`${Z.data.app_name??crypto.randomUUID()}-mcp`,userId:X,permissions:Z.permissions,rateLimitEnabled:!1,metadata:{organization:{id:Y},purpose:"default-org-connections"}}}))?.key;let F=await Z.getTools?.()??await QO({id:"pending",title:Z.data.title,connection_type:Z.data.connection_type,connection_url:Z.data.connection_url,connection_token:Z.data.connection_token,connection_headers:Z.data.connection_headers}).catch(()=>null),$=Z.data.id?Z.data.id.startsWith(`${Y}_`)?Z.data.id:`${Y}_${Z.data.id}`:void 0;await G.create({...Z.data,id:$,tools:F,organization_id:Y,created_by:X,connection_token:Z.data.connection_token??H})}))}catch(Q){console.error("Error creating default MCP connections:",Q)}}var $w1=j(()=>{RY();eT();rx();S50();k50();Xu();b0();qO()});var HW0,Su;var ku=j(()=>{HW0=["owner","admin","user"],Su=["owner","admin"]});var N54=(Y)=>{return{defaultSSO:[{domain:Y.domain,providerId:Y.providerId,oidcConfig:{issuer:`https://login.microsoftonline.com/${Y.MS_TENANT_ID}/v2.0`,pkce:!0,clientId:Y.MS_CLIENT_ID,clientSecret:Y.MS_CLIENT_SECRET,discoveryEndpoint:`https://login.microsoftonline.com/${Y.MS_TENANT_ID}/v2.0/.well-known/openid-configuration`,authorizationEndpoint:`https://login.microsoftonline.com/${Y.MS_TENANT_ID}/oauth2/v2.0/authorize`,tokenEndpoint:`https://login.microsoftonline.com/${Y.MS_TENANT_ID}/oauth2/v2.0/token`,jwksEndpoint:`https://login.microsoftonline.com/${Y.MS_TENANT_ID}/discovery/v2.0/keys`,userInfoEndpoint:"https://graph.microsoft.com/oidc/userinfo",tokenEndpointAuthentication:"client_secret_post",scopes:Y.scopes,mapping:{id:"sub",email:"email",emailVerified:"email_verified",name:"name",image:"picture",extraFields:{emailVerified:"email_verified"}}}}]}},Vw1=(Y)=>{if(Y.providerId==="microsoft")return N54(Y);throw Error(`Unsupported provider: ${Y.providerId}`)};function L54(Y){return Y.toLowerCase().trim().replace(/[^a-z0-9\s_-]+/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}function w54(){let Y=Math.floor(Math.random()*zw1.length),X=Math.floor(Math.random()*qw1.length),Q=zw1[Y]??"deco",J=qw1[X]??"studio";return`${Q}-${J}`}var qw1,zw1,M54,A54,vu,P54,T54,E54,Bw1,O9,Uw1=void 0,C54,I54,R54,fG;var qO=j(()=>{Fo();pI0();Sj0();se();w10();AS0();cy();SS0();eT();j50();MB1();$w1();ku();qw1=["labs","agent","studio","workspace","systems","core","cloud","works"],zw1=["capybara","guarana","deco","samba","feijoada","capoeira","carnival"];M54=Object.values(rw()).map((Y)=>Y.map((X)=>X.name)).flat(),A54={...jy,self:["*",...M54]},vu=a7(A54),P54=vu.newRole({self:["*"],...IA.statements}),T54=vu.newRole({self:["*"],...IA.statements}),E54=vu.newRole({self:["*"],...IA.statements}),Bw1=Object.values(rw()).map((Y)=>Y.map((X)=>`self:${X.name}`)).flat(),O9=hA.auth;if(O9.inviteEmailProviderId&&O9.emailProviders&&O9.emailProviders.length>0){let Y=ax(O9.emailProviders,O9.inviteEmailProviderId);if(Y){let X=ix(Y);Uw1=async(Q)=>{let J=Q.inviter.user?.name||Q.inviter.user?.email,G=`${NJ()}/auth/accept-invitation?invitationId=${Q.invitation.id}&redirectTo=/`;await X({to:Q.email,subject:`Invitation to join ${Q.organization.name}`,html:`
|
|
1192
1192
|
<h2>You've been invited!</h2>
|
package/dist/server/server.js
CHANGED
|
@@ -1036,7 +1036,7 @@ ${X.stack}`;return G}}catch{}if(typeof X.toString==="function")try{let G=X.toStr
|
|
|
1036
1036
|
const args = ${JSON.stringify(X)};
|
|
1037
1037
|
return await __virtualToolFn(tools, args);
|
|
1038
1038
|
};
|
|
1039
|
-
`,F=await X2({code:H,tools:W,timeoutMs:30000});if(F.error)return{content:[{type:"text",text:`Virtual tool error: ${F.error}`}],isError:!0};return{content:[{type:"text",text:JSON.stringify(F.returnValue??null)}]}}catch(Z){return{content:[{type:"text",text:`Virtual tool execution failed: ${Z instanceof Error?Z.message:String(Z)}`}],isError:!0}}}async listResources(){return{resources:(await this._cachedResources).data}}async readResource(Y){let[X,Q]=await Promise.all([this._cachedResources,this._clients]),J=X.mappings.get(Y.uri);if(!J)throw Error(`Resource not found: ${Y.uri}`);let G=Q.get(J);if(!G)throw Error(`Connection not found for resource: ${Y.uri}`);return await G.readResource(Y)}async listPrompts(){return{prompts:(await this._cachedPrompts).data}}async getPrompt(Y){let[X,Q]=await Promise.all([this._cachedPrompts,this._clients]),J=X.mappings.get(Y.name);if(!J)throw Error(`Prompt not found: ${Y.name}`);let G=Q.get(J);if(!G)throw Error(`Connection not found for prompt: ${Y.name}`);return await G.getPrompt(Y)}async callStreamableTool(Y,X){let[Q,J]=await Promise.all([this._cachedTools,this._clients]),G=Q.mappings.get(Y);if(G){let W=J.get(G);if(W&&"callStreamableTool"in W)return W.callStreamableTool(Y,X)}let K=await this.callTool({name:Y,arguments:X});return new Response(JSON.stringify(K),{headers:{"Content-Type":"application/json"}})}async[Symbol.asyncDispose](){let Y=await this._clients;if(Y)await GO1(Y)}async close(){let Y=await this._clients;if(Y)await GO1(Y);await super.close()}getInstructions(){return this.options.virtualMcp.metadata?.instructions??void 0}}});var WO1,K94,ZO1,H94,k2;var i50=v(()=>{h0();rV();n50();WO1=B.object({query:B.string().min(1).describe("Search query to find tools by name or description"),limit:B.number().default(10).describe("Maximum number of results to return")}),K94=B.toJSONSchema(WO1),ZO1=B.object({tools:B.array(B.string()).min(1).describe("Array of tool names to get detailed schemas for")}),H94=B.toJSONSchema(ZO1);k2=class k2 extends JO{constructor(Y,X){super(Y,X)}getSearchTool(Y){return{name:"GATEWAY_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 GATEWAY_DESCRIBE_TOOLS for detailed schemas. Total tools: ${Y}.`,inputSchema:K94}}getDescribeTool(){return{name:"GATEWAY_DESCRIBE_TOOLS",description:"Get detailed schemas for specific tools. Call after GATEWAY_SEARCH_TOOLS to get full input/output schemas.",inputSchema:H94}}async handleSearch(Y){let X=WO1.safeParse(Y);if(!X.success)return v3({error:X.error.flatten()});let Q=await this._cachedTools,J=rZ(Q.data),G=nx(X.data.query,J,X.data.limit);return Q2({query:X.data.query,results:G.map((K)=>({name:K.name,description:K.description,connection:K._meta.connectionTitle})),totalAvailable:J.length})}async handleDescribe(Y){let X=ZO1.safeParse(Y);if(!X.success)return v3({error:X.error.flatten()});let Q=await this._cachedTools,J=rZ(Q.data),G=ix(X.data.tools,J);return Q2({tools:G.tools,notFound:G.notFound})}async listTools(){let Y=await this._cachedTools,X=rZ(Y.data);return{tools:[this.getSearchTool(X.length),this.getDescribeTool()]}}async callTool(Y){if(Y.name==="GATEWAY_SEARCH_TOOLS")return this.handleSearch(Y.arguments??{});if(Y.name==="GATEWAY_DESCRIBE_TOOLS")return this.handleDescribe(Y.arguments??{});return{content:[{type:"text",text:`Unknown tool: ${Y.name}. Available: GATEWAY_SEARCH_TOOLS, GATEWAY_DESCRIBE_TOOLS`}],isError:!0}}async routeToolCall(Y){return JO.prototype.callTool.call(this,Y)}}});var KO1,F94,a50;var HO1=v(()=>{h0();rV();i50();KO1=B.object({code:B.string().min(1).describe("JavaScript code to execute. It runs as an async function body; you can use top-level `return` and `await`."),timeoutMs:B.number().default(3000).describe("Max execution time in milliseconds (default: 3000).")}),F94=B.toJSONSchema(KO1);a50=class a50 extends k2{constructor(Y,X){super(Y,X)}getRunCodeTool(){return{name:"GATEWAY_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 GATEWAY_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:F94}}async handleRunCode(Y){let X=KO1.safeParse(Y);if(!X.success)return v3({error:X.error.flatten()});let Q=await this._cachedTools,G={tools:rZ(Q.data),callTool:async(W,Z)=>{return this.routeToolCall({name:W,arguments:Z})}},K=await ax(X.data.code,G,X.data.timeoutMs);if(K.error)return v3(K);return Q2(K)}async listTools(){return{tools:[...(await super.listTools()).tools,this.getRunCodeTool()]}}async callTool(Y){if(Y.name==="GATEWAY_RUN_CODE")return this.handleRunCode(Y.arguments??{});return super.callTool(Y)}}});function $O1(Y){let X=Y.slice().sort().join(","),Q=FO1.get(X);if(!Q){let J=B.object({name:(Y.length>0?B.enum(Y):B.string()).describe("The name of the tool to execute"),arguments:B.record(B.string(),B.unknown()).default({}).describe("Arguments to pass to the tool")});Q={schema:J,jsonSchema:B.toJSONSchema(J)},FO1.set(X,Q)}return Q}var FO1,r50;var VO1=v(()=>{h0();rV();i50();FO1=new Map;r50=class r50 extends k2{constructor(Y,X){super(Y,X)}async getCallTool(){let Y=await this._cachedTools,Q=rZ(Y.data).map((G)=>G.name),{jsonSchema:J}=$O1(Q);return{name:"GATEWAY_CALL_TOOL",description:"Execute a tool by name. Use GATEWAY_DESCRIBE_TOOLS first to understand the input schema.",inputSchema:J}}async handleCallTool(Y){let X=await this._cachedTools,Q=rZ(X.data),J=Q.map((F)=>F.name),{schema:G}=$O1(J),K=G.safeParse(Y);if(!K.success)return v3({error:K.error.flatten()});let{name:W,arguments:Z}=K.data;if(!new Map(Q.map((F)=>[F.name,F])).has(W))return{content:[{type:"text",text:`Tool not found: ${W}. Use GATEWAY_SEARCH_TOOLS to find available tools.`}],isError:!0};return this.routeToolCall({name:W,arguments:Z})}async listTools(){let Y=await super.listTools(),X=await this.getCallTool();return{tools:[...Y.tools,X]}}async callTool(Y){if(Y.name==="GATEWAY_CALL_TOOL")return this.handleCallTool(Y.arguments??{});return super.callTool(Y)}}});function o50(Y){switch(Y){case"smart_tool_selection":return"smart_tool_selection";case"code_execution":return"code_execution";case"passthrough":default:return"passthrough"}}function $94(Y,X){if(Y.connection_type!=="VIRTUAL")return!1;if(!X||CH(X))return!1;return Y.id===X}async function qO1(Y,X){let Q=Y.id,J=await X.storage.virtualMcps.findById(Q);if(!J)throw Error(`Virtual MCP not found: ${Q}`);return v2(J,X,"passthrough")}async function v2(Y,X,Q){let G=Y.connections.map(($)=>$.connection_id).map(($)=>X.storage.connections.findById($)),K=Y.id?await X.storage.connections.findById(Y.id):null,W=await Promise.all(G),Z=[];if(K?.tools){for(let $ of K.tools)if(y3($))Z.push($)}let F={connections:W.filter(($)=>$!==null&&$.status==="active"&&!$94($,Y.id)),virtualMcp:Y,virtualTools:Z.length>0?Z:void 0};return Q==="smart_tool_selection"?new r50(F,X):Q==="code_execution"?new a50(F,X):new JO(F,X)}var Hu=v(()=>{YX();XK();HO1();n50();VO1()});async function XQ(Y,X,Q=!1){if(Y.connection_type==="VIRTUAL")return qO1(Y,X);return tD1(Y,X,Q)}var s50=v(()=>{eD1();Hu()});async function t50(Y,X,Q){let J=await XQ(Y,X,Q),G=k$(J,{name:"mcp-mesh-enhanced",version:"1.0.0"},{capabilities:V94,instructions:J.getInstructions()});return G.server.setRequestHandler(qH,async()=>{return await J.listResources().catch(sV({resources:[]}))}),G.server.setRequestHandler(BH,async()=>{return await J.listResourceTemplates().catch(sV({resourceTemplates:[]}))}),G.server.setRequestHandler(zH,async()=>{return await J.listPrompts().catch(sV({prompts:[]}))}),G}var V94;var BO1=v(()=>{YX();v9();s50();c50();V94={tools:{},resources:{},prompts:{}}});function e50(Y,X){let Q=Y.listTools.bind(Y);return{...Y,listTools:async()=>{if(X.connection_type!=="VIRTUAL"&&X.tools&&X.tools.length>0)return{tools:X.tools.map((K)=>({name:K.name,description:K.description,inputSchema:K.inputSchema,outputSchema:K.outputSchema,annotations:K.annotations,_meta:K._meta}))};return await Q()}}}function q94(Y,X,Q){return async(J,G)=>{try{let K=J.params.name,W=async()=>{let{tools:H}=await Q();return H.find(($)=>$.name===K)?._meta};return await new YK(Y.authInstance,Y.auth.user?.id??Y.auth.apiKey?.userId,K,Y.boundAuth,Y.auth.user?.role,X,W).check(K),await G()}catch(K){return new Response(JSON.stringify({error:`Authorization failed: ${K.message}`}),{status:403,headers:{"Content-Type":"application/json"}})}}}function _2(Y,X,Q,J,G){let K=async(Z,H)=>{if(Q.connection_type==="VIRTUAL"){let L=await Y.callTool({name:Z,arguments:H});return new Response(JSON.stringify(L),{headers:{"Content-Type":"application/json"}})}if(!Q.connection_url)throw Error("Streamable tools require HTTP connection with URL");let F=Q.connection_url,$={method:"tools/call",params:{name:Z,arguments:H}};if(!G.superUser){let w=await q94(J,X,Y.listTools.bind(Y))($,async()=>{return new Response});if(!w.ok)return w}let V=await C2(Q,J,G.superUser),q=Q.connection_headers;if(q&&"headers"in q)Object.assign(V,q.headers);let z=new URL(F);z.pathname=z.pathname.replace(/\/$/,"")+`/call-tool/${$.params.name}`;let D=JSON.parse(JSON.stringify($.params.arguments,(L,w)=>{if(w instanceof AbortSignal)return;if(typeof w==="function"||typeof w==="symbol")return;if(w===void 0)return;return w})),O=JSON.stringify(D);return await J.tracer.startActiveSpan("mcp.proxy.callStreamableTool",{attributes:{"connection.id":X,"tool.name":$.params.name,"request.id":J.metadata.requestId}},async(L)=>{let w=Date.now();try{let I=await fetch(z.toString(),{method:"POST",redirect:"manual",body:O,headers:{...V,"Content-Type":"application/json"}}),A=Date.now()-w;return J.meter.createHistogram("connection.proxy.streamable.duration").record(A,{"connection.id":X,"tool.name":$.params.name,status:I.ok?"success":"error"}),J.meter.createCounter("connection.proxy.streamable.requests").add(1,{"connection.id":X,"tool.name":$.params.name,status:I.ok?"success":"error"}),L.end(),I}catch(I){let A=I,T=Date.now()-w;throw console.error("[with-streaming-support] fetch error",{connectionId:X,toolName:$.params.name,error:A.message,errorStack:A.stack,duration:T}),J.meter.createHistogram("connection.proxy.streamable.duration").record(T,{"connection.id":X,"tool.name":$.params.name,status:"error"}),J.meter.createCounter("connection.proxy.streamable.errors").add(1,{"connection.id":X,"tool.name":$.params.name,error:A.message}),L.recordException(A),L.end(),I}})},W=Object.assign(Object.create(Object.getPrototypeOf(Y)),Y);return W.callStreamableTool=K,W}var zO1=v(()=>{m50();j2()});var UO1=v(()=>{zO1()});var GO=v(()=>{s50();BO1();UO1()});async function U94(Y,X,Q,J){for(let K of X){if(K==="*")continue;let[W]=yD1(K),Z=Wu(W,Y);if(Z===void 0||Z===null)throw Error(`Scope references key "${W}" but it's not present in state`)}let G=fD1(Y,X);for(let K of G){if(K.endsWith("_self"))continue;let W=await J.storage.connections.findById(K);if(!W||W.organization_id!==Q)throw Error(`Referenced connection not found: ${K}`);try{await J.access.check(K)}catch(Z){throw Error(`Access denied to referenced connection: ${K}. ${Z.message}`)}}}var B94,z94,YG0;var DO1=v(()=>{u50();GO();Zu();h0();k1();bx();cZ();B94=B.object({id:B.string().describe("ID of the connection to update"),data:XA.describe("Partial connection data to update")}),z94=B.object({item:yX.describe("The updated connection entity")});YG0=y0({name:"COLLECTION_CONNECTIONS_UPDATE",description:"Update an existing MCP connection in the organization",inputSchema:B94,outputSchema:z94,handler:async(Y,X)=>{u0(X);let Q=q1(X);await X.access.check();let J=b8(X);if(!J)throw Error("User ID required to update connection");let{id:G,data:K}=Y,W=await X.storage.connections.findById(G);if(!W||W.organization_id!==Q.id)throw Error("Connection not found in organization");let Z=K.connection_type??W.connection_type,H=K.connection_url??W.connection_url;if(Z==="VIRTUAL"){let L=j$(H);if(!L)throw Error("VIRTUAL connection requires connection_url in format: virtual://$virtual_mcp_id");let w=await X.storage.virtualMcps.findById(L);if(!w)throw Error(`Virtual MCP not found: ${L}`);if(w.organization_id!==Q.id)throw Error("Virtual MCP does not belong to the current organization");H=S$(L)}let F=K.configuration_state??W.configuration_state??{},$=K.configuration_scopes??W.configuration_scopes??[];if(K.configuration_state!==void 0||K.configuration_scopes!==void 0){if(K.configuration_state!==void 0)F=K.configuration_state??{};else if(F===null||F===void 0)F={};if(K.configuration_scopes!==void 0)$=K.configuration_scopes??[];if($.length>0)await U94(F,$,Q.id,X)}let V=K.connection_token??W.connection_token;if(!V)try{let w=await new eZ(X.db,X.vault).get(G);if(w?.accessToken)V=w.accessToken}catch{}let q=await cD({id:W.id,title:K.title??W.title,connection_type:Z,connection_url:H,connection_token:V,connection_headers:K.connection_headers??W.connection_headers}).catch(()=>null),z=q?.length?q:null,D={...K,connection_url:H,tools:z,configuration_state:F,configuration_scopes:$,updated_by:J},O=await X.storage.connections.update(G,D);if((K.configuration_state!==void 0||K.configuration_scopes!==void 0)&&F&&$)try{await(await XQ(O,X,!1)).callTool({name:"ON_MCP_CONFIGURATION",arguments:{state:F,scopes:$}})}catch(L){console.error("Failed to invoke ON_MCP_CONFIGURATION callback",L)}return{item:O}}})});var XG0;var OO1=v(()=>{j5();k1();cZ();XG0=y0({name:"COLLECTION_CONNECTIONS_DELETE",description:"Delete a connection",inputSchema:K2,outputSchema:H2(yX),handler:async(Y,X)=>{u0(X);let Q=q1(X);await X.access.check();let J=await X.storage.connections.findById(Y.id);if(!J)throw Error(`Connection not found: ${Y.id}`);if(J.organization_id!==Q.id)throw Error("Connection not found in organization");if(J.metadata?.isFixed===!0)throw Error("This connection is a fixed system connection and cannot be deleted");return await X.storage.connections.delete(Y.id),{item:J}}})});var QG0;var NO1=v(()=>{h0();k1();QG0=y0({name:"CONNECTION_TEST",description:"Test connection health and latency",inputSchema:B.object({id:B.string()}),outputSchema:B.object({id:B.string(),healthy:B.boolean(),latencyMs:B.number()}),handler:async(Y,X)=>{let Q=q1(X);await X.access.check();let J=await X.storage.connections.findById(Y.id);if(!J||J.organization_id!==Q.id)throw Error("Connection not found");let G=await X.storage.connections.testConnection(Y.id);return{id:Y.id,...G}}})});var LO1=v(()=>{XD1();vD1();_D1();DO1();OO1();NO1()});import{sql as H4}from"kysely";function wO1(Y){if(Y===null||Y===void 0)return"NULL";if(typeof Y==="number")return String(Y);if(typeof Y==="boolean")return Y?"TRUE":"FALSE";if(typeof Y==="string")return`'${Y.replace(/'/g,"''")}'`;if(Y instanceof Date)return`'${Y.toISOString()}'`;return`'${JSON.stringify(Y).replace(/'/g,"''")}'`}function N94(Y,X){let Q=Y;for(let G=X.length;G>=1;G--){let K=`$${G}`;if(Q.includes(K))Q=Q.replaceAll(K,wO1(X[G-1]))}let J=[];for(let G=0;G<Q.length;G++)if(Q[G]==="?")J.push(G);for(let G=Math.min(J.length,X.length)-1;G>=0;G--){let K=J[G],W=wO1(X[G]);Q=Q.slice(0,K)+W+Q.slice(K+1)}return Q}function MO1(Y){return Y.replace(/-/g,"_")}function w94(Y){return`app_${MO1(Y)}`}function M94(Y){return`app_role_${MO1(Y)}`}function A94(Y){if(Y instanceof Error){let X=Y.message.toLowerCase(),Q=Y.code;return Q==="3F000"||Q==="42704"||Q==="22023"||X.includes("schema")&&X.includes("does not exist")||X.includes("role")&&X.includes("does not exist")}return!1}async function P94(Y,X,Q){if(await H4`CREATE SCHEMA IF NOT EXISTS ${H4.id(X)}`.execute(Y),!(await H4`
|
|
1039
|
+
`,F=await X2({code:H,tools:W,timeoutMs:30000});if(F.error)return{content:[{type:"text",text:`Virtual tool error: ${F.error}`}],isError:!0};return{content:[{type:"text",text:JSON.stringify(F.returnValue??null)}]}}catch(Z){return{content:[{type:"text",text:`Virtual tool execution failed: ${Z instanceof Error?Z.message:String(Z)}`}],isError:!0}}}async listResources(){return{resources:(await this._cachedResources).data}}async readResource(Y){let[X,Q]=await Promise.all([this._cachedResources,this._clients]),J=X.mappings.get(Y.uri);if(!J)throw Error(`Resource not found: ${Y.uri}`);let G=Q.get(J);if(!G)throw Error(`Connection not found for resource: ${Y.uri}`);return await G.readResource(Y)}async listPrompts(){return{prompts:(await this._cachedPrompts).data}}async getPrompt(Y){let[X,Q]=await Promise.all([this._cachedPrompts,this._clients]),J=X.mappings.get(Y.name);if(!J)throw Error(`Prompt not found: ${Y.name}`);let G=Q.get(J);if(!G)throw Error(`Connection not found for prompt: ${Y.name}`);return await G.getPrompt(Y)}async callStreamableTool(Y,X){let[Q,J]=await Promise.all([this._cachedTools,this._clients]),G=Q.mappings.get(Y);if(G){let W=J.get(G);if(W&&"callStreamableTool"in W)return W.callStreamableTool(Y,X)}let K=await this.callTool({name:Y,arguments:X});return new Response(JSON.stringify(K),{headers:{"Content-Type":"application/json"}})}async[Symbol.asyncDispose](){let Y=await this._clients;if(Y)await GO1(Y)}async close(){let Y=await this._clients;if(Y)await GO1(Y);await super.close()}getInstructions(){return this.options.virtualMcp.metadata?.instructions??void 0}}});var WO1,K94,ZO1,H94,k2;var i50=v(()=>{h0();rV();n50();WO1=B.object({query:B.string().min(1).describe("Search query to find tools by name or description"),limit:B.number().default(10).describe("Maximum number of results to return")}),K94=B.toJSONSchema(WO1),ZO1=B.object({tools:B.array(B.string()).min(1).describe("Array of tool names to get detailed schemas for")}),H94=B.toJSONSchema(ZO1);k2=class k2 extends JO{constructor(Y,X){super(Y,X)}getSearchTool(Y){return{name:"GATEWAY_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 GATEWAY_DESCRIBE_TOOLS for detailed schemas. Total tools: ${Y}.`,inputSchema:K94}}getDescribeTool(){return{name:"GATEWAY_DESCRIBE_TOOLS",description:"Get detailed schemas for specific tools. Call after GATEWAY_SEARCH_TOOLS to get full input/output schemas.",inputSchema:H94}}async handleSearch(Y){let X=WO1.safeParse(Y);if(!X.success)return v3({error:X.error.flatten()});let Q=await this._cachedTools,J=rZ(Q.data),G=nx(X.data.query,J,X.data.limit);return Q2({query:X.data.query,results:G.map((K)=>({name:K.name,description:K.description,connection:K._meta.connectionTitle})),totalAvailable:J.length})}async handleDescribe(Y){let X=ZO1.safeParse(Y);if(!X.success)return v3({error:X.error.flatten()});let Q=await this._cachedTools,J=rZ(Q.data),G=ix(X.data.tools,J);return Q2({tools:G.tools,notFound:G.notFound})}async listTools(){let Y=await this._cachedTools,X=rZ(Y.data);return{tools:[this.getSearchTool(X.length),this.getDescribeTool()]}}async callTool(Y){if(Y.name==="GATEWAY_SEARCH_TOOLS")return this.handleSearch(Y.arguments??{});if(Y.name==="GATEWAY_DESCRIBE_TOOLS")return this.handleDescribe(Y.arguments??{});return{content:[{type:"text",text:`Unknown tool: ${Y.name}. Available: GATEWAY_SEARCH_TOOLS, GATEWAY_DESCRIBE_TOOLS`}],isError:!0}}async routeToolCall(Y){return JO.prototype.callTool.call(this,Y)}}});var KO1,F94,a50;var HO1=v(()=>{h0();rV();i50();KO1=B.object({code:B.string().min(1).describe("JavaScript code to execute. It runs as an async function body; you can use top-level `return` and `await`."),timeoutMs:B.number().default(3000).describe("Max execution time in milliseconds (default: 3000).")}),F94=B.toJSONSchema(KO1);a50=class a50 extends k2{constructor(Y,X){super(Y,X)}getRunCodeTool(){return{name:"GATEWAY_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 GATEWAY_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:F94}}async handleRunCode(Y){let X=KO1.safeParse(Y);if(!X.success)return v3({error:X.error.flatten()});let Q=await this._cachedTools,G={tools:rZ(Q.data),callTool:async(W,Z)=>{return this.routeToolCall({name:W,arguments:Z})}},K=await ax(X.data.code,G,X.data.timeoutMs);if(K.error)return v3(K);return Q2(K)}async listTools(){return{tools:[...(await super.listTools()).tools,this.getRunCodeTool()]}}async callTool(Y){if(Y.name==="GATEWAY_RUN_CODE")return this.handleRunCode(Y.arguments??{});return super.callTool(Y)}}});function $O1(Y){let X=Y.slice().sort().join(","),Q=FO1.get(X);if(!Q){let J=B.object({name:(Y.length>0?B.enum(Y):B.string()).describe("The name of the tool to execute"),arguments:B.record(B.string(),B.unknown()).default({}).describe("Arguments to pass to the tool")});Q={schema:J,jsonSchema:B.toJSONSchema(J)},FO1.set(X,Q)}return Q}var FO1,r50;var VO1=v(()=>{h0();rV();i50();FO1=new Map;r50=class r50 extends k2{constructor(Y,X){super(Y,X)}async getCallTool(){let Y=await this._cachedTools,Q=rZ(Y.data).map((G)=>G.name),{jsonSchema:J}=$O1(Q);return{name:"GATEWAY_CALL_TOOL",description:"Execute a tool by name. Use GATEWAY_DESCRIBE_TOOLS first to understand the input schema.",inputSchema:J}}async handleCallTool(Y){let X=await this._cachedTools,Q=rZ(X.data),J=Q.map((F)=>F.name),{schema:G}=$O1(J),K=G.safeParse(Y);if(!K.success)return v3({error:K.error.flatten()});let{name:W,arguments:Z}=K.data;if(!new Map(Q.map((F)=>[F.name,F])).has(W))return{content:[{type:"text",text:`Tool not found: ${W}. Use GATEWAY_SEARCH_TOOLS to find available tools.`}],isError:!0};return this.routeToolCall({name:W,arguments:Z})}async listTools(){let Y=await super.listTools(),X=await this.getCallTool();return{tools:[...Y.tools,X]}}async callTool(Y){if(Y.name==="GATEWAY_CALL_TOOL")return this.handleCallTool(Y.arguments??{});return super.callTool(Y)}}});function o50(Y){switch(Y){case"smart_tool_selection":return"smart_tool_selection";case"code_execution":return"code_execution";case"passthrough":default:return"passthrough"}}function $94(Y,X){if(Y.connection_type!=="VIRTUAL")return!1;if(!X||CH(X))return!1;return Y.id===X}async function qO1(Y,X){let Q=Y.id,J=await X.storage.virtualMcps.findById(Q);if(!J)throw Error(`Virtual MCP not found: ${Q}`);return v2(J,X,"passthrough")}async function v2(Y,X,Q){let G=Y.connections.map(($)=>$.connection_id).map(($)=>X.storage.connections.findById($)),K=Y.id?await X.storage.connections.findById(Y.id):null,W=await Promise.all(G),Z=[];if(K?.tools){for(let $ of K.tools)if(y3($))Z.push($)}let F={connections:W.filter(($)=>$!==null&&$.status==="active"&&!$94($,Y.id)),virtualMcp:Y,virtualTools:Z.length>0?Z:void 0};return Q==="smart_tool_selection"?new r50(F,X):Q==="code_execution"?new a50(F,X):new JO(F,X)}var Hu=v(()=>{YX();XK();HO1();n50();VO1()});async function XQ(Y,X,Q=!1){if(Y.connection_type==="VIRTUAL")return qO1(Y,X);return tD1(Y,X,Q)}var s50=v(()=>{eD1();Hu()});async function t50(Y,X,Q){let J=await XQ(Y,X,Q),G=k$(J,{name:"mcp-mesh-enhanced",version:"1.0.0"},{capabilities:V94,instructions:J.getInstructions()});return G.server.setRequestHandler(qH,async()=>{return await J.listResources().catch(sV({resources:[]}))}),G.server.setRequestHandler(BH,async()=>{return await J.listResourceTemplates().catch(sV({resourceTemplates:[]}))}),G.server.setRequestHandler(zH,async()=>{return await J.listPrompts().catch(sV({prompts:[]}))}),G}var V94;var BO1=v(()=>{YX();v9();s50();c50();V94={tools:{},resources:{},prompts:{}}});function e50(Y,X){let Q=Y.listTools.bind(Y),J=async()=>{if(X.connection_type!=="VIRTUAL"&&X.tools&&X.tools.length>0)return{tools:X.tools.map((K)=>({name:K.name,description:K.description,inputSchema:K.inputSchema,outputSchema:K.outputSchema,annotations:K.annotations,_meta:K._meta}))};return await Q()};return Y.listTools=J,Y}function q94(Y,X,Q){return async(J,G)=>{try{let K=J.params.name,W=async()=>{let{tools:H}=await Q();return H.find(($)=>$.name===K)?._meta};return await new YK(Y.authInstance,Y.auth.user?.id??Y.auth.apiKey?.userId,K,Y.boundAuth,Y.auth.user?.role,X,W).check(K),await G()}catch(K){return new Response(JSON.stringify({error:`Authorization failed: ${K.message}`}),{status:403,headers:{"Content-Type":"application/json"}})}}}function _2(Y,X,Q,J,G){let K=async(Z,H)=>{if(Q.connection_type==="VIRTUAL"){let L=await Y.callTool({name:Z,arguments:H});return new Response(JSON.stringify(L),{headers:{"Content-Type":"application/json"}})}if(!Q.connection_url)throw Error("Streamable tools require HTTP connection with URL");let F=Q.connection_url,$={method:"tools/call",params:{name:Z,arguments:H}};if(!G.superUser){let w=await q94(J,X,Y.listTools.bind(Y))($,async()=>{return new Response});if(!w.ok)return w}let V=await C2(Q,J,G.superUser),q=Q.connection_headers;if(q&&"headers"in q)Object.assign(V,q.headers);let z=new URL(F);z.pathname=z.pathname.replace(/\/$/,"")+`/call-tool/${$.params.name}`;let D=JSON.parse(JSON.stringify($.params.arguments,(L,w)=>{if(w instanceof AbortSignal)return;if(typeof w==="function"||typeof w==="symbol")return;if(w===void 0)return;return w})),O=JSON.stringify(D);return await J.tracer.startActiveSpan("mcp.proxy.callStreamableTool",{attributes:{"connection.id":X,"tool.name":$.params.name,"request.id":J.metadata.requestId}},async(L)=>{let w=Date.now();try{let I=await fetch(z.toString(),{method:"POST",redirect:"manual",body:O,headers:{...V,"Content-Type":"application/json"}}),A=Date.now()-w;return J.meter.createHistogram("connection.proxy.streamable.duration").record(A,{"connection.id":X,"tool.name":$.params.name,status:I.ok?"success":"error"}),J.meter.createCounter("connection.proxy.streamable.requests").add(1,{"connection.id":X,"tool.name":$.params.name,status:I.ok?"success":"error"}),L.end(),I}catch(I){let A=I,T=Date.now()-w;throw console.error("[with-streaming-support] fetch error",{connectionId:X,toolName:$.params.name,error:A.message,errorStack:A.stack,duration:T}),J.meter.createHistogram("connection.proxy.streamable.duration").record(T,{"connection.id":X,"tool.name":$.params.name,status:"error"}),J.meter.createCounter("connection.proxy.streamable.errors").add(1,{"connection.id":X,"tool.name":$.params.name,error:A.message}),L.recordException(A),L.end(),I}})},W=Object.assign(Object.create(Object.getPrototypeOf(Y)),Y);return W.callStreamableTool=K,W}var zO1=v(()=>{m50();j2()});var UO1=v(()=>{zO1()});var GO=v(()=>{s50();BO1();UO1()});async function U94(Y,X,Q,J){for(let K of X){if(K==="*")continue;let[W]=yD1(K),Z=Wu(W,Y);if(Z===void 0||Z===null)throw Error(`Scope references key "${W}" but it's not present in state`)}let G=fD1(Y,X);for(let K of G){if(K.endsWith("_self"))continue;let W=await J.storage.connections.findById(K);if(!W||W.organization_id!==Q)throw Error(`Referenced connection not found: ${K}`);try{await J.access.check(K)}catch(Z){throw Error(`Access denied to referenced connection: ${K}. ${Z.message}`)}}}var B94,z94,YG0;var DO1=v(()=>{u50();GO();Zu();h0();k1();bx();cZ();B94=B.object({id:B.string().describe("ID of the connection to update"),data:XA.describe("Partial connection data to update")}),z94=B.object({item:yX.describe("The updated connection entity")});YG0=y0({name:"COLLECTION_CONNECTIONS_UPDATE",description:"Update an existing MCP connection in the organization",inputSchema:B94,outputSchema:z94,handler:async(Y,X)=>{u0(X);let Q=q1(X);await X.access.check();let J=b8(X);if(!J)throw Error("User ID required to update connection");let{id:G,data:K}=Y,W=await X.storage.connections.findById(G);if(!W||W.organization_id!==Q.id)throw Error("Connection not found in organization");let Z=K.connection_type??W.connection_type,H=K.connection_url??W.connection_url;if(Z==="VIRTUAL"){let L=j$(H);if(!L)throw Error("VIRTUAL connection requires connection_url in format: virtual://$virtual_mcp_id");let w=await X.storage.virtualMcps.findById(L);if(!w)throw Error(`Virtual MCP not found: ${L}`);if(w.organization_id!==Q.id)throw Error("Virtual MCP does not belong to the current organization");H=S$(L)}let F=K.configuration_state??W.configuration_state??{},$=K.configuration_scopes??W.configuration_scopes??[];if(K.configuration_state!==void 0||K.configuration_scopes!==void 0){if(K.configuration_state!==void 0)F=K.configuration_state??{};else if(F===null||F===void 0)F={};if(K.configuration_scopes!==void 0)$=K.configuration_scopes??[];if($.length>0)await U94(F,$,Q.id,X)}let V=K.connection_token??W.connection_token;if(!V)try{let w=await new eZ(X.db,X.vault).get(G);if(w?.accessToken)V=w.accessToken}catch{}let q=await cD({id:W.id,title:K.title??W.title,connection_type:Z,connection_url:H,connection_token:V,connection_headers:K.connection_headers??W.connection_headers}).catch(()=>null),z=q?.length?q:null,D={...K,connection_url:H,tools:z,configuration_state:F,configuration_scopes:$,updated_by:J},O=await X.storage.connections.update(G,D);if((K.configuration_state!==void 0||K.configuration_scopes!==void 0)&&F&&$)try{await(await XQ(O,X,!1)).callTool({name:"ON_MCP_CONFIGURATION",arguments:{state:F,scopes:$}})}catch(L){console.error("Failed to invoke ON_MCP_CONFIGURATION callback",L)}return{item:O}}})});var XG0;var OO1=v(()=>{j5();k1();cZ();XG0=y0({name:"COLLECTION_CONNECTIONS_DELETE",description:"Delete a connection",inputSchema:K2,outputSchema:H2(yX),handler:async(Y,X)=>{u0(X);let Q=q1(X);await X.access.check();let J=await X.storage.connections.findById(Y.id);if(!J)throw Error(`Connection not found: ${Y.id}`);if(J.organization_id!==Q.id)throw Error("Connection not found in organization");if(J.metadata?.isFixed===!0)throw Error("This connection is a fixed system connection and cannot be deleted");return await X.storage.connections.delete(Y.id),{item:J}}})});var QG0;var NO1=v(()=>{h0();k1();QG0=y0({name:"CONNECTION_TEST",description:"Test connection health and latency",inputSchema:B.object({id:B.string()}),outputSchema:B.object({id:B.string(),healthy:B.boolean(),latencyMs:B.number()}),handler:async(Y,X)=>{let Q=q1(X);await X.access.check();let J=await X.storage.connections.findById(Y.id);if(!J||J.organization_id!==Q.id)throw Error("Connection not found");let G=await X.storage.connections.testConnection(Y.id);return{id:Y.id,...G}}})});var LO1=v(()=>{XD1();vD1();_D1();DO1();OO1();NO1()});import{sql as H4}from"kysely";function wO1(Y){if(Y===null||Y===void 0)return"NULL";if(typeof Y==="number")return String(Y);if(typeof Y==="boolean")return Y?"TRUE":"FALSE";if(typeof Y==="string")return`'${Y.replace(/'/g,"''")}'`;if(Y instanceof Date)return`'${Y.toISOString()}'`;return`'${JSON.stringify(Y).replace(/'/g,"''")}'`}function N94(Y,X){let Q=Y;for(let G=X.length;G>=1;G--){let K=`$${G}`;if(Q.includes(K))Q=Q.replaceAll(K,wO1(X[G-1]))}let J=[];for(let G=0;G<Q.length;G++)if(Q[G]==="?")J.push(G);for(let G=Math.min(J.length,X.length)-1;G>=0;G--){let K=J[G],W=wO1(X[G]);Q=Q.slice(0,K)+W+Q.slice(K+1)}return Q}function MO1(Y){return Y.replace(/-/g,"_")}function w94(Y){return`app_${MO1(Y)}`}function M94(Y){return`app_role_${MO1(Y)}`}function A94(Y){if(Y instanceof Error){let X=Y.message.toLowerCase(),Q=Y.code;return Q==="3F000"||Q==="42704"||Q==="22023"||X.includes("schema")&&X.includes("does not exist")||X.includes("role")&&X.includes("does not exist")}return!1}async function P94(Y,X,Q){if(await H4`CREATE SCHEMA IF NOT EXISTS ${H4.id(X)}`.execute(Y),!(await H4`
|
|
1040
1040
|
SELECT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = ${Q}) as exists
|
|
1041
1041
|
`.execute(Y)).rows[0]?.exists)await H4`CREATE ROLE ${H4.id(Q)} NOLOGIN`.execute(Y);await H4`GRANT ${H4.id(Q)} TO CURRENT_USER`.execute(Y),await H4`GRANT USAGE, CREATE ON SCHEMA ${H4.id(X)} TO ${H4.id(Q)}`.execute(Y),await H4`GRANT ALL ON ALL TABLES IN SCHEMA ${H4.id(X)} TO ${H4.id(Q)}`.execute(Y),await H4`GRANT ALL ON ALL SEQUENCES IN SCHEMA ${H4.id(X)} TO ${H4.id(Q)}`.execute(Y),await H4`ALTER DEFAULT PRIVILEGES IN SCHEMA ${H4.id(X)} GRANT ALL ON TABLES TO ${H4.id(Q)}`.execute(Y),await H4`ALTER DEFAULT PRIVILEGES IN SCHEMA ${H4.id(X)} GRANT ALL ON SEQUENCES TO ${H4.id(Q)}`.execute(Y),await H4`REVOKE ALL ON SCHEMA public FROM ${H4.id(Q)}`.execute(Y)}async function T94(Y,X,Q,J){try{return await Y.transaction().execute(async(G)=>{return await H4`SET LOCAL ROLE ${H4.id(Q)}`.execute(G),await H4`SET LOCAL search_path TO ${H4.id(X)}`.execute(G),await H4.raw(J).execute(G)})}catch(G){if(A94(G))return await P94(Y,X,Q),await Y.transaction().execute(async(K)=>{return await H4`SET LOCAL ROLE ${H4.id(Q)}`.execute(K),await H4`SET LOCAL search_path TO ${H4.id(X)}`.execute(K),await H4.raw(J).execute(K)});throw G}}var O94,L94,AO1;var PO1=v(()=>{h0();k1();O94=B.object({results:B.array(B.unknown()).optional(),success:B.boolean().optional()});L94=B.object({sql:B.string().describe("The SQL query to run"),params:B.array(B.any()).describe("The parameters to pass to the SQL query").optional()});AO1=y0({name:"DATABASES_RUN_SQL",description:"Run a SQL query against the database",inputSchema:L94,outputSchema:B.object({result:B.array(O94)}),handler:async(Y,X)=>{u0(X),await X.access.check();let Q=N94(Y.sql,Y.params||[]);if(!X.connectionId)throw Error("Connection context required for database access");let J=w94(X.connectionId),G=M94(X.connectionId);return{result:[{results:(await T94(X.db,J,G,Q)).rows,success:!0}]}}})});var TO1,C94,EO1;var QK=v(()=>{h0();Yu();TO1=B.object({connectionId:B.string().optional().describe("Filter subscriptions by connection ID (optional)")}),C94=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 (null = all publishers)"),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)")}),EO1=B.object({subscriptions:B.array(C94).describe("List of subscriptions")})});var JG0;var CO1=v(()=>{k1();QK();JG0=y0({name:"EVENT_PUBLISH",description:"Publish an event to the event bus. Supports immediate, scheduled (deliverAt), and recurring (cron) delivery. The source is automatically set to the caller's connection ID.",inputSchema:F2,outputSchema:$2,handler:async(Y,X)=>{u0(X);let Q=q1(X);await X.access.check();let J=X.connectionId;if(!J)throw Error("Connection ID required to publish events. Use a connection-scoped token.");let G=await X.eventBus.publish(Q.id,J,{type:Y.type,subject:Y.subject,data:Y.data,deliverAt:Y.deliverAt,cron:Y.cron});return{id:G.id,type:G.type,source:G.source,time:G.time}}})});var GG0;var IO1=v(()=>{k1();QK();GG0=y0({name:"EVENT_SUBSCRIBE",description:"Subscribe to events of a specific type. The subscriber is automatically set to the caller's connection.",inputSchema:V2,outputSchema:q2,handler:async(Y,X)=>{u0(X);let Q=q1(X);await X.access.check();let J=X.connectionId;if(!J)throw Error("Connection ID required to subscribe. Use a connection-scoped token.");let G=await X.eventBus.subscribe(Q.id,{connectionId:J,eventType:Y.eventType,publisher:Y.publisher,filter:Y.filter});return{subscription:{id:G.id,connectionId:G.connectionId,eventType:G.eventType,publisher:G.publisher,filter:G.filter,enabled:G.enabled,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():G.createdAt,updatedAt:G.updatedAt instanceof Date?G.updatedAt.toISOString():G.updatedAt}}}})});var WG0;var RO1=v(()=>{k1();QK();WG0=y0({name:"EVENT_UNSUBSCRIBE",description:"Unsubscribe from events by removing a subscription.",inputSchema:U2,outputSchema:D2,handler:async(Y,X)=>{u0(X);let Q=q1(X);await X.access.check();let J=X.connectionId;if(!J)throw Error("Connection ID required to unsubscribe. Use a connection-scoped token.");let G=await X.eventBus.getSubscription(Q.id,Y.subscriptionId);if(!G)throw Error(`Subscription not found: ${Y.subscriptionId}`);if(G.connectionId!==J)throw Error("Cannot unsubscribe from a subscription owned by another connection");return{success:(await X.eventBus.unsubscribe(Q.id,Y.subscriptionId)).success,subscriptionId:Y.subscriptionId}}})});var ZG0;var jO1=v(()=>{k1();QK();ZG0=y0({name:"EVENT_CANCEL",description:"Cancel a recurring event to stop future deliveries. Only the publisher can cancel their own events.",inputSchema:O2,outputSchema:N2,handler:async(Y,X)=>{u0(X);let Q=q1(X);await X.access.check();let J=X.connectionId;if(!J)throw Error("Connection ID required to cancel events. Use a connection-scoped token.");if(!await X.eventBus.getEvent(Q.id,Y.eventId))throw Error(`Event not found: ${Y.eventId}`);if(!(await X.eventBus.cancelEvent(Q.id,Y.eventId,J)).success)throw Error("Failed to cancel event. Either the event is already completed/failed, or you are not the publisher.");return{success:!0,eventId:Y.eventId}}})});var KG0;var SO1=v(()=>{k1();QK();KG0=y0({name:"EVENT_ACK",description:"Acknowledge delivery of an event. Call after successfully processing an event received via ON_EVENTS with retryAfter.",inputSchema:L2,outputSchema:w2,handler:async(Y,X)=>{u0(X);let Q=q1(X);await X.access.check();let J=X.connectionId;if(!J)throw Error("Connection ID required to acknowledge events. Use a connection-scoped token.");if(!(await X.eventBus.ackEvent(Q.id,Y.eventId,J)).success)throw Error("Failed to acknowledge event. Either the event was not found, already delivered, or you are not a subscriber.");return{success:!0,eventId:Y.eventId}}})});var HG0;var kO1=v(()=>{k1();QK();HG0=y0({name:"EVENT_SUBSCRIPTION_LIST",description:"List event subscriptions, optionally filtered by connection ID.",inputSchema:TO1,outputSchema:EO1,handler:async(Y,X)=>{u0(X);let Q=q1(X);return await X.access.check(),{subscriptions:(await X.eventBus.listSubscriptions(Q.id,Y.connectionId)).map((G)=>({id:G.id,connectionId:G.connectionId,eventType:G.eventType,publisher:G.publisher,filter:G.filter,enabled:G.enabled,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():G.createdAt,updatedAt:G.updatedAt instanceof Date?G.updatedAt.toISOString():G.updatedAt}))}}})});var FG0;var vO1=v(()=>{k1();QK();FG0=y0({name:"EVENT_SYNC_SUBSCRIPTIONS",description:"Sync subscriptions to desired state. Creates new, deletes removed, updates changed filters. Subscriptions are identified by (eventType, publisher).",inputSchema:B2,outputSchema:z2,handler:async(Y,X)=>{u0(X);let Q=q1(X);await X.access.check();let J=X.connectionId;if(!J)throw Error("Connection ID required to sync subscriptions. Use a connection-scoped token.");let G=await X.eventBus.syncSubscriptions(Q.id,{connectionId:J,subscriptions:Y.subscriptions});return{created:G.created,updated:G.updated,deleted:G.deleted,unchanged:G.unchanged,subscriptions:G.subscriptions.map((K)=>({id:K.id,connectionId:K.connectionId,eventType:K.eventType,publisher:K.publisher,filter:K.filter,enabled:K.enabled,createdAt:K.createdAt instanceof Date?K.createdAt.toISOString():K.createdAt,updatedAt:K.updatedAt instanceof Date?K.updatedAt.toISOString():K.updatedAt}))}}})});var _O1=v(()=>{CO1();IO1();RO1();jO1();SO1();kO1();vO1();QK()});var WO=v(()=>{r_()});var R94,j94,$G0;var yO1=v(()=>{h0();k1();WO();R94=B.object({data:JA.describe("Data for the new virtual MCP")}),j94=B.object({item:XJ.describe("The created virtual MCP entity")}),$G0=y0({name:"COLLECTION_VIRTUAL_MCP_CREATE",description:"Create a new MCP virtual MCP in the organization",inputSchema:R94,outputSchema:j94,handler:async(Y,X)=>{u0(X);let Q=q1(X);await X.access.check();let J=b8(X);if(!J)throw Error("User ID required to create virtual MCP");return{item:await X.storage.virtualMcps.create(Q.id,J,Y.data)}}})});function S94(Y){let X=[],Q=0;while(Q<Y.length){let J=Y[Q];if(J==="%")X.push(".*");else if(J==="_")X.push(".");else if(/[.*+?^${}()|[\]\\]/.test(J))X.push("\\"+J);else X.push(J);Q++}return X.join("")}function f3(Y){return typeof Y==="string"||typeof Y==="number"}function VG0(Y,X){let Q=X.split("."),J=Y;for(let G of Q){if(J==null||typeof J!=="object")return;J=J[G]}return J}function k94(Y,X){return Y.connections.some((Q)=>Q.connection_id===X)}function Fu(Y,X){if("conditions"in X){let{operator:Z,conditions:H}=X;switch(Z){case"and":return H.every((F)=>Fu(Y,F));case"or":return H.some((F)=>Fu(Y,F));case"not":return!H.every((F)=>Fu(Y,F));default:return!0}}let{field:Q,operator:J,value:G}=X,K=Q.join(".");if(K==="connection_id"){if(J!=="eq"||typeof G!=="string")return!1;return k94(Y,G)}let W=VG0(Y,K);switch(J){case"eq":return W===G;case"gt":return f3(W)&&f3(G)&&W>G;case"gte":return f3(W)&&f3(G)&&W>=G;case"lt":return f3(W)&&f3(G)&&W<G;case"lte":return f3(W)&&f3(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=S94(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 v94(Y,X){return[...Y].sort((Q,J)=>{for(let G of X){let K=G.field.join("."),W=VG0(Q,K),Z=VG0(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 _94,y94,qG0;var fO1=v(()=>{j5();k1();WO();_94=oZ,y94=sZ(XJ),qG0=y0({name:"COLLECTION_VIRTUAL_MCP_LIST",description:"List all MCP virtual MCPs in the organization",inputSchema:_94,outputSchema:y94,handler:async(Y,X)=>{await X.access.check();let Q=q1(X),J=Y.where&&!("conditions"in Y.where)&&Y.where.field.join(".")==="connection_id"&&Y.where.operator==="eq"&&typeof Y.where.value==="string"?Y.where.value:void 0,K=J?await X.storage.virtualMcps.listByConnectionId(Q.id,J):await X.storage.virtualMcps.list(Q.id);if(Y.where)K=K.filter((V)=>Fu(V,Y.where));if(Y.orderBy&&Y.orderBy.length>0)K=v94(K,Y.orderBy);let W=K.length,Z=Y.offset??0,H=Y.limit??100,F=K.slice(Z,Z+H),$=Z+H<W;return{items:F,totalCount:W,hasMore:$}}})});var f94,h94,BG0;var hO1=v(()=>{h0();k1();WO();f94=B.object({id:B.string().describe("ID of the virtual MCP to retrieve")}),h94=B.object({item:XJ.nullable().describe("The retrieved virtual MCP, or null if not found")}),BG0=y0({name:"COLLECTION_VIRTUAL_MCP_GET",description:"Get an MCP virtual MCP by ID",inputSchema:f94,outputSchema:h94,handler:async(Y,X)=>{u0(X);let Q=q1(X);await X.access.check();let J=await X.storage.virtualMcps.findById(Y.id);if(J&&J.organization_id!==Q.id)return{item:null};if(!J)return{item:null};return{item:J}}})});var b94,x94,zG0;var bO1=v(()=>{h0();k1();WO();b94=B.object({id:B.string().describe("ID of the virtual MCP to update"),data:GA.describe("Partial virtual MCP data to update")}),x94=B.object({item:XJ.describe("The updated virtual MCP entity")}),zG0=y0({name:"COLLECTION_VIRTUAL_MCP_UPDATE",description:"Update an MCP virtual MCP",inputSchema:b94,outputSchema:x94,handler:async(Y,X)=>{u0(X);let Q=q1(X);await X.access.check();let J=b8(X);if(!J)throw Error("User ID required to update virtual MCP");let G=await X.storage.virtualMcps.findById(Y.id);if(!G)throw Error(`Virtual MCP not found: ${Y.id}`);if(G.organization_id!==Q.id)throw Error(`Virtual MCP not found: ${Y.id}`);return{item:await X.storage.virtualMcps.update(Y.id,J,Y.data)}}})});var u94,g94,UG0;var xO1=v(()=>{h0();k1();WO();u94=B.object({id:B.string().describe("ID of the virtual MCP to delete")}),g94=B.object({item:XJ.describe("The deleted virtual MCP entity")}),UG0=y0({name:"COLLECTION_VIRTUAL_MCP_DELETE",description:"Delete an MCP virtual MCP",inputSchema:u94,outputSchema:g94,handler:async(Y,X)=>{u0(X);let Q=q1(X);await X.access.check();let J=await X.storage.virtualMcps.findById(Y.id);if(!J)throw Error(`Virtual MCP not found: ${Y.id}`);if(J.organization_id!==Q.id)throw Error(`Virtual MCP not found: ${Y.id}`);return await X.storage.virtualMcps.delete(Y.id),{item:J}}})});var uO1=v(()=>{yO1();fO1();hO1();bO1();xO1()});var l94,d94,DG0;var gO1=v(()=>{h0();k1();XK();l94=B.object({virtual_mcp_id:B.string().describe("ID of the Virtual MCP to add the tool to"),data:YO1.describe("Virtual tool data")}),d94=B.object({item:qW.describe("The created virtual tool")}),DG0=y0({name:"COLLECTION_VIRTUAL_TOOLS_CREATE",description:"Create a new virtual tool on a Virtual MCP. The tool code should be a JavaScript ES module that exports a default async function: export default async (tools, args) => { ... }. Specify connection_dependencies to indicate which connections this tool uses.",inputSchema:l94,outputSchema:d94,handler:async(Y,X)=>{u0(X);let Q=q1(X);await X.access.check();let J=await X.storage.virtualMcps.findById(Y.virtual_mcp_id);if(!J||J.organization_id!==Q.id)throw Error(`Virtual MCP not found: ${Y.virtual_mcp_id}`);let G=Y.data.connection_dependencies??[];return{item:await X.storage.virtualMcps.createVirtualTool(Y.virtual_mcp_id,Y.data,G)}}})});var p94,c94,OG0;var mO1=v(()=>{h0();k1();XK();p94=B.object({virtual_mcp_id:B.string().describe("ID of the Virtual MCP to list tools for"),limit:B.number().int().min(1).max(1000).optional().describe("Maximum number of items to return"),offset:B.number().int().min(0).optional().describe("Number of items to skip")}),c94=B.object({items:B.array(qW).describe("Array of virtual tools"),totalCount:B.number().int().min(0).optional().describe("Total number of virtual tools"),hasMore:B.boolean().optional().describe("Whether there are more items available")}),OG0=y0({name:"COLLECTION_VIRTUAL_TOOLS_LIST",description:"List all virtual tools for a Virtual MCP",inputSchema:p94,outputSchema:c94,handler:async(Y,X)=>{u0(X);let Q=q1(X);await X.access.check();let J=await X.storage.virtualMcps.findById(Y.virtual_mcp_id);if(!J||J.organization_id!==Q.id)return{items:[],totalCount:0,hasMore:!1};let G=await X.storage.virtualMcps.listVirtualTools(Y.virtual_mcp_id),K=G.length,W=Y.offset??0,Z=Y.limit??100,H=G.slice(W,W+Z),F=W+Z<K;return{items:H,totalCount:K,hasMore:F}}})});var n94,i94,NG0;var lO1=v(()=>{h0();k1();XK();n94=B.object({virtual_mcp_id:B.string().describe("ID of the Virtual MCP"),name:B.string().describe("Name of the virtual tool to retrieve")}),i94=B.object({item:qW.nullable().describe("The retrieved virtual tool, or null if not found")}),NG0=y0({name:"COLLECTION_VIRTUAL_TOOLS_GET",description:"Get a virtual tool by name from a Virtual MCP",inputSchema:n94,outputSchema:i94,handler:async(Y,X)=>{u0(X);let Q=q1(X);await X.access.check();let J=await X.storage.virtualMcps.findById(Y.virtual_mcp_id);if(!J||J.organization_id!==Q.id)return{item:null};return{item:await X.storage.virtualMcps.getVirtualTool(Y.virtual_mcp_id,Y.name)}}})});var a94,r94,LG0;var dO1=v(()=>{h0();k1();XK();a94=B.object({virtual_mcp_id:B.string().describe("ID of the Virtual MCP"),name:B.string().describe("Current name of the virtual tool to update"),data:XO1.describe("Partial virtual tool data to update")}),r94=B.object({item:qW.describe("The updated virtual tool")}),LG0=y0({name:"COLLECTION_VIRTUAL_TOOLS_UPDATE",description:"Update an existing virtual tool on a Virtual MCP. Specify connection_dependencies to update which connections this tool uses.",inputSchema:a94,outputSchema:r94,handler:async(Y,X)=>{u0(X);let Q=q1(X);await X.access.check();let J=await X.storage.virtualMcps.findById(Y.virtual_mcp_id);if(!J||J.organization_id!==Q.id)throw Error(`Virtual MCP not found: ${Y.virtual_mcp_id}`);if(!await X.storage.virtualMcps.getVirtualTool(Y.virtual_mcp_id,Y.name))throw Error(`Virtual tool not found: ${Y.name}`);let K=Y.data.connection_dependencies;return{item:await X.storage.virtualMcps.updateVirtualTool(Y.virtual_mcp_id,Y.name,Y.data,K)}}})});var o94,s94,wG0;var pO1=v(()=>{h0();k1();XK();o94=B.object({virtual_mcp_id:B.string().describe("ID of the Virtual MCP"),name:B.string().describe("Name of the virtual tool to delete")}),s94=B.object({item:qW.describe("The deleted virtual tool")}),wG0=y0({name:"COLLECTION_VIRTUAL_TOOLS_DELETE",description:"Delete a virtual tool from a Virtual MCP",inputSchema:o94,outputSchema:s94,handler:async(Y,X)=>{u0(X);let Q=q1(X);await X.access.check();let J=await X.storage.virtualMcps.findById(Y.virtual_mcp_id);if(!J||J.organization_id!==Q.id)throw Error(`Virtual MCP not found: ${Y.virtual_mcp_id}`);let G=await X.storage.virtualMcps.getVirtualTool(Y.virtual_mcp_id,Y.name);if(!G)throw Error(`Virtual tool not found: ${Y.name}`);return await X.storage.virtualMcps.deleteVirtualTool(Y.virtual_mcp_id,Y.name),{item:G}}})});var cO1=v(()=>{gO1();mO1();lO1();dO1();pO1()});var e94,MG0;var nO1=v(()=>{k1();h0();e94=B.object({id:B.string().optional().describe("Unique log identifier"),organizationId:B.string().describe("Organization ID"),connectionId:B.string().describe("Connection ID"),connectionTitle:B.string().describe("Connection display name"),toolName:B.string().describe("Name of the tool that was called"),input:B.record(B.string(),B.unknown()).describe("Redacted tool input"),output:B.record(B.string(),B.unknown()).describe("Redacted tool output"),isError:B.boolean().describe("Whether the call resulted in an error"),errorMessage:B.string().nullish().describe("Error message if applicable"),durationMs:B.number().describe("Call duration in milliseconds"),timestamp:B.string().describe("ISO 8601 timestamp of the call"),userId:B.string().nullish().describe("User who triggered the call"),requestId:B.string().describe("Unique request identifier"),userAgent:B.string().nullish().describe("Client identifier (x-mesh-client header)"),virtualMcpId:B.string().nullish().describe("Virtual MCP (Agent) ID if routed through an agent"),properties:B.record(B.string(),B.string()).nullish().describe("Custom key-value metadata attached to the log")}),MG0=y0({name:"MONITORING_LOGS_LIST",description:"List monitoring logs for tool calls in the organization",inputSchema:B.object({connectionId:B.string().optional().describe("Filter by connection ID"),excludeConnectionIds:B.array(B.string()).optional().describe("Exclude logs from these connection IDs (e.g. system connections)"),virtualMcpId:B.string().optional().describe("Filter by Virtual MCP (Agent) ID"),toolName:B.string().optional().describe("Filter by tool name"),isError:B.boolean().optional().describe("Filter by error status"),startDate:B.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:B.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),limit:B.number().default(20).describe("Maximum number of results"),offset:B.number().default(0).describe("Offset for pagination"),properties:B.record(B.string(),B.string()).optional().describe("Filter by exact property key=value matches"),propertyKeys:B.array(B.string()).optional().describe("Filter by logs that have these property keys"),propertyPatterns:B.record(B.string(),B.string()).optional().describe("Filter by property value patterns (SQL LIKE, use % as wildcard)"),propertyInValues:B.record(B.string(),B.string()).optional().describe("Filter by exact match within comma-separated values (e.g., user_tags in 'Engineering')")}),outputSchema:B.object({logs:B.array(e94).describe("Array of monitoring logs"),total:B.number().describe("Total number of logs matching filters"),offset:B.number().describe("Current offset for pagination"),limit:B.number().describe("Current limit for pagination")}),handler:async(Y,X)=>{let Q=q1(X),G=Y.properties||Y.propertyKeys||Y.propertyPatterns||Y.propertyInValues?{properties:Y.properties,propertyKeys:Y.propertyKeys,propertyPatterns:Y.propertyPatterns,propertyInValues:Y.propertyInValues}:void 0,K={organizationId:Q.id,connectionId:Y.connectionId,excludeConnectionIds:Y.excludeConnectionIds,virtualMcpId:Y.virtualMcpId,toolName:Y.toolName,isError:Y.isError,startDate:Y.startDate?new Date(Y.startDate):void 0,endDate:Y.endDate?new Date(Y.endDate):void 0,limit:Y.limit,offset:Y.offset,propertyFilters:G},W=await X.storage.monitoring.query(K);return{logs:W.logs.map((Z)=>({...Z,timestamp:Z.timestamp instanceof Date?Z.timestamp.toISOString():Z.timestamp})),total:W.total,offset:Y.offset,limit:Y.limit}}})});var AG0;var iO1=v(()=>{k1();h0();AG0=y0({name:"MONITORING_STATS",description:"Get aggregated statistics for tool call monitoring",inputSchema:B.object({startDate:B.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:B.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)")}),outputSchema:B.object({totalCalls:B.number().describe("Total number of tool calls"),errorRate:B.number().describe("Error rate as a decimal (0 to 1)"),avgDurationMs:B.number().describe("Average call duration in milliseconds"),errorRatePercent:B.string().describe("Error rate as a percentage string")}),handler:async(Y,X)=>{let J={organizationId:q1(X).id,startDate:Y.startDate?new Date(Y.startDate):void 0,endDate:Y.endDate?new Date(Y.endDate):void 0},G=await X.storage.monitoring.getStats(J);return{...G,errorRatePercent:(G.errorRate*100).toFixed(2)}}})});var aO1=v(()=>{nO1();iO1()});var PG0;var rO1=v(()=>{h0();k1();PG0=y0({name:"ORGANIZATION_CREATE",description:"Create a new organization",inputSchema:B.object({slug:B.string().min(1).max(50).regex(/^[a-z0-9-]+$/,"Slug must be lowercase alphanumeric with hyphens"),name:B.string().min(1).max(255),description:B.string().optional()}),outputSchema:B.object({id:B.string(),name:B.string(),slug:B.string(),logo:B.string().nullable().optional(),metadata:B.any().optional(),createdAt:B.string().datetime().describe("ISO 8601 timestamp"),members:B.array(B.any()).optional()}),handler:async(Y,X)=>{u0(X),await X.access.check();let Q=b8(X);if(!Q)throw Error("User ID required to create organization");let J=await X.boundAuth.organization.create({name:Y.name,slug:Y.slug,metadata:Y.description?{description:Y.description}:void 0,userId:Q});if(!J)throw Error("Failed to create organization");return{...J,createdAt:J.createdAt instanceof Date?J.createdAt.toISOString():J.createdAt}}})});var TG0;var oO1=v(()=>{h0();k1();TG0=y0({name:"ORGANIZATION_LIST",description:"List all organizations user has access to",inputSchema:B.object({userId:B.string().optional()}),outputSchema:B.object({organizations:B.array(B.object({id:B.string(),name:B.string(),slug:B.string(),logo:B.string().nullable().optional(),metadata:B.any().optional(),createdAt:B.string().datetime().describe("ISO 8601 timestamp")}))}),handler:async(Y,X)=>{u0(X),await X.access.check();let Q=b8(X),J=Y.userId||Q;if(!J)throw Error("User ID required to list organizations");return{organizations:(await X.boundAuth.organization.list(J)).map((K)=>({...K,createdAt:K.createdAt instanceof Date?K.createdAt.toISOString():K.createdAt}))}}})});var EG0;var sO1=v(()=>{h0();k1();EG0=y0({name:"ORGANIZATION_GET",description:"Get organization details by slug or ID",inputSchema:B.object({}),outputSchema:B.object({id:B.string(),name:B.string(),slug:B.string(),logo:B.string().nullable().optional(),metadata:B.any().optional(),createdAt:B.string().datetime().describe("ISO 8601 timestamp"),members:B.array(B.any()).optional(),invitations:B.array(B.any()).optional()}),handler:async(Y,X)=>{u0(X),await X.access.check();let Q=await X.boundAuth.organization.get();if(!Q)throw Error("No active organization found");let J=new Date,G=Q.invitations?.filter((K)=>new Date(K.expiresAt)>J);return{...Q,invitations:G,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt}}})});var CG0;var tO1=v(()=>{h0();k1();CG0=y0({name:"ORGANIZATION_UPDATE",description:"Update an existing organization",inputSchema:B.object({id:B.string(),slug:B.string().min(1).max(50).regex(/^[a-z0-9-]+$/).optional(),name:B.string().min(1).max(255).optional(),description:B.string().optional()}),outputSchema:B.object({id:B.string(),name:B.string(),slug:B.string(),logo:B.string().nullable().optional(),metadata:B.any().optional(),createdAt:B.string().datetime().describe("ISO 8601 timestamp")}),handler:async(Y,X)=>{u0(X),await X.access.check();let Q={};if(Y.name)Q.name=Y.name;if(Y.slug)Q.slug=Y.slug;if(Y.description)Q.metadata={description:Y.description};let J=await X.boundAuth.organization.update({organizationId:Y.id,data:Q});if(!J)throw Error("Failed to update organization");return{...J,createdAt:J.createdAt instanceof Date?J.createdAt.toISOString():J.createdAt}}})});var IG0;var eO1=v(()=>{h0();k1();IG0=y0({name:"ORGANIZATION_DELETE",description:"Delete an organization",inputSchema:B.object({id:B.string()}),outputSchema:B.object({success:B.boolean(),id:B.string()}),handler:async(Y,X)=>{return u0(X),await X.access.check(),await X.boundAuth.organization.delete(Y.id),{success:!0,id:Y.id}}})});var y2;var RG0=v(()=>{h0();y2=B.object({title:B.string(),url:B.string(),icon:B.string()})});var jG0;var YN1=v(()=>{h0();k1();RG0();jG0=y0({name:"ORGANIZATION_SETTINGS_GET",description:"Get organization-level settings",inputSchema:B.object({}),outputSchema:B.object({organizationId:B.string(),sidebar_items:B.array(y2).nullable().optional(),enabled_plugins:B.array(B.string()).nullable().optional(),createdAt:B.string().datetime().optional().describe("ISO 8601 timestamp"),updatedAt:B.string().datetime().optional().describe("ISO 8601 timestamp")}),handler:async(Y,X)=>{u0(X),await X.access.check();let Q=X.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let J=await X.storage.organizationSettings.get(Q);if(!J)return{organizationId:Q};return{...J,createdAt:J.createdAt instanceof Date?J.createdAt.toISOString():J.createdAt,updatedAt:J.updatedAt instanceof Date?J.updatedAt.toISOString():J.updatedAt}}})});var SG0;var XN1=v(()=>{h0();k1();RG0();SG0=y0({name:"ORGANIZATION_SETTINGS_UPDATE",description:"Update organization-level settings",inputSchema:B.object({organizationId:B.string(),sidebar_items:B.array(y2).optional(),enabled_plugins:B.array(B.string()).optional()}),outputSchema:B.object({organizationId:B.string(),sidebar_items:B.array(y2).nullable().optional(),enabled_plugins:B.array(B.string()).nullable().optional(),createdAt:B.string().datetime().describe("ISO 8601 timestamp"),updatedAt:B.string().datetime().describe("ISO 8601 timestamp")}),handler:async(Y,X)=>{if(u0(X),await X.access.check(),X.organization&&X.organization.id!==Y.organizationId)throw Error("Cannot update settings for a different organization");let Q=await X.storage.organizationSettings.upsert(Y.organizationId,{sidebar_items:Y.sidebar_items,enabled_plugins:Y.enabled_plugins});return{...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt,updatedAt:Q.updatedAt instanceof Date?Q.updatedAt.toISOString():Q.updatedAt}}})});var kG0;var QN1=v(()=>{h0();k1();kG0=y0({name:"ORGANIZATION_MEMBER_ADD",description:"Add a member to an organization",inputSchema:B.object({organizationId:B.string().optional(),userId:B.string(),role:B.array(B.string())}),outputSchema:B.object({id:B.string(),organizationId:B.string(),userId:B.string(),role:B.union([B.string(),B.array(B.string())]),createdAt:B.string().datetime().describe("ISO 8601 timestamp")}),handler:async(Y,X)=>{u0(X),await X.access.check();let Q=Y.organizationId||X.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let J=await X.boundAuth.organization.addMember({organizationId:Q,userId:Y.userId,role:Y.role});if(!J)throw Error("Failed to add member");return{...J,role:J.role,createdAt:J.createdAt instanceof Date?J.createdAt.toISOString():J.createdAt}}})});var vG0;var JN1=v(()=>{h0();k1();vG0=y0({name:"ORGANIZATION_MEMBER_REMOVE",description:"Remove a member from an organization",inputSchema:B.object({organizationId:B.string().optional(),memberIdOrEmail:B.string()}),outputSchema:B.object({success:B.boolean(),memberIdOrEmail:B.string()}),handler:async(Y,X)=>{u0(X),await X.access.check();let Q=Y.organizationId||X.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");return await X.boundAuth.organization.removeMember({organizationId:Q,memberIdOrEmail:Y.memberIdOrEmail}),{success:!0,memberIdOrEmail:Y.memberIdOrEmail}}})});var _G0;var GN1=v(()=>{h0();k1();_G0=y0({name:"ORGANIZATION_MEMBER_LIST",description:"List all members in an organization",inputSchema:B.object({limit:B.number().optional(),offset:B.number().optional()}),outputSchema:B.object({members:B.array(B.object({id:B.string(),organizationId:B.string(),userId:B.string(),role:B.string(),createdAt:B.string().datetime().describe("ISO 8601 timestamp"),user:B.object({id:B.string(),name:B.string(),email:B.string(),image:B.string().optional()}).optional()}))}),handler:async(Y,X)=>{u0(X),await X.access.check();let Q=X.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let J=await X.boundAuth.organization.listMembers({organizationId:Q,limit:Y.limit,offset:Y.offset});return{members:(Array.isArray(J)?J:[]).map((K)=>({...K,createdAt:K.createdAt instanceof Date?K.createdAt.toISOString():K.createdAt}))}}})});var yG0;var WN1=v(()=>{h0();k1();yG0=y0({name:"ORGANIZATION_MEMBER_UPDATE_ROLE",description:"Update a member's role in an organization",inputSchema:B.object({organizationId:B.string().optional(),memberId:B.string(),role:B.array(B.string())}),outputSchema:B.object({id:B.string(),organizationId:B.string(),userId:B.string(),role:B.union([B.literal("admin"),B.literal("member"),B.literal("owner")]),createdAt:B.string().datetime().describe("ISO 8601 timestamp"),user:B.object({email:B.string(),name:B.string(),image:B.string().optional()})}),handler:async(Y,X)=>{u0(X),await X.access.check();let Q=Y.organizationId||X.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let J=await X.boundAuth.organization.updateMemberRole({organizationId:Q,memberId:Y.memberId,role:Y.role});if(!J)throw Error("Failed to update member role");return{...J,createdAt:J.createdAt instanceof Date?J.createdAt.toISOString():J.createdAt}}})});var ZN1=v(()=>{rO1();oO1();sO1();tO1();eO1();YN1();XN1();QN1();JN1();GN1();WN1()});var QY4,$u,JY4,eV,KN1,Vu;var Yq=v(()=>{h0();QY4=B.object({banner:B.string().nullable(),bannerColor:B.string().nullable(),icon:B.string().nullable(),themeColor:B.string().nullable()}),$u=B.object({banner:B.string().nullable().optional(),bannerColor:B.string().nullable().optional(),icon:B.string().nullable().optional(),themeColor:B.string().nullable().optional()}),JY4=B.object({id:B.string(),title:B.string(),icon:B.string().nullable()}),eV=B.object({id:B.string(),organizationId:B.string(),slug:B.string(),name:B.string(),description:B.string().nullable(),enabledPlugins:B.array(B.string()).nullable(),ui:QY4.nullable(),createdAt:B.string().datetime().describe("ISO 8601 timestamp"),updatedAt:B.string().datetime().describe("ISO 8601 timestamp")}),KN1=eV.omit({organizationId:!0}).extend({boundConnections:B.array(JY4)}),Vu=B.object({id:B.string(),projectId:B.string(),pluginId:B.string(),connectionId:B.string().nullable(),settings:B.record(B.string(),B.unknown()).nullable(),createdAt:B.string().datetime().describe("ISO 8601 timestamp"),updatedAt:B.string().datetime().describe("ISO 8601 timestamp")})});var fG0;var HN1=v(()=>{h0();k1();Yq();fG0=y0({name:"PROJECT_LIST",description:"List all projects in an organization",inputSchema:B.object({organizationId:B.string().describe("Organization ID to list projects for")}),outputSchema:B.object({projects:B.array(KN1)}),handler:async(Y,X)=>{u0(X),await X.access.check();let Q=await X.storage.projects.list(Y.organizationId),J=Q.map((K)=>K.id),G=await X.storage.projectPluginConfigs.getBoundConnectionsForProjects(J);return{projects:Q.map((K)=>({id:K.id,slug:K.slug,name:K.name,description:K.description,enabledPlugins:K.enabledPlugins,ui:K.ui,boundConnections:G.get(K.id)??[],createdAt:K.createdAt instanceof Date?K.createdAt.toISOString():K.createdAt,updatedAt:K.updatedAt instanceof Date?K.updatedAt.toISOString():K.updatedAt}))}}})});var hG0;var FN1=v(()=>{h0();k1();Yq();hG0=y0({name:"PROJECT_GET",description:"Get a project by ID or slug",inputSchema:B.object({organizationId:B.string().describe("Organization ID"),projectId:B.string().optional().describe("Project ID (either this or slug required)"),slug:B.string().optional().describe("Project slug (either this or projectId required)")}).refine((Y)=>Y.projectId||Y.slug,{message:"Either projectId or slug must be provided"}),outputSchema:B.object({project:eV.nullable()}),handler:async(Y,X)=>{u0(X),await X.access.check();let Q=null;if(Y.projectId)Q=await X.storage.projects.get(Y.projectId);else if(Y.slug)Q=await X.storage.projects.getBySlug(Y.organizationId,Y.slug);if(!Q)return{project:null};return{project:{id:Q.id,organizationId:Q.organizationId,slug:Q.slug,name:Q.name,description:Q.description,enabledPlugins:Q.enabledPlugins,ui:Q.ui,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt,updatedAt:Q.updatedAt instanceof Date?Q.updatedAt.toISOString():Q.updatedAt}}}})});var bG0;var $N1=v(()=>{h0();YX();k1();Yq();bG0=y0({name:"PROJECT_CREATE",description:"Create a new project in an organization",inputSchema:B.object({organizationId:B.string().describe("Organization ID"),slug:B.string().min(1).max(100).regex(/^[a-z0-9-]+$/,"Slug must be lowercase alphanumeric with hyphens").describe("URL-friendly identifier"),name:B.string().min(1).max(200).describe("Display name"),description:B.string().max(1000).nullable().optional().describe("Project description"),enabledPlugins:B.array(B.string()).nullable().optional().describe("Plugin IDs to enable"),ui:$u.nullable().optional().describe("UI customization")}),outputSchema:B.object({project:eV}),handler:async(Y,X)=>{u0(X),await X.access.check();let{organizationId:Q,slug:J,name:G,description:K,enabledPlugins:W,ui:Z}=Y;if(J===dW)throw Error(`Slug "${dW}" is reserved`);if(await X.storage.projects.getBySlug(Q,J))throw Error(`Project with slug "${J}" already exists in this organization`);let F=Z?{banner:Z.banner??null,bannerColor:Z.bannerColor??null,icon:Z.icon??null,themeColor:Z.themeColor??null}:null,$=await X.storage.projects.create({organizationId:Q,slug:J,name:G,description:K??null,enabledPlugins:W??null,ui:F});return{project:{id:$.id,organizationId:$.organizationId,slug:$.slug,name:$.name,description:$.description,enabledPlugins:$.enabledPlugins,ui:$.ui,createdAt:$.createdAt instanceof Date?$.createdAt.toISOString():$.createdAt,updatedAt:$.updatedAt instanceof Date?$.updatedAt.toISOString():$.updatedAt}}}})});var xG0;var VN1=v(()=>{h0();k1();Yq();xG0=y0({name:"PROJECT_UPDATE",description:"Update a project's details",inputSchema:B.object({projectId:B.string().describe("Project ID to update"),name:B.string().min(1).max(200).optional().describe("New display name"),description:B.string().max(1000).nullable().optional().describe("New description"),enabledPlugins:B.array(B.string()).nullable().optional().describe("Updated plugin IDs"),ui:$u.nullable().optional().describe("Updated UI customization")}),outputSchema:B.object({project:eV.nullable()}),handler:async(Y,X)=>{u0(X),await X.access.check();let{projectId:Q,name:J,description:G,enabledPlugins:K,ui:W}=Y,Z={};if(J!==void 0)Z.name=J;if(G!==void 0)Z.description=G;if(K!==void 0)Z.enabledPlugins=K;if(W!==void 0)Z.ui=W?{banner:W.banner??null,bannerColor:W.bannerColor??null,icon:W.icon??null,themeColor:W.themeColor??null}:null;let H=await X.storage.projects.update(Q,Z);if(!H)return{project:null};return{project:{id:H.id,organizationId:H.organizationId,slug:H.slug,name:H.name,description:H.description,enabledPlugins:H.enabledPlugins,ui:H.ui,createdAt:H.createdAt instanceof Date?H.createdAt.toISOString():H.createdAt,updatedAt:H.updatedAt instanceof Date?H.updatedAt.toISOString():H.updatedAt}}}})});var uG0;var qN1=v(()=>{h0();YX();k1();uG0=y0({name:"PROJECT_DELETE",description:"Delete a project (cannot delete org-admin)",inputSchema:B.object({projectId:B.string().describe("Project ID to delete")}),outputSchema:B.object({success:B.boolean(),message:B.string().optional()}),handler:async(Y,X)=>{u0(X),await X.access.check();let{projectId:Q}=Y,J=await X.storage.projects.get(Q);if(!J)return{success:!1,message:"Project not found"};if(J.slug===dW)return{success:!1,message:"Cannot delete the org-admin project"};return{success:await X.storage.projects.delete(Q)}}})});var gG0;var BN1=v(()=>{h0();k1();Yq();gG0=y0({name:"PROJECT_PLUGIN_CONFIG_GET",description:"Get plugin configuration for a project",inputSchema:B.object({projectId:B.string().describe("Project ID"),pluginId:B.string().describe("Plugin ID")}),outputSchema:B.object({config:Vu.nullable()}),handler:async(Y,X)=>{u0(X),await X.access.check();let{projectId:Q,pluginId:J}=Y,G=await X.storage.projectPluginConfigs.get(Q,J);if(!G)return{config:null};return{config:{id:G.id,projectId:G.projectId,pluginId:G.pluginId,connectionId:G.connectionId,settings:G.settings,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():G.createdAt,updatedAt:G.updatedAt instanceof Date?G.updatedAt.toISOString():G.updatedAt}}}})});var mG0;var zN1=v(()=>{h0();k1();Yq();Ju();mG0=y0({name:"PROJECT_PLUGIN_CONFIG_UPDATE",description:"Update or create plugin configuration for a project",inputSchema:B.object({projectId:B.string().describe("Project ID"),pluginId:B.string().describe("Plugin ID"),connectionId:B.string().nullable().optional().describe("MCP connection to bind"),settings:B.record(B.string(),B.unknown()).nullable().optional().describe("Plugin-specific settings")}),outputSchema:B.object({config:Vu}),handler:async(Y,X)=>{u0(X),await X.access.check();let{projectId:Q,pluginId:J,connectionId:G,settings:K}=Y,W=b8(X),Z=await X.storage.projects.get(Q);if(!Z)throw Error(`Project not found: ${Q}`);let H=G?await X.storage.connections.findById(G):null;if(G&&Z.organizationId&&!H&&eD()){if(Qu(G,Z.organizationId)){if(!W)throw Error("User ID required to create dev-assets connection");let $=YO(Z.organizationId,MJ());await X.storage.connections.create({...$,organization_id:Z.organizationId,created_by:W})}}let F=await X.storage.projectPluginConfigs.upsert(Q,J,{connectionId:G,settings:K});return{config:{id:F.id,projectId:F.projectId,pluginId:F.pluginId,connectionId:F.connectionId,settings:F.settings,createdAt:F.createdAt instanceof Date?F.createdAt.toISOString():F.createdAt,updatedAt:F.updatedAt instanceof Date?F.updatedAt.toISOString():F.updatedAt}}}})});var UN1=v(()=>{HN1();FN1();$N1();VN1();qN1();BN1();zN1()});var lG0;var DN1=v(()=>{h0();k1();lG0=y0({name:"TAGS_LIST",description:"List all tags in an organization",inputSchema:B.object({}),outputSchema:B.object({tags:B.array(B.object({id:B.string(),organizationId:B.string(),name:B.string(),createdAt:B.string().describe("ISO 8601 timestamp")}))}),handler:async(Y,X)=>{u0(X),await X.access.check();let Q=q1(X);return{tags:(await X.storage.tags.listOrgTags(Q.id)).map((G)=>({...G,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():String(G.createdAt)}))}}})});var dG0;var ON1=v(()=>{h0();k1();dG0=y0({name:"TAGS_CREATE",description:"Create a new tag in an organization",inputSchema:B.object({name:B.string().min(1).max(50).describe("Tag name")}),outputSchema:B.object({tag:B.object({id:B.string(),organizationId:B.string(),name:B.string(),createdAt:B.string().describe("ISO 8601 timestamp")})}),handler:async(Y,X)=>{u0(X),await X.access.check();let Q=q1(X),J=await X.storage.tags.createTag(Q.id,Y.name);return{tag:{...J,createdAt:J.createdAt instanceof Date?J.createdAt.toISOString():String(J.createdAt)}}}})});var pG0;var NN1=v(()=>{h0();k1();pG0=y0({name:"TAGS_DELETE",description:"Delete a tag from an organization (removes from all members)",inputSchema:B.object({tagId:B.string().describe("Tag ID to delete")}),outputSchema:B.object({success:B.boolean()}),handler:async(Y,X)=>{u0(X),await X.access.check();let Q=q1(X),J=await X.storage.tags.getTag(Y.tagId);if(!J)throw Error("Tag not found");if(J.organizationId!==Q.id)throw Error("Tag does not belong to this organization");return await X.storage.tags.deleteTag(Y.tagId),{success:!0}}})});var cG0;var LN1=v(()=>{h0();k1();cG0=y0({name:"MEMBER_TAGS_GET",description:"Get tags assigned to a member",inputSchema:B.object({memberId:B.string().describe("Member ID")}),outputSchema:B.object({tags:B.array(B.object({id:B.string(),organizationId:B.string(),name:B.string(),createdAt:B.string().describe("ISO 8601 timestamp")}))}),handler:async(Y,X)=>{u0(X),await X.access.check();let Q=q1(X);if(!await X.storage.tags.verifyMemberOrg(Y.memberId,Q.id))throw Error(`Member not found in this organization: ${Y.memberId}`);return{tags:(await X.storage.tags.getMemberTags(Y.memberId)).map((K)=>({...K,createdAt:K.createdAt instanceof Date?K.createdAt.toISOString():String(K.createdAt)}))}}})});var nG0;var wN1=v(()=>{h0();k1();nG0=y0({name:"MEMBER_TAGS_SET",description:"Set tags for a member (replaces all existing tags)",inputSchema:B.object({memberId:B.string().describe("Member ID"),tagIds:B.array(B.string()).describe("Array of tag IDs to assign")}),outputSchema:B.object({success:B.boolean(),tags:B.array(B.object({id:B.string(),organizationId:B.string(),name:B.string(),createdAt:B.string().describe("ISO 8601 timestamp")}))}),handler:async(Y,X)=>{u0(X),await X.access.check();let Q=q1(X);if(!await X.storage.tags.verifyMemberOrg(Y.memberId,Q.id))throw Error(`Member not found in this organization: ${Y.memberId}`);for(let K of Y.tagIds){let W=await X.storage.tags.getTag(K);if(!W)throw Error(`Tag not found: ${K}`);if(W.organizationId!==Q.id)throw Error(`Tag does not belong to this organization: ${K}`)}return await X.storage.tags.setMemberTags(Y.memberId,Y.tagIds),{success:!0,tags:(await X.storage.tags.getMemberTags(Y.memberId)).map((K)=>({...K,createdAt:K.createdAt instanceof Date?K.createdAt.toISOString():String(K.createdAt)}))}}})});var MN1=v(()=>{DN1();ON1();NN1();LN1();wN1()});var AN1,BW,PN1,TN1;var Xq=v(()=>{h0();AN1=B.object({id:B.string().describe("Unique message ID"),threadId:B.string().describe("ID of the parent thread"),metadata:B.unknown().optional().describe("Optional message metadata"),parts:B.array(B.record(B.string(),B.unknown())).describe("Message content parts (AI SDK UIMessagePart format)"),role:B.enum(["user","assistant","system"]).describe("Message role"),createdAt:B.string().datetime().describe("Timestamp of creation"),updatedAt:B.string().datetime().describe("Timestamp of last update")}),BW=B.object({id:B.string().describe("Unique thread ID"),organizationId:B.string().describe("Organization this thread belongs to"),title:B.string().describe("Thread title"),description:B.string().nullable().describe("Thread description"),createdAt:B.string().datetime().describe("Timestamp of creation"),updatedAt:B.string().datetime().describe("Timestamp of last update"),hidden:B.boolean().optional().describe("Whether the thread is hidden"),createdBy:B.string().describe("User ID who created the thread"),updatedBy:B.string().nullable().describe("User ID who last updated the thread")}),PN1=B.object({id:B.string().optional().describe("Optional custom ID for the thread"),title:B.string().describe("Thread title"),description:B.string().nullish().describe("Thread description")}),TN1=B.object({title:B.string().optional().describe("New thread title"),description:B.string().nullish().describe("New thread description"),hidden:B.boolean().optional().describe("Whether the thread is hidden")})});var ZY4,KY4,iG0;var EN1=v(()=>{h0();k1();Xq();R5();ZY4=B.object({data:PN1.describe("Data for the new thread (id is auto-generated if not provided)")}),KY4=B.object({item:BW.describe("The created thread entity")}),iG0=y0({name:"COLLECTION_THREADS_CREATE",description:"Create a new thread in the organization",inputSchema:ZY4,outputSchema:KY4,handler:async(Y,X)=>{u0(X);let Q=q1(X);await X.access.check();let J=b8(X);if(!J)throw Error("User ID required to create thread");let G=Y.data.id??k4("thrd"),K=await X.storage.threads.create({id:G,organizationId:Q.id,title:Y.data.title,description:Y.data.description,createdBy:J});return{item:{...K,hidden:K.hidden??!1}}}})});var HY4,FY4,aG0;var CN1=v(()=>{j5();k1();Xq();h0();HY4=oZ.extend({where:B.object({created_by:B.string().optional()}).optional()}),FY4=sZ(BW),aG0=y0({name:"COLLECTION_THREADS_LIST",description:"List all threads in the organization with filtering, sorting, and pagination",inputSchema:HY4,outputSchema:FY4,handler:async(Y,X)=>{await X.access.check();let Q=X.auth.user?.id;if(!Q)throw Error("User ID required to list threads");let J=q1(X),G=Y.offset??0,K=Y.limit??100,{threads:W,total:Z}=await X.storage.threads.list(J.id,Q,{limit:K,offset:G}),H=G+K<Z;return{items:W.map((F)=>({...F,hidden:F.hidden??!1})),totalCount:Z,hasMore:H}}})});var $Y4,rG0;var IN1=v(()=>{j5();k1();Xq();$Y4=Z2(BW),rG0=y0({name:"COLLECTION_THREADS_GET",description:"Get thread details by ID",inputSchema:W2,outputSchema:$Y4,handler:async(Y,X)=>{u0(X);let Q=q1(X);await X.access.check();let J=await X.storage.threads.get(Y.id);if(!J||J.organizationId!==Q.id)return{item:null};return{item:{...J,hidden:J.hidden??!1}}}})});var VY4,qY4,oG0;var RN1=v(()=>{h0();k1();Xq();VY4=B.object({id:B.string().describe("ID of the thread to update"),data:TN1.describe("Partial thread data to update")}),qY4=B.object({item:BW.describe("The updated thread entity")}),oG0=y0({name:"COLLECTION_THREADS_UPDATE",description:"Update an existing thread in the organization",inputSchema:VY4,outputSchema:qY4,handler:async(Y,X)=>{u0(X);let Q=q1(X);await X.access.check();let J=b8(X);if(!J)throw Error("User ID required to update thread");let{id:G,data:K}=Y,W=await X.storage.threads.get(G);if(!W||W.organizationId!==Q.id)throw Error("Thread not found in organization");let Z=await X.storage.threads.update(G,{title:K.title,description:K.description,hidden:K.hidden,updatedBy:J});return{item:{...Z,hidden:Z.hidden??!1}}}})});var sG0;var jN1=v(()=>{j5();k1();Xq();sG0=y0({name:"COLLECTION_THREADS_DELETE",description:"Delete a thread",inputSchema:K2,outputSchema:H2(BW),handler:async(Y,X)=>{u0(X);let Q=q1(X);await X.access.check();let J=await X.storage.threads.get(Y.id);if(!J)throw Error(`Thread not found: ${Y.id}`);if(J.organizationId!==Q.id)throw Error(`Thread not found: ${Y.id}`);return await X.storage.threads.delete(Y.id),{item:{...J,hidden:J.hidden??!1}}}})});function SN1(Y){if(!Y)return null;if("field"in Y&&Y.field[0]==="threadId"&&Y.operator==="eq")return String(Y.value);if("conditions"in Y)for(let X of Y.conditions){let Q=SN1(X);if(Q)return Q}return null}var BY4,tG0;var kN1=v(()=>{j5();k1();Xq();BY4=sZ(AN1),tG0=y0({name:"COLLECTION_THREAD_MESSAGES_LIST",description:"List all messages for a specific thread",inputSchema:oZ,outputSchema:BY4,handler:async(Y,X)=>{let Q=q1(X);await X.access.check();let J=SN1(Y.where);if(!J)throw Error("threadId filter is required in where clause");let G=await X.storage.threads.get(J);if(!G||G.organizationId!==Q.id)return{items:[],totalCount:0,hasMore:!1};let K=Y.offset??0,W=Y.limit??100,{messages:Z,total:H}=await X.storage.threads.listMessages(J,{limit:W,offset:K}),F=K+W<H;return{items:Z,totalCount:H,hasMore:F}}})});var vN1=v(()=>{EN1();CN1();IN1();RN1();jN1();kN1()});var UY4,DY4,eG0;var _N1=v(()=>{h0();k1();UY4=B.object({id:B.string().min(1)}),DY4=B.object({user:B.object({id:B.string(),name:B.string(),email:B.string(),image:B.string().nullable()}).nullable()}),eG0=y0({name:"USER_GET",description:"Get a user by id (restricted to shared organizations)",inputSchema:UY4,outputSchema:DY4,handler:async(Y,X)=>{await X.access.check(),u0(X);let Q=b8(X);if(!Q)throw Error("Authentication required");let J=await X.storage.users.findById(Y.id,Q);if(!J)return{user:null};return{user:{id:J.id,name:J.name,email:J.email,image:J.image??null}}}})});var yN1=v(()=>{_N1()});var hN1={};u8(hN1,{managementMCP:()=>Y70,ALL_TOOLS:()=>fN1});var NY4,LY4,fN1,Y70=async(Y)=>{let X=null;if(Y.organization)X=(await Y.storage.organizationSettings.get(Y.organization.id))?.enabled_plugins??null;let Q=iz1(fN1,X),J=new ZA({name:"mcp-mesh-management",version:"1.0.0"},{capabilities:{tools:{}}});for(let G of Q){let K=G.inputSchema&&typeof G.inputSchema==="object"&&"shape"in G.inputSchema?G.inputSchema:B.object({}),W=G.outputSchema&&typeof G.outputSchema==="object"&&"shape"in G.outputSchema?G.outputSchema:void 0,Z=K.shape,H=W?.shape;J.registerTool(G.name,{description:G.description??"",inputSchema:Z,outputSchema:H},async(F)=>{Y.access.setToolName(G.name);try{let $=await G.execute(F,Y);return{content:[{type:"text",text:JSON.stringify($)}],structuredContent:$}}catch($){return{content:[{type:"text",text:`Error: ${$.message}`}],isError:!0}}})}return J};var X70=v(()=>{Q50();m10();h0();$U1();YD1();LO1();PO1();_O1();uO1();cO1();aO1();ZN1();UN1();MN1();vN1();yN1();NY4=[PG0,TG0,EG0,CG0,IG0,jG0,SG0,kG0,vG0,_G0,yG0,S50,h50,b50,YG0,XG0,QG0,$G0,qG0,BG0,zG0,UG0,DG0,OG0,NG0,LG0,wG0,AO1,MG0,AG0,G50,Z50,K50,W50,JG0,GG0,WG0,ZG0,KG0,HG0,FG0,eG0,I50,R50,j50,iG0,aG0,rG0,oG0,sG0,tG0,lG0,dG0,pG0,cG0,nG0,fG0,hG0,bG0,xG0,uG0,gG0,mG0],LY4=az1(),fN1=[...NY4,...LY4]});function wY4(Y){return[{permissions:{self:["*"]},getTools:async()=>{let{ALL_TOOLS:X}=await Promise.resolve().then(() => (X70(),hN1));return X.map((Q)=>{return{name:Q.name,inputSchema:B.toJSONSchema(Q.inputSchema,{unrepresentable:"any"}),outputSchema:Q.outputSchema?B.toJSONSchema(Q.outputSchema,{unrepresentable:"any"}):void 0,description:Q.description}})},data:C10(MJ(),Y)},{data:E10()},{data:T10(Y)}]}async function bN1(Y,X){try{let Q=Ix(),J=new mV(process.env.ENCRYPTION_KEY||""),G=new mT(Q.db,J),K=new lT(Q.db),W=wY4(Y);try{await K.create({organizationId:Y,slug:dW,name:dR,description:"Organization administration and settings",enabledPlugins:null,ui:null})}catch(Z){console.warn("Could not create org-admin project (may already exist):",Z)}await Promise.all(W.map(async(Z)=>{let H=null;if(Z.permissions)H=(await JK.api.createApiKey({body:{name:`${Z.data.app_name??crypto.randomUUID()}-mcp`,userId:X,permissions:Z.permissions,rateLimitEnabled:!1,metadata:{organization:{id:Y},purpose:"default-org-connections"}}}))?.key;let F=await Z.getTools?.()??await cD({id:"pending",title:Z.data.title,connection_type:Z.data.connection_type,connection_url:Z.data.connection_url,connection_token:Z.data.connection_token,connection_headers:Z.data.connection_headers}).catch(()=>null),$=Z.data.id?Z.data.id.startsWith(`${Y}_`)?Z.data.id:`${Y}_${Z.data.id}`:void 0;await G.create({...Z.data,id:$,tools:F,organization_id:Y,created_by:X,connection_token:Z.data.connection_token??H})}))}catch(Q){console.error("Error creating default MCP connections:",Q)}}var xN1=v(()=>{YX();Rx();kx();PJ0();TJ0();bx();h0();E2()});var Q70,qu;var Bu=v(()=>{Q70=["owner","admin","user"],qu=["owner","admin"]});var MY4=(Y)=>{return{defaultSSO:[{domain:Y.domain,providerId:Y.providerId,oidcConfig:{issuer:`https://login.microsoftonline.com/${Y.MS_TENANT_ID}/v2.0`,pkce:!0,clientId:Y.MS_CLIENT_ID,clientSecret:Y.MS_CLIENT_SECRET,discoveryEndpoint:`https://login.microsoftonline.com/${Y.MS_TENANT_ID}/v2.0/.well-known/openid-configuration`,authorizationEndpoint:`https://login.microsoftonline.com/${Y.MS_TENANT_ID}/oauth2/v2.0/authorize`,tokenEndpoint:`https://login.microsoftonline.com/${Y.MS_TENANT_ID}/oauth2/v2.0/token`,jwksEndpoint:`https://login.microsoftonline.com/${Y.MS_TENANT_ID}/discovery/v2.0/keys`,userInfoEndpoint:"https://graph.microsoft.com/oidc/userinfo",tokenEndpointAuthentication:"client_secret_post",scopes:Y.scopes,mapping:{id:"sub",email:"email",emailVerified:"email_verified",name:"name",image:"picture",extraFields:{emailVerified:"email_verified"}}}}]}},uN1=(Y)=>{if(Y.providerId==="microsoft")return MY4(Y);throw Error(`Unsupported provider: ${Y.providerId}`)};function AY4(Y){return Y.toLowerCase().trim().replace(/[^a-z0-9\s_-]+/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}function PY4(){let Y=Math.floor(Math.random()*mN1.length),X=Math.floor(Math.random()*gN1.length),Q=mN1[Y]??"deco",J=gN1[X]??"studio";return`${Q}-${J}`}var gN1,mN1,TY4,EY4,zu,CY4,IY4,RY4,lN1,D9,dN1=void 0,jY4,SY4,kY4,JK;var E2=v(()=>{Y60();AH1();HF1();VX0();yQ0();Y$1();Bx();H$1();Rx();AJ0();nq1();xN1();Bu();gN1=["labs","agent","studio","workspace","systems","core","cloud","works"],mN1=["capybara","guarana","deco","samba","feijoada","capoeira","carnival"];TY4=Object.values(BA()).map((Y)=>Y.map((X)=>X.name)).flat(),EY4={...sb,self:["*",...TY4]},zu=$W(EY4),CY4=zu.newRole({self:["*"],...MT.statements}),IY4=zu.newRole({self:["*"],...MT.statements}),RY4=zu.newRole({self:["*"],...MT.statements}),lN1=Object.values(BA()).map((Y)=>Y.map((X)=>`self:${X.name}`)).flat(),D9=ST.auth;if(D9.inviteEmailProviderId&&D9.emailProviders&&D9.emailProviders.length>0){let Y=Sx(D9.emailProviders,D9.inviteEmailProviderId);if(Y){let X=jx(Y);dN1=async(Q)=>{let J=Q.inviter.user?.name||Q.inviter.user?.email,G=`${MJ()}/auth/accept-invitation?invitationId=${Q.invitation.id}&redirectTo=/`;await X({to:Q.email,subject:`Invitation to join ${Q.organization.name}`,html:`
|
|
1042
1042
|
<h2>You've been invited!</h2>
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{M as t,Q as a}from"./index-Dzrb5IU0.js";const e=t(a,{target:"draft-7"});export{e as B};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as u}from"./infiniteQueryObserver-5Bkiqb7u.js";import{a5 as i}from"./index-Dzrb5IU0.js";function t(e,r){return i(e,u,r)}export{t as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a5 as u,a8 as s}from"./index-Dzrb5IU0.js";function o(e,r){return u(e,s,r)}export{o as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{ac as a,ad as c}from"./index-Dzrb5IU0.js";function e(...r){return a(c(r))}export{e as c};
|