@decocms/mesh 1.4.4 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/assets/{AlertCircle-B6rEUVLf.js → AlertCircle-BIlMffS8.js} +1 -1
- package/dist/client/assets/{ArrowLeft-DC_Ebc-m.js → ArrowLeft-CJ-eKoid.js} +1 -1
- package/dist/client/assets/{ChevronDown-rNVX3ifZ.js → ChevronDown-atiP0m-F.js} +1 -1
- package/dist/client/assets/{Clock-DS2iGkSJ.js → Clock-BD2gknBV.js} +1 -1
- package/dist/client/assets/{Code01-CoFYqM8q.js → Code01-BEefaaXC.js} +1 -1
- package/dist/client/assets/{Copy01-CCVZH6f1.js → Copy01-DhXqtugg.js} +1 -1
- package/dist/client/assets/{CpuChip02-DwHhz9CA.js → CpuChip02-BtgBI59l.js} +1 -1
- package/dist/client/assets/{DotsVertical-8kkJJG9R.js → DotsVertical-roys0n6e.js} +1 -1
- package/dist/client/assets/{File06-DxUGl7Wc.js → File06-MlW8n69V.js} +1 -1
- package/dist/client/assets/{FlipBackward-D9qJVjU9.js → FlipBackward-BSnTMMYy.js} +1 -1
- package/dist/client/assets/{GitBranch01-DLNdjhEu.js → GitBranch01-CEvRlFly.js} +1 -1
- package/dist/client/assets/{Grid01-BTunGha4.js → Grid01-CkwdbRed.js} +1 -1
- package/dist/client/assets/{Inbox01-BoV8p7IN.js → Inbox01-D66dNA_K.js} +1 -1
- package/dist/client/assets/{Key01-Bqzm5f6K.js → Key01-BXlD7hmS.js} +1 -1
- package/dist/client/assets/{LinkExternal01-WcFL8RpQ.js → LinkExternal01-O4xnNCff.js} +1 -1
- package/dist/client/assets/{Loading01-B0vdyVbH.js → Loading01-EiDV-2FW.js} +1 -1
- package/dist/client/assets/{Lock01-B0PVK-yI.js → Lock01-DpRDCI3P.js} +1 -1
- package/dist/client/assets/{Play-KfJ8X6ky.js → Play-FKw7EqPO.js} +1 -1
- package/dist/client/assets/{Plus-nu8-Nz8b.js → Plus-CwB-Rc8B.js} +1 -1
- package/dist/client/assets/{SearchMd-BFumDfkS.js → SearchMd-C6P9P1wF.js} +1 -1
- package/dist/client/assets/{Terminal-CDIp_seB.js → Terminal-Dv6w41J8.js} +1 -1
- package/dist/client/assets/{Trash01-1tKgR7uh.js → Trash01-Ctk7srex.js} +1 -1
- package/dist/client/assets/{X-hEo9Za23.js → X-Da4xsL05.js} +1 -1
- package/dist/client/assets/{XClose-BIthQxae.js → XClose-OUZ04LEo.js} +1 -1
- package/dist/client/assets/{alert-dialog-_VCwcCen.js → alert-dialog-D6UjYOUP.js} +1 -1
- package/dist/client/assets/{auth-BpfHzPVh.js → auth-CZR9mNdb.js} +1 -1
- package/dist/client/assets/{auth-catchall-D-D94naG.js → auth-catchall-BZWl_BRK.js} +1 -1
- package/dist/client/assets/{avatar-DHKqC-IM.js → avatar-BHE7lL4M.js} +1 -1
- package/dist/client/assets/{badge-Dkhmn9Qj.js → badge-B-u7R38I.js} +1 -1
- package/dist/client/assets/{button-BSXU4L7C.js → button-B13xcF6W.js} +1 -1
- package/dist/client/assets/{card-CXFRieEW.js → card-7VW-xSd-.js} +1 -1
- package/dist/client/assets/{checkbox-C-t_-9ku.js → checkbox-BMd2Z-WT.js} +1 -1
- package/dist/client/assets/{collection-detail-P20CfY5q.js → collection-detail-7eGCexqR.js} +3 -3
- package/dist/client/assets/{collection-display-button-BAoFTB4b.js → collection-display-button-D4VM0KQx.js} +1 -1
- package/dist/client/assets/{collection-header-B--7sWbR.js → collection-header-od14k6u3.js} +1 -1
- package/dist/client/assets/{collection-page-B71dz4fa.js → collection-page-BNuNM--s.js} +1 -1
- package/dist/client/assets/{collection-search-CrC01K4Z.js → collection-search-LnYLnFH8.js} +1 -1
- package/dist/client/assets/{collection-tab-dwp9LGxi.js → collection-tab-bg_gmLyh.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-CFoaxah9.js → collection-table-wrapper-B0AFEn1d.js} +1 -1
- package/dist/client/assets/{connection-card-eAyda1Mu.js → connection-card-r2tH19aR.js} +1 -1
- package/dist/client/assets/{connection-detail-Bn-jl6HG.js → connection-detail-Dm1s8Dj2.js} +1 -1
- package/dist/client/assets/connections-CWHukeOK.js +1 -0
- package/dist/client/assets/constants-CN4QOiqe.js +1 -0
- package/dist/client/assets/{core-C9AbX0ks.js → core-BqWxized.js} +1 -1
- package/dist/client/assets/{create-organization-dialog-DhHOFwW5.js → create-organization-dialog-CjneLhKn.js} +1 -1
- package/dist/client/assets/{dialog-Cj2udzC-.js → dialog-DoN4ORnY.js} +1 -1
- package/dist/client/assets/{dropdown-menu-ClBJUvd8.js → dropdown-menu-uXj8nKiT.js} +1 -1
- package/dist/client/assets/{empty-state-CYnIzDhF.js → empty-state-N07FE0YG.js} +1 -1
- package/dist/client/assets/{env-vars-editor-nU4IPD2j.js → env-vars-editor-B7JL_p-V.js} +1 -1
- package/dist/client/assets/{error-boundary-D5hb-PLt.js → error-boundary-Ce0_dLsG.js} +1 -1
- package/dist/client/assets/{extract-connection-data-BWB54H7f.js → extract-connection-data-CeT4F9gU.js} +1 -1
- package/dist/client/assets/{form-Dn7fy5O5.js → form-BQIYj24w.js} +1 -1
- package/dist/client/assets/{formatDistanceToNow-km7E2wF1.js → formatDistanceToNow-CArtWgcP.js} +1 -1
- package/dist/client/assets/gateway-detail-VCb3jL84.js +1 -0
- package/dist/client/assets/gateways-9p2LLkTK.js +1 -0
- package/dist/client/assets/{home-dep1g9Zf.js → home-DgfprghT.js} +1 -1
- package/dist/client/assets/{index-gqIvEQSH.js → index-CVgkE3Gv.js} +2 -2
- package/dist/client/assets/{index-tz4gB72W.js → index-DEMNtulg.js} +2 -2
- package/dist/client/assets/{index-DX5d9vx1.js → index-DcMa5gDs.js} +1 -1
- package/dist/client/assets/{index-CcNvI65p.js → index-DcvTq0xJ.js} +1 -1
- package/dist/client/assets/{input-Cb7MaM0d.js → input-YdP8mwrf.js} +1 -1
- package/dist/client/assets/json-Bz08jZIq.js +1 -0
- package/dist/client/assets/{json-syntax-highlighter-CCgbux_M.js → json-syntax-highlighter-Bif-CDya.js} +2 -2
- package/dist/client/assets/{layout-DtfNegCp.js → layout-BNxxrCBw.js} +1 -1
- package/dist/client/assets/{lazy-highlighter-CaGtIE-R.js → lazy-highlighter-C0vzyJy5.js} +1 -1
- package/dist/client/assets/{localstorage-keys-DIkWdWYS.js → localstorage-keys-DwKN3_Ky.js} +1 -1
- package/dist/client/assets/{login-DSSk45pi.js → login-UWyl_cxx.js} +1 -1
- package/dist/client/assets/{mcp-oauth-BOAcAnr_.js → mcp-oauth-Dqr97r2H.js} +1 -1
- package/dist/client/assets/{members-D4I8qlnr.js → members-C3UV37Kw.js} +1 -1
- package/dist/client/assets/{monitoring-CvcerPLg.js → monitoring-Ds52TSSS.js} +2 -2
- package/dist/client/assets/{oauth-callback-CY5bCrs6.js → oauth-callback-D4M9mHyH.js} +1 -1
- package/dist/client/assets/{page-Du4118GJ.js → page-B7ia0_lh.js} +2 -2
- package/dist/client/assets/{pin-to-sidebar-button-CwlJToUG.js → pin-to-sidebar-button-BKotT_Nc.js} +1 -1
- package/dist/client/assets/{popover-BPqLZ76M.js → popover-7jr0PuXV.js} +1 -1
- package/dist/client/assets/prism-light-CHE2alug.js +1 -0
- package/dist/client/assets/resizable-qkPSJ31g.js +1 -0
- package/dist/client/assets/{resource-tabs-CmUpRVKA.js → resource-tabs-qR3NhTLd.js} +1 -1
- package/dist/client/assets/{responsive-select-DwsIwS1V.js → responsive-select-CJQwNPPj.js} +1 -1
- package/dist/client/assets/{select-HGITgxwS.js → select-L_OjJ9sW.js} +1 -1
- package/dist/client/assets/{settings-sSoOIGWg.js → settings-BapAo6i2.js} +1 -1
- package/dist/client/assets/shell-layout-DqUuQ9gz.js +19 -0
- package/dist/client/assets/{spinner-BUVePO6d.js → spinner-CAJeeq5B.js} +1 -1
- package/dist/client/assets/{store-H6vucsd1.js → store-DTMoxgob.js} +1 -1
- package/dist/client/assets/{store-app-detail-aULJzMOJ.js → store-app-detail-CbGg2GlI.js} +1 -1
- package/dist/client/assets/{switch-BwTlw9qL.js → switch-DlwEQXd2.js} +1 -1
- package/dist/client/assets/{textarea-BAs6HmBZ.js → textarea-IOVeLZOt.js} +1 -1
- package/dist/client/assets/{thread-history-popover-DbEl1KJu.js → thread-history-popover-COjpShBU.js} +3 -3
- package/dist/client/assets/{tools-list-thZyoBrU.js → tools-list-l6xtSgWR.js} +1 -1
- package/dist/client/assets/{tooltip-Bzy1O5cq.js → tooltip-C7B84lYF.js} +1 -1
- package/dist/client/assets/{types-BVTsq_OW.js → types-BmKCUQAI.js} +1 -1
- package/dist/client/assets/{use-binding-jUI3xZmp.js → use-binding-Ce8NG0MO.js} +1 -1
- package/dist/client/assets/{use-connection-DRZbGk_A.js → use-connection-D-LWel3A.js} +1 -1
- package/dist/client/assets/{use-connection-resources-B3tDNT6E.js → use-connection-resources-CJzk5_Wj.js} +1 -1
- package/dist/client/assets/{use-gateway-CUxuCVmJ.js → use-gateway-eXp_1iQc.js} +1 -1
- package/dist/client/assets/{use-list-state-CkGBL95Z.js → use-list-state-CmxR0QRn.js} +1 -1
- package/dist/client/assets/{use-mcp-CMt9Wy3X.js → use-mcp-Cmlg9h6L.js} +1 -1
- package/dist/client/assets/{use-members-cyA2aC2q.js → use-members-Drex2zGi.js} +1 -1
- package/dist/client/assets/{use-mobile-B8xlavN6.js → use-mobile-B-R7B7Hp.js} +1 -1
- package/dist/client/assets/{use-organization-settings-C7IdFOTo.js → use-organization-settings-B_G_DBCR.js} +1 -1
- package/dist/client/assets/{use-tool-call-CsOSZ1pI.js → use-tool-call-BN3WED_Z.js} +1 -1
- package/dist/client/assets/useQuery-DLJrS2VC.js +1 -0
- package/dist/client/assets/{useSuspenseInfiniteQuery-DqCwXIKB.js → useSuspenseInfiniteQuery-DFaXtjFO.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-COcukfhX.js → view-mode-toggle-BpRlpgBn.js} +1 -1
- package/dist/client/assets/workflow-CBeu3WB4.js +1 -0
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +2 -2
- package/dist/server/migrate.js +2 -2
- package/dist/server/server.js +3 -3
- package/package.json +1 -1
- package/dist/client/assets/connections-CDl5cKXc.js +0 -1
- package/dist/client/assets/constants-C-5m3xCJ.js +0 -1
- package/dist/client/assets/gateway-detail-BEimKnAa.js +0 -1
- package/dist/client/assets/gateways-1GR6BIbg.js +0 -1
- package/dist/client/assets/json-CevIphLA.js +0 -1
- package/dist/client/assets/prism-light-bnbWF_0X.js +0 -1
- package/dist/client/assets/resizable-Ck5ltOjh.js +0 -1
- package/dist/client/assets/shell-layout-BCUXUEeW.js +0 -19
- package/dist/client/assets/useQuery-Bl78N6vT.js +0 -1
- package/dist/client/assets/workflow-CaCjE8aO.js +0 -1
package/dist/server/migrate.js
CHANGED
|
@@ -211,7 +211,7 @@ data:
|
|
|
211
211
|
|
|
212
212
|
`,X.enqueue(Q.encode(G)),!0}catch{return!1}}handleUnsupportedRequest(){return new Response(JSON.stringify({jsonrpc:"2.0",error:{code:-32000,message:"Method not allowed."},id:null}),{status:405,headers:{Allow:"GET, POST, DELETE","Content-Type":"application/json"}})}async handlePostRequest(X,Q){try{let J=X.headers.get("accept");if(!J?.includes("application/json")||!J.includes("text/event-stream"))return this.createJsonErrorResponse(406,-32000,"Not Acceptable: Client must accept both application/json and text/event-stream");let Y=X.headers.get("content-type");if(!Y||!Y.includes("application/json"))return this.createJsonErrorResponse(415,-32000,"Unsupported Media Type: Content-Type must be application/json");let G={headers:Object.fromEntries(X.headers.entries())},$;if(Q?.parsedBody!==void 0)$=Q.parsedBody;else try{$=await X.json()}catch{return this.createJsonErrorResponse(400,-32700,"Parse error: Invalid JSON")}let W;try{if(Array.isArray($))W=$.map((j)=>YJ.parse(j));else W=[YJ.parse($)]}catch{return this.createJsonErrorResponse(400,-32700,"Parse error: Invalid JSON-RPC message")}let H=W.some(Cb);if(H){if(this._initialized&&this.sessionId!==void 0)return this.createJsonErrorResponse(400,-32600,"Invalid Request: Server already initialized");if(W.length>1)return this.createJsonErrorResponse(400,-32600,"Invalid Request: Only one initialization request is allowed");if(this.sessionId=this.sessionIdGenerator?.(),this._initialized=!0,this.sessionId&&this._onsessioninitialized)await Promise.resolve(this._onsessioninitialized(this.sessionId))}if(!H){let j=this.validateSession(X);if(j)return j;let O=this.validateProtocolVersion(X);if(O)return O}if(!W.some(BY)){for(let j of W)this.onmessage?.(j,{authInfo:Q?.authInfo,requestInfo:G});return new Response(null,{status:202})}let Z=crypto.randomUUID(),F=W.find((j)=>Cb(j)),V=F?F.params.protocolVersion:X.headers.get("mcp-protocol-version")??NX0;if(this._enableJsonResponse)return new Promise((j)=>{this._streamMapping.set(Z,{resolveJson:j,cleanup:()=>{this._streamMapping.delete(Z)}});for(let O of W)if(BY(O))this._requestToStreamMapping.set(O.id,Z);for(let O of W)this.onmessage?.(O,{authInfo:Q?.authInfo,requestInfo:G})});let q=new TextEncoder,B,L=new ReadableStream({start:(j)=>{B=j},cancel:()=>{this._streamMapping.delete(Z)}}),D={"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"};if(this.sessionId!==void 0)D["mcp-session-id"]=this.sessionId;for(let j of W)if(BY(j))this._streamMapping.set(Z,{controller:B,encoder:q,cleanup:()=>{this._streamMapping.delete(Z);try{B.close()}catch{}}}),this._requestToStreamMapping.set(j.id,Z);await this.writePrimingEvent(B,q,Z,V);for(let j of W){let O,T;if(BY(j)&&this._eventStore&&V>="2025-11-25")O=()=>{this.closeSSEStream(j.id)},T=()=>{this.closeStandaloneSSEStream()};this.onmessage?.(j,{authInfo:Q?.authInfo,requestInfo:G,closeSSEStream:O,closeStandaloneSSEStream:T})}return new Response(L,{status:200,headers:D})}catch(J){return this.onerror?.(J),this.createJsonErrorResponse(400,-32700,"Parse error",{data:String(J)})}}async handleDeleteRequest(X){let Q=this.validateSession(X);if(Q)return Q;let J=this.validateProtocolVersion(X);if(J)return J;return await Promise.resolve(this._onsessionclosed?.(this.sessionId)),await this.close(),new Response(null,{status:200})}validateSession(X){if(this.sessionIdGenerator===void 0)return;if(!this._initialized)return this.createJsonErrorResponse(400,-32000,"Bad Request: Server not initialized");let Q=X.headers.get("mcp-session-id");if(!Q)return this.createJsonErrorResponse(400,-32000,"Bad Request: Mcp-Session-Id header is required");if(Q!==this.sessionId)return this.createJsonErrorResponse(404,-32001,"Session not found");return}validateProtocolVersion(X){let Q=X.headers.get("mcp-protocol-version");if(Q!==null&&!dW.includes(Q))return this.createJsonErrorResponse(400,-32000,`Bad Request: Unsupported protocol version: ${Q} (supported versions: ${dW.join(", ")})`);return}async close(){this._streamMapping.forEach(({cleanup:X})=>{X()}),this._streamMapping.clear(),this._requestResponseMap.clear(),this.onclose?.()}closeSSEStream(X){let Q=this._requestToStreamMapping.get(X);if(!Q)return;let J=this._streamMapping.get(Q);if(J)J.cleanup()}closeStandaloneSSEStream(){let X=this._streamMapping.get(this._standaloneSseStreamId);if(X)X.cleanup()}async send(X,Q){let J=Q?.relatedRequestId;if(q9(X)||SK(X))J=X.id;if(J===void 0){if(q9(X)||SK(X))throw Error("Cannot send a response on a standalone SSE stream unless resuming a previous client request");let $;if(this._eventStore)$=await this._eventStore.storeEvent(this._standaloneSseStreamId,X);let W=this._streamMapping.get(this._standaloneSseStreamId);if(W===void 0)return;if(W.controller&&W.encoder)this.writeSSEEvent(W.controller,W.encoder,X,$);return}let Y=this._requestToStreamMapping.get(J);if(!Y)throw Error(`No connection established for request ID: ${String(J)}`);let G=this._streamMapping.get(Y);if(!this._enableJsonResponse&&G?.controller&&G?.encoder){let $;if(this._eventStore)$=await this._eventStore.storeEvent(Y,X);this.writeSSEEvent(G.controller,G.encoder,X,$)}if(q9(X)||SK(X)){this._requestResponseMap.set(J,X);let $=Array.from(this._requestToStreamMapping.entries()).filter(([H,K])=>K===Y).map(([H])=>H);if($.every((H)=>this._requestResponseMap.has(H))){if(!G)throw Error(`No connection established for request ID: ${String(J)}`);if(this._enableJsonResponse&&G.resolveJson){let H={"Content-Type":"application/json"};if(this.sessionId!==void 0)H["mcp-session-id"]=this.sessionId;let K=$.map((Z)=>this._requestResponseMap.get(Z));if(K.length===1)G.resolveJson(new Response(JSON.stringify(K[0]),{status:200,headers:H}));else G.resolveJson(new Response(JSON.stringify(K),{status:200,headers:H}))}else G.cleanup();for(let H of $)this._requestResponseMap.delete(H),this._requestToStreamMapping.delete(H)}}}}var B50=m(()=>{GJ()});var L50=(...X)=>{return function(J,Y){let G=($)=>{let W=X[$];if(!W)return Y();return W(J,()=>G($+1))};return G(0)}};class D50{config;tools=[];callToolMiddlewares=[];constructor(X){this.config={...X,capabilities:X.capabilities??{tools:{}}}}withTool(X){return this.tools.push(X),this}withTools(X){return this.tools.push(...X),this}callToolMiddleware(...X){return this.callToolMiddlewares.push(...X),this}build(){let X=this.callToolMiddlewares.length>0?L50(...this.callToolMiddlewares):null,Q=()=>{let J=new Uh({name:this.config.name,version:this.config.version},{capabilities:this.config.capabilities});for(let Y of this.tools){let G=async(K)=>{try{let Z=await Y.handler(K);return{content:[{type:"text",text:JSON.stringify(Z)}],structuredContent:Z}}catch(Z){return{content:[{type:"text",text:`Error: ${Z.message}`}],isError:!0}}},$=X?async(K)=>{let Z={method:"tools/call",params:{name:Y.name,arguments:K}};return await X(Z,()=>G(K))}:G,W="shape"in Y.inputSchema?Y.inputSchema.shape:N.object({}).shape,H=Y.outputSchema&&"shape"in Y.outputSchema?Y.outputSchema.shape:N.object({}).shape;J.registerTool(Y.name,{annotations:Y.annotations,description:Y.description??"",inputSchema:W,outputSchema:H},$)}return J};return{callStreamableTool:async(J,Y)=>{let G=this.tools.find((W)=>W.name===J);if(!G)throw Error(`Tool ${J} not found`);let $=await G.handler(Y);if(!($ instanceof Response))throw Error(`Tool ${J} returned a non-response`);return $},client:{listTools:async()=>{return{tools:this.tools.map((J)=>({name:J.name,description:J.description??"",inputSchema:N.toJSONSchema(J.inputSchema),outputSchema:J.outputSchema?N.toJSONSchema(J.outputSchema):void 0}))}},callTool:async(J)=>{let Y=this.tools.find((G)=>G.name===J.name);if(!Y)return{content:[{type:"text",text:"Tool not found"}]};try{let G=await Y?.handler(J.arguments??{});return{content:[{type:"text",text:JSON.stringify(G)}],structuredContent:G}}catch(G){return{content:[{type:"text",text:`Error: ${G.message}`}]}}}},fetch:async(J)=>{let Y=new zh({enableJsonResponse:J.headers.get("Accept")?.includes("application/json")??!1});return await Q().connect(Y),await Y.handleRequest(J)}}}}function j50(X){return new D50(X)}var N50=m(()=>{z50();B50();d0()});var M50=l((O50)=>{Object.defineProperty(O50,"__esModule",{value:!0});O50._globalThis=void 0;O50._globalThis=typeof globalThis==="object"?globalThis:global});var P50=l((sW)=>{var Is0=sW&&sW.__createBinding||(Object.create?function(X,Q,J,Y){if(Y===void 0)Y=J;Object.defineProperty(X,Y,{enumerable:!0,get:function(){return Q[J]}})}:function(X,Q,J,Y){if(Y===void 0)Y=J;X[Y]=Q[J]}),Ss0=sW&&sW.__exportStar||function(X,Q){for(var J in X)if(J!=="default"&&!Object.prototype.hasOwnProperty.call(Q,J))Is0(Q,X,J)};Object.defineProperty(sW,"__esModule",{value:!0});Ss0(M50(),sW)});var T50=l((tW)=>{var vs0=tW&&tW.__createBinding||(Object.create?function(X,Q,J,Y){if(Y===void 0)Y=J;Object.defineProperty(X,Y,{enumerable:!0,get:function(){return Q[J]}})}:function(X,Q,J,Y){if(Y===void 0)Y=J;X[Y]=Q[J]}),ks0=tW&&tW.__exportStar||function(X,Q){for(var J in X)if(J!=="default"&&!Object.prototype.hasOwnProperty.call(Q,J))vs0(Q,X,J)};Object.defineProperty(tW,"__esModule",{value:!0});ks0(P50(),tW)});var Bh=l((A50)=>{Object.defineProperty(A50,"__esModule",{value:!0});A50.VERSION=void 0;A50.VERSION="1.9.0"});var v50=l((I50)=>{Object.defineProperty(I50,"__esModule",{value:!0});I50.isCompatible=I50._makeCompatibilityCheck=void 0;var _s0=Bh(),C50=/^(\d+)\.(\d+)\.(\d+)(-(.+))?$/;function R50(X){let Q=new Set([X]),J=new Set,Y=X.match(C50);if(!Y)return()=>!1;let G={major:+Y[1],minor:+Y[2],patch:+Y[3],prerelease:Y[4]};if(G.prerelease!=null)return function(K){return K===X};function $(H){return J.add(H),!1}function W(H){return Q.add(H),!0}return function(K){if(Q.has(K))return!0;if(J.has(K))return!1;let Z=K.match(C50);if(!Z)return $(K);let F={major:+Z[1],minor:+Z[2],patch:+Z[3],prerelease:Z[4]};if(F.prerelease!=null)return $(K);if(G.major!==F.major)return $(K);if(G.major===0){if(G.minor===F.minor&&G.patch<=F.patch)return W(K);return $(K)}if(G.minor<=F.minor)return W(K);return $(K)}}I50._makeCompatibilityCheck=R50;I50.isCompatible=R50(_s0.VERSION)});var eW=l((k50)=>{Object.defineProperty(k50,"__esModule",{value:!0});k50.unregisterGlobal=k50.getGlobal=k50.registerGlobal=void 0;var ys0=T50(),QZ=Bh(),fs0=v50(),hs0=QZ.VERSION.split(".")[0],LU=Symbol.for(`opentelemetry.js.api.${hs0}`),DU=ys0._globalThis;function gs0(X,Q,J,Y=!1){var G;let $=DU[LU]=(G=DU[LU])!==null&&G!==void 0?G:{version:QZ.VERSION};if(!Y&&$[X]){let W=Error(`@opentelemetry/api: Attempted duplicate registration of API: ${X}`);return J.error(W.stack||W.message),!1}if($.version!==QZ.VERSION){let W=Error(`@opentelemetry/api: Registration of version v${$.version} for ${X} does not match previously registered API v${QZ.VERSION}`);return J.error(W.stack||W.message),!1}return $[X]=Q,J.debug(`@opentelemetry/api: Registered a global for ${X} v${QZ.VERSION}.`),!0}k50.registerGlobal=gs0;function xs0(X){var Q,J;let Y=(Q=DU[LU])===null||Q===void 0?void 0:Q.version;if(!Y||!(0,fs0.isCompatible)(Y))return;return(J=DU[LU])===null||J===void 0?void 0:J[X]}k50.getGlobal=xs0;function us0(X,Q){Q.debug(`@opentelemetry/api: Unregistering a global for ${X} v${QZ.VERSION}.`);let J=DU[LU];if(J)delete J[X]}k50.unregisterGlobal=us0});var h50=l((y50)=>{Object.defineProperty(y50,"__esModule",{value:!0});y50.DiagComponentLogger=void 0;var ds0=eW();class b50{constructor(X){this._namespace=X.namespace||"DiagComponentLogger"}debug(...X){return jU("debug",this._namespace,X)}error(...X){return jU("error",this._namespace,X)}info(...X){return jU("info",this._namespace,X)}warn(...X){return jU("warn",this._namespace,X)}verbose(...X){return jU("verbose",this._namespace,X)}}y50.DiagComponentLogger=b50;function jU(X,Q,J){let Y=(0,ds0.getGlobal)("diag");if(!Y)return;return J.unshift(Q),Y[X](...J)}});var LP=l((g50)=>{Object.defineProperty(g50,"__esModule",{value:!0});g50.DiagLogLevel=void 0;var ps0;(function(X){X[X.NONE=0]="NONE",X[X.ERROR=30]="ERROR",X[X.WARN=50]="WARN",X[X.INFO=60]="INFO",X[X.DEBUG=70]="DEBUG",X[X.VERBOSE=80]="VERBOSE",X[X.ALL=9999]="ALL"})(ps0=g50.DiagLogLevel||(g50.DiagLogLevel={}))});var m50=l((x50)=>{Object.defineProperty(x50,"__esModule",{value:!0});x50.createLogLevelDiagLogger=void 0;var wG=LP();function cs0(X,Q){if(X<wG.DiagLogLevel.NONE)X=wG.DiagLogLevel.NONE;else if(X>wG.DiagLogLevel.ALL)X=wG.DiagLogLevel.ALL;Q=Q||{};function J(Y,G){let $=Q[Y];if(typeof $==="function"&&X>=G)return $.bind(Q);return function(){}}return{error:J("error",wG.DiagLogLevel.ERROR),warn:J("warn",wG.DiagLogLevel.WARN),info:J("info",wG.DiagLogLevel.INFO),debug:J("debug",wG.DiagLogLevel.DEBUG),verbose:J("verbose",wG.DiagLogLevel.VERBOSE)}}x50.createLogLevelDiagLogger=cs0});var X7=l((d50)=>{Object.defineProperty(d50,"__esModule",{value:!0});d50.DiagAPI=void 0;var ns0=h50(),is0=m50(),l50=LP(),DP=eW(),rs0="diag";class Dh{constructor(){function X(Y){return function(...G){let $=(0,DP.getGlobal)("diag");if(!$)return;return $[Y](...G)}}let Q=this,J=(Y,G={logLevel:l50.DiagLogLevel.INFO})=>{var $,W,H;if(Y===Q){let F=Error("Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation");return Q.error(($=F.stack)!==null&&$!==void 0?$:F.message),!1}if(typeof G==="number")G={logLevel:G};let K=(0,DP.getGlobal)("diag"),Z=(0,is0.createLogLevelDiagLogger)((W=G.logLevel)!==null&&W!==void 0?W:l50.DiagLogLevel.INFO,Y);if(K&&!G.suppressOverrideMessage){let F=(H=Error().stack)!==null&&H!==void 0?H:"<failed to generate stacktrace>";K.warn(`Current logger will be overwritten from ${F}`),Z.warn(`Current logger will overwrite one already registered from ${F}`)}return(0,DP.registerGlobal)("diag",Z,Q,!0)};Q.setLogger=J,Q.disable=()=>{(0,DP.unregisterGlobal)(rs0,Q)},Q.createComponentLogger=(Y)=>{return new ns0.DiagComponentLogger(Y)},Q.verbose=X("verbose"),Q.debug=X("debug"),Q.info=X("info"),Q.warn=X("warn"),Q.error=X("error")}static instance(){if(!this._instance)this._instance=new Dh;return this._instance}}d50.DiagAPI=Dh});var i50=l((c50)=>{Object.defineProperty(c50,"__esModule",{value:!0});c50.BaggageImpl=void 0;class JZ{constructor(X){this._entries=X?new Map(X):new Map}getEntry(X){let Q=this._entries.get(X);if(!Q)return;return Object.assign({},Q)}getAllEntries(){return Array.from(this._entries.entries()).map(([X,Q])=>[X,Q])}setEntry(X,Q){let J=new JZ(this._entries);return J._entries.set(X,Q),J}removeEntry(X){let Q=new JZ(this._entries);return Q._entries.delete(X),Q}removeEntries(...X){let Q=new JZ(this._entries);for(let J of X)Q._entries.delete(J);return Q}clear(){return new JZ}}c50.BaggageImpl=JZ});var o50=l((r50)=>{Object.defineProperty(r50,"__esModule",{value:!0});r50.baggageEntryMetadataSymbol=void 0;r50.baggageEntryMetadataSymbol=Symbol("BaggageEntryMetadata")});var jh=l((s50)=>{Object.defineProperty(s50,"__esModule",{value:!0});s50.baggageEntryMetadataFromString=s50.createBaggage=void 0;var as0=X7(),os0=i50(),ss0=o50(),ts0=as0.DiagAPI.instance();function es0(X={}){return new os0.BaggageImpl(new Map(Object.entries(X)))}s50.createBaggage=es0;function Xt0(X){if(typeof X!=="string")ts0.error(`Cannot create baggage metadata from unknown type: ${typeof X}`),X="";return{__TYPE__:ss0.baggageEntryMetadataSymbol,toString(){return X}}}s50.baggageEntryMetadataFromString=Xt0});var NU=l((e50)=>{Object.defineProperty(e50,"__esModule",{value:!0});e50.ROOT_CONTEXT=e50.createContextKey=void 0;function Jt0(X){return Symbol.for(X)}e50.createContextKey=Jt0;class jP{constructor(X){let Q=this;Q._currentContext=X?new Map(X):new Map,Q.getValue=(J)=>Q._currentContext.get(J),Q.setValue=(J,Y)=>{let G=new jP(Q._currentContext);return G._currentContext.set(J,Y),G},Q.deleteValue=(J)=>{let Y=new jP(Q._currentContext);return Y._currentContext.delete(J),Y}}}e50.ROOT_CONTEXT=new jP});var GW0=l((JW0)=>{Object.defineProperty(JW0,"__esModule",{value:!0});JW0.DiagConsoleLogger=void 0;var Nh=[{n:"error",c:"error"},{n:"warn",c:"warn"},{n:"info",c:"info"},{n:"debug",c:"debug"},{n:"verbose",c:"trace"}];class QW0{constructor(){function X(Q){return function(...J){if(console){let Y=console[Q];if(typeof Y!=="function")Y=console.log;if(typeof Y==="function")return Y.apply(console,J)}}}for(let Q=0;Q<Nh.length;Q++)this[Nh[Q].n]=X(Nh[Q].c)}}JW0.DiagConsoleLogger=QW0});var Rh=l(($W0)=>{Object.defineProperty($W0,"__esModule",{value:!0});$W0.createNoopMeter=$W0.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC=$W0.NOOP_OBSERVABLE_GAUGE_METRIC=$W0.NOOP_OBSERVABLE_COUNTER_METRIC=$W0.NOOP_UP_DOWN_COUNTER_METRIC=$W0.NOOP_HISTOGRAM_METRIC=$W0.NOOP_GAUGE_METRIC=$W0.NOOP_COUNTER_METRIC=$W0.NOOP_METER=$W0.NoopObservableUpDownCounterMetric=$W0.NoopObservableGaugeMetric=$W0.NoopObservableCounterMetric=$W0.NoopObservableMetric=$W0.NoopHistogramMetric=$W0.NoopGaugeMetric=$W0.NoopUpDownCounterMetric=$W0.NoopCounterMetric=$W0.NoopMetric=$W0.NoopMeter=void 0;class Oh{constructor(){}createGauge(X,Q){return $W0.NOOP_GAUGE_METRIC}createHistogram(X,Q){return $W0.NOOP_HISTOGRAM_METRIC}createCounter(X,Q){return $W0.NOOP_COUNTER_METRIC}createUpDownCounter(X,Q){return $W0.NOOP_UP_DOWN_COUNTER_METRIC}createObservableGauge(X,Q){return $W0.NOOP_OBSERVABLE_GAUGE_METRIC}createObservableCounter(X,Q){return $W0.NOOP_OBSERVABLE_COUNTER_METRIC}createObservableUpDownCounter(X,Q){return $W0.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC}addBatchObservableCallback(X,Q){}removeBatchObservableCallback(X){}}$W0.NoopMeter=Oh;class YZ{}$W0.NoopMetric=YZ;class wh extends YZ{add(X,Q){}}$W0.NoopCounterMetric=wh;class Mh extends YZ{add(X,Q){}}$W0.NoopUpDownCounterMetric=Mh;class Ph extends YZ{record(X,Q){}}$W0.NoopGaugeMetric=Ph;class Th extends YZ{record(X,Q){}}$W0.NoopHistogramMetric=Th;class OU{addCallback(X){}removeCallback(X){}}$W0.NoopObservableMetric=OU;class Ah extends OU{}$W0.NoopObservableCounterMetric=Ah;class Eh extends OU{}$W0.NoopObservableGaugeMetric=Eh;class Ch extends OU{}$W0.NoopObservableUpDownCounterMetric=Ch;$W0.NOOP_METER=new Oh;$W0.NOOP_COUNTER_METRIC=new wh;$W0.NOOP_GAUGE_METRIC=new Ph;$W0.NOOP_HISTOGRAM_METRIC=new Th;$W0.NOOP_UP_DOWN_COUNTER_METRIC=new Mh;$W0.NOOP_OBSERVABLE_COUNTER_METRIC=new Ah;$W0.NOOP_OBSERVABLE_GAUGE_METRIC=new Eh;$W0.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC=new Ch;function Gt0(){return $W0.NOOP_METER}$W0.createNoopMeter=Gt0});var LW0=l((BW0)=>{Object.defineProperty(BW0,"__esModule",{value:!0});BW0.ValueType=void 0;var Bt0;(function(X){X[X.INT=0]="INT",X[X.DOUBLE=1]="DOUBLE"})(Bt0=BW0.ValueType||(BW0.ValueType={}))});var Sh=l((DW0)=>{Object.defineProperty(DW0,"__esModule",{value:!0});DW0.defaultTextMapSetter=DW0.defaultTextMapGetter=void 0;DW0.defaultTextMapGetter={get(X,Q){if(X==null)return;return X[Q]},keys(X){if(X==null)return[];return Object.keys(X)}};DW0.defaultTextMapSetter={set(X,Q,J){if(X==null)return;X[Q]=J}}});var MW0=l((OW0)=>{Object.defineProperty(OW0,"__esModule",{value:!0});OW0.NoopContextManager=void 0;var Dt0=NU();class NW0{active(){return Dt0.ROOT_CONTEXT}with(X,Q,J,...Y){return Q.call(J,...Y)}bind(X,Q){return Q}enable(){return this}disable(){return this}}OW0.NoopContextManager=NW0});var wU=l((TW0)=>{Object.defineProperty(TW0,"__esModule",{value:!0});TW0.ContextAPI=void 0;var jt0=MW0(),vh=eW(),PW0=X7(),kh="context",Nt0=new jt0.NoopContextManager;class _h{constructor(){}static getInstance(){if(!this._instance)this._instance=new _h;return this._instance}setGlobalContextManager(X){return(0,vh.registerGlobal)(kh,X,PW0.DiagAPI.instance())}active(){return this._getContextManager().active()}with(X,Q,J,...Y){return this._getContextManager().with(X,Q,J,...Y)}bind(X,Q){return this._getContextManager().bind(X,Q)}_getContextManager(){return(0,vh.getGlobal)(kh)||Nt0}disable(){this._getContextManager().disable(),(0,vh.unregisterGlobal)(kh,PW0.DiagAPI.instance())}}TW0.ContextAPI=_h});var yh=l((EW0)=>{Object.defineProperty(EW0,"__esModule",{value:!0});EW0.TraceFlags=void 0;var Ot0;(function(X){X[X.NONE=0]="NONE",X[X.SAMPLED=1]="SAMPLED"})(Ot0=EW0.TraceFlags||(EW0.TraceFlags={}))});var NP=l((CW0)=>{Object.defineProperty(CW0,"__esModule",{value:!0});CW0.INVALID_SPAN_CONTEXT=CW0.INVALID_TRACEID=CW0.INVALID_SPANID=void 0;var wt0=yh();CW0.INVALID_SPANID="0000000000000000";CW0.INVALID_TRACEID="00000000000000000000000000000000";CW0.INVALID_SPAN_CONTEXT={traceId:CW0.INVALID_TRACEID,spanId:CW0.INVALID_SPANID,traceFlags:wt0.TraceFlags.NONE}});var OP=l((kW0)=>{Object.defineProperty(kW0,"__esModule",{value:!0});kW0.NonRecordingSpan=void 0;var Mt0=NP();class vW0{constructor(X=Mt0.INVALID_SPAN_CONTEXT){this._spanContext=X}spanContext(){return this._spanContext}setAttribute(X,Q){return this}setAttributes(X){return this}addEvent(X,Q){return this}addLink(X){return this}addLinks(X){return this}setStatus(X){return this}updateName(X){return this}end(X){}isRecording(){return!1}recordException(X,Q){}}kW0.NonRecordingSpan=vW0});var gh=l((yW0)=>{Object.defineProperty(yW0,"__esModule",{value:!0});yW0.getSpanContext=yW0.setSpanContext=yW0.deleteSpan=yW0.setSpan=yW0.getActiveSpan=yW0.getSpan=void 0;var Pt0=NU(),Tt0=OP(),At0=wU(),fh=(0,Pt0.createContextKey)("OpenTelemetry Context Key SPAN");function hh(X){return X.getValue(fh)||void 0}yW0.getSpan=hh;function Et0(){return hh(At0.ContextAPI.getInstance().active())}yW0.getActiveSpan=Et0;function bW0(X,Q){return X.setValue(fh,Q)}yW0.setSpan=bW0;function Ct0(X){return X.deleteValue(fh)}yW0.deleteSpan=Ct0;function Rt0(X,Q){return bW0(X,new Tt0.NonRecordingSpan(Q))}yW0.setSpanContext=Rt0;function It0(X){var Q;return(Q=hh(X))===null||Q===void 0?void 0:Q.spanContext()}yW0.getSpanContext=It0});var wP=l((uW0)=>{Object.defineProperty(uW0,"__esModule",{value:!0});uW0.wrapSpanContext=uW0.isSpanContextValid=uW0.isValidSpanId=uW0.isValidTraceId=void 0;var hW0=NP(),yt0=OP(),ft0=/^([0-9a-f]{32})$/i,ht0=/^[0-9a-f]{16}$/i;function gW0(X){return ft0.test(X)&&X!==hW0.INVALID_TRACEID}uW0.isValidTraceId=gW0;function xW0(X){return ht0.test(X)&&X!==hW0.INVALID_SPANID}uW0.isValidSpanId=xW0;function gt0(X){return gW0(X.traceId)&&xW0(X.spanId)}uW0.isSpanContextValid=gt0;function xt0(X){return new yt0.NonRecordingSpan(X)}uW0.wrapSpanContext=xt0});var mh=l((pW0)=>{Object.defineProperty(pW0,"__esModule",{value:!0});pW0.NoopTracer=void 0;var dt0=wU(),lW0=gh(),xh=OP(),pt0=wP(),uh=dt0.ContextAPI.getInstance();class dW0{startSpan(X,Q,J=uh.active()){if(Boolean(Q===null||Q===void 0?void 0:Q.root))return new xh.NonRecordingSpan;let G=J&&(0,lW0.getSpanContext)(J);if(ct0(G)&&(0,pt0.isSpanContextValid)(G))return new xh.NonRecordingSpan(G);else return new xh.NonRecordingSpan}startActiveSpan(X,Q,J,Y){let G,$,W;if(arguments.length<2)return;else if(arguments.length===2)W=Q;else if(arguments.length===3)G=Q,W=J;else G=Q,$=J,W=Y;let H=$!==null&&$!==void 0?$:uh.active(),K=this.startSpan(X,G,H),Z=(0,lW0.setSpan)(H,K);return uh.with(Z,W,void 0,K)}}pW0.NoopTracer=dW0;function ct0(X){return typeof X==="object"&&typeof X.spanId==="string"&&typeof X.traceId==="string"&&typeof X.traceFlags==="number"}});var lh=l((iW0)=>{Object.defineProperty(iW0,"__esModule",{value:!0});iW0.ProxyTracer=void 0;var nt0=mh(),it0=new nt0.NoopTracer;class nW0{constructor(X,Q,J,Y){this._provider=X,this.name=Q,this.version=J,this.options=Y}startSpan(X,Q,J){return this._getTracer().startSpan(X,Q,J)}startActiveSpan(X,Q,J,Y){let G=this._getTracer();return Reflect.apply(G.startActiveSpan,G,arguments)}_getTracer(){if(this._delegate)return this._delegate;let X=this._provider.getDelegateTracer(this.name,this.version,this.options);if(!X)return it0;return this._delegate=X,this._delegate}}iW0.ProxyTracer=nW0});var tW0=l((oW0)=>{Object.defineProperty(oW0,"__esModule",{value:!0});oW0.NoopTracerProvider=void 0;var rt0=mh();class aW0{getTracer(X,Q,J){return new rt0.NoopTracer}}oW0.NoopTracerProvider=aW0});var dh=l((X70)=>{Object.defineProperty(X70,"__esModule",{value:!0});X70.ProxyTracerProvider=void 0;var at0=lh(),ot0=tW0(),st0=new ot0.NoopTracerProvider;class eW0{getTracer(X,Q,J){var Y;return(Y=this.getDelegateTracer(X,Q,J))!==null&&Y!==void 0?Y:new at0.ProxyTracer(this,X,Q,J)}getDelegate(){var X;return(X=this._delegate)!==null&&X!==void 0?X:st0}setDelegate(X){this._delegate=X}getDelegateTracer(X,Q,J){var Y;return(Y=this._delegate)===null||Y===void 0?void 0:Y.getTracer(X,Q,J)}}X70.ProxyTracerProvider=eW0});var Y70=l((J70)=>{Object.defineProperty(J70,"__esModule",{value:!0});J70.SamplingDecision=void 0;var tt0;(function(X){X[X.NOT_RECORD=0]="NOT_RECORD",X[X.RECORD=1]="RECORD",X[X.RECORD_AND_SAMPLED=2]="RECORD_AND_SAMPLED"})(tt0=J70.SamplingDecision||(J70.SamplingDecision={}))});var $70=l((G70)=>{Object.defineProperty(G70,"__esModule",{value:!0});G70.SpanKind=void 0;var et0;(function(X){X[X.INTERNAL=0]="INTERNAL",X[X.SERVER=1]="SERVER",X[X.CLIENT=2]="CLIENT",X[X.PRODUCER=3]="PRODUCER",X[X.CONSUMER=4]="CONSUMER"})(et0=G70.SpanKind||(G70.SpanKind={}))});var H70=l((W70)=>{Object.defineProperty(W70,"__esModule",{value:!0});W70.SpanStatusCode=void 0;var Xe0;(function(X){X[X.UNSET=0]="UNSET",X[X.OK=1]="OK",X[X.ERROR=2]="ERROR"})(Xe0=W70.SpanStatusCode||(W70.SpanStatusCode={}))});var F70=l((K70)=>{Object.defineProperty(K70,"__esModule",{value:!0});K70.validateValue=K70.validateKey=void 0;var ih="[_0-9a-z-*/]",Qe0=`[a-z]${ih}{0,255}`,Je0=`[a-z0-9]${ih}{0,240}@[a-z]${ih}{0,13}`,Ye0=new RegExp(`^(?:${Qe0}|${Je0})$`),Ge0=/^[ -~]{0,255}[!-~]$/,$e0=/,|=/;function We0(X){return Ye0.test(X)}K70.validateKey=We0;function He0(X){return Ge0.test(X)&&!$e0.test(X)}K70.validateValue=He0});var D70=l((B70)=>{Object.defineProperty(B70,"__esModule",{value:!0});B70.TraceStateImpl=void 0;var V70=F70(),q70=32,Ze0=512,U70=",",z70="=";class rh{constructor(X){if(this._internalState=new Map,X)this._parse(X)}set(X,Q){let J=this._clone();if(J._internalState.has(X))J._internalState.delete(X);return J._internalState.set(X,Q),J}unset(X){let Q=this._clone();return Q._internalState.delete(X),Q}get(X){return this._internalState.get(X)}serialize(){return this._keys().reduce((X,Q)=>{return X.push(Q+z70+this.get(Q)),X},[]).join(U70)}_parse(X){if(X.length>Ze0)return;if(this._internalState=X.split(U70).reverse().reduce((Q,J)=>{let Y=J.trim(),G=Y.indexOf(z70);if(G!==-1){let $=Y.slice(0,G),W=Y.slice(G+1,J.length);if((0,V70.validateKey)($)&&(0,V70.validateValue)(W))Q.set($,W)}return Q},new Map),this._internalState.size>q70)this._internalState=new Map(Array.from(this._internalState.entries()).reverse().slice(0,q70))}_keys(){return Array.from(this._internalState.keys()).reverse()}_clone(){let X=new rh;return X._internalState=new Map(this._internalState),X}}B70.TraceStateImpl=rh});var O70=l((j70)=>{Object.defineProperty(j70,"__esModule",{value:!0});j70.createTraceState=void 0;var Fe0=D70();function Ve0(X){return new Fe0.TraceStateImpl(X)}j70.createTraceState=Ve0});var P70=l((w70)=>{Object.defineProperty(w70,"__esModule",{value:!0});w70.context=void 0;var qe0=wU();w70.context=qe0.ContextAPI.getInstance()});var E70=l((T70)=>{Object.defineProperty(T70,"__esModule",{value:!0});T70.diag=void 0;var Ue0=X7();T70.diag=Ue0.DiagAPI.instance()});var I70=l((C70)=>{Object.defineProperty(C70,"__esModule",{value:!0});C70.NOOP_METER_PROVIDER=C70.NoopMeterProvider=void 0;var ze0=Rh();class ah{getMeter(X,Q,J){return ze0.NOOP_METER}}C70.NoopMeterProvider=ah;C70.NOOP_METER_PROVIDER=new ah});var _70=l((v70)=>{Object.defineProperty(v70,"__esModule",{value:!0});v70.MetricsAPI=void 0;var Le0=I70(),oh=eW(),S70=X7(),sh="metrics";class th{constructor(){}static getInstance(){if(!this._instance)this._instance=new th;return this._instance}setGlobalMeterProvider(X){return(0,oh.registerGlobal)(sh,X,S70.DiagAPI.instance())}getMeterProvider(){return(0,oh.getGlobal)(sh)||Le0.NOOP_METER_PROVIDER}getMeter(X,Q,J){return this.getMeterProvider().getMeter(X,Q,J)}disable(){(0,oh.unregisterGlobal)(sh,S70.DiagAPI.instance())}}v70.MetricsAPI=th});var f70=l((b70)=>{Object.defineProperty(b70,"__esModule",{value:!0});b70.metrics=void 0;var De0=_70();b70.metrics=De0.MetricsAPI.getInstance()});var u70=l((g70)=>{Object.defineProperty(g70,"__esModule",{value:!0});g70.NoopTextMapPropagator=void 0;class h70{inject(X,Q){}extract(X,Q){return X}fields(){return[]}}g70.NoopTextMapPropagator=h70});var p70=l((l70)=>{Object.defineProperty(l70,"__esModule",{value:!0});l70.deleteBaggage=l70.setBaggage=l70.getActiveBaggage=l70.getBaggage=void 0;var je0=wU(),Ne0=NU(),eh=(0,Ne0.createContextKey)("OpenTelemetry Baggage Key");function m70(X){return X.getValue(eh)||void 0}l70.getBaggage=m70;function Oe0(){return m70(je0.ContextAPI.getInstance().active())}l70.getActiveBaggage=Oe0;function we0(X,Q){return X.setValue(eh,Q)}l70.setBaggage=we0;function Me0(X){return X.deleteValue(eh)}l70.deleteBaggage=Me0});var a70=l((i70)=>{Object.defineProperty(i70,"__esModule",{value:!0});i70.PropagationAPI=void 0;var Xg=eW(),Ee0=u70(),c70=Sh(),MP=p70(),Ce0=jh(),n70=X7(),Qg="propagation",Re0=new Ee0.NoopTextMapPropagator;class Jg{constructor(){this.createBaggage=Ce0.createBaggage,this.getBaggage=MP.getBaggage,this.getActiveBaggage=MP.getActiveBaggage,this.setBaggage=MP.setBaggage,this.deleteBaggage=MP.deleteBaggage}static getInstance(){if(!this._instance)this._instance=new Jg;return this._instance}setGlobalPropagator(X){return(0,Xg.registerGlobal)(Qg,X,n70.DiagAPI.instance())}inject(X,Q,J=c70.defaultTextMapSetter){return this._getGlobalPropagator().inject(X,Q,J)}extract(X,Q,J=c70.defaultTextMapGetter){return this._getGlobalPropagator().extract(X,Q,J)}fields(){return this._getGlobalPropagator().fields()}disable(){(0,Xg.unregisterGlobal)(Qg,n70.DiagAPI.instance())}_getGlobalPropagator(){return(0,Xg.getGlobal)(Qg)||Re0}}i70.PropagationAPI=Jg});var t70=l((o70)=>{Object.defineProperty(o70,"__esModule",{value:!0});o70.propagation=void 0;var Ie0=a70();o70.propagation=Ie0.PropagationAPI.getInstance()});var GH0=l((JH0)=>{Object.defineProperty(JH0,"__esModule",{value:!0});JH0.TraceAPI=void 0;var Yg=eW(),e70=dh(),XH0=wP(),GZ=gh(),QH0=X7(),Gg="trace";class $g{constructor(){this._proxyTracerProvider=new e70.ProxyTracerProvider,this.wrapSpanContext=XH0.wrapSpanContext,this.isSpanContextValid=XH0.isSpanContextValid,this.deleteSpan=GZ.deleteSpan,this.getSpan=GZ.getSpan,this.getActiveSpan=GZ.getActiveSpan,this.getSpanContext=GZ.getSpanContext,this.setSpan=GZ.setSpan,this.setSpanContext=GZ.setSpanContext}static getInstance(){if(!this._instance)this._instance=new $g;return this._instance}setGlobalTracerProvider(X){let Q=(0,Yg.registerGlobal)(Gg,this._proxyTracerProvider,QH0.DiagAPI.instance());if(Q)this._proxyTracerProvider.setDelegate(X);return Q}getTracerProvider(){return(0,Yg.getGlobal)(Gg)||this._proxyTracerProvider}getTracer(X,Q){return this.getTracerProvider().getTracer(X,Q)}disable(){(0,Yg.unregisterGlobal)(Gg,QH0.DiagAPI.instance()),this._proxyTracerProvider=new e70.ProxyTracerProvider}}JH0.TraceAPI=$g});var HH0=l(($H0)=>{Object.defineProperty($H0,"__esModule",{value:!0});$H0.trace=void 0;var Se0=GH0();$H0.trace=Se0.TraceAPI.getInstance()});var BH0=l(($8)=>{Object.defineProperty($8,"__esModule",{value:!0});$8.trace=$8.propagation=$8.metrics=$8.diag=$8.context=$8.INVALID_SPAN_CONTEXT=$8.INVALID_TRACEID=$8.INVALID_SPANID=$8.isValidSpanId=$8.isValidTraceId=$8.isSpanContextValid=$8.createTraceState=$8.TraceFlags=$8.SpanStatusCode=$8.SpanKind=$8.SamplingDecision=$8.ProxyTracerProvider=$8.ProxyTracer=$8.defaultTextMapSetter=$8.defaultTextMapGetter=$8.ValueType=$8.createNoopMeter=$8.DiagLogLevel=$8.DiagConsoleLogger=$8.ROOT_CONTEXT=$8.createContextKey=$8.baggageEntryMetadataFromString=void 0;var ve0=jh();Object.defineProperty($8,"baggageEntryMetadataFromString",{enumerable:!0,get:function(){return ve0.baggageEntryMetadataFromString}});var KH0=NU();Object.defineProperty($8,"createContextKey",{enumerable:!0,get:function(){return KH0.createContextKey}});Object.defineProperty($8,"ROOT_CONTEXT",{enumerable:!0,get:function(){return KH0.ROOT_CONTEXT}});var ke0=GW0();Object.defineProperty($8,"DiagConsoleLogger",{enumerable:!0,get:function(){return ke0.DiagConsoleLogger}});var _e0=LP();Object.defineProperty($8,"DiagLogLevel",{enumerable:!0,get:function(){return _e0.DiagLogLevel}});var be0=Rh();Object.defineProperty($8,"createNoopMeter",{enumerable:!0,get:function(){return be0.createNoopMeter}});var ye0=LW0();Object.defineProperty($8,"ValueType",{enumerable:!0,get:function(){return ye0.ValueType}});var ZH0=Sh();Object.defineProperty($8,"defaultTextMapGetter",{enumerable:!0,get:function(){return ZH0.defaultTextMapGetter}});Object.defineProperty($8,"defaultTextMapSetter",{enumerable:!0,get:function(){return ZH0.defaultTextMapSetter}});var fe0=lh();Object.defineProperty($8,"ProxyTracer",{enumerable:!0,get:function(){return fe0.ProxyTracer}});var he0=dh();Object.defineProperty($8,"ProxyTracerProvider",{enumerable:!0,get:function(){return he0.ProxyTracerProvider}});var ge0=Y70();Object.defineProperty($8,"SamplingDecision",{enumerable:!0,get:function(){return ge0.SamplingDecision}});var xe0=$70();Object.defineProperty($8,"SpanKind",{enumerable:!0,get:function(){return xe0.SpanKind}});var ue0=H70();Object.defineProperty($8,"SpanStatusCode",{enumerable:!0,get:function(){return ue0.SpanStatusCode}});var me0=yh();Object.defineProperty($8,"TraceFlags",{enumerable:!0,get:function(){return me0.TraceFlags}});var le0=O70();Object.defineProperty($8,"createTraceState",{enumerable:!0,get:function(){return le0.createTraceState}});var Wg=wP();Object.defineProperty($8,"isSpanContextValid",{enumerable:!0,get:function(){return Wg.isSpanContextValid}});Object.defineProperty($8,"isValidTraceId",{enumerable:!0,get:function(){return Wg.isValidTraceId}});Object.defineProperty($8,"isValidSpanId",{enumerable:!0,get:function(){return Wg.isValidSpanId}});var Hg=NP();Object.defineProperty($8,"INVALID_SPANID",{enumerable:!0,get:function(){return Hg.INVALID_SPANID}});Object.defineProperty($8,"INVALID_TRACEID",{enumerable:!0,get:function(){return Hg.INVALID_TRACEID}});Object.defineProperty($8,"INVALID_SPAN_CONTEXT",{enumerable:!0,get:function(){return Hg.INVALID_SPAN_CONTEXT}});var FH0=P70();Object.defineProperty($8,"context",{enumerable:!0,get:function(){return FH0.context}});var VH0=E70();Object.defineProperty($8,"diag",{enumerable:!0,get:function(){return VH0.diag}});var qH0=f70();Object.defineProperty($8,"metrics",{enumerable:!0,get:function(){return qH0.metrics}});var UH0=t70();Object.defineProperty($8,"propagation",{enumerable:!0,get:function(){return UH0.propagation}});var zH0=HH0();Object.defineProperty($8,"trace",{enumerable:!0,get:function(){return zH0.trace}});$8.default={context:FH0.context,diag:VH0.diag,metrics:qH0.metrics,propagation:UH0.propagation,trace:zH0.trace}});function Q4(X){return{...X,execute:async(Q,J)=>{let Y=Date.now();return await J.tracer.startActiveSpan(`tool.${X.name}`,{attributes:{"tool.name":X.name,"organization.id":J.organization?.id??"system","user.id":J.auth.user?.id??J.auth.apiKey?.userId??"anonymous"}},async(G)=>{try{J.toolName=X.name,J.access.setToolName?.(X.name);let $=await X.handler(Q,J),W=Date.now()-Y;return J.meter.createHistogram("tool.execution.duration",{description:"Duration of tool executions in milliseconds",unit:"ms"}).record(W,{"tool.name":X.name,"organization.id":J.organization?.id??"system",status:"success"}),J.meter.createCounter("tool.execution.count",{description:"Number of tool executions"}).add(1,{"tool.name":X.name,status:"success"}),G.setStatus({code:Kg.SpanStatusCode.OK}),$}catch($){throw J.meter.createCounter("tool.execution.errors",{description:"Number of tool execution errors"}).add(1,{"tool.name":X.name,"error.type":$.constructor.name}),G.setStatus({code:Kg.SpanStatusCode.ERROR,message:$.message}),G.recordException($),$}finally{G.end()}})}}}var Kg;var J6=m(()=>{Kg=WJ(BH0(),1)});function e4(X){if(!X.organization)throw Error("This operation requires organization scope");return X.organization}function _X(X){return X.auth.user?.id??X.auth.apiKey?.userId}function ce0(X){return!!(X.auth.user||X.auth.apiKey)}function B4(X){if(!ce0(X))throw Error("Authentication required")}var PP,LH0,DH0,jH0,NH0,OH0,wH0,MH0,PH0,TH0;var $Z=m(()=>{d0();PP=N.record(N.string(),N.array(N.string())),LH0=N.object({id:N.string().describe("Unique identifier for the API key"),name:N.string().describe("Human-readable name for the API key"),userId:N.string().describe("ID of the user who owns this API key"),permissions:PP.describe('Permissions granted to this API key. Format: { resource: [actions] } where resource is "self" for management tools or "conn_<UUID>" for connection-specific tools. Example: { "self": ["API_KEY_CREATE"], "conn_abc123": ["SEND_MESSAGE"] }'),expiresAt:N.union([N.string(),N.date()]).nullable().optional().describe("Expiration date of the API key"),createdAt:N.union([N.string(),N.date()]).describe("When the API key was created")}),DH0=N.object({name:N.string().min(1).max(64).describe("Human-readable name for the API key"),permissions:PP.optional().describe('Permissions to grant. Format: { resource: [actions] }. Resource is "self" for management tools or "conn_<UUID>" for connection-specific tools. Actions are tool names (e.g., ["API_KEY_CREATE"]) or ["*"] for all. Example: { "self": ["API_KEY_CREATE", "COLLECTION_CONNECTIONS_LIST"] }. Defaults to read-only permissions.'),expiresIn:N.number().positive().optional().describe("Expiration time in seconds. If not provided, key never expires."),metadata:N.record(N.string(),N.unknown()).optional().describe("Additional metadata to store with the API key")}),jH0=N.object({id:N.string().describe("Unique identifier for the API key"),name:N.string().describe("Human-readable name for the API key"),key:N.string().describe("The actual API key value. STORE THIS SECURELY - it will not be shown again!"),permissions:PP.describe('Permissions granted to this API key. Format: { resource: [actions] } where resource is "self" for management tools or "conn_<UUID>" for connection-specific tools'),expiresAt:N.union([N.string(),N.date()]).nullable().optional().describe("Expiration date of the API key"),createdAt:N.union([N.string(),N.date()]).describe("When the API key was created")}),NH0=N.object({}),OH0=N.object({items:N.array(LH0).describe("List of API keys (without key values)")}),wH0=N.object({keyId:N.string().describe("ID of the API key to update"),name:N.string().min(1).max(64).optional().describe("New name for the API key"),permissions:PP.optional().describe('New permissions. Format: { resource: [actions] } where resource is "self" for management tools or "conn_<UUID>" for connection-specific tools. Actions are tool names or "*" for all. Example: { "self": ["API_KEY_CREATE"] }. Replaces existing permissions.'),metadata:N.record(N.string(),N.unknown()).optional().describe("New metadata. Replaces existing metadata.")}),MH0=N.object({item:LH0.describe("The updated API key (without key value)")}),PH0=N.object({keyId:N.string().describe("ID of the API key to delete")}),TH0=N.object({success:N.boolean().describe("Whether the deletion was successful"),keyId:N.string().describe("ID of the deleted API key")})});var Zg;var AH0=m(()=>{J6();$Z();Zg=Q4({name:"API_KEY_CREATE",description:"Create a new API key with specified permissions. The key value is only returned once - store it securely!",inputSchema:DH0,outputSchema:jH0,handler:async(X,Q)=>{B4(Q),await Q.access.check();let J=await Q.boundAuth.apiKey.create({name:X.name,permissions:X.permissions,expiresIn:X.expiresIn,metadata:{...X.metadata,organization:Q.organization}});return{id:J.id,name:J.name??X.name,key:J.key,permissions:J.permissions??{},expiresAt:J.expiresAt??null,createdAt:J.createdAt}}})});var Fg;var EH0=m(()=>{J6();$Z();Fg=Q4({name:"API_KEY_DELETE",description:"Delete an API key. This instantly revokes the key - it can no longer be used for authentication.",inputSchema:PH0,outputSchema:TH0,handler:async(X,Q)=>{if(B4(Q),await Q.access.check(),!_X(Q))throw Error("User ID required to delete API key");let G=(await Q.boundAuth.apiKey.list())?.find((K)=>K.id===X.keyId);if(!G)throw Error("API key not found");let W=G.metadata?.organization?.id,H=Q.organization?.id;if(W!==H)throw Error("Cannot delete API key from another organization");return await Q.boundAuth.apiKey.delete(X.keyId),{success:!0,keyId:X.keyId}}})});var Vg;var CH0=m(()=>{J6();$Z();Vg=Q4({name:"API_KEY_LIST",description:"List all API keys for the current user in the current organization. Returns metadata only - key values are never shown after creation.",inputSchema:NH0,outputSchema:OH0,handler:async(X,Q)=>{B4(Q),await Q.access.check();let J=await Q.boundAuth.apiKey.list(),Y=Q.organization?.id;return{items:(J??[]).filter(($)=>{return $.metadata?.organization?.id===Y}).map(($)=>({id:$.id,name:$.name??"Unnamed Key",userId:$.userId,permissions:$.permissions??{},expiresAt:$.expiresAt??null,createdAt:$.createdAt}))}}})});var qg;var RH0=m(()=>{J6();$Z();qg=Q4({name:"API_KEY_UPDATE",description:"Update an existing API key's name, permissions, or metadata. Note: Key value cannot be changed or retrieved.",inputSchema:wH0,outputSchema:MH0,handler:async(X,Q)=>{if(B4(Q),await Q.access.check(),!_X(Q))throw Error("User ID required to update API key");let G=(await Q.boundAuth.apiKey.list())?.find((Z)=>Z.id===X.keyId);if(!G)throw Error(`API key not found: ${X.keyId}`);let W=G.metadata?.organization?.id,H=Q.organization?.id;if(W!==H)throw Error("Cannot update API key from another organization");let K=await Q.boundAuth.apiKey.update({keyId:X.keyId,name:X.name,permissions:X.permissions,metadata:{...X.metadata,organization:Q.organization}});if(!K)throw Error(`Failed to update API key: ${X.keyId}`);return{item:{id:K.id,name:K.name??X.name??"Unnamed Key",userId:K.userId,permissions:K.permissions??{},expiresAt:K.expiresAt??null,createdAt:K.createdAt}}}})});var IH0=m(()=>{AH0();EH0();CH0();RH0();$Z()});var ie0,re0,Ug;var SH0=m(()=>{Ow();d0();J6();BP();x$();ie0=N.object({data:a10.describe("Data for the new connection (id is auto-generated if not provided)")}),re0=N.object({item:mJ.describe("The created connection entity")}),Ug=Q4({name:"COLLECTION_CONNECTIONS_CREATE",description:"Create a new MCP connection in the organization",inputSchema:ie0,outputSchema:re0,handler:async(X,Q)=>{B4(Q);let J=e4(Q);await Q.access.check();let Y=_X(Q);if(!Y)throw Error("User ID required to create connection");let G={...X.data,organization_id:J.id,created_by:Y},$=await XZ({id:`pending-${Date.now()}`,title:G.title,connection_type:G.connection_type,connection_url:G.connection_url,connection_token:G.connection_token,connection_headers:G.connection_headers}).catch(()=>null),W=$?.length?$:null,H=await Q.storage.connections.create({...G,tools:W});return await Q.eventBus.publish(J.id,Zb.SELF(J.id),{type:"connection.created",data:H}),{item:H}}})});function MU(X,Q){if(X===Q)return!0;if(X==null||Q==null)return X===Q;if(typeof X!==typeof Q)return!1;if(Array.isArray(X)&&Array.isArray(Q)){if(X.length!==Q.length)return!1;return X.every((J,Y)=>MU(J,Q[Y]))}if(typeof X==="object"&&typeof Q==="object"){let J=Object.keys(X),Y=Object.keys(Q);if(J.length!==Y.length)return!1;return J.every((G)=>Y.includes(G)&&MU(X[G],Q[G]))}return!1}function D04(){return(X)=>{if(!Array.isArray(X))return!0;let Q=[];return X.every((J)=>{if(Q.some((G)=>MU(J,G)))return!1;return Q.push(J),!0})}}function TP(X,Q){return X.safeParse(Q).success}function qX(X){if(typeof X==="boolean")return X?N.any():N.never();let Q={};for(let G of v04)G.apply(Q,X);let J=[];if(Q.string!==!1)J.push(Q.string||N.string());if(Q.number!==!1)J.push(Q.number||N.number());if(Q.boolean!==!1)J.push(Q.boolean||N.boolean());if(Q.null!==!1)J.push(Q.null||N.null());if(Q.array!==!1)J.push(Q.array||N.array(N.any()));if(Q.tuple!==!1&&Q.tuple!==void 0)J.push(Q.tuple);if(Q.object!==!1)if(Q.object)J.push(Q.object);else{let G=N.custom(($)=>{return typeof $==="object"&&$!==null&&!Array.isArray($)},"Must be an object, not an array");J.push(G)}if(Q.file!==!1&&Q.file!==void 0)J.push(Q.file);let Y;if(J.length===0)Y=N.never();else if(J.length===1)Y=J[0];else if(!Object.keys(X).some(($)=>$!=="$schema"&&$!=="title"&&$!=="description"))Y=N.any();else Y=N.union(J);for(let G of k04)Y=G.apply(Y,X);return Y}var ae0=class{apply(X,Q){if(!Q.type)return;let J=Array.isArray(Q.type)?Q.type:[Q.type],Y=new Set(J);if(!Y.has("string"))X.string=!1;if(!Y.has("number")&&!Y.has("integer"))X.number=!1;if(!Y.has("boolean"))X.boolean=!1;if(!Y.has("null"))X.null=!1;if(!Y.has("array"))X.array=!1;if(!Y.has("object"))X.object=!1;if(Y.has("integer")&&X.number!==!1){let G=X.number||N.number();if(G instanceof N.ZodNumber)X.number=G.int()}}},oe0=class{apply(X,Q){if(Q.const===void 0)return;let J=Q.const;if(X.string=!1,X.number=!1,X.boolean=!1,X.null=!1,X.array=!1,X.object=!1,typeof J==="string")X.string=N.literal(J);else if(typeof J==="number")X.number=N.literal(J);else if(typeof J==="boolean")X.boolean=N.literal(J);else if(J===null)X.null=N.null();else if(Array.isArray(J))X.array=void 0;else if(typeof J==="object")X.object=void 0}},se0=class{apply(X,Q){if(!Q.enum)return;if(Q.enum.length===0){if(!Q.type)X.string=!1,X.number=!1,X.boolean=!1,X.null=!1,X.array=!1,X.object=!1;return}let J={string:Q.enum.filter((Y)=>typeof Y==="string"),number:Q.enum.filter((Y)=>typeof Y==="number"),boolean:Q.enum.filter((Y)=>typeof Y==="boolean"),null:Q.enum.filter((Y)=>Y===null),array:Q.enum.filter((Y)=>Array.isArray(Y)),object:Q.enum.filter((Y)=>typeof Y==="object"&&Y!==null&&!Array.isArray(Y))};X.string=this.createTypeSchema(J.string,"string"),X.number=this.createTypeSchema(J.number,"number"),X.boolean=this.createTypeSchema(J.boolean,"boolean"),X.null=J.null.length>0?N.null():!1,X.array=J.array.length>0?void 0:!1,X.object=J.object.length>0?void 0:!1}createTypeSchema(X,Q){if(X.length===0)return!1;if(X.length===1)return N.literal(X[0]);if(Q==="string")return N.enum(X);if(Q==="number"){let[J,Y,...G]=X;return N.union([N.literal(J),N.literal(Y),...G.map(($)=>N.literal($))])}if(Q==="boolean")return N.union([N.literal(!0),N.literal(!1)]);return!1}},te0=class{apply(X,Q){let J=Q;if(J.type==="string"&&J.format==="binary"&&J.contentEncoding==="binary"){let Y=N.file();if(J.minLength!==void 0)Y=Y.min(J.minLength);if(J.maxLength!==void 0)Y=Y.max(J.maxLength);if(J.contentMediaType!==void 0)Y=Y.mime(J.contentMediaType);X.file=Y,X.string=!1}}},ee0=class{apply(X,Q){let J=Q;if(Q.type===void 0&&(J.minLength!==void 0||J.maxLength!==void 0||J.pattern!==void 0)){if(X.string===void 0)X.string=N.string()}}},X04=class{apply(X,Q){let J=Q;if(J.minLength===void 0)return;if(X.string!==!1){let Y=X.string||N.string();if(Y instanceof N.ZodString)X.string=Y.refine((G)=>{return Array.from(G).length>=J.minLength},{message:`String must be at least ${J.minLength} characters long`})}}},Q04=class{apply(X,Q){let J=Q;if(J.maxLength===void 0)return;if(X.string!==!1){let Y=X.string||N.string();if(Y instanceof N.ZodString)X.string=Y.refine((G)=>{return Array.from(G).length<=J.maxLength},{message:`String must be at most ${J.maxLength} characters long`})}}},J04=class{apply(X,Q){let J=Q;if(!J.pattern)return;if(X.string!==!1){let Y=X.string||N.string();if(Y instanceof N.ZodString){let G=new RegExp(J.pattern);X.string=Y.regex(G)}}}},Y04=class{apply(X,Q){let J=Q;if(J.minimum===void 0)return;if(X.number!==!1){let Y=X.number||N.number();if(Y instanceof N.ZodNumber)X.number=Y.min(J.minimum)}}},G04=class{apply(X,Q){let J=Q;if(J.maximum===void 0)return;if(X.number!==!1){let Y=X.number||N.number();if(Y instanceof N.ZodNumber)X.number=Y.max(J.maximum)}}},$04=class{apply(X,Q){let J=Q;if(J.exclusiveMinimum===void 0)return;if(X.number!==!1){let Y=X.number||N.number();if(Y instanceof N.ZodNumber)if(typeof J.exclusiveMinimum==="number")X.number=Y.gt(J.exclusiveMinimum);else X.number=!1}}},W04=class{apply(X,Q){let J=Q;if(J.exclusiveMaximum===void 0)return;if(X.number!==!1){let Y=X.number||N.number();if(Y instanceof N.ZodNumber)if(typeof J.exclusiveMaximum==="number")X.number=Y.lt(J.exclusiveMaximum);else X.number=!1}}},H04=class{apply(X,Q){let J=Q;if(J.multipleOf===void 0)return;if(X.number!==!1){let Y=X.number||N.number();if(Y instanceof N.ZodNumber)X.number=Y.refine((G)=>{if(J.multipleOf===0)return!1;let $=G/J.multipleOf,W=Math.round($),H=Math.min(Math.abs(G)*Number.EPSILON*10,Math.abs(J.multipleOf)*Number.EPSILON*10);return Math.abs($-W)<=H/Math.abs(J.multipleOf)},{message:`Must be a multiple of ${J.multipleOf}`})}}},K04=class{apply(X,Q){let J=Q;if(Q.type===void 0&&(J.minItems!==void 0||J.maxItems!==void 0||J.items!==void 0||J.prefixItems!==void 0)){if(X.array===void 0)X.array=N.array(N.any())}}},Z04=class{apply(X,Q){let J=Q;if(J.minItems===void 0)return;if(X.array!==!1)X.array=(X.array||N.array(N.any())).min(J.minItems)}},F04=class{apply(X,Q){let J=Q;if(J.maxItems===void 0)return;if(X.array!==!1)X.array=(X.array||N.array(N.any())).max(J.maxItems)}},V04=class{apply(X,Q){let J=Q;if(X.array===!1)return;if(Array.isArray(J.items))X.array=X.array||N.array(N.any());else if(J.items&&typeof J.items!=="boolean"&&!J.prefixItems){let Y=qX(J.items),G=N.array(Y);if(X.array&&X.array instanceof N.ZodArray){let $=X.array._def;if($.checks)$.checks.forEach((W)=>{if(W._zod&&W._zod.def){let H=W._zod.def;if(H.check==="min_length"&&H.minimum!==void 0)G=G.min(H.minimum);else if(H.check==="max_length"&&H.maximum!==void 0)G=G.max(H.maximum)}})}X.array=G}else if(typeof J.items==="boolean"&&J.items===!1)if(!J.prefixItems)X.array=N.array(N.any()).max(0);else X.array=X.array||N.array(N.any());else if(typeof J.items==="boolean"&&J.items===!0)X.array=X.array||N.array(N.any());else if(J.prefixItems)X.array=X.array||N.array(N.any())}},q04=class{apply(X,Q){if(Q.type!=="array")return;let J=Q;if(!Array.isArray(J.items))return;if(X.array===!1)return;let Y=J.items.map(($)=>qX($)),G;if(Y.length===0)G=N.tuple([]);else G=N.tuple(Y);if(J.minItems!==void 0&&J.minItems>Y.length)G=!1;if(J.maxItems!==void 0&&J.maxItems<Y.length)G=!1;X.tuple=G,X.array=!1}},U04=class{apply(X,Q){let J=Q;if(X.object===!1)return;if(J.properties||J.required||J.additionalProperties!==void 0)X.object=X.object||N.object({}).passthrough()}},z04=class{apply(X,Q){let J=Q;if(Q.type===void 0&&(J.maxProperties!==void 0||J.minProperties!==void 0)){if(X.object===void 0)X.object=N.object({}).passthrough()}}},B04=class{apply(X,Q){let J=Q;if(J.maxProperties===void 0)return;if(X.object!==!1){let Y=X.object||N.object({}).passthrough();X.object=Y.refine((G)=>Object.keys(G).length<=J.maxProperties,{message:`Object must have at most ${J.maxProperties} properties`})}}},L04=class{apply(X,Q){let J=Q;if(J.minProperties===void 0)return;if(X.object!==!1){let Y=X.object||N.object({}).passthrough();X.object=Y.refine((G)=>Object.keys(G).length>=J.minProperties,{message:`Object must have at least ${J.minProperties} properties`})}}},j04=class{apply(X,Q){if(!Q.not)return X;let J=qX(Q.not);return X.refine((Y)=>!TP(J,Y),{message:"Value must not match the 'not' schema"})}},N04=class{apply(X,Q){if(Q.uniqueItems!==!0)return X;return X.refine(D04(),{message:"Array items must be unique"})}},O04=class{apply(X,Q){if(!Q.allOf||Q.allOf.length===0)return X;return Q.allOf.map((Y)=>qX(Y)).reduce((Y,G)=>N.intersection(Y,G),X)}},w04=class{apply(X,Q){if(!Q.anyOf||Q.anyOf.length===0)return X;let J=Q.anyOf.length===1?qX(Q.anyOf[0]):N.union([qX(Q.anyOf[0]),qX(Q.anyOf[1]),...Q.anyOf.slice(2).map((Y)=>qX(Y))]);return N.intersection(X,J)}},M04=class{apply(X,Q){if(!Q.oneOf||Q.oneOf.length===0)return X;let J=Q.oneOf.map((Y)=>qX(Y));return X.refine((Y)=>{let G=0;for(let $ of J)if($.safeParse(Y).success){if(G++,G>1)return!1}return G===1},{message:"Value must match exactly one of the oneOf schemas"})}},P04=class{apply(X,Q){let J=Q;if(J.prefixItems&&Array.isArray(J.prefixItems)){let G=J.prefixItems.map(($)=>qX($));return X.refine(($)=>{if(!Array.isArray($))return!0;for(let W=0;W<Math.min($.length,G.length);W++)if(!TP(G[W],$[W]))return!1;if($.length>G.length){if(typeof J.items==="boolean"&&J.items===!1)return!1;else if(J.items&&typeof J.items==="object"&&!Array.isArray(J.items)){let W=qX(J.items);for(let H=G.length;H<$.length;H++)if(!TP(W,$[H]))return!1}}return!0},{message:"Array does not match prefixItems schema"})}return X}},T04=class{apply(X,Q){let J=Q;if(!J.properties&&!J.required&&J.additionalProperties!==!1)return X;if(X instanceof N.ZodObject||X instanceof N.ZodRecord){let Y={};if(J.properties){for(let[G,$]of Object.entries(J.properties))if($!==void 0)Y[G]=qX($)}if(J.required&&Array.isArray(J.required)){let G=new Set(J.required);for(let $ of Object.keys(Y))if(!G.has($))Y[$]=Y[$].optional()}else for(let G of Object.keys(Y))Y[G]=Y[G].optional();if(J.additionalProperties===!1)return N.object(Y);else return N.object(Y).passthrough()}return X.refine((Y)=>{if(typeof Y!=="object"||Y===null||Array.isArray(Y))return!0;if(J.properties){for(let[G,$]of Object.entries(J.properties))if($!==void 0){if(Object.getOwnPropertyDescriptor(Y,G)!==void 0){if(!qX($).safeParse(Y[G]).success)return!1}}}if(J.required&&Array.isArray(J.required)){for(let G of J.required)if(Object.getOwnPropertyDescriptor(Y,G)===void 0)return!1}if(J.additionalProperties===!1&&J.properties){let G=new Set(Object.keys(J.properties));for(let $ in Y)if(!G.has($))return!1}return!0},{message:"Object constraints validation failed"})}},A04=class{apply(X,Q){if(!Q.enum||Q.enum.length===0)return X;let J=Q.enum.filter((Y)=>Array.isArray(Y)||typeof Y==="object"&&Y!==null);if(J.length===0)return X;return X.refine((Y)=>{if(typeof Y!=="object"||Y===null)return!0;return J.some((G)=>MU(Y,G))},{message:"Value must match one of the enum values"})}},E04=class{apply(X,Q){if(Q.const===void 0)return X;let J=Q.const;if(typeof J!=="object"||J===null)return X;return X.refine((Y)=>MU(Y,J),{message:"Value must equal the const value"})}},C04=class{apply(X,Q){if(Q.description)X=X.describe(Q.description);return X}},R04=class{apply(X,Q){var J;let Y=Q;if(!((J=Y.required)==null?void 0:J.includes("__proto__"))||Q.type!==void 0)return X;return N.any().refine((G)=>this.validateRequired(G,Y.required),{message:"Missing required properties"})}validateRequired(X,Q){if(typeof X!=="object"||X===null||Array.isArray(X))return!0;return Q.every((J)=>Object.prototype.hasOwnProperty.call(X,J))}},I04=class{apply(X,Q){var J;let Y=Q;if(Y.contains===void 0)return X;let G=qX(Y.contains),$=(J=Y.minContains)!=null?J:1,W=Y.maxContains;return X.refine((H)=>{if(!Array.isArray(H))return!0;let K=0;for(let Z of H)if(TP(G,Z))K++;if(K<$)return!1;if(W!==void 0&&K>W)return!1;return!0},{message:"Array must contain required items matching the schema"})}},S04=class{apply(X,Q){let{default:J}=Q;if(J===void 0)return X;if(!X.safeParse(J).success)return X;return X.default(J)}},v04,k04;var vH0=m(()=>{u1();u1();u1();u1();u1();u1();u1();u1();u1();u1();u1();u1();u1();u1();v04=[new oe0,new se0,new ae0,new te0,new ee0,new K04,new z04,new X04,new Q04,new J04,new Y04,new G04,new $04,new W04,new H04,new q04,new Z04,new F04,new V04,new B04,new L04,new U04],k04=[new R04,new A04,new E04,new O04,new w04,new M04,new P04,new T04,new I04,new j04,new N04,new S04,new C04]});function _04(X){let Q=globalThis.DOMException;return typeof Q=="function"?new Q(X,"SyntaxError"):SyntaxError(X)}function Bg(X){return X instanceof Error?"errors"in X&&Array.isArray(X.errors)?X.errors.map(Bg).join(", "):("cause"in X)&&X.cause instanceof Error?`${X}: ${Bg(X.cause)}`:X.message:`${X}`}function kH0(X){return{type:X.type,message:X.message,code:X.code,defaultPrevented:X.defaultPrevented,cancelable:X.cancelable,timeStamp:X.timeStamp}}function b04(){let X="document"in globalThis?globalThis.document:void 0;return X&&typeof X=="object"&&"baseURI"in X&&typeof X.baseURI=="string"?X.baseURI:void 0}var zg,bH0=(X)=>{throw TypeError(X)},Pg=(X,Q,J)=>Q.has(X)||bH0("Cannot "+J),H6=(X,Q,J)=>(Pg(X,Q,"read from private field"),J?J.call(X):Q.get(X)),P1=(X,Q,J)=>Q.has(X)?bH0("Cannot add the same private member more than once"):Q instanceof WeakSet?Q.add(X):Q.set(X,J),h8=(X,Q,J,Y)=>(Pg(X,Q,"write to private field"),Q.set(X,J),J),MG=(X,Q,J)=>(Pg(X,Q,"access private method"),J),kQ,Q7,WZ,AP,EP,AU,ZZ,EU,J5,HZ,FZ,KZ,PU,w9,Lg,Dg,jg,_H0,Ng,Og,TU,wg,Mg,VZ;var yH0=m(()=>{Gh();zg=class zg extends Event{constructor(X,Q){var J,Y;super(X),this.code=(J=Q==null?void 0:Q.code)!=null?J:void 0,this.message=(Y=Q==null?void 0:Q.message)!=null?Y:void 0}[Symbol.for("nodejs.util.inspect.custom")](X,Q,J){return J(kH0(this),Q)}[Symbol.for("Deno.customInspect")](X,Q){return X(kH0(this),Q)}};VZ=class VZ extends EventTarget{constructor(X,Q){var J,Y;super(),P1(this,w9),this.CONNECTING=0,this.OPEN=1,this.CLOSED=2,P1(this,kQ),P1(this,Q7),P1(this,WZ),P1(this,AP),P1(this,EP),P1(this,AU),P1(this,ZZ),P1(this,EU,null),P1(this,J5),P1(this,HZ),P1(this,FZ,null),P1(this,KZ,null),P1(this,PU,null),P1(this,Dg,async(G)=>{var $;H6(this,HZ).reset();let{body:W,redirected:H,status:K,headers:Z}=G;if(K===204){MG(this,w9,TU).call(this,"Server sent HTTP 204, not reconnecting",204),this.close();return}if(H?h8(this,WZ,new URL(G.url)):h8(this,WZ,void 0),K!==200){MG(this,w9,TU).call(this,`Non-200 status code (${K})`,K);return}if(!(Z.get("content-type")||"").startsWith("text/event-stream")){MG(this,w9,TU).call(this,'Invalid content type, expected "text/event-stream"',K);return}if(H6(this,kQ)===this.CLOSED)return;h8(this,kQ,this.OPEN);let F=new Event("open");if(($=H6(this,PU))==null||$.call(this,F),this.dispatchEvent(F),typeof W!="object"||!W||!("getReader"in W)){MG(this,w9,TU).call(this,"Invalid response body, expected a web ReadableStream",K),this.close();return}let V=new TextDecoder,q=W.getReader(),B=!0;do{let{done:L,value:D}=await q.read();D&&H6(this,HZ).feed(V.decode(D,{stream:!L})),L&&(B=!1,H6(this,HZ).reset(),MG(this,w9,wg).call(this))}while(B)}),P1(this,jg,(G)=>{h8(this,J5,void 0),!(G.name==="AbortError"||G.type==="aborted")&&MG(this,w9,wg).call(this,Bg(G))}),P1(this,Ng,(G)=>{typeof G.id=="string"&&h8(this,EU,G.id);let $=new MessageEvent(G.event||"message",{data:G.data,origin:H6(this,WZ)?H6(this,WZ).origin:H6(this,Q7).origin,lastEventId:G.id||""});H6(this,KZ)&&(!G.event||G.event==="message")&&H6(this,KZ).call(this,$),this.dispatchEvent($)}),P1(this,Og,(G)=>{h8(this,AU,G)}),P1(this,Mg,()=>{h8(this,ZZ,void 0),H6(this,kQ)===this.CONNECTING&&MG(this,w9,Lg).call(this)});try{if(X instanceof URL)h8(this,Q7,X);else if(typeof X=="string")h8(this,Q7,new URL(X,b04()));else throw Error("Invalid URL")}catch{throw _04("An invalid or illegal string was specified")}h8(this,HZ,zP({onEvent:H6(this,Ng),onRetry:H6(this,Og)})),h8(this,kQ,this.CONNECTING),h8(this,AU,3000),h8(this,EP,(J=Q==null?void 0:Q.fetch)!=null?J:globalThis.fetch),h8(this,AP,(Y=Q==null?void 0:Q.withCredentials)!=null?Y:!1),MG(this,w9,Lg).call(this)}get readyState(){return H6(this,kQ)}get url(){return H6(this,Q7).href}get withCredentials(){return H6(this,AP)}get onerror(){return H6(this,FZ)}set onerror(X){h8(this,FZ,X)}get onmessage(){return H6(this,KZ)}set onmessage(X){h8(this,KZ,X)}get onopen(){return H6(this,PU)}set onopen(X){h8(this,PU,X)}addEventListener(X,Q,J){let Y=Q;super.addEventListener(X,Y,J)}removeEventListener(X,Q,J){let Y=Q;super.removeEventListener(X,Y,J)}close(){H6(this,ZZ)&&clearTimeout(H6(this,ZZ)),H6(this,kQ)!==this.CLOSED&&(H6(this,J5)&&H6(this,J5).abort(),h8(this,kQ,this.CLOSED),h8(this,J5,void 0))}};kQ=new WeakMap,Q7=new WeakMap,WZ=new WeakMap,AP=new WeakMap,EP=new WeakMap,AU=new WeakMap,ZZ=new WeakMap,EU=new WeakMap,J5=new WeakMap,HZ=new WeakMap,FZ=new WeakMap,KZ=new WeakMap,PU=new WeakMap,w9=new WeakSet,Lg=function(){h8(this,kQ,this.CONNECTING),h8(this,J5,new AbortController),H6(this,EP)(H6(this,Q7),MG(this,w9,_H0).call(this)).then(H6(this,Dg)).catch(H6(this,jg))},Dg=new WeakMap,jg=new WeakMap,_H0=function(){var X;let Q={mode:"cors",redirect:"follow",headers:{Accept:"text/event-stream",...H6(this,EU)?{"Last-Event-ID":H6(this,EU)}:void 0},cache:"no-store",signal:(X=H6(this,J5))==null?void 0:X.signal};return"window"in globalThis&&(Q.credentials=this.withCredentials?"include":"same-origin"),Q},Ng=new WeakMap,Og=new WeakMap,TU=function(X,Q){var J;H6(this,kQ)!==this.CLOSED&&h8(this,kQ,this.CLOSED);let Y=new zg("error",{code:Q,message:X});(J=H6(this,FZ))==null||J.call(this,Y),this.dispatchEvent(Y)},wg=function(X,Q){var J;if(H6(this,kQ)===this.CLOSED)return;h8(this,kQ,this.CONNECTING);let Y=new zg("error",{code:Q,message:X});(J=H6(this,FZ))==null||J.call(this,Y),this.dispatchEvent(Y),h8(this,ZZ,setTimeout(H6(this,Mg),H6(this,AU)))},Mg=new WeakMap,VZ.CONNECTING=0,VZ.OPEN=1,VZ.CLOSED=2});class Tg{constructor(X,Q){this._url=X,this._resourceMetadataUrl=void 0,this._scope=void 0,this._eventSourceInit=Q?.eventSourceInit,this._requestInit=Q?.requestInit,this._authProvider=Q?.authProvider,this._fetch=Q?.fetch,this._fetchWithInit=QP(Q?.fetch,Q?.requestInit)}async _authThenStart(){if(!this._authProvider)throw new vQ("No auth provider");let X;try{X=await OG(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})}catch(Q){throw this.onerror?.(Q),Q}if(X!=="AUTHORIZED")throw new vQ;return await this._startOrAuth()}async _commonHeaders(){let X={};if(this._authProvider){let J=await this._authProvider.tokens();if(J)X.Authorization=`Bearer ${J.access_token}`}if(this._protocolVersion)X["mcp-protocol-version"]=this._protocolVersion;let Q=rK(this._requestInit?.headers);return new Headers({...X,...Q})}_startOrAuth(){let X=this?._eventSourceInit?.fetch??this._fetch??fetch;return new Promise((Q,J)=>{this._eventSource=new VZ(this._url.href,{...this._eventSourceInit,fetch:async(Y,G)=>{let $=await this._commonHeaders();$.set("Accept","text/event-stream");let W=await X(Y,{...G,headers:$});if(W.status===401&&W.headers.has("www-authenticate")){let{resourceMetadataUrl:H,scope:K}=eK(W);this._resourceMetadataUrl=H,this._scope=K}return W}}),this._abortController=new AbortController,this._eventSource.onerror=(Y)=>{if(Y.code===401&&this._authProvider){this._authThenStart().then(Q,J);return}let G=new fH0(Y.code,Y.message,Y);J(G),this.onerror?.(G)},this._eventSource.onopen=()=>{},this._eventSource.addEventListener("endpoint",(Y)=>{let G=Y;try{if(this._endpoint=new URL(G.data,this._url),this._endpoint.origin!==this._url.origin)throw Error(`Endpoint origin does not match connection origin: ${this._endpoint.origin}`)}catch($){J($),this.onerror?.($),this.close();return}Q()}),this._eventSource.onmessage=(Y)=>{let G=Y,$;try{$=YJ.parse(JSON.parse(G.data))}catch(W){this.onerror?.(W);return}this.onmessage?.($)}})}async start(){if(this._eventSource)throw Error("SSEClientTransport already started! If using Client class, note that connect() calls start() automatically.");return await this._startOrAuth()}async finishAuth(X){if(!this._authProvider)throw new vQ("No auth provider");if(await OG(this._authProvider,{serverUrl:this._url,authorizationCode:X,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})!=="AUTHORIZED")throw new vQ("Failed to authorize")}async close(){this._abortController?.abort(),this._eventSource?.close(),this.onclose?.()}async send(X){if(!this._endpoint)throw Error("Not connected");try{let Q=await this._commonHeaders();Q.set("content-type","application/json");let J={...this._requestInit,method:"POST",headers:Q,body:JSON.stringify(X),signal:this._abortController?.signal},Y=await(this._fetch??fetch)(this._endpoint,J);if(!Y.ok){let G=await Y.text().catch(()=>null);if(Y.status===401&&this._authProvider){let{resourceMetadataUrl:$,scope:W}=eK(Y);if(this._resourceMetadataUrl=$,this._scope=W,await OG(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})!=="AUTHORIZED")throw new vQ;return this.send(X)}throw Error(`Error POSTing to endpoint (HTTP ${Y.status}): ${G}`)}await Y.body?.cancel()}catch(Q){throw this.onerror?.(Q),Q}}setProtocolVersion(X){this._protocolVersion=X}}var fH0;var hH0=m(()=>{yH0();GJ();Qh();fH0=class fH0 extends Error{constructor(X,Q,J){super(`SSE error: ${Q}`);this.code=X,this.event=J}}});class Ag{constructor(X){this._url=X}start(){if(this._socket)throw Error("WebSocketClientTransport already started! If using Client class, note that connect() calls start() automatically.");return new Promise((X,Q)=>{this._socket=new WebSocket(this._url,y04),this._socket.onerror=(J)=>{let Y="error"in J?J.error:Error(`WebSocket error: ${JSON.stringify(J)}`);Q(Y),this.onerror?.(Y)},this._socket.onopen=()=>{X()},this._socket.onclose=()=>{this.onclose?.()},this._socket.onmessage=(J)=>{let Y;try{Y=YJ.parse(JSON.parse(J.data))}catch(G){this.onerror?.(G);return}this.onmessage?.(Y)}})}async close(){this._socket?.close()}send(X){return new Promise((Q,J)=>{if(!this._socket){J(Error("Not connected"));return}this._socket?.send(JSON.stringify(X)),Q()})}}var y04="mcp";var gH0=m(()=>{GJ()});function f04(X){let Q=X;if(!Q||typeof Q!=="object"||!("method"in Q))return null;switch(Q.method){case"initialize":{let J=Q?.params?.protocolVersion;if(!J)return null;return{type:"emit",message:{result:{protocolVersion:J,capabilities:{tools:{}},serverInfo:{name:"deco-chat-server",version:"1.0.0"}},jsonrpc:Q.jsonrpc??"2.0",id:Q.id}}}case"notifications/roots/list_changed":case"notifications/initialized":case"notifications/cancelled":case"notifications/progress":return{type:"suppress"};default:return null}}var Eg;var xH0=m(()=>{Wh();Eg=class Eg extends zU{constructor(X,Q){super(X,Q)}send(X,Q){let J=f04(X);if(J?.type==="emit")return this.onmessage?.(J.message),Promise.resolve();if(J?.type==="suppress")return Promise.resolve();return super.send(X,Q)}}});var uH0,mH0=async(X,Q,J)=>{let Y=h04(X.connection,Q,J);if(!Y)throw Error("Unknown MCP connection type");let G=new uH0({name:X?.name??"MCP Client",version:"1.0.0"});return await G.connect(Y),{client:G,callStreamableTool:($,W)=>{if(X.connection.type!=="HTTP")throw Error("HTTP connection required");let H=new Headers(J);if(!H.has("Authorization"))H.set("Authorization",`Bearer ${X.connection.token}`);for(let[F,V]of Object.entries(X.connection.headers??{}))H.set(F,V);let K=new URL(X.connection.url),Z=K.pathname.replace(/\/+$/,"")||"/";return K.pathname=`${Z}/call-tool/${encodeURIComponent($)}`,fetch(K.href,{method:"POST",redirect:"manual",body:JSON.stringify(W),headers:H})}}},h04=(X,Q,J)=>{if(X.type==="Websocket")return new Ag(new URL(X.url));if(X.type!=="SSE"&&X.type!=="HTTP")return null;let G={...X.token?{authorization:`Bearer ${X.token}`}:{},...J??{},..."headers"in X?X.headers||{}:{}};if(X.type==="SSE"){let $={requestInit:{headers:G,signal:Q}};if(X.token)$.eventSourceInit={fetch:(W,H)=>{return fetch(W,{...H,headers:{...G,Accept:"text/event-stream"},signal:Q})}};return new Tg(new URL(X.url),$)}return new Eg(new URL(X.url),{requestInit:{headers:G,signal:Q,credentials:"include"}})};var lH0=m(()=>{_f();hH0();gH0();GJ();xH0();uH0=class uH0 extends cK{constructor(X,Q){super(X,Q)}async listTools(X,Q){return await this.request({method:"tools/list",params:X},xq,Q)}}});function pH0(X){let Q=(J)=>{if("connection"in X)return mH0({connection:X.connection},void 0,J);return X.client};return new Proxy({},{get(J,Y){if(Y==="toJSON")return null;if(typeof Y!=="string")throw Error("Name must be a string");if(Y==="listTools")return H;async function G(K,Z=Y){let F=X?.debugId?.(),V=F?{"x-trace-debug-id":F}:void 0,{client:q,callStreamableTool:B}=await Q(V);if(X?.streamable?.[String(Z)])return B(String(Z),K);let{structuredContent:L,isError:D,content:j}=await q.callTool({name:String(Z),arguments:K});if(D){let O=j?.[0]?.text,T=typeof O==="string"?g04(O):null,C=T?.code&&typeof X?.getErrorByStatusCode==="function"?X.getErrorByStatusCode(T.code,T.message,T.traceId):null;if(C)throw C;throw Error(`Tool ${String(Z)} returned an error: ${JSON.stringify(L??j)}`)}return L}async function $(){let{client:K}=await Q(),{tools:Z}=await K.listTools();return Z}async function W(){if(!("connection"in X))return $();let K=X.connection,Z=JSON.stringify(K);try{if(!CP.has(Z))CP.set(Z,$());return await CP.get(Z)}catch(F){console.error("Failed to list tools",F),CP.delete(Z);return}}async function H(){return(await W()??[]).map((Z)=>dH0(Z,G))}return G.asTool=async()=>{let Z=(await W()??[]).find((F)=>F.name===Y);if(!Z)throw Error(`Tool ${Y} not found`);return dH0(Z,G)},G}})}var g04=(X)=>{try{return JSON.parse(X)}catch{return X}},CP,dH0=(X,Q)=>{return{...X,id:X.name,inputSchema:X.inputSchema?qX(X.inputSchema):void 0,outputSchema:X.outputSchema?qX(X.outputSchema):void 0,execute:(J)=>{return Q(J.context,X.name)}}};var cH0=m(()=>{vH0();lH0();CP=new Map});function RP(X){return pH0(X)}var Ux4;var nH0=m(()=>{cH0();Ux4=new Proxy({},{get(X,Q){if(Q==="toJSON")return null;if(Q==="forConnection")return(J)=>RP({connection:J});return global[Q]}})});function IP(X){return{isImplementedBy:(Q)=>{for(let J of X){let Y=typeof J.name==="string"?new RegExp(`^${J.name}$`):J.name,G=Q.find(($)=>Y.test($.name));if(!G&&J.opt)continue;if(!G)return!1}return!0}}}var qZ=(X)=>{return{...IP(X),forClient:(Q)=>{return RP({client:Q,streamable:X.reduce((J,Y)=>{return J[Y.name]=Y.streamable===!0,J},{})})},forConnection:(Q)=>{return RP({connection:Q,streamable:X.reduce((J,Y)=>{return J[Y.name]=Y.streamable===!0,J},{})})}}};var CU=m(()=>{nH0()});function IU(X){return N.object({items:N.array(X).describe("Array of collection items"),totalCount:N.number().int().min(0).optional().describe("Total number of matching items (if available)"),hasMore:N.boolean().optional().describe("Whether there are more items available")})}function Rg(X){return N.object({item:X.nullable().describe("The retrieved item, or null if not found")})}function m04(X){return N.object({data:X.partial().describe("Data for the new entity (id may be auto-generated)")})}function l04(X){return N.object({item:X.describe("The created entity with generated id")})}function d04(X){return N.object({id:N.string().describe("ID of the entity to update"),data:X.partial().describe("Partial entity data to update")})}function p04(X){return N.object({item:X.describe("The updated entity")})}function Sg(X){return N.object({item:X.describe("The deleted entity")})}function zZ(X,Q,J){let Y=X.toUpperCase(),G=J?.readOnly??!1,$=[{name:`COLLECTION_${Y}_LIST`,inputSchema:RU,outputSchema:IU(Q)},{name:`COLLECTION_${Y}_GET`,inputSchema:Cg,outputSchema:Rg(Q)}];if(!G)$.push({name:`COLLECTION_${Y}_CREATE`,inputSchema:m04(Q),outputSchema:l04(Q),opt:!0},{name:`COLLECTION_${Y}_UPDATE`,inputSchema:d04(Q),outputSchema:p04(Q),opt:!0},{name:`COLLECTION_${Y}_DELETE`,inputSchema:Ig,outputSchema:Sg(Q),opt:!0});return $}var UZ,x04,iH0,u04,RU,Cg,Ig;var Y5=m(()=>{d0();UZ=N.object({id:N.string().describe("Unique identifier for the entity"),title:N.string().describe("Human-readable title for the entity"),description:N.string().nullish().describe("Description of the entity"),created_at:N.string().datetime(),updated_at:N.string().datetime(),created_by:N.string().optional(),updated_by:N.string().optional()}),x04=N.object({field:N.array(N.string()),operator:N.enum(["eq","gt","gte","lt","lte","in","like","contains"]),value:N.unknown()}),iH0=N.lazy(()=>N.union([x04,N.object({operator:N.enum(["and","or","not"]),conditions:N.array(iH0)})])),u04=N.object({field:N.array(N.string()),direction:N.enum(["asc","desc"]),nulls:N.enum(["first","last"]).optional()}),RU=N.object({where:iH0.optional().describe("Filter expression"),orderBy:N.array(u04).optional().describe("Sort expressions"),limit:N.number().int().min(1).max(1000).optional().describe("Maximum number of items to return"),offset:N.number().int().min(0).optional().describe("Number of items to skip")});Cg=N.object({id:N.string().describe("ID of the entity to retrieve")});Ig=N.object({id:N.string().describe("ID of the entity to delete")})});var c04,rH0,Mx4;var aH0=m(()=>{d0();Y5();c04=N.object({id:N.string(),name:N.string(),description:N.string().optional(),inputSchema:N.record(N.string(),N.unknown()),outputSchema:N.record(N.string(),N.unknown()).optional()}),rH0=UZ.extend({_meta:N.object({"io.decocms":N.object({id:N.string(),verified:N.boolean(),scopeName:N.string(),appName:N.string(),friendlyName:N.string().nullable().optional(),metadata:N.record(N.string(),N.unknown()).nullable().optional(),publishedAt:N.string().datetime().optional(),updatedAt:N.string().datetime().optional(),tools:N.array(c04).nullable().optional().describe("Available tools exposed by this app")}).optional()}).optional(),server:N.object({$schema:N.string().optional(),_meta:N.record(N.string(),N.unknown()).optional(),name:N.string().describe("The server name (scope/app)"),title:N.string().optional().describe("User-friendly title"),description:N.string().optional().describe("Server description"),icons:N.array(N.object({src:N.string(),mimeType:N.string().optional(),sizes:N.array(N.string()).optional(),theme:N.enum(["light","dark"]).optional()})).optional(),remotes:N.array(N.object({type:N.enum(["http","stdio","sse"]),url:N.string().optional(),headers:N.array(N.unknown()).optional()})).optional(),packages:N.array(N.unknown()).optional(),repository:N.object({url:N.string(),source:N.string().optional(),subfolder:N.string().optional()}).optional(),version:N.string().optional(),websiteUrl:N.string().optional()})}),Mx4=zZ("registry_app",rH0,{readOnly:!0})});var oH0,sH0,tH0,eH0,XK0,n04;var QK0=m(()=>{d0();CU();oH0=N.object({specversion:N.literal("1.0").describe("CloudEvents specification version"),id:N.string().describe("Unique identifier for this event (UUID recommended)"),source:N.string().describe("Connection ID of the event publisher"),type:N.string().describe("Event type (e.g., 'order.created', 'user.signup')"),time:N.string().datetime().optional().describe("Timestamp of when the event occurred (ISO 8601)"),subject:N.string().optional().describe("Subject/resource identifier (e.g., order ID, user ID)"),datacontenttype:N.string().optional().default("application/json").describe("Content type of the data attribute"),dataschema:N.string().url().optional().describe("URI to the schema for the data attribute"),data:N.unknown().optional().describe("Event payload (any JSON value)")}),sH0=N.object({events:N.array(oH0).min(1).describe("Batch of CloudEvents to process")}),tH0=N.object({success:N.boolean().optional().describe("Whether this event was processed successfully"),error:N.string().optional().describe("Error message for this event"),retryAfter:N.number().int().positive().optional().describe("Re-deliver this event after this many ms")}),eH0=N.object({success:N.boolean().optional().describe("Batch success - applies to events not in results"),error:N.string().optional().describe("Batch error message - applies to events not in results"),processedCount:N.number().int().min(0).optional().describe("Number of events successfully processed"),retryAfter:N.number().int().positive().optional().describe("Batch retryAfter - applies to events not in results"),results:N.record(N.string(),tH0).optional().describe("Per-event results keyed by event ID")}),XK0=[{name:"ON_EVENTS",inputSchema:sH0,outputSchema:eH0}],n04=qZ(XK0)});var SU,vU,kU,_U,JK0,YK0,bU,yU,fU,hU,gU,xU,uU,mU,GK0,i04;var $K0=m(()=>{d0();CU();SU=N.object({type:N.string().min(1).max(255).describe("Event type identifier"),subject:N.string().max(255).optional().describe("Subject/resource identifier (e.g., order ID)"),data:N.unknown().optional().describe("Event payload"),deliverAt:N.string().datetime().optional().describe("Scheduled delivery time (ISO 8601). Omit for immediate delivery."),cron:N.string().max(100).optional().describe("Cron expression for recurring delivery. Use EVENT_CANCEL to stop.")}),vU=N.object({id:N.string().describe("Unique event ID"),type:N.string().describe("Event type"),source:N.string().describe("Source connection ID"),time:N.string().describe("Event timestamp")}),kU=N.object({eventType:N.string().min(1).max(255).describe("Event type to subscribe to"),publisher:N.string().optional().describe("Filter events by publisher connection ID"),filter:N.string().max(1000).optional().describe("JSONPath filter expression on event data")}),_U=N.object({subscription:N.object({id:N.string().describe("Subscription ID"),connectionId:N.string().describe("Subscriber connection ID"),eventType:N.string().describe("Event type pattern"),publisher:N.string().nullable().describe("Publisher connection filter"),filter:N.string().nullable().describe("JSONPath filter expression"),enabled:N.boolean().describe("Whether subscription is enabled"),createdAt:N.union([N.string(),N.date()]).describe("Created timestamp"),updatedAt:N.union([N.string(),N.date()]).describe("Updated timestamp")})}),JK0=N.object({eventType:N.string().min(1).max(255).describe("Event type to subscribe to"),publisher:N.string().optional().describe("Filter events by publisher connection ID"),filter:N.string().max(1000).optional().describe("JSONPath filter expression on event data")}),YK0=N.object({id:N.string().describe("Subscription ID"),connectionId:N.string().describe("Subscriber connection ID"),eventType:N.string().describe("Event type pattern"),publisher:N.string().nullable().describe("Publisher connection filter"),filter:N.string().nullable().describe("JSONPath filter expression"),enabled:N.boolean().describe("Whether subscription is enabled"),createdAt:N.union([N.string(),N.date()]).describe("Created timestamp"),updatedAt:N.union([N.string(),N.date()]).describe("Updated timestamp")}),bU=N.object({subscriptions:N.array(JK0).describe("Desired subscriptions - system will create/update/delete to match")}),yU=N.object({created:N.number().int().min(0).describe("Number of subscriptions created"),updated:N.number().int().min(0).describe("Number of subscriptions with filter updated"),deleted:N.number().int().min(0).describe("Number of subscriptions removed"),unchanged:N.number().int().min(0).describe("Number of subscriptions unchanged"),subscriptions:N.array(YK0).describe("Current subscriptions after sync")}),fU=N.object({subscriptionId:N.string().describe("Subscription ID to remove")}),hU=N.object({success:N.boolean().describe("Whether unsubscribe was successful"),subscriptionId:N.string().describe("Subscription ID that was removed")}),gU=N.object({eventId:N.string().describe("Event ID to cancel")}),xU=N.object({success:N.boolean().describe("Whether cancellation was successful"),eventId:N.string().describe("Event ID that was cancelled")}),uU=N.object({eventId:N.string().describe("Event ID to acknowledge")}),mU=N.object({success:N.boolean().describe("Whether ACK was successful"),eventId:N.string().describe("Event ID that was acknowledged")}),GK0=[{name:"EVENT_PUBLISH",inputSchema:SU,outputSchema:vU},{name:"EVENT_SUBSCRIBE",inputSchema:kU,outputSchema:_U},{name:"EVENT_UNSUBSCRIBE",inputSchema:fU,outputSchema:hU},{name:"EVENT_CANCEL",inputSchema:gU,outputSchema:xU},{name:"EVENT_ACK",inputSchema:uU,outputSchema:mU},{name:"EVENT_SYNC_SUBSCRIPTIONS",inputSchema:bU,outputSchema:yU}],i04=qZ(GK0)});var vg=m(()=>{CU();aH0();QK0();$K0()});var r04,a04,WK0;var HK0=m(()=>{d0();Y5();r04=UZ.extend({avatar:N.string().describe("URL or data URI to the assistant's avatar image"),system_prompt:N.string().describe("System prompt that defines the assistant's behavior"),gateway_id:N.string().describe("Gateway ID to use for this assistant"),model:N.object({id:N.string().describe("Model ID"),connectionId:N.string().describe("Connection ID that provides the model")}).describe("Selected model reference for this assistant")}),a04=zZ("assistant",r04),WK0=[...a04]});var lU,PG,ZK0,o04,s04,FK0,t04,e04,X44,Q44,J44,Y44,VK0,G44,$44,W44,H44,K44,Z44,F44,V44,q44,U44,lx4,z44,dx4,KK0,B44,L44,kg,px4;var qK0=m(()=>{d0();CU();Y5();lU=N.lazy(()=>N.union([N.null(),N.string(),N.number(),N.boolean(),N.record(N.string(),lU),N.array(lU)])),PG=N.record(N.string(),N.record(N.string(),lU)).optional().describe("Additional provider-specific options. Outer record keyed by provider name, inner by option key"),ZK0=N.object({type:N.literal("text"),text:N.string().describe("The text content"),providerOptions:PG}),o04=N.object({type:N.literal("text"),text:N.string().describe("The text content"),providerMetadata:N.any().optional().describe("Additional provider-specific metadata")}),s04=N.string().describe("File data as URL string"),FK0=N.object({type:N.literal("file"),filename:N.string().optional().describe("Optional filename of the file"),data:s04,mediaType:N.string().describe("IANA media type of the file (e.g., image/png, audio/mp3)"),providerOptions:PG}),t04=N.object({type:N.literal("file"),mediaType:N.string().describe("IANA media type of the file (e.g., image/png, audio/mp3)"),data:N.string().describe("Generated file data as base64 encoded string")}),e04=N.object({type:N.literal("reasoning"),text:N.string().describe("The reasoning text"),providerOptions:PG}),X44=N.object({type:N.literal("reasoning"),text:N.string().describe("The reasoning text"),providerMetadata:N.any().optional().describe("Additional provider-specific metadata")}),Q44=N.object({type:N.literal("tool-call"),toolCallId:N.string().describe("ID of the tool call, used to match with tool result"),toolName:N.string().describe("Name of the tool being called"),input:N.string().describe("Arguments of the tool call (JSON-serializable object matching tool input schema)"),providerExecuted:N.boolean().optional().describe("Whether the tool call will be executed by the provider"),providerOptions:PG}),J44=N.object({type:N.literal("tool-call"),toolCallId:N.string().describe("ID of the tool call"),toolName:N.string().describe("Name of the tool being called"),input:N.string().describe("Stringified JSON object with the tool call arguments"),providerExecuted:N.boolean().optional().describe("Whether the tool call will be executed by the provider"),providerMetadata:N.any().optional().describe("Additional provider-specific metadata")}),Y44=N.union([N.object({type:N.literal("text"),value:N.string()}),N.object({type:N.literal("json"),value:lU}),N.object({type:N.literal("error-text"),value:N.string()}),N.object({type:N.literal("error-json"),value:lU}),N.object({type:N.literal("content"),value:N.array(N.union([N.object({type:N.literal("text"),text:N.string().describe("Text content")}),N.object({type:N.literal("media"),data:N.string().describe("Base-64 encoded media data"),mediaType:N.string().describe("IANA media type")})]))})]),VK0=N.object({type:N.literal("tool-result"),toolCallId:N.string().describe("ID of the tool call that this result is associated with"),toolName:N.string().describe("Name of the tool that generated this result"),output:Y44.describe("Result of the tool call"),result:N.unknown().describe("Unknown result of the tool call"),providerOptions:PG}),G44=N.object({type:N.literal("tool-result"),toolCallId:N.string().describe("ID of the tool call that this result is associated with"),toolName:N.string().describe("Name of the tool that generated this result"),result:N.any().describe("Result of the tool call (JSON-serializable)"),isError:N.boolean().optional().describe("Whether the result is an error or error message"),providerExecuted:N.boolean().optional().describe("Whether the tool result was generated by the provider"),providerMetadata:N.any().optional().describe("Additional provider-specific metadata")}),$44=N.union([N.object({type:N.literal("source"),sourceType:N.literal("url"),id:N.string().describe("The ID of the source"),url:N.string().describe("The URL of the source"),title:N.string().optional().describe("The title of the source"),providerMetadata:N.any().optional().describe("Additional provider-specific metadata")}),N.object({type:N.literal("source"),sourceType:N.literal("document"),id:N.string().describe("The ID of the source"),mediaType:N.string().describe("IANA media type of the document (e.g., application/pdf)"),title:N.string().describe("The title of the document"),filename:N.string().optional().describe("Optional filename of the document"),providerMetadata:N.any().optional().describe("Additional provider-specific metadata")})]),W44=N.object({role:N.literal("system"),content:N.string().describe("System message content"),providerOptions:PG}),H44=N.object({role:N.literal("user"),content:N.array(N.union([ZK0,FK0])).describe("User message content parts (text or file)"),providerOptions:PG}),K44=N.object({role:N.literal("assistant"),content:N.array(N.union([ZK0,FK0,e04,Q44,VK0])).describe("Assistant message content parts (text, file, reasoning, tool-call, or tool-result)"),providerOptions:PG}),Z44=N.object({role:N.literal("tool"),content:N.array(VK0).describe("Tool message content (tool results)"),providerOptions:PG}),F44=N.union([W44,H44,K44,Z44]),V44=N.array(F44).describe("A list of messages forming the prompt"),q44=N.object({prompt:V44.describe("A language model prompt is a standardized prompt type (array of messages with roles: system, user, assistant, tool)"),maxOutputTokens:N.number().optional().describe("Maximum number of tokens to generate"),temperature:N.number().optional().describe("Temperature setting. The range depends on the provider and model"),topP:N.number().optional().describe("Nucleus sampling parameter"),topK:N.number().optional().describe("Only sample from the top K options for each subsequent token. Used to remove long tail low probability responses"),presencePenalty:N.number().optional().describe("Presence penalty setting. It affects the likelihood of the model to repeat information that is already in the prompt"),frequencyPenalty:N.number().optional().describe("Frequency penalty setting. It affects the likelihood of the model to repeatedly use the same words or phrases"),seed:N.number().optional().describe("The seed (integer) to use for random sampling. If set and supported by the model, calls will generate deterministic results"),stopSequences:N.array(N.string()).optional().describe("Stop sequences. If set, the model will stop generating text when one of the stop sequences is generated"),responseFormat:N.union([N.object({type:N.literal("text")}),N.object({type:N.literal("json"),schema:N.any().optional().describe("JSON schema that the generated output should conform to"),name:N.string().optional().describe("Name of output that should be generated"),description:N.string().optional().describe("Description of the output that should be generated")})]).optional().describe("Response format. The output can either be text or JSON. Default is text"),tools:N.array(N.any()).optional().describe("The tools that are available for the model"),toolChoice:N.any().optional().describe("Specifies how the tool should be selected. Defaults to 'auto'"),includeRawChunks:N.boolean().optional().describe("Include raw chunks in the stream. Only applicable for streaming calls"),abortSignal:N.any().optional().describe("Abort signal for cancelling the operation"),providerOptions:N.any().optional().describe("Additional provider-specific options")}),U44=N.object({content:N.array(N.union([o04,t04,X44,J44,G44,$44])).describe("Ordered content that the model has generated (text, tool-calls, reasoning, files, sources)"),finishReason:N.enum(["stop","length","content-filter","tool-calls","error","other","unknown"]).describe("Reason why generation stopped"),usage:N.looseObject({inputTokens:N.number().optional(),outputTokens:N.number().optional(),totalTokens:N.number().optional(),reasoningTokens:N.number().optional()}).describe("Usage information for the language model call"),providerMetadata:N.any().optional().describe("Additional provider-specific metadata"),request:N.object({body:N.any().optional().describe("Request HTTP body sent to the provider API")}).optional().describe("Optional request information for telemetry and debugging"),response:N.object({id:N.string().optional().describe("ID for the generated response"),timestamp:N.iso.datetime().optional().describe("Timestamp for the start of the generated response"),modelId:N.string().optional().describe("The ID of the response model that was used"),headers:N.record(N.string(),N.string()).optional().describe("Response headers"),body:N.any().optional().describe("Response HTTP body")}).optional().describe("Optional response information for telemetry and debugging"),warnings:N.array(N.any()).describe("Warnings for the call, e.g. unsupported settings")}),lx4=N.object({stream:N.any().describe("ReadableStream of LanguageModelV2StreamPart"),request:N.object({body:N.any().optional().describe("Request HTTP body sent to the provider API")}).optional().describe("Optional request information for telemetry and debugging"),response:N.object({headers:N.record(N.string(),N.string()).optional().describe("Response headers")}).optional().describe("Optional response data")}),z44=N.object({supportedUrls:N.record(N.string(),N.array(N.string())).describe("Supported URL patterns by media type for the provider")}),dx4=N.object({modelId:N.string().describe("The ID of the model"),logo:N.string().nullable(),description:N.string().nullable(),capabilities:N.array(N.string()),limits:N.object({contextWindow:N.number(),maxOutputTokens:N.number()}).nullable(),costs:N.object({input:N.number(),output:N.number()}).nullable(),provider:N.enum(["openai","anthropic","google","x-ai","deepseek","openai-compatible","openrouter"]).nullable()}),KK0=N.object({modelId:N.string().describe("The ID of the model"),callOptions:q44}),B44=UZ.extend({logo:N.string().nullable(),description:N.string().nullable(),capabilities:N.array(N.string()),limits:N.object({contextWindow:N.number(),maxOutputTokens:N.number()}).nullable(),costs:N.object({input:N.number(),output:N.number()}).nullable(),provider:N.enum(["openai","anthropic","google","xai","deepseek","openai-compatible","openrouter"]).nullable()}),L44=zZ("llm",B44,{readOnly:!0}),kg=[{name:"LLM_METADATA",inputSchema:N.object({modelId:N.string().describe("The ID of the model")}),outputSchema:z44},{name:"LLM_DO_STREAM",inputSchema:KK0,streamable:!0},{name:"LLM_DO_GENERATE",inputSchema:KK0,outputSchema:U44},...L44],px4=qZ(kg)});function j44(X){let Q=[],J=0;while(J<X.length){let Y=X[J];if(Y==="%")Q.push(".*");else if(Y==="_")Q.push(".");else if(/[.*+?^${}()|[\]\\]/.test(Y))Q.push("\\"+Y);else Q.push(Y);J++}return Q.join("")}function G5(X){return typeof X==="string"||typeof X==="number"}function SP(X,Q){if("conditions"in Q){let{operator:H,conditions:K}=Q;switch(H){case"and":return K.every((Z)=>SP(X,Z));case"or":return K.some((Z)=>SP(X,Z));case"not":return!K.every((Z)=>SP(X,Z));default:return!0}}let{field:J,operator:Y,value:G}=Q,$=J.join("."),W=_g(X,$);switch(Y){case"eq":return W===G;case"gt":return G5(W)&&G5(G)&&W>G;case"gte":return G5(W)&&G5(G)&&W>=G;case"lt":return G5(W)&&G5(G)&&W<G;case"lte":return G5(W)&&G5(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 H=j44(G);return new RegExp(`^${H}$`,"i").test(W);case"contains":if(typeof W!=="string"||typeof G!=="string")return!1;return W.toLowerCase().includes(G.toLowerCase());default:return!0}}function _g(X,Q){let J=Q.split("."),Y=X;for(let G of J){if(Y==null||typeof Y!=="object")return;Y=Y[G]}return Y}function N44(X,Q){return[...X].sort((J,Y)=>{for(let G of Q){let $=G.field.join("."),W=_g(J,$),H=_g(Y,$),K=0;if(W==null&&H==null)continue;if(W==null)K=G.nulls==="first"?-1:1;else if(H==null)K=G.nulls==="first"?1:-1;else if(typeof W==="string"&&typeof H==="string")K=W.localeCompare(H);else if(typeof W==="number"&&typeof H==="number")K=W-H;else K=String(W).localeCompare(String(H));if(K!==0)return G.direction==="desc"?-K:K}return 0})}var D44,O44,w44,bg;var UK0=m(()=>{vg();HK0();Y5();qK0();d0();J6();x$();D44={LLM:kg,ASSISTANTS:WK0};O44=RU.extend({binding:N.union([N.object({}).passthrough(),N.string()]).optional()}),w44=IU(mJ),bg=Q4({name:"COLLECTION_CONNECTIONS_LIST",description:"List all connections in the organization with filtering, sorting, and pagination",inputSchema:O44,outputSchema:w44,handler:async(X,Q)=>{await Q.access.check();let J=e4(Q),Y=X.binding?typeof X.binding==="string"?(()=>{let q=D44[X.binding.toUpperCase()];if(!q)throw Error(`Unknown binding: ${X.binding}`);return q})():X.binding:void 0,G=Y?IP(Y):void 0,$=await Q.storage.connections.list(J.id),W=G?await Promise.all($.map(async(q)=>{if(!q.tools||q.tools.length===0)return null;return G.isImplementedBy(q.tools.map((L)=>({name:L.name,inputSchema:L.inputSchema,outputSchema:L.outputSchema})))?q:null})).then((q)=>q.filter((B)=>B!==null)):$;if(X.where)W=W.filter((q)=>SP(q,X.where));if(X.orderBy&&X.orderBy.length>0)W=N44(W,X.orderBy);let H=W.length,K=X.offset??0,Z=X.limit??100,F=W.slice(K,K+Z),V=K+Z<H;return{items:F,totalCount:H,hasMore:V}}})});var M44,yg;var zK0=m(()=>{Y5();J6();x$();M44=Rg(mJ),yg=Q4({name:"COLLECTION_CONNECTIONS_GET",description:"Get connection details by ID",inputSchema:Cg,outputSchema:M44,handler:async(X,Q)=>{let J=e4(Q);await Q.access.check();let Y=await Q.storage.connections.findById(X.id);if(!Y||Y.organization_id!==J.id)return{item:null};return{item:Y}}})});var vP=(X,Q)=>{if(Q===null||Q===void 0)return;let J=X.replace(/\[(\w+)\]/g,".$1").split(".").filter(Boolean),Y=Q;for(let G of J){if(Y===null||Y===void 0||typeof Y!=="object")return;Y=Y[G]}return Y};function BK0(X){let Q=X.split("::");if(Q.length!==2||!Q[0]||!Q[1])throw Error(`Invalid scope format: ${X}. Expected format: "KEY::SCOPE"`);return Q}function P44(X){let Q=X.split("::");if(Q.length!==2||!Q[0]||!Q[1])return null;return Q}function T44(X){if(typeof X==="object"&&X!==null&&"value"in X){let Q=X.value;if(typeof Q==="string")return Q}return null}function A44(X,Q){let J={};if(!X||!Q)return J;for(let Y of Q){if(Y==="*"){J["*"]=["*"];continue}let G=P44(Y);if(!G)continue;let[$,W]=G,H=vP($,X),K=T44(H);if(K){if(!J[K])J[K]=[];J[K].push(W)}}return J}function LK0(X,Q){let J=A44(X,Q);return new Set(Object.keys(J).filter((Y)=>Y!=="*"))}var DK0=()=>{};async function R44(X,Q,J,Y){for(let $ of Q){if($==="*")continue;let[W]=BK0($),H=vP(W,X);if(H===void 0||H===null)throw Error(`Scope references key "${W}" but it's not present in state`)}let G=LK0(X,Q);for(let $ of G){if($===hW.SELF)continue;let W=await Y.storage.connections.findById($);if(!W||W.organization_id!==J)throw Error(`Referenced connection not found: ${$}`);try{await Y.access.check($)}catch(H){throw Error(`Access denied to referenced connection: ${$}. ${H.message}`)}}}var E44,C44,fg;var jK0=m(()=>{DK0();Ow();d0();J6();BP();x$();E44=N.object({id:N.string().describe("ID of the connection to update"),data:o10.describe("Partial connection data to update")}),C44=N.object({item:mJ.describe("The updated connection entity")});fg=Q4({name:"COLLECTION_CONNECTIONS_UPDATE",description:"Update an existing MCP connection in the organization",inputSchema:E44,outputSchema:C44,handler:async(X,Q)=>{B4(Q);let J=e4(Q);await Q.access.check();let{id:Y,data:G}=X,$=await Q.storage.connections.findById(Y);if(!$||$.organization_id!==J.id)throw Error("Connection not found in organization");let W=G.configuration_state??$.configuration_state,H=G.configuration_scopes??$.configuration_scopes??[];if(G.configuration_state!==void 0||G.configuration_scopes!==void 0){if(G.configuration_state!==void 0)W=G.configuration_state;else if(W===null)W={};if(G.configuration_scopes!==void 0)H=G.configuration_scopes??[];if(H.length>0&&W)await R44(W,H,J.id,Q)}let K=await XZ({id:$.id,title:G.title??$.title,connection_type:G.connection_type??$.connection_type,connection_url:G.connection_url??$.connection_url,connection_token:G.connection_token??$.connection_token,connection_headers:G.connection_headers??$.connection_headers}).catch(()=>null),Z=K?.length?K:null,F={...G,tools:Z,configuration_state:W,configuration_scopes:H},V=await Q.storage.connections.update(Y,F);if((G.configuration_state!==void 0||G.configuration_scopes!==void 0)&&W&&H.length>0)try{await(await Q.createMCPProxy(Y)).client.callTool({name:"ON_MCP_CONFIGURATION",arguments:{state:W,scopes:H}})}catch(q){console.error("Failed to invoke ON_MCP_CONFIGURATION callback",q)}return{item:V}}})});var hg;var NK0=m(()=>{Y5();J6();x$();hg=Q4({name:"COLLECTION_CONNECTIONS_DELETE",description:"Delete a connection",inputSchema:Ig,outputSchema:Sg(mJ),handler:async(X,Q)=>{B4(Q);let J=e4(Q);await Q.access.check();let Y=await Q.storage.connections.findById(X.id);if(!Y)throw Error(`Connection not found: ${X.id}`);if(Y.organization_id!==J.id)throw Error("Connection not found in organization");return await Q.storage.connections.delete(X.id),{item:Y}}})});var gg;var OK0=m(()=>{d0();J6();gg=Q4({name:"CONNECTION_TEST",description:"Test connection health and latency",inputSchema:N.object({id:N.string()}),outputSchema:N.object({id:N.string(),healthy:N.boolean(),latencyMs:N.number()}),handler:async(X,Q)=>{let J=e4(Q);await Q.access.check();let Y=await Q.storage.connections.findById(X.id);if(!Y||Y.organization_id!==J.id)throw Error("Connection not found");let G=await Q.storage.connections.testConnection(X.id);return{id:X.id,...G}}})});var wK0=m(()=>{SH0();UK0();zK0();jK0();NK0();OK0()});import{sql as E6}from"kysely";function MK0(X){if(X===null||X===void 0)return"NULL";if(typeof X==="number")return String(X);if(typeof X==="boolean")return X?"TRUE":"FALSE";if(typeof X==="string")return`'${X.replace(/'/g,"''")}'`;if(X instanceof Date)return`'${X.toISOString()}'`;return`'${JSON.stringify(X).replace(/'/g,"''")}'`}function v44(X,Q){let J=X;for(let G=Q.length;G>=1;G--){let $=`$${G}`;if(J.includes($))J=J.replaceAll($,MK0(Q[G-1]))}let Y=[];for(let G=0;G<J.length;G++)if(J[G]==="?")Y.push(G);for(let G=Math.min(Y.length,Q.length)-1;G>=0;G--){let $=Y[G],W=MK0(Q[G]);J=J.slice(0,$)+W+J.slice($+1)}return J}function PK0(X){return X.replace(/-/g,"_")}function _44(X){return`app_${PK0(X)}`}function b44(X){return`app_role_${PK0(X)}`}function y44(X){if(X instanceof Error){let Q=X.message.toLowerCase(),J=X.code;return J==="3F000"||J==="42704"||Q.includes("schema")&&Q.includes("does not exist")||Q.includes("role")&&Q.includes("does not exist")}return!1}async function f44(X,Q,J){if(await E6`CREATE SCHEMA IF NOT EXISTS ${E6.id(Q)}`.execute(X),!(await E6`
|
|
213
213
|
SELECT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = ${J}) as exists
|
|
214
|
-
`.execute(X)).rows[0]?.exists)await E6`CREATE ROLE ${E6.id(J)} NOLOGIN`.execute(X);await E6`GRANT ${E6.id(J)} TO CURRENT_USER`.execute(X),await E6`GRANT USAGE, CREATE ON SCHEMA ${E6.id(Q)} TO ${E6.id(J)}`.execute(X),await E6`GRANT ALL ON ALL TABLES IN SCHEMA ${E6.id(Q)} TO ${E6.id(J)}`.execute(X),await E6`GRANT ALL ON ALL SEQUENCES IN SCHEMA ${E6.id(Q)} TO ${E6.id(J)}`.execute(X),await E6`ALTER DEFAULT PRIVILEGES IN SCHEMA ${E6.id(Q)} GRANT ALL ON TABLES TO ${E6.id(J)}`.execute(X),await E6`ALTER DEFAULT PRIVILEGES IN SCHEMA ${E6.id(Q)} GRANT ALL ON SEQUENCES TO ${E6.id(J)}`.execute(X),await E6`REVOKE ALL ON SCHEMA public FROM ${E6.id(J)}`.execute(X)}async function h44(X,Q,J,Y){try{return await X.transaction().execute(async(G)=>{return await E6`SET LOCAL ROLE ${E6.id(J)}`.execute(G),await E6`SET LOCAL search_path TO ${E6.id(Q)}`.execute(G),await E6.raw(Y).execute(G)})}catch(G){if(y44(G))return await f44(X,Q,J),await X.transaction().execute(async($)=>{return await E6`SET LOCAL ROLE ${E6.id(J)}`.execute($),await E6`SET LOCAL search_path TO ${E6.id(Q)}`.execute($),await E6.raw(Y).execute($)});throw G}}var S44,k44,TK0;var AK0=m(()=>{d0();J6();S44=N.object({results:N.array(N.unknown()).optional(),success:N.boolean().optional()});k44=N.object({sql:N.string().describe("The SQL query to run"),params:N.array(N.any()).describe("The parameters to pass to the SQL query").optional()});TK0=Q4({name:"DATABASES_RUN_SQL",description:"Run a SQL query against the database",inputSchema:k44,outputSchema:N.object({result:N.array(S44)}),handler:async(X,Q)=>{B4(Q),await Q.access.check();let J=v44(X.sql,X.params||[]);if(!Q.connectionId)throw Error("Connection context required for database access");let Y=_44(Q.connectionId),G=b44(Q.connectionId);return{result:[{results:(await h44(Q.db,Y,G,J)).rows,success:!0}]}}})});var EK0,x44,CK0;var TG=m(()=>{d0();vg();EK0=N.object({connectionId:N.string().optional().describe("Filter subscriptions by connection ID (optional)")}),x44=N.object({id:N.string().describe("Subscription ID"),connectionId:N.string().describe("Subscriber connection ID"),eventType:N.string().describe("Event type pattern"),publisher:N.string().nullable().describe("Publisher connection filter (null = all publishers)"),filter:N.string().nullable().describe("JSONPath filter expression"),enabled:N.boolean().describe("Whether subscription is enabled"),createdAt:N.union([N.string(),N.date()]).describe("Created timestamp"),updatedAt:N.union([N.string(),N.date()]).describe("Updated timestamp")}),CK0=N.object({subscriptions:N.array(x44).describe("List of subscriptions")})});var xg;var RK0=m(()=>{J6();TG();xg=Q4({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:SU,outputSchema:vU,handler:async(X,Q)=>{B4(Q);let J=e4(Q);await Q.access.check();let Y=Q.connectionId;if(!Y)throw Error("Connection ID required to publish events. Use a connection-scoped token.");let G=await Q.eventBus.publish(J.id,Y,{type:X.type,subject:X.subject,data:X.data,deliverAt:X.deliverAt,cron:X.cron});return{id:G.id,type:G.type,source:G.source,time:G.time}}})});var ug;var IK0=m(()=>{J6();TG();ug=Q4({name:"EVENT_SUBSCRIBE",description:"Subscribe to events of a specific type. The subscriber is automatically set to the caller's connection.",inputSchema:kU,outputSchema:_U,handler:async(X,Q)=>{B4(Q);let J=e4(Q);await Q.access.check();let Y=Q.connectionId;if(!Y)throw Error("Connection ID required to subscribe. Use a connection-scoped token.");let G=await Q.eventBus.subscribe(J.id,{connectionId:Y,eventType:X.eventType,publisher:X.publisher,filter:X.filter});return{subscription:{id:G.id,connectionId:G.connectionId,eventType:G.eventType,publisher:G.publisher,filter:G.filter,enabled:G.enabled,createdAt:G.createdAt,updatedAt:G.updatedAt}}}})});var mg;var SK0=m(()=>{J6();TG();mg=Q4({name:"EVENT_UNSUBSCRIBE",description:"Unsubscribe from events by removing a subscription.",inputSchema:fU,outputSchema:hU,handler:async(X,Q)=>{B4(Q);let J=e4(Q);await Q.access.check();let Y=Q.connectionId;if(!Y)throw Error("Connection ID required to unsubscribe. Use a connection-scoped token.");let G=await Q.eventBus.getSubscription(J.id,X.subscriptionId);if(!G)throw Error(`Subscription not found: ${X.subscriptionId}`);if(G.connectionId!==Y)throw Error("Cannot unsubscribe from a subscription owned by another connection");return{success:(await Q.eventBus.unsubscribe(J.id,X.subscriptionId)).success,subscriptionId:X.subscriptionId}}})});var lg;var vK0=m(()=>{J6();TG();lg=Q4({name:"EVENT_CANCEL",description:"Cancel a recurring event to stop future deliveries. Only the publisher can cancel their own events.",inputSchema:gU,outputSchema:xU,handler:async(X,Q)=>{B4(Q);let J=e4(Q);await Q.access.check();let Y=Q.connectionId;if(!Y)throw Error("Connection ID required to cancel events. Use a connection-scoped token.");if(!await Q.eventBus.getEvent(J.id,X.eventId))throw Error(`Event not found: ${X.eventId}`);if(!(await Q.eventBus.cancelEvent(J.id,X.eventId,Y)).success)throw Error("Failed to cancel event. Either the event is already completed/failed, or you are not the publisher.");return{success:!0,eventId:X.eventId}}})});var dg;var kK0=m(()=>{J6();TG();dg=Q4({name:"EVENT_ACK",description:"Acknowledge delivery of an event. Call after successfully processing an event received via ON_EVENTS with retryAfter.",inputSchema:uU,outputSchema:mU,handler:async(X,Q)=>{B4(Q);let J=e4(Q);await Q.access.check();let Y=Q.connectionId;if(!Y)throw Error("Connection ID required to acknowledge events. Use a connection-scoped token.");if(!(await Q.eventBus.ackEvent(J.id,X.eventId,Y)).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:X.eventId}}})});var pg;var _K0=m(()=>{J6();TG();pg=Q4({name:"EVENT_SUBSCRIPTION_LIST",description:"List event subscriptions, optionally filtered by connection ID.",inputSchema:EK0,outputSchema:CK0,handler:async(X,Q)=>{B4(Q);let J=e4(Q);return await Q.access.check(),{subscriptions:(await Q.eventBus.listSubscriptions(J.id,X.connectionId)).map((G)=>({id:G.id,connectionId:G.connectionId,eventType:G.eventType,publisher:G.publisher,filter:G.filter,enabled:G.enabled,createdAt:G.createdAt,updatedAt:G.updatedAt}))}}})});var cg;var bK0=m(()=>{J6();TG();cg=Q4({name:"EVENT_SYNC_SUBSCRIPTIONS",description:"Sync subscriptions to desired state. Creates new, deletes removed, updates changed filters. Subscriptions are identified by (eventType, publisher).",inputSchema:bU,outputSchema:yU,handler:async(X,Q)=>{B4(Q);let J=e4(Q);await Q.access.check();let Y=Q.connectionId;if(!Y)throw Error("Connection ID required to sync subscriptions. Use a connection-scoped token.");let G=await Q.eventBus.syncSubscriptions(J.id,{connectionId:Y,subscriptions:X.subscriptions});return{created:G.created,updated:G.updated,deleted:G.deleted,unchanged:G.unchanged,subscriptions:G.subscriptions.map(($)=>({id:$.id,connectionId:$.connectionId,eventType:$.eventType,publisher:$.publisher,filter:$.filter,enabled:$.enabled,createdAt:$.createdAt,updatedAt:$.updatedAt}))}}})});var yK0=m(()=>{RK0();IK0();SK0();vK0();kK0();_K0();bK0();TG()});var ng,ig,m44,NY,fK0,hK0;var BZ=m(()=>{d0();ng=N.enum(["inclusion","exclusion"]).describe("Tool selection mode: 'inclusion' = include selected (default), 'exclusion' = exclude selected"),ig=N.enum(["passthrough","smart_tool_selection","code_execution"]).describe("Gateway tool selection strategy: 'passthrough' (default), 'smart_tool_selection', or 'code_execution'"),m44=N.object({connection_id:N.string().describe("Connection ID"),selected_tools:N.array(N.string()).nullable().describe("Selected tool names. With 'inclusion' mode: null = all tools included. With 'exclusion' mode: null = entire connection excluded"),selected_resources:N.array(N.string()).nullable().describe("Selected resource URIs or patterns. Supports * and ** wildcards for pattern matching. With 'inclusion' mode: null = all resources included."),selected_prompts:N.array(N.string()).nullable().describe("Selected prompt names. With 'inclusion' mode: null = all prompts included. With 'exclusion' mode: null = entire connection excluded.")}),NY=N.object({id:N.string().describe("Unique identifier for the gateway"),title:N.string().describe("Human-readable name for the gateway"),description:N.string().nullable().describe("Description of the gateway"),icon:N.string().nullable().optional().describe("Icon URL for the gateway"),created_at:N.string().describe("When the gateway was created"),updated_at:N.string().describe("When the gateway was last updated"),created_by:N.string().describe("User ID who created the gateway"),updated_by:N.string().optional().describe("User ID who last updated the gateway"),organization_id:N.string().describe("Organization ID this gateway belongs to"),tool_selection_strategy:ig.describe("Gateway behavior strategy (metadata for now): 'passthrough', 'smart_tool_selection', or 'code_execution'"),tool_selection_mode:ng.describe("Tool selection mode: 'inclusion' = include selected, 'exclusion' = exclude selected"),status:N.enum(["active","inactive"]).describe("Current status"),is_default:N.boolean().describe("Whether this is the default gateway for the organization"),connections:N.array(m44).describe("Connections with their selected tools (behavior depends on tool_selection_mode)")}),fK0=N.object({title:N.string().min(1).max(255).describe("Name for the gateway"),description:N.string().nullable().optional().describe("Optional description"),tool_selection_strategy:ig.optional().default("passthrough").describe("Gateway behavior strategy (defaults to 'passthrough')"),tool_selection_mode:ng.optional().default("inclusion").describe("Tool selection mode (defaults to 'inclusion')"),icon:N.string().nullable().optional().describe("Optional icon URL"),status:N.enum(["active","inactive"]).optional().default("active").describe("Initial status"),is_default:N.boolean().optional().default(!1).describe("Whether this is the default gateway for the organization"),connections:N.array(N.object({connection_id:N.string().describe("Connection ID"),selected_tools:N.array(N.string()).nullable().optional().describe("Selected tool names (null/undefined = all tools or full exclusion)"),selected_resources:N.array(N.string()).nullable().optional().describe("Selected resource URIs or patterns with * and ** wildcards (null/undefined = all resources)"),selected_prompts:N.array(N.string()).nullable().optional().describe("Selected prompt names (null/undefined = all prompts or full exclusion)")})).describe("Connections to include/exclude (can be empty for exclusion mode)")}),hK0=N.object({title:N.string().min(1).max(255).optional().describe("New name"),description:N.string().nullable().optional().describe("New description (null to clear)"),tool_selection_strategy:ig.optional().describe("New gateway behavior strategy"),tool_selection_mode:ng.optional().describe("New tool selection mode"),icon:N.string().nullable().optional().describe("New icon URL (null to clear)"),status:N.enum(["active","inactive"]).optional().describe("New status"),is_default:N.boolean().optional().describe("Set as default gateway for the organization"),connections:N.array(N.object({connection_id:N.string().describe("Connection ID"),selected_tools:N.array(N.string()).nullable().optional().describe("Selected tool names (null/undefined = all tools or full exclusion)"),selected_resources:N.array(N.string()).nullable().optional().describe("Selected resource URIs or patterns with * and ** wildcards (null/undefined = all resources)"),selected_prompts:N.array(N.string()).nullable().optional().describe("Selected prompt names (null/undefined = all prompts or full exclusion)")})).optional().describe("New connections (replaces existing)")})});var l44,d44,rg;var gK0=m(()=>{d0();J6();BZ();l44=N.object({data:fK0.describe("Data for the new gateway")}),d44=N.object({item:NY.describe("The created gateway entity")}),rg=Q4({name:"COLLECTION_GATEWAY_CREATE",description:"Create a new MCP gateway in the organization",inputSchema:l44,outputSchema:d44,handler:async(X,Q)=>{B4(Q);let J=e4(Q);await Q.access.check();let Y=_X(Q);if(!Y)throw Error("User ID required to create gateway");let G={title:X.data.title,description:X.data.description??null,toolSelectionStrategy:X.data.tool_selection_strategy??"passthrough",toolSelectionMode:X.data.tool_selection_mode??"inclusion",icon:X.data.icon??null,status:X.data.status,isDefault:X.data.is_default??!1,connections:X.data.connections.map((W)=>({connectionId:W.connection_id,selectedTools:W.selected_tools??null,selectedResources:W.selected_resources??null,selectedPrompts:W.selected_prompts??null}))},$=await Q.storage.gateways.create(J.id,Y,G);return{item:{id:$.id,title:$.title,description:$.description,icon:$.icon,organization_id:$.organizationId,tool_selection_strategy:$.toolSelectionStrategy,tool_selection_mode:$.toolSelectionMode,status:$.status,is_default:$.isDefault,connections:$.connections.map((W)=>({connection_id:W.connectionId,selected_tools:W.selectedTools,selected_resources:W.selectedResources,selected_prompts:W.selectedPrompts})),created_at:$.createdAt,updated_at:$.updatedAt,created_by:$.createdBy,updated_by:$.updatedBy??void 0}}}})});function p44(X){let Q=[],J=0;while(J<X.length){let Y=X[J];if(Y==="%")Q.push(".*");else if(Y==="_")Q.push(".");else if(/[.*+?^${}()|[\]\\]/.test(Y))Q.push("\\"+Y);else Q.push(Y);J++}return Q.join("")}function $5(X){return typeof X==="string"||typeof X==="number"}function ag(X,Q){let J=Q.split("."),Y=X;for(let G of J){if(Y==null||typeof Y!=="object")return;Y=Y[G]}return Y}function c44(X,Q){return X.connections.some((J)=>J.connection_id===Q)}function kP(X,Q){if("conditions"in Q){let{operator:H,conditions:K}=Q;switch(H){case"and":return K.every((Z)=>kP(X,Z));case"or":return K.some((Z)=>kP(X,Z));case"not":return!K.every((Z)=>kP(X,Z));default:return!0}}let{field:J,operator:Y,value:G}=Q,$=J.join(".");if($==="connection_id"){if(Y!=="eq"||typeof G!=="string")return!1;return c44(X,G)}let W=ag(X,$);switch(Y){case"eq":return W===G;case"gt":return $5(W)&&$5(G)&&W>G;case"gte":return $5(W)&&$5(G)&&W>=G;case"lt":return $5(W)&&$5(G)&&W<G;case"lte":return $5(W)&&$5(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 H=p44(G);return new RegExp(`^${H}$`,"i").test(W);case"contains":if(typeof W!=="string"||typeof G!=="string")return!1;return W.toLowerCase().includes(G.toLowerCase());default:return!0}}function n44(X,Q){return[...X].sort((J,Y)=>{for(let G of Q){let $=G.field.join("."),W=ag(J,$),H=ag(Y,$),K=0;if(W==null&&H==null)continue;if(W==null)K=G.nulls==="first"?-1:1;else if(H==null)K=G.nulls==="first"?1:-1;else if(typeof W==="string"&&typeof H==="string")K=W.localeCompare(H);else if(typeof W==="number"&&typeof H==="number")K=W-H;else K=String(W).localeCompare(String(H));if(K!==0)return G.direction==="desc"?-K:K}return 0})}var i44,r44,og;var xK0=m(()=>{Y5();J6();BZ();i44=RU,r44=IU(NY),og=Q4({name:"COLLECTION_GATEWAY_LIST",description:"List all MCP gateways in the organization",inputSchema:i44,outputSchema:r44,handler:async(X,Q)=>{await Q.access.check();let J=e4(Q),Y=X.where&&!("conditions"in X.where)&&X.where.field.join(".")==="connection_id"&&X.where.operator==="eq"&&typeof X.where.value==="string"?X.where.value:void 0,$=(Y?await Q.storage.gateways.listByConnectionId(J.id,Y):await Q.storage.gateways.list(J.id)).map((V)=>({id:V.id,title:V.title,description:V.description,icon:V.icon,is_default:V.isDefault,organization_id:V.organizationId,tool_selection_strategy:V.toolSelectionStrategy,tool_selection_mode:V.toolSelectionMode,status:V.status,connections:V.connections.map((q)=>({connection_id:q.connectionId,selected_tools:q.selectedTools,selected_resources:q.selectedResources,selected_prompts:q.selectedPrompts})),created_at:V.createdAt,updated_at:V.updatedAt,created_by:V.createdBy,updated_by:V.updatedBy??void 0}));if(X.where)$=$.filter((V)=>kP(V,X.where));if(X.orderBy&&X.orderBy.length>0)$=n44($,X.orderBy);let W=$.length,H=X.offset??0,K=X.limit??100,Z=$.slice(H,H+K),F=H+K<W;return{items:Z,totalCount:W,hasMore:F}}})});var a44,o44,sg;var uK0=m(()=>{d0();J6();BZ();a44=N.object({id:N.string().describe("ID of the gateway to retrieve")}),o44=N.object({item:NY.nullable().describe("The retrieved gateway, or null if not found")}),sg=Q4({name:"COLLECTION_GATEWAY_GET",description:"Get an MCP gateway by ID",inputSchema:a44,outputSchema:o44,handler:async(X,Q)=>{B4(Q);let J=e4(Q);await Q.access.check();let Y=await Q.storage.gateways.findById(X.id);if(Y&&Y.organizationId!==J.id)return{item:null};if(!Y)return{item:null};return{item:{id:Y.id,title:Y.title,description:Y.description,icon:Y.icon,organization_id:Y.organizationId,tool_selection_strategy:Y.toolSelectionStrategy,tool_selection_mode:Y.toolSelectionMode,status:Y.status,is_default:Y.isDefault,connections:Y.connections.map((G)=>({connection_id:G.connectionId,selected_tools:G.selectedTools,selected_resources:G.selectedResources,selected_prompts:G.selectedPrompts})),created_at:Y.createdAt,updated_at:Y.updatedAt,created_by:Y.createdBy,updated_by:Y.updatedBy??void 0}}}})});var s44,t44,tg;var mK0=m(()=>{d0();J6();BZ();s44=N.object({id:N.string().describe("ID of the gateway to update"),data:hK0.describe("Partial gateway data to update")}),t44=N.object({item:NY.describe("The updated gateway entity")}),tg=Q4({name:"COLLECTION_GATEWAY_UPDATE",description:"Update an MCP gateway",inputSchema:s44,outputSchema:t44,handler:async(X,Q)=>{B4(Q);let J=e4(Q);await Q.access.check();let Y=_X(Q);if(!Y)throw Error("User ID required to update gateway");let G=await Q.storage.gateways.findById(X.id);if(!G)throw Error(`Gateway not found: ${X.id}`);if(G.organizationId!==J.id)throw Error(`Gateway not found: ${X.id}`);let $={};if(X.data.title!==void 0)$.title=X.data.title;if(X.data.description!==void 0)$.description=X.data.description;if(X.data.tool_selection_strategy!==void 0)$.toolSelectionStrategy=X.data.tool_selection_strategy;if(X.data.tool_selection_mode!==void 0)$.toolSelectionMode=X.data.tool_selection_mode;if(X.data.icon!==void 0)$.icon=X.data.icon;if(X.data.status!==void 0)$.status=X.data.status;if(X.data.is_default!==void 0)$.isDefault=X.data.is_default;if(X.data.connections!==void 0)$.connections=X.data.connections.map((H)=>({connectionId:H.connection_id,selectedTools:H.selected_tools??null,selectedResources:H.selected_resources??null,selectedPrompts:H.selected_prompts??null}));let W=await Q.storage.gateways.update(X.id,Y,$);return{item:{id:W.id,title:W.title,description:W.description,icon:W.icon,organization_id:W.organizationId,tool_selection_strategy:W.toolSelectionStrategy,tool_selection_mode:W.toolSelectionMode,status:W.status,is_default:W.isDefault,connections:W.connections.map((H)=>({connection_id:H.connectionId,selected_tools:H.selectedTools,selected_resources:H.selectedResources,selected_prompts:H.selectedPrompts})),created_at:W.createdAt,updated_at:W.updatedAt,created_by:W.createdBy,updated_by:W.updatedBy??void 0}}}})});var e44,X64,eg;var lK0=m(()=>{d0();J6();BZ();e44=N.object({id:N.string().describe("ID of the gateway to delete")}),X64=N.object({item:NY.describe("The deleted gateway entity")}),eg=Q4({name:"COLLECTION_GATEWAY_DELETE",description:"Delete an MCP gateway",inputSchema:e44,outputSchema:X64,handler:async(X,Q)=>{B4(Q);let J=e4(Q);await Q.access.check();let Y=await Q.storage.gateways.findById(X.id);if(!Y)throw Error(`Gateway not found: ${X.id}`);if(Y.organizationId!==J.id)throw Error(`Gateway not found: ${X.id}`);if(Y.isDefault)throw Error("Cannot delete the default gateway. Set another gateway as default first.");return await Q.storage.gateways.delete(X.id),{item:{id:Y.id,title:Y.title,description:Y.description,icon:Y.icon,organization_id:Y.organizationId,tool_selection_strategy:Y.toolSelectionStrategy,tool_selection_mode:Y.toolSelectionMode,status:Y.status,is_default:Y.isDefault,connections:Y.connections.map((G)=>({connection_id:G.connectionId,selected_tools:G.selectedTools,selected_resources:G.selectedResources,selected_prompts:G.selectedPrompts})),created_at:Y.createdAt instanceof Date?Y.createdAt.toISOString():Y.createdAt,updated_at:Y.updatedAt instanceof Date?Y.updatedAt.toISOString():Y.updatedAt,created_by:Y.createdBy,updated_by:Y.updatedBy??void 0}}}})});var dK0=m(()=>{gK0();xK0();uK0();mK0();lK0()});var J64,Xx;var pK0=m(()=>{J6();d0();J64=N.object({id:N.string().optional().describe("Unique log identifier"),organizationId:N.string().describe("Organization ID"),connectionId:N.string().describe("Connection ID"),connectionTitle:N.string().describe("Connection display name"),toolName:N.string().describe("Name of the tool that was called"),input:N.record(N.string(),N.unknown()).describe("Redacted tool input"),output:N.record(N.string(),N.unknown()).describe("Redacted tool output"),isError:N.boolean().describe("Whether the call resulted in an error"),errorMessage:N.string().nullish().describe("Error message if applicable"),durationMs:N.number().describe("Call duration in milliseconds"),timestamp:N.string().describe("ISO 8601 timestamp of the call"),userId:N.string().nullish().describe("User who triggered the call"),requestId:N.string().describe("Unique request identifier"),userAgent:N.string().nullish().describe("Client identifier (x-mesh-client header)"),gatewayId:N.string().nullish().describe("Gateway ID if routed through a gateway"),properties:N.record(N.string(),N.string()).nullish().describe("Custom key-value metadata attached to the log")}),Xx=Q4({name:"MONITORING_LOGS_LIST",description:"List monitoring logs for tool calls in the organization",inputSchema:N.object({connectionId:N.string().optional().describe("Filter by connection ID"),gatewayId:N.string().optional().describe("Filter by gateway ID"),toolName:N.string().optional().describe("Filter by tool name"),isError:N.boolean().optional().describe("Filter by error status"),startDate:N.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:N.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),limit:N.number().default(100).describe("Maximum number of results"),offset:N.number().default(0).describe("Offset for pagination"),properties:N.record(N.string(),N.string()).optional().describe("Filter by exact property key=value matches"),propertyKeys:N.array(N.string()).optional().describe("Filter by logs that have these property keys"),propertyPatterns:N.record(N.string(),N.string()).optional().describe("Filter by property value patterns (SQL LIKE, use % as wildcard)")}),outputSchema:N.object({logs:N.array(J64).describe("Array of monitoring logs"),total:N.number().describe("Total number of logs matching filters"),offset:N.number().describe("Current offset for pagination"),limit:N.number().describe("Current limit for pagination")}),handler:async(X,Q)=>{let J=e4(Q),G=X.properties||X.propertyKeys||X.propertyPatterns?{properties:X.properties,propertyKeys:X.propertyKeys,propertyPatterns:X.propertyPatterns}:void 0,$={organizationId:J.id,connectionId:X.connectionId,gatewayId:X.gatewayId,toolName:X.toolName,isError:X.isError,startDate:X.startDate?new Date(X.startDate):void 0,endDate:X.endDate?new Date(X.endDate):void 0,limit:X.limit,offset:X.offset,propertyFilters:G},W=await Q.storage.monitoring.query($);return{logs:W.logs.map((H)=>({...H,timestamp:H.timestamp instanceof Date?H.timestamp.toISOString():H.timestamp})),total:W.total,offset:X.offset,limit:X.limit}}})});var Qx;var cK0=m(()=>{J6();d0();Qx=Q4({name:"MONITORING_STATS",description:"Get aggregated statistics for tool call monitoring",inputSchema:N.object({startDate:N.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:N.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)")}),outputSchema:N.object({totalCalls:N.number().describe("Total number of tool calls"),errorRate:N.number().describe("Error rate as a decimal (0 to 1)"),avgDurationMs:N.number().describe("Average call duration in milliseconds"),errorRatePercent:N.string().describe("Error rate as a percentage string")}),handler:async(X,Q)=>{let Y={organizationId:e4(Q).id,startDate:X.startDate?new Date(X.startDate):void 0,endDate:X.endDate?new Date(X.endDate):void 0},G=await Q.storage.monitoring.getStats(Y);return{...G,errorRatePercent:(G.errorRate*100).toFixed(2)}}})});var nK0=m(()=>{pK0();cK0()});var Jx;var iK0=m(()=>{d0();J6();Jx=Q4({name:"ORGANIZATION_CREATE",description:"Create a new organization",inputSchema:N.object({slug:N.string().min(1).max(50).regex(/^[a-z0-9-]+$/,"Slug must be lowercase alphanumeric with hyphens"),name:N.string().min(1).max(255),description:N.string().optional()}),outputSchema:N.object({id:N.string(),name:N.string(),slug:N.string(),logo:N.string().nullable().optional(),metadata:N.any().optional(),createdAt:N.union([N.date(),N.string()]),members:N.array(N.any()).optional()}),handler:async(X,Q)=>{B4(Q),await Q.access.check();let J=_X(Q);if(!J)throw Error("User ID required to create organization");let Y=await Q.boundAuth.organization.create({name:X.name,slug:X.slug,metadata:X.description?{description:X.description}:void 0,userId:J});if(!Y)throw Error("Failed to create organization");return Y}})});var Yx;var rK0=m(()=>{d0();J6();Yx=Q4({name:"ORGANIZATION_LIST",description:"List all organizations user has access to",inputSchema:N.object({userId:N.string().optional()}),outputSchema:N.object({organizations:N.array(N.object({id:N.string(),name:N.string(),slug:N.string(),logo:N.string().nullable().optional(),metadata:N.any().optional(),createdAt:N.union([N.date(),N.string()])}))}),handler:async(X,Q)=>{B4(Q),await Q.access.check();let J=_X(Q),Y=X.userId||J;if(!Y)throw Error("User ID required to list organizations");return{organizations:await Q.boundAuth.organization.list(Y)}}})});var Gx;var aK0=m(()=>{d0();J6();Gx=Q4({name:"ORGANIZATION_GET",description:"Get organization details by slug or ID",inputSchema:N.object({}),outputSchema:N.object({id:N.string(),name:N.string(),slug:N.string(),logo:N.string().nullable().optional(),metadata:N.any().optional(),createdAt:N.union([N.date(),N.string()]),members:N.array(N.any()).optional(),invitations:N.array(N.any()).optional()}),handler:async(X,Q)=>{B4(Q),await Q.access.check();let J=await Q.boundAuth.organization.get();if(!J)throw Error("No active organization found");return J}})});var $x;var oK0=m(()=>{d0();J6();$x=Q4({name:"ORGANIZATION_UPDATE",description:"Update an existing organization",inputSchema:N.object({id:N.string(),slug:N.string().min(1).max(50).regex(/^[a-z0-9-]+$/).optional(),name:N.string().min(1).max(255).optional(),description:N.string().optional()}),outputSchema:N.object({id:N.string(),name:N.string(),slug:N.string(),logo:N.string().nullable().optional(),metadata:N.any().optional(),createdAt:N.union([N.date(),N.string()])}),handler:async(X,Q)=>{B4(Q),await Q.access.check();let J={};if(X.name)J.name=X.name;if(X.slug)J.slug=X.slug;if(X.description)J.metadata={description:X.description};let Y=await Q.boundAuth.organization.update({organizationId:X.id,data:J});if(!Y)throw Error("Failed to update organization");return Y}})});var Wx;var sK0=m(()=>{d0();J6();Wx=Q4({name:"ORGANIZATION_DELETE",description:"Delete an organization",inputSchema:N.object({id:N.string()}),outputSchema:N.object({success:N.boolean(),id:N.string()}),handler:async(X,Q)=>{return B4(Q),await Q.access.check(),await Q.boundAuth.organization.delete(X.id),{success:!0,id:X.id}}})});var dU;var Hx=m(()=>{d0();dU=N.object({title:N.string(),url:N.string(),icon:N.string()})});var Kx;var tK0=m(()=>{d0();J6();Hx();Kx=Q4({name:"ORGANIZATION_SETTINGS_GET",description:"Get organization-level settings",inputSchema:N.object({}),outputSchema:N.object({organizationId:N.string(),sidebar_items:N.array(dU).nullable().optional(),createdAt:N.union([N.date(),N.string()]).optional(),updatedAt:N.union([N.date(),N.string()]).optional()}),handler:async(X,Q)=>{B4(Q),await Q.access.check();let J=Q.organization?.id;if(!J)throw Error("Organization ID required (no active organization in context)");let Y=await Q.storage.organizationSettings.get(J);if(!Y)return{organizationId:J};return Y}})});var Zx;var eK0=m(()=>{d0();J6();Hx();Zx=Q4({name:"ORGANIZATION_SETTINGS_UPDATE",description:"Update organization-level settings",inputSchema:N.object({organizationId:N.string(),sidebar_items:N.array(dU).optional()}),outputSchema:N.object({organizationId:N.string(),sidebar_items:N.array(dU).nullable().optional(),createdAt:N.union([N.date(),N.string()]),updatedAt:N.union([N.date(),N.string()])}),handler:async(X,Q)=>{if(B4(Q),await Q.access.check(),Q.organization&&Q.organization.id!==X.organizationId)throw Error("Cannot update settings for a different organization");return await Q.storage.organizationSettings.upsert(X.organizationId,{sidebar_items:X.sidebar_items})}})});var Fx;var XZ0=m(()=>{d0();J6();Fx=Q4({name:"ORGANIZATION_MEMBER_ADD",description:"Add a member to an organization",inputSchema:N.object({organizationId:N.string().optional(),userId:N.string(),role:N.array(N.string())}),outputSchema:N.object({id:N.string(),organizationId:N.string(),userId:N.string(),role:N.union([N.string(),N.array(N.string())]),createdAt:N.union([N.date(),N.string()])}),handler:async(X,Q)=>{B4(Q),await Q.access.check();let J=X.organizationId||Q.organization?.id;if(!J)throw Error("Organization ID required (no active organization in context)");let Y=await Q.boundAuth.organization.addMember({organizationId:J,userId:X.userId,role:X.role});if(!Y)throw Error("Failed to add member");return Y}})});var Vx;var QZ0=m(()=>{d0();J6();Vx=Q4({name:"ORGANIZATION_MEMBER_REMOVE",description:"Remove a member from an organization",inputSchema:N.object({organizationId:N.string().optional(),memberIdOrEmail:N.string()}),outputSchema:N.object({success:N.boolean(),memberIdOrEmail:N.string()}),handler:async(X,Q)=>{B4(Q),await Q.access.check();let J=X.organizationId||Q.organization?.id;if(!J)throw Error("Organization ID required (no active organization in context)");return await Q.boundAuth.organization.removeMember({organizationId:J,memberIdOrEmail:X.memberIdOrEmail}),{success:!0,memberIdOrEmail:X.memberIdOrEmail}}})});var qx;var JZ0=m(()=>{d0();J6();qx=Q4({name:"ORGANIZATION_MEMBER_LIST",description:"List all members in an organization",inputSchema:N.object({limit:N.number().optional(),offset:N.number().optional()}),outputSchema:N.object({members:N.array(N.object({id:N.string(),organizationId:N.string(),userId:N.string(),role:N.string(),createdAt:N.union([N.date(),N.string()]),user:N.object({id:N.string(),name:N.string(),email:N.string(),image:N.string().optional()}).optional()}))}),handler:async(X,Q)=>{B4(Q),await Q.access.check();let J=Q.organization?.id;if(!J)throw Error("Organization ID required (no active organization in context)");let Y=await Q.boundAuth.organization.listMembers({organizationId:J,limit:X.limit,offset:X.offset});return{members:Array.isArray(Y)?Y:[]}}})});var Ux;var YZ0=m(()=>{d0();J6();Ux=Q4({name:"ORGANIZATION_MEMBER_UPDATE_ROLE",description:"Update a member's role in an organization",inputSchema:N.object({organizationId:N.string().optional(),memberId:N.string(),role:N.array(N.string())}),outputSchema:N.object({id:N.string(),organizationId:N.string(),userId:N.string(),role:N.union([N.literal("admin"),N.literal("member"),N.literal("owner")]),createdAt:N.union([N.date(),N.string()]),user:N.object({email:N.string(),name:N.string(),image:N.string().optional()})}),handler:async(X,Q)=>{B4(Q),await Q.access.check();let J=X.organizationId||Q.organization?.id;if(!J)throw Error("Organization ID required (no active organization in context)");let Y=await Q.boundAuth.organization.updateMemberRole({organizationId:J,memberId:X.memberId,role:X.role});if(!Y)throw Error("Failed to update member role");return Y}})});var GZ0=m(()=>{iK0();rK0();aK0();oK0();sK0();tK0();eK0();XZ0();QZ0();JZ0();YZ0()});var $64,W64,zx;var $Z0=m(()=>{d0();J6();$64=N.object({id:N.string().min(1)}),W64=N.object({user:N.object({id:N.string(),name:N.string(),email:N.string(),image:N.string().nullable()}).nullable()}),zx=Q4({name:"USER_GET",description:"Get a user by id (restricted to shared organizations)",inputSchema:$64,outputSchema:W64,handler:async(X,Q)=>{await Q.access.check(),B4(Q);let J=_X(Q);if(!J)throw Error("Authentication required");let Y=await Q.storage.users.findById(X.id,J);if(!Y)return{user:null};return{user:{id:Y.id,name:Y.name,email:Y.email,image:Y.image??null}}}})});var WZ0=m(()=>{$Z0()});var KZ0={};Y6(KZ0,{managementMCP:()=>K64,ALL_TOOLS:()=>HZ0});var HZ0,K64=(X)=>{let Q=HZ0.map((Y)=>({name:Y.name,description:Y.description,inputSchema:Y.inputSchema,outputSchema:Y.outputSchema,handler:async(G)=>{return X.access.setToolName(Y.name),await Y.execute(G,X)}}));return j50({name:"mcp-mesh-management",version:"1.0.0"}).withTools(Q).build()};var ZZ0=m(()=>{N50();IH0();wK0();AK0();yK0();dK0();nK0();GZ0();WZ0();HZ0=[Jx,Yx,Gx,$x,Wx,Kx,Zx,Fx,Vx,qx,Ux,Ug,bg,yg,fg,hg,gg,rg,og,sg,tg,eg,TK0,Xx,Qx,Zg,Vg,qg,Fg,xg,ug,mg,lg,dg,pg,cg,zx]});sP();import{Migrator as jZ0}from"kysely";var Cx={benchmark:()=>Promise.resolve().then(() => (Ex(),Ax)).then((X)=>X.seed)};async function Rx(X,Q){let J=Cx[Q];if(!J)throw Error(`Unknown seed: ${Q}. Available: ${Object.keys(Cx).join(", ")}`);let Y=await J();console.log(`\uD83C\uDF31 Running seed: ${Q}`);let G=await Y(X);return console.log(`\u2705 Seed "${Q}" completed`),G}OY();HJ();OY();HJ();PX();v1();var u8=(X,Q="ms")=>{return new Date(Date.now()+(Q==="sec"?X*1000:X))},rD=new WeakMap;function Gp(X,Q){let J=Q.fields,Y={};for(let G in X){let $=J[G];if(!$){Y[G]=X[G];continue}if($.returned===!1)continue;Y[G]=X[G]}return Y}function aD(X,Q){if(!rD.has(X))rD.set(X,new Map);let J=rD.get(X);if(J.has(Q))return J.get(Q);let Y={...Q==="user"?X.user?.additionalFields:{},...Q==="session"?X.session?.additionalFields:{}};for(let G of X.plugins||[])if(G.schema&&G.schema[Q])Y={...Y,...G.schema[Q].fields};return rD.get(X).set(Q,Y),Y}function k1(X,Q){return{...Gp(Q,{fields:aD(X,"user")}),id:Q.id}}function f9(X,Q){return Gp(Q,{fields:aD(X,"session")})}function AR(X,Q){let J=Q.action||"create",Y=Q.fields,G=Object.assign(Object.create(null),null);for(let $ in Y){if($ in X){if(Y[$].input===!1){if(Y[$].defaultValue!==void 0){if(J!=="update"){G[$]=Y[$].defaultValue;continue}}if(X[$])throw new h("BAD_REQUEST",{message:`${$} is not allowed to be set`});continue}if(Y[$].validator?.input&&X[$]!==void 0){G[$]=Y[$].validator.input["~standard"].validate(X[$]);continue}if(Y[$].transform?.input&&X[$]!==void 0){G[$]=Y[$].transform?.input(X[$]);continue}G[$]=X[$];continue}if(Y[$].defaultValue!==void 0&&J==="create"){if(typeof Y[$].defaultValue==="function"){G[$]=Y[$].defaultValue();continue}G[$]=Y[$].defaultValue;continue}if(Y[$].required&&J==="create")throw new h("BAD_REQUEST",{message:`${$} is required`})}return G}function oD(X,Q={},J){return AR(Q,{fields:aD(X,"user"),action:J})}function ER(X,Q){return AR(Q,{fields:aD(X,"session")})}function uX(X,Q){if(!Q)return X;for(let J in Q){let Y=Q[J]?.modelName;if(Y)X[J].modelName=Y;for(let G in X[J].fields){let $=Q[J]?.fields?.[G];if(!$)continue;X[J].fields[G].fieldName=$}}return X}UQ();d0();var gU0="127.0.0.1";function Q$(X,Q){if(Q.advanced?.ipAddress?.disableIpTracking)return null;if(bY()||t7())return gU0;let J="headers"in X?X.headers:X,Y=Q.advanced?.ipAddress?.ipAddressHeaders||["x-forwarded-for"];for(let G of Y){let $="get"in J?J.get(G):J[G];if(typeof $==="string"){let W=$.split(",")[0].trim();if(xU0(W))return W}}return null}function xU0(X){if(x5().safeParse(X).success)return!0;if(u5().safeParse(X).success)return!0;return!1}TX();k9();UQ();e8();import{sql as g9}from"kysely";async function Zp(X,Q){let J;if(!X.database){let Y=yQ(X),G=Object.keys(Y).reduce((W,H)=>{return W[H]=[],W},{}),{memoryAdapter:$}=await Promise.resolve().then(() => (Kp(),Hp));J=$(G)(X)}else if(typeof X.database==="function")J=X.database(X);else J=await Q(X);if(!J.transaction)M4.warn("Adapter does not correctly implement transaction function, patching it automatically. Please update your adapter implementation."),J.transaction=async(Y)=>{return Y(J)};return J}async function kR(X){return Zp(X,async(Q)=>{let{createKyselyAdapter:J}=await Promise.resolve().then(() => (vR(),SR)),{kysely:Y,databaseType:G,transaction:$}=await J(Q);if(!Y)throw new L4("Failed to initialize database adapter");let{kyselyAdapter:W}=await Promise.resolve().then(() => (vR(),SR));return W(Y,{type:G||"sqlite",debugLogs:Q.database&&"debugLogs"in Q.database?Q.database.debugLogs:!1,transaction:$})(Q)})}function Fp(X,Q){let J=Q.hooks;async function Y(K,Z,F){let V=await fQ(),q=K;for(let D of J||[]){let j=D[Z]?.create?.before;if(j){let O=await j(q,V);if(O===!1)return null;if(typeof O==="object"&&"data"in O)q={...q,...O.data}}}let B=F?await F.fn(q):null,L=!F||F.executeMainFn?await(await l6(X)).create({model:Z,data:q,forceAllowId:!0}):B;for(let D of J||[]){let j=D[Z]?.create?.after;if(j)await j(L,V)}return L}async function G(K,Z,F,V){let q=await fQ(),B=K;for(let j of J||[]){let O=j[F]?.update?.before;if(O){let T=await O(K,q);if(T===!1)return null;if(typeof T==="object"&&"data"in T)B={...B,...T.data}}}let L=V?await V.fn(B):null,D=!V||V.executeMainFn?await(await l6(X)).update({model:F,update:B,where:Z}):L;for(let j of J||[]){let O=j[F]?.update?.after;if(O)await O(D,q)}return D}async function $(K,Z,F,V){let q=await fQ(),B=K;for(let j of J||[]){let O=j[F]?.update?.before;if(O){let T=await O(K,q);if(T===!1)return null;if(typeof T==="object"&&"data"in T)B={...B,...T.data}}}let L=V?await V.fn(B):null,D=!V||V.executeMainFn?await(await l6(X)).updateMany({model:F,update:B,where:Z}):L;for(let j of J||[]){let O=j[F]?.update?.after;if(O)await O(D,q)}return D}async function W(K,Z,F){let V=await fQ(),q=null;try{q=(await(await l6(X)).findMany({model:Z,where:K,limit:1}))[0]||null}catch(D){}if(q)for(let D of J||[]){let j=D[Z]?.delete?.before;if(j){if(await j(q,V)===!1)return null}}let B=F?await F.fn(K):null,L=!F||F.executeMainFn?await(await l6(X)).delete({model:Z,where:K}):B;if(q)for(let D of J||[]){let j=D[Z]?.delete?.after;if(j)await j(q,V)}return L}async function H(K,Z,F){let V=await fQ(),q=[];try{q=await(await l6(X)).findMany({model:Z,where:K})}catch(D){}for(let D of q)for(let j of J||[]){let O=j[Z]?.delete?.before;if(O){if(await O(D,V)===!1)return null}}let B=F?await F.fn(K):null,L=!F||F.executeMainFn?await(await l6(X)).deleteMany({model:Z,where:K}):B;for(let D of q)for(let j of J||[]){let O=j[Z]?.delete?.after;if(O)await O(D,V)}return L}return{createWithHooks:Y,updateWithHooks:G,updateManyWithHooks:$,deleteWithHooks:W,deleteManyWithHooks:H}}var Yj=(X,Q)=>{let{logger:J,options:Y}=Q,G=Y.secondaryStorage,$=Y.session?.expiresIn||604800,{createWithHooks:W,updateWithHooks:H,updateManyWithHooks:K,deleteWithHooks:Z,deleteManyWithHooks:F}=Fp(X,Q);async function V(q){if(!G)return;let B=await G.get(`active-sessions-${q.id}`);if(!B)return;let L=Date.now(),D=(o6(B)||[]).filter((j)=>j.expiresAt>L);await Promise.all(D.map(async({token:j})=>{let O=await G.get(j);if(!O)return;let T=o6(O);if(!T)return;let C=Math.max(Math.floor(new Date(T.session.expiresAt).getTime()-L)/1000,0);await G.set(j,JSON.stringify({session:T.session,user:q}),Math.floor(C))}))}return{createOAuthUser:async(q,B)=>{return dZ(X,async()=>{let L=await W({createdAt:new Date,updatedAt:new Date,...q},"user",void 0);return{user:L,account:await W({...B,userId:L.id,createdAt:new Date,updatedAt:new Date},"account",void 0)}})},createUser:async(q)=>{return await W({createdAt:new Date,updatedAt:new Date,...q,email:q.email?.toLowerCase()},"user",void 0)},createAccount:async(q)=>{return await W({createdAt:new Date,updatedAt:new Date,...q},"account",void 0)},listSessions:async(q)=>{if(G){let B=await G.get(`active-sessions-${q}`);if(!B)return[];let L=o6(B)||[],D=Date.now(),j=L.filter((T)=>T.expiresAt>D),O=[];for(let T of j){let C=await G.get(T.token);if(C){let E=o6(C);if(!E)return[];let P=f9(Q.options,{...E.session,expiresAt:new Date(E.session.expiresAt)});O.push(P)}}return O}return await(await l6(X)).findMany({model:"session",where:[{field:"userId",value:q}]})},listUsers:async(q,B,L,D)=>{return await(await l6(X)).findMany({model:"user",limit:q,offset:B,sortBy:L,where:D})},countTotalUsers:async(q)=>{let B=await(await l6(X)).count({model:"user",where:q});if(typeof B==="string")return parseInt(B);return B},deleteUser:async(q)=>{if(G)await G.delete(`active-sessions-${q}`);if(!G||Y.session?.storeSessionInDatabase)await F([{field:"userId",value:q}],"session",void 0);await F([{field:"userId",value:q}],"account",void 0),await Z([{field:"id",value:q}],"user",void 0)},createSession:async(q,B,L,D)=>{let j=await fQ().catch(()=>null),O=j?.headers||j?.request?.headers,{id:T,...C}=L||{},E=ER(j?.context.options??Y,{}),P={ipAddress:j?.request||j?.headers?Q$(j?.request||j?.headers,j?.context.options)||"":"",userAgent:O?.get("user-agent")||"",...C,expiresAt:B?u8(86400,"sec"):u8($,"sec"),userId:q,token:Z1(32),createdAt:new Date,updatedAt:new Date,...E,...D?C:{}};return await W(P,"session",G?{fn:async(A)=>{let R=await G.get(`active-sessions-${q}`),S=[],v=Date.now();if(R)S=o6(R)||[],S=S.filter((i)=>i.expiresAt>v);let k=S.sort((i,s)=>i.expiresAt-s.expiresAt),u=k.at(-1)?.expiresAt;if(k.push({token:P.token,expiresAt:P.expiresAt.getTime()}),!u||u<P.expiresAt.getTime())u=P.expiresAt.getTime();let c=Math.max(Math.floor((u-v)/1000),0);if(c>0)await G.set(`active-sessions-${q}`,JSON.stringify(k),c);let p=await X.findOne({model:"user",where:[{field:"id",value:q}]}),a=Math.max(Math.floor((P.expiresAt.getTime()-v)/1000),0);if(a>0)await G.set(P.token,JSON.stringify({session:A,user:p}),a);return A},executeMainFn:Y.session?.storeSessionInDatabase}:void 0)},findSession:async(q)=>{if(G){let j=await G.get(q);if(!j&&!Y.session?.storeSessionInDatabase)return null;if(j){let O=o6(j);if(!O)return null;return{session:f9(Q.options,{...O.session,expiresAt:new Date(O.session.expiresAt),createdAt:new Date(O.session.createdAt),updatedAt:new Date(O.session.updatedAt)}),user:k1(Q.options,{...O.user,createdAt:new Date(O.user.createdAt),updatedAt:new Date(O.user.updatedAt)})}}}let B=await(await l6(X)).findOne({model:"session",where:[{value:q,field:"token"}],join:{user:!0}});if(!B)return null;let{user:L,...D}=B;if(!L)return null;return{session:f9(Q.options,D),user:k1(Q.options,L)}},findSessions:async(q)=>{if(G){let L=[];for(let D of q){let j=await G.get(D);if(j){let O=o6(j);if(!O)return[];let T={session:{...O.session,expiresAt:new Date(O.session.expiresAt)},user:{...O.user,createdAt:new Date(O.user.createdAt),updatedAt:new Date(O.user.updatedAt)}};L.push(T)}}return L}let B=await(await l6(X)).findMany({model:"session",where:[{field:"token",value:q,operator:"in"}],join:{user:!0}});if(!B.length)return[];if(B.some((L)=>!L.user))return[];return B.map((L)=>{let{user:D,...j}=L;return{session:j,user:D}})},updateSession:async(q,B)=>{return await H(B,[{field:"token",value:q}],"session",G?{async fn(L){let D=await G.get(q),j=null;if(D){let O=o6(D);if(!O)return null;return j={...O.session,...L},j}else return null},executeMainFn:Y.session?.storeSessionInDatabase}:void 0)},deleteSession:async(q)=>{if(G){let B=await G.get(q);if(B){let{session:L}=o6(B)??{};if(!L){J.error("Session not found in secondary storage");return}let D=L.userId,j=await G.get(`active-sessions-${D}`);if(j){let O=o6(j)||[],T=Date.now(),C=O.filter((P)=>P.expiresAt>T&&P.token!==q),E=C.sort((P,A)=>P.expiresAt-A.expiresAt).at(-1)?.expiresAt;if(C.length>0&&E&&E>Date.now())await G.set(`active-sessions-${D}`,JSON.stringify(C),Math.floor((E-T)/1000));else await G.delete(`active-sessions-${D}`)}else J.error("Active sessions list not found in secondary storage")}if(await G.delete(q),!Y.session?.storeSessionInDatabase||Q.options.session?.preserveSessionInDatabase)return}await(await l6(X)).delete({model:"session",where:[{field:"token",value:q}]})},deleteAccounts:async(q)=>{await F([{field:"userId",value:q}],"account",void 0)},deleteAccount:async(q)=>{await Z([{field:"id",value:q}],"account",void 0)},deleteSessions:async(q)=>{if(G){if(typeof q==="string"){let B=await G.get(`active-sessions-${q}`),L=B?o6(B):[];if(!L)return;for(let D of L)await G.delete(D.token)}else for(let B of q)if(await G.get(B))await G.delete(B);if(!Y.session?.storeSessionInDatabase||Q.options.session?.preserveSessionInDatabase)return}await F([{field:Array.isArray(q)?"token":"userId",value:q,operator:Array.isArray(q)?"in":void 0}],"session",void 0)},findOAuthUser:async(q,B,L)=>{let D=await(await l6(X)).findMany({model:"account",where:[{value:B,field:"accountId"}],join:{user:!0}}).then((j)=>{return j.find((O)=>O.providerId===L)});if(D)if(D.user)return{user:D.user,accounts:[D]};else{let j=await(await l6(X)).findOne({model:"user",where:[{value:q.toLowerCase(),field:"email"}]});if(j)return{user:j,accounts:[D]};return null}else{let j=await(await l6(X)).findOne({model:"user",where:[{value:q.toLowerCase(),field:"email"}]});if(j)return{user:j,accounts:await(await l6(X)).findMany({model:"account",where:[{value:j.id,field:"userId"}]})||[]};else return null}},findUserByEmail:async(q,B)=>{let L=await(await l6(X)).findOne({model:"user",where:[{value:q.toLowerCase(),field:"email"}],join:{...B?.includeAccounts?{account:!0}:{}}});if(!L)return null;let{account:D,...j}=L;return{user:j,accounts:D??[]}},findUserById:async(q)=>{if(!q)return null;return await(await l6(X)).findOne({model:"user",where:[{field:"id",value:q}]})},linkAccount:async(q)=>{return await W({createdAt:new Date,updatedAt:new Date,...q},"account",void 0)},updateUser:async(q,B)=>{let L=await H(B,[{field:"id",value:q}],"user",void 0);return await V(L),await V(L),L},updateUserByEmail:async(q,B)=>{let L=await H(B,[{field:"email",value:q.toLowerCase()}],"user",void 0);return await V(L),await V(L),L},updatePassword:async(q,B)=>{await K({password:B},[{field:"userId",value:q},{field:"providerId",value:"credential"}],"account",void 0)},findAccounts:async(q)=>{return await(await l6(X)).findMany({model:"account",where:[{field:"userId",value:q}]})},findAccount:async(q)=>{return await(await l6(X)).findOne({model:"account",where:[{field:"accountId",value:q}]})},findAccountByProviderId:async(q,B)=>{return await(await l6(X)).findOne({model:"account",where:[{field:"accountId",value:q},{field:"providerId",value:B}]})},findAccountByUserId:async(q)=>{return await(await l6(X)).findMany({model:"account",where:[{field:"userId",value:q}]})},updateAccount:async(q,B)=>{return await H(B,[{field:"id",value:q}],"account",void 0)},createVerificationValue:async(q)=>{return await W({createdAt:new Date,updatedAt:new Date,...q},"verification",void 0)},findVerificationValue:async(q)=>{let B=await(await l6(X)).findMany({model:"verification",where:[{field:"identifier",value:q}],sortBy:{field:"createdAt",direction:"desc"},limit:1});if(!Y.verification?.disableCleanup)await(await l6(X)).deleteMany({model:"verification",where:[{field:"expiresAt",value:new Date,operator:"lt"}]});return B[0]},deleteVerificationValue:async(q)=>{await(await l6(X)).delete({model:"verification",where:[{field:"id",value:q}]})},deleteVerificationByIdentifier:async(q)=>{await(await l6(X)).delete({model:"verification",where:[{field:"identifier",value:q}]})},updateVerificationValue:async(q,B)=>{return await H(B,[{field:"id",value:q}],"verification",void 0)}}};function Vp(X){let Q=yQ(X),J={};for(let Y in Q){let G=Q[Y],$=G.fields,W={};if(Object.entries($).forEach(([H,K])=>{if(W[K.fieldName||H]=K,K.references){let Z=Q[K.references.model];if(Z)W[K.fieldName||H].references={...K.references,model:Z.modelName,field:K.references.field}}}),J[G.modelName]){J[G.modelName].fields={...J[G.modelName].fields,...W};continue}J[G.modelName]={fields:W,order:G.order||1/0}}return J}var cU0={postgres:{string:["character varying","varchar","text","uuid"],number:["int4","integer","bigint","smallint","numeric","real","double precision"],boolean:["bool","boolean"],date:["timestamptz","timestamp","date"],json:["json","jsonb"]},mysql:{string:["varchar","text","uuid"],number:["integer","int","bigint","smallint","decimal","float","double"],boolean:["boolean","tinyint"],date:["timestamp","datetime","date"],json:["json"]},sqlite:{string:["TEXT"],number:["INTEGER","REAL"],boolean:["INTEGER","BOOLEAN"],date:["DATE","INTEGER"],json:["TEXT"]},mssql:{string:["varchar","nvarchar","uniqueidentifier"],number:["int","bigint","smallint","decimal","float","double"],boolean:["bit","smallint"],date:["datetime2","date","datetime"],json:["varchar","nvarchar"]}};function qp(X,Q,J){function Y($){return $.toLowerCase().split("(")[0].trim()}if(Q==="string[]"||Q==="number[]")return X.toLowerCase().includes("json");let G=cU0[J];return(Array.isArray(Q)?G.string.map(($)=>$.toLowerCase()):G[Q].map(($)=>$.toLowerCase())).includes(Y(X))}async function nU0(X){try{let Q=await g9`SHOW search_path`.execute(X);if(Q.rows[0]?.search_path)return Q.rows[0].search_path.split(",").map((J)=>J.trim()).map((J)=>J.replace(/^["']|["']$/g,"")).filter((J)=>!J.startsWith("$"))[0]||"public"}catch(Q){}return"public"}async function wF(X){let Q=Vp(X),J=XH(X.logger),{kysely:Y,databaseType:G}=await aU(X);if(!G)J.warn("Could not determine database type, defaulting to sqlite. Please provide a type in the database options to avoid this."),G="sqlite";if(!Y)J.error("Only kysely adapter is supported for migrations. You can use `generate` command to generate the schema, if you're using a different adapter."),process.exit(1);let $="public";if(G==="postgres"){$=await nU0(Y),J.debug(`PostgreSQL migration: Using schema '${$}' (from search_path)`);try{if(!(await g9`
|
|
214
|
+
`.execute(X)).rows[0]?.exists)await E6`CREATE ROLE ${E6.id(J)} NOLOGIN`.execute(X);await E6`GRANT ${E6.id(J)} TO CURRENT_USER`.execute(X),await E6`GRANT USAGE, CREATE ON SCHEMA ${E6.id(Q)} TO ${E6.id(J)}`.execute(X),await E6`GRANT ALL ON ALL TABLES IN SCHEMA ${E6.id(Q)} TO ${E6.id(J)}`.execute(X),await E6`GRANT ALL ON ALL SEQUENCES IN SCHEMA ${E6.id(Q)} TO ${E6.id(J)}`.execute(X),await E6`ALTER DEFAULT PRIVILEGES IN SCHEMA ${E6.id(Q)} GRANT ALL ON TABLES TO ${E6.id(J)}`.execute(X),await E6`ALTER DEFAULT PRIVILEGES IN SCHEMA ${E6.id(Q)} GRANT ALL ON SEQUENCES TO ${E6.id(J)}`.execute(X),await E6`REVOKE ALL ON SCHEMA public FROM ${E6.id(J)}`.execute(X)}async function h44(X,Q,J,Y){try{return await X.transaction().execute(async(G)=>{return await E6`SET LOCAL ROLE ${E6.id(J)}`.execute(G),await E6`SET LOCAL search_path TO ${E6.id(Q)}`.execute(G),await E6.raw(Y).execute(G)})}catch(G){if(y44(G))return await f44(X,Q,J),await X.transaction().execute(async($)=>{return await E6`SET LOCAL ROLE ${E6.id(J)}`.execute($),await E6`SET LOCAL search_path TO ${E6.id(Q)}`.execute($),await E6.raw(Y).execute($)});throw G}}var S44,k44,TK0;var AK0=m(()=>{d0();J6();S44=N.object({results:N.array(N.unknown()).optional(),success:N.boolean().optional()});k44=N.object({sql:N.string().describe("The SQL query to run"),params:N.array(N.any()).describe("The parameters to pass to the SQL query").optional()});TK0=Q4({name:"DATABASES_RUN_SQL",description:"Run a SQL query against the database",inputSchema:k44,outputSchema:N.object({result:N.array(S44)}),handler:async(X,Q)=>{B4(Q),await Q.access.check();let J=v44(X.sql,X.params||[]);if(!Q.connectionId)throw Error("Connection context required for database access");let Y=_44(Q.connectionId),G=b44(Q.connectionId);return{result:[{results:(await h44(Q.db,Y,G,J)).rows,success:!0}]}}})});var EK0,x44,CK0;var TG=m(()=>{d0();vg();EK0=N.object({connectionId:N.string().optional().describe("Filter subscriptions by connection ID (optional)")}),x44=N.object({id:N.string().describe("Subscription ID"),connectionId:N.string().describe("Subscriber connection ID"),eventType:N.string().describe("Event type pattern"),publisher:N.string().nullable().describe("Publisher connection filter (null = all publishers)"),filter:N.string().nullable().describe("JSONPath filter expression"),enabled:N.boolean().describe("Whether subscription is enabled"),createdAt:N.union([N.string(),N.date()]).describe("Created timestamp"),updatedAt:N.union([N.string(),N.date()]).describe("Updated timestamp")}),CK0=N.object({subscriptions:N.array(x44).describe("List of subscriptions")})});var xg;var RK0=m(()=>{J6();TG();xg=Q4({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:SU,outputSchema:vU,handler:async(X,Q)=>{B4(Q);let J=e4(Q);await Q.access.check();let Y=Q.connectionId;if(!Y)throw Error("Connection ID required to publish events. Use a connection-scoped token.");let G=await Q.eventBus.publish(J.id,Y,{type:X.type,subject:X.subject,data:X.data,deliverAt:X.deliverAt,cron:X.cron});return{id:G.id,type:G.type,source:G.source,time:G.time}}})});var ug;var IK0=m(()=>{J6();TG();ug=Q4({name:"EVENT_SUBSCRIBE",description:"Subscribe to events of a specific type. The subscriber is automatically set to the caller's connection.",inputSchema:kU,outputSchema:_U,handler:async(X,Q)=>{B4(Q);let J=e4(Q);await Q.access.check();let Y=Q.connectionId;if(!Y)throw Error("Connection ID required to subscribe. Use a connection-scoped token.");let G=await Q.eventBus.subscribe(J.id,{connectionId:Y,eventType:X.eventType,publisher:X.publisher,filter:X.filter});return{subscription:{id:G.id,connectionId:G.connectionId,eventType:G.eventType,publisher:G.publisher,filter:G.filter,enabled:G.enabled,createdAt:G.createdAt,updatedAt:G.updatedAt}}}})});var mg;var SK0=m(()=>{J6();TG();mg=Q4({name:"EVENT_UNSUBSCRIBE",description:"Unsubscribe from events by removing a subscription.",inputSchema:fU,outputSchema:hU,handler:async(X,Q)=>{B4(Q);let J=e4(Q);await Q.access.check();let Y=Q.connectionId;if(!Y)throw Error("Connection ID required to unsubscribe. Use a connection-scoped token.");let G=await Q.eventBus.getSubscription(J.id,X.subscriptionId);if(!G)throw Error(`Subscription not found: ${X.subscriptionId}`);if(G.connectionId!==Y)throw Error("Cannot unsubscribe from a subscription owned by another connection");return{success:(await Q.eventBus.unsubscribe(J.id,X.subscriptionId)).success,subscriptionId:X.subscriptionId}}})});var lg;var vK0=m(()=>{J6();TG();lg=Q4({name:"EVENT_CANCEL",description:"Cancel a recurring event to stop future deliveries. Only the publisher can cancel their own events.",inputSchema:gU,outputSchema:xU,handler:async(X,Q)=>{B4(Q);let J=e4(Q);await Q.access.check();let Y=Q.connectionId;if(!Y)throw Error("Connection ID required to cancel events. Use a connection-scoped token.");if(!await Q.eventBus.getEvent(J.id,X.eventId))throw Error(`Event not found: ${X.eventId}`);if(!(await Q.eventBus.cancelEvent(J.id,X.eventId,Y)).success)throw Error("Failed to cancel event. Either the event is already completed/failed, or you are not the publisher.");return{success:!0,eventId:X.eventId}}})});var dg;var kK0=m(()=>{J6();TG();dg=Q4({name:"EVENT_ACK",description:"Acknowledge delivery of an event. Call after successfully processing an event received via ON_EVENTS with retryAfter.",inputSchema:uU,outputSchema:mU,handler:async(X,Q)=>{B4(Q);let J=e4(Q);await Q.access.check();let Y=Q.connectionId;if(!Y)throw Error("Connection ID required to acknowledge events. Use a connection-scoped token.");if(!(await Q.eventBus.ackEvent(J.id,X.eventId,Y)).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:X.eventId}}})});var pg;var _K0=m(()=>{J6();TG();pg=Q4({name:"EVENT_SUBSCRIPTION_LIST",description:"List event subscriptions, optionally filtered by connection ID.",inputSchema:EK0,outputSchema:CK0,handler:async(X,Q)=>{B4(Q);let J=e4(Q);return await Q.access.check(),{subscriptions:(await Q.eventBus.listSubscriptions(J.id,X.connectionId)).map((G)=>({id:G.id,connectionId:G.connectionId,eventType:G.eventType,publisher:G.publisher,filter:G.filter,enabled:G.enabled,createdAt:G.createdAt,updatedAt:G.updatedAt}))}}})});var cg;var bK0=m(()=>{J6();TG();cg=Q4({name:"EVENT_SYNC_SUBSCRIPTIONS",description:"Sync subscriptions to desired state. Creates new, deletes removed, updates changed filters. Subscriptions are identified by (eventType, publisher).",inputSchema:bU,outputSchema:yU,handler:async(X,Q)=>{B4(Q);let J=e4(Q);await Q.access.check();let Y=Q.connectionId;if(!Y)throw Error("Connection ID required to sync subscriptions. Use a connection-scoped token.");let G=await Q.eventBus.syncSubscriptions(J.id,{connectionId:Y,subscriptions:X.subscriptions});return{created:G.created,updated:G.updated,deleted:G.deleted,unchanged:G.unchanged,subscriptions:G.subscriptions.map(($)=>({id:$.id,connectionId:$.connectionId,eventType:$.eventType,publisher:$.publisher,filter:$.filter,enabled:$.enabled,createdAt:$.createdAt,updatedAt:$.updatedAt}))}}})});var yK0=m(()=>{RK0();IK0();SK0();vK0();kK0();_K0();bK0();TG()});var ng,ig,m44,NY,fK0,hK0;var BZ=m(()=>{d0();ng=N.enum(["inclusion","exclusion"]).describe("Tool selection mode: 'inclusion' = include selected (default), 'exclusion' = exclude selected"),ig=N.enum(["passthrough","smart_tool_selection","code_execution"]).describe("Gateway tool selection strategy: 'passthrough' (default), 'smart_tool_selection', or 'code_execution'"),m44=N.object({connection_id:N.string().describe("Connection ID"),selected_tools:N.array(N.string()).nullable().describe("Selected tool names. With 'inclusion' mode: null = all tools included. With 'exclusion' mode: null = entire connection excluded"),selected_resources:N.array(N.string()).nullable().describe("Selected resource URIs or patterns. Supports * and ** wildcards for pattern matching. With 'inclusion' mode: null = all resources included."),selected_prompts:N.array(N.string()).nullable().describe("Selected prompt names. With 'inclusion' mode: null = all prompts included. With 'exclusion' mode: null = entire connection excluded.")}),NY=N.object({id:N.string().describe("Unique identifier for the gateway"),title:N.string().describe("Human-readable name for the gateway"),description:N.string().nullable().describe("Description of the gateway"),icon:N.string().nullable().optional().describe("Icon URL for the gateway"),created_at:N.string().describe("When the gateway was created"),updated_at:N.string().describe("When the gateway was last updated"),created_by:N.string().describe("User ID who created the gateway"),updated_by:N.string().optional().describe("User ID who last updated the gateway"),organization_id:N.string().describe("Organization ID this gateway belongs to"),tool_selection_strategy:ig.describe("Gateway behavior strategy (metadata for now): 'passthrough', 'smart_tool_selection', or 'code_execution'"),tool_selection_mode:ng.describe("Tool selection mode: 'inclusion' = include selected, 'exclusion' = exclude selected"),status:N.enum(["active","inactive"]).describe("Current status"),is_default:N.boolean().describe("Whether this is the default Hub for the organization"),connections:N.array(m44).describe("Connections with their selected tools (behavior depends on tool_selection_mode)")}),fK0=N.object({title:N.string().min(1).max(255).describe("Name for the gateway"),description:N.string().nullable().optional().describe("Optional description"),tool_selection_strategy:ig.optional().default("passthrough").describe("Gateway behavior strategy (defaults to 'passthrough')"),tool_selection_mode:ng.optional().default("inclusion").describe("Tool selection mode (defaults to 'inclusion')"),icon:N.string().nullable().optional().describe("Optional icon URL"),status:N.enum(["active","inactive"]).optional().default("active").describe("Initial status"),is_default:N.boolean().optional().default(!1).describe("Whether this is the default Hub for the organization"),connections:N.array(N.object({connection_id:N.string().describe("Connection ID"),selected_tools:N.array(N.string()).nullable().optional().describe("Selected tool names (null/undefined = all tools or full exclusion)"),selected_resources:N.array(N.string()).nullable().optional().describe("Selected resource URIs or patterns with * and ** wildcards (null/undefined = all resources)"),selected_prompts:N.array(N.string()).nullable().optional().describe("Selected prompt names (null/undefined = all prompts or full exclusion)")})).describe("Connections to include/exclude (can be empty for exclusion mode)")}),hK0=N.object({title:N.string().min(1).max(255).optional().describe("New name"),description:N.string().nullable().optional().describe("New description (null to clear)"),tool_selection_strategy:ig.optional().describe("New gateway behavior strategy"),tool_selection_mode:ng.optional().describe("New tool selection mode"),icon:N.string().nullable().optional().describe("New icon URL (null to clear)"),status:N.enum(["active","inactive"]).optional().describe("New status"),is_default:N.boolean().optional().describe("Set as default Hub for the organization"),connections:N.array(N.object({connection_id:N.string().describe("Connection ID"),selected_tools:N.array(N.string()).nullable().optional().describe("Selected tool names (null/undefined = all tools or full exclusion)"),selected_resources:N.array(N.string()).nullable().optional().describe("Selected resource URIs or patterns with * and ** wildcards (null/undefined = all resources)"),selected_prompts:N.array(N.string()).nullable().optional().describe("Selected prompt names (null/undefined = all prompts or full exclusion)")})).optional().describe("New connections (replaces existing)")})});var l44,d44,rg;var gK0=m(()=>{d0();J6();BZ();l44=N.object({data:fK0.describe("Data for the new gateway")}),d44=N.object({item:NY.describe("The created gateway entity")}),rg=Q4({name:"COLLECTION_GATEWAY_CREATE",description:"Create a new MCP gateway in the organization",inputSchema:l44,outputSchema:d44,handler:async(X,Q)=>{B4(Q);let J=e4(Q);await Q.access.check();let Y=_X(Q);if(!Y)throw Error("User ID required to create gateway");let G={title:X.data.title,description:X.data.description??null,toolSelectionStrategy:X.data.tool_selection_strategy??"passthrough",toolSelectionMode:X.data.tool_selection_mode??"inclusion",icon:X.data.icon??null,status:X.data.status,isDefault:X.data.is_default??!1,connections:X.data.connections.map((W)=>({connectionId:W.connection_id,selectedTools:W.selected_tools??null,selectedResources:W.selected_resources??null,selectedPrompts:W.selected_prompts??null}))},$=await Q.storage.gateways.create(J.id,Y,G);return{item:{id:$.id,title:$.title,description:$.description,icon:$.icon,organization_id:$.organizationId,tool_selection_strategy:$.toolSelectionStrategy,tool_selection_mode:$.toolSelectionMode,status:$.status,is_default:$.isDefault,connections:$.connections.map((W)=>({connection_id:W.connectionId,selected_tools:W.selectedTools,selected_resources:W.selectedResources,selected_prompts:W.selectedPrompts})),created_at:$.createdAt,updated_at:$.updatedAt,created_by:$.createdBy,updated_by:$.updatedBy??void 0}}}})});function p44(X){let Q=[],J=0;while(J<X.length){let Y=X[J];if(Y==="%")Q.push(".*");else if(Y==="_")Q.push(".");else if(/[.*+?^${}()|[\]\\]/.test(Y))Q.push("\\"+Y);else Q.push(Y);J++}return Q.join("")}function $5(X){return typeof X==="string"||typeof X==="number"}function ag(X,Q){let J=Q.split("."),Y=X;for(let G of J){if(Y==null||typeof Y!=="object")return;Y=Y[G]}return Y}function c44(X,Q){return X.connections.some((J)=>J.connection_id===Q)}function kP(X,Q){if("conditions"in Q){let{operator:H,conditions:K}=Q;switch(H){case"and":return K.every((Z)=>kP(X,Z));case"or":return K.some((Z)=>kP(X,Z));case"not":return!K.every((Z)=>kP(X,Z));default:return!0}}let{field:J,operator:Y,value:G}=Q,$=J.join(".");if($==="connection_id"){if(Y!=="eq"||typeof G!=="string")return!1;return c44(X,G)}let W=ag(X,$);switch(Y){case"eq":return W===G;case"gt":return $5(W)&&$5(G)&&W>G;case"gte":return $5(W)&&$5(G)&&W>=G;case"lt":return $5(W)&&$5(G)&&W<G;case"lte":return $5(W)&&$5(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 H=p44(G);return new RegExp(`^${H}$`,"i").test(W);case"contains":if(typeof W!=="string"||typeof G!=="string")return!1;return W.toLowerCase().includes(G.toLowerCase());default:return!0}}function n44(X,Q){return[...X].sort((J,Y)=>{for(let G of Q){let $=G.field.join("."),W=ag(J,$),H=ag(Y,$),K=0;if(W==null&&H==null)continue;if(W==null)K=G.nulls==="first"?-1:1;else if(H==null)K=G.nulls==="first"?1:-1;else if(typeof W==="string"&&typeof H==="string")K=W.localeCompare(H);else if(typeof W==="number"&&typeof H==="number")K=W-H;else K=String(W).localeCompare(String(H));if(K!==0)return G.direction==="desc"?-K:K}return 0})}var i44,r44,og;var xK0=m(()=>{Y5();J6();BZ();i44=RU,r44=IU(NY),og=Q4({name:"COLLECTION_GATEWAY_LIST",description:"List all MCP gateways in the organization",inputSchema:i44,outputSchema:r44,handler:async(X,Q)=>{await Q.access.check();let J=e4(Q),Y=X.where&&!("conditions"in X.where)&&X.where.field.join(".")==="connection_id"&&X.where.operator==="eq"&&typeof X.where.value==="string"?X.where.value:void 0,$=(Y?await Q.storage.gateways.listByConnectionId(J.id,Y):await Q.storage.gateways.list(J.id)).map((V)=>({id:V.id,title:V.title,description:V.description,icon:V.icon,is_default:V.isDefault,organization_id:V.organizationId,tool_selection_strategy:V.toolSelectionStrategy,tool_selection_mode:V.toolSelectionMode,status:V.status,connections:V.connections.map((q)=>({connection_id:q.connectionId,selected_tools:q.selectedTools,selected_resources:q.selectedResources,selected_prompts:q.selectedPrompts})),created_at:V.createdAt,updated_at:V.updatedAt,created_by:V.createdBy,updated_by:V.updatedBy??void 0}));if(X.where)$=$.filter((V)=>kP(V,X.where));if(X.orderBy&&X.orderBy.length>0)$=n44($,X.orderBy);let W=$.length,H=X.offset??0,K=X.limit??100,Z=$.slice(H,H+K),F=H+K<W;return{items:Z,totalCount:W,hasMore:F}}})});var a44,o44,sg;var uK0=m(()=>{d0();J6();BZ();a44=N.object({id:N.string().describe("ID of the gateway to retrieve")}),o44=N.object({item:NY.nullable().describe("The retrieved gateway, or null if not found")}),sg=Q4({name:"COLLECTION_GATEWAY_GET",description:"Get an MCP gateway by ID",inputSchema:a44,outputSchema:o44,handler:async(X,Q)=>{B4(Q);let J=e4(Q);await Q.access.check();let Y=await Q.storage.gateways.findById(X.id);if(Y&&Y.organizationId!==J.id)return{item:null};if(!Y)return{item:null};return{item:{id:Y.id,title:Y.title,description:Y.description,icon:Y.icon,organization_id:Y.organizationId,tool_selection_strategy:Y.toolSelectionStrategy,tool_selection_mode:Y.toolSelectionMode,status:Y.status,is_default:Y.isDefault,connections:Y.connections.map((G)=>({connection_id:G.connectionId,selected_tools:G.selectedTools,selected_resources:G.selectedResources,selected_prompts:G.selectedPrompts})),created_at:Y.createdAt,updated_at:Y.updatedAt,created_by:Y.createdBy,updated_by:Y.updatedBy??void 0}}}})});var s44,t44,tg;var mK0=m(()=>{d0();J6();BZ();s44=N.object({id:N.string().describe("ID of the gateway to update"),data:hK0.describe("Partial gateway data to update")}),t44=N.object({item:NY.describe("The updated gateway entity")}),tg=Q4({name:"COLLECTION_GATEWAY_UPDATE",description:"Update an MCP gateway",inputSchema:s44,outputSchema:t44,handler:async(X,Q)=>{B4(Q);let J=e4(Q);await Q.access.check();let Y=_X(Q);if(!Y)throw Error("User ID required to update gateway");let G=await Q.storage.gateways.findById(X.id);if(!G)throw Error(`Gateway not found: ${X.id}`);if(G.organizationId!==J.id)throw Error(`Gateway not found: ${X.id}`);let $={};if(X.data.title!==void 0)$.title=X.data.title;if(X.data.description!==void 0)$.description=X.data.description;if(X.data.tool_selection_strategy!==void 0)$.toolSelectionStrategy=X.data.tool_selection_strategy;if(X.data.tool_selection_mode!==void 0)$.toolSelectionMode=X.data.tool_selection_mode;if(X.data.icon!==void 0)$.icon=X.data.icon;if(X.data.status!==void 0)$.status=X.data.status;if(X.data.is_default!==void 0)$.isDefault=X.data.is_default;if(X.data.connections!==void 0)$.connections=X.data.connections.map((H)=>({connectionId:H.connection_id,selectedTools:H.selected_tools??null,selectedResources:H.selected_resources??null,selectedPrompts:H.selected_prompts??null}));let W=await Q.storage.gateways.update(X.id,Y,$);return{item:{id:W.id,title:W.title,description:W.description,icon:W.icon,organization_id:W.organizationId,tool_selection_strategy:W.toolSelectionStrategy,tool_selection_mode:W.toolSelectionMode,status:W.status,is_default:W.isDefault,connections:W.connections.map((H)=>({connection_id:H.connectionId,selected_tools:H.selectedTools,selected_resources:H.selectedResources,selected_prompts:H.selectedPrompts})),created_at:W.createdAt,updated_at:W.updatedAt,created_by:W.createdBy,updated_by:W.updatedBy??void 0}}}})});var e44,X64,eg;var lK0=m(()=>{d0();J6();BZ();e44=N.object({id:N.string().describe("ID of the gateway to delete")}),X64=N.object({item:NY.describe("The deleted gateway entity")}),eg=Q4({name:"COLLECTION_GATEWAY_DELETE",description:"Delete an MCP gateway",inputSchema:e44,outputSchema:X64,handler:async(X,Q)=>{B4(Q);let J=e4(Q);await Q.access.check();let Y=await Q.storage.gateways.findById(X.id);if(!Y)throw Error(`Gateway not found: ${X.id}`);if(Y.organizationId!==J.id)throw Error(`Gateway not found: ${X.id}`);if(Y.isDefault)throw Error("Cannot delete the default Hub. Set another Hub as default first.");return await Q.storage.gateways.delete(X.id),{item:{id:Y.id,title:Y.title,description:Y.description,icon:Y.icon,organization_id:Y.organizationId,tool_selection_strategy:Y.toolSelectionStrategy,tool_selection_mode:Y.toolSelectionMode,status:Y.status,is_default:Y.isDefault,connections:Y.connections.map((G)=>({connection_id:G.connectionId,selected_tools:G.selectedTools,selected_resources:G.selectedResources,selected_prompts:G.selectedPrompts})),created_at:Y.createdAt instanceof Date?Y.createdAt.toISOString():Y.createdAt,updated_at:Y.updatedAt instanceof Date?Y.updatedAt.toISOString():Y.updatedAt,created_by:Y.createdBy,updated_by:Y.updatedBy??void 0}}}})});var dK0=m(()=>{gK0();xK0();uK0();mK0();lK0()});var J64,Xx;var pK0=m(()=>{J6();d0();J64=N.object({id:N.string().optional().describe("Unique log identifier"),organizationId:N.string().describe("Organization ID"),connectionId:N.string().describe("Connection ID"),connectionTitle:N.string().describe("Connection display name"),toolName:N.string().describe("Name of the tool that was called"),input:N.record(N.string(),N.unknown()).describe("Redacted tool input"),output:N.record(N.string(),N.unknown()).describe("Redacted tool output"),isError:N.boolean().describe("Whether the call resulted in an error"),errorMessage:N.string().nullish().describe("Error message if applicable"),durationMs:N.number().describe("Call duration in milliseconds"),timestamp:N.string().describe("ISO 8601 timestamp of the call"),userId:N.string().nullish().describe("User who triggered the call"),requestId:N.string().describe("Unique request identifier"),userAgent:N.string().nullish().describe("Client identifier (x-mesh-client header)"),gatewayId:N.string().nullish().describe("Gateway ID if routed through a gateway"),properties:N.record(N.string(),N.string()).nullish().describe("Custom key-value metadata attached to the log")}),Xx=Q4({name:"MONITORING_LOGS_LIST",description:"List monitoring logs for tool calls in the organization",inputSchema:N.object({connectionId:N.string().optional().describe("Filter by connection ID"),gatewayId:N.string().optional().describe("Filter by gateway ID"),toolName:N.string().optional().describe("Filter by tool name"),isError:N.boolean().optional().describe("Filter by error status"),startDate:N.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:N.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),limit:N.number().default(100).describe("Maximum number of results"),offset:N.number().default(0).describe("Offset for pagination"),properties:N.record(N.string(),N.string()).optional().describe("Filter by exact property key=value matches"),propertyKeys:N.array(N.string()).optional().describe("Filter by logs that have these property keys"),propertyPatterns:N.record(N.string(),N.string()).optional().describe("Filter by property value patterns (SQL LIKE, use % as wildcard)")}),outputSchema:N.object({logs:N.array(J64).describe("Array of monitoring logs"),total:N.number().describe("Total number of logs matching filters"),offset:N.number().describe("Current offset for pagination"),limit:N.number().describe("Current limit for pagination")}),handler:async(X,Q)=>{let J=e4(Q),G=X.properties||X.propertyKeys||X.propertyPatterns?{properties:X.properties,propertyKeys:X.propertyKeys,propertyPatterns:X.propertyPatterns}:void 0,$={organizationId:J.id,connectionId:X.connectionId,gatewayId:X.gatewayId,toolName:X.toolName,isError:X.isError,startDate:X.startDate?new Date(X.startDate):void 0,endDate:X.endDate?new Date(X.endDate):void 0,limit:X.limit,offset:X.offset,propertyFilters:G},W=await Q.storage.monitoring.query($);return{logs:W.logs.map((H)=>({...H,timestamp:H.timestamp instanceof Date?H.timestamp.toISOString():H.timestamp})),total:W.total,offset:X.offset,limit:X.limit}}})});var Qx;var cK0=m(()=>{J6();d0();Qx=Q4({name:"MONITORING_STATS",description:"Get aggregated statistics for tool call monitoring",inputSchema:N.object({startDate:N.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:N.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)")}),outputSchema:N.object({totalCalls:N.number().describe("Total number of tool calls"),errorRate:N.number().describe("Error rate as a decimal (0 to 1)"),avgDurationMs:N.number().describe("Average call duration in milliseconds"),errorRatePercent:N.string().describe("Error rate as a percentage string")}),handler:async(X,Q)=>{let Y={organizationId:e4(Q).id,startDate:X.startDate?new Date(X.startDate):void 0,endDate:X.endDate?new Date(X.endDate):void 0},G=await Q.storage.monitoring.getStats(Y);return{...G,errorRatePercent:(G.errorRate*100).toFixed(2)}}})});var nK0=m(()=>{pK0();cK0()});var Jx;var iK0=m(()=>{d0();J6();Jx=Q4({name:"ORGANIZATION_CREATE",description:"Create a new organization",inputSchema:N.object({slug:N.string().min(1).max(50).regex(/^[a-z0-9-]+$/,"Slug must be lowercase alphanumeric with hyphens"),name:N.string().min(1).max(255),description:N.string().optional()}),outputSchema:N.object({id:N.string(),name:N.string(),slug:N.string(),logo:N.string().nullable().optional(),metadata:N.any().optional(),createdAt:N.union([N.date(),N.string()]),members:N.array(N.any()).optional()}),handler:async(X,Q)=>{B4(Q),await Q.access.check();let J=_X(Q);if(!J)throw Error("User ID required to create organization");let Y=await Q.boundAuth.organization.create({name:X.name,slug:X.slug,metadata:X.description?{description:X.description}:void 0,userId:J});if(!Y)throw Error("Failed to create organization");return Y}})});var Yx;var rK0=m(()=>{d0();J6();Yx=Q4({name:"ORGANIZATION_LIST",description:"List all organizations user has access to",inputSchema:N.object({userId:N.string().optional()}),outputSchema:N.object({organizations:N.array(N.object({id:N.string(),name:N.string(),slug:N.string(),logo:N.string().nullable().optional(),metadata:N.any().optional(),createdAt:N.union([N.date(),N.string()])}))}),handler:async(X,Q)=>{B4(Q),await Q.access.check();let J=_X(Q),Y=X.userId||J;if(!Y)throw Error("User ID required to list organizations");return{organizations:await Q.boundAuth.organization.list(Y)}}})});var Gx;var aK0=m(()=>{d0();J6();Gx=Q4({name:"ORGANIZATION_GET",description:"Get organization details by slug or ID",inputSchema:N.object({}),outputSchema:N.object({id:N.string(),name:N.string(),slug:N.string(),logo:N.string().nullable().optional(),metadata:N.any().optional(),createdAt:N.union([N.date(),N.string()]),members:N.array(N.any()).optional(),invitations:N.array(N.any()).optional()}),handler:async(X,Q)=>{B4(Q),await Q.access.check();let J=await Q.boundAuth.organization.get();if(!J)throw Error("No active organization found");return J}})});var $x;var oK0=m(()=>{d0();J6();$x=Q4({name:"ORGANIZATION_UPDATE",description:"Update an existing organization",inputSchema:N.object({id:N.string(),slug:N.string().min(1).max(50).regex(/^[a-z0-9-]+$/).optional(),name:N.string().min(1).max(255).optional(),description:N.string().optional()}),outputSchema:N.object({id:N.string(),name:N.string(),slug:N.string(),logo:N.string().nullable().optional(),metadata:N.any().optional(),createdAt:N.union([N.date(),N.string()])}),handler:async(X,Q)=>{B4(Q),await Q.access.check();let J={};if(X.name)J.name=X.name;if(X.slug)J.slug=X.slug;if(X.description)J.metadata={description:X.description};let Y=await Q.boundAuth.organization.update({organizationId:X.id,data:J});if(!Y)throw Error("Failed to update organization");return Y}})});var Wx;var sK0=m(()=>{d0();J6();Wx=Q4({name:"ORGANIZATION_DELETE",description:"Delete an organization",inputSchema:N.object({id:N.string()}),outputSchema:N.object({success:N.boolean(),id:N.string()}),handler:async(X,Q)=>{return B4(Q),await Q.access.check(),await Q.boundAuth.organization.delete(X.id),{success:!0,id:X.id}}})});var dU;var Hx=m(()=>{d0();dU=N.object({title:N.string(),url:N.string(),icon:N.string()})});var Kx;var tK0=m(()=>{d0();J6();Hx();Kx=Q4({name:"ORGANIZATION_SETTINGS_GET",description:"Get organization-level settings",inputSchema:N.object({}),outputSchema:N.object({organizationId:N.string(),sidebar_items:N.array(dU).nullable().optional(),createdAt:N.union([N.date(),N.string()]).optional(),updatedAt:N.union([N.date(),N.string()]).optional()}),handler:async(X,Q)=>{B4(Q),await Q.access.check();let J=Q.organization?.id;if(!J)throw Error("Organization ID required (no active organization in context)");let Y=await Q.storage.organizationSettings.get(J);if(!Y)return{organizationId:J};return Y}})});var Zx;var eK0=m(()=>{d0();J6();Hx();Zx=Q4({name:"ORGANIZATION_SETTINGS_UPDATE",description:"Update organization-level settings",inputSchema:N.object({organizationId:N.string(),sidebar_items:N.array(dU).optional()}),outputSchema:N.object({organizationId:N.string(),sidebar_items:N.array(dU).nullable().optional(),createdAt:N.union([N.date(),N.string()]),updatedAt:N.union([N.date(),N.string()])}),handler:async(X,Q)=>{if(B4(Q),await Q.access.check(),Q.organization&&Q.organization.id!==X.organizationId)throw Error("Cannot update settings for a different organization");return await Q.storage.organizationSettings.upsert(X.organizationId,{sidebar_items:X.sidebar_items})}})});var Fx;var XZ0=m(()=>{d0();J6();Fx=Q4({name:"ORGANIZATION_MEMBER_ADD",description:"Add a member to an organization",inputSchema:N.object({organizationId:N.string().optional(),userId:N.string(),role:N.array(N.string())}),outputSchema:N.object({id:N.string(),organizationId:N.string(),userId:N.string(),role:N.union([N.string(),N.array(N.string())]),createdAt:N.union([N.date(),N.string()])}),handler:async(X,Q)=>{B4(Q),await Q.access.check();let J=X.organizationId||Q.organization?.id;if(!J)throw Error("Organization ID required (no active organization in context)");let Y=await Q.boundAuth.organization.addMember({organizationId:J,userId:X.userId,role:X.role});if(!Y)throw Error("Failed to add member");return Y}})});var Vx;var QZ0=m(()=>{d0();J6();Vx=Q4({name:"ORGANIZATION_MEMBER_REMOVE",description:"Remove a member from an organization",inputSchema:N.object({organizationId:N.string().optional(),memberIdOrEmail:N.string()}),outputSchema:N.object({success:N.boolean(),memberIdOrEmail:N.string()}),handler:async(X,Q)=>{B4(Q),await Q.access.check();let J=X.organizationId||Q.organization?.id;if(!J)throw Error("Organization ID required (no active organization in context)");return await Q.boundAuth.organization.removeMember({organizationId:J,memberIdOrEmail:X.memberIdOrEmail}),{success:!0,memberIdOrEmail:X.memberIdOrEmail}}})});var qx;var JZ0=m(()=>{d0();J6();qx=Q4({name:"ORGANIZATION_MEMBER_LIST",description:"List all members in an organization",inputSchema:N.object({limit:N.number().optional(),offset:N.number().optional()}),outputSchema:N.object({members:N.array(N.object({id:N.string(),organizationId:N.string(),userId:N.string(),role:N.string(),createdAt:N.union([N.date(),N.string()]),user:N.object({id:N.string(),name:N.string(),email:N.string(),image:N.string().optional()}).optional()}))}),handler:async(X,Q)=>{B4(Q),await Q.access.check();let J=Q.organization?.id;if(!J)throw Error("Organization ID required (no active organization in context)");let Y=await Q.boundAuth.organization.listMembers({organizationId:J,limit:X.limit,offset:X.offset});return{members:Array.isArray(Y)?Y:[]}}})});var Ux;var YZ0=m(()=>{d0();J6();Ux=Q4({name:"ORGANIZATION_MEMBER_UPDATE_ROLE",description:"Update a member's role in an organization",inputSchema:N.object({organizationId:N.string().optional(),memberId:N.string(),role:N.array(N.string())}),outputSchema:N.object({id:N.string(),organizationId:N.string(),userId:N.string(),role:N.union([N.literal("admin"),N.literal("member"),N.literal("owner")]),createdAt:N.union([N.date(),N.string()]),user:N.object({email:N.string(),name:N.string(),image:N.string().optional()})}),handler:async(X,Q)=>{B4(Q),await Q.access.check();let J=X.organizationId||Q.organization?.id;if(!J)throw Error("Organization ID required (no active organization in context)");let Y=await Q.boundAuth.organization.updateMemberRole({organizationId:J,memberId:X.memberId,role:X.role});if(!Y)throw Error("Failed to update member role");return Y}})});var GZ0=m(()=>{iK0();rK0();aK0();oK0();sK0();tK0();eK0();XZ0();QZ0();JZ0();YZ0()});var $64,W64,zx;var $Z0=m(()=>{d0();J6();$64=N.object({id:N.string().min(1)}),W64=N.object({user:N.object({id:N.string(),name:N.string(),email:N.string(),image:N.string().nullable()}).nullable()}),zx=Q4({name:"USER_GET",description:"Get a user by id (restricted to shared organizations)",inputSchema:$64,outputSchema:W64,handler:async(X,Q)=>{await Q.access.check(),B4(Q);let J=_X(Q);if(!J)throw Error("Authentication required");let Y=await Q.storage.users.findById(X.id,J);if(!Y)return{user:null};return{user:{id:Y.id,name:Y.name,email:Y.email,image:Y.image??null}}}})});var WZ0=m(()=>{$Z0()});var KZ0={};Y6(KZ0,{managementMCP:()=>K64,ALL_TOOLS:()=>HZ0});var HZ0,K64=(X)=>{let Q=HZ0.map((Y)=>({name:Y.name,description:Y.description,inputSchema:Y.inputSchema,outputSchema:Y.outputSchema,handler:async(G)=>{return X.access.setToolName(Y.name),await Y.execute(G,X)}}));return j50({name:"mcp-mesh-management",version:"1.0.0"}).withTools(Q).build()};var ZZ0=m(()=>{N50();IH0();wK0();AK0();yK0();dK0();nK0();GZ0();WZ0();HZ0=[Jx,Yx,Gx,$x,Wx,Kx,Zx,Fx,Vx,qx,Ux,Ug,bg,yg,fg,hg,gg,rg,og,sg,tg,eg,TK0,Xx,Qx,Zg,Vg,qg,Fg,xg,ug,mg,lg,dg,pg,cg,zx]});sP();import{Migrator as jZ0}from"kysely";var Cx={benchmark:()=>Promise.resolve().then(() => (Ex(),Ax)).then((X)=>X.seed)};async function Rx(X,Q){let J=Cx[Q];if(!J)throw Error(`Unknown seed: ${Q}. Available: ${Object.keys(Cx).join(", ")}`);let Y=await J();console.log(`\uD83C\uDF31 Running seed: ${Q}`);let G=await Y(X);return console.log(`\u2705 Seed "${Q}" completed`),G}OY();HJ();OY();HJ();PX();v1();var u8=(X,Q="ms")=>{return new Date(Date.now()+(Q==="sec"?X*1000:X))},rD=new WeakMap;function Gp(X,Q){let J=Q.fields,Y={};for(let G in X){let $=J[G];if(!$){Y[G]=X[G];continue}if($.returned===!1)continue;Y[G]=X[G]}return Y}function aD(X,Q){if(!rD.has(X))rD.set(X,new Map);let J=rD.get(X);if(J.has(Q))return J.get(Q);let Y={...Q==="user"?X.user?.additionalFields:{},...Q==="session"?X.session?.additionalFields:{}};for(let G of X.plugins||[])if(G.schema&&G.schema[Q])Y={...Y,...G.schema[Q].fields};return rD.get(X).set(Q,Y),Y}function k1(X,Q){return{...Gp(Q,{fields:aD(X,"user")}),id:Q.id}}function f9(X,Q){return Gp(Q,{fields:aD(X,"session")})}function AR(X,Q){let J=Q.action||"create",Y=Q.fields,G=Object.assign(Object.create(null),null);for(let $ in Y){if($ in X){if(Y[$].input===!1){if(Y[$].defaultValue!==void 0){if(J!=="update"){G[$]=Y[$].defaultValue;continue}}if(X[$])throw new h("BAD_REQUEST",{message:`${$} is not allowed to be set`});continue}if(Y[$].validator?.input&&X[$]!==void 0){G[$]=Y[$].validator.input["~standard"].validate(X[$]);continue}if(Y[$].transform?.input&&X[$]!==void 0){G[$]=Y[$].transform?.input(X[$]);continue}G[$]=X[$];continue}if(Y[$].defaultValue!==void 0&&J==="create"){if(typeof Y[$].defaultValue==="function"){G[$]=Y[$].defaultValue();continue}G[$]=Y[$].defaultValue;continue}if(Y[$].required&&J==="create")throw new h("BAD_REQUEST",{message:`${$} is required`})}return G}function oD(X,Q={},J){return AR(Q,{fields:aD(X,"user"),action:J})}function ER(X,Q){return AR(Q,{fields:aD(X,"session")})}function uX(X,Q){if(!Q)return X;for(let J in Q){let Y=Q[J]?.modelName;if(Y)X[J].modelName=Y;for(let G in X[J].fields){let $=Q[J]?.fields?.[G];if(!$)continue;X[J].fields[G].fieldName=$}}return X}UQ();d0();var gU0="127.0.0.1";function Q$(X,Q){if(Q.advanced?.ipAddress?.disableIpTracking)return null;if(bY()||t7())return gU0;let J="headers"in X?X.headers:X,Y=Q.advanced?.ipAddress?.ipAddressHeaders||["x-forwarded-for"];for(let G of Y){let $="get"in J?J.get(G):J[G];if(typeof $==="string"){let W=$.split(",")[0].trim();if(xU0(W))return W}}return null}function xU0(X){if(x5().safeParse(X).success)return!0;if(u5().safeParse(X).success)return!0;return!1}TX();k9();UQ();e8();import{sql as g9}from"kysely";async function Zp(X,Q){let J;if(!X.database){let Y=yQ(X),G=Object.keys(Y).reduce((W,H)=>{return W[H]=[],W},{}),{memoryAdapter:$}=await Promise.resolve().then(() => (Kp(),Hp));J=$(G)(X)}else if(typeof X.database==="function")J=X.database(X);else J=await Q(X);if(!J.transaction)M4.warn("Adapter does not correctly implement transaction function, patching it automatically. Please update your adapter implementation."),J.transaction=async(Y)=>{return Y(J)};return J}async function kR(X){return Zp(X,async(Q)=>{let{createKyselyAdapter:J}=await Promise.resolve().then(() => (vR(),SR)),{kysely:Y,databaseType:G,transaction:$}=await J(Q);if(!Y)throw new L4("Failed to initialize database adapter");let{kyselyAdapter:W}=await Promise.resolve().then(() => (vR(),SR));return W(Y,{type:G||"sqlite",debugLogs:Q.database&&"debugLogs"in Q.database?Q.database.debugLogs:!1,transaction:$})(Q)})}function Fp(X,Q){let J=Q.hooks;async function Y(K,Z,F){let V=await fQ(),q=K;for(let D of J||[]){let j=D[Z]?.create?.before;if(j){let O=await j(q,V);if(O===!1)return null;if(typeof O==="object"&&"data"in O)q={...q,...O.data}}}let B=F?await F.fn(q):null,L=!F||F.executeMainFn?await(await l6(X)).create({model:Z,data:q,forceAllowId:!0}):B;for(let D of J||[]){let j=D[Z]?.create?.after;if(j)await j(L,V)}return L}async function G(K,Z,F,V){let q=await fQ(),B=K;for(let j of J||[]){let O=j[F]?.update?.before;if(O){let T=await O(K,q);if(T===!1)return null;if(typeof T==="object"&&"data"in T)B={...B,...T.data}}}let L=V?await V.fn(B):null,D=!V||V.executeMainFn?await(await l6(X)).update({model:F,update:B,where:Z}):L;for(let j of J||[]){let O=j[F]?.update?.after;if(O)await O(D,q)}return D}async function $(K,Z,F,V){let q=await fQ(),B=K;for(let j of J||[]){let O=j[F]?.update?.before;if(O){let T=await O(K,q);if(T===!1)return null;if(typeof T==="object"&&"data"in T)B={...B,...T.data}}}let L=V?await V.fn(B):null,D=!V||V.executeMainFn?await(await l6(X)).updateMany({model:F,update:B,where:Z}):L;for(let j of J||[]){let O=j[F]?.update?.after;if(O)await O(D,q)}return D}async function W(K,Z,F){let V=await fQ(),q=null;try{q=(await(await l6(X)).findMany({model:Z,where:K,limit:1}))[0]||null}catch(D){}if(q)for(let D of J||[]){let j=D[Z]?.delete?.before;if(j){if(await j(q,V)===!1)return null}}let B=F?await F.fn(K):null,L=!F||F.executeMainFn?await(await l6(X)).delete({model:Z,where:K}):B;if(q)for(let D of J||[]){let j=D[Z]?.delete?.after;if(j)await j(q,V)}return L}async function H(K,Z,F){let V=await fQ(),q=[];try{q=await(await l6(X)).findMany({model:Z,where:K})}catch(D){}for(let D of q)for(let j of J||[]){let O=j[Z]?.delete?.before;if(O){if(await O(D,V)===!1)return null}}let B=F?await F.fn(K):null,L=!F||F.executeMainFn?await(await l6(X)).deleteMany({model:Z,where:K}):B;for(let D of q)for(let j of J||[]){let O=j[Z]?.delete?.after;if(O)await O(D,V)}return L}return{createWithHooks:Y,updateWithHooks:G,updateManyWithHooks:$,deleteWithHooks:W,deleteManyWithHooks:H}}var Yj=(X,Q)=>{let{logger:J,options:Y}=Q,G=Y.secondaryStorage,$=Y.session?.expiresIn||604800,{createWithHooks:W,updateWithHooks:H,updateManyWithHooks:K,deleteWithHooks:Z,deleteManyWithHooks:F}=Fp(X,Q);async function V(q){if(!G)return;let B=await G.get(`active-sessions-${q.id}`);if(!B)return;let L=Date.now(),D=(o6(B)||[]).filter((j)=>j.expiresAt>L);await Promise.all(D.map(async({token:j})=>{let O=await G.get(j);if(!O)return;let T=o6(O);if(!T)return;let C=Math.max(Math.floor(new Date(T.session.expiresAt).getTime()-L)/1000,0);await G.set(j,JSON.stringify({session:T.session,user:q}),Math.floor(C))}))}return{createOAuthUser:async(q,B)=>{return dZ(X,async()=>{let L=await W({createdAt:new Date,updatedAt:new Date,...q},"user",void 0);return{user:L,account:await W({...B,userId:L.id,createdAt:new Date,updatedAt:new Date},"account",void 0)}})},createUser:async(q)=>{return await W({createdAt:new Date,updatedAt:new Date,...q,email:q.email?.toLowerCase()},"user",void 0)},createAccount:async(q)=>{return await W({createdAt:new Date,updatedAt:new Date,...q},"account",void 0)},listSessions:async(q)=>{if(G){let B=await G.get(`active-sessions-${q}`);if(!B)return[];let L=o6(B)||[],D=Date.now(),j=L.filter((T)=>T.expiresAt>D),O=[];for(let T of j){let C=await G.get(T.token);if(C){let E=o6(C);if(!E)return[];let P=f9(Q.options,{...E.session,expiresAt:new Date(E.session.expiresAt)});O.push(P)}}return O}return await(await l6(X)).findMany({model:"session",where:[{field:"userId",value:q}]})},listUsers:async(q,B,L,D)=>{return await(await l6(X)).findMany({model:"user",limit:q,offset:B,sortBy:L,where:D})},countTotalUsers:async(q)=>{let B=await(await l6(X)).count({model:"user",where:q});if(typeof B==="string")return parseInt(B);return B},deleteUser:async(q)=>{if(G)await G.delete(`active-sessions-${q}`);if(!G||Y.session?.storeSessionInDatabase)await F([{field:"userId",value:q}],"session",void 0);await F([{field:"userId",value:q}],"account",void 0),await Z([{field:"id",value:q}],"user",void 0)},createSession:async(q,B,L,D)=>{let j=await fQ().catch(()=>null),O=j?.headers||j?.request?.headers,{id:T,...C}=L||{},E=ER(j?.context.options??Y,{}),P={ipAddress:j?.request||j?.headers?Q$(j?.request||j?.headers,j?.context.options)||"":"",userAgent:O?.get("user-agent")||"",...C,expiresAt:B?u8(86400,"sec"):u8($,"sec"),userId:q,token:Z1(32),createdAt:new Date,updatedAt:new Date,...E,...D?C:{}};return await W(P,"session",G?{fn:async(A)=>{let R=await G.get(`active-sessions-${q}`),S=[],v=Date.now();if(R)S=o6(R)||[],S=S.filter((i)=>i.expiresAt>v);let k=S.sort((i,s)=>i.expiresAt-s.expiresAt),u=k.at(-1)?.expiresAt;if(k.push({token:P.token,expiresAt:P.expiresAt.getTime()}),!u||u<P.expiresAt.getTime())u=P.expiresAt.getTime();let c=Math.max(Math.floor((u-v)/1000),0);if(c>0)await G.set(`active-sessions-${q}`,JSON.stringify(k),c);let p=await X.findOne({model:"user",where:[{field:"id",value:q}]}),a=Math.max(Math.floor((P.expiresAt.getTime()-v)/1000),0);if(a>0)await G.set(P.token,JSON.stringify({session:A,user:p}),a);return A},executeMainFn:Y.session?.storeSessionInDatabase}:void 0)},findSession:async(q)=>{if(G){let j=await G.get(q);if(!j&&!Y.session?.storeSessionInDatabase)return null;if(j){let O=o6(j);if(!O)return null;return{session:f9(Q.options,{...O.session,expiresAt:new Date(O.session.expiresAt),createdAt:new Date(O.session.createdAt),updatedAt:new Date(O.session.updatedAt)}),user:k1(Q.options,{...O.user,createdAt:new Date(O.user.createdAt),updatedAt:new Date(O.user.updatedAt)})}}}let B=await(await l6(X)).findOne({model:"session",where:[{value:q,field:"token"}],join:{user:!0}});if(!B)return null;let{user:L,...D}=B;if(!L)return null;return{session:f9(Q.options,D),user:k1(Q.options,L)}},findSessions:async(q)=>{if(G){let L=[];for(let D of q){let j=await G.get(D);if(j){let O=o6(j);if(!O)return[];let T={session:{...O.session,expiresAt:new Date(O.session.expiresAt)},user:{...O.user,createdAt:new Date(O.user.createdAt),updatedAt:new Date(O.user.updatedAt)}};L.push(T)}}return L}let B=await(await l6(X)).findMany({model:"session",where:[{field:"token",value:q,operator:"in"}],join:{user:!0}});if(!B.length)return[];if(B.some((L)=>!L.user))return[];return B.map((L)=>{let{user:D,...j}=L;return{session:j,user:D}})},updateSession:async(q,B)=>{return await H(B,[{field:"token",value:q}],"session",G?{async fn(L){let D=await G.get(q),j=null;if(D){let O=o6(D);if(!O)return null;return j={...O.session,...L},j}else return null},executeMainFn:Y.session?.storeSessionInDatabase}:void 0)},deleteSession:async(q)=>{if(G){let B=await G.get(q);if(B){let{session:L}=o6(B)??{};if(!L){J.error("Session not found in secondary storage");return}let D=L.userId,j=await G.get(`active-sessions-${D}`);if(j){let O=o6(j)||[],T=Date.now(),C=O.filter((P)=>P.expiresAt>T&&P.token!==q),E=C.sort((P,A)=>P.expiresAt-A.expiresAt).at(-1)?.expiresAt;if(C.length>0&&E&&E>Date.now())await G.set(`active-sessions-${D}`,JSON.stringify(C),Math.floor((E-T)/1000));else await G.delete(`active-sessions-${D}`)}else J.error("Active sessions list not found in secondary storage")}if(await G.delete(q),!Y.session?.storeSessionInDatabase||Q.options.session?.preserveSessionInDatabase)return}await(await l6(X)).delete({model:"session",where:[{field:"token",value:q}]})},deleteAccounts:async(q)=>{await F([{field:"userId",value:q}],"account",void 0)},deleteAccount:async(q)=>{await Z([{field:"id",value:q}],"account",void 0)},deleteSessions:async(q)=>{if(G){if(typeof q==="string"){let B=await G.get(`active-sessions-${q}`),L=B?o6(B):[];if(!L)return;for(let D of L)await G.delete(D.token)}else for(let B of q)if(await G.get(B))await G.delete(B);if(!Y.session?.storeSessionInDatabase||Q.options.session?.preserveSessionInDatabase)return}await F([{field:Array.isArray(q)?"token":"userId",value:q,operator:Array.isArray(q)?"in":void 0}],"session",void 0)},findOAuthUser:async(q,B,L)=>{let D=await(await l6(X)).findMany({model:"account",where:[{value:B,field:"accountId"}],join:{user:!0}}).then((j)=>{return j.find((O)=>O.providerId===L)});if(D)if(D.user)return{user:D.user,accounts:[D]};else{let j=await(await l6(X)).findOne({model:"user",where:[{value:q.toLowerCase(),field:"email"}]});if(j)return{user:j,accounts:[D]};return null}else{let j=await(await l6(X)).findOne({model:"user",where:[{value:q.toLowerCase(),field:"email"}]});if(j)return{user:j,accounts:await(await l6(X)).findMany({model:"account",where:[{value:j.id,field:"userId"}]})||[]};else return null}},findUserByEmail:async(q,B)=>{let L=await(await l6(X)).findOne({model:"user",where:[{value:q.toLowerCase(),field:"email"}],join:{...B?.includeAccounts?{account:!0}:{}}});if(!L)return null;let{account:D,...j}=L;return{user:j,accounts:D??[]}},findUserById:async(q)=>{if(!q)return null;return await(await l6(X)).findOne({model:"user",where:[{field:"id",value:q}]})},linkAccount:async(q)=>{return await W({createdAt:new Date,updatedAt:new Date,...q},"account",void 0)},updateUser:async(q,B)=>{let L=await H(B,[{field:"id",value:q}],"user",void 0);return await V(L),await V(L),L},updateUserByEmail:async(q,B)=>{let L=await H(B,[{field:"email",value:q.toLowerCase()}],"user",void 0);return await V(L),await V(L),L},updatePassword:async(q,B)=>{await K({password:B},[{field:"userId",value:q},{field:"providerId",value:"credential"}],"account",void 0)},findAccounts:async(q)=>{return await(await l6(X)).findMany({model:"account",where:[{field:"userId",value:q}]})},findAccount:async(q)=>{return await(await l6(X)).findOne({model:"account",where:[{field:"accountId",value:q}]})},findAccountByProviderId:async(q,B)=>{return await(await l6(X)).findOne({model:"account",where:[{field:"accountId",value:q},{field:"providerId",value:B}]})},findAccountByUserId:async(q)=>{return await(await l6(X)).findMany({model:"account",where:[{field:"userId",value:q}]})},updateAccount:async(q,B)=>{return await H(B,[{field:"id",value:q}],"account",void 0)},createVerificationValue:async(q)=>{return await W({createdAt:new Date,updatedAt:new Date,...q},"verification",void 0)},findVerificationValue:async(q)=>{let B=await(await l6(X)).findMany({model:"verification",where:[{field:"identifier",value:q}],sortBy:{field:"createdAt",direction:"desc"},limit:1});if(!Y.verification?.disableCleanup)await(await l6(X)).deleteMany({model:"verification",where:[{field:"expiresAt",value:new Date,operator:"lt"}]});return B[0]},deleteVerificationValue:async(q)=>{await(await l6(X)).delete({model:"verification",where:[{field:"id",value:q}]})},deleteVerificationByIdentifier:async(q)=>{await(await l6(X)).delete({model:"verification",where:[{field:"identifier",value:q}]})},updateVerificationValue:async(q,B)=>{return await H(B,[{field:"id",value:q}],"verification",void 0)}}};function Vp(X){let Q=yQ(X),J={};for(let Y in Q){let G=Q[Y],$=G.fields,W={};if(Object.entries($).forEach(([H,K])=>{if(W[K.fieldName||H]=K,K.references){let Z=Q[K.references.model];if(Z)W[K.fieldName||H].references={...K.references,model:Z.modelName,field:K.references.field}}}),J[G.modelName]){J[G.modelName].fields={...J[G.modelName].fields,...W};continue}J[G.modelName]={fields:W,order:G.order||1/0}}return J}var cU0={postgres:{string:["character varying","varchar","text","uuid"],number:["int4","integer","bigint","smallint","numeric","real","double precision"],boolean:["bool","boolean"],date:["timestamptz","timestamp","date"],json:["json","jsonb"]},mysql:{string:["varchar","text","uuid"],number:["integer","int","bigint","smallint","decimal","float","double"],boolean:["boolean","tinyint"],date:["timestamp","datetime","date"],json:["json"]},sqlite:{string:["TEXT"],number:["INTEGER","REAL"],boolean:["INTEGER","BOOLEAN"],date:["DATE","INTEGER"],json:["TEXT"]},mssql:{string:["varchar","nvarchar","uniqueidentifier"],number:["int","bigint","smallint","decimal","float","double"],boolean:["bit","smallint"],date:["datetime2","date","datetime"],json:["varchar","nvarchar"]}};function qp(X,Q,J){function Y($){return $.toLowerCase().split("(")[0].trim()}if(Q==="string[]"||Q==="number[]")return X.toLowerCase().includes("json");let G=cU0[J];return(Array.isArray(Q)?G.string.map(($)=>$.toLowerCase()):G[Q].map(($)=>$.toLowerCase())).includes(Y(X))}async function nU0(X){try{let Q=await g9`SHOW search_path`.execute(X);if(Q.rows[0]?.search_path)return Q.rows[0].search_path.split(",").map((J)=>J.trim()).map((J)=>J.replace(/^["']|["']$/g,"")).filter((J)=>!J.startsWith("$"))[0]||"public"}catch(Q){}return"public"}async function wF(X){let Q=Vp(X),J=XH(X.logger),{kysely:Y,databaseType:G}=await aU(X);if(!G)J.warn("Could not determine database type, defaulting to sqlite. Please provide a type in the database options to avoid this."),G="sqlite";if(!Y)J.error("Only kysely adapter is supported for migrations. You can use `generate` command to generate the schema, if you're using a different adapter."),process.exit(1);let $="public";if(G==="postgres"){$=await nU0(Y),J.debug(`PostgreSQL migration: Using schema '${$}' (from search_path)`);try{if(!(await g9`
|
|
215
215
|
SELECT schema_name
|
|
216
216
|
FROM information_schema.schemata
|
|
217
217
|
WHERE schema_name = ${$}
|
|
@@ -985,7 +985,7 @@ Please refer to the documentation here: https://better-auth.com/docs/plugins/org
|
|
|
985
985
|
</script>
|
|
986
986
|
<script src="https://cdn.jsdelivr.net/npm/@scalar/api-reference" ${Y}></script>
|
|
987
987
|
</body>
|
|
988
|
-
</html>`},M_=(X)=>{let Q=X?.path??"/reference";return{id:"open-api",endpoints:{generateOpenAPISchema:O0("/open-api/generate-schema",{method:"GET"},async(J)=>{let Y=await W60(J.context,J.context.options);return J.json(Y)}),openAPIReference:O0(Q,{method:"GET",metadata:{isAction:!1}},async(J)=>{if(X?.disableDefaultReference)throw new h("NOT_FOUND");let Y=await W60(J.context,J.context.options);return new Response(cy0(Y,X?.theme,X?.nonce),{headers:{"Content-Type":"text/html"}})})}}};PX();k9();e8();v1();d0();var iT4=P6(async()=>{return{}}),rT4=P6({use:[O8]},async(X)=>{return{session:X.context.session}}),aT4=r6({YOU_ARE_NOT_ALLOWED_TO_CREATE_A_NEW_ORGANIZATION:"You are not allowed to create a new organization",YOU_HAVE_REACHED_THE_MAXIMUM_NUMBER_OF_ORGANIZATIONS:"You have reached the maximum number of organizations",ORGANIZATION_ALREADY_EXISTS:"Organization already exists",ORGANIZATION_SLUG_ALREADY_TAKEN:"Organization slug already taken",ORGANIZATION_NOT_FOUND:"Organization not found",USER_IS_NOT_A_MEMBER_OF_THE_ORGANIZATION:"User is not a member of the organization",YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_ORGANIZATION:"You are not allowed to update this organization",YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_ORGANIZATION:"You are not allowed to delete this organization",NO_ACTIVE_ORGANIZATION:"No active organization",USER_IS_ALREADY_A_MEMBER_OF_THIS_ORGANIZATION:"User is already a member of this organization",MEMBER_NOT_FOUND:"Member not found",ROLE_NOT_FOUND:"Role not found",YOU_ARE_NOT_ALLOWED_TO_CREATE_A_NEW_TEAM:"You are not allowed to create a new team",TEAM_ALREADY_EXISTS:"Team already exists",TEAM_NOT_FOUND:"Team not found",YOU_CANNOT_LEAVE_THE_ORGANIZATION_AS_THE_ONLY_OWNER:"You cannot leave the organization as the only owner",YOU_CANNOT_LEAVE_THE_ORGANIZATION_WITHOUT_AN_OWNER:"You cannot leave the organization without an owner",YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_MEMBER:"You are not allowed to delete this member",YOU_ARE_NOT_ALLOWED_TO_INVITE_USERS_TO_THIS_ORGANIZATION:"You are not allowed to invite users to this organization",USER_IS_ALREADY_INVITED_TO_THIS_ORGANIZATION:"User is already invited to this organization",INVITATION_NOT_FOUND:"Invitation not found",YOU_ARE_NOT_THE_RECIPIENT_OF_THE_INVITATION:"You are not the recipient of the invitation",EMAIL_VERIFICATION_REQUIRED_BEFORE_ACCEPTING_OR_REJECTING_INVITATION:"Email verification required before accepting or rejecting invitation",YOU_ARE_NOT_ALLOWED_TO_CANCEL_THIS_INVITATION:"You are not allowed to cancel this invitation",INVITER_IS_NO_LONGER_A_MEMBER_OF_THE_ORGANIZATION:"Inviter is no longer a member of the organization",YOU_ARE_NOT_ALLOWED_TO_INVITE_USER_WITH_THIS_ROLE:"You are not allowed to invite a user with this role",FAILED_TO_RETRIEVE_INVITATION:"Failed to retrieve invitation",YOU_HAVE_REACHED_THE_MAXIMUM_NUMBER_OF_TEAMS:"You have reached the maximum number of teams",UNABLE_TO_REMOVE_LAST_TEAM:"Unable to remove last team",YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_MEMBER:"You are not allowed to update this member",ORGANIZATION_MEMBERSHIP_LIMIT_REACHED:"Organization membership limit reached",YOU_ARE_NOT_ALLOWED_TO_CREATE_TEAMS_IN_THIS_ORGANIZATION:"You are not allowed to create teams in this organization",YOU_ARE_NOT_ALLOWED_TO_DELETE_TEAMS_IN_THIS_ORGANIZATION:"You are not allowed to delete teams in this organization",YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_TEAM:"You are not allowed to update this team",YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_TEAM:"You are not allowed to delete this team",INVITATION_LIMIT_REACHED:"Invitation limit reached",TEAM_MEMBER_LIMIT_REACHED:"Team member limit reached",USER_IS_NOT_A_MEMBER_OF_THE_TEAM:"User is not a member of the team",YOU_CAN_NOT_ACCESS_THE_MEMBERS_OF_THIS_TEAM:"You are not allowed to list the members of this team",YOU_DO_NOT_HAVE_AN_ACTIVE_TEAM:"You do not have an active team",YOU_ARE_NOT_ALLOWED_TO_CREATE_A_NEW_TEAM_MEMBER:"You are not allowed to create a new member",YOU_ARE_NOT_ALLOWED_TO_REMOVE_A_TEAM_MEMBER:"You are not allowed to remove a team member",YOU_ARE_NOT_ALLOWED_TO_ACCESS_THIS_ORGANIZATION:"You are not allowed to access this organization as an owner",YOU_ARE_NOT_A_MEMBER_OF_THIS_ORGANIZATION:"You are not a member of this organization",MISSING_AC_INSTANCE:"Dynamic Access Control requires a pre-defined ac instance on the server auth plugin. Read server logs for more information",YOU_MUST_BE_IN_AN_ORGANIZATION_TO_CREATE_A_ROLE:"You must be in an organization to create a role",YOU_ARE_NOT_ALLOWED_TO_CREATE_A_ROLE:"You are not allowed to create a role",YOU_ARE_NOT_ALLOWED_TO_UPDATE_A_ROLE:"You are not allowed to update a role",YOU_ARE_NOT_ALLOWED_TO_DELETE_A_ROLE:"You are not allowed to delete a role",YOU_ARE_NOT_ALLOWED_TO_READ_A_ROLE:"You are not allowed to read a role",YOU_ARE_NOT_ALLOWED_TO_LIST_A_ROLE:"You are not allowed to list a role",YOU_ARE_NOT_ALLOWED_TO_GET_A_ROLE:"You are not allowed to get a role",TOO_MANY_ROLES:"This organization has too many roles",INVALID_RESOURCE:"The provided permission includes an invalid resource",ROLE_NAME_IS_ALREADY_TAKEN:"That role name is already taken",CANNOT_DELETE_A_PRE_DEFINED_ROLE:"Cannot delete a pre-defined role"});var oT4=Number.POSITIVE_INFINITY;var K60=w(),iy0=o0(["pending","accepted","rejected","canceled"]).default("pending"),sT4=b({id:w().default(Z1),name:w(),slug:w(),logo:w().nullish().optional(),metadata:v0(w(),I6()).or(w().transform((X)=>JSON.parse(X))).optional(),createdAt:E4()}),tT4=b({id:w().default(Z1),organizationId:w(),userId:j4.string(),role:K60,createdAt:E4().default(()=>new Date)}),eT4=b({id:w().default(Z1),organizationId:w(),email:w(),role:K60,status:iy0,teamId:w().nullish(),inviterId:w(),expiresAt:E4(),createdAt:E4().default(()=>new Date)}),XA4=b({id:w().default(Z1),name:w().min(1),organizationId:w(),createdAt:E4(),updatedAt:E4().optional()}),QA4=b({id:w().default(Z1),teamId:w(),userId:w(),createdAt:E4().default(()=>new Date)}),JA4=b({id:w().default(Z1),organizationId:w(),role:w(),permission:v0(w(),Z0(w())),createdAt:E4().default(()=>new Date),updatedAt:E4().optional()}),H60=["admin","member","owner"],YA4=I4([o0(H60),Z0(o0(H60))]);M8();e8();v1();var UA4=r6({INVALID_PHONE_NUMBER:"Invalid phone number",PHONE_NUMBER_EXIST:"Phone number already exists",PHONE_NUMBER_NOT_EXIST:"phone number isn't registered",INVALID_PHONE_NUMBER_OR_PASSWORD:"Invalid phone number or password",UNEXPECTED_ERROR:"Unexpected error",OTP_NOT_FOUND:"OTP not found",OTP_EXPIRED:"OTP expired",INVALID_OTP:"Invalid OTP",PHONE_NUMBER_NOT_VERIFIED:"Phone number not verified",PHONE_NUMBER_CANNOT_BE_UPDATED:"Phone number cannot be updated",SEND_OTP_NOT_IMPLEMENTED:"sendOTP not implemented",TOO_MANY_ATTEMPTS:"Too many attempts"});M8();TX();e8();v1();A1();Z8();var ry0=r6({OTP_NOT_ENABLED:"OTP not enabled",OTP_HAS_EXPIRED:"OTP has expired",TOTP_NOT_ENABLED:"TOTP not enabled",TWO_FACTOR_NOT_ENABLED:"Two factor isn't enabled",BACKUP_CODES_NOT_ENABLED:"Backup codes aren't enabled",INVALID_BACKUP_CODE:"Invalid backup code",INVALID_CODE:"Invalid code",TOO_MANY_ATTEMPTS_REQUEST_NEW_CODE:"Too many attempts. Please request a new code.",INVALID_TWO_FACTOR_COOKIE:"Invalid two factor cookie"});e8();v1();var ay0=r6({INVALID_USERNAME_OR_PASSWORD:"Invalid username or password",EMAIL_NOT_VERIFIED:"Email not verified",UNEXPECTED_ERROR:"Unexpected error",USERNAME_IS_ALREADY_TAKEN:"Username is already taken. Please try another.",USERNAME_TOO_SHORT:"Username is too short",USERNAME_TOO_LONG:"Username is too long",INVALID_USERNAME:"Username is invalid",INVALID_DISPLAY_USERNAME:"Display username is invalid"});var FK={enabled:!0,batchSize:250,flushIntervalMs:300,maxQueueSize:1e4,redactor:"regex"};import{existsSync as Z60,readFileSync as F60}from"fs";var Ww={emailAndPassword:{enabled:!0}},V60=process.env.CONFIG_PATH||"./config.json",q60=process.env.AUTH_CONFIG_PATH||"./auth-config.json";function oy0(){if(Z60(V60))try{let X=F60(V60,"utf-8"),Q=JSON.parse(X);return{auth:Ww,monitoring:FK,...Q}}catch{return{auth:Ww,monitoring:FK}}if(Z60(q60))try{let X=F60(q60,"utf-8");return{auth:JSON.parse(X),monitoring:FK}}catch{return{auth:Ww,monitoring:FK}}return{auth:Ww,monitoring:FK}}var P_=oy0();import{existsSync as mx0,mkdirSync as lx0}from"fs";import{Kysely as _10,PostgresDialect as b10,sql as k10}from"kysely";import{BunWorkerDialect as y10}from"kysely-bun-worker";import*as f10 from"path";var uJ=WJ(Xb(),1),q24=uJ.default.Client,Gb=uJ.default.Pool,U24=uJ.default.Connection,z24=uJ.default.types,B24=uJ.default.Query,L24=uJ.default.DatabaseError,D24=uJ.default.escapeIdentifier,j24=uJ.default.escapeLiteral,N24=uJ.default.Result,O24=uJ.default.TypeOverrides,w24=uJ.default.defaults;function dx0(X){let Q=new Gb({connectionString:X.connectionString,max:X.options?.maxConnections||10,ssl:process.env.DATABASE_PG_SSL==="true"?!0:!1}),J=new b10({pool:Q});return{type:"postgres",db:new _10({dialect:J}),pool:Q}}function h10(X){if(X===":memory:")return":memory:";if(X.includes("://"))return new URL(X).pathname;return X}function g10(X){if(X!==":memory:"&&X!=="/"&&X){let Q=X.substring(0,X.lastIndexOf("/"));if(Q&&Q!=="/"&&!mx0(Q))try{lx0(Q,{recursive:!0})}catch{return console.warn(`Failed to create directory ${Q}, using in-memory database`),":memory:"}}return X}function px0(X){let Q=h10(X.connectionString);Q=g10(Q);let J=new y10({url:Q||":memory:"}),Y=new _10({dialect:J});if(Q!==":memory:"&&X.options?.enableWAL!==!1)k10`PRAGMA journal_mode = WAL;`.execute(Y).catch(()=>{});if(Q!==":memory:"){let G=X.options?.busyTimeout||5000;k10`PRAGMA busy_timeout = ${G};`.execute(Y).catch(()=>{})}return{type:"sqlite",db:Y}}function x10(X){let Q=X||"file:./data/mesh.db";if(Q===":memory:")return{type:"sqlite",connectionString:":memory:"};Q=Q.startsWith("/")?`file://${Q}`:Q;let J=URL.canParse(Q)?new URL(Q):null,Y=J?.protocol.replace(":","")??Q.split("://")[0];switch(Y){case"postgres":case"postgresql":return{type:"postgres",connectionString:Q};case"sqlite":case"file":if(!J?.pathname)throw Error("Invalid database URL: "+Q);return{type:"sqlite",connectionString:J.pathname};default:throw Error(`Unsupported database protocol: ${Y}. Supported protocols: postgres://, postgresql://, sqlite://, file://`)}}function Wb(){return process.env.DATABASE_URL||`file:${f10.join(process.cwd(),"data/mesh.db")}`}function u10(X){let Q=x10(X);if(Q.type==="postgres")return new b10({pool:new Gb({connectionString:Q.connectionString,max:Q.options?.maxConnections||10,ssl:process.env.DATABASE_PG_SSL==="true"?!0:!1})});let J=h10(Q.connectionString);return J=g10(J),new y10({url:J||":memory:"})}function cx0(X){let Q=x10(X);if(Q.type==="postgres")return dx0(Q);return px0(Q)}async function m10(X){if(await X.db.destroy(),X.type==="postgres"&&!X.pool.ended)await X.pool.end()}var $b=null;function Uq(){if(!$b)$b=cx0(Wb());return $b}class Hb{apiKey;constructor(X){this.apiKey=X}async sendEmail({to:X,from:Q,subject:J,html:Y}){let G=await fetch("https://api.resend.com/emails",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:JSON.stringify({to:X,from:Q,subject:J,html:Y})});if(!G.ok)throw Error(`Failed to send email: ${G.statusText}`)}}class Kb{apiKey;constructor(X){this.apiKey=X}async sendEmail({to:X,from:Q,subject:J,html:Y}){let G=await fetch("https://api.sendgrid.com/v3/mail/send",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:JSON.stringify({personalizations:[{to:[{email:X}]}],from:{email:Q},subject:J,content:[{type:"text/html",value:Y}]})});if(!G.ok){let $=await G.text();throw Error(`Failed to send email via SendGrid: ${G.statusText} - ${$}`)}}}var nx0=(X)=>{let Q=new Hb(X.config.apiKey);return async({to:J,subject:Y,html:G})=>{await Q.sendEmail({to:J,from:X.config.fromEmail,subject:Y,html:G})}},ix0=(X)=>{let Q=new Kb(X.config.apiKey);return async({to:J,subject:Y,html:G})=>{await Q.sendEmail({to:J,from:X.config.fromEmail,subject:Y,html:G})}},rx0={resend:nx0,sendgrid:ix0};function jw(X){let Q=rx0[X.provider];if(!Q)throw Error(`Unknown email provider: ${X.provider}`);return Q(X)}function Nw(X,Q){return X.find((J)=>J.id===Q)}var l10=(X,Q)=>{let J=Nw(Q,X.emailProviderId);if(!J)throw Error(`Email provider with id '${X.emailProviderId}' not found`);let Y=jw(J);return{sendMagicLink:async({email:G,url:$})=>{await Y({to:G,subject:"Magic Link",html:`<p>Click <a href="${$}">here</a> to login</p>`})}}};Ow();import{createCipheriv as ax0,createDecipheriv as ox0,randomBytes as c10}from"crypto";var n10="aes-256-gcm",zq=16,i10=16,r10=32;class Fb{key;constructor(X){if(Buffer.from(X,"base64").length===r10)this.key=Buffer.from(X,"base64");else{let Q=G4("crypto");this.key=Q.createHash("sha256").update(X).digest()}}async encrypt(X){let Q=c10(zq),J=ax0(n10,this.key,Q),Y=J.update(X,"utf8");Y=Buffer.concat([Y,J.final()]);let G=J.getAuthTag();return Buffer.concat([Q,G,Y]).toString("base64")}async decrypt(X){let Q=Buffer.from(X,"base64"),J=Q.subarray(0,zq),Y=Q.subarray(zq,zq+i10),G=Q.subarray(zq+i10),$=ox0(n10,this.key,J);$.setAuthTag(Y);let W=$.update(G);return W=Buffer.concat([W,$.final()]),W.toString("utf8")}static generateKey(){return c10(r10).toString("base64")}}x$();import{webcrypto as t10}from"crypto";var s10="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var Qu0=128,gW,OK;function Ju0(X){if(!gW||gW.length<X)gW=Buffer.allocUnsafe(X*Qu0),t10.getRandomValues(gW),OK=0;else if(OK+X>gW.length)t10.getRandomValues(gW),OK=0;OK+=X}function e10(X=21){Ju0(X|=0);let Q="";for(let J=OK-X;J<OK;J++)Q+=s10[gW[J]&63];return Q}function u$(X){return`${X}_${e10()}`}var Yu0=["connection_headers","oauth_config","configuration_scopes","metadata","tools","bindings"];class Vb{db;vault;constructor(X,Q){this.db=X;this.vault=Q}async create(X){let Q=X.id??u$("conn"),J=new Date().toISOString(),Y=await this.findById(Q);if(Y){if(Y.organization_id!==X.organization_id)throw Error("Connection ID already exists");return this.update(Q,X)}let G=await this.serializeConnection({...X,id:X.id??Q,status:"active",created_at:J,updated_at:J});await this.db.insertInto("connections").values(G).execute();let $=await this.findById(Q);if(!$)throw Error(`Failed to create connection with id: ${Q}`);return $}async findById(X,Q){let J=this.db.selectFrom("connections").selectAll().where("id","=",X);if(Q)J=J.where("organization_id","=",Q);let Y=await J.executeTakeFirst();return Y?this.deserializeConnection(Y):null}async list(X){let Q=await this.db.selectFrom("connections").selectAll().where("organization_id","=",X).execute();return Promise.all(Q.map((J)=>this.deserializeConnection(J)))}async update(X,Q){if(Object.keys(Q).length===0){let G=await this.findById(X);if(!G)throw Error("Connection not found");return G}let J=await this.serializeConnection({...Q,updated_at:new Date().toISOString()});await this.db.updateTable("connections").set(J).where("id","=",X).execute();let Y=await this.findById(X);if(!Y)throw Error("Connection not found after update");return Y}async delete(X){await this.db.deleteFrom("connections").where("id","=",X).execute()}async testConnection(X,Q){let J=await this.findById(X);if(!J)throw Error("Connection not found");let Y=Date.now();if(J.connection_type==="STDIO")return{healthy:!0,latencyMs:Date.now()-Y};if(!J.connection_url)return{healthy:!1,latencyMs:Date.now()-Y};try{let G=J.connection_headers,$=await fetch(J.connection_url,{method:"POST",headers:{"Content-Type":"application/json",...J.connection_token&&{Authorization:`Bearer ${J.connection_token}`},...G?.headers,...Q},body:JSON.stringify({jsonrpc:"2.0",method:"ping",id:1})});return{healthy:$.ok||$.status===404,latencyMs:Date.now()-Y}}catch{return{healthy:!1,latencyMs:Date.now()-Y}}}async serializeConnection(X){let Q={};for(let[J,Y]of Object.entries(X)){if(Y===void 0)continue;if(J==="connection_token"&&Y)Q[J]=await this.vault.encrypt(Y);else if(J==="configuration_state"&&Y){let G=JSON.stringify(Y);Q[J]=await this.vault.encrypt(G)}else if(J==="connection_headers"&&Y){let G=Y;if(Bq(G)&&G.envVars){let $={};for(let[W,H]of Object.entries(G.envVars))$[W]=await this.vault.encrypt(H);Q[J]=JSON.stringify({...G,envVars:$})}else Q[J]=JSON.stringify(G)}else if(Yu0.includes(J))Q[J]=Y?JSON.stringify(Y):null;else Q[J]=Y}return Q}async deserializeConnection(X){let Q=null;if(X.connection_token)try{Q=await this.vault.decrypt(X.connection_token)}catch($){console.error("Failed to decrypt connection token:",$)}let J=null;if(X.configuration_state)try{let $=await this.vault.decrypt(X.configuration_state);J=JSON.parse($)}catch($){console.error("Failed to decrypt configuration state:",$)}let Y=null;if(X.connection_headers)try{let $=JSON.parse(X.connection_headers);if(Bq($)&&$.envVars){let W={};for(let[H,K]of Object.entries($.envVars))try{W[H]=await this.vault.decrypt(K)}catch{W[H]=K}Y={...$,envVars:W}}else Y=$}catch($){console.error("Failed to parse connection_headers:",$)}let G=($)=>{if($===null)return null;if(typeof $==="string")try{return JSON.parse($)}catch{return null}return $};return{id:X.id,organization_id:X.organization_id,created_by:X.created_by,title:X.title,description:X.description,icon:X.icon,app_name:X.app_name,app_id:X.app_id,connection_type:X.connection_type,connection_url:X.connection_url,connection_token:Q,connection_headers:Y,oauth_config:G(X.oauth_config),configuration_state:J,configuration_scopes:G(X.configuration_scopes),metadata:G(X.metadata),tools:G(X.tools),bindings:G(X.bindings),status:X.status,created_at:X.created_at,updated_at:X.updated_at}}}class qb{db;constructor(X){this.db=X}async create(X,Q,J){let Y=u$("gw"),G=new Date().toISOString();if(J.isDefault)return await this.db.transaction().execute(async(W)=>{if(await W.updateTable("gateways").set({is_default:0,updated_at:G,updated_by:Q}).where("organization_id","=",X).where("is_default","=",1).execute(),await W.insertInto("gateways").values({id:Y,organization_id:X,title:J.title,description:J.description??null,tool_selection_strategy:J.toolSelectionStrategy??"passthrough",tool_selection_mode:J.toolSelectionMode??"inclusion",icon:J.icon??null,status:J.status??"active",is_default:1,created_at:G,updated_at:G,created_by:Q,updated_by:null}).execute(),J.connections.length>0)await W.insertInto("gateway_connections").values(J.connections.map((K)=>({id:u$("gwc"),gateway_id:Y,connection_id:K.connectionId,selected_tools:K.selectedTools?JSON.stringify(K.selectedTools):null,selected_resources:K.selectedResources?JSON.stringify(K.selectedResources):null,selected_prompts:K.selectedPrompts?JSON.stringify(K.selectedPrompts):null,created_at:G}))).execute();let H=await this.findByIdInternal(W,Y);if(!H)throw Error(`Failed to create gateway with id: ${Y}`);return H});if(await this.db.insertInto("gateways").values({id:Y,organization_id:X,title:J.title,description:J.description??null,tool_selection_strategy:J.toolSelectionStrategy??"passthrough",tool_selection_mode:J.toolSelectionMode??"inclusion",icon:J.icon??null,status:J.status??"active",is_default:0,created_at:G,updated_at:G,created_by:Q,updated_by:null}).execute(),J.connections.length>0)await this.db.insertInto("gateway_connections").values(J.connections.map((W)=>({id:u$("gwc"),gateway_id:Y,connection_id:W.connectionId,selected_tools:W.selectedTools?JSON.stringify(W.selectedTools):null,selected_resources:W.selectedResources?JSON.stringify(W.selectedResources):null,selected_prompts:W.selectedPrompts?JSON.stringify(W.selectedPrompts):null,created_at:G}))).execute();let $=await this.findById(Y);if(!$)throw Error(`Failed to create gateway with id: ${Y}`);return $}async findById(X){return this.findByIdInternal(this.db,X)}async findByIdInternal(X,Q){let J=await X.selectFrom("gateways").selectAll().where("id","=",Q).executeTakeFirst();if(!J)return null;let Y=await X.selectFrom("gateway_connections").selectAll().where("gateway_id","=",Q).execute();return this.deserializeGatewayWithConnections(J,Y)}async list(X){let Q=await this.db.selectFrom("gateways").selectAll().where("organization_id","=",X).execute(),J=Q.map(($)=>$.id);if(J.length===0)return[];let Y=await this.db.selectFrom("gateway_connections").selectAll().where("gateway_id","in",J).execute(),G=new Map;for(let $ of Y){let W=G.get($.gateway_id)??[];W.push($),G.set($.gateway_id,W)}return Q.map(($)=>this.deserializeGatewayWithConnections($,G.get($.id)??[]))}async listByConnectionId(X,Q){let Y=(await this.db.selectFrom("gateway_connections").select("gateway_id").where("connection_id","=",Q).execute()).map((K)=>K.gateway_id);if(Y.length===0)return[];let G=await this.db.selectFrom("gateways").selectAll().where("id","in",Y).where("organization_id","=",X).execute();if(G.length===0)return[];let $=G.map((K)=>K.id),W=await this.db.selectFrom("gateway_connections").selectAll().where("gateway_id","in",$).execute(),H=new Map;for(let K of W){let Z=H.get(K.gateway_id)??[];Z.push(K),H.set(K.gateway_id,Z)}return G.map((K)=>this.deserializeGatewayWithConnections(K,H.get(K.id)??[]))}async update(X,Q,J){let Y=new Date().toISOString(),G={updated_at:Y,updated_by:Q};if(J.title!==void 0)G.title=J.title;if(J.description!==void 0)G.description=J.description;if(J.toolSelectionStrategy!==void 0)G.tool_selection_strategy=J.toolSelectionStrategy;if(J.toolSelectionMode!==void 0)G.tool_selection_mode=J.toolSelectionMode;if(J.icon!==void 0)G.icon=J.icon;if(J.status!==void 0)G.status=J.status;if(J.isDefault===!1)G.is_default=0;if(J.isDefault===!0)G.is_default=1;if(J.isDefault===!0){let W=await this.findById(X);if(!W)throw Error(`Gateway not found: ${X}`);await this.db.transaction().execute(async(H)=>{if(await H.updateTable("gateways").set({is_default:0,updated_at:Y,updated_by:Q}).where("organization_id","=",W.organizationId).where("is_default","=",1).execute(),await H.updateTable("gateways").set(G).where("id","=",X).execute(),J.connections!==void 0){if(await H.deleteFrom("gateway_connections").where("gateway_id","=",X).execute(),J.connections.length>0)await H.insertInto("gateway_connections").values(J.connections.map((K)=>({id:u$("gwc"),gateway_id:X,connection_id:K.connectionId,selected_tools:K.selectedTools?JSON.stringify(K.selectedTools):null,selected_resources:K.selectedResources?JSON.stringify(K.selectedResources):null,selected_prompts:K.selectedPrompts?JSON.stringify(K.selectedPrompts):null,created_at:Y}))).execute()}})}else if(await this.db.updateTable("gateways").set(G).where("id","=",X).execute(),J.connections!==void 0){if(await this.db.deleteFrom("gateway_connections").where("gateway_id","=",X).execute(),J.connections.length>0)await this.db.insertInto("gateway_connections").values(J.connections.map((W)=>({id:u$("gwc"),gateway_id:X,connection_id:W.connectionId,selected_tools:W.selectedTools?JSON.stringify(W.selectedTools):null,selected_resources:W.selectedResources?JSON.stringify(W.selectedResources):null,selected_prompts:W.selectedPrompts?JSON.stringify(W.selectedPrompts):null,created_at:Y}))).execute()}let $=await this.findById(X);if(!$)throw Error("Gateway not found after update");return $}async delete(X){await this.db.deleteFrom("gateways").where("id","=",X).execute()}async getDefaultByOrgId(X){let Q=await this.db.selectFrom("gateways").selectAll().where("organization_id","=",X).where("is_default","=",1).executeTakeFirst();if(!Q)return null;let J=await this.db.selectFrom("gateway_connections").selectAll().where("gateway_id","=",Q.id).execute();return this.deserializeGatewayWithConnections(Q,J)}async getDefaultByOrgSlug(X){let Q=await this.db.selectFrom("organization").select("id").where("slug","=",X).executeTakeFirst();if(!Q)return null;return this.getDefaultByOrgId(Q.id)}async setDefault(X,Q){let J=await this.findById(X);if(!J)throw Error(`Gateway not found: ${X}`);let Y=new Date().toISOString();await this.db.transaction().execute(async($)=>{await $.updateTable("gateways").set({is_default:0,updated_at:Y,updated_by:Q}).where("organization_id","=",J.organizationId).where("is_default","=",1).execute(),await $.updateTable("gateways").set({is_default:1,updated_at:Y,updated_by:Q}).where("id","=",X).execute()});let G=await this.findById(X);if(!G)throw Error("Gateway not found after setting default");return G}deserializeGatewayWithConnections(X,Q){return{...this.deserializeGateway(X),connections:Q.map((Y)=>({connectionId:Y.connection_id,selectedTools:this.parseJson(Y.selected_tools),selectedResources:this.parseJson(Y.selected_resources),selectedPrompts:this.parseJson(Y.selected_prompts)}))}}deserializeGateway(X){return{id:X.id,organizationId:X.organization_id,title:X.title,description:X.description,toolSelectionStrategy:this.parseToolSelectionStrategy(X.tool_selection_strategy),toolSelectionMode:this.parseToolSelectionMode(X.tool_selection_mode),icon:X.icon,status:X.status,isDefault:X.is_default===1,createdAt:X.created_at,updatedAt:X.updated_at,createdBy:X.created_by,updatedBy:X.updated_by}}parseToolSelectionStrategy(X){if(X==="smart_tool_selection")return"smart_tool_selection";if(X==="code_execution")return"code_execution";return"passthrough"}parseToolSelectionMode(X){if(X==="exclusion")return"exclusion";return"inclusion"}parseJson(X){if(X===null)return null;if(typeof X==="string")try{return JSON.parse(X)}catch{return null}return X}}BP();d0();function Z64(){return[{permissions:{self:["*"]},getTools:async()=>{let{ALL_TOOLS:X}=await Promise.resolve().then(() => (ZZ0(),KZ0));return X.map((Q)=>{return{name:Q.name,inputSchema:N.toJSONSchema(Q.inputSchema,{unrepresentable:"any"}),outputSchema:Q.outputSchema?N.toJSONSchema(Q.outputSchema,{unrepresentable:"any"}):void 0,description:Q.description}})},data:p10(process.env.BASE_URL||"http://localhost:3000")},{data:d10()}]}async function FZ0(X,Q){try{let J=Uq(),Y=new Fb(process.env.ENCRYPTION_KEY||""),G=new Vb(J.db,Y),$=new qb(J.db),W=Z64(),H=[];await Promise.all(W.map(async(K)=>{let Z=null;if(K.permissions)Z=(await LZ.api.createApiKey({body:{name:`${K.data.app_name??crypto.randomUUID()}-mcp`,userId:Q,permissions:K.permissions,rateLimitEnabled:!1,metadata:{organization:{id:X},purpose:"default-org-connections"}}}))?.key;let F=await K.getTools?.()??await XZ({id:"pending",title:K.data.title,connection_type:K.data.connection_type,connection_url:K.data.connection_url,connection_token:K.data.connection_token,connection_headers:K.data.connection_headers}).catch(()=>null),V=K.data.id?`${X}_${K.data.id}`:void 0,q=await G.create({...K.data,id:V,tools:F,organization_id:X,created_by:Q,connection_token:K.data.connection_token??Z});H.push(q.id)})),await $.create(X,Q,{title:"Default Gateway",description:"Auto-created gateway for organization",toolSelectionStrategy:"passthrough",toolSelectionMode:"exclusion",status:"active",isDefault:!0,connections:H.map((K)=>({connectionId:K}))})}catch(J){console.error("Error creating default MCP connections:",J)}}var VZ0=["owner","admin"];var F64=(X)=>{return{defaultSSO:[{domain:X.domain,providerId:X.providerId,oidcConfig:{issuer:`https://login.microsoftonline.com/${X.MS_TENANT_ID}/v2.0`,pkce:!0,clientId:X.MS_CLIENT_ID,clientSecret:X.MS_CLIENT_SECRET,discoveryEndpoint:`https://login.microsoftonline.com/${X.MS_TENANT_ID}/v2.0/.well-known/openid-configuration`,authorizationEndpoint:`https://login.microsoftonline.com/${X.MS_TENANT_ID}/oauth2/v2.0/authorize`,tokenEndpoint:`https://login.microsoftonline.com/${X.MS_TENANT_ID}/oauth2/v2.0/token`,jwksEndpoint:`https://login.microsoftonline.com/${X.MS_TENANT_ID}/discovery/v2.0/keys`,userInfoEndpoint:"https://graph.microsoft.com/oidc/userinfo",tokenEndpointAuthentication:"client_secret_post",scopes:X.scopes,mapping:{id:"sub",email:"email",emailVerified:"email_verified",name:"name",image:"picture",extraFields:{emailVerified:"email_verified"}}}}]}},qZ0=(X)=>{if(X.providerId==="microsoft")return F64(X);throw Error(`Unsupported provider: ${X.providerId}`)};function V64(X){return X.toLowerCase().trim().replace(/[^a-z0-9\s_-]+/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var UZ0=["labs","hub","studio","workspace","systems","core","cloud","works"],zZ0=["capybara","guarana","deco","samba","feijoada","capoeira","carnival"];function q64(){let X=Math.floor(Math.random()*zZ0.length),Q=Math.floor(Math.random()*UZ0.length),J=zZ0[X]??"deco",Y=UZ0[Q]??"studio";return`${J}-${Y}`}var U64=Object.values(_R()).map((X)=>X.map((Q)=>Q.name)).flat(),z64={...nO,self:["*",...U64]},_P=FY(z64),B64=_P.newRole({self:["*"],...aV.statements}),L64=_P.newRole({self:["*"],...aV.statements}),D64=_P.newRole({self:["*"],...aV.statements}),BZ0=Object.values(_R()).map((X)=>X.map((Q)=>`self:${Q.name}`)).flat(),$J=P_.auth,LZ0=void 0;if($J.inviteEmailProviderId&&$J.emailProviders&&$J.emailProviders.length>0){let X=Nw($J.emailProviders,$J.inviteEmailProviderId);if(X){let Q=jw(X);LZ0=async(J)=>{let Y=J.inviter.user?.name||J.inviter.user?.email,G=`${process.env.BASE_URL||"http://localhost:3000"}/auth/accept-invitation?invitationId=${J.invitation.id}`;await Q({to:J.email,subject:`Invitation to join ${J.organization.name}`,html:`
|
|
988
|
+
</html>`},M_=(X)=>{let Q=X?.path??"/reference";return{id:"open-api",endpoints:{generateOpenAPISchema:O0("/open-api/generate-schema",{method:"GET"},async(J)=>{let Y=await W60(J.context,J.context.options);return J.json(Y)}),openAPIReference:O0(Q,{method:"GET",metadata:{isAction:!1}},async(J)=>{if(X?.disableDefaultReference)throw new h("NOT_FOUND");let Y=await W60(J.context,J.context.options);return new Response(cy0(Y,X?.theme,X?.nonce),{headers:{"Content-Type":"text/html"}})})}}};PX();k9();e8();v1();d0();var iT4=P6(async()=>{return{}}),rT4=P6({use:[O8]},async(X)=>{return{session:X.context.session}}),aT4=r6({YOU_ARE_NOT_ALLOWED_TO_CREATE_A_NEW_ORGANIZATION:"You are not allowed to create a new organization",YOU_HAVE_REACHED_THE_MAXIMUM_NUMBER_OF_ORGANIZATIONS:"You have reached the maximum number of organizations",ORGANIZATION_ALREADY_EXISTS:"Organization already exists",ORGANIZATION_SLUG_ALREADY_TAKEN:"Organization slug already taken",ORGANIZATION_NOT_FOUND:"Organization not found",USER_IS_NOT_A_MEMBER_OF_THE_ORGANIZATION:"User is not a member of the organization",YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_ORGANIZATION:"You are not allowed to update this organization",YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_ORGANIZATION:"You are not allowed to delete this organization",NO_ACTIVE_ORGANIZATION:"No active organization",USER_IS_ALREADY_A_MEMBER_OF_THIS_ORGANIZATION:"User is already a member of this organization",MEMBER_NOT_FOUND:"Member not found",ROLE_NOT_FOUND:"Role not found",YOU_ARE_NOT_ALLOWED_TO_CREATE_A_NEW_TEAM:"You are not allowed to create a new team",TEAM_ALREADY_EXISTS:"Team already exists",TEAM_NOT_FOUND:"Team not found",YOU_CANNOT_LEAVE_THE_ORGANIZATION_AS_THE_ONLY_OWNER:"You cannot leave the organization as the only owner",YOU_CANNOT_LEAVE_THE_ORGANIZATION_WITHOUT_AN_OWNER:"You cannot leave the organization without an owner",YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_MEMBER:"You are not allowed to delete this member",YOU_ARE_NOT_ALLOWED_TO_INVITE_USERS_TO_THIS_ORGANIZATION:"You are not allowed to invite users to this organization",USER_IS_ALREADY_INVITED_TO_THIS_ORGANIZATION:"User is already invited to this organization",INVITATION_NOT_FOUND:"Invitation not found",YOU_ARE_NOT_THE_RECIPIENT_OF_THE_INVITATION:"You are not the recipient of the invitation",EMAIL_VERIFICATION_REQUIRED_BEFORE_ACCEPTING_OR_REJECTING_INVITATION:"Email verification required before accepting or rejecting invitation",YOU_ARE_NOT_ALLOWED_TO_CANCEL_THIS_INVITATION:"You are not allowed to cancel this invitation",INVITER_IS_NO_LONGER_A_MEMBER_OF_THE_ORGANIZATION:"Inviter is no longer a member of the organization",YOU_ARE_NOT_ALLOWED_TO_INVITE_USER_WITH_THIS_ROLE:"You are not allowed to invite a user with this role",FAILED_TO_RETRIEVE_INVITATION:"Failed to retrieve invitation",YOU_HAVE_REACHED_THE_MAXIMUM_NUMBER_OF_TEAMS:"You have reached the maximum number of teams",UNABLE_TO_REMOVE_LAST_TEAM:"Unable to remove last team",YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_MEMBER:"You are not allowed to update this member",ORGANIZATION_MEMBERSHIP_LIMIT_REACHED:"Organization membership limit reached",YOU_ARE_NOT_ALLOWED_TO_CREATE_TEAMS_IN_THIS_ORGANIZATION:"You are not allowed to create teams in this organization",YOU_ARE_NOT_ALLOWED_TO_DELETE_TEAMS_IN_THIS_ORGANIZATION:"You are not allowed to delete teams in this organization",YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_TEAM:"You are not allowed to update this team",YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_TEAM:"You are not allowed to delete this team",INVITATION_LIMIT_REACHED:"Invitation limit reached",TEAM_MEMBER_LIMIT_REACHED:"Team member limit reached",USER_IS_NOT_A_MEMBER_OF_THE_TEAM:"User is not a member of the team",YOU_CAN_NOT_ACCESS_THE_MEMBERS_OF_THIS_TEAM:"You are not allowed to list the members of this team",YOU_DO_NOT_HAVE_AN_ACTIVE_TEAM:"You do not have an active team",YOU_ARE_NOT_ALLOWED_TO_CREATE_A_NEW_TEAM_MEMBER:"You are not allowed to create a new member",YOU_ARE_NOT_ALLOWED_TO_REMOVE_A_TEAM_MEMBER:"You are not allowed to remove a team member",YOU_ARE_NOT_ALLOWED_TO_ACCESS_THIS_ORGANIZATION:"You are not allowed to access this organization as an owner",YOU_ARE_NOT_A_MEMBER_OF_THIS_ORGANIZATION:"You are not a member of this organization",MISSING_AC_INSTANCE:"Dynamic Access Control requires a pre-defined ac instance on the server auth plugin. Read server logs for more information",YOU_MUST_BE_IN_AN_ORGANIZATION_TO_CREATE_A_ROLE:"You must be in an organization to create a role",YOU_ARE_NOT_ALLOWED_TO_CREATE_A_ROLE:"You are not allowed to create a role",YOU_ARE_NOT_ALLOWED_TO_UPDATE_A_ROLE:"You are not allowed to update a role",YOU_ARE_NOT_ALLOWED_TO_DELETE_A_ROLE:"You are not allowed to delete a role",YOU_ARE_NOT_ALLOWED_TO_READ_A_ROLE:"You are not allowed to read a role",YOU_ARE_NOT_ALLOWED_TO_LIST_A_ROLE:"You are not allowed to list a role",YOU_ARE_NOT_ALLOWED_TO_GET_A_ROLE:"You are not allowed to get a role",TOO_MANY_ROLES:"This organization has too many roles",INVALID_RESOURCE:"The provided permission includes an invalid resource",ROLE_NAME_IS_ALREADY_TAKEN:"That role name is already taken",CANNOT_DELETE_A_PRE_DEFINED_ROLE:"Cannot delete a pre-defined role"});var oT4=Number.POSITIVE_INFINITY;var K60=w(),iy0=o0(["pending","accepted","rejected","canceled"]).default("pending"),sT4=b({id:w().default(Z1),name:w(),slug:w(),logo:w().nullish().optional(),metadata:v0(w(),I6()).or(w().transform((X)=>JSON.parse(X))).optional(),createdAt:E4()}),tT4=b({id:w().default(Z1),organizationId:w(),userId:j4.string(),role:K60,createdAt:E4().default(()=>new Date)}),eT4=b({id:w().default(Z1),organizationId:w(),email:w(),role:K60,status:iy0,teamId:w().nullish(),inviterId:w(),expiresAt:E4(),createdAt:E4().default(()=>new Date)}),XA4=b({id:w().default(Z1),name:w().min(1),organizationId:w(),createdAt:E4(),updatedAt:E4().optional()}),QA4=b({id:w().default(Z1),teamId:w(),userId:w(),createdAt:E4().default(()=>new Date)}),JA4=b({id:w().default(Z1),organizationId:w(),role:w(),permission:v0(w(),Z0(w())),createdAt:E4().default(()=>new Date),updatedAt:E4().optional()}),H60=["admin","member","owner"],YA4=I4([o0(H60),Z0(o0(H60))]);M8();e8();v1();var UA4=r6({INVALID_PHONE_NUMBER:"Invalid phone number",PHONE_NUMBER_EXIST:"Phone number already exists",PHONE_NUMBER_NOT_EXIST:"phone number isn't registered",INVALID_PHONE_NUMBER_OR_PASSWORD:"Invalid phone number or password",UNEXPECTED_ERROR:"Unexpected error",OTP_NOT_FOUND:"OTP not found",OTP_EXPIRED:"OTP expired",INVALID_OTP:"Invalid OTP",PHONE_NUMBER_NOT_VERIFIED:"Phone number not verified",PHONE_NUMBER_CANNOT_BE_UPDATED:"Phone number cannot be updated",SEND_OTP_NOT_IMPLEMENTED:"sendOTP not implemented",TOO_MANY_ATTEMPTS:"Too many attempts"});M8();TX();e8();v1();A1();Z8();var ry0=r6({OTP_NOT_ENABLED:"OTP not enabled",OTP_HAS_EXPIRED:"OTP has expired",TOTP_NOT_ENABLED:"TOTP not enabled",TWO_FACTOR_NOT_ENABLED:"Two factor isn't enabled",BACKUP_CODES_NOT_ENABLED:"Backup codes aren't enabled",INVALID_BACKUP_CODE:"Invalid backup code",INVALID_CODE:"Invalid code",TOO_MANY_ATTEMPTS_REQUEST_NEW_CODE:"Too many attempts. Please request a new code.",INVALID_TWO_FACTOR_COOKIE:"Invalid two factor cookie"});e8();v1();var ay0=r6({INVALID_USERNAME_OR_PASSWORD:"Invalid username or password",EMAIL_NOT_VERIFIED:"Email not verified",UNEXPECTED_ERROR:"Unexpected error",USERNAME_IS_ALREADY_TAKEN:"Username is already taken. Please try another.",USERNAME_TOO_SHORT:"Username is too short",USERNAME_TOO_LONG:"Username is too long",INVALID_USERNAME:"Username is invalid",INVALID_DISPLAY_USERNAME:"Display username is invalid"});var FK={enabled:!0,batchSize:250,flushIntervalMs:300,maxQueueSize:1e4,redactor:"regex"};import{existsSync as Z60,readFileSync as F60}from"fs";var Ww={emailAndPassword:{enabled:!0}},V60=process.env.CONFIG_PATH||"./config.json",q60=process.env.AUTH_CONFIG_PATH||"./auth-config.json";function oy0(){if(Z60(V60))try{let X=F60(V60,"utf-8"),Q=JSON.parse(X);return{auth:Ww,monitoring:FK,...Q}}catch{return{auth:Ww,monitoring:FK}}if(Z60(q60))try{let X=F60(q60,"utf-8");return{auth:JSON.parse(X),monitoring:FK}}catch{return{auth:Ww,monitoring:FK}}return{auth:Ww,monitoring:FK}}var P_=oy0();import{existsSync as mx0,mkdirSync as lx0}from"fs";import{Kysely as _10,PostgresDialect as b10,sql as k10}from"kysely";import{BunWorkerDialect as y10}from"kysely-bun-worker";import*as f10 from"path";var uJ=WJ(Xb(),1),q24=uJ.default.Client,Gb=uJ.default.Pool,U24=uJ.default.Connection,z24=uJ.default.types,B24=uJ.default.Query,L24=uJ.default.DatabaseError,D24=uJ.default.escapeIdentifier,j24=uJ.default.escapeLiteral,N24=uJ.default.Result,O24=uJ.default.TypeOverrides,w24=uJ.default.defaults;function dx0(X){let Q=new Gb({connectionString:X.connectionString,max:X.options?.maxConnections||10,ssl:process.env.DATABASE_PG_SSL==="true"?!0:!1}),J=new b10({pool:Q});return{type:"postgres",db:new _10({dialect:J}),pool:Q}}function h10(X){if(X===":memory:")return":memory:";if(X.includes("://"))return new URL(X).pathname;return X}function g10(X){if(X!==":memory:"&&X!=="/"&&X){let Q=X.substring(0,X.lastIndexOf("/"));if(Q&&Q!=="/"&&!mx0(Q))try{lx0(Q,{recursive:!0})}catch{return console.warn(`Failed to create directory ${Q}, using in-memory database`),":memory:"}}return X}function px0(X){let Q=h10(X.connectionString);Q=g10(Q);let J=new y10({url:Q||":memory:"}),Y=new _10({dialect:J});if(Q!==":memory:"&&X.options?.enableWAL!==!1)k10`PRAGMA journal_mode = WAL;`.execute(Y).catch(()=>{});if(Q!==":memory:"){let G=X.options?.busyTimeout||5000;k10`PRAGMA busy_timeout = ${G};`.execute(Y).catch(()=>{})}return{type:"sqlite",db:Y}}function x10(X){let Q=X||"file:./data/mesh.db";if(Q===":memory:")return{type:"sqlite",connectionString:":memory:"};Q=Q.startsWith("/")?`file://${Q}`:Q;let J=URL.canParse(Q)?new URL(Q):null,Y=J?.protocol.replace(":","")??Q.split("://")[0];switch(Y){case"postgres":case"postgresql":return{type:"postgres",connectionString:Q};case"sqlite":case"file":if(!J?.pathname)throw Error("Invalid database URL: "+Q);return{type:"sqlite",connectionString:J.pathname};default:throw Error(`Unsupported database protocol: ${Y}. Supported protocols: postgres://, postgresql://, sqlite://, file://`)}}function Wb(){return process.env.DATABASE_URL||`file:${f10.join(process.cwd(),"data/mesh.db")}`}function u10(X){let Q=x10(X);if(Q.type==="postgres")return new b10({pool:new Gb({connectionString:Q.connectionString,max:Q.options?.maxConnections||10,ssl:process.env.DATABASE_PG_SSL==="true"?!0:!1})});let J=h10(Q.connectionString);return J=g10(J),new y10({url:J||":memory:"})}function cx0(X){let Q=x10(X);if(Q.type==="postgres")return dx0(Q);return px0(Q)}async function m10(X){if(await X.db.destroy(),X.type==="postgres"&&!X.pool.ended)await X.pool.end()}var $b=null;function Uq(){if(!$b)$b=cx0(Wb());return $b}class Hb{apiKey;constructor(X){this.apiKey=X}async sendEmail({to:X,from:Q,subject:J,html:Y}){let G=await fetch("https://api.resend.com/emails",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:JSON.stringify({to:X,from:Q,subject:J,html:Y})});if(!G.ok)throw Error(`Failed to send email: ${G.statusText}`)}}class Kb{apiKey;constructor(X){this.apiKey=X}async sendEmail({to:X,from:Q,subject:J,html:Y}){let G=await fetch("https://api.sendgrid.com/v3/mail/send",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:JSON.stringify({personalizations:[{to:[{email:X}]}],from:{email:Q},subject:J,content:[{type:"text/html",value:Y}]})});if(!G.ok){let $=await G.text();throw Error(`Failed to send email via SendGrid: ${G.statusText} - ${$}`)}}}var nx0=(X)=>{let Q=new Hb(X.config.apiKey);return async({to:J,subject:Y,html:G})=>{await Q.sendEmail({to:J,from:X.config.fromEmail,subject:Y,html:G})}},ix0=(X)=>{let Q=new Kb(X.config.apiKey);return async({to:J,subject:Y,html:G})=>{await Q.sendEmail({to:J,from:X.config.fromEmail,subject:Y,html:G})}},rx0={resend:nx0,sendgrid:ix0};function jw(X){let Q=rx0[X.provider];if(!Q)throw Error(`Unknown email provider: ${X.provider}`);return Q(X)}function Nw(X,Q){return X.find((J)=>J.id===Q)}var l10=(X,Q)=>{let J=Nw(Q,X.emailProviderId);if(!J)throw Error(`Email provider with id '${X.emailProviderId}' not found`);let Y=jw(J);return{sendMagicLink:async({email:G,url:$})=>{await Y({to:G,subject:"Magic Link",html:`<p>Click <a href="${$}">here</a> to login</p>`})}}};Ow();import{createCipheriv as ax0,createDecipheriv as ox0,randomBytes as c10}from"crypto";var n10="aes-256-gcm",zq=16,i10=16,r10=32;class Fb{key;constructor(X){if(Buffer.from(X,"base64").length===r10)this.key=Buffer.from(X,"base64");else{let Q=G4("crypto");this.key=Q.createHash("sha256").update(X).digest()}}async encrypt(X){let Q=c10(zq),J=ax0(n10,this.key,Q),Y=J.update(X,"utf8");Y=Buffer.concat([Y,J.final()]);let G=J.getAuthTag();return Buffer.concat([Q,G,Y]).toString("base64")}async decrypt(X){let Q=Buffer.from(X,"base64"),J=Q.subarray(0,zq),Y=Q.subarray(zq,zq+i10),G=Q.subarray(zq+i10),$=ox0(n10,this.key,J);$.setAuthTag(Y);let W=$.update(G);return W=Buffer.concat([W,$.final()]),W.toString("utf8")}static generateKey(){return c10(r10).toString("base64")}}x$();import{webcrypto as t10}from"crypto";var s10="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var Qu0=128,gW,OK;function Ju0(X){if(!gW||gW.length<X)gW=Buffer.allocUnsafe(X*Qu0),t10.getRandomValues(gW),OK=0;else if(OK+X>gW.length)t10.getRandomValues(gW),OK=0;OK+=X}function e10(X=21){Ju0(X|=0);let Q="";for(let J=OK-X;J<OK;J++)Q+=s10[gW[J]&63];return Q}function u$(X){return`${X}_${e10()}`}var Yu0=["connection_headers","oauth_config","configuration_scopes","metadata","tools","bindings"];class Vb{db;vault;constructor(X,Q){this.db=X;this.vault=Q}async create(X){let Q=X.id??u$("conn"),J=new Date().toISOString(),Y=await this.findById(Q);if(Y){if(Y.organization_id!==X.organization_id)throw Error("Connection ID already exists");return this.update(Q,X)}let G=await this.serializeConnection({...X,id:X.id??Q,status:"active",created_at:J,updated_at:J});await this.db.insertInto("connections").values(G).execute();let $=await this.findById(Q);if(!$)throw Error(`Failed to create connection with id: ${Q}`);return $}async findById(X,Q){let J=this.db.selectFrom("connections").selectAll().where("id","=",X);if(Q)J=J.where("organization_id","=",Q);let Y=await J.executeTakeFirst();return Y?this.deserializeConnection(Y):null}async list(X){let Q=await this.db.selectFrom("connections").selectAll().where("organization_id","=",X).execute();return Promise.all(Q.map((J)=>this.deserializeConnection(J)))}async update(X,Q){if(Object.keys(Q).length===0){let G=await this.findById(X);if(!G)throw Error("Connection not found");return G}let J=await this.serializeConnection({...Q,updated_at:new Date().toISOString()});await this.db.updateTable("connections").set(J).where("id","=",X).execute();let Y=await this.findById(X);if(!Y)throw Error("Connection not found after update");return Y}async delete(X){await this.db.deleteFrom("connections").where("id","=",X).execute()}async testConnection(X,Q){let J=await this.findById(X);if(!J)throw Error("Connection not found");let Y=Date.now();if(J.connection_type==="STDIO")return{healthy:!0,latencyMs:Date.now()-Y};if(!J.connection_url)return{healthy:!1,latencyMs:Date.now()-Y};try{let G=J.connection_headers,$=await fetch(J.connection_url,{method:"POST",headers:{"Content-Type":"application/json",...J.connection_token&&{Authorization:`Bearer ${J.connection_token}`},...G?.headers,...Q},body:JSON.stringify({jsonrpc:"2.0",method:"ping",id:1})});return{healthy:$.ok||$.status===404,latencyMs:Date.now()-Y}}catch{return{healthy:!1,latencyMs:Date.now()-Y}}}async serializeConnection(X){let Q={};for(let[J,Y]of Object.entries(X)){if(Y===void 0)continue;if(J==="connection_token"&&Y)Q[J]=await this.vault.encrypt(Y);else if(J==="configuration_state"&&Y){let G=JSON.stringify(Y);Q[J]=await this.vault.encrypt(G)}else if(J==="connection_headers"&&Y){let G=Y;if(Bq(G)&&G.envVars){let $={};for(let[W,H]of Object.entries(G.envVars))$[W]=await this.vault.encrypt(H);Q[J]=JSON.stringify({...G,envVars:$})}else Q[J]=JSON.stringify(G)}else if(Yu0.includes(J))Q[J]=Y?JSON.stringify(Y):null;else Q[J]=Y}return Q}async deserializeConnection(X){let Q=null;if(X.connection_token)try{Q=await this.vault.decrypt(X.connection_token)}catch($){console.error("Failed to decrypt connection token:",$)}let J=null;if(X.configuration_state)try{let $=await this.vault.decrypt(X.configuration_state);J=JSON.parse($)}catch($){console.error("Failed to decrypt configuration state:",$)}let Y=null;if(X.connection_headers)try{let $=JSON.parse(X.connection_headers);if(Bq($)&&$.envVars){let W={};for(let[H,K]of Object.entries($.envVars))try{W[H]=await this.vault.decrypt(K)}catch{W[H]=K}Y={...$,envVars:W}}else Y=$}catch($){console.error("Failed to parse connection_headers:",$)}let G=($)=>{if($===null)return null;if(typeof $==="string")try{return JSON.parse($)}catch{return null}return $};return{id:X.id,organization_id:X.organization_id,created_by:X.created_by,title:X.title,description:X.description,icon:X.icon,app_name:X.app_name,app_id:X.app_id,connection_type:X.connection_type,connection_url:X.connection_url,connection_token:Q,connection_headers:Y,oauth_config:G(X.oauth_config),configuration_state:J,configuration_scopes:G(X.configuration_scopes),metadata:G(X.metadata),tools:G(X.tools),bindings:G(X.bindings),status:X.status,created_at:X.created_at,updated_at:X.updated_at}}}class qb{db;constructor(X){this.db=X}async create(X,Q,J){let Y=u$("gw"),G=new Date().toISOString();if(J.isDefault)return await this.db.transaction().execute(async(W)=>{if(await W.updateTable("gateways").set({is_default:0,updated_at:G,updated_by:Q}).where("organization_id","=",X).where("is_default","=",1).execute(),await W.insertInto("gateways").values({id:Y,organization_id:X,title:J.title,description:J.description??null,tool_selection_strategy:J.toolSelectionStrategy??"passthrough",tool_selection_mode:J.toolSelectionMode??"inclusion",icon:J.icon??null,status:J.status??"active",is_default:1,created_at:G,updated_at:G,created_by:Q,updated_by:null}).execute(),J.connections.length>0)await W.insertInto("gateway_connections").values(J.connections.map((K)=>({id:u$("gwc"),gateway_id:Y,connection_id:K.connectionId,selected_tools:K.selectedTools?JSON.stringify(K.selectedTools):null,selected_resources:K.selectedResources?JSON.stringify(K.selectedResources):null,selected_prompts:K.selectedPrompts?JSON.stringify(K.selectedPrompts):null,created_at:G}))).execute();let H=await this.findByIdInternal(W,Y);if(!H)throw Error(`Failed to create gateway with id: ${Y}`);return H});if(await this.db.insertInto("gateways").values({id:Y,organization_id:X,title:J.title,description:J.description??null,tool_selection_strategy:J.toolSelectionStrategy??"passthrough",tool_selection_mode:J.toolSelectionMode??"inclusion",icon:J.icon??null,status:J.status??"active",is_default:0,created_at:G,updated_at:G,created_by:Q,updated_by:null}).execute(),J.connections.length>0)await this.db.insertInto("gateway_connections").values(J.connections.map((W)=>({id:u$("gwc"),gateway_id:Y,connection_id:W.connectionId,selected_tools:W.selectedTools?JSON.stringify(W.selectedTools):null,selected_resources:W.selectedResources?JSON.stringify(W.selectedResources):null,selected_prompts:W.selectedPrompts?JSON.stringify(W.selectedPrompts):null,created_at:G}))).execute();let $=await this.findById(Y);if(!$)throw Error(`Failed to create gateway with id: ${Y}`);return $}async findById(X){return this.findByIdInternal(this.db,X)}async findByIdInternal(X,Q){let J=await X.selectFrom("gateways").selectAll().where("id","=",Q).executeTakeFirst();if(!J)return null;let Y=await X.selectFrom("gateway_connections").selectAll().where("gateway_id","=",Q).execute();return this.deserializeGatewayWithConnections(J,Y)}async list(X){let Q=await this.db.selectFrom("gateways").selectAll().where("organization_id","=",X).execute(),J=Q.map(($)=>$.id);if(J.length===0)return[];let Y=await this.db.selectFrom("gateway_connections").selectAll().where("gateway_id","in",J).execute(),G=new Map;for(let $ of Y){let W=G.get($.gateway_id)??[];W.push($),G.set($.gateway_id,W)}return Q.map(($)=>this.deserializeGatewayWithConnections($,G.get($.id)??[]))}async listByConnectionId(X,Q){let Y=(await this.db.selectFrom("gateway_connections").select("gateway_id").where("connection_id","=",Q).execute()).map((K)=>K.gateway_id);if(Y.length===0)return[];let G=await this.db.selectFrom("gateways").selectAll().where("id","in",Y).where("organization_id","=",X).execute();if(G.length===0)return[];let $=G.map((K)=>K.id),W=await this.db.selectFrom("gateway_connections").selectAll().where("gateway_id","in",$).execute(),H=new Map;for(let K of W){let Z=H.get(K.gateway_id)??[];Z.push(K),H.set(K.gateway_id,Z)}return G.map((K)=>this.deserializeGatewayWithConnections(K,H.get(K.id)??[]))}async update(X,Q,J){let Y=new Date().toISOString(),G={updated_at:Y,updated_by:Q};if(J.title!==void 0)G.title=J.title;if(J.description!==void 0)G.description=J.description;if(J.toolSelectionStrategy!==void 0)G.tool_selection_strategy=J.toolSelectionStrategy;if(J.toolSelectionMode!==void 0)G.tool_selection_mode=J.toolSelectionMode;if(J.icon!==void 0)G.icon=J.icon;if(J.status!==void 0)G.status=J.status;if(J.isDefault===!1)G.is_default=0;if(J.isDefault===!0)G.is_default=1;if(J.isDefault===!0){let W=await this.findById(X);if(!W)throw Error(`Gateway not found: ${X}`);await this.db.transaction().execute(async(H)=>{if(await H.updateTable("gateways").set({is_default:0,updated_at:Y,updated_by:Q}).where("organization_id","=",W.organizationId).where("is_default","=",1).execute(),await H.updateTable("gateways").set(G).where("id","=",X).execute(),J.connections!==void 0){if(await H.deleteFrom("gateway_connections").where("gateway_id","=",X).execute(),J.connections.length>0)await H.insertInto("gateway_connections").values(J.connections.map((K)=>({id:u$("gwc"),gateway_id:X,connection_id:K.connectionId,selected_tools:K.selectedTools?JSON.stringify(K.selectedTools):null,selected_resources:K.selectedResources?JSON.stringify(K.selectedResources):null,selected_prompts:K.selectedPrompts?JSON.stringify(K.selectedPrompts):null,created_at:Y}))).execute()}})}else if(await this.db.updateTable("gateways").set(G).where("id","=",X).execute(),J.connections!==void 0){if(await this.db.deleteFrom("gateway_connections").where("gateway_id","=",X).execute(),J.connections.length>0)await this.db.insertInto("gateway_connections").values(J.connections.map((W)=>({id:u$("gwc"),gateway_id:X,connection_id:W.connectionId,selected_tools:W.selectedTools?JSON.stringify(W.selectedTools):null,selected_resources:W.selectedResources?JSON.stringify(W.selectedResources):null,selected_prompts:W.selectedPrompts?JSON.stringify(W.selectedPrompts):null,created_at:Y}))).execute()}let $=await this.findById(X);if(!$)throw Error("Gateway not found after update");return $}async delete(X){await this.db.deleteFrom("gateways").where("id","=",X).execute()}async getDefaultByOrgId(X){let Q=await this.db.selectFrom("gateways").selectAll().where("organization_id","=",X).where("is_default","=",1).executeTakeFirst();if(!Q)return null;let J=await this.db.selectFrom("gateway_connections").selectAll().where("gateway_id","=",Q.id).execute();return this.deserializeGatewayWithConnections(Q,J)}async getDefaultByOrgSlug(X){let Q=await this.db.selectFrom("organization").select("id").where("slug","=",X).executeTakeFirst();if(!Q)return null;return this.getDefaultByOrgId(Q.id)}async setDefault(X,Q){let J=await this.findById(X);if(!J)throw Error(`Gateway not found: ${X}`);let Y=new Date().toISOString();await this.db.transaction().execute(async($)=>{await $.updateTable("gateways").set({is_default:0,updated_at:Y,updated_by:Q}).where("organization_id","=",J.organizationId).where("is_default","=",1).execute(),await $.updateTable("gateways").set({is_default:1,updated_at:Y,updated_by:Q}).where("id","=",X).execute()});let G=await this.findById(X);if(!G)throw Error("Gateway not found after setting default");return G}deserializeGatewayWithConnections(X,Q){return{...this.deserializeGateway(X),connections:Q.map((Y)=>({connectionId:Y.connection_id,selectedTools:this.parseJson(Y.selected_tools),selectedResources:this.parseJson(Y.selected_resources),selectedPrompts:this.parseJson(Y.selected_prompts)}))}}deserializeGateway(X){return{id:X.id,organizationId:X.organization_id,title:X.title,description:X.description,toolSelectionStrategy:this.parseToolSelectionStrategy(X.tool_selection_strategy),toolSelectionMode:this.parseToolSelectionMode(X.tool_selection_mode),icon:X.icon,status:X.status,isDefault:X.is_default===1,createdAt:X.created_at,updatedAt:X.updated_at,createdBy:X.created_by,updatedBy:X.updated_by}}parseToolSelectionStrategy(X){if(X==="smart_tool_selection")return"smart_tool_selection";if(X==="code_execution")return"code_execution";return"passthrough"}parseToolSelectionMode(X){if(X==="exclusion")return"exclusion";return"inclusion"}parseJson(X){if(X===null)return null;if(typeof X==="string")try{return JSON.parse(X)}catch{return null}return X}}BP();d0();function Z64(){return[{permissions:{self:["*"]},getTools:async()=>{let{ALL_TOOLS:X}=await Promise.resolve().then(() => (ZZ0(),KZ0));return X.map((Q)=>{return{name:Q.name,inputSchema:N.toJSONSchema(Q.inputSchema,{unrepresentable:"any"}),outputSchema:Q.outputSchema?N.toJSONSchema(Q.outputSchema,{unrepresentable:"any"}):void 0,description:Q.description}})},data:p10(process.env.BASE_URL||"http://localhost:3000")},{data:d10()}]}async function FZ0(X,Q){try{let J=Uq(),Y=new Fb(process.env.ENCRYPTION_KEY||""),G=new Vb(J.db,Y),$=new qb(J.db),W=Z64(),H=[];await Promise.all(W.map(async(K)=>{let Z=null;if(K.permissions)Z=(await LZ.api.createApiKey({body:{name:`${K.data.app_name??crypto.randomUUID()}-mcp`,userId:Q,permissions:K.permissions,rateLimitEnabled:!1,metadata:{organization:{id:X},purpose:"default-org-connections"}}}))?.key;let F=await K.getTools?.()??await XZ({id:"pending",title:K.data.title,connection_type:K.data.connection_type,connection_url:K.data.connection_url,connection_token:K.data.connection_token,connection_headers:K.data.connection_headers}).catch(()=>null),V=K.data.id?`${X}_${K.data.id}`:void 0,q=await G.create({...K.data,id:V,tools:F,organization_id:X,created_by:Q,connection_token:K.data.connection_token??Z});H.push(q.id)})),await $.create(X,Q,{title:"Default Hub",description:"Auto-created Hub for organization",toolSelectionStrategy:"passthrough",toolSelectionMode:"exclusion",status:"active",isDefault:!0,connections:H.map((K)=>({connectionId:K}))})}catch(J){console.error("Error creating default MCP connections:",J)}}var VZ0=["owner","admin"];var F64=(X)=>{return{defaultSSO:[{domain:X.domain,providerId:X.providerId,oidcConfig:{issuer:`https://login.microsoftonline.com/${X.MS_TENANT_ID}/v2.0`,pkce:!0,clientId:X.MS_CLIENT_ID,clientSecret:X.MS_CLIENT_SECRET,discoveryEndpoint:`https://login.microsoftonline.com/${X.MS_TENANT_ID}/v2.0/.well-known/openid-configuration`,authorizationEndpoint:`https://login.microsoftonline.com/${X.MS_TENANT_ID}/oauth2/v2.0/authorize`,tokenEndpoint:`https://login.microsoftonline.com/${X.MS_TENANT_ID}/oauth2/v2.0/token`,jwksEndpoint:`https://login.microsoftonline.com/${X.MS_TENANT_ID}/discovery/v2.0/keys`,userInfoEndpoint:"https://graph.microsoft.com/oidc/userinfo",tokenEndpointAuthentication:"client_secret_post",scopes:X.scopes,mapping:{id:"sub",email:"email",emailVerified:"email_verified",name:"name",image:"picture",extraFields:{emailVerified:"email_verified"}}}}]}},qZ0=(X)=>{if(X.providerId==="microsoft")return F64(X);throw Error(`Unsupported provider: ${X.providerId}`)};function V64(X){return X.toLowerCase().trim().replace(/[^a-z0-9\s_-]+/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var UZ0=["labs","hub","studio","workspace","systems","core","cloud","works"],zZ0=["capybara","guarana","deco","samba","feijoada","capoeira","carnival"];function q64(){let X=Math.floor(Math.random()*zZ0.length),Q=Math.floor(Math.random()*UZ0.length),J=zZ0[X]??"deco",Y=UZ0[Q]??"studio";return`${J}-${Y}`}var U64=Object.values(_R()).map((X)=>X.map((Q)=>Q.name)).flat(),z64={...nO,self:["*",...U64]},_P=FY(z64),B64=_P.newRole({self:["*"],...aV.statements}),L64=_P.newRole({self:["*"],...aV.statements}),D64=_P.newRole({self:["*"],...aV.statements}),BZ0=Object.values(_R()).map((X)=>X.map((Q)=>`self:${Q.name}`)).flat(),$J=P_.auth,LZ0=void 0;if($J.inviteEmailProviderId&&$J.emailProviders&&$J.emailProviders.length>0){let X=Nw($J.emailProviders,$J.inviteEmailProviderId);if(X){let Q=jw(X);LZ0=async(J)=>{let Y=J.inviter.user?.name||J.inviter.user?.email,G=`${process.env.BASE_URL||"http://localhost:3000"}/auth/accept-invitation?invitationId=${J.invitation.id}`;await Q({to:J.email,subject:`Invitation to join ${J.organization.name}`,html:`
|
|
989
989
|
<h2>You've been invited!</h2>
|
|
990
990
|
<p>${Y} has invited you to join <strong>${J.organization.name}</strong>.</p>
|
|
991
991
|
<p><a href="${G}">Click here to accept the invitation</a></p>
|