@decocms/mesh 2.59.5 → 2.59.7
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-BmzagJTS.js → AlertCircle-BFXBDrUr.js} +1 -1
- package/dist/client/assets/{ArrowLeft-BkK50n5W.js → ArrowLeft-CDtoEGeL.js} +1 -1
- package/dist/client/assets/{ArrowUp-BjUPYtOi.js → ArrowUp-BDaeP-ZF.js} +1 -1
- package/dist/client/assets/{Calendar-DZcEp1o3.js → Calendar-Do1_EcNl.js} +1 -1
- package/dist/client/assets/{Check-CeorNg_Q.js → Check-C7bGyGOC.js} +1 -1
- package/dist/client/assets/{ChevronDown-DHgzfDOn.js → ChevronDown-DY2hRH3P.js} +1 -1
- package/dist/client/assets/{Code01-C3uTkWw7.js → Code01-Bti_O9RL.js} +1 -1
- package/dist/client/assets/{Copy01-D2UqUo7F.js → Copy01-Cql6iNiT.js} +1 -1
- package/dist/client/assets/{DotsHorizontal-C2Cp4F2y.js → DotsHorizontal-Bn70vF_C.js} +1 -1
- package/dist/client/assets/{DotsVertical-CbPPn03K.js → DotsVertical-55vBqpF9.js} +1 -1
- package/dist/client/assets/{Download01-BrsFevks.js → Download01-CY_txTIU.js} +1 -1
- package/dist/client/assets/{Edit01-D4kKualc.js → Edit01-BcXXA0Bn.js} +1 -1
- package/dist/client/assets/{File02-CJChiHT7.js → File02-CZ_CP680.js} +1 -1
- package/dist/client/assets/{File06-D3YhRSWf.js → File06-OiAbO58I.js} +1 -1
- package/dist/client/assets/{FilterLines-Dm0iR9nQ.js → FilterLines-8ygYuAAi.js} +1 -1
- package/dist/client/assets/{Grid01-C0Yt3TrW.js → Grid01-Bdrpv4xX.js} +1 -1
- package/dist/client/assets/{Home02-BXCJMmnc.js → Home02-BeNorB_C.js} +1 -1
- package/dist/client/assets/{Image01-BxGEkI20.js → Image01-DvLyxsOA.js} +1 -1
- package/dist/client/assets/{Inbox01-pqRVnVhd.js → Inbox01-BPkfViyI.js} +1 -1
- package/dist/client/assets/{InfoCircle-CItUremO.js → InfoCircle-BJ2AMXf3.js} +1 -1
- package/dist/client/assets/{Key01-CG2VBx47.js → Key01-D8HCSb8P.js} +1 -1
- package/dist/client/assets/{LinkExternal01-CsuKk35n.js → LinkExternal01-BrLuchvz.js} +1 -1
- package/dist/client/assets/{List-Tf6_FYvd.js → List-bC7xiZ2s.js} +1 -1
- package/dist/client/assets/{Loading01-D7Nk5rBn.js → Loading01-BiNUjLDw.js} +1 -1
- package/dist/client/assets/{Lock01-DV6G4OAL.js → Lock01-Bg5yU8Wj.js} +1 -1
- package/dist/client/assets/{Pin01-EjlLL7Hj.js → Pin01-iTXtWrRE.js} +1 -1
- package/dist/client/assets/{Play-CaQCPrdk.js → Play-C3Hph8xY.js} +1 -1
- package/dist/client/assets/{Plus-BAl5ksmH.js → Plus-BuZ2XoBN.js} +1 -1
- package/dist/client/assets/{SearchMd-XlpqEN-D.js → SearchMd-BeBVRrdw.js} +1 -1
- package/dist/client/assets/{Share07-Dw_Ho0Fm.js → Share07-DldJlk64.js} +1 -1
- package/dist/client/assets/{Terminal-BK5I3Y1e.js → Terminal-EcSYzT5u.js} +1 -1
- package/dist/client/assets/{Tool01-BLwXizsZ.js → Tool01-CH0MYN-2.js} +1 -1
- package/dist/client/assets/{Trash01-CdZ-Jz57.js → Trash01-DSwoFZY0.js} +1 -1
- package/dist/client/assets/{Upload01-D7Wikn5K.js → Upload01-CpcqtTNa.js} +1 -1
- package/dist/client/assets/{Users03-9f86Wop8.js → Users03-B6orUjW9.js} +1 -1
- package/dist/client/assets/{X-CjLPt87f.js → X-DLZk4kqC.js} +1 -1
- package/dist/client/assets/{XClose-DSGHFh4M.js → XClose-C2SJXRFh.js} +1 -1
- package/dist/client/assets/agent-detail-1edzdNo4.js +1 -0
- package/dist/client/assets/{agents-CPStualW.js → agents-CA-rSchF.js} +1 -1
- package/dist/client/assets/{alert-dialog-D0Pbwyv-.js → alert-dialog-Dllib4My.js} +1 -1
- package/dist/client/assets/{auth-catchall-C8EKwBMn.js → auth-catchall-BOn2OyMJ.js} +1 -1
- package/dist/client/assets/{avatar-DwsJKOst.js → avatar-BfuaGHdb.js} +1 -1
- package/dist/client/assets/{badge-C6I3bZub.js → badge-DF_3zhMz.js} +1 -1
- package/dist/client/assets/{binder-DMkBMJDe.js → binder-CC8WnynZ.js} +1 -1
- package/dist/client/assets/{button-BVfOTfpc.js → button-0ydgHweE.js} +1 -1
- package/dist/client/assets/{card-C1ZVlkU0.js → card-DFhzHX-B.js} +1 -1
- package/dist/client/assets/{checkbox-DAuxoUuR.js → checkbox-JnNCVINs.js} +1 -1
- package/dist/client/assets/{circle-alert-DuAEeMx-.js → circle-alert-C96B7toE.js} +1 -1
- package/dist/client/assets/{collapsible-GqoDHWGA.js → collapsible-CDAezpyL.js} +1 -1
- package/dist/client/assets/{collection-detail-ComoILCe.js → collection-detail-ClXHe-PG.js} +1 -1
- package/dist/client/assets/{collection-display-button-ChMvUn2E.js → collection-display-button-C0Qj_mDn.js} +1 -1
- package/dist/client/assets/{collection-header-CJErncxY.js → collection-header-CHcRbSVg.js} +1 -1
- package/dist/client/assets/{collection-page-Bi-tbERp.js → collection-page-pQhPuVgo.js} +1 -1
- package/dist/client/assets/{collection-search-BzoiV2-u.js → collection-search-rOPXHeEr.js} +1 -1
- package/dist/client/assets/{collection-tab-1YVo2yy8.js → collection-tab-e3o0S9Wa.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-thG71bGI.js → collection-table-wrapper-C4t2ZZhF.js} +1 -1
- package/dist/client/assets/{connect-Cdro5khB.js → connect-DP_OT-gv.js} +1 -1
- package/dist/client/assets/{connection-card-ss7oQ1sY.js → connection-card-BLTFMSZS.js} +1 -1
- package/dist/client/assets/{connection-detail-D8BVZUed.js → connection-detail-C5TmRjj1.js} +1 -1
- package/dist/client/assets/{connections-BmxtYRou.js → connections-I2Vy-typ.js} +1 -1
- package/dist/client/assets/{constants-BW4JZ47T.js → constants-Mpett05j.js} +1 -1
- package/dist/client/assets/constants-OFVhPv4G.js +1 -0
- package/dist/client/assets/{create-organization-dialog-5VVOifK_.js → create-organization-dialog-WqiCWTM4.js} +1 -1
- package/dist/client/assets/{dialog-BKc0uyIf.js → dialog-6FUpHXs_.js} +1 -1
- package/dist/client/assets/{dropdown-menu-COxc-l2r.js → dropdown-menu-CvHFB3Gz.js} +1 -1
- package/dist/client/assets/{dynamic-plugin-layout-D0Ome1yQ.js → dynamic-plugin-layout-Mnd5muQb.js} +1 -1
- package/dist/client/assets/{empty-state-Cu7Vuwtc.js → empty-state-7hq4AubF.js} +1 -1
- package/dist/client/assets/{empty-state-BA1dna4T.js → empty-state-BJnVPwS4.js} +1 -1
- package/dist/client/assets/{env-vars-editor-V0t9-7eJ.js → env-vars-editor--TqeS791.js} +1 -1
- package/dist/client/assets/{error-boundary-DGWOOFEb.js → error-boundary-B6RXO2oI.js} +1 -1
- package/dist/client/assets/{extract-connection-data-CUU0Xk9N.js → extract-connection-data-Cl2cHkSz.js} +1 -1
- package/dist/client/assets/{file-browser-DlzXa6OC.js → file-browser-EXbuz5vW.js} +2 -2
- package/dist/client/assets/{form-CVtLpajs.js → form-Bu0daHLu.js} +1 -1
- package/dist/client/assets/{grid-view-C-AwkYIf.js → grid-view-C6S8iSjv.js} +1 -1
- package/dist/client/assets/{home-CNkoFZIO.js → home-2CTqvtNy.js} +1 -1
- package/dist/client/assets/index-6m1DUVC_.js +1 -0
- package/dist/client/assets/{index-CCsaEkmm.js → index-BDvGMi--.js} +8 -8
- package/dist/client/assets/{index-D47Uffzr.js → index-CXUcNyKS.js} +1 -1
- package/dist/client/assets/{index-Der3_fHk.js → index-CymrbMj5.js} +1 -1
- package/dist/client/assets/{index-BcdQIGUF.js → index-DZqSbjFw.js} +2 -2
- package/dist/client/assets/{index-DmpB2YV8.js → index-Ez2DTosS.js} +1 -1
- package/dist/client/assets/{infiniteQueryObserver-DrveVX8A.js → infiniteQueryObserver-DmKtj9SR.js} +1 -1
- package/dist/client/assets/{input-CUCPZMz2.js → input-u1hHzCA4.js} +1 -1
- package/dist/client/assets/{layout-BbogDOP_.js → layout-DspSCzsh.js} +1 -1
- package/dist/client/assets/{localstorage-keys-du1r-Z9U.js → localstorage-keys-DpM3uKv7.js} +1 -1
- package/dist/client/assets/{login-DmgPNC9v.js → login-DoMEd-lv.js} +1 -1
- package/dist/client/assets/{mcp-oauth-JUhR-zCP.js → mcp-oauth-C7tn4XA4.js} +1 -1
- package/dist/client/assets/{mcp-server-card-BljG3HDb.js → mcp-server-card-HpdQ81Kj.js} +1 -1
- package/dist/client/assets/{mcp-server-detail-CnzqXowm.js → mcp-server-detail-DhHV0S77.js} +2 -2
- package/dist/client/assets/{members-C_HxHJzG.js → members-NoyLiC53.js} +1 -1
- package/dist/client/assets/{monaco-editor-CBeaXMU-.js → monaco-editor-CZ0mtshA.js} +1 -1
- package/dist/client/assets/{monitoring-Bvmrto3t.js → monitoring-rg9mX2h3.js} +1 -1
- package/dist/client/assets/{oauth-callback-CKCDA102.js → oauth-callback-BskSq0jW.js} +1 -1
- package/dist/client/assets/{page-CR4MuyMw.js → page-BpnXhWf3.js} +1 -1
- package/dist/client/assets/{page-dZAP2FO7.js → page-KXdqzJaF.js} +1 -1
- package/dist/client/assets/{pin-to-sidebar-button-D1PDIW9U.js → pin-to-sidebar-button-Bsv2_7kr.js} +1 -1
- package/dist/client/assets/{plugin-empty-state-UWD4gqMv.js → plugin-empty-state-rg6DAYSw.js} +1 -1
- package/dist/client/assets/{plugin-header--R1hkRV-.js → plugin-header-Cnc4tGD7.js} +1 -1
- package/dist/client/assets/{plugins-B39yvsMR.js → plugins-CW7mTNa6.js} +1 -1
- package/dist/client/assets/{popover-LSiJhuO3.js → popover-DEmRxXmY.js} +1 -1
- package/dist/client/assets/{registry-utils-BtoR-qhS.js → registry-utils-BFBDFgyu.js} +1 -1
- package/dist/client/assets/{resizable-CQSJSF2D.js → resizable-akHzriSj.js} +1 -1
- package/dist/client/assets/{resource-tabs-4g29YzhM.js → resource-tabs-1el8gNET.js} +1 -1
- package/dist/client/assets/{select-Bti-BgCx.js → select-BKwPUbTK.js} +1 -1
- package/dist/client/assets/{settings-DiOvc3SE.js → settings-ZWpf163v.js} +1 -1
- package/dist/client/assets/{shell-layout-BEh2pmUE.js → shell-layout-D0SSCuI2.js} +2 -2
- package/dist/client/assets/{spinner-Fg4ciUuT.js → spinner-Bwqz03rl.js} +1 -1
- package/dist/client/assets/{store-invite-fnQnsnI3.js → store-invite-DJTXOg3a.js} +1 -1
- package/dist/client/assets/{switch-Dj3WkUS4.js → switch-DNIxf6Z3.js} +1 -1
- package/dist/client/assets/{textarea-DeK9qU4Z.js → textarea-CLIBzUIu.js} +1 -1
- package/dist/client/assets/{tools-list-BeFKqIIs.js → tools-list-DopNeyHc.js} +1 -1
- package/dist/client/assets/{tooltip-DDTkATYg.js → tooltip-9zLX7HP0.js} +1 -1
- package/dist/client/assets/{typewriter-title-DbQkTfun.js → typewriter-title-BJariIWR.js} +1 -1
- package/dist/client/assets/{use-binding-Cx0cnXwg.js → use-binding-B1LqCJr8.js} +1 -1
- package/dist/client/assets/{use-collections-D97KvVa9.js → use-collections-DtjYeVzj.js} +1 -1
- package/dist/client/assets/{use-connection-C76BYat1.js → use-connection-BzhGWFyL.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-DazESShZ.js → use-create-virtual-mcp-D-7Y6G3j.js} +1 -1
- package/dist/client/assets/{use-deco-chat-open-u5zZi1de.js → use-deco-chat-open-CrQFHW7J.js} +1 -1
- package/dist/client/assets/{use-list-state-BrsvhCvu.js → use-list-state-BfmIALu7.js} +1 -1
- package/dist/client/assets/{use-mcp-prompts-DzCHcPVg.js → use-mcp-prompts-C2Az2O1z.js} +1 -1
- package/dist/client/assets/{use-members-BGZRzPKD.js → use-members-KzHxearI.js} +1 -1
- package/dist/client/assets/{use-mobile-0MLmfurT.js → use-mobile-VtwOaDa5.js} +1 -1
- package/dist/client/assets/{use-organization-settings-K9WNKRlW.js → use-organization-settings-DMGaX8N0.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-TOs4GWZq.js → use-virtual-mcp-D3UgDP8i.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-CaX6JmUq.js +1 -0
- package/dist/client/assets/{useMutation-C7y5vUn8.js → useMutation-BReaxe_W.js} +1 -1
- package/dist/client/assets/useQuery-KlPPWaKy.js +1 -0
- package/dist/client/assets/useSuspenseInfiniteQuery-jy6MmqiZ.js +1 -0
- package/dist/client/assets/{view-mode-toggle-JXEPDzFm.js → view-mode-toggle-DR9UFNqr.js} +1 -1
- package/dist/client/assets/{workflow-BUf_HFcm.js → workflow-B1lnmdqO.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +1 -1
- package/dist/server/migrate.js +1 -1
- package/dist/server/server.js +1 -1
- package/package.json +1 -1
- package/dist/client/assets/agent-detail-7FOys_Jg.js +0 -1
- package/dist/client/assets/constants-CBcj5NvV.js +0 -1
- package/dist/client/assets/index-DXup9nzR.js +0 -1
- package/dist/client/assets/useInfiniteQuery-etEZJXp8.js +0 -1
- package/dist/client/assets/useQuery-frKnQxkY.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-7GUdjJBj.js +0 -1
package/dist/server/server.js
CHANGED
|
@@ -257,7 +257,7 @@ data:
|
|
|
257
257
|
`;if(J)G+=`id: ${J}
|
|
258
258
|
`;return G+=`data: ${JSON.stringify(Q)}
|
|
259
259
|
|
|
260
|
-
`,Y.enqueue(X.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(Y,X){try{let Q=Y.headers.get("accept");if(!Q?.includes("application/json")||!Q.includes("text/event-stream"))return this.createJsonErrorResponse(406,-32000,"Not Acceptable: Client must accept both application/json and text/event-stream");let J=Y.headers.get("content-type");if(!J||!J.includes("application/json"))return this.createJsonErrorResponse(415,-32000,"Unsupported Media Type: Content-Type must be application/json");let G={headers:Object.fromEntries(Y.headers.entries())},K;if(X?.parsedBody!==void 0)K=X.parsedBody;else try{K=await Y.json()}catch{return this.createJsonErrorResponse(400,-32700,"Parse error: Invalid JSON")}let W;try{if(Array.isArray(K))W=K.map((L)=>fQ.parse(L));else W=[fQ.parse(K)]}catch{return this.createJsonErrorResponse(400,-32700,"Parse error: Invalid JSON-RPC message")}let Z=W.some(ps);if(Z){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(!Z){let L=this.validateSession(Y);if(L)return L;let w=this.validateProtocolVersion(Y);if(w)return w}if(!W.some(tG)){for(let L of W)this.onmessage?.(L,{authInfo:X?.authInfo,requestInfo:G});return new Response(null,{status:202})}let F=crypto.randomUUID(),V=W.find((L)=>ps(L)),$=V?V.params.protocolVersion:Y.headers.get("mcp-protocol-version")??bi0;if(this._enableJsonResponse)return new Promise((L)=>{this._streamMapping.set(F,{resolveJson:L,cleanup:()=>{this._streamMapping.delete(F)}});for(let w of W)if(tG(w))this._requestToStreamMapping.set(w.id,F);for(let w of W)this.onmessage?.(w,{authInfo:X?.authInfo,requestInfo:G})});let q=new TextEncoder,B,D=new ReadableStream({start:(L)=>{B=L},cancel:()=>{this._streamMapping.delete(F)}}),O={"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"};if(this.sessionId!==void 0)O["mcp-session-id"]=this.sessionId;for(let L of W)if(tG(L))this._streamMapping.set(F,{controller:B,encoder:q,cleanup:()=>{this._streamMapping.delete(F);try{B.close()}catch{}}}),this._requestToStreamMapping.set(L.id,F);await this.writePrimingEvent(B,q,F,$);for(let L of W){let w,R;if(tG(L)&&this._eventStore&&$>="2025-11-25")w=()=>{this.closeSSEStream(L.id)},R=()=>{this.closeStandaloneSSEStream()};this.onmessage?.(L,{authInfo:X?.authInfo,requestInfo:G,closeSSEStream:w,closeStandaloneSSEStream:R})}return new Response(D,{status:200,headers:O})}catch(Q){return this.onerror?.(Q),this.createJsonErrorResponse(400,-32700,"Parse error",{data:String(Q)})}}async handleDeleteRequest(Y){let X=this.validateSession(Y);if(X)return X;let Q=this.validateProtocolVersion(Y);if(Q)return Q;return await Promise.resolve(this._onsessionclosed?.(this.sessionId)),await this.close(),new Response(null,{status:200})}validateSession(Y){if(this.sessionIdGenerator===void 0)return;if(!this._initialized)return this.createJsonErrorResponse(400,-32000,"Bad Request: Server not initialized");let X=Y.headers.get("mcp-session-id");if(!X)return this.createJsonErrorResponse(400,-32000,"Bad Request: Mcp-Session-Id header is required");if(X!==this.sessionId)return this.createJsonErrorResponse(404,-32001,"Session not found");return}validateProtocolVersion(Y){let X=Y.headers.get("mcp-protocol-version");if(X!==null&&!lF.includes(X))return this.createJsonErrorResponse(400,-32000,`Bad Request: Unsupported protocol version: ${X} (supported versions: ${lF.join(", ")})`);return}async close(){this._streamMapping.forEach(({cleanup:Y})=>{Y()}),this._streamMapping.clear(),this._requestResponseMap.clear(),this.onclose?.()}closeSSEStream(Y){let X=this._requestToStreamMapping.get(Y);if(!X)return;let Q=this._streamMapping.get(X);if(Q)Q.cleanup()}closeStandaloneSSEStream(){let Y=this._streamMapping.get(this._standaloneSseStreamId);if(Y)Y.cleanup()}async send(Y,X){let Q=X?.relatedRequestId;if(b5(Y)||xz(Y))Q=Y.id;if(Q===void 0){if(b5(Y)||xz(Y))throw Error("Cannot send a response on a standalone SSE stream unless resuming a previous client request");let K;if(this._eventStore)K=await this._eventStore.storeEvent(this._standaloneSseStreamId,Y);let W=this._streamMapping.get(this._standaloneSseStreamId);if(W===void 0)return;if(W.controller&&W.encoder)this.writeSSEEvent(W.controller,W.encoder,Y,K);return}let J=this._requestToStreamMapping.get(Q);if(!J)throw Error(`No connection established for request ID: ${String(Q)}`);let G=this._streamMapping.get(J);if(!this._enableJsonResponse&&G?.controller&&G?.encoder){let K;if(this._eventStore)K=await this._eventStore.storeEvent(J,Y);this.writeSSEEvent(G.controller,G.encoder,Y,K)}if(b5(Y)||xz(Y)){this._requestResponseMap.set(Q,Y);let K=Array.from(this._requestToStreamMapping.entries()).filter(([Z,H])=>H===J).map(([Z])=>Z);if(K.every((Z)=>this._requestResponseMap.has(Z))){if(!G)throw Error(`No connection established for request ID: ${String(Q)}`);if(this._enableJsonResponse&&G.resolveJson){let Z={"Content-Type":"application/json"};if(this.sessionId!==void 0)Z["mcp-session-id"]=this.sessionId;let H=K.map((F)=>this._requestResponseMap.get(F));if(H.length===1)G.resolveJson(new Response(JSON.stringify(H[0]),{status:200,headers:Z}));else G.resolveJson(new Response(JSON.stringify(H),{status:200,headers:Z}))}else G.cleanup();for(let Z of K)this._requestResponseMap.delete(Z),this._requestToStreamMapping.delete(Z)}}}}var Rb=l(()=>{gY()});var QP=(...Y)=>{return function(Q,J){let G=(K)=>{let W=Y[K];if(!W)return J();return W(Q,()=>G(K+1))};return G(0)}};class tF6{config;tools=[];callToolMiddlewares=[];jsonSchemaCache=new Map;constructor(Y){this.config={...Y,capabilities:Y.capabilities??{tools:{}}}}getCachedJsonSchema(Y){let X=this.jsonSchemaCache.get(Y);if(!X)X=z.toJSONSchema(Y),this.jsonSchemaCache.set(Y,X);return X}withTool(Y){return this.tools.push(Y),this}withTools(Y){return this.tools.push(...Y),this}callToolMiddleware(...Y){return this.callToolMiddlewares.push(...Y),this}build(){let Y=this.callToolMiddlewares.length>0?QP(...this.callToolMiddlewares):null,X=()=>{let Q=new wM({name:this.config.name,version:this.config.version},{capabilities:this.config.capabilities});for(let J of this.tools){let G=async(H)=>{try{let F=await J.handler(H);return{content:[{type:"text",text:JSON.stringify(F)}],structuredContent:F}}catch(F){return{content:[{type:"text",text:`Error: ${F.message}`}],isError:!0}}},K=Y?async(H)=>{let F={method:"tools/call",params:{name:J.name,arguments:H}};return await Y(F,()=>G(H))}:G,W="shape"in J.inputSchema?J.inputSchema.shape:z.object({}).shape,Z=J.outputSchema&&"shape"in J.outputSchema?J.outputSchema.shape:z.object({}).shape;Q.registerTool(J.name,{annotations:J.annotations,description:J.description??"",inputSchema:W,outputSchema:Z},K)}return Q};return{callStreamableTool:async(Q,J)=>{let G=this.tools.find((W)=>W.name===Q);if(!G)throw Error(`Tool ${Q} not found`);let K=await G.handler(J);if(!(K instanceof Response))throw Error(`Tool ${Q} returned a non-response`);return K},client:{listTools:async()=>{return{tools:this.tools.map((Q)=>({name:Q.name,description:Q.description??"",inputSchema:this.getCachedJsonSchema(Q.inputSchema),outputSchema:Q.outputSchema?this.getCachedJsonSchema(Q.outputSchema):void 0}))}},callTool:async(Q)=>{let J=this.tools.find((G)=>G.name===Q.name);if(!J)return{content:[{type:"text",text:"Tool not found"}]};try{let G=await J?.handler(Q.arguments??{});return{content:[{type:"text",text:JSON.stringify(G)}],structuredContent:G}}catch(G){return{content:[{type:"text",text:`Error: ${G.message}`}]}}}},fetch:async(Q)=>{let J=new V$({enableJsonResponse:Q.headers.get("Accept")?.includes("application/json")??!1});return await X().connect(J),await J.handleRequest(Q)}}}}function eF6(Y){return new tF6(Y)}var YV6=l(()=>{E00();Rb();i0()});var jb="user-sandbox",XV6="Create embeddable integration flows for platform end-users";import{sql as JP}from"kysely";var QV6;var JV6=l(()=>{QV6={name:"001-user-sandbox",async up(Y){await Y.schema.createTable("user_sandbox").addColumn("id","text",(X)=>X.primaryKey()).addColumn("organization_id","text",(X)=>X.notNull().references("organization.id").onDelete("cascade")).addColumn("title","text",(X)=>X.notNull()).addColumn("description","text").addColumn("icon","text").addColumn("required_apps","text",(X)=>X.notNull()).addColumn("redirect_url","text").addColumn("webhook_url","text").addColumn("event_type","text",(X)=>X.notNull().defaultTo("integration.completed")).addColumn("agent_title_template","text",(X)=>X.notNull().defaultTo("Agent for {{externalUserId}}")).addColumn("agent_instructions","text").addColumn("tool_selection_mode","text",(X)=>X.notNull().defaultTo("inclusion")).addColumn("status","text",(X)=>X.notNull().defaultTo("active")).addColumn("created_at","text",(X)=>X.notNull().defaultTo(JP`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(X)=>X.notNull().defaultTo(JP`CURRENT_TIMESTAMP`)).addColumn("created_by","text",(X)=>X.references("user.id").onDelete("set null")).execute(),await Y.schema.createIndex("idx_user_sandbox_org").on("user_sandbox").column("organization_id").execute(),await Y.schema.createTable("user_sandbox_sessions").addColumn("id","text",(X)=>X.primaryKey()).addColumn("template_id","text",(X)=>X.notNull().references("user_sandbox.id").onDelete("cascade")).addColumn("organization_id","text",(X)=>X.notNull().references("organization.id").onDelete("cascade")).addColumn("external_user_id","text",(X)=>X.notNull()).addColumn("status","text",(X)=>X.notNull().defaultTo("pending")).addColumn("app_statuses","text",(X)=>X.notNull().defaultTo("{}")).addColumn("created_agent_id","text",(X)=>X.references("connections.id").onDelete("set null")).addColumn("redirect_url","text").addColumn("created_at","text",(X)=>X.notNull().defaultTo(JP`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(X)=>X.notNull().defaultTo(JP`CURRENT_TIMESTAMP`)).addColumn("expires_at","text",(X)=>X.notNull()).execute(),await Y.schema.createIndex("idx_user_sandbox_sessions_template").on("user_sandbox_sessions").column("template_id").execute(),await Y.schema.createIndex("idx_user_sandbox_sessions_external_user").on("user_sandbox_sessions").columns(["template_id","external_user_id"]).execute(),await Y.schema.createIndex("idx_user_sandbox_sessions_org").on("user_sandbox_sessions").column("organization_id").execute(),await Y.schema.createTable("user_sandbox_agents").addColumn("id","text",(X)=>X.primaryKey()).addColumn("user_sandbox_id","text",(X)=>X.notNull().references("user_sandbox.id").onDelete("cascade")).addColumn("external_user_id","text",(X)=>X.notNull()).addColumn("connection_id","text",(X)=>X.notNull().references("connections.id").onDelete("cascade")).addColumn("created_at","text",(X)=>X.notNull().defaultTo(JP`CURRENT_TIMESTAMP`)).execute(),await Y.schema.createIndex("idx_user_sandbox_agents_unique").on("user_sandbox_agents").columns(["user_sandbox_id","external_user_id"]).unique().execute(),await Y.schema.createIndex("idx_user_sandbox_agents_connection").on("user_sandbox_agents").column("connection_id").execute()},async down(Y){await Y.schema.dropIndex("idx_user_sandbox_agents_connection").ifExists().execute(),await Y.schema.dropIndex("idx_user_sandbox_agents_unique").ifExists().execute(),await Y.schema.dropIndex("idx_user_sandbox_sessions_org").ifExists().execute(),await Y.schema.dropIndex("idx_user_sandbox_sessions_external_user").ifExists().execute(),await Y.schema.dropIndex("idx_user_sandbox_sessions_template").ifExists().execute(),await Y.schema.dropIndex("idx_user_sandbox_org").ifExists().execute(),await Y.schema.dropTable("user_sandbox_agents").ifExists().execute(),await Y.schema.dropTable("user_sandbox_sessions").ifExists().execute(),await Y.schema.dropTable("user_sandbox").ifExists().execute()}}});var GV6;var WV6=l(()=>{JV6();GV6=[QV6]});function Sb(Y){let X=Date.now().toString(36),Q=crypto.randomUUID().replace(/-/g,"").substring(0,8);return`${Y}_${X}${Q}`}class GP{db;constructor(Y){this.db=Y}async create(Y){let X=Sb("usb"),Q=new Date().toISOString(),J={id:X,organization_id:Y.organization_id,title:Y.title,description:Y.description??null,icon:Y.icon??null,required_apps:JSON.stringify(Y.required_apps),redirect_url:Y.redirect_url??null,webhook_url:Y.webhook_url??null,event_type:Y.event_type??"integration.completed",agent_title_template:Y.agent_title_template??"{{externalUserId}}'s Agent",agent_instructions:Y.agent_instructions??null,tool_selection_mode:Y.tool_selection_mode??"inclusion",status:"active",created_at:Q,updated_at:Q,created_by:Y.created_by??null};await this.db.insertInto("user_sandbox").values(J).execute();let G=await this.findById(X);if(!G)throw Error(`Failed to create user sandbox with id: ${X}`);return G}async findById(Y){let X=await this.db.selectFrom("user_sandbox").selectAll().where("id","=",Y).executeTakeFirst();if(!X)return null;return this.deserialize(X)}async list(Y){return(await this.db.selectFrom("user_sandbox").selectAll().where("organization_id","=",Y).orderBy("created_at","desc").execute()).map((Q)=>this.deserialize(Q))}async update(Y,X){let J={updated_at:new Date().toISOString()};if(X.title!==void 0)J.title=X.title;if(X.description!==void 0)J.description=X.description;if(X.icon!==void 0)J.icon=X.icon;if(X.required_apps!==void 0)J.required_apps=JSON.stringify(X.required_apps);if(X.redirect_url!==void 0)J.redirect_url=X.redirect_url;if(X.webhook_url!==void 0)J.webhook_url=X.webhook_url;if(X.event_type!==void 0)J.event_type=X.event_type;if(X.agent_title_template!==void 0)J.agent_title_template=X.agent_title_template;if(X.agent_instructions!==void 0)J.agent_instructions=X.agent_instructions;if(X.tool_selection_mode!==void 0)J.tool_selection_mode=X.tool_selection_mode;if(X.status!==void 0)J.status=X.status;await this.db.updateTable("user_sandbox").set(J).where("id","=",Y).execute();let G=await this.findById(Y);if(!G)throw Error(`Template not found after update: ${Y}`);return G}async delete(Y){await this.db.deleteFrom("user_sandbox").where("id","=",Y).execute()}deserialize(Y){let X=[];try{X=JSON.parse(Y.required_apps)}catch{X=[]}return{id:Y.id,organization_id:Y.organization_id,title:Y.title,description:Y.description,icon:Y.icon,required_apps:X,redirect_url:Y.redirect_url,webhook_url:Y.webhook_url,event_type:Y.event_type,agent_title_template:Y.agent_title_template,agent_instructions:Y.agent_instructions,tool_selection_mode:Y.tool_selection_mode,status:Y.status,created_at:Y.created_at,updated_at:Y.updated_at,created_by:Y.created_by}}}var GQ0=()=>{};class WP{db;constructor(Y){this.db=Y}async create(Y){let X=Sb("sandbox_session"),Q=new Date().toISOString(),J={id:X,template_id:Y.template_id,organization_id:Y.organization_id,external_user_id:Y.external_user_id,status:"pending",app_statuses:"{}",created_agent_id:Y.created_agent_id??null,redirect_url:Y.redirect_url??null,created_at:Q,updated_at:Q,expires_at:Y.expires_at};await this.db.insertInto("user_sandbox_sessions").values(J).execute();let G=await this.findById(X);if(!G)throw Error(`Failed to create session with id: ${X}`);return G}async findById(Y){let X=await this.db.selectFrom("user_sandbox_sessions").selectAll().where("id","=",Y).executeTakeFirst();if(!X)return null;return this.deserialize(X)}async findExisting(Y,X){let Q=new Date().toISOString(),J=await this.db.selectFrom("user_sandbox_sessions").selectAll().where("template_id","=",Y).where("external_user_id","=",X).where("expires_at",">",Q).where("status","!=","completed").orderBy("created_at","desc").executeTakeFirst();if(!J)return null;return this.deserialize(J)}async listByTemplate(Y){return(await this.db.selectFrom("user_sandbox_sessions").selectAll().where("template_id","=",Y).orderBy("created_at","desc").execute()).map((Q)=>this.deserialize(Q))}async listByOrganization(Y){return(await this.db.selectFrom("user_sandbox_sessions").selectAll().where("organization_id","=",Y).orderBy("created_at","desc").execute()).map((Q)=>this.deserialize(Q))}async update(Y,X){let J={updated_at:new Date().toISOString()};if(X.status!==void 0)J.status=X.status;if(X.app_statuses!==void 0)J.app_statuses=JSON.stringify(X.app_statuses);if(X.created_agent_id!==void 0)J.created_agent_id=X.created_agent_id;await this.db.updateTable("user_sandbox_sessions").set(J).where("id","=",Y).execute();let G=await this.findById(Y);if(!G)throw Error(`Session not found after update: ${Y}`);return G}async delete(Y){await this.db.deleteFrom("user_sandbox_sessions").where("id","=",Y).execute()}async deleteExpired(){let Y=new Date().toISOString(),X=await this.db.deleteFrom("user_sandbox_sessions").where("expires_at","<",Y).where("status","!=","completed").executeTakeFirst();return Number(X.numDeletedRows??0)}async deleteByExternalUserId(Y,X){let Q=await this.db.deleteFrom("user_sandbox_sessions").where("organization_id","=",Y).where("external_user_id","=",X).executeTakeFirst();return Number(Q.numDeletedRows??0)}deserialize(Y){let X={};try{X=JSON.parse(Y.app_statuses)}catch{X={}}return{id:Y.id,template_id:Y.template_id,organization_id:Y.organization_id,external_user_id:Y.external_user_id,status:Y.status,app_statuses:X,created_agent_id:Y.created_agent_id,redirect_url:Y.redirect_url,created_at:Y.created_at,updated_at:Y.updated_at,expires_at:Y.expires_at}}}var WQ0=()=>{};function ZP(Y){ZQ0=Y}function eY(){if(!ZQ0)throw Error(`Plugin storage not initialized. Make sure the "${jb}" plugin is enabled.`);return ZQ0}function KQ0(){return process.env.BASE_URL||"http://localhost:3000"}var ZQ0=null;var FG=()=>{};function ZV6(Y){let X=Y.db,Q={templates:new GP(X),sessions:new WP(X)};return ZP(Q),Q}var KV6=l(()=>{GQ0();WQ0();FG()});var gs4,ms4,ls4,ds4,ps4,oH,cs4,HV6,FV6,VV6,$V6,qV6,zV6,BV6,UV6,DV6,OV6,NV6,ns4,LV6,wV6,MV6;var l7=l(()=>{i0();gs4=z.object({authorizationEndpoint:z.string().describe("OAuth authorization endpoint URL"),tokenEndpoint:z.string().describe("OAuth token endpoint URL"),clientId:z.string().describe("OAuth client ID"),scopes:z.array(z.string()).describe("OAuth scopes to request"),grantType:z.enum(["authorization_code","client_credentials"]).describe("OAuth grant type")}),ms4=z.object({headers:z.record(z.string(),z.string()).optional().describe("HTTP headers")}),ls4=z.object({command:z.string().describe("Command to run"),args:z.array(z.string()).optional().describe("Command arguments"),cwd:z.string().optional().describe("Working directory"),envVars:z.record(z.string(),z.string()).optional().describe("Environment variables")}),ds4=z.object({app_name:z.string().describe("App name from registry (e.g., '@deco/gmail')"),title:z.string().describe("Display title for the app"),description:z.string().nullable().optional().describe("App description"),icon:z.string().nullable().optional().describe("Icon URL"),connection_type:z.enum(["HTTP","SSE","Websocket","STDIO"]).describe("Connection type"),connection_url:z.string().nullable().optional().describe("MCP server URL"),connection_headers:z.union([ms4,ls4]).nullable().optional().describe("Connection parameters"),oauth_config:gs4.nullable().optional().describe("OAuth configuration if required"),selected_tools:z.array(z.string()).nullable().optional().describe("Selected tools to expose (null = all)"),selected_resources:z.array(z.string()).nullable().optional().describe("Selected resources to expose (null = all)"),selected_prompts:z.array(z.string()).nullable().optional().describe("Selected prompts to expose (null = all)")}),ps4=z.object({configured:z.boolean().describe("Whether the app has been configured"),connection_id:z.string().nullable().describe("Connection ID if created"),error:z.string().nullable().describe("Error message if configuration failed")}),oH=z.object({id:z.string(),organization_id:z.string(),title:z.string(),description:z.string().nullable(),icon:z.string().nullable(),required_apps:z.array(ds4),redirect_url:z.string().nullable(),webhook_url:z.string().nullable(),event_type:z.string(),agent_title_template:z.string(),agent_instructions:z.string().nullable(),tool_selection_mode:z.enum(["inclusion","exclusion"]),status:z.enum(["active","inactive"]),created_at:z.string(),updated_at:z.string(),created_by:z.string().nullable()}),cs4=z.object({id:z.string(),template_id:z.string(),organization_id:z.string(),external_user_id:z.string(),status:z.enum(["pending","in_progress","completed"]),app_statuses:z.record(z.string(),ps4),created_agent_id:z.string().nullable(),redirect_url:z.string().nullable(),created_at:z.string(),updated_at:z.string(),expires_at:z.string()}),HV6=z.object({app_name:z.string().describe("App name from registry (e.g., '@deco/openrouter')"),selected_tools:z.array(z.string()).nullable().optional().describe("Selected tools to expose (null = all)"),selected_resources:z.array(z.string()).nullable().optional().describe("Selected resources to expose (null = all)"),selected_prompts:z.array(z.string()).nullable().optional().describe("Selected prompts to expose (null = all)")}),FV6=z.object({title:z.string().describe("Title for the template"),description:z.string().optional().describe("Optional description"),icon:z.string().optional().describe("Optional icon URL"),registry_id:z.string().describe("Connection ID of the registry to look up apps from"),required_apps:z.array(HV6).describe("Apps to include - only app_name required, details fetched from registry"),redirect_url:z.string().optional().describe("URL to redirect to after completion"),webhook_url:z.string().optional().describe("Webhook URL to call on completion"),event_type:z.string().optional().describe("Event type to emit (default: integration.completed)"),agent_title_template:z.string().optional().describe("Template for agent title (supports {{externalUserId}})"),agent_instructions:z.string().optional().describe("Instructions for the created agent"),tool_selection_mode:z.enum(["inclusion","exclusion"]).optional().describe("Tool selection mode for the agent")}),VV6=z.object({id:z.string().describe("Template ID to update"),title:z.string().optional(),description:z.string().nullable().optional(),icon:z.string().nullable().optional(),registry_id:z.string().optional().describe("Connection ID of the registry (required if updating required_apps)"),required_apps:z.array(HV6).optional().describe("Updated apps (details will be fetched from registry)"),redirect_url:z.string().nullable().optional(),webhook_url:z.string().nullable().optional(),event_type:z.string().optional(),agent_title_template:z.string().optional(),agent_instructions:z.string().nullable().optional(),tool_selection_mode:z.enum(["inclusion","exclusion"]).optional(),status:z.enum(["active","inactive"]).optional()}),$V6=z.object({id:z.string().describe("Template ID")}),qV6=z.object({}),zV6=z.object({id:z.string().describe("Template ID to delete")}),BV6=z.object({templateId:z.string().describe("Template ID"),externalUserId:z.string().describe("External user ID from your platform"),expiresInSeconds:z.number().optional().describe("Session expiration in seconds (default: 7 days)")}),UV6=z.object({sessionId:z.string().describe("Session ID"),url:z.string().describe("URL for the connect flow"),expiresAt:z.string().describe("Session expiration time"),agentId:z.string().nullable().optional().describe("Virtual MCP ID for this user (unique per template + user)"),created:z.boolean().describe("Whether the agent was newly created (true) or already existed (false)")}),DV6=z.object({templateId:z.string().optional().describe("Filter by template ID")}),OV6=z.object({sessions:z.array(cs4)}),NV6=z.object({externalUserId:z.string().describe("External user ID to find agents for")}),ns4=z.object({id:z.string().describe("Agent (Virtual MCP) ID"),title:z.string(),external_user_id:z.string(),template_id:z.string().nullable(),created_at:z.string()}),LV6=z.object({agents:z.array(ns4)}),wV6=z.object({externalUserId:z.string().describe("External user ID whose session data should be cleared")}),MV6=z.object({success:z.boolean(),deletedAgents:z.number().describe("Number of agents (Virtual MCPs) deleted"),deletedConnections:z.number().describe("Number of child connections deleted"),deletedSessions:z.number().describe("Number of sessions deleted")})});function as4(Y){if(!Y?.url)return null;try{let X=new URL(Y.url);if(X.hostname==="github.com"){let Q=X.pathname.split("/").filter(Boolean);if(Q.length>=1)return`https://github.com/${Q[0]}.png`}}catch{}return null}function rs4(Y){return Y.find((Q)=>Q.name.endsWith("_LIST"))?.name??null}function os4(Y){if(!Y)return[];if(Array.isArray(Y))return Y;if(typeof Y==="object"&&Y!==null){let X=Object.keys(Y).find((Q)=>Array.isArray(Y[Q]));if(X)return Y[X]}return[]}function ss4(Y,X,Q,J){let G=Y.server,K=Y._meta?.["mcp.mesh"],W=K?.friendlyName||K?.friendly_name||Y.title||G?.title||G?.name||"Unnamed MCP Server",Z=G?.description||null,H=G?.icons?.[0]?.src||as4(G?.repository)||null,F=K?.oauth_config,V=F&&typeof F.authorizationEndpoint==="string"&&typeof F.tokenEndpoint==="string"&&typeof F.clientId==="string"&&Array.isArray(F.scopes)&&(F.grantType==="authorization_code"||F.grantType==="client_credentials")?{authorizationEndpoint:F.authorizationEndpoint,tokenEndpoint:F.tokenEndpoint,clientId:F.clientId,scopes:F.scopes,grantType:F.grantType}:null,$=G?.packages??[],q=G?.remotes??[],B,D,O=null,L=q[0],w=$[0];if(L){if(B=is4[L.type??""]??L.type?.toUpperCase()??"HTTP",D=L.url??null,L.headers&&L.headers.length>0){let R={};for(let P of L.headers)if(P.name&&P.value)R[P.name]=P.value;if(Object.keys(R).length>0)O={headers:R}}}else if(w){B="STDIO",D=null;let R=w.identifier||w.name,P={};if(w.environmentVariables){for(let T of w.environmentVariables)if(T.name)P[T.name]=""}O={command:"npx",args:R?["-y",R]:[],...Object.keys(P).length>0&&{envVars:P}}}else B="HTTP",D=null;return{title:W,description:Z,icon:H,connection_type:B,connection_url:D,connection_headers:O,oauth_config:V,selected_tools:X,selected_resources:Q,selected_prompts:J}}async function ts4(Y,X,Q,J=null,G=null,K=null){let W=await Y.createMCPProxy(X);try{let Z=await W.listTools(),H=rs4(Z.tools);if(!H)throw Error(`Registry "${X}" does not have a LIST tool`);let F=await W.callTool({name:H,arguments:{where:{appName:Q}}}),V=F.structuredContent??F,q=os4(V)[0];if(!q)throw Error(`App "${Q}" not found in registry "${X}"`);let B=ss4(q,J,G,K);return{app_name:Q,...B}}finally{await W.close().catch(console.error)}}async function kb(Y,X,Q){let J=[];for(let G of Q){let K=await ts4(Y,X,G.app_name,G.selected_tools??null,G.selected_resources??null,G.selected_prompts??null);J.push(K)}return J}var is4;var HQ0=l(()=>{is4={"streamable-http":"HTTP",http:"HTTP",sse:"SSE",stdio:"STDIO",websocket:"Websocket"}});var AV6;var TV6=l(()=>{l7();FG();HQ0();AV6={name:"USER_SANDBOX_CREATE",description:"Create a new user sandbox for platform integration flows. Specify apps by name and the system will automatically fetch connection details from the registry.",inputSchema:FV6,outputSchema:oH,handler:async(Y,X)=>{let Q=Y,J=X;if(!J.organization)throw Error("Organization context required");await J.access.check();let G=await kb(J,Q.registry_id,Q.required_apps.map((Z)=>({app_name:Z.app_name,selected_tools:Z.selected_tools??null,selected_resources:Z.selected_resources??null,selected_prompts:Z.selected_prompts??null})));return await eY().templates.create({organization_id:J.organization.id,title:Q.title,description:Q.description??null,icon:Q.icon??null,required_apps:G,redirect_url:Q.redirect_url??null,webhook_url:Q.webhook_url??null,event_type:Q.event_type,agent_title_template:Q.agent_title_template,agent_instructions:Q.agent_instructions??null,tool_selection_mode:Q.tool_selection_mode,created_by:J.auth.user?.id??null})}}});var PV6;var EV6=l(()=>{l7();FG();HQ0();PV6={name:"USER_SANDBOX_UPDATE",description:"Update an existing user sandbox. If updating required_apps, provide registry_id to auto-fetch details.",inputSchema:VV6,outputSchema:oH,handler:async(Y,X)=>{let Q=Y,J=X;if(!J.organization)throw Error("Organization context required");await J.access.check();let G=eY(),K=await G.templates.findById(Q.id);if(!K)throw Error(`Template not found: ${Q.id}`);if(K.organization_id!==J.organization.id)throw Error("Access denied: template belongs to another organization");let W=void 0;if(Q.required_apps&&Q.required_apps.length>0){if(!Q.registry_id)throw Error("registry_id is required when updating required_apps");W=await kb(J,Q.registry_id,Q.required_apps.map((H)=>({app_name:H.app_name,selected_tools:H.selected_tools??null,selected_resources:H.selected_resources??null,selected_prompts:H.selected_prompts??null})))}return await G.templates.update(Q.id,{title:Q.title,description:Q.description,icon:Q.icon,required_apps:W,redirect_url:Q.redirect_url,webhook_url:Q.webhook_url,event_type:Q.event_type,agent_title_template:Q.agent_title_template,agent_instructions:Q.agent_instructions,tool_selection_mode:Q.tool_selection_mode,status:Q.status})}}});var CV6;var IV6=l(()=>{i0();l7();FG();CV6={name:"USER_SANDBOX_DELETE",description:"Delete a user sandbox",inputSchema:zV6,outputSchema:z.object({success:z.boolean(),id:z.string()}),handler:async(Y,X)=>{let Q=Y,J=X;if(!J.organization)throw Error("Organization context required");await J.access.check();let G=eY(),K=await G.templates.findById(Q.id);if(!K)throw Error(`Template not found: ${Q.id}`);if(K.organization_id!==J.organization.id)throw Error("Access denied: template belongs to another organization");return await G.templates.delete(Q.id),{success:!0,id:Q.id}}}});var RV6;var jV6=l(()=>{i0();l7();FG();RV6={name:"USER_SANDBOX_LIST",description:"List all user sandbox in the organization",inputSchema:qV6,outputSchema:z.object({templates:z.array(oH)}),handler:async(Y,X)=>{let Q=X;if(!Q.organization)throw Error("Organization context required");return await Q.access.check(),{templates:await eY().templates.list(Q.organization.id)}}}});var SV6;var kV6=l(()=>{l7();FG();SV6={name:"USER_SANDBOX_GET",description:"Get a user sandbox by ID",inputSchema:$V6,outputSchema:oH.nullable(),handler:async(Y,X)=>{let Q=Y,J=X;if(!J.organization)throw Error("Organization context required");await J.access.check();let K=await eY().templates.findById(Q.id);if(K&&K.organization_id!==J.organization.id)throw Error("Access denied: template belongs to another organization");return K}}});async function vV6(Y,X){let Q=await X.sessions.findById(Y);if(!Q)throw new EZ("Session not found","SESSION_NOT_FOUND");if(new Date(Q.expires_at)<new Date)throw new EZ("Session has expired","SESSION_EXPIRED");return Q}async function es4(Y,X){let Q=await vV6(Y,X);if(Q.status==="completed")throw new EZ("Session is already completed. Create a new session to reconfigure.","SESSION_COMPLETED");return Q}function Yt4(Y,X){let Q=Y.metadata;if(!Q)throw new EZ("Connection has no metadata","CONNECTION_ACCESS_DENIED");let J=Q[sH.SESSION_ID]===X.id,G=Q[sH.EXTERNAL_USER_ID]===X.external_user_id&&Q[sH.TEMPLATE_ID]===X.template_id;if(!J&&!G)throw new EZ("Access denied: connection does not belong to this session","CONNECTION_ACCESS_DENIED")}function FQ0(Y,X,Q){return{[sH.SESSION_ID]:Y,[sH.EXTERNAL_USER_ID]:X,[sH.TEMPLATE_ID]:Q,source:"user-sandbox"}}function VQ0(Y,X){return{[sH.EXTERNAL_USER_ID]:Y,[sH.TEMPLATE_ID]:X,source:"user-sandbox"}}async function $$(Y,X,Q){let J=Q?.allowCompleted?await vV6(Y,X):await es4(Y,X);if(Q?.connection)Yt4(Q.connection,J);return J}var sH,EZ;var _V6=l(()=>{sH={SESSION_ID:"user_sandbox_session_id",EXTERNAL_USER_ID:"user_sandbox_external_user_id",TEMPLATE_ID:"user_sandbox_id"};EZ=class EZ extends Error{code;constructor(Y,X){super(Y);this.code=X;this.name="SessionAccessError"}}});var $Q0=l(()=>{_V6()});async function Qt4(Y,X,Q,J,G,K,W,Z){let H=Y,F=await H.selectFrom("user_sandbox_agents").select("connection_id").where("user_sandbox_id","=",J).where("external_user_id","=",G).executeTakeFirst();if(F)return{connectionId:F.connection_id,created:!1};let V=new Date().toISOString(),$=`usa_${Date.now().toString(36)}${crypto.randomUUID().replace(/-/g,"").substring(0,8)}`,q=`vir_${Date.now().toString(36)}${crypto.randomUUID().replace(/-/g,"").substring(0,8)}`;try{return await H.transaction().execute(async(B)=>{await B.insertInto("connections").values({id:q,organization_id:X,created_by:Q,title:K,description:W,icon:null,app_name:null,app_id:null,connection_type:"VIRTUAL",connection_url:`virtual://${q}`,connection_token:null,connection_headers:JSON.stringify({tool_selection_mode:Z}),oauth_config:null,configuration_state:null,configuration_scopes:null,metadata:JSON.stringify(VQ0(G,J)),tools:null,bindings:null,status:"active",created_at:V,updated_at:V}).execute(),await B.insertInto("user_sandbox_agents").values({id:$,user_sandbox_id:J,external_user_id:G,connection_id:q,created_at:V}).execute()}),{connectionId:q,created:!0}}catch(B){let D=String(B);if(D.includes("UNIQUE constraint")||D.includes("duplicate key")){let O=await H.selectFrom("user_sandbox_agents").select("connection_id").where("user_sandbox_id","=",J).where("external_user_id","=",G).executeTakeFirst();if(O)return{connectionId:O.connection_id,created:!1}}throw B}}var Xt4=604800,yV6;var fV6=l(()=>{l7();FG();$Q0();yV6={name:"USER_SANDBOX_CREATE_SESSION",description:"Create a connect session URL for an external user. Returns a URL that the user can visit to configure their integrations. Also creates a unique Virtual MCP (agent) for this user if one doesn't exist.",inputSchema:BV6,outputSchema:UV6,handler:async(Y,X)=>{let Q=Y,J=X;if(!J.organization)throw Error("Organization context required");await J.access.check();let G=eY(),K=await G.templates.findById(Q.templateId);if(!K)throw Error(`Template not found: ${Q.templateId}`);if(K.organization_id!==J.organization.id)throw Error("Access denied: template belongs to another organization");if(K.status!=="active")throw Error("Template is not active");let W=K.agent_title_template.replace("{{externalUserId}}",Q.externalUserId),Z=K.created_by??J.auth.user?.id??"system",{connectionId:H,created:F}=await Qt4(J.db,J.organization.id,Z,K.id,Q.externalUserId,W,K.agent_instructions,K.tool_selection_mode),V=await G.sessions.findExisting(Q.templateId,Q.externalUserId);if(V){if(!V.created_agent_id)await G.sessions.update(V.id,{created_agent_id:H});let O=KQ0();return{sessionId:V.id,url:`${O}/connect/${V.id}`,expiresAt:V.expires_at,agentId:V.created_agent_id??H,created:F}}let $=Q.expiresInSeconds??Xt4,q=new Date(Date.now()+$*1000).toISOString(),B=await G.sessions.create({template_id:Q.templateId,organization_id:J.organization.id,external_user_id:Q.externalUserId,redirect_url:K.redirect_url,expires_at:q,created_agent_id:H}),D=KQ0();return{sessionId:B.id,url:`${D}/connect/${B.id}`,expiresAt:B.expires_at,agentId:H,created:F}}}});var hV6;var bV6=l(()=>{l7();FG();hV6={name:"USER_SANDBOX_LIST_SESSIONS",description:"List connect sessions for monitoring and management",inputSchema:DV6,outputSchema:OV6,handler:async(Y,X)=>{let Q=Y,J=X;if(!J.organization)throw Error("Organization context required");await J.access.check();let G=eY(),K;if(Q.templateId){let W=await G.templates.findById(Q.templateId);if(!W)throw Error(`Template not found: ${Q.templateId}`);if(W.organization_id!==J.organization.id)throw Error("Access denied: template belongs to another organization");K=await G.sessions.listByTemplate(Q.templateId)}else K=await G.sessions.listByOrganization(J.organization.id);return{sessions:K}}}});var Jt4="user_sandbox_external_user_id",Gt4="user_sandbox_id",xV6;var uV6=l(()=>{l7();xV6={name:"USER_SANDBOX_LIST_USER_AGENTS",description:"List all agents (Virtual MCPs) created for an external user. Use this to find agents created via user sandbox for a specific user in your platform.",inputSchema:NV6,outputSchema:LV6,handler:async(Y,X)=>{let Q=Y,J=X;if(!J.organization)throw Error("Organization context required");return await J.access.check(),{agents:(await J.storage.connections.list(J.organization.id)).filter((W)=>{if(W.connection_type!=="VIRTUAL")return!1;let Z=W.metadata;if(!Z)return!1;return Z[Jt4]===Q.externalUserId}).map((W)=>{let Z=W.metadata;return{id:W.id,title:W.title,external_user_id:Q.externalUserId,template_id:Z[Gt4]??null,created_at:W.created_at}})}}}});var Wt4="user_sandbox_external_user_id",gV6;var mV6=l(()=>{l7();FG();gV6={name:"USER_SANDBOX_CLEAR_USER_SESSION",description:"Clear all session data for an external user, revoking all access they've granted. This deletes their agents (Virtual MCPs), child connections, OAuth tokens, and sessions. Use this when a user wants to disconnect all their integrations.",inputSchema:wV6,outputSchema:MV6,handler:async(Y,X)=>{let Q=Y,J=X;if(!J.organization)throw Error("Organization context required");await J.access.check();let G=J.db,K=eY(),Z=(await G.selectFrom("connections").select(["id","metadata"]).where("organization_id","=",J.organization.id).where("connection_type","=","VIRTUAL").execute()).filter((V)=>{if(!V.metadata)return!1;try{return JSON.parse(V.metadata)[Wt4]===Q.externalUserId}catch{return!1}}).map((V)=>V.id),H=0;if(Z.length>0){let $=(await G.selectFrom("connection_aggregations").select("child_connection_id").where("parent_connection_id","in",Z).execute()).map((q)=>q.child_connection_id);if(await G.deleteFrom("connection_aggregations").where("parent_connection_id","in",Z).execute(),$.length>0)await G.deleteFrom("downstream_tokens").where("connectionId","in",$).execute(),await G.deleteFrom("connections").where("id","in",$).execute(),H=$.length;await G.deleteFrom("connections").where("id","in",Z).execute(),await G.deleteFrom("user_sandbox_agents").where("external_user_id","=",Q.externalUserId).execute()}let F=await K.sessions.deleteByExternalUserId(J.organization.id,Q.externalUserId);return{success:!0,deletedAgents:Z.length,deletedConnections:H,deletedSessions:F}}}});var lV6;var dV6=l(()=>{TV6();EV6();IV6();jV6();kV6();fV6();bV6();uV6();mV6();FG();lV6=[AV6,PV6,CV6,RV6,SV6,yV6,hV6,xV6,gV6]});function Zt4(Y){let X=Date.now().toString(36),Q=crypto.randomUUID().replace(/-/g,"").substring(0,8);return`${Y}_${X}${Q}`}async function qQ0(Y,X,Q,J){let G={success:!1,agentId:Y.created_agent_id,connectionIds:[],redirectUrl:null,eventEmitted:!1,webhookCalled:!1};try{let K=J.db,W=new Date().toISOString(),Z=Y.created_agent_id;if(!Z)throw Error("Session has no agent - this should not happen");let H=[],F=[];for(let[q,B]of Object.entries(Y.app_statuses))if(B.configured&&B.connection_id){H.push(B.connection_id);let D=X.required_apps.find((O)=>O.app_name===q);F.push({appName:q,connectionId:B.connection_id,selectedTools:D?.selected_tools??null,selectedResources:D?.selected_resources??null,selectedPrompts:D?.selected_prompts??null})}if(G.connectionIds=H,await K.deleteFrom("connection_aggregations").where("parent_connection_id","=",Z).execute(),F.length>0)await K.insertInto("connection_aggregations").values(F.map((q)=>({id:Zt4("agg"),parent_connection_id:Z,child_connection_id:q.connectionId,selected_tools:q.selectedTools?JSON.stringify(q.selectedTools):null,selected_resources:q.selectedResources?JSON.stringify(q.selectedResources):null,selected_prompts:q.selectedPrompts?JSON.stringify(q.selectedPrompts):null,created_at:W}))).execute();await Q.sessions.update(Y.id,{status:"completed"});let V={type:X.event_type,data:{externalUserId:Y.external_user_id,agentId:Z,templateId:X.id,sessionId:Y.id,connections:H.map((q)=>{let B=Object.entries(Y.app_statuses).find(([D,O])=>O.connection_id===q)?.[0];return{id:q,appName:B??"unknown"}})}};if(J.eventBus)try{await J.eventBus.publish(J.organizationId,"user-sandbox",V),G.eventEmitted=!0}catch(q){console.error("[UserSandbox] Failed to emit completion event:",q)}if(X.webhook_url)try{let q=await fetch(X.webhook_url,{method:"POST",headers:{"Content-Type":"application/json","X-User-Sandbox-Event":X.event_type},body:JSON.stringify(V.data)});if(!q.ok)console.error("[UserSandbox] Webhook returned error:",q.status);else G.webhookCalled=!0}catch(q){console.error("[UserSandbox] Failed to call webhook:",q)}let $=Y.redirect_url??X.redirect_url;if($){let q=new URL($);q.searchParams.set("sessionId",Y.id),q.searchParams.set("externalUserId",Y.external_user_id),q.searchParams.set("agentId",Z),G.redirectUrl=q.toString()}return G.success=!0,G}catch(K){throw console.error("[UserSandbox] Completion failed:",K),K}}var pV6=()=>{};function Kt4(){let Y=Date.now().toString(36),X=crypto.randomUUID().replace(/-/g,"").substring(0,8);return`conn_${Y}${X}`}async function Ht4(Y,X,Q,J,G,K,W){let Z=Kt4(),H=new Date().toISOString();if(!W.title)throw Error(`App "${W.app_name}" is missing required field: title`);if(!W.connection_type)throw Error(`App "${W.app_name}" is missing required field: connection_type`);if(!W.connection_url&&W.connection_type!=="STDIO")throw Error(`App "${W.app_name}" is missing required field: connection_url`);let F={id:Z,organization_id:X,created_by:Q,title:W.title,description:W.description??null,icon:W.icon??null,app_name:W.app_name,app_id:null,connection_type:W.connection_type,connection_url:W.connection_url??"",connection_token:null,connection_headers:W.connection_headers?JSON.stringify(W.connection_headers):null,oauth_config:W.oauth_config?JSON.stringify(W.oauth_config):null,configuration_state:null,configuration_scopes:null,metadata:JSON.stringify(FQ0(J,G,K)),tools:null,bindings:null,status:"active",created_at:H,updated_at:H};return await Y.insertInto("connections").values(F).execute(),Z}function KP(Y,X){if(X instanceof EZ){let Q={SESSION_NOT_FOUND:404,SESSION_EXPIRED:410,SESSION_COMPLETED:409,ACCESS_DENIED:403,CONNECTION_ACCESS_DENIED:403};return Y.json({error:X.message,code:X.code},Q[X.code]??400)}return console.error("[UserSandbox] Connect API error:",X),Y.json({error:X instanceof Error?X.message:"Internal error"},500)}function zQ0(Y,X){let Q=X.db,J=new GP(Q),G=new WP(Q),K={templates:J,sessions:G};Y.get("/api/user-sandbox/sessions/:sessionId",async(W)=>{try{let Z=W.req.param("sessionId"),H=await $$(Z,K,{allowCompleted:!0}),F=await J.findById(H.template_id);if(!F)return W.json({error:"Template not found"},404);return W.json({session:{id:H.id,status:H.status,external_user_id:H.external_user_id,expires_at:H.expires_at,redirect_url:H.redirect_url,created_agent_id:H.created_agent_id},template:{id:F.id,title:F.title,description:F.description,icon:F.icon},apps:F.required_apps.map((V)=>({app_name:V.app_name,title:V.title,description:V.description,icon:V.icon,connection_type:V.connection_type,requires_oauth:!!V.oauth_config,selected_tools:V.selected_tools,selected_resources:V.selected_resources,selected_prompts:V.selected_prompts,status:H.app_statuses[V.app_name]??{configured:!1,connection_id:null,error:null}}))})}catch(Z){return KP(W,Z)}}),Y.post("/api/user-sandbox/sessions/:sessionId/provision",async(W)=>{try{let Z=W.req.param("sessionId"),H=await W.req.json();if(!H.app_name)return W.json({error:"app_name is required"},400);let F=await $$(Z,K,{allowCompleted:!0}),V=await J.findById(F.template_id);if(!V)return W.json({error:"Template not found"},404);let $=V.required_apps.find((O)=>O.app_name===H.app_name);if(!$)return W.json({error:`App "${H.app_name}" is not required by this template`},400);let q=F.app_statuses[H.app_name];if(q?.connection_id)return W.json({success:!0,connection_id:q.connection_id,already_provisioned:!0,requires_oauth:!!$.oauth_config});if(!V.created_by)return W.json({error:"Template is missing created_by - cannot create connections"},500);let B=await Ht4(Q,F.organization_id,V.created_by,Z,F.external_user_id,F.template_id,$),D={...F.app_statuses,[H.app_name]:{configured:!1,connection_id:B,error:null}};return await G.update(Z,{status:"in_progress",app_statuses:D}),W.json({success:!0,connection_id:B,already_provisioned:!1,requires_oauth:!!$.oauth_config})}catch(Z){return KP(W,Z)}}),Y.post("/api/user-sandbox/sessions/:sessionId/configure",async(W)=>{try{let Z=W.req.param("sessionId"),H=await W.req.json();if(!H.app_name)return W.json({error:"app_name is required"},400);let F=await $$(Z,K,{allowCompleted:!0}),V=await J.findById(F.template_id);if(!V)return W.json({error:"Template not found"},404);if(!V.required_apps.find((L)=>L.app_name===H.app_name))return W.json({error:`App "${H.app_name}" is not required by this template`},400);let q=F.app_statuses[H.app_name],D={configured:!0,connection_id:H.connection_id??q?.connection_id??null,error:null},O={...F.app_statuses,[H.app_name]:D};return await G.update(Z,{status:"in_progress",app_statuses:O}),W.json({success:!0,app_name:H.app_name,status:D})}catch(Z){return KP(W,Z)}}),Y.post("/api/user-sandbox/sessions/:sessionId/oauth-token",async(W)=>{try{let Z=W.req.param("sessionId"),H=await W.req.json();if(!H.connection_id)return W.json({error:"connection_id is required"},400);if(!H.access_token)return W.json({error:"access_token is required"},400);let F=await $$(Z,K,{allowCompleted:!0});if(!Object.values(F.app_statuses).some((R)=>R.connection_id===H.connection_id))return W.json({error:"Connection does not belong to this session"},403);let $=H.expires_in?new Date(Date.now()+H.expires_in*1000):null,q=new Date().toISOString(),B=await X.vault.encrypt(H.access_token),D=H.refresh_token?await X.vault.encrypt(H.refresh_token):null,O=H.client_secret?await X.vault.encrypt(H.client_secret):null,L=Q,w=await L.selectFrom("downstream_tokens").select(["id"]).where("connectionId","=",H.connection_id).executeTakeFirst();if(w)await L.updateTable("downstream_tokens").set({accessToken:B,refreshToken:D,scope:H.scope??null,expiresAt:$?.toISOString()??null,clientId:H.client_id??null,clientSecret:O,tokenEndpoint:H.token_endpoint??null,updatedAt:q}).where("id","=",w.id).execute();else{let R=`dtok_${Date.now().toString(36)}${crypto.randomUUID().replace(/-/g,"").substring(0,8)}`;await L.insertInto("downstream_tokens").values({id:R,connectionId:H.connection_id,accessToken:B,refreshToken:D,scope:H.scope??null,expiresAt:$?.toISOString()??null,clientId:H.client_id??null,clientSecret:O,tokenEndpoint:H.token_endpoint??null,createdAt:q,updatedAt:q}).execute()}return W.json({success:!0,expiresAt:$})}catch(Z){return KP(W,Z)}}),Y.post("/api/user-sandbox/sessions/:sessionId/complete",async(W)=>{try{let Z=W.req.param("sessionId"),H=await $$(Z,K,{allowCompleted:!0}),F=await J.findById(H.template_id);if(!F)return W.json({error:"Template not found"},404);if(F.required_apps.filter((q)=>{return H.app_statuses[q.app_name]?.configured}).length===0)return W.json({error:"At least one app must be configured"},400);let $=await qQ0(H,F,K,{organizationId:H.organization_id,db:Q});return W.json({success:$.success,completed:!0,agentId:$.agentId,redirectUrl:$.redirectUrl,eventEmitted:$.eventEmitted,webhookCalled:$.webhookCalled})}catch(Z){return KP(W,Z)}})}var cV6=l(()=>{GQ0();WQ0();$Q0();pV6()});var nV6=l(()=>{cV6()});var iV6;var aV6=l(()=>{WV6();KV6();dV6();nV6();iV6={id:jb,description:XV6,tools:lV6,publicRoutes:(Y,X)=>{zQ0(Y,X)},migrations:GV6,createStorage:(Y)=>{let X=ZV6(Y);return ZP(X),X}}});var vb;var rV6=l(()=>{aV6();vb=[iV6]});function Ft4(Y,X){return oV6.set(X.name,Y),{...X,handler:async(Q,J)=>{let G=J.organization;if(!G)throw Error(`Organization context required for plugin tool "${X.name}"`);if(!(await J.storage.organizationSettings.get(G.id))?.enabled_plugins?.includes(Y))throw Error(`Plugin "${Y}" is not enabled for this organization. Enable it in Settings > Plugins.`);return X.handler(Q,J)},execute:async(Q,J)=>{let G=J.organization;if(!G)throw Error(`Organization context required for plugin tool "${X.name}"`);if(!(await J.storage.organizationSettings.get(G.id))?.enabled_plugins?.includes(Y))throw Error(`Plugin "${Y}" is not enabled for this organization. Enable it in Settings > Plugins.`);return X.execute(Q,J)}}}function sV6(Y,X){return Y.filter((Q)=>{let J=oV6.get(Q.name);if(!J)return!0;return X?.includes(J)??!1})}function tV6(){let Y=[];for(let X of vb){if(!X.tools)continue;for(let Q of X.tools){let J={name:Q.name,description:Q.description??"",inputSchema:Q.inputSchema,outputSchema:Q.outputSchema,handler:Q.handler,execute:Q.handler},G=Ft4(X.id,J);Y.push(G)}}return Y}function eV6(Y,X){for(let Q of vb){if(Q.routes){let J=new Y.constructor;Q.routes(J,X),Y.route(`/api/plugins/${Q.id}`,J)}if(Q.publicRoutes)Q.publicRoutes(Y,X)}}function Y$6(Y,X){let Q={db:Y,vault:{encrypt:(J)=>X.encrypt(J),decrypt:(J)=>X.decrypt(J)}};for(let J of vb)if(J.createStorage){let G=J.createStorage(Q);Vt4.set(J.id,G)}}var oV6,Vt4;var BQ0=l(()=>{rV6();oV6=new Map;Vt4=new Map});function W6(Y){return{...Y,execute:async(X,Q)=>{let J=Date.now();return await Q.timings.measure(`tool.${Y.name}`,async()=>Q.tracer.startActiveSpan(`tool.${Y.name}`,{attributes:{"tool.name":Y.name,"organization.id":Q.organization?.id??"system","user.id":Q.auth.user?.id??Q.auth.apiKey?.userId??"anonymous"}},async(G)=>{try{Q.toolName=Y.name,Q.access.setToolName?.(Y.name);let K=await Y.handler(X,Q),W=Date.now()-J;return Q.meter.createHistogram("tool.execution.duration",{description:"Duration of tool executions in milliseconds",unit:"ms"}).record(W,{"tool.name":Y.name,"organization.id":Q.organization?.id??"system",status:"success"}),Q.meter.createCounter("tool.execution.count",{description:"Number of tool executions"}).add(1,{"tool.name":Y.name,status:"success"}),G.setStatus({code:UQ0.SpanStatusCode.OK}),K}catch(K){throw Q.meter.createCounter("tool.execution.errors",{description:"Number of tool execution errors"}).add(1,{"tool.name":Y.name,"error.type":K.constructor.name}),G.setStatus({code:UQ0.SpanStatusCode.ERROR,message:K.message}),G.recordException(K),K}finally{G.end()}}))}}}var UQ0;var z4=l(()=>{UQ0=l4(u0(),1)});function f6(Y){if(!Y.organization)throw Error("This operation requires organization scope");return Y.organization}function n8(Y){return Y.auth.user?.id??Y.auth.apiKey?.userId}function $t4(Y){return!!(Y.auth.user||Y.auth.apiKey)}function z6(Y){if(!$t4(Y))throw Error("Authentication required")}var _b,X$6,Q$6,J$6,G$6,W$6,Z$6,K$6,H$6,F$6;var VD=l(()=>{i0();_b=z.record(z.string(),z.array(z.string())),X$6=z.object({id:z.string().describe("Unique identifier for the API key"),name:z.string().describe("Human-readable name for the API key"),userId:z.string().describe("ID of the user who owns this API key"),permissions:_b.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:z.string().datetime().nullable().optional().describe("Expiration date of the API key (ISO 8601)"),createdAt:z.string().datetime().describe("When the API key was created (ISO 8601)")}),Q$6=z.object({name:z.string().min(1).max(64).describe("Human-readable name for the API key"),permissions:_b.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:z.number().positive().optional().describe("Expiration time in seconds. If not provided, key never expires."),metadata:z.record(z.string(),z.unknown()).optional().describe("Additional metadata to store with the API key")}),J$6=z.object({id:z.string().describe("Unique identifier for the API key"),name:z.string().describe("Human-readable name for the API key"),key:z.string().describe("The actual API key value. STORE THIS SECURELY - it will not be shown again!"),permissions:_b.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:z.string().datetime().nullable().optional().describe("Expiration date of the API key (ISO 8601)"),createdAt:z.string().datetime().describe("When the API key was created (ISO 8601)")}),G$6=z.object({}),W$6=z.object({items:z.array(X$6).describe("List of API keys (without key values)")}),Z$6=z.object({keyId:z.string().describe("ID of the API key to update"),name:z.string().min(1).max(64).optional().describe("New name for the API key"),permissions:_b.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:z.record(z.string(),z.unknown()).optional().describe("New metadata. Replaces existing metadata.")}),K$6=z.object({item:X$6.describe("The updated API key (without key value)")}),H$6=z.object({keyId:z.string().describe("ID of the API key to delete")}),F$6=z.object({success:z.boolean().describe("Whether the deletion was successful"),keyId:z.string().describe("ID of the deleted API key")})});var DQ0;var V$6=l(()=>{z4();VD();DQ0=W6({name:"API_KEY_CREATE",description:"Create a new API key with specified permissions. The key value is only returned once - store it securely!",inputSchema:Q$6,outputSchema:J$6,handler:async(Y,X)=>{z6(X),await X.access.check();let Q=await X.boundAuth.apiKey.create({name:Y.name,permissions:Y.permissions,expiresIn:Y.expiresIn,metadata:{...Y.metadata,organization:X.organization}}),J=Q.expiresAt?Q.expiresAt instanceof Date?Q.expiresAt.toISOString():Q.expiresAt:null,G=Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt;return{id:Q.id,name:Q.name??Y.name,key:Q.key,permissions:Q.permissions??{},expiresAt:J,createdAt:G}}})});var OQ0;var $$6=l(()=>{z4();VD();OQ0=W6({name:"API_KEY_DELETE",description:"Delete an API key. This instantly revokes the key - it can no longer be used for authentication.",inputSchema:H$6,outputSchema:F$6,handler:async(Y,X)=>{if(z6(X),await X.access.check(),!n8(X))throw Error("User ID required to delete API key");let G=(await X.boundAuth.apiKey.list())?.find((H)=>H.id===Y.keyId);if(!G)throw Error("API key not found");let W=G.metadata?.organization?.id,Z=X.organization?.id;if(W!==Z)throw Error("Cannot delete API key from another organization");return await X.boundAuth.apiKey.delete(Y.keyId),{success:!0,keyId:Y.keyId}}})});var NQ0;var q$6=l(()=>{z4();VD();NQ0=W6({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:G$6,outputSchema:W$6,handler:async(Y,X)=>{z6(X),await X.access.check();let Q=await X.boundAuth.apiKey.list(),J=X.organization?.id;return{items:(Q??[]).filter((K)=>{return K.metadata?.organization?.id===J}).map((K)=>({id:K.id,name:K.name??"Unnamed Key",userId:K.userId,permissions:K.permissions??{},expiresAt:K.expiresAt?K.expiresAt instanceof Date?K.expiresAt.toISOString():K.expiresAt:null,createdAt:K.createdAt instanceof Date?K.createdAt.toISOString():K.createdAt}))}}})});var LQ0;var z$6=l(()=>{z4();VD();LQ0=W6({name:"API_KEY_UPDATE",description:"Update an existing API key's name, permissions, or metadata. Note: Key value cannot be changed or retrieved.",inputSchema:Z$6,outputSchema:K$6,handler:async(Y,X)=>{if(z6(X),await X.access.check(),!n8(X))throw Error("User ID required to update API key");let G=(await X.boundAuth.apiKey.list())?.find((F)=>F.id===Y.keyId);if(!G)throw Error(`API key not found: ${Y.keyId}`);let W=G.metadata?.organization?.id,Z=X.organization?.id;if(W!==Z)throw Error("Cannot update API key from another organization");let H=await X.boundAuth.apiKey.update({keyId:Y.keyId,name:Y.name,permissions:Y.permissions,metadata:{...Y.metadata,organization:X.organization}});if(!H)throw Error(`Failed to update API key: ${Y.keyId}`);return{item:{id:H.id,name:H.name??Y.name??"Unnamed Key",userId:H.userId,permissions:H.permissions??{},expiresAt:H.expiresAt?H.expiresAt instanceof Date?H.expiresAt.toISOString():H.expiresAt:null,createdAt:H.createdAt instanceof Date?H.createdAt.toISOString():H.createdAt}}}})});var B$6=l(()=>{V$6();$$6();q$6();z$6();VD()});var U$6,D$6,O$6,N$6,L$6,w$6;var HP=l(()=>{i0();U$6=z.object({query:z.string().describe("Natural language search query (e.g., 'send email', 'create order')"),limit:z.number().default(10).describe("Maximum results to return (default: 10)")}),D$6=z.object({query:z.string(),results:z.array(z.object({name:z.string(),description:z.string().optional(),connection:z.string()})),totalAvailable:z.number()}),O$6=z.object({tools:z.array(z.string()).min(1).describe("Array of tool names to get detailed schemas for")}),N$6=z.object({tools:z.array(z.object({name:z.string(),description:z.string().optional(),connection:z.string(),inputSchema:z.unknown(),outputSchema:z.unknown().optional()})),notFound:z.array(z.string())}),L$6=z.object({code:z.string().min(1).describe("JavaScript code to execute. It runs as an async function body; you can use top-level `return` and `await`."),timeoutMs:z.number().default(3000).describe("Max execution time in milliseconds (default: 3000).")}),w$6=z.object({returnValue:z.unknown().optional(),error:z.string().optional(),consoleLogs:z.array(z.object({type:z.enum(["log","warn","error"]),content:z.string()}))})});function M$6(Y){let X=[],Q=[],J=(H)=>{let F=Y.newFunction(H,(...V)=>{try{let $=V.map((q)=>Y.dump(q));X.push({type:H??"log",content:$.map(String).join(" ")})}finally{V.forEach(($)=>$.dispose())}return Y.undefined});return Q.push(F),F},G=Y.newObject();Q.push(G);let K=J("log"),W=J("warn"),Z=J("error");return Y.setProp(G,"log",K),Y.setProp(G,"warn",W),Y.setProp(G,"error",Z),Y.setProp(Y.global,"console",G),{logs:X,[Symbol.dispose](){Q.forEach((H)=>H.dispose())}}}var q$,wQ0,yb,z$,FP;var fb=l(()=>{q$={JS_EVAL_TYPE_GLOBAL:0,JS_EVAL_TYPE_MODULE:1,JS_EVAL_TYPE_DIRECT:2,JS_EVAL_TYPE_INDIRECT:3,JS_EVAL_TYPE_MASK:3,JS_EVAL_FLAG_STRICT:8,JS_EVAL_FLAG_STRIP:16,JS_EVAL_FLAG_COMPILE_ONLY:32,JS_EVAL_FLAG_BACKTRACE_BARRIER:64},wQ0={BaseObjects:1,Date:2,Eval:4,StringNormalize:8,RegExp:16,RegExpCompiler:32,JSON:64,Proxy:128,MapSet:256,TypedArrays:512,Promise:1024,BigInt:2048,BigFloat:4096,BigDecimal:8192,OperatorOverloading:16384,BignumExt:32768},yb={Pending:0,Fulfilled:1,Rejected:2},z$={JS_GPN_STRING_MASK:1,JS_GPN_SYMBOL_MASK:2,JS_GPN_PRIVATE_MASK:4,JS_GPN_ENUM_ONLY:16,JS_GPN_SET_ENUM:32,QTS_GPN_NUMBER_MASK:64,QTS_STANDARD_COMPLIANT_NUMBER:128},FP={IsStrictlyEqual:0,IsSameValue:1,IsSameValueZero:2}});function $D(...Y){CQ0&&console.log("quickjs-emscripten:",...Y)}function*y$6(Y){return yield Y}function Ut4(Y){return y$6(RQ0(Y))}function A$6(Y,X){return(...Q)=>{let J=X.call(Y,IQ0,...Q);return RQ0(J)}}function Dt4(Y,X){let Q=X.call(Y,IQ0);return RQ0(Q)}function RQ0(Y){function X(Q){return Q.done?Q.value:Q.value instanceof Promise?Q.value.then((J)=>X(Y.next(J)),(J)=>X(Y.throw(J))):X(Y.next(Q.value))}return X(Y.next())}function MQ0(Y,X){let Q;try{Y.dispose()}catch(J){Q=J}if(X&&Q)throw Object.assign(X,{message:`${X.message}
|
|
260
|
+
`,Y.enqueue(X.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(Y,X){try{let Q=Y.headers.get("accept");if(!Q?.includes("application/json")||!Q.includes("text/event-stream"))return this.createJsonErrorResponse(406,-32000,"Not Acceptable: Client must accept both application/json and text/event-stream");let J=Y.headers.get("content-type");if(!J||!J.includes("application/json"))return this.createJsonErrorResponse(415,-32000,"Unsupported Media Type: Content-Type must be application/json");let G={headers:Object.fromEntries(Y.headers.entries())},K;if(X?.parsedBody!==void 0)K=X.parsedBody;else try{K=await Y.json()}catch{return this.createJsonErrorResponse(400,-32700,"Parse error: Invalid JSON")}let W;try{if(Array.isArray(K))W=K.map((L)=>fQ.parse(L));else W=[fQ.parse(K)]}catch{return this.createJsonErrorResponse(400,-32700,"Parse error: Invalid JSON-RPC message")}let Z=W.some(ps);if(Z){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(!Z){let L=this.validateSession(Y);if(L)return L;let w=this.validateProtocolVersion(Y);if(w)return w}if(!W.some(tG)){for(let L of W)this.onmessage?.(L,{authInfo:X?.authInfo,requestInfo:G});return new Response(null,{status:202})}let F=crypto.randomUUID(),V=W.find((L)=>ps(L)),$=V?V.params.protocolVersion:Y.headers.get("mcp-protocol-version")??bi0;if(this._enableJsonResponse)return new Promise((L)=>{this._streamMapping.set(F,{resolveJson:L,cleanup:()=>{this._streamMapping.delete(F)}});for(let w of W)if(tG(w))this._requestToStreamMapping.set(w.id,F);for(let w of W)this.onmessage?.(w,{authInfo:X?.authInfo,requestInfo:G})});let q=new TextEncoder,B,D=new ReadableStream({start:(L)=>{B=L},cancel:()=>{this._streamMapping.delete(F)}}),O={"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"};if(this.sessionId!==void 0)O["mcp-session-id"]=this.sessionId;for(let L of W)if(tG(L))this._streamMapping.set(F,{controller:B,encoder:q,cleanup:()=>{this._streamMapping.delete(F);try{B.close()}catch{}}}),this._requestToStreamMapping.set(L.id,F);await this.writePrimingEvent(B,q,F,$);for(let L of W){let w,R;if(tG(L)&&this._eventStore&&$>="2025-11-25")w=()=>{this.closeSSEStream(L.id)},R=()=>{this.closeStandaloneSSEStream()};this.onmessage?.(L,{authInfo:X?.authInfo,requestInfo:G,closeSSEStream:w,closeStandaloneSSEStream:R})}return new Response(D,{status:200,headers:O})}catch(Q){return this.onerror?.(Q),this.createJsonErrorResponse(400,-32700,"Parse error",{data:String(Q)})}}async handleDeleteRequest(Y){let X=this.validateSession(Y);if(X)return X;let Q=this.validateProtocolVersion(Y);if(Q)return Q;return await Promise.resolve(this._onsessionclosed?.(this.sessionId)),await this.close(),new Response(null,{status:200})}validateSession(Y){if(this.sessionIdGenerator===void 0)return;if(!this._initialized)return this.createJsonErrorResponse(400,-32000,"Bad Request: Server not initialized");let X=Y.headers.get("mcp-session-id");if(!X)return this.createJsonErrorResponse(400,-32000,"Bad Request: Mcp-Session-Id header is required");if(X!==this.sessionId)return this.createJsonErrorResponse(404,-32001,"Session not found");return}validateProtocolVersion(Y){let X=Y.headers.get("mcp-protocol-version");if(X!==null&&!lF.includes(X))return this.createJsonErrorResponse(400,-32000,`Bad Request: Unsupported protocol version: ${X} (supported versions: ${lF.join(", ")})`);return}async close(){this._streamMapping.forEach(({cleanup:Y})=>{Y()}),this._streamMapping.clear(),this._requestResponseMap.clear(),this.onclose?.()}closeSSEStream(Y){let X=this._requestToStreamMapping.get(Y);if(!X)return;let Q=this._streamMapping.get(X);if(Q)Q.cleanup()}closeStandaloneSSEStream(){let Y=this._streamMapping.get(this._standaloneSseStreamId);if(Y)Y.cleanup()}async send(Y,X){let Q=X?.relatedRequestId;if(b5(Y)||xz(Y))Q=Y.id;if(Q===void 0){if(b5(Y)||xz(Y))throw Error("Cannot send a response on a standalone SSE stream unless resuming a previous client request");let K;if(this._eventStore)K=await this._eventStore.storeEvent(this._standaloneSseStreamId,Y);let W=this._streamMapping.get(this._standaloneSseStreamId);if(W===void 0)return;if(W.controller&&W.encoder)this.writeSSEEvent(W.controller,W.encoder,Y,K);return}let J=this._requestToStreamMapping.get(Q);if(!J)throw Error(`No connection established for request ID: ${String(Q)}`);let G=this._streamMapping.get(J);if(!this._enableJsonResponse&&G?.controller&&G?.encoder){let K;if(this._eventStore)K=await this._eventStore.storeEvent(J,Y);this.writeSSEEvent(G.controller,G.encoder,Y,K)}if(b5(Y)||xz(Y)){this._requestResponseMap.set(Q,Y);let K=Array.from(this._requestToStreamMapping.entries()).filter(([Z,H])=>H===J).map(([Z])=>Z);if(K.every((Z)=>this._requestResponseMap.has(Z))){if(!G)throw Error(`No connection established for request ID: ${String(Q)}`);if(this._enableJsonResponse&&G.resolveJson){let Z={"Content-Type":"application/json"};if(this.sessionId!==void 0)Z["mcp-session-id"]=this.sessionId;let H=K.map((F)=>this._requestResponseMap.get(F));if(H.length===1)G.resolveJson(new Response(JSON.stringify(H[0]),{status:200,headers:Z}));else G.resolveJson(new Response(JSON.stringify(H),{status:200,headers:Z}))}else G.cleanup();for(let Z of K)this._requestResponseMap.delete(Z),this._requestToStreamMapping.delete(Z)}}}}var Rb=l(()=>{gY()});var QP=(...Y)=>{return function(Q,J){let G=(K)=>{let W=Y[K];if(!W)return J();return W(Q,()=>G(K+1))};return G(0)}};class tF6{config;tools=[];callToolMiddlewares=[];jsonSchemaCache=new Map;constructor(Y){this.config={...Y,capabilities:Y.capabilities??{tools:{}}}}getCachedJsonSchema(Y){let X=this.jsonSchemaCache.get(Y);if(!X)X=z.toJSONSchema(Y),this.jsonSchemaCache.set(Y,X);return X}withTool(Y){return this.tools.push(Y),this}withTools(Y){return this.tools.push(...Y),this}callToolMiddleware(...Y){return this.callToolMiddlewares.push(...Y),this}build(){let Y=this.callToolMiddlewares.length>0?QP(...this.callToolMiddlewares):null,X=()=>{let Q=new wM({name:this.config.name,version:this.config.version},{capabilities:this.config.capabilities});for(let J of this.tools){let G=async(H)=>{try{let F=await J.handler(H);return{content:[{type:"text",text:JSON.stringify(F)}],structuredContent:F}}catch(F){return{content:[{type:"text",text:`Error: ${F.message}`}],isError:!0}}},K=Y?async(H)=>{let F={method:"tools/call",params:{name:J.name,arguments:H}};return await Y(F,()=>G(H))}:G,W="shape"in J.inputSchema?J.inputSchema.shape:z.object({}).shape,Z=J.outputSchema&&"shape"in J.outputSchema?J.outputSchema.shape:z.object({}).shape;Q.registerTool(J.name,{annotations:J.annotations,description:J.description??"",inputSchema:W,outputSchema:Z},K)}return Q};return{callStreamableTool:async(Q,J)=>{let G=this.tools.find((W)=>W.name===Q);if(!G)throw Error(`Tool ${Q} not found`);let K=await G.handler(J);if(!(K instanceof Response))throw Error(`Tool ${Q} returned a non-response`);return K},client:{listTools:async()=>{return{tools:this.tools.map((Q)=>({name:Q.name,description:Q.description??"",inputSchema:this.getCachedJsonSchema(Q.inputSchema),outputSchema:Q.outputSchema?this.getCachedJsonSchema(Q.outputSchema):void 0}))}},callTool:async(Q)=>{let J=this.tools.find((G)=>G.name===Q.name);if(!J)return{content:[{type:"text",text:"Tool not found"}]};try{let G=await J?.handler(Q.arguments??{});return{content:[{type:"text",text:JSON.stringify(G)}],structuredContent:G}}catch(G){return{content:[{type:"text",text:`Error: ${G.message}`}]}}}},fetch:async(Q)=>{let J=new V$({enableJsonResponse:Q.headers.get("Accept")?.includes("application/json")??!1});return await X().connect(J),await J.handleRequest(Q)}}}}function eF6(Y){return new tF6(Y)}var YV6=l(()=>{E00();Rb();i0()});var jb="user-sandbox",XV6="Create embeddable integration flows for platform end-users";import{sql as JP}from"kysely";var QV6;var JV6=l(()=>{QV6={name:"001-user-sandbox",async up(Y){await Y.schema.createTable("user_sandbox").addColumn("id","text",(X)=>X.primaryKey()).addColumn("organization_id","text",(X)=>X.notNull().references("organization.id").onDelete("cascade")).addColumn("title","text",(X)=>X.notNull()).addColumn("description","text").addColumn("icon","text").addColumn("required_apps","text",(X)=>X.notNull()).addColumn("redirect_url","text").addColumn("webhook_url","text").addColumn("event_type","text",(X)=>X.notNull().defaultTo("integration.completed")).addColumn("agent_title_template","text",(X)=>X.notNull().defaultTo("Agent for {{externalUserId}}")).addColumn("agent_instructions","text").addColumn("tool_selection_mode","text",(X)=>X.notNull().defaultTo("inclusion")).addColumn("status","text",(X)=>X.notNull().defaultTo("active")).addColumn("created_at","text",(X)=>X.notNull().defaultTo(JP`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(X)=>X.notNull().defaultTo(JP`CURRENT_TIMESTAMP`)).addColumn("created_by","text",(X)=>X.references("user.id").onDelete("set null")).execute(),await Y.schema.createIndex("idx_user_sandbox_org").on("user_sandbox").column("organization_id").execute(),await Y.schema.createTable("user_sandbox_sessions").addColumn("id","text",(X)=>X.primaryKey()).addColumn("template_id","text",(X)=>X.notNull().references("user_sandbox.id").onDelete("cascade")).addColumn("organization_id","text",(X)=>X.notNull().references("organization.id").onDelete("cascade")).addColumn("external_user_id","text",(X)=>X.notNull()).addColumn("status","text",(X)=>X.notNull().defaultTo("pending")).addColumn("app_statuses","text",(X)=>X.notNull().defaultTo("{}")).addColumn("created_agent_id","text",(X)=>X.references("connections.id").onDelete("set null")).addColumn("redirect_url","text").addColumn("created_at","text",(X)=>X.notNull().defaultTo(JP`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(X)=>X.notNull().defaultTo(JP`CURRENT_TIMESTAMP`)).addColumn("expires_at","text",(X)=>X.notNull()).execute(),await Y.schema.createIndex("idx_user_sandbox_sessions_template").on("user_sandbox_sessions").column("template_id").execute(),await Y.schema.createIndex("idx_user_sandbox_sessions_external_user").on("user_sandbox_sessions").columns(["template_id","external_user_id"]).execute(),await Y.schema.createIndex("idx_user_sandbox_sessions_org").on("user_sandbox_sessions").column("organization_id").execute(),await Y.schema.createTable("user_sandbox_agents").addColumn("id","text",(X)=>X.primaryKey()).addColumn("user_sandbox_id","text",(X)=>X.notNull().references("user_sandbox.id").onDelete("cascade")).addColumn("external_user_id","text",(X)=>X.notNull()).addColumn("connection_id","text",(X)=>X.notNull().references("connections.id").onDelete("cascade")).addColumn("created_at","text",(X)=>X.notNull().defaultTo(JP`CURRENT_TIMESTAMP`)).execute(),await Y.schema.createIndex("idx_user_sandbox_agents_unique").on("user_sandbox_agents").columns(["user_sandbox_id","external_user_id"]).unique().execute(),await Y.schema.createIndex("idx_user_sandbox_agents_connection").on("user_sandbox_agents").column("connection_id").execute()},async down(Y){await Y.schema.dropIndex("idx_user_sandbox_agents_connection").ifExists().execute(),await Y.schema.dropIndex("idx_user_sandbox_agents_unique").ifExists().execute(),await Y.schema.dropIndex("idx_user_sandbox_sessions_org").ifExists().execute(),await Y.schema.dropIndex("idx_user_sandbox_sessions_external_user").ifExists().execute(),await Y.schema.dropIndex("idx_user_sandbox_sessions_template").ifExists().execute(),await Y.schema.dropIndex("idx_user_sandbox_org").ifExists().execute(),await Y.schema.dropTable("user_sandbox_agents").ifExists().execute(),await Y.schema.dropTable("user_sandbox_sessions").ifExists().execute(),await Y.schema.dropTable("user_sandbox").ifExists().execute()}}});var GV6;var WV6=l(()=>{JV6();GV6=[QV6]});function Sb(Y){let X=Date.now().toString(36),Q=crypto.randomUUID().replace(/-/g,"").substring(0,8);return`${Y}_${X}${Q}`}class GP{db;constructor(Y){this.db=Y}async create(Y){let X=Sb("usb"),Q=new Date().toISOString(),J={id:X,organization_id:Y.organization_id,title:Y.title,description:Y.description??null,icon:Y.icon??null,required_apps:JSON.stringify(Y.required_apps),redirect_url:Y.redirect_url??null,webhook_url:Y.webhook_url??null,event_type:Y.event_type??"integration.completed",agent_title_template:Y.agent_title_template??"{{externalUserId}}'s Agent",agent_instructions:Y.agent_instructions??null,tool_selection_mode:Y.tool_selection_mode??"inclusion",status:"active",created_at:Q,updated_at:Q,created_by:Y.created_by??null};await this.db.insertInto("user_sandbox").values(J).execute();let G=await this.findById(X);if(!G)throw Error(`Failed to create user sandbox with id: ${X}`);return G}async findById(Y){let X=await this.db.selectFrom("user_sandbox").selectAll().where("id","=",Y).executeTakeFirst();if(!X)return null;return this.deserialize(X)}async list(Y){return(await this.db.selectFrom("user_sandbox").selectAll().where("organization_id","=",Y).orderBy("created_at","desc").execute()).map((Q)=>this.deserialize(Q))}async update(Y,X){let J={updated_at:new Date().toISOString()};if(X.title!==void 0)J.title=X.title;if(X.description!==void 0)J.description=X.description;if(X.icon!==void 0)J.icon=X.icon;if(X.required_apps!==void 0)J.required_apps=JSON.stringify(X.required_apps);if(X.redirect_url!==void 0)J.redirect_url=X.redirect_url;if(X.webhook_url!==void 0)J.webhook_url=X.webhook_url;if(X.event_type!==void 0)J.event_type=X.event_type;if(X.agent_title_template!==void 0)J.agent_title_template=X.agent_title_template;if(X.agent_instructions!==void 0)J.agent_instructions=X.agent_instructions;if(X.tool_selection_mode!==void 0)J.tool_selection_mode=X.tool_selection_mode;if(X.status!==void 0)J.status=X.status;await this.db.updateTable("user_sandbox").set(J).where("id","=",Y).execute();let G=await this.findById(Y);if(!G)throw Error(`Template not found after update: ${Y}`);return G}async delete(Y){await this.db.deleteFrom("user_sandbox").where("id","=",Y).execute()}deserialize(Y){let X=[];try{X=JSON.parse(Y.required_apps)}catch{X=[]}return{id:Y.id,organization_id:Y.organization_id,title:Y.title,description:Y.description,icon:Y.icon,required_apps:X,redirect_url:Y.redirect_url,webhook_url:Y.webhook_url,event_type:Y.event_type,agent_title_template:Y.agent_title_template,agent_instructions:Y.agent_instructions,tool_selection_mode:Y.tool_selection_mode,status:Y.status,created_at:Y.created_at,updated_at:Y.updated_at,created_by:Y.created_by}}}var GQ0=()=>{};class WP{db;constructor(Y){this.db=Y}async create(Y){let X=Sb("sandbox_session"),Q=new Date().toISOString(),J={id:X,template_id:Y.template_id,organization_id:Y.organization_id,external_user_id:Y.external_user_id,status:"pending",app_statuses:"{}",created_agent_id:Y.created_agent_id??null,redirect_url:Y.redirect_url??null,created_at:Q,updated_at:Q,expires_at:Y.expires_at};await this.db.insertInto("user_sandbox_sessions").values(J).execute();let G=await this.findById(X);if(!G)throw Error(`Failed to create session with id: ${X}`);return G}async findById(Y){let X=await this.db.selectFrom("user_sandbox_sessions").selectAll().where("id","=",Y).executeTakeFirst();if(!X)return null;return this.deserialize(X)}async findExisting(Y,X){let Q=new Date().toISOString(),J=await this.db.selectFrom("user_sandbox_sessions").selectAll().where("template_id","=",Y).where("external_user_id","=",X).where("expires_at",">",Q).where("status","!=","completed").orderBy("created_at","desc").executeTakeFirst();if(!J)return null;return this.deserialize(J)}async listByTemplate(Y){return(await this.db.selectFrom("user_sandbox_sessions").selectAll().where("template_id","=",Y).orderBy("created_at","desc").execute()).map((Q)=>this.deserialize(Q))}async listByOrganization(Y){return(await this.db.selectFrom("user_sandbox_sessions").selectAll().where("organization_id","=",Y).orderBy("created_at","desc").execute()).map((Q)=>this.deserialize(Q))}async update(Y,X){let J={updated_at:new Date().toISOString()};if(X.status!==void 0)J.status=X.status;if(X.app_statuses!==void 0)J.app_statuses=JSON.stringify(X.app_statuses);if(X.created_agent_id!==void 0)J.created_agent_id=X.created_agent_id;await this.db.updateTable("user_sandbox_sessions").set(J).where("id","=",Y).execute();let G=await this.findById(Y);if(!G)throw Error(`Session not found after update: ${Y}`);return G}async delete(Y){await this.db.deleteFrom("user_sandbox_sessions").where("id","=",Y).execute()}async deleteExpired(){let Y=new Date().toISOString(),X=await this.db.deleteFrom("user_sandbox_sessions").where("expires_at","<",Y).where("status","!=","completed").executeTakeFirst();return Number(X.numDeletedRows??0)}async deleteByExternalUserId(Y,X){let Q=await this.db.deleteFrom("user_sandbox_sessions").where("organization_id","=",Y).where("external_user_id","=",X).executeTakeFirst();return Number(Q.numDeletedRows??0)}deserialize(Y){let X={};try{X=JSON.parse(Y.app_statuses)}catch{X={}}return{id:Y.id,template_id:Y.template_id,organization_id:Y.organization_id,external_user_id:Y.external_user_id,status:Y.status,app_statuses:X,created_agent_id:Y.created_agent_id,redirect_url:Y.redirect_url,created_at:Y.created_at,updated_at:Y.updated_at,expires_at:Y.expires_at}}}var WQ0=()=>{};function ZP(Y){ZQ0=Y}function eY(){if(!ZQ0)throw Error(`Plugin storage not initialized. Make sure the "${jb}" plugin is enabled.`);return ZQ0}function KQ0(){return process.env.BASE_URL||"http://localhost:3000"}var ZQ0=null;var FG=()=>{};function ZV6(Y){let X=Y.db,Q={templates:new GP(X),sessions:new WP(X)};return ZP(Q),Q}var KV6=l(()=>{GQ0();WQ0();FG()});var gs4,ms4,ls4,ds4,ps4,oH,cs4,HV6,FV6,VV6,$V6,qV6,zV6,BV6,UV6,DV6,OV6,NV6,ns4,LV6,wV6,MV6;var l7=l(()=>{i0();gs4=z.object({authorizationEndpoint:z.string().describe("OAuth authorization endpoint URL"),tokenEndpoint:z.string().describe("OAuth token endpoint URL"),clientId:z.string().describe("OAuth client ID"),scopes:z.array(z.string()).describe("OAuth scopes to request"),grantType:z.enum(["authorization_code","client_credentials"]).describe("OAuth grant type")}),ms4=z.object({headers:z.record(z.string(),z.string()).optional().describe("HTTP headers")}),ls4=z.object({command:z.string().describe("Command to run"),args:z.array(z.string()).optional().describe("Command arguments"),cwd:z.string().optional().describe("Working directory"),envVars:z.record(z.string(),z.string()).optional().describe("Environment variables")}),ds4=z.object({app_name:z.string().describe("App name from registry (e.g., '@deco/gmail')"),title:z.string().describe("Display title for the app"),description:z.string().nullable().optional().describe("App description"),icon:z.string().nullable().optional().describe("Icon URL"),connection_type:z.enum(["HTTP","SSE","Websocket","STDIO"]).describe("Connection type"),connection_url:z.string().nullable().optional().describe("MCP server URL"),connection_headers:z.union([ms4,ls4]).nullable().optional().describe("Connection parameters"),oauth_config:gs4.nullable().optional().describe("OAuth configuration if required"),selected_tools:z.array(z.string()).nullable().optional().describe("Selected tools to expose (null = all)"),selected_resources:z.array(z.string()).nullable().optional().describe("Selected resources to expose (null = all)"),selected_prompts:z.array(z.string()).nullable().optional().describe("Selected prompts to expose (null = all)")}),ps4=z.object({configured:z.boolean().describe("Whether the app has been configured"),connection_id:z.string().nullable().describe("Connection ID if created"),error:z.string().nullable().describe("Error message if configuration failed")}),oH=z.object({id:z.string(),organization_id:z.string(),title:z.string(),description:z.string().nullable(),icon:z.string().nullable(),required_apps:z.array(ds4),redirect_url:z.string().nullable(),webhook_url:z.string().nullable(),event_type:z.string(),agent_title_template:z.string(),agent_instructions:z.string().nullable(),tool_selection_mode:z.enum(["inclusion","exclusion"]),status:z.enum(["active","inactive"]),created_at:z.string(),updated_at:z.string(),created_by:z.string().nullable()}),cs4=z.object({id:z.string(),template_id:z.string(),organization_id:z.string(),external_user_id:z.string(),status:z.enum(["pending","in_progress","completed"]),app_statuses:z.record(z.string(),ps4),created_agent_id:z.string().nullable(),redirect_url:z.string().nullable(),created_at:z.string(),updated_at:z.string(),expires_at:z.string()}),HV6=z.object({app_name:z.string().describe("App name from registry (e.g., '@deco/openrouter')"),selected_tools:z.array(z.string()).nullable().optional().describe("Selected tools to expose (null = all)"),selected_resources:z.array(z.string()).nullable().optional().describe("Selected resources to expose (null = all)"),selected_prompts:z.array(z.string()).nullable().optional().describe("Selected prompts to expose (null = all)")}),FV6=z.object({title:z.string().describe("Title for the template"),description:z.string().optional().describe("Optional description"),icon:z.string().optional().describe("Optional icon URL"),registry_id:z.string().describe("Connection ID of the registry to look up apps from"),required_apps:z.array(HV6).describe("Apps to include - only app_name required, details fetched from registry"),redirect_url:z.string().optional().describe("URL to redirect to after completion"),webhook_url:z.string().optional().describe("Webhook URL to call on completion"),event_type:z.string().optional().describe("Event type to emit (default: integration.completed)"),agent_title_template:z.string().optional().describe("Template for agent title (supports {{externalUserId}})"),agent_instructions:z.string().optional().describe("Instructions for the created agent"),tool_selection_mode:z.enum(["inclusion","exclusion"]).optional().describe("Tool selection mode for the agent")}),VV6=z.object({id:z.string().describe("Template ID to update"),title:z.string().optional(),description:z.string().nullable().optional(),icon:z.string().nullable().optional(),registry_id:z.string().optional().describe("Connection ID of the registry (required if updating required_apps)"),required_apps:z.array(HV6).optional().describe("Updated apps (details will be fetched from registry)"),redirect_url:z.string().nullable().optional(),webhook_url:z.string().nullable().optional(),event_type:z.string().optional(),agent_title_template:z.string().optional(),agent_instructions:z.string().nullable().optional(),tool_selection_mode:z.enum(["inclusion","exclusion"]).optional(),status:z.enum(["active","inactive"]).optional()}),$V6=z.object({id:z.string().describe("Template ID")}),qV6=z.object({}),zV6=z.object({id:z.string().describe("Template ID to delete")}),BV6=z.object({templateId:z.string().describe("Template ID"),externalUserId:z.string().describe("External user ID from your platform"),expiresInSeconds:z.number().optional().describe("Session expiration in seconds (default: 7 days)")}),UV6=z.object({sessionId:z.string().describe("Session ID"),url:z.string().describe("URL for the connect flow"),expiresAt:z.string().describe("Session expiration time"),agentId:z.string().nullable().optional().describe("Virtual MCP ID for this user (unique per template + user)"),created:z.boolean().describe("Whether the agent was newly created (true) or already existed (false)")}),DV6=z.object({templateId:z.string().optional().describe("Filter by template ID")}),OV6=z.object({sessions:z.array(cs4)}),NV6=z.object({externalUserId:z.string().describe("External user ID to find agents for")}),ns4=z.object({id:z.string().describe("Agent (Virtual MCP) ID"),title:z.string(),external_user_id:z.string(),template_id:z.string().nullable(),created_at:z.string()}),LV6=z.object({agents:z.array(ns4)}),wV6=z.object({externalUserId:z.string().describe("External user ID whose session data should be cleared")}),MV6=z.object({success:z.boolean(),deletedAgents:z.number().describe("Number of agents (Virtual MCPs) deleted"),deletedConnections:z.number().describe("Number of child connections deleted"),deletedSessions:z.number().describe("Number of sessions deleted")})});function as4(Y){if(!Y?.url)return null;try{let X=new URL(Y.url);if(X.hostname==="github.com"){let Q=X.pathname.split("/").filter(Boolean);if(Q.length>=1)return`https://github.com/${Q[0]}.png`}}catch{}return null}function rs4(Y){return Y.find((Q)=>Q.name.endsWith("_LIST"))?.name??null}function os4(Y){if(!Y)return[];if(Array.isArray(Y))return Y;if(typeof Y==="object"&&Y!==null){let X=Object.keys(Y).find((Q)=>Array.isArray(Y[Q]));if(X)return Y[X]}return[]}function ss4(Y,X,Q,J){let G=Y.server,K=Y._meta?.["mcp.mesh"],W=K?.friendlyName||K?.friendly_name||Y.title||G?.title||G?.name||"Unnamed MCP Server",Z=G?.description||null,H=G?.icons?.[0]?.src||as4(G?.repository)||null,F=K?.oauth_config,V=F&&typeof F.authorizationEndpoint==="string"&&typeof F.tokenEndpoint==="string"&&typeof F.clientId==="string"&&Array.isArray(F.scopes)&&(F.grantType==="authorization_code"||F.grantType==="client_credentials")?{authorizationEndpoint:F.authorizationEndpoint,tokenEndpoint:F.tokenEndpoint,clientId:F.clientId,scopes:F.scopes,grantType:F.grantType}:null,$=G?.packages??[],q=G?.remotes??[],B,D,O=null,L=q[0],w=$[0];if(L){if(B=is4[L.type??""]??L.type?.toUpperCase()??"HTTP",D=L.url??null,L.headers&&L.headers.length>0){let R={};for(let P of L.headers)if(P.name&&P.value)R[P.name]=P.value;if(Object.keys(R).length>0)O={headers:R}}}else if(w){B="STDIO",D=null;let R=w.identifier||w.name,P={};if(w.environmentVariables){for(let T of w.environmentVariables)if(T.name)P[T.name]=""}O={command:"npx",args:R?["-y",R]:[],...Object.keys(P).length>0&&{envVars:P}}}else B="HTTP",D=null;return{title:W,description:Z,icon:H,connection_type:B,connection_url:D,connection_headers:O,oauth_config:V,selected_tools:X,selected_resources:Q,selected_prompts:J}}async function ts4(Y,X,Q,J=null,G=null,K=null){let W=await Y.createMCPProxy(X);try{let Z=await W.listTools(),H=rs4(Z.tools);if(!H)throw Error(`Registry "${X}" does not have a LIST tool`);let F=await W.callTool({name:H,arguments:{where:{appName:Q}}}),V=F.structuredContent??F,q=os4(V)[0];if(!q)throw Error(`App "${Q}" not found in registry "${X}"`);let B=ss4(q,J,G,K);return{app_name:Q,...B}}finally{await W.close().catch(console.error)}}async function kb(Y,X,Q){let J=[];for(let G of Q){let K=await ts4(Y,X,G.app_name,G.selected_tools??null,G.selected_resources??null,G.selected_prompts??null);J.push(K)}return J}var is4;var HQ0=l(()=>{is4={"streamable-http":"HTTP",http:"HTTP",sse:"SSE",stdio:"STDIO",websocket:"Websocket"}});var AV6;var TV6=l(()=>{l7();FG();HQ0();AV6={name:"USER_SANDBOX_CREATE",description:"Create a new user sandbox for platform integration flows. Specify apps by name and the system will automatically fetch connection details from the registry.",inputSchema:FV6,outputSchema:oH,handler:async(Y,X)=>{let Q=Y,J=X;if(!J.organization)throw Error("Organization context required");await J.access.check();let G=await kb(J,Q.registry_id,Q.required_apps.map((Z)=>({app_name:Z.app_name,selected_tools:Z.selected_tools??null,selected_resources:Z.selected_resources??null,selected_prompts:Z.selected_prompts??null})));return await eY().templates.create({organization_id:J.organization.id,title:Q.title,description:Q.description??null,icon:Q.icon??null,required_apps:G,redirect_url:Q.redirect_url??null,webhook_url:Q.webhook_url??null,event_type:Q.event_type,agent_title_template:Q.agent_title_template,agent_instructions:Q.agent_instructions??null,tool_selection_mode:Q.tool_selection_mode,created_by:J.auth.user?.id??null})}}});var PV6;var EV6=l(()=>{l7();FG();HQ0();PV6={name:"USER_SANDBOX_UPDATE",description:"Update an existing user sandbox. If updating required_apps, provide registry_id to auto-fetch details.",inputSchema:VV6,outputSchema:oH,handler:async(Y,X)=>{let Q=Y,J=X;if(!J.organization)throw Error("Organization context required");await J.access.check();let G=eY(),K=await G.templates.findById(Q.id);if(!K)throw Error(`Template not found: ${Q.id}`);if(K.organization_id!==J.organization.id)throw Error("Access denied: template belongs to another organization");let W=void 0;if(Q.required_apps&&Q.required_apps.length>0){if(!Q.registry_id)throw Error("registry_id is required when updating required_apps");W=await kb(J,Q.registry_id,Q.required_apps.map((H)=>({app_name:H.app_name,selected_tools:H.selected_tools??null,selected_resources:H.selected_resources??null,selected_prompts:H.selected_prompts??null})))}return await G.templates.update(Q.id,{title:Q.title,description:Q.description,icon:Q.icon,required_apps:W,redirect_url:Q.redirect_url,webhook_url:Q.webhook_url,event_type:Q.event_type,agent_title_template:Q.agent_title_template,agent_instructions:Q.agent_instructions,tool_selection_mode:Q.tool_selection_mode,status:Q.status})}}});var CV6;var IV6=l(()=>{i0();l7();FG();CV6={name:"USER_SANDBOX_DELETE",description:"Delete a user sandbox",inputSchema:zV6,outputSchema:z.object({success:z.boolean(),id:z.string()}),handler:async(Y,X)=>{let Q=Y,J=X;if(!J.organization)throw Error("Organization context required");await J.access.check();let G=eY(),K=await G.templates.findById(Q.id);if(!K)throw Error(`Template not found: ${Q.id}`);if(K.organization_id!==J.organization.id)throw Error("Access denied: template belongs to another organization");return await G.templates.delete(Q.id),{success:!0,id:Q.id}}}});var RV6;var jV6=l(()=>{i0();l7();FG();RV6={name:"USER_SANDBOX_LIST",description:"List all user sandbox in the organization",inputSchema:qV6,outputSchema:z.object({templates:z.array(oH)}),handler:async(Y,X)=>{let Q=X;if(!Q.organization)throw Error("Organization context required");return await Q.access.check(),{templates:await eY().templates.list(Q.organization.id)}}}});var SV6;var kV6=l(()=>{l7();FG();SV6={name:"USER_SANDBOX_GET",description:"Get a user sandbox by ID",inputSchema:$V6,outputSchema:oH,handler:async(Y,X)=>{let Q=Y,J=X;if(!J.organization)throw Error("Organization context required");await J.access.check();let K=await eY().templates.findById(Q.id);if(K&&K.organization_id!==J.organization.id)throw Error("Access denied: template belongs to another organization");return K}}});async function vV6(Y,X){let Q=await X.sessions.findById(Y);if(!Q)throw new EZ("Session not found","SESSION_NOT_FOUND");if(new Date(Q.expires_at)<new Date)throw new EZ("Session has expired","SESSION_EXPIRED");return Q}async function es4(Y,X){let Q=await vV6(Y,X);if(Q.status==="completed")throw new EZ("Session is already completed. Create a new session to reconfigure.","SESSION_COMPLETED");return Q}function Yt4(Y,X){let Q=Y.metadata;if(!Q)throw new EZ("Connection has no metadata","CONNECTION_ACCESS_DENIED");let J=Q[sH.SESSION_ID]===X.id,G=Q[sH.EXTERNAL_USER_ID]===X.external_user_id&&Q[sH.TEMPLATE_ID]===X.template_id;if(!J&&!G)throw new EZ("Access denied: connection does not belong to this session","CONNECTION_ACCESS_DENIED")}function FQ0(Y,X,Q){return{[sH.SESSION_ID]:Y,[sH.EXTERNAL_USER_ID]:X,[sH.TEMPLATE_ID]:Q,source:"user-sandbox"}}function VQ0(Y,X){return{[sH.EXTERNAL_USER_ID]:Y,[sH.TEMPLATE_ID]:X,source:"user-sandbox"}}async function $$(Y,X,Q){let J=Q?.allowCompleted?await vV6(Y,X):await es4(Y,X);if(Q?.connection)Yt4(Q.connection,J);return J}var sH,EZ;var _V6=l(()=>{sH={SESSION_ID:"user_sandbox_session_id",EXTERNAL_USER_ID:"user_sandbox_external_user_id",TEMPLATE_ID:"user_sandbox_id"};EZ=class EZ extends Error{code;constructor(Y,X){super(Y);this.code=X;this.name="SessionAccessError"}}});var $Q0=l(()=>{_V6()});async function Qt4(Y,X,Q,J,G,K,W,Z){let H=Y,F=await H.selectFrom("user_sandbox_agents").select("connection_id").where("user_sandbox_id","=",J).where("external_user_id","=",G).executeTakeFirst();if(F)return{connectionId:F.connection_id,created:!1};let V=new Date().toISOString(),$=`usa_${Date.now().toString(36)}${crypto.randomUUID().replace(/-/g,"").substring(0,8)}`,q=`vir_${Date.now().toString(36)}${crypto.randomUUID().replace(/-/g,"").substring(0,8)}`;try{return await H.transaction().execute(async(B)=>{await B.insertInto("connections").values({id:q,organization_id:X,created_by:Q,title:K,description:W,icon:null,app_name:null,app_id:null,connection_type:"VIRTUAL",connection_url:`virtual://${q}`,connection_token:null,connection_headers:JSON.stringify({tool_selection_mode:Z}),oauth_config:null,configuration_state:null,configuration_scopes:null,metadata:JSON.stringify(VQ0(G,J)),tools:null,bindings:null,status:"active",created_at:V,updated_at:V}).execute(),await B.insertInto("user_sandbox_agents").values({id:$,user_sandbox_id:J,external_user_id:G,connection_id:q,created_at:V}).execute()}),{connectionId:q,created:!0}}catch(B){let D=String(B);if(D.includes("UNIQUE constraint")||D.includes("duplicate key")){let O=await H.selectFrom("user_sandbox_agents").select("connection_id").where("user_sandbox_id","=",J).where("external_user_id","=",G).executeTakeFirst();if(O)return{connectionId:O.connection_id,created:!1}}throw B}}var Xt4=604800,yV6;var fV6=l(()=>{l7();FG();$Q0();yV6={name:"USER_SANDBOX_CREATE_SESSION",description:"Create a connect session URL for an external user. Returns a URL that the user can visit to configure their integrations. Also creates a unique Virtual MCP (agent) for this user if one doesn't exist.",inputSchema:BV6,outputSchema:UV6,handler:async(Y,X)=>{let Q=Y,J=X;if(!J.organization)throw Error("Organization context required");await J.access.check();let G=eY(),K=await G.templates.findById(Q.templateId);if(!K)throw Error(`Template not found: ${Q.templateId}`);if(K.organization_id!==J.organization.id)throw Error("Access denied: template belongs to another organization");if(K.status!=="active")throw Error("Template is not active");let W=K.agent_title_template.replace("{{externalUserId}}",Q.externalUserId),Z=K.created_by??J.auth.user?.id??"system",{connectionId:H,created:F}=await Qt4(J.db,J.organization.id,Z,K.id,Q.externalUserId,W,K.agent_instructions,K.tool_selection_mode),V=await G.sessions.findExisting(Q.templateId,Q.externalUserId);if(V){if(!V.created_agent_id)await G.sessions.update(V.id,{created_agent_id:H});let O=KQ0();return{sessionId:V.id,url:`${O}/connect/${V.id}`,expiresAt:V.expires_at,agentId:V.created_agent_id??H,created:F}}let $=Q.expiresInSeconds??Xt4,q=new Date(Date.now()+$*1000).toISOString(),B=await G.sessions.create({template_id:Q.templateId,organization_id:J.organization.id,external_user_id:Q.externalUserId,redirect_url:K.redirect_url,expires_at:q,created_agent_id:H}),D=KQ0();return{sessionId:B.id,url:`${D}/connect/${B.id}`,expiresAt:B.expires_at,agentId:H,created:F}}}});var hV6;var bV6=l(()=>{l7();FG();hV6={name:"USER_SANDBOX_LIST_SESSIONS",description:"List connect sessions for monitoring and management",inputSchema:DV6,outputSchema:OV6,handler:async(Y,X)=>{let Q=Y,J=X;if(!J.organization)throw Error("Organization context required");await J.access.check();let G=eY(),K;if(Q.templateId){let W=await G.templates.findById(Q.templateId);if(!W)throw Error(`Template not found: ${Q.templateId}`);if(W.organization_id!==J.organization.id)throw Error("Access denied: template belongs to another organization");K=await G.sessions.listByTemplate(Q.templateId)}else K=await G.sessions.listByOrganization(J.organization.id);return{sessions:K}}}});var Jt4="user_sandbox_external_user_id",Gt4="user_sandbox_id",xV6;var uV6=l(()=>{l7();xV6={name:"USER_SANDBOX_LIST_USER_AGENTS",description:"List all agents (Virtual MCPs) created for an external user. Use this to find agents created via user sandbox for a specific user in your platform.",inputSchema:NV6,outputSchema:LV6,handler:async(Y,X)=>{let Q=Y,J=X;if(!J.organization)throw Error("Organization context required");return await J.access.check(),{agents:(await J.storage.connections.list(J.organization.id)).filter((W)=>{if(W.connection_type!=="VIRTUAL")return!1;let Z=W.metadata;if(!Z)return!1;return Z[Jt4]===Q.externalUserId}).map((W)=>{let Z=W.metadata;return{id:W.id,title:W.title,external_user_id:Q.externalUserId,template_id:Z[Gt4]??null,created_at:W.created_at}})}}}});var Wt4="user_sandbox_external_user_id",gV6;var mV6=l(()=>{l7();FG();gV6={name:"USER_SANDBOX_CLEAR_USER_SESSION",description:"Clear all session data for an external user, revoking all access they've granted. This deletes their agents (Virtual MCPs), child connections, OAuth tokens, and sessions. Use this when a user wants to disconnect all their integrations.",inputSchema:wV6,outputSchema:MV6,handler:async(Y,X)=>{let Q=Y,J=X;if(!J.organization)throw Error("Organization context required");await J.access.check();let G=J.db,K=eY(),Z=(await G.selectFrom("connections").select(["id","metadata"]).where("organization_id","=",J.organization.id).where("connection_type","=","VIRTUAL").execute()).filter((V)=>{if(!V.metadata)return!1;try{return JSON.parse(V.metadata)[Wt4]===Q.externalUserId}catch{return!1}}).map((V)=>V.id),H=0;if(Z.length>0){let $=(await G.selectFrom("connection_aggregations").select("child_connection_id").where("parent_connection_id","in",Z).execute()).map((q)=>q.child_connection_id);if(await G.deleteFrom("connection_aggregations").where("parent_connection_id","in",Z).execute(),$.length>0)await G.deleteFrom("downstream_tokens").where("connectionId","in",$).execute(),await G.deleteFrom("connections").where("id","in",$).execute(),H=$.length;await G.deleteFrom("connections").where("id","in",Z).execute(),await G.deleteFrom("user_sandbox_agents").where("external_user_id","=",Q.externalUserId).execute()}let F=await K.sessions.deleteByExternalUserId(J.organization.id,Q.externalUserId);return{success:!0,deletedAgents:Z.length,deletedConnections:H,deletedSessions:F}}}});var lV6;var dV6=l(()=>{TV6();EV6();IV6();jV6();kV6();fV6();bV6();uV6();mV6();FG();lV6=[AV6,PV6,CV6,RV6,SV6,yV6,hV6,xV6,gV6]});function Zt4(Y){let X=Date.now().toString(36),Q=crypto.randomUUID().replace(/-/g,"").substring(0,8);return`${Y}_${X}${Q}`}async function qQ0(Y,X,Q,J){let G={success:!1,agentId:Y.created_agent_id,connectionIds:[],redirectUrl:null,eventEmitted:!1,webhookCalled:!1};try{let K=J.db,W=new Date().toISOString(),Z=Y.created_agent_id;if(!Z)throw Error("Session has no agent - this should not happen");let H=[],F=[];for(let[q,B]of Object.entries(Y.app_statuses))if(B.configured&&B.connection_id){H.push(B.connection_id);let D=X.required_apps.find((O)=>O.app_name===q);F.push({appName:q,connectionId:B.connection_id,selectedTools:D?.selected_tools??null,selectedResources:D?.selected_resources??null,selectedPrompts:D?.selected_prompts??null})}if(G.connectionIds=H,await K.deleteFrom("connection_aggregations").where("parent_connection_id","=",Z).execute(),F.length>0)await K.insertInto("connection_aggregations").values(F.map((q)=>({id:Zt4("agg"),parent_connection_id:Z,child_connection_id:q.connectionId,selected_tools:q.selectedTools?JSON.stringify(q.selectedTools):null,selected_resources:q.selectedResources?JSON.stringify(q.selectedResources):null,selected_prompts:q.selectedPrompts?JSON.stringify(q.selectedPrompts):null,created_at:W}))).execute();await Q.sessions.update(Y.id,{status:"completed"});let V={type:X.event_type,data:{externalUserId:Y.external_user_id,agentId:Z,templateId:X.id,sessionId:Y.id,connections:H.map((q)=>{let B=Object.entries(Y.app_statuses).find(([D,O])=>O.connection_id===q)?.[0];return{id:q,appName:B??"unknown"}})}};if(J.eventBus)try{await J.eventBus.publish(J.organizationId,"user-sandbox",V),G.eventEmitted=!0}catch(q){console.error("[UserSandbox] Failed to emit completion event:",q)}if(X.webhook_url)try{let q=await fetch(X.webhook_url,{method:"POST",headers:{"Content-Type":"application/json","X-User-Sandbox-Event":X.event_type},body:JSON.stringify(V.data)});if(!q.ok)console.error("[UserSandbox] Webhook returned error:",q.status);else G.webhookCalled=!0}catch(q){console.error("[UserSandbox] Failed to call webhook:",q)}let $=Y.redirect_url??X.redirect_url;if($){let q=new URL($);q.searchParams.set("sessionId",Y.id),q.searchParams.set("externalUserId",Y.external_user_id),q.searchParams.set("agentId",Z),G.redirectUrl=q.toString()}return G.success=!0,G}catch(K){throw console.error("[UserSandbox] Completion failed:",K),K}}var pV6=()=>{};function Kt4(){let Y=Date.now().toString(36),X=crypto.randomUUID().replace(/-/g,"").substring(0,8);return`conn_${Y}${X}`}async function Ht4(Y,X,Q,J,G,K,W){let Z=Kt4(),H=new Date().toISOString();if(!W.title)throw Error(`App "${W.app_name}" is missing required field: title`);if(!W.connection_type)throw Error(`App "${W.app_name}" is missing required field: connection_type`);if(!W.connection_url&&W.connection_type!=="STDIO")throw Error(`App "${W.app_name}" is missing required field: connection_url`);let F={id:Z,organization_id:X,created_by:Q,title:W.title,description:W.description??null,icon:W.icon??null,app_name:W.app_name,app_id:null,connection_type:W.connection_type,connection_url:W.connection_url??"",connection_token:null,connection_headers:W.connection_headers?JSON.stringify(W.connection_headers):null,oauth_config:W.oauth_config?JSON.stringify(W.oauth_config):null,configuration_state:null,configuration_scopes:null,metadata:JSON.stringify(FQ0(J,G,K)),tools:null,bindings:null,status:"active",created_at:H,updated_at:H};return await Y.insertInto("connections").values(F).execute(),Z}function KP(Y,X){if(X instanceof EZ){let Q={SESSION_NOT_FOUND:404,SESSION_EXPIRED:410,SESSION_COMPLETED:409,ACCESS_DENIED:403,CONNECTION_ACCESS_DENIED:403};return Y.json({error:X.message,code:X.code},Q[X.code]??400)}return console.error("[UserSandbox] Connect API error:",X),Y.json({error:X instanceof Error?X.message:"Internal error"},500)}function zQ0(Y,X){let Q=X.db,J=new GP(Q),G=new WP(Q),K={templates:J,sessions:G};Y.get("/api/user-sandbox/sessions/:sessionId",async(W)=>{try{let Z=W.req.param("sessionId"),H=await $$(Z,K,{allowCompleted:!0}),F=await J.findById(H.template_id);if(!F)return W.json({error:"Template not found"},404);return W.json({session:{id:H.id,status:H.status,external_user_id:H.external_user_id,expires_at:H.expires_at,redirect_url:H.redirect_url,created_agent_id:H.created_agent_id},template:{id:F.id,title:F.title,description:F.description,icon:F.icon},apps:F.required_apps.map((V)=>({app_name:V.app_name,title:V.title,description:V.description,icon:V.icon,connection_type:V.connection_type,requires_oauth:!!V.oauth_config,selected_tools:V.selected_tools,selected_resources:V.selected_resources,selected_prompts:V.selected_prompts,status:H.app_statuses[V.app_name]??{configured:!1,connection_id:null,error:null}}))})}catch(Z){return KP(W,Z)}}),Y.post("/api/user-sandbox/sessions/:sessionId/provision",async(W)=>{try{let Z=W.req.param("sessionId"),H=await W.req.json();if(!H.app_name)return W.json({error:"app_name is required"},400);let F=await $$(Z,K,{allowCompleted:!0}),V=await J.findById(F.template_id);if(!V)return W.json({error:"Template not found"},404);let $=V.required_apps.find((O)=>O.app_name===H.app_name);if(!$)return W.json({error:`App "${H.app_name}" is not required by this template`},400);let q=F.app_statuses[H.app_name];if(q?.connection_id)return W.json({success:!0,connection_id:q.connection_id,already_provisioned:!0,requires_oauth:!!$.oauth_config});if(!V.created_by)return W.json({error:"Template is missing created_by - cannot create connections"},500);let B=await Ht4(Q,F.organization_id,V.created_by,Z,F.external_user_id,F.template_id,$),D={...F.app_statuses,[H.app_name]:{configured:!1,connection_id:B,error:null}};return await G.update(Z,{status:"in_progress",app_statuses:D}),W.json({success:!0,connection_id:B,already_provisioned:!1,requires_oauth:!!$.oauth_config})}catch(Z){return KP(W,Z)}}),Y.post("/api/user-sandbox/sessions/:sessionId/configure",async(W)=>{try{let Z=W.req.param("sessionId"),H=await W.req.json();if(!H.app_name)return W.json({error:"app_name is required"},400);let F=await $$(Z,K,{allowCompleted:!0}),V=await J.findById(F.template_id);if(!V)return W.json({error:"Template not found"},404);if(!V.required_apps.find((L)=>L.app_name===H.app_name))return W.json({error:`App "${H.app_name}" is not required by this template`},400);let q=F.app_statuses[H.app_name],D={configured:!0,connection_id:H.connection_id??q?.connection_id??null,error:null},O={...F.app_statuses,[H.app_name]:D};return await G.update(Z,{status:"in_progress",app_statuses:O}),W.json({success:!0,app_name:H.app_name,status:D})}catch(Z){return KP(W,Z)}}),Y.post("/api/user-sandbox/sessions/:sessionId/oauth-token",async(W)=>{try{let Z=W.req.param("sessionId"),H=await W.req.json();if(!H.connection_id)return W.json({error:"connection_id is required"},400);if(!H.access_token)return W.json({error:"access_token is required"},400);let F=await $$(Z,K,{allowCompleted:!0});if(!Object.values(F.app_statuses).some((R)=>R.connection_id===H.connection_id))return W.json({error:"Connection does not belong to this session"},403);let $=H.expires_in?new Date(Date.now()+H.expires_in*1000):null,q=new Date().toISOString(),B=await X.vault.encrypt(H.access_token),D=H.refresh_token?await X.vault.encrypt(H.refresh_token):null,O=H.client_secret?await X.vault.encrypt(H.client_secret):null,L=Q,w=await L.selectFrom("downstream_tokens").select(["id"]).where("connectionId","=",H.connection_id).executeTakeFirst();if(w)await L.updateTable("downstream_tokens").set({accessToken:B,refreshToken:D,scope:H.scope??null,expiresAt:$?.toISOString()??null,clientId:H.client_id??null,clientSecret:O,tokenEndpoint:H.token_endpoint??null,updatedAt:q}).where("id","=",w.id).execute();else{let R=`dtok_${Date.now().toString(36)}${crypto.randomUUID().replace(/-/g,"").substring(0,8)}`;await L.insertInto("downstream_tokens").values({id:R,connectionId:H.connection_id,accessToken:B,refreshToken:D,scope:H.scope??null,expiresAt:$?.toISOString()??null,clientId:H.client_id??null,clientSecret:O,tokenEndpoint:H.token_endpoint??null,createdAt:q,updatedAt:q}).execute()}return W.json({success:!0,expiresAt:$})}catch(Z){return KP(W,Z)}}),Y.post("/api/user-sandbox/sessions/:sessionId/complete",async(W)=>{try{let Z=W.req.param("sessionId"),H=await $$(Z,K,{allowCompleted:!0}),F=await J.findById(H.template_id);if(!F)return W.json({error:"Template not found"},404);if(F.required_apps.filter((q)=>{return H.app_statuses[q.app_name]?.configured}).length===0)return W.json({error:"At least one app must be configured"},400);let $=await qQ0(H,F,K,{organizationId:H.organization_id,db:Q});return W.json({success:$.success,completed:!0,agentId:$.agentId,redirectUrl:$.redirectUrl,eventEmitted:$.eventEmitted,webhookCalled:$.webhookCalled})}catch(Z){return KP(W,Z)}})}var cV6=l(()=>{GQ0();WQ0();$Q0();pV6()});var nV6=l(()=>{cV6()});var iV6;var aV6=l(()=>{WV6();KV6();dV6();nV6();iV6={id:jb,description:XV6,tools:lV6,publicRoutes:(Y,X)=>{zQ0(Y,X)},migrations:GV6,createStorage:(Y)=>{let X=ZV6(Y);return ZP(X),X}}});var vb;var rV6=l(()=>{aV6();vb=[iV6]});function Ft4(Y,X){return oV6.set(X.name,Y),{...X,handler:async(Q,J)=>{let G=J.organization;if(!G)throw Error(`Organization context required for plugin tool "${X.name}"`);if(!(await J.storage.organizationSettings.get(G.id))?.enabled_plugins?.includes(Y))throw Error(`Plugin "${Y}" is not enabled for this organization. Enable it in Settings > Plugins.`);return X.handler(Q,J)},execute:async(Q,J)=>{let G=J.organization;if(!G)throw Error(`Organization context required for plugin tool "${X.name}"`);if(!(await J.storage.organizationSettings.get(G.id))?.enabled_plugins?.includes(Y))throw Error(`Plugin "${Y}" is not enabled for this organization. Enable it in Settings > Plugins.`);return X.execute(Q,J)}}}function sV6(Y,X){return Y.filter((Q)=>{let J=oV6.get(Q.name);if(!J)return!0;return X?.includes(J)??!1})}function tV6(){let Y=[];for(let X of vb){if(!X.tools)continue;for(let Q of X.tools){let J={name:Q.name,description:Q.description??"",inputSchema:Q.inputSchema,outputSchema:Q.outputSchema,handler:Q.handler,execute:Q.handler},G=Ft4(X.id,J);Y.push(G)}}return Y}function eV6(Y,X){for(let Q of vb){if(Q.routes){let J=new Y.constructor;Q.routes(J,X),Y.route(`/api/plugins/${Q.id}`,J)}if(Q.publicRoutes)Q.publicRoutes(Y,X)}}function Y$6(Y,X){let Q={db:Y,vault:{encrypt:(J)=>X.encrypt(J),decrypt:(J)=>X.decrypt(J)}};for(let J of vb)if(J.createStorage){let G=J.createStorage(Q);Vt4.set(J.id,G)}}var oV6,Vt4;var BQ0=l(()=>{rV6();oV6=new Map;Vt4=new Map});function W6(Y){return{...Y,execute:async(X,Q)=>{let J=Date.now();return await Q.timings.measure(`tool.${Y.name}`,async()=>Q.tracer.startActiveSpan(`tool.${Y.name}`,{attributes:{"tool.name":Y.name,"organization.id":Q.organization?.id??"system","user.id":Q.auth.user?.id??Q.auth.apiKey?.userId??"anonymous"}},async(G)=>{try{Q.toolName=Y.name,Q.access.setToolName?.(Y.name);let K=await Y.handler(X,Q),W=Date.now()-J;return Q.meter.createHistogram("tool.execution.duration",{description:"Duration of tool executions in milliseconds",unit:"ms"}).record(W,{"tool.name":Y.name,"organization.id":Q.organization?.id??"system",status:"success"}),Q.meter.createCounter("tool.execution.count",{description:"Number of tool executions"}).add(1,{"tool.name":Y.name,status:"success"}),G.setStatus({code:UQ0.SpanStatusCode.OK}),K}catch(K){throw Q.meter.createCounter("tool.execution.errors",{description:"Number of tool execution errors"}).add(1,{"tool.name":Y.name,"error.type":K.constructor.name}),G.setStatus({code:UQ0.SpanStatusCode.ERROR,message:K.message}),G.recordException(K),K}finally{G.end()}}))}}}var UQ0;var z4=l(()=>{UQ0=l4(u0(),1)});function f6(Y){if(!Y.organization)throw Error("This operation requires organization scope");return Y.organization}function n8(Y){return Y.auth.user?.id??Y.auth.apiKey?.userId}function $t4(Y){return!!(Y.auth.user||Y.auth.apiKey)}function z6(Y){if(!$t4(Y))throw Error("Authentication required")}var _b,X$6,Q$6,J$6,G$6,W$6,Z$6,K$6,H$6,F$6;var VD=l(()=>{i0();_b=z.record(z.string(),z.array(z.string())),X$6=z.object({id:z.string().describe("Unique identifier for the API key"),name:z.string().describe("Human-readable name for the API key"),userId:z.string().describe("ID of the user who owns this API key"),permissions:_b.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:z.string().datetime().nullable().optional().describe("Expiration date of the API key (ISO 8601)"),createdAt:z.string().datetime().describe("When the API key was created (ISO 8601)")}),Q$6=z.object({name:z.string().min(1).max(64).describe("Human-readable name for the API key"),permissions:_b.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:z.number().positive().optional().describe("Expiration time in seconds. If not provided, key never expires."),metadata:z.record(z.string(),z.unknown()).optional().describe("Additional metadata to store with the API key")}),J$6=z.object({id:z.string().describe("Unique identifier for the API key"),name:z.string().describe("Human-readable name for the API key"),key:z.string().describe("The actual API key value. STORE THIS SECURELY - it will not be shown again!"),permissions:_b.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:z.string().datetime().nullable().optional().describe("Expiration date of the API key (ISO 8601)"),createdAt:z.string().datetime().describe("When the API key was created (ISO 8601)")}),G$6=z.object({}),W$6=z.object({items:z.array(X$6).describe("List of API keys (without key values)")}),Z$6=z.object({keyId:z.string().describe("ID of the API key to update"),name:z.string().min(1).max(64).optional().describe("New name for the API key"),permissions:_b.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:z.record(z.string(),z.unknown()).optional().describe("New metadata. Replaces existing metadata.")}),K$6=z.object({item:X$6.describe("The updated API key (without key value)")}),H$6=z.object({keyId:z.string().describe("ID of the API key to delete")}),F$6=z.object({success:z.boolean().describe("Whether the deletion was successful"),keyId:z.string().describe("ID of the deleted API key")})});var DQ0;var V$6=l(()=>{z4();VD();DQ0=W6({name:"API_KEY_CREATE",description:"Create a new API key with specified permissions. The key value is only returned once - store it securely!",inputSchema:Q$6,outputSchema:J$6,handler:async(Y,X)=>{z6(X),await X.access.check();let Q=await X.boundAuth.apiKey.create({name:Y.name,permissions:Y.permissions,expiresIn:Y.expiresIn,metadata:{...Y.metadata,organization:X.organization}}),J=Q.expiresAt?Q.expiresAt instanceof Date?Q.expiresAt.toISOString():Q.expiresAt:null,G=Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt;return{id:Q.id,name:Q.name??Y.name,key:Q.key,permissions:Q.permissions??{},expiresAt:J,createdAt:G}}})});var OQ0;var $$6=l(()=>{z4();VD();OQ0=W6({name:"API_KEY_DELETE",description:"Delete an API key. This instantly revokes the key - it can no longer be used for authentication.",inputSchema:H$6,outputSchema:F$6,handler:async(Y,X)=>{if(z6(X),await X.access.check(),!n8(X))throw Error("User ID required to delete API key");let G=(await X.boundAuth.apiKey.list())?.find((H)=>H.id===Y.keyId);if(!G)throw Error("API key not found");let W=G.metadata?.organization?.id,Z=X.organization?.id;if(W!==Z)throw Error("Cannot delete API key from another organization");return await X.boundAuth.apiKey.delete(Y.keyId),{success:!0,keyId:Y.keyId}}})});var NQ0;var q$6=l(()=>{z4();VD();NQ0=W6({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:G$6,outputSchema:W$6,handler:async(Y,X)=>{z6(X),await X.access.check();let Q=await X.boundAuth.apiKey.list(),J=X.organization?.id;return{items:(Q??[]).filter((K)=>{return K.metadata?.organization?.id===J}).map((K)=>({id:K.id,name:K.name??"Unnamed Key",userId:K.userId,permissions:K.permissions??{},expiresAt:K.expiresAt?K.expiresAt instanceof Date?K.expiresAt.toISOString():K.expiresAt:null,createdAt:K.createdAt instanceof Date?K.createdAt.toISOString():K.createdAt}))}}})});var LQ0;var z$6=l(()=>{z4();VD();LQ0=W6({name:"API_KEY_UPDATE",description:"Update an existing API key's name, permissions, or metadata. Note: Key value cannot be changed or retrieved.",inputSchema:Z$6,outputSchema:K$6,handler:async(Y,X)=>{if(z6(X),await X.access.check(),!n8(X))throw Error("User ID required to update API key");let G=(await X.boundAuth.apiKey.list())?.find((F)=>F.id===Y.keyId);if(!G)throw Error(`API key not found: ${Y.keyId}`);let W=G.metadata?.organization?.id,Z=X.organization?.id;if(W!==Z)throw Error("Cannot update API key from another organization");let H=await X.boundAuth.apiKey.update({keyId:Y.keyId,name:Y.name,permissions:Y.permissions,metadata:{...Y.metadata,organization:X.organization}});if(!H)throw Error(`Failed to update API key: ${Y.keyId}`);return{item:{id:H.id,name:H.name??Y.name??"Unnamed Key",userId:H.userId,permissions:H.permissions??{},expiresAt:H.expiresAt?H.expiresAt instanceof Date?H.expiresAt.toISOString():H.expiresAt:null,createdAt:H.createdAt instanceof Date?H.createdAt.toISOString():H.createdAt}}}})});var B$6=l(()=>{V$6();$$6();q$6();z$6();VD()});var U$6,D$6,O$6,N$6,L$6,w$6;var HP=l(()=>{i0();U$6=z.object({query:z.string().describe("Natural language search query (e.g., 'send email', 'create order')"),limit:z.number().default(10).describe("Maximum results to return (default: 10)")}),D$6=z.object({query:z.string(),results:z.array(z.object({name:z.string(),description:z.string().optional(),connection:z.string()})),totalAvailable:z.number()}),O$6=z.object({tools:z.array(z.string()).min(1).describe("Array of tool names to get detailed schemas for")}),N$6=z.object({tools:z.array(z.object({name:z.string(),description:z.string().optional(),connection:z.string(),inputSchema:z.unknown(),outputSchema:z.unknown().optional()})),notFound:z.array(z.string())}),L$6=z.object({code:z.string().min(1).describe("JavaScript code to execute. It runs as an async function body; you can use top-level `return` and `await`."),timeoutMs:z.number().default(3000).describe("Max execution time in milliseconds (default: 3000).")}),w$6=z.object({returnValue:z.unknown().optional(),error:z.string().optional(),consoleLogs:z.array(z.object({type:z.enum(["log","warn","error"]),content:z.string()}))})});function M$6(Y){let X=[],Q=[],J=(H)=>{let F=Y.newFunction(H,(...V)=>{try{let $=V.map((q)=>Y.dump(q));X.push({type:H??"log",content:$.map(String).join(" ")})}finally{V.forEach(($)=>$.dispose())}return Y.undefined});return Q.push(F),F},G=Y.newObject();Q.push(G);let K=J("log"),W=J("warn"),Z=J("error");return Y.setProp(G,"log",K),Y.setProp(G,"warn",W),Y.setProp(G,"error",Z),Y.setProp(Y.global,"console",G),{logs:X,[Symbol.dispose](){Q.forEach((H)=>H.dispose())}}}var q$,wQ0,yb,z$,FP;var fb=l(()=>{q$={JS_EVAL_TYPE_GLOBAL:0,JS_EVAL_TYPE_MODULE:1,JS_EVAL_TYPE_DIRECT:2,JS_EVAL_TYPE_INDIRECT:3,JS_EVAL_TYPE_MASK:3,JS_EVAL_FLAG_STRICT:8,JS_EVAL_FLAG_STRIP:16,JS_EVAL_FLAG_COMPILE_ONLY:32,JS_EVAL_FLAG_BACKTRACE_BARRIER:64},wQ0={BaseObjects:1,Date:2,Eval:4,StringNormalize:8,RegExp:16,RegExpCompiler:32,JSON:64,Proxy:128,MapSet:256,TypedArrays:512,Promise:1024,BigInt:2048,BigFloat:4096,BigDecimal:8192,OperatorOverloading:16384,BignumExt:32768},yb={Pending:0,Fulfilled:1,Rejected:2},z$={JS_GPN_STRING_MASK:1,JS_GPN_SYMBOL_MASK:2,JS_GPN_PRIVATE_MASK:4,JS_GPN_ENUM_ONLY:16,JS_GPN_SET_ENUM:32,QTS_GPN_NUMBER_MASK:64,QTS_STANDARD_COMPLIANT_NUMBER:128},FP={IsStrictlyEqual:0,IsSameValue:1,IsSameValueZero:2}});function $D(...Y){CQ0&&console.log("quickjs-emscripten:",...Y)}function*y$6(Y){return yield Y}function Ut4(Y){return y$6(RQ0(Y))}function A$6(Y,X){return(...Q)=>{let J=X.call(Y,IQ0,...Q);return RQ0(J)}}function Dt4(Y,X){let Q=X.call(Y,IQ0);return RQ0(Q)}function RQ0(Y){function X(Q){return Q.done?Q.value:Q.value instanceof Promise?Q.value.then((J)=>X(Y.next(J)),(J)=>X(Y.throw(J))):X(Y.next(Q.value))}return X(Y.next())}function MQ0(Y,X){let Q;try{Y.dispose()}catch(J){Q=J}if(X&&Q)throw Object.assign(X,{message:`${X.message}
|
|
261
261
|
Then, failed to dispose scope: ${Q.message}`,disposeError:Q}),X;if(X||Q)throw X||Q}function f$6(Y){let X=Y?Array.from(Y):[];function Q(){return X.forEach((G)=>G.alive?G.dispose():void 0)}function J(){return X.some((G)=>G.alive)}return Object.defineProperty(X,PQ0,{configurable:!0,enumerable:!1,value:Q}),Object.defineProperty(X,"dispose",{configurable:!0,enumerable:!1,value:Q}),Object.defineProperty(X,"alive",{configurable:!0,enumerable:!1,get:J}),X}function hb(Y){return!!(Y&&(typeof Y=="object"||typeof Y=="function")&&("alive"in Y)&&typeof Y.alive=="boolean"&&("dispose"in Y)&&typeof Y.dispose=="function")}function Ot4(Y){if(!Y)return 0;let X=0;for(let[Q,J]of Object.entries(Y)){if(!(Q in wQ0))throw new k$6(Q);J&&(X|=wQ0[Q])}return X}function Nt4(Y){if(typeof Y=="number")return Y;if(Y===void 0)return 0;let{type:X,strict:Q,strip:J,compileOnly:G,backtraceBarrier:K}=Y,W=0;return X==="global"&&(W|=q$.JS_EVAL_TYPE_GLOBAL),X==="module"&&(W|=q$.JS_EVAL_TYPE_MODULE),Q&&(W|=q$.JS_EVAL_FLAG_STRICT),J&&(W|=q$.JS_EVAL_FLAG_STRIP),G&&(W|=q$.JS_EVAL_FLAG_COMPILE_ONLY),K&&(W|=q$.JS_EVAL_FLAG_BACKTRACE_BARRIER),W}function Lt4(Y){if(typeof Y=="number")return Y;if(Y===void 0)return 0;let{strings:X,symbols:Q,quickjsPrivate:J,onlyEnumerable:G,numbers:K,numbersAsStrings:W}=Y,Z=0;return X&&(Z|=z$.JS_GPN_STRING_MASK),Q&&(Z|=z$.JS_GPN_SYMBOL_MASK),J&&(Z|=z$.JS_GPN_PRIVATE_MASK),G&&(Z|=z$.JS_GPN_ENUM_ONLY),K&&(Z|=z$.QTS_GPN_NUMBER_MASK),W&&(Z|=z$.QTS_STANDARD_COMPLIANT_NUMBER),Z}function wt4(...Y){let X=[];for(let Q of Y)Q!==void 0&&(X=X.concat(Q));return X}function vQ0(Y,X){X.interruptHandler&&Y.setInterruptHandler(X.interruptHandler),X.maxStackSizeBytes!==void 0&&Y.setMaxStackSize(X.maxStackSizeBytes),X.memoryLimitBytes!==void 0&&Y.setMemoryLimit(X.memoryLimitBytes)}function _Q0(Y,X){X.moduleLoader&&Y.setModuleLoader(X.moduleLoader),X.shouldInterrupt&&Y.setInterruptHandler(X.shouldInterrupt),X.memoryLimitBytes!==void 0&&Y.setMemoryLimit(X.memoryLimitBytes),X.maxStackSizeBytes!==void 0&&Y.setMaxStackSize(X.maxStackSizeBytes)}var zt4,Bt4=(Y,X)=>{for(var Q in X)zt4(Y,Q,{get:X[Q],enumerable:!0})},CQ0=!1,P$6,AQ0,E$6,TQ0,C$6,I$6,R$6,j$6,S$6,k$6,v$6,_$6,IQ0,CZ,PQ0,T$6,YX,tH,EQ0,VG,jQ0,h$6,b$6,B$,x$6,u$6=class{constructor(Y){this.module=Y}toPointerArray(Y){let X=new Int32Array(Y.map((G)=>G.value)),Q=X.length*X.BYTES_PER_ELEMENT,J=this.module._malloc(Q);return new Uint8Array(this.module.HEAPU8.buffer,J,Q).set(new Uint8Array(X.buffer)),new YX(J,void 0,(G)=>this.module._free(G))}newTypedArray(Y,X){let Q=new Y(Array(X).fill(0)),J=Q.length*Q.BYTES_PER_ELEMENT,G=this.module._malloc(J),K=new Y(this.module.HEAPU8.buffer,G,X);return K.set(Q),new YX({typedArray:K,ptr:G},void 0,(W)=>this.module._free(W.ptr))}newMutablePointerArray(Y){return this.newTypedArray(Int32Array,Y)}newHeapCharPointer(Y){let X=this.module.lengthBytesUTF8(Y),Q=X+1,J=this.module._malloc(Q);return this.module.stringToUTF8(Y,J,Q),new YX({ptr:J,strlen:X},void 0,(G)=>this.module._free(G.ptr))}newHeapBufferPointer(Y){let X=Y.byteLength,Q=this.module._malloc(X);return this.module.HEAPU8.set(Y,Q),new YX({pointer:Q,numBytes:X},void 0,(J)=>this.module._free(J.pointer))}consumeHeapCharPointer(Y){let X=this.module.UTF8ToString(Y);return this.module._free(Y),X}},I58,SQ0,Mt4,At4,g$6,m$6,Tt4=class{constructor(Y){this.callFunction=Y.callFunction,this.shouldInterrupt=Y.shouldInterrupt,this.loadModuleSource=Y.loadModuleSource,this.normalizeModule=Y.normalizeModule}},kQ0=class{constructor(Y){this.contextCallbacks=new Map,this.runtimeCallbacks=new Map,this.suspendedCount=0,this.cToHostCallbacks=new Tt4({callFunction:(X,Q,J,G,K,W)=>this.handleAsyncify(X,()=>{try{let Z=this.contextCallbacks.get(Q);if(!Z)throw Error(`QuickJSContext(ctx = ${Q}) not found for C function call "${W}"`);return Z.callFunction(Q,J,G,K,W)}catch(Z){return console.error("[C to host error: returning null]",Z),0}}),shouldInterrupt:(X,Q)=>this.handleAsyncify(X,()=>{try{let J=this.runtimeCallbacks.get(Q);if(!J)throw Error(`QuickJSRuntime(rt = ${Q}) not found for C interrupt`);return J.shouldInterrupt(Q)}catch(J){return console.error("[C to host interrupt: returning error]",J),1}}),loadModuleSource:(X,Q,J,G)=>this.handleAsyncify(X,()=>{try{let K=this.runtimeCallbacks.get(Q);if(!K)throw Error(`QuickJSRuntime(rt = ${Q}) not found for C module loader`);let W=K.loadModuleSource;if(!W)throw Error(`QuickJSRuntime(rt = ${Q}) does not support module loading`);return W(Q,J,G)}catch(K){return console.error("[C to host module loader error: returning null]",K),0}}),normalizeModule:(X,Q,J,G,K)=>this.handleAsyncify(X,()=>{try{let W=this.runtimeCallbacks.get(Q);if(!W)throw Error(`QuickJSRuntime(rt = ${Q}) not found for C module loader`);let Z=W.normalizeModule;if(!Z)throw Error(`QuickJSRuntime(rt = ${Q}) does not support module loading`);return Z(Q,J,G,K)}catch(W){return console.error("[C to host module loader error: returning null]",W),0}})}),this.module=Y,this.module.callbacks=this.cToHostCallbacks}setRuntimeCallbacks(Y,X){this.runtimeCallbacks.set(Y,X)}deleteRuntime(Y){this.runtimeCallbacks.delete(Y)}setContextCallbacks(Y,X){this.contextCallbacks.set(Y,X)}deleteContext(Y){this.contextCallbacks.delete(Y)}handleAsyncify(Y,X){if(Y)return Y.handleSleep((J)=>{try{let G=X();if(!(G instanceof Promise)){$D("asyncify.handleSleep: not suspending:",G),J(G);return}if(this.suspended)throw new I$6(`Already suspended at: ${this.suspended.stack}
|
|
262
262
|
Attempted to suspend at:`);this.suspended=new R$6(`(${this.suspendedCount++})`),$D("asyncify.handleSleep: suspending:",this.suspended),G.then((K)=>{this.suspended=void 0,$D("asyncify.handleSleep: resolved:",K),J(K)},(K)=>{$D("asyncify.handleSleep: rejected:",K),console.error("QuickJS: cannot handle error in suspended function",K),this.suspended=void 0})}catch(G){throw $D("asyncify.handleSleep: error:",G),this.suspended=void 0,G}});let Q=X();if(Q instanceof Promise)throw Error("Promise return value not supported in non-asyncify context.");return Q}},yQ0=class{constructor(Y,X){this.module=Y,this.ffi=X,this.callbacks=new kQ0(Y)}newRuntime(Y={}){let X=new YX(this.ffi.QTS_NewRuntime(),void 0,(J)=>{this.callbacks.deleteRuntime(J),this.ffi.QTS_FreeRuntime(J)}),Q=new m$6({module:this.module,callbacks:this.callbacks,ffi:this.ffi,rt:X});return vQ0(Q,Y),Y.moduleLoader&&Q.setModuleLoader(Y.moduleLoader),Q}newContext(Y={}){let X=this.newRuntime(),Q=X.newContext({...Y,ownedLifetimes:wt4(X,Y.ownedLifetimes)});return X.context=Q,Q}evalCode(Y,X={}){return VG.withScope((Q)=>{let J=Q.manage(this.newContext());_Q0(J.runtime,X);let G=J.evalCode(Y,"eval.js");if(X.memoryLimitBytes!==void 0&&J.runtime.setMemoryLimit(-1),G.error)throw J.dump(Q.manage(G.error));return J.dump(Q.manage(G.value))})}getWasmMemory(){let Y=this.module.quickjsEmscriptenInit?.(()=>{})?.getWasmMemory?.();if(!Y)throw Error("Variant does not support getting WebAssembly.Memory");return Y}getFFI(){return this.ffi}};var fQ0=l(()=>{fb();fb();zt4=Object.defineProperty;P$6={};Bt4(P$6,{QuickJSAsyncifyError:()=>I$6,QuickJSAsyncifySuspended:()=>R$6,QuickJSEmptyGetOwnPropertyNames:()=>_$6,QuickJSEmscriptenModuleError:()=>S$6,QuickJSMemoryLeakDetected:()=>j$6,QuickJSNotImplemented:()=>C$6,QuickJSPromisePending:()=>v$6,QuickJSUnknownIntrinsic:()=>k$6,QuickJSUnwrapError:()=>AQ0,QuickJSUseAfterFree:()=>TQ0,QuickJSWrongOwner:()=>E$6});AQ0=class extends Error{constructor(Y,X){let Q=typeof Y=="object"&&Y&&"message"in Y?String(Y.message):String(Y);super(Q);this.cause=Y,this.context=X,this.name="QuickJSUnwrapError"}},E$6=class extends Error{constructor(){super(...arguments);this.name="QuickJSWrongOwner"}},TQ0=class extends Error{constructor(){super(...arguments);this.name="QuickJSUseAfterFree"}},C$6=class extends Error{constructor(){super(...arguments);this.name="QuickJSNotImplemented"}},I$6=class extends Error{constructor(){super(...arguments);this.name="QuickJSAsyncifyError"}},R$6=class extends Error{constructor(){super(...arguments);this.name="QuickJSAsyncifySuspended"}},j$6=class extends Error{constructor(){super(...arguments);this.name="QuickJSMemoryLeakDetected"}},S$6=class extends Error{constructor(){super(...arguments);this.name="QuickJSEmscriptenModuleError"}},k$6=class extends TypeError{constructor(){super(...arguments);this.name="QuickJSUnknownIntrinsic"}},v$6=class extends Error{constructor(){super(...arguments);this.name="QuickJSPromisePending"}},_$6=class extends Error{constructor(){super(...arguments);this.name="QuickJSEmptyGetOwnPropertyNames"}};IQ0=y$6;IQ0.of=Ut4;CZ=class{[Symbol.dispose](){return this.dispose()}},PQ0=Symbol.dispose??Symbol.for("Symbol.dispose"),T$6=CZ.prototype;T$6[PQ0]||(T$6[PQ0]=function(){return this.dispose()});YX=class Y extends CZ{constructor(X,Q,J,G){super();this._value=X,this.copier=Q,this.disposer=J,this._owner=G,this._alive=!0,this._constructorStack=CQ0?Error("Lifetime constructed").stack:void 0}get alive(){return this._alive}get value(){return this.assertAlive(),this._value}get owner(){return this._owner}get dupable(){return!!this.copier}dup(){if(this.assertAlive(),!this.copier)throw Error("Non-dupable lifetime");return new Y(this.copier(this._value),this.copier,this.disposer,this._owner)}consume(X){this.assertAlive();let Q=X(this);return this.dispose(),Q}map(X){return this.assertAlive(),X(this)}tap(X){return X(this),this}dispose(){this.assertAlive(),this.disposer&&this.disposer(this._value),this._alive=!1}assertAlive(){if(!this.alive)throw this._constructorStack?new TQ0(`Lifetime not alive
|
|
263
263
|
${this._constructorStack}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as j,v as ft,w as pt,j as t,x as ue,aw as xt,R as ht,I as gt,z as ve,D as bt,B as He,E as vt,c as C,u as Ae,V as jt,s as Nt,ao as Oe,l as yt,a as Ct,b6 as kt,bn as Tt,k as St,h as _t,as as wt}from"./index-BcdQIGUF.js";import{u as It,C as Et,a as At}from"./collapsible-GqoDHWGA.js";import{I as le,E as Ot}from"./empty-state-BA1dna4T.js";import{E as me,i as Dt}from"./error-boundary-DGWOOFEb.js";import{P as $t}from"./pin-to-sidebar-button-D1PDIW9U.js";import{u as zt}from"./use-deco-chat-open-u5zZi1de.js";import{B as De}from"./badge-C6I3bZub.js";import{c as F,B as V}from"./button-BVfOTfpc.js";import{I as Fe}from"./input-CUCPZMz2.js";import{S as Lt}from"./switch-Dj3WkUS4.js";import{T as Rt}from"./textarea-DeK9qU4Z.js";import{T as H,b as je,c as W,a as U}from"./tooltip-DDTkATYg.js";import{b as Pt,u as We}from"./use-connection-C76BYat1.js";import{u as Mt,a as Vt}from"./use-virtual-mcp-TOs4GWZq.js";import{i as Ue}from"./Grid01-C0Yt3TrW.js";import{n as Ft}from"./select-Bti-BgCx.js";import{i as $e}from"./File02-CJChiHT7.js";import{a as ze,i as Bt}from"./Tool01-BLwXizsZ.js";import{i as Le}from"./Loading01-D7Nk5rBn.js";import{i as Gt}from"./Play-CaQCPrdk.js";import{s as Be}from"./Plus-BAl5ksmH.js";import{i as Ht}from"./Share07-Dw_Ho0Fm.js";import{b as Wt,V as Ut}from"./layout-BbogDOP_.js";import{C as Kt}from"./collection-search-BzoiV2-u.js";import{C as Re}from"./checkbox-DAuxoUuR.js";import{e as qt,a as Ke,D as qe,b as Yt,c as Zt}from"./dialog-BKc0uyIf.js";import{f as Jt}from"./use-collections-D97KvVa9.js";import{u as Pe}from"./constants-BW4JZ47T.js";import{c as Qt,u as Xt}from"./use-mcp-prompts-DzCHcPVg.js";import{s as Ye}from"./slugify-CEUa2lfQ.js";import{I as es,R as ts,a as ss}from"./index-D47Uffzr.js";import{i as Ze}from"./Check-CeorNg_Q.js";import{i as ls}from"./Code01-C3uTkWw7.js";import{a as os}from"./Copy01-D2UqUo7F.js";import{i as Ne}from"./InfoCircle-CItUremO.js";import"./use-binding-Cx0cnXwg.js";import"./binder-DMkBMJDe.js";import"./useSuspenseInfiniteQuery-7GUdjJBj.js";import"./infiniteQueryObserver-DrveVX8A.js";import"./localstorage-keys-du1r-Z9U.js";import"./useQuery-frKnQxkY.js";import"./useMutation-C7y5vUn8.js";import"./popover-LSiJhuO3.js";import"./ChevronDown-DHgzfDOn.js";import"./File06-D3YhRSWf.js";import"./Image01-BxGEkI20.js";import"./SearchMd-XlpqEN-D.js";import"./Pin01-EjlLL7Hj.js";import"./use-organization-settings-K9WNKRlW.js";import"./ArrowLeft-BkK50n5W.js";import"./X-CjLPt87f.js";const Je=({size:l=24,color:e="currentColor",...s})=>j.createElement("svg",{viewBox:"0 0 24 24",width:l,height:l,stroke:e,strokeWidth:"2",fill:"none",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...s},j.createElement("path",{d:"M4 7h11m0 0-4 4m4-4-4-4M4 17h16m0 0-4 4m4-4-4-4"}));Je.displayName="ArrowsRight";const Qe=({size:l=24,color:e="currentColor",...s})=>j.createElement("svg",{viewBox:"0 0 24 24",width:l,height:l,stroke:e,strokeWidth:"2",fill:"none",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...s},j.createElement("path",{d:"M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10Z"}));Qe.displayName="Circle";const Xe=({size:l=24,color:e="currentColor",...s})=>j.createElement("svg",{viewBox:"0 0 24 24",width:l,height:l,stroke:e,strokeWidth:"2",fill:"none",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...s},j.createElement("path",{d:"M9 2v3m6-3v3M9 19v3m6-3v3m4-13h3m-3 5h3M2 9h3m-3 5h3m4.8 5h4.4c1.68 0 2.52 0 3.162-.327a3 3 0 0 0 1.311-1.311C19 16.72 19 15.88 19 14.2V9.8c0-1.68 0-2.52-.327-3.162a3 3 0 0 0-1.311-1.311C16.72 5 15.88 5 14.2 5H9.8c-1.68 0-2.52 0-3.162.327a3 3 0 0 0-1.311 1.311C5 7.28 5 8.12 5 9.8v4.4c0 1.68 0 2.52.327 3.162a3 3 0 0 0 1.311 1.311C7.28 19 8.12 19 9.8 19Z"}));Xe.displayName="CpuChip02";const fe=({size:l=24,color:e="currentColor",...s})=>j.createElement("svg",{viewBox:"0 0 24 24",width:l,height:l,stroke:e,strokeWidth:"2",fill:"none",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...s},j.createElement("path",{d:"m9.75 20.75 1.473.818c.284.158.425.237.576.268.133.027.27.027.402 0 .15-.031.292-.11.576-.268l1.473-.818m-9-2.5-1.427-.793c-.3-.166-.45-.25-.558-.368a1 1 0 0 1-.215-.364C3 16.573 3 16.401 3 16.06V14.5m0-5V7.942c0-.343 0-.514.05-.667a1 1 0 0 1 .215-.364c.109-.119.258-.202.558-.368L5.25 5.75m4.5-2.5 1.473-.818c.284-.158.425-.237.576-.267a1 1 0 0 1 .402 0c.15.03.292.11.576.267l1.473.818m4.5 2.5 1.427.793c.3.166.45.25.558.368a1 1 0 0 1 .215.364c.05.153.05.324.05.667V9.5m0 5v1.559c0 .342 0 .514-.05.666a.999.999 0 0 1-.215.364c-.109.119-.258.202-.558.368l-1.427.793m-9-7.5L12 12m0 0 2.25-1.25M12 12v2.5M3 7l2.25 1.25m13.5 0L21 7m-9 12.5V22"}));fe.displayName="CubeOutline";const et=({size:l=24,color:e="currentColor",...s})=>j.createElement("svg",{viewBox:"0 0 24 24",width:l,height:l,stroke:e,strokeWidth:"2",fill:"none",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...s},j.createElement("path",{d:"M10 17.659V20a2 2 0 1 0 4 0v-2.341M12 2v1m-9 9H2m3.5-6.5-.6-.6m13.6.6.6-.6M22 12h-1m-3 0a6 6 0 1 1-12 0 6 6 0 0 1 12 0Z"}));et.displayName="Lightbulb02";const tt=({size:l=24,color:e="currentColor",...s})=>j.createElement("svg",{viewBox:"0 0 24 24",width:l,height:l,stroke:e,strokeWidth:"2",fill:"none",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...s},j.createElement("path",{d:"M7 3v3.4c0 .56 0 .84.109 1.054a1 1 0 0 0 .437.437C7.76 8 8.04 8 8.6 8h6.8c.56 0 .84 0 1.054-.109a1 1 0 0 0 .437-.437C17 7.24 17 6.96 17 6.4V4m0 17v-6.4c0-.56 0-.84-.109-1.054a1 1 0 0 0-.437-.437C16.24 13 15.96 13 15.4 13H8.6c-.56 0-.84 0-1.054.109a1 1 0 0 0-.437.437C7 13.76 7 14.04 7 14.6V21M21 9.325V16.2c0 1.68 0 2.52-.327 3.162a3 3 0 0 1-1.311 1.311C18.72 21 17.88 21 16.2 21H7.8c-1.68 0-2.52 0-3.162-.327a3 3 0 0 1-1.311-1.311C3 18.72 3 17.88 3 16.2V7.8c0-1.68 0-2.52.327-3.162a3 3 0 0 1 1.311-1.311C5.28 3 6.12 3 7.8 3h6.875c.489 0 .733 0 .963.055.204.05.4.13.579.24.201.123.374.296.72.642l3.126 3.126c.346.346.519.519.642.72.11.18.19.374.24.579.055.23.055.474.055.963Z"}));tt.displayName="Save01";var pe="Tabs",[ns]=vt(pe,[He]),st=He(),[rs,Me]=ns(pe),lt=j.forwardRef((l,e)=>{const{__scopeTabs:s,value:o,onValueChange:n,defaultValue:r,orientation:d="horizontal",dir:i,activationMode:c="automatic",...m}=l,u=ft(i),[a,f]=pt({prop:o,onChange:n,defaultProp:r??"",caller:pe});return t.jsx(rs,{scope:s,baseId:xt(),value:a,onValueChange:f,orientation:d,dir:u,activationMode:c,children:t.jsx(ue.div,{dir:u,"data-orientation":d,...m,ref:e})})});lt.displayName=pe;var ot="TabsList",nt=j.forwardRef((l,e)=>{const{__scopeTabs:s,loop:o=!0,...n}=l,r=Me(ot,s),d=st(s);return t.jsx(ht,{asChild:!0,...d,orientation:r.orientation,dir:r.dir,loop:o,children:t.jsx(ue.div,{role:"tablist","aria-orientation":r.orientation,...n,ref:e})})});nt.displayName=ot;var rt="TabsTrigger",it=j.forwardRef((l,e)=>{const{__scopeTabs:s,value:o,disabled:n=!1,...r}=l,d=Me(rt,s),i=st(s),c=dt(d.baseId,o),m=mt(d.baseId,o),u=o===d.value;return t.jsx(gt,{asChild:!0,...i,focusable:!n,active:u,children:t.jsx(ue.button,{type:"button",role:"tab","aria-selected":u,"aria-controls":m,"data-state":u?"active":"inactive","data-disabled":n?"":void 0,disabled:n,id:c,...r,ref:e,onMouseDown:ve(l.onMouseDown,a=>{!n&&a.button===0&&a.ctrlKey===!1?d.onValueChange(o):a.preventDefault()}),onKeyDown:ve(l.onKeyDown,a=>{[" ","Enter"].includes(a.key)&&d.onValueChange(o)}),onFocus:ve(l.onFocus,()=>{const a=d.activationMode!=="manual";!u&&!n&&a&&d.onValueChange(o)})})})});it.displayName=rt;var at="TabsContent",ct=j.forwardRef((l,e)=>{const{__scopeTabs:s,value:o,forceMount:n,children:r,...d}=l,i=Me(at,s),c=dt(i.baseId,o),m=mt(i.baseId,o),u=o===i.value,a=j.useRef(u);return j.useEffect(()=>{const f=requestAnimationFrame(()=>a.current=!1);return()=>cancelAnimationFrame(f)},[]),t.jsx(bt,{present:n||u,children:({present:f})=>t.jsx(ue.div,{"data-state":u?"active":"inactive","data-orientation":i.orientation,role:"tabpanel","aria-labelledby":c,hidden:!f,id:m,tabIndex:0,...d,ref:e,style:{...l.style,animationDuration:a.current?"0s":void 0},children:f&&r})})});ct.displayName=at;function dt(l,e){return`${l}-trigger-${e}`}function mt(l,e){return`${l}-content-${e}`}var is=lt,as=nt,cs=it,ds=ct;function ms(l){const e=C.c(10);let s,o,n;e[0]!==l?({className:s,variant:n,...o}=l,e[0]=l,e[1]=s,e[2]=o,e[3]=n):(s=e[1],o=e[2],n=e[3]);const r=n===void 0?"pill":n;let d;e[4]!==s?(d=F("flex flex-col gap-2",s),e[4]=s,e[5]=d):d=e[5];let i;return e[6]!==o||e[7]!==d||e[8]!==r?(i=t.jsx(is,{"data-slot":"tabs","data-variant":r,className:d,...o}),e[6]=o,e[7]=d,e[8]=r,e[9]=i):i=e[9],i}function us(l){const e=C.c(11);let s,o,n;e[0]!==l?({className:s,variant:n,...o}=l,e[0]=l,e[1]=s,e[2]=o,e[3]=n):(s=e[1],o=e[2],n=e[3]);const r=n||"pill",d=r==="underline"?"flex h-[52px] items-center border-b border-border":r==="canvas"?"flex h-10 items-center bg-background relative":"bg-muted text-muted-foreground inline-flex h-10 w-fit items-center justify-center rounded-xl p-[3px]";let i;e[4]!==s||e[5]!==d?(i=F(d,s),e[4]=s,e[5]=d,e[6]=i):i=e[6];let c;return e[7]!==r||e[8]!==o||e[9]!==i?(c=t.jsx(as,{"data-slot":"tabs-list","data-variant":r,className:i,...o}),e[7]=r,e[8]=o,e[9]=i,e[10]=c):c=e[10],c}function ye(l){const e=C.c(11);let s,o,n;e[0]!==l?({className:s,variant:n,...o}=l,e[0]=l,e[1]=s,e[2]=o,e[3]=n):(s=e[1],o=e[2],n=e[3]);const r=n||"pill",d=r==="underline"?"cursor-pointer flex items-center h-full px-3 relative text-sm whitespace-nowrap border-b-2 mb-[-1px] transition-all text-muted-foreground border-transparent hover:text-foreground data-[state=active]:text-foreground data-[state=active]:border-foreground disabled:pointer-events-none disabled:opacity-50":r==="canvas"?"cursor-pointer flex items-center h-full px-3 gap-2.5 text-sm whitespace-nowrap transition-all border-r border-b border-border [&>*]:opacity-50 data-[state=active]:[&>*]:opacity-100 data-[state=active]:border-b-0 last:border-r-0 disabled:pointer-events-none max-w-2xs":"data-[state=active]:bg-background dark:data-[state=active]:text-foreground cursor-pointer focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-lg border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4";let i;e[4]!==s||e[5]!==d?(i=F(d,s),e[4]=s,e[5]=d,e[6]=i):i=e[6];let c;return e[7]!==r||e[8]!==o||e[9]!==i?(c=t.jsx(cs,{"data-slot":"tabs-trigger","data-variant":r,className:i,...o}),e[7]=r,e[8]=o,e[9]=i,e[10]=c):c=e[10],c}function Ce(l){const e=C.c(8);let s,o;e[0]!==l?({className:s,...o}=l,e[0]=l,e[1]=s,e[2]=o):(s=e[1],o=e[2]);let n;e[3]!==s?(n=F("flex-1 outline-none h-full",s),e[3]=s,e[4]=n):n=e[4];let r;return e[5]!==o||e[6]!==n?(r=t.jsx(ds,{"data-slot":"tabs-content",className:n,...o}),e[5]=o,e[6]=n,e[7]=r):r=e[7],r}function ke(l){return l===null?"all":l?.length??0}function fs(l,e){const s=l[e];if(!s)return"";const o=[];return s.tools===null?o.push("all tools"):s.tools&&s.tools.length>0&&o.push(`${s.tools.length} tools`),s.resources===null?o.push("all resources"):s.resources&&s.resources.length>0&&o.push(`${s.resources.length} resources`),s.prompts===null?o.push("all prompts"):s.prompts&&s.prompts.length>0&&o.push(`${s.prompts.length} prompts`),o.join(", ")}function ps(l,e){const s=l[e];return s?!((s.tools===void 0||s.tools!==null&&s.tools.length===0)&&(s.resources===void 0||s.resources!==null&&s.resources.length===0)&&(s.prompts===void 0||s.prompts!==null&&s.prompts.length===0)):!1}const xs={tools:null,resources:null,prompts:null};function Te(){const l=C.c(1);let e;return l[0]===Symbol.for("react.memo_cache_sentinel")?(e=t.jsx("div",{className:"flex items-center justify-center h-32",children:t.jsx(Le,{className:"animate-spin text-muted-foreground",size:24})}),l[0]=e):e=l[0],e}function Se(l){return({error:e})=>e?.message?.includes("Method not found")||e?.code===-32601?t.jsx("div",{className:"flex-1 overflow-auto px-4 py-3 space-y-1",children:t.jsx("div",{className:"flex items-center justify-center h-32 text-sm text-muted-foreground",children:l})}):t.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center h-full p-6 text-center space-y-4",children:[t.jsx("div",{className:"bg-destructive/10 p-3 rounded-full",children:t.jsx(Dt,{className:"h-6 w-6 text-destructive"})}),t.jsxs("div",{className:"space-y-2",children:[t.jsx("h3",{className:"text-lg font-medium",children:"Something went wrong"}),t.jsx("p",{className:"text-sm text-muted-foreground max-w-xs mx-auto",children:e?.message||"An unexpected error occurred"})]})]})}function hs(l){const e=C.c(18),{item:s,isSelected:o,onToggle:n,disabled:r}=l,d=r?"cursor-not-allowed opacity-50":"cursor-pointer",i=o?"bg-accent/25":"hover:bg-muted/50";let c;e[0]!==d||e[1]!==i?(c=F("flex items-start gap-3 p-4 rounded-lg transition-colors",d,i),e[0]=d,e[1]=i,e[2]=c):c=e[2];let m;e[3]!==s.name?(m=t.jsx("p",{className:"text-sm font-medium leading-none",children:s.name}),e[3]=s.name,e[4]=m):m=e[4];let u;e[5]!==s.description?(u=s.description&&t.jsx("p",{className:"text-xs text-muted-foreground line-clamp-2",children:s.description}),e[5]=s.description,e[6]=u):u=e[6];let a;e[7]!==m||e[8]!==u?(a=t.jsxs("div",{className:"flex-1 min-w-0 space-y-2",children:[m,u]}),e[7]=m,e[8]=u,e[9]=a):a=e[9];let f;e[10]!==r||e[11]!==o||e[12]!==n?(f=t.jsx(Re,{checked:o,onCheckedChange:n,disabled:r,className:"mt-0.5"}),e[10]=r,e[11]=o,e[12]=n,e[13]=f):f=e[13];let g;return e[14]!==c||e[15]!==a||e[16]!==f?(g=t.jsxs("label",{className:c,children:[a,f]}),e[14]=c,e[15]=a,e[16]=f,e[17]=g):g=e[17],g}function Ve(l){const e=C.c(32),{items:s,selections:o,onToggle:n,onToggleAll:r,emptyMessage:d,disabled:i}=l;let c,m,u,a,f;if(e[0]!==i||e[1]!==d||e[2]!==s||e[3]!==n||e[4]!==r||e[5]!==o){f=Symbol.for("react.early_return_sentinel");e:{const p=s.map(gs);if(s.length===0){let y;e[11]!==d?(y=t.jsx("div",{className:"flex-1 overflow-auto px-4 py-3 space-y-1",children:t.jsx("div",{className:"flex items-center justify-center h-32 text-sm text-muted-foreground",children:d})}),e[11]=d,e[12]=y):y=e[12],f=y;break e}u="flex flex-col h-full";const N=i?"cursor-not-allowed opacity-50":"cursor-pointer";let v;e[13]!==N?(v=F("flex items-start gap-3 p-4",N),e[13]=N,e[14]=v):v=e[14];let x;e[15]!==s.length?(x=t.jsx("div",{className:"flex-1 min-w-0",children:t.jsxs("span",{className:"text-sm font-medium",children:["Select All (",s.length,")"]})}),e[15]=s.length,e[16]=x):x=e[16];const T=o===null;let S;e[17]!==i||e[18]!==r||e[19]!==T?(S=t.jsx(Re,{checked:T,onCheckedChange:r,disabled:i,className:"mt-0.5"}),e[17]=i,e[18]=r,e[19]=T,e[20]=S):S=e[20],e[21]!==S||e[22]!==v||e[23]!==x?(a=t.jsx("div",{className:"px-4 border-b border-border shrink-0",children:t.jsxs("label",{className:v,children:[x,S]})}),e[21]=S,e[22]=v,e[23]=x,e[24]=a):a=e[24],c="flex-1 overflow-auto px-4 py-3 space-y-1",m=s.map(y=>t.jsx(hs,{item:y,isSelected:o===null||o?.includes(y.id),onToggle:()=>n(y.id,p),disabled:i},y.id))}e[0]=i,e[1]=d,e[2]=s,e[3]=n,e[4]=r,e[5]=o,e[6]=c,e[7]=m,e[8]=u,e[9]=a,e[10]=f}else c=e[6],m=e[7],u=e[8],a=e[9],f=e[10];if(f!==Symbol.for("react.early_return_sentinel"))return f;let g;e[25]!==c||e[26]!==m?(g=t.jsx("div",{className:c,children:m}),e[25]=c,e[26]=m,e[27]=g):g=e[27];let h;return e[28]!==u||e[29]!==a||e[30]!==g?(h=t.jsxs("div",{className:u,children:[a,g]}),e[28]=u,e[29]=a,e[30]=g,e[31]=h):h=e[31],h}function gs(l){return l.id}function bs(l){const e=C.c(13),{connectionId:s,selections:o,onToggle:n,onToggleAll:r,disabled:d}=l,{org:i}=Ae();let c;e[0]!==s||e[1]!==i.id?(c={connectionId:s,orgId:i.id},e[0]=s,e[1]=i.id,e[2]=c):c=e[2];const m=Pe(c);let u;e[3]!==m?(u={client:m},e[3]=m,e[4]=u):u=e[4];const{data:a}=Jt(u);let f;e[5]!==a.tools?(f=a.tools.map(vs),e[5]=a.tools,e[6]=f):f=e[6];const g=f;let h;return e[7]!==d||e[8]!==g||e[9]!==n||e[10]!==r||e[11]!==o?(h=t.jsx(Ve,{items:g,selections:o,onToggle:n,onToggleAll:r,emptyMessage:"No tools available",disabled:d}),e[7]=d,e[8]=g,e[9]=n,e[10]=r,e[11]=o,e[12]=h):h=e[12],h}function vs(l){return{id:l.name,name:l.name,description:l.description}}function js(l){const e=C.c(13),{connectionId:s,selections:o,onToggle:n,onToggleAll:r,disabled:d}=l,{org:i}=Ae();let c;e[0]!==s||e[1]!==i.id?(c={connectionId:s,orgId:i.id},e[0]=s,e[1]=i.id,e[2]=c):c=e[2];const m=Pe(c);let u;e[3]!==m?(u={client:m},e[3]=m,e[4]=u):u=e[4];const{data:a}=Qt(u);let f;e[5]!==a.resources?(f=a.resources.map(Ns),e[5]=a.resources,e[6]=f):f=e[6];const g=f;let h;return e[7]!==d||e[8]!==g||e[9]!==n||e[10]!==r||e[11]!==o?(h=t.jsx(Ve,{items:g,selections:o,onToggle:n,onToggleAll:r,emptyMessage:"No resources available",disabled:d}),e[7]=d,e[8]=g,e[9]=n,e[10]=r,e[11]=o,e[12]=h):h=e[12],h}function Ns(l){return{id:l.name||l.uri,name:l.name||l.uri,description:l.description}}function ys(l){const e=C.c(13),{connectionId:s,selections:o,onToggle:n,onToggleAll:r,disabled:d}=l,{org:i}=Ae();let c;e[0]!==s||e[1]!==i.id?(c={connectionId:s,orgId:i.id},e[0]=s,e[1]=i.id,e[2]=c):c=e[2];const m=Pe(c);let u;e[3]!==m?(u={client:m},e[3]=m,e[4]=u):u=e[4];const{data:a}=Xt(u);let f;e[5]!==a.prompts?(f=a.prompts.map(Cs),e[5]=a.prompts,e[6]=f):f=e[6];const g=f;let h;return e[7]!==d||e[8]!==g||e[9]!==n||e[10]!==r||e[11]!==o?(h=t.jsx(Ve,{items:g,selections:o,onToggle:n,onToggleAll:r,emptyMessage:"No prompts available",disabled:d}),e[7]=d,e[8]=g,e[9]=n,e[10]=r,e[11]=o,e[12]=h):h=e[12],h}function Cs(l){return{id:l.name,name:l.name,description:l.description}}function ks(l){const e=C.c(24),{connection:s,isSelected:o,hasSelections:n,summary:r,onClick:d,onToggleAll:i,disabled:c}=l,m=c?"cursor-not-allowed opacity-50":"cursor-pointer",u=o?"bg-accent":"hover:bg-muted/50";let a;e[0]!==m||e[1]!==u?(a=F("flex items-center gap-2 p-2 h-12 rounded-lg transition-colors",m,u),e[0]=m,e[1]=u,e[2]=a):a=e[2];const f=c?void 0:d;let g;e[3]!==s.icon||e[4]!==s.title?(g=t.jsx(le,{icon:s.icon,name:s.title,size:"xs",className:"shrink-0"}),e[3]=s.icon,e[4]=s.title,e[5]=g):g=e[5];let h;e[6]!==s.title?(h=t.jsx("p",{className:"text-sm font-medium text-foreground truncate",children:s.title}),e[6]=s.title,e[7]=h):h=e[7];let p;e[8]!==n||e[9]!==r?(p=n&&r&&t.jsx("p",{className:"text-xs text-muted-foreground truncate",children:r}),e[8]=n,e[9]=r,e[10]=p):p=e[10];let N;e[11]!==h||e[12]!==p?(N=t.jsxs("div",{className:"flex-1 min-w-0 flex flex-col justify-center",children:[h,p]}),e[11]=h,e[12]=p,e[13]=N):N=e[13];let v;e[14]!==c||e[15]!==n||e[16]!==i?(v=t.jsx(Re,{checked:n,onCheckedChange:i,onClick:Ts,disabled:c,className:"shrink-0"}),e[14]=c,e[15]=n,e[16]=i,e[17]=v):v=e[17];let x;return e[18]!==a||e[19]!==f||e[20]!==g||e[21]!==N||e[22]!==v?(x=t.jsxs("div",{className:a,onClick:f,children:[g,N,v]}),e[18]=a,e[19]=f,e[20]=g,e[21]=N,e[22]=v,e[23]=x):x=e[23],x}function Ts(l){return l.stopPropagation()}function Ss(l){const e=C.c(22),{allConnections:s,searchTerm:o,selectedId:n,hasSelections:r,getSelectionSummary:d,onConnectionClick:i,onToggleAll:c,disabled:m}=l;let u;e[0]!==s||e[1]!==o?(u=o?s.filter(h=>h.title.toLowerCase().includes(o.toLowerCase())||h.description?.toLowerCase().includes(o.toLowerCase())):s,e[0]=s,e[1]=o,e[2]=u):u=e[2];const a=u;if(a.length===0){const h=o?"No connections found":"No connections available";let p;return e[3]!==h?(p=t.jsx("div",{className:"flex items-center justify-center h-full text-sm text-muted-foreground p-4",children:h}),e[3]=h,e[4]=p):p=e[4],p}let f;if(e[5]!==m||e[6]!==a||e[7]!==d||e[8]!==r||e[9]!==i||e[10]!==c||e[11]!==n){let h;e[13]!==m||e[14]!==d||e[15]!==r||e[16]!==i||e[17]!==c||e[18]!==n?(h=p=>t.jsx(ks,{connection:p,isSelected:n===p.id,hasSelections:r(p.id),summary:d(p.id),onClick:()=>i(p.id),onToggleAll:()=>c(p.id),disabled:m},p.id),e[13]=m,e[14]=d,e[15]=r,e[16]=i,e[17]=c,e[18]=n,e[19]=h):h=e[19],f=a.map(h),e[5]=m,e[6]=a,e[7]=d,e[8]=r,e[9]=i,e[10]=c,e[11]=n,e[12]=f}else f=e[12];let g;return e[20]!==f?(g=t.jsx("div",{className:"flex flex-col gap-0.5",children:f}),e[20]=f,e[21]=g):g=e[21],g}function _s(l){const e={};for(const s of l)e[s.connection_id]={tools:s.selected_tools,resources:s.selected_resources??null,prompts:s.selected_prompts??null};return e}function _e(l){return Object.entries(l).map(([e,s])=>({connection_id:e,selected_tools:s.tools,selected_resources:s.resources,selected_prompts:s.prompts}))}function ws(l,e){switch(e.type){case"SET_SEARCH_TERM":return{...l,searchTerm:e.payload};case"SET_SELECTED":return{...l,selectedId:e.payload};case"SET_ACTIVE_TAB":return{...l,activeTab:e.payload};case"RESET":return{searchTerm:"",selectedId:e.payload.selectedId??e.payload.firstConnectionId??null,activeTab:"tools"};case"SELECT_CONNECTION":return{...l,selectedId:e.payload,activeTab:"tools"};default:return l}}const Ge=(l,e)=>l.find(s=>s.id===e)??l[0];function Is(l){const e=C.c(79),{open:s,onOpenChange:o,selectedId:n,form:r,connections:d}=l;let i;e[0]===Symbol.for("react.memo_cache_sentinel")?(i={},e[0]=i):i=e[0];const c=Pt(i);let m;e[1]!==c||e[2]!==n?(m=Ge(c,n)?.id??null,e[1]=c,e[2]=n,e[3]=m):m=e[3];let u;e[4]!==m?(u={activeTab:"tools",searchTerm:"",selectedId:m},e[4]=m,e[5]=u):u=e[5];const[a,f]=j.useReducer(ws,u);let g;e[6]!==d?(g=d??[],e[6]=d,e[7]=g):g=e[7];let h;e[8]!==g?(h=_s(g),e[8]=g,e[9]=h):h=e[9];const p=h;let N;e[10]!==c||e[11]!==a.selectedId?(N=Ge(c,a.selectedId),e[10]=c,e[11]=a.selectedId,e[12]=N):N=e[12];const v=N;let x;e[13]!==p?(x=b=>ps(p,b),e[13]=p,e[14]=x):x=e[14];const T=x;let S;e[15]!==p?(S=b=>fs(p,b),e[15]=p,e[16]=S):S=e[16];const y=S;let R;e[17]!==r||e[18]!==p?(R=(b,k,I,G)=>{const te=p[b]?.[k];let E;te===null?E=G.filter(be=>be!==I):te?.includes(I)?E=te.filter(be=>be!==I):(E=[...te??[],I],E.length===G.length&&(E=null));const se={...p};se[b]?se[b]={...se[b]}:se[b]={tools:null,resources:null,prompts:null},se[b][k]=E,r.setValue("connections",_e(se),{shouldDirty:!0,shouldTouch:!0})},e[17]=r,e[18]=p,e[19]=R):R=e[19];const _=R;let P;e[20]!==r||e[21]!==p?(P=(b,k)=>{const te=p[b]?.[k]===null?[]:null,E={...p};E[b]?E[b]={...E[b]}:E[b]={tools:null,resources:null,prompts:null},E[b][k]=te,r.setValue("connections",_e(E),{shouldDirty:!0,shouldTouch:!0})},e[20]=r,e[21]=p,e[22]=P):P=e[22];const w=P;let A;e[23]!==_?(A=(b,k,I)=>_(b,"tools",k,I),e[23]=_,e[24]=A):A=e[24];const $=A;let O;e[25]!==_?(O=(b,k,I)=>_(b,"resources",k,I),e[25]=_,e[26]=O):O=e[26];const z=O;let D;e[27]!==_?(D=(b,k,I)=>_(b,"prompts",k,I),e[27]=_,e[28]=D):D=e[28];const L=D;let M;e[29]!==w?(M=b=>w(b,"tools"),e[29]=w,e[30]=M):M=e[30];const B=M;let oe;e[31]!==w?(oe=b=>w(b,"resources"),e[31]=w,e[32]=oe):oe=e[32];const xe=oe;let ne;e[33]!==w?(ne=b=>w(b,"prompts"),e[33]=w,e[34]=ne):ne=e[34];const he=ne;let re;e[35]!==r||e[36]!==p?(re=b=>{const k=p[b],I=k&&k.tools===null&&k.resources===null&&k.prompts===null,G={...p};I?delete G[b]:G[b]=xs,r.setValue("connections",_e(G),{shouldDirty:!0,shouldTouch:!0})},e[35]=r,e[36]=p,e[37]=re):re=e[37];const ge=re;let ie;e[38]!==c||e[39]!==o||e[40]!==n?(ie=b=>{b&&f({type:"RESET",payload:{selectedId:n,firstConnectionId:c[0]?.id??null}}),o(b)},e[38]=c,e[39]=o,e[40]=n,e[41]=ie):ie=e[41];const K=ie;let ae;e[42]===Symbol.for("react.memo_cache_sentinel")?(ae=b=>{f({type:"SELECT_CONNECTION",payload:b})},e[42]=ae):ae=e[42];const ut=ae;let ce;e[43]===Symbol.for("react.memo_cache_sentinel")?(ce=b=>f({type:"SET_SEARCH_TERM",payload:b}),e[43]=ce):ce=e[43];let q;e[44]!==a.searchTerm?(q=t.jsx(Kt,{value:a.searchTerm,onChange:ce,placeholder:"Search connections..."}),e[44]=a.searchTerm,e[45]=q):q=e[45];let Y;e[46]!==c||e[47]!==a.searchTerm||e[48]!==a.selectedId||e[49]!==y||e[50]!==T||e[51]!==ge?(Y=t.jsx("div",{className:"flex-1 overflow-auto p-2",children:t.jsx(Ss,{allConnections:c,searchTerm:a.searchTerm,selectedId:a.selectedId,hasSelections:T,getSelectionSummary:y,onConnectionClick:ut,onToggleAll:ge})}),e[46]=c,e[47]=a.searchTerm,e[48]=a.selectedId,e[49]=y,e[50]=T,e[51]=ge,e[52]=Y):Y=e[52];let Z;e[53]!==q||e[54]!==Y?(Z=t.jsxs("div",{className:"w-full sm:w-72 sm:border-r border-b sm:border-b-0 border-border flex flex-col bg-background sm:h-full max-h-[40vh] sm:max-h-full",children:[q,Y]}),e[53]=q,e[54]=Y,e[55]=Z):Z=e[55];let J;e[56]!==v||e[57]!==a.activeTab||e[58]!==a.selectedId||e[59]!==p||e[60]!==he||e[61]!==xe||e[62]!==B||e[63]!==L||e[64]!==z||e[65]!==$?(J=t.jsx("div",{className:"flex-1 flex flex-col overflow-hidden",children:v&&a.selectedId?t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"p-6 border-b border-border shrink-0",children:t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx(le,{icon:v.icon,name:v.title,size:"md",className:"shrink-0"}),t.jsxs("div",{className:"flex-1 min-w-0",children:[t.jsx("h2",{className:"text-lg font-semibold truncate",children:v.title}),v.description&&t.jsx("p",{className:"text-sm text-muted-foreground truncate",children:v.description})]})]})}),t.jsx("div",{className:"flex-1 flex flex-col overflow-hidden",children:t.jsxs(ms,{value:a.activeTab,onValueChange:b=>f({type:"SET_ACTIVE_TAB",payload:b}),variant:"underline",className:"flex-1 flex flex-col overflow-hidden",children:[t.jsxs(us,{variant:"underline",className:"shrink-0 px-6",children:[t.jsxs(ye,{value:"tools",variant:"underline",className:"gap-2",children:[t.jsx(ze,{size:16}),"Tools"]}),t.jsxs(ye,{value:"resources",variant:"underline",className:"gap-2",children:[t.jsx(fe,{size:16}),"Resources"]}),t.jsxs(ye,{value:"prompts",variant:"underline",className:"gap-2",children:[t.jsx($e,{size:16}),"Prompts"]})]}),t.jsx(Ce,{value:"tools",className:"flex-1 overflow-hidden mt-0",children:t.jsx(me,{fallback:Se("Tools not supported by this server"),children:t.jsx(j.Suspense,{fallback:t.jsx(Te,{}),children:t.jsx(bs,{connectionId:a.selectedId,selections:a.selectedId&&p[a.selectedId]?p[a.selectedId].tools:[],onToggle:(b,k)=>a.selectedId&&$(a.selectedId,b,k),onToggleAll:()=>a.selectedId&&B(a.selectedId)})})})}),t.jsx(Ce,{value:"resources",className:"flex-1 overflow-hidden mt-0",children:t.jsx(me,{fallback:Se("Resources not supported by this server"),children:t.jsx(j.Suspense,{fallback:t.jsx(Te,{}),children:t.jsx(js,{connectionId:a.selectedId,selections:a.selectedId&&p[a.selectedId]?p[a.selectedId].resources:[],onToggle:(b,k)=>a.selectedId&&z(a.selectedId,b,k),onToggleAll:()=>a.selectedId&&xe(a.selectedId)})})})}),t.jsx(Ce,{value:"prompts",className:"flex-1 overflow-hidden mt-0",children:t.jsx(me,{fallback:Se("Prompts not supported by this server"),children:t.jsx(j.Suspense,{fallback:t.jsx(Te,{}),children:t.jsx(ys,{connectionId:a.selectedId,selections:a.selectedId&&p[a.selectedId]?p[a.selectedId].prompts:[],onToggle:(b,k)=>a.selectedId&&L(a.selectedId,b,k),onToggleAll:()=>a.selectedId&&he(a.selectedId)})})})})]})})]}):t.jsx("div",{className:"flex-1 flex items-center justify-center text-sm text-muted-foreground",children:"Select a connection to view its tools, resources, and prompts"})}),e[56]=v,e[57]=a.activeTab,e[58]=a.selectedId,e[59]=p,e[60]=he,e[61]=xe,e[62]=B,e[63]=L,e[64]=z,e[65]=$,e[66]=J):J=e[66];let Q;e[67]!==Z||e[68]!==J?(Q=t.jsxs("div",{className:"flex-1 flex overflow-hidden min-h-0 flex-col sm:flex-row",children:[Z,J]}),e[67]=Z,e[68]=J,e[69]=Q):Q=e[69];let X;e[70]!==K?(X=t.jsx(qt,{className:"px-6 py-4 border-t border-border shrink-0",children:t.jsx(V,{variant:"outline",onClick:()=>K(!1),children:"Done"})}),e[70]=K,e[71]=X):X=e[71];let ee;e[72]!==Q||e[73]!==X?(ee=t.jsxs(Ke,{className:"sm:max-w-5xl h-[80vh] max-h-[80vh] flex flex-col p-0 gap-0 overflow-hidden w-[95vw]",children:[Q,X]}),e[72]=Q,e[73]=X,e[74]=ee):ee=e[74];let de;return e[75]!==K||e[76]!==s||e[77]!==ee?(de=t.jsx(qe,{open:s,onOpenChange:K,children:ee}),e[75]=K,e[76]=s,e[77]=ee,e[78]=de):de=e[78],de}const Es=jt.pick({title:!0,description:!0,status:!0,metadata:!0,connections:!0}).extend({title:Nt().min(1,"Name is required").max(255)});function As(l){const e=C.c(8);let s,o;e[0]!==l?({className:s,...o}=l,e[0]=l,e[1]=s,e[2]=o):(s=e[1],o=e[2]);let n;e[3]!==s?(n=F("grid gap-3",s),e[3]=s,e[4]=n):n=e[4];let r;return e[5]!==o||e[6]!==n?(r=t.jsx(ts,{"data-slot":"radio-group",className:n,...o}),e[5]=o,e[6]=n,e[7]=r):r=e[7],r}function we(l){const e=C.c(9);let s,o;e[0]!==l?({className:s,...o}=l,e[0]=l,e[1]=s,e[2]=o):(s=e[1],o=e[2]);let n;e[3]!==s?(n=F("border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",s),e[3]=s,e[4]=n):n=e[4];let r;e[5]===Symbol.for("react.memo_cache_sentinel")?(r=t.jsx(ss,{"data-slot":"radio-group-indicator",className:"relative flex items-center justify-center",children:t.jsx(Qe,{className:"fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2"})}),e[5]=r):r=e[5];let d;return e[6]!==o||e[7]!==n?(d=t.jsx(es,{"data-slot":"radio-group-item",className:n,...o,children:r}),e[6]=o,e[7]=n,e[8]=d):d=e[8],d}function Os(l){const s=new TextEncoder().encode(l),o=Array.from(s,n=>String.fromCharCode(n)).join("");return btoa(o)}function Ds(l){const e=C.c(10),{url:s}=l,[o,n]=j.useState(!1);let r;e[0]!==s?(r=async()=>{await navigator.clipboard.writeText(s),n(!0),Oe.success("Agent URL copied to clipboard"),setTimeout(()=>n(!1),2e3)},e[0]=s,e[1]=r):r=e[1];const d=r;let i;e[2]!==o?(i=o?t.jsx(Ze,{size:20,className:"text-green-600"}):t.jsx(os,{size:20}),e[2]=o,e[3]=i):i=e[3];const c=o?"Copied!":"Copy URL";let m;e[4]!==c?(m=t.jsx("span",{className:"text-xs font-medium",children:c}),e[4]=c,e[5]=m):m=e[5];let u;return e[6]!==d||e[7]!==i||e[8]!==m?(u=t.jsxs(V,{type:"button",variant:"outline",onClick:d,className:"h-auto py-3 px-4 flex flex-col items-center gap-2",children:[i,m]}),e[6]=d,e[7]=i,e[8]=m,e[9]=u):u=e[9],u}function $s(l){const e=C.c(7),{url:s,serverName:o}=l;let n;e[0]!==o||e[1]!==s?(n=()=>{const m=Ye(o),a=Os(JSON.stringify({type:"http",url:s,headers:{"x-mesh-client":"Cursor"}},null,2)),f=`cursor://anysphere.cursor-deeplink/mcp/install?name=${encodeURIComponent(m)}&config=${encodeURIComponent(a)}`;window.open(f,"_blank"),Oe.success("Opening Cursor...")},e[0]=o,e[1]=s,e[2]=n):n=e[2];const r=n;let d,i;e[3]===Symbol.for("react.memo_cache_sentinel")?(d=t.jsx("img",{src:"/logos/cursor.svg",alt:"Cursor",className:"h-5 w-5",style:{filter:"brightness(0) saturate(100%) invert(11%) sepia(8%) saturate(785%) hue-rotate(1deg) brightness(95%) contrast(89%)"}}),i=t.jsx("span",{className:"text-xs font-medium",children:"Install on Cursor"}),e[3]=d,e[4]=i):(d=e[3],i=e[4]);let c;return e[5]!==r?(c=t.jsxs(V,{type:"button",variant:"outline",onClick:r,className:"h-auto py-3 px-4 flex flex-col items-center gap-2",children:[d,i]}),e[5]=r,e[6]=c):c=e[6],c}function zs(l){const e=C.c(11),{url:s,serverName:o}=l,[n,r]=j.useState(!1);let d;e[0]!==o||e[1]!==s?(d=async()=>{const f=Ye(o),h=JSON.stringify({type:"http",url:s,headers:{"x-mesh-client":"Claude Code"}},null,2),p=`claude mcp add-json "${f}" '${h.replace(/'/g,"'\\''")}'`;await navigator.clipboard.writeText(p),r(!0),Oe.success("Claude Code command copied to clipboard"),setTimeout(()=>r(!1),2e3)},e[0]=o,e[1]=s,e[2]=d):d=e[2];const i=d;let c;e[3]!==n?(c=n?t.jsx(Ze,{size:20,className:"text-green-600"}):t.jsx("img",{src:"/logos/Claude Code.svg",alt:"Claude Code",className:"h-5 w-5",style:{filter:"brightness(0) saturate(100%) invert(55%) sepia(31%) saturate(1264%) hue-rotate(331deg) brightness(92%) contrast(86%)"}}),e[3]=n,e[4]=c):c=e[4];const m=n?"Copied!":"Install on Claude";let u;e[5]!==m?(u=t.jsx("span",{className:"text-xs font-medium",children:m}),e[5]=m,e[6]=u):u=e[6];let a;return e[7]!==i||e[8]!==c||e[9]!==u?(a=t.jsxs(V,{type:"button",variant:"outline",onClick:i,className:"h-auto py-3 px-4 flex flex-col items-center gap-2",children:[c,u]}),e[7]=i,e[8]=c,e[9]=u,e[10]=a):a=e[10],a}function Ls(l){const e=C.c(40),{open:s,onOpenChange:o,virtualMcp:n}=l,[r,d]=j.useState("code_execution");let i;e[0]===Symbol.for("react.memo_cache_sentinel")?(i=B=>{(B==="passthrough"||B==="smart_tool_selection"||B==="code_execution")&&d(B)},e[0]=i):i=e[0];const c=i;let m;e[1]!==r||e[2]!==n.id?(m=new URL(`/mcp/virtual-mcp/${n.id}`,window.location.origin),m.searchParams.set("mode",r),e[1]=r,e[2]=n.id,e[3]=m):m=e[3];let u;e[4]!==n.id||e[5]!==n.title?(u=n.title||`agent-${n.id?.slice(0,8)??"default"}`,e[4]=n.id,e[5]=n.title,e[6]=u):u=e[6];const a=u;let f;e[7]===Symbol.for("react.memo_cache_sentinel")?(f=t.jsx(Yt,{children:t.jsx(Zt,{children:"Share Agent"})}),e[7]=f):f=e[7];let g;e[8]===Symbol.for("react.memo_cache_sentinel")?(g=t.jsx("div",{children:t.jsx("h4",{className:"text-sm font-medium text-foreground mt-1",children:"How should this agent work?"})}),e[8]=g):g=e[8];let h;e[9]===Symbol.for("react.memo_cache_sentinel")?(h=t.jsx("div",{className:"p-1.5 shrink-0",children:t.jsx(Je,{className:"size-5 text-muted-foreground"})}),e[9]=h):h=e[9];let p;e[10]===Symbol.for("react.memo_cache_sentinel")?(p=t.jsx("span",{className:"text-sm font-medium text-foreground",children:"Direct access"}),e[10]=p):p=e[10];let N;e[11]===Symbol.for("react.memo_cache_sentinel")?(N=t.jsx(H,{asChild:!0,children:t.jsx(Ne,{className:"size-3.5 text-muted-foreground"})}),e[11]=N):N=e[11];let v;e[12]===Symbol.for("react.memo_cache_sentinel")?(v=t.jsxs("label",{htmlFor:"mode-passthrough",className:"flex items-center gap-3 px-3 py-5 rounded-lg border border-border hover:border-ring/50 cursor-pointer transition-colors has-checked:border-ring has-checked:bg-accent/5",children:[h,t.jsxs("div",{className:"flex-1 flex flex-col gap-1.5",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[p,t.jsx(je,{children:t.jsxs(W,{children:[N,t.jsx(U,{className:"max-w-xs",children:t.jsx("p",{className:"text-xs",children:"All tools are exposed directly via tools/list. Best for small tool surfaces with deterministic behavior."})})]})})]}),t.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Best for small teams or when you need predictable behavior"})]}),t.jsx(we,{id:"mode-passthrough",value:"passthrough"})]}),e[12]=v):v=e[12];let x;e[13]===Symbol.for("react.memo_cache_sentinel")?(x=t.jsx("div",{className:"p-1.5 shrink-0",children:t.jsx(et,{className:"size-5 text-muted-foreground"})}),e[13]=x):x=e[13];let T;e[14]===Symbol.for("react.memo_cache_sentinel")?(T=t.jsx("span",{className:"text-sm font-medium text-foreground",children:"Smart discovery"}),e[14]=T):T=e[14];let S;e[15]===Symbol.for("react.memo_cache_sentinel")?(S=t.jsx(H,{asChild:!0,children:t.jsx(Ne,{className:"size-3.5 text-muted-foreground"})}),e[15]=S):S=e[15];let y;e[16]===Symbol.for("react.memo_cache_sentinel")?(y=t.jsxs("label",{htmlFor:"mode-smart",className:"flex items-center gap-3 px-3 py-5 rounded-lg border border-border hover:border-ring/50 cursor-pointer transition-colors has-checked:border-ring has-checked:bg-accent/5",children:[x,t.jsxs("div",{className:"flex-1 flex flex-col gap-1.5",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[T,t.jsx(je,{children:t.jsxs(W,{children:[S,t.jsx(U,{className:"max-w-xs",children:t.jsx("p",{className:"text-xs",children:"Uses meta-tools (GATEWAY_SEARCH_TOOLS, GATEWAY_DESCRIBE_TOOLS, GATEWAY_CALL_TOOL) to keep the tool list small and request details on demand."})})]})})]}),t.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Ideal for large teams with many tools - AI finds what it needs"})]}),t.jsx(we,{id:"mode-smart",value:"smart_tool_selection"})]}),e[16]=y):y=e[16];let R;e[17]===Symbol.for("react.memo_cache_sentinel")?(R=t.jsx("div",{className:"p-1.5 shrink-0",children:t.jsx(ls,{className:"size-5 text-muted-foreground"})}),e[17]=R):R=e[17];let _;e[18]===Symbol.for("react.memo_cache_sentinel")?(_=t.jsx("span",{className:"text-sm font-medium text-foreground",children:"Smart execution"}),e[18]=_):_=e[18];let P;e[19]===Symbol.for("react.memo_cache_sentinel")?(P=t.jsx(H,{asChild:!0,children:t.jsx(Ne,{className:"size-3.5 text-muted-foreground"})}),e[19]=P):P=e[19];let w;e[20]===Symbol.for("react.memo_cache_sentinel")?(w=t.jsxs("label",{htmlFor:"mode-code",className:"relative flex items-center gap-3 px-3 py-5 rounded-lg border border-border hover:border-ring/50 cursor-pointer transition-colors has-checked:border-ring has-checked:bg-accent/5",children:[R,t.jsxs("div",{className:"flex-1 flex flex-col gap-1.5",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[_,t.jsx(je,{children:t.jsxs(W,{children:[P,t.jsx(U,{className:"max-w-xs",children:t.jsx("p",{className:"text-xs",children:"Exposes meta-tools for discovery + sandboxed execution (GATEWAY_RUN_CODE). Reduces overhead on large surfaces by shifting work into a controlled runtime."})})]})})]}),t.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Maximum flexibility - AI can write code to orchestrate tools"})]}),t.jsx(we,{id:"mode-code",value:"code_execution"}),t.jsx(De,{variant:"outline",className:"absolute -top-2.5 left-1/2 -translate-x-1/2 bg-background z-10",children:"Recommended"})]}),e[20]=w):w=e[20];let A;e[21]!==r?(A=t.jsxs("div",{className:"flex flex-col gap-3",children:[g,t.jsxs(As,{value:r,onValueChange:c,className:"flex flex-col gap-4.5",children:[v,y,w]})]}),e[21]=r,e[22]=A):A=e[22];let $;e[23]!==m.href?($=t.jsx(Ds,{url:m.href}),e[23]=m.href,e[24]=$):$=e[24];let O,z;e[25]!==a||e[26]!==m.href?(O=t.jsx($s,{url:m.href,serverName:a}),z=t.jsx(zs,{url:m.href,serverName:a}),e[25]=a,e[26]=m.href,e[27]=O,e[28]=z):(O=e[27],z=e[28]);let D;e[29]!==$||e[30]!==O||e[31]!==z?(D=t.jsx("div",{className:"flex flex-col gap-3 pt-2",children:t.jsxs("div",{className:"grid grid-cols-3 gap-2",children:[$,O,z]})}),e[29]=$,e[30]=O,e[31]=z,e[32]=D):D=e[32];let L;e[33]!==A||e[34]!==D?(L=t.jsxs(Ke,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[f,t.jsxs("div",{className:"flex flex-col gap-6",children:[A,D]})]}),e[33]=A,e[34]=D,e[35]=L):L=e[35];let M;return e[36]!==o||e[37]!==s||e[38]!==L?(M=t.jsx(qe,{open:s,onOpenChange:o,children:L}),e[36]=o,e[37]=s,e[38]=L,e[39]=M):M=e[39],M}function Rs(l,e){switch(e.type){case"SET_SHARE_DIALOG_OPEN":return{...l,shareDialogOpen:e.payload};case"SET_CONNECTION_DIALOG_OPEN":return{...l,connectionDialogOpen:e.payload};case"SET_EDITING_CONNECTION_ID":return{...l,editingConnectionId:e.payload};case"SET_SKILLS_OPEN":return{...l,skillsOpen:e.payload};default:return l}}function Ie(l){const e=C.c(3),{connection_id:s}=l,o=We(s);if(!o)return null;let n;return e[0]!==o.icon||e[1]!==o.title?(n=t.jsx("div",{className:"shrink-0 bg-background ring-1 ring-background rounded-lg",children:t.jsx(le,{icon:o.icon,name:o.title,size:"xs"})}),e[0]=o.icon,e[1]=o.title,e[2]=n):n=e[2],n}Ie.Fallback=function(){return t.jsx("div",{className:"shrink-0 bg-background ring-1 ring-background rounded-lg",children:t.jsx("div",{className:"size-5 rounded bg-muted animate-pulse"})})};function Ee(l){const e=C.c(27),{connection_id:s,selected_tools:o,selected_resources:n,selected_prompts:r,onClick:d}=l,i=We(s);if(!i)return null;let c;e[0]!==o?(c=ke(o),e[0]=o,e[1]=c):c=e[1];const m=c;let u;e[2]!==n?(u=ke(n),e[2]=n,e[3]=u):u=e[3];const a=u;let f;e[4]!==r?(f=ke(r),e[4]=r,e[5]=f):f=e[5];const g=f;let h;e[6]!==i.icon||e[7]!==i.title?(h=t.jsx(le,{icon:i.icon,name:i.title,size:"xs"}),e[6]=i.icon,e[7]=i.title,e[8]=h):h=e[8];let p;e[9]!==i.title?(p=t.jsx("p",{className:"flex-1 text-sm font-normal text-foreground truncate",children:i.title}),e[9]=i.title,e[10]=p):p=e[10];let N;e[11]!==m?(N=m!==0&&t.jsxs("div",{className:"flex items-center gap-0.5 text-xs text-muted-foreground",children:[t.jsx("span",{children:m==="all"?"all":m}),t.jsx(ze,{size:12})]}),e[11]=m,e[12]=N):N=e[12];let v;e[13]!==a?(v=a!==0&&t.jsxs("div",{className:"flex items-center gap-0.5 text-xs text-muted-foreground",children:[t.jsx("span",{children:a==="all"?"all":a}),t.jsx(fe,{size:12})]}),e[13]=a,e[14]=v):v=e[14];let x;e[15]!==g?(x=g!==0&&t.jsxs("div",{className:"flex items-center gap-0.5 text-xs text-muted-foreground",children:[t.jsx("span",{children:g==="all"?"all":g}),t.jsx($e,{size:12})]}),e[15]=g,e[16]=x):x=e[16];let T;e[17]!==N||e[18]!==v||e[19]!==x?(T=t.jsxs(De,{variant:"secondary",className:"bg-muted h-5 gap-2 px-1.5 py-1 flex items-center",children:[N,v,x]}),e[17]=N,e[18]=v,e[19]=x,e[20]=T):T=e[20];let S;e[21]===Symbol.for("react.memo_cache_sentinel")?(S=t.jsx(Ue,{size:16,className:"text-muted-foreground shrink-0"}),e[21]=S):S=e[21];let y;return e[22]!==d||e[23]!==h||e[24]!==p||e[25]!==T?(y=t.jsxs("div",{onClick:d,className:"w-full h-12 flex items-center gap-2 px-3 rounded-lg border border-border hover:bg-accent/50 transition-colors cursor-pointer",children:[h,p,T,S]}),e[22]=d,e[23]=h,e[24]=p,e[25]=T,e[26]=y):y=e[26],y}Ee.Fallback=function(){return t.jsxs("div",{className:"w-full h-12 flex items-center gap-2 px-3 rounded-lg border border-border",children:[t.jsx("div",{className:"size-5 rounded bg-muted animate-pulse shrink-0"}),t.jsx("div",{className:"flex-1 h-4 rounded bg-muted animate-pulse"}),t.jsxs(De,{variant:"secondary",className:"bg-muted h-5 gap-2 px-1.5 py-1 flex items-center",children:[t.jsxs("div",{className:"flex items-center gap-0.5 text-xs text-muted-foreground",children:[t.jsx("div",{className:"w-3 h-3 rounded bg-muted-foreground/20 animate-pulse"}),t.jsx(ze,{size:12})]}),t.jsxs("div",{className:"flex items-center gap-0.5 text-xs text-muted-foreground",children:[t.jsx("div",{className:"w-3 h-3 rounded bg-muted-foreground/20 animate-pulse"}),t.jsx(fe,{size:12})]}),t.jsxs("div",{className:"flex items-center gap-0.5 text-xs text-muted-foreground",children:[t.jsx("div",{className:"w-3 h-3 rounded bg-muted-foreground/20 animate-pulse"}),t.jsx($e,{size:12})]})]}),t.jsx(Ue,{size:16,className:"text-muted-foreground shrink-0"})]})};function Ps({virtualMcp:l}){const s=kt().location.href,o=Tt(),n=Vt(),r=St({resolver:_t(Es),defaultValues:l}),d=r.watch("connections"),[i,c]=j.useReducer(Rs,{shareDialogOpen:!1,connectionDialogOpen:!1,editingConnectionId:null,skillsOpen:!1}),[,m]=zt(),{setVirtualMcpId:u}=It();j.useEffect(()=>{m(!0),u(l.id)},[l.id]);const a=()=>{u(l.id),m(!0)},f=r.formState.isDirty,g=async()=>{const x=r.getValues(),T=await n.update.mutateAsync({id:l.id,data:x});r.reset(T)},h=()=>{r.reset(l)},p=()=>{c({type:"SET_EDITING_CONNECTION_ID",payload:null}),c({type:"SET_CONNECTION_DIALOG_OPEN",payload:!0})},N=x=>{c({type:"SET_EDITING_CONNECTION_ID",payload:x}),c({type:"SET_CONNECTION_DIALOG_OPEN",payload:!0})},v=n.update.isPending;return t.jsxs(Wt,{onBack:()=>o.history.back(),children:[t.jsxs(Ut,{children:[t.jsxs(W,{delayDuration:0,children:[t.jsx(H,{asChild:!0,children:t.jsx("span",{className:"inline-block",children:t.jsx(V,{variant:"outline",size:"icon",className:"size-7 border border-input",disabled:!f||v,onClick:h,"aria-label":"Cancel",children:t.jsx(Bt,{size:14})})})}),t.jsx(U,{side:"bottom",children:"Cancel"})]}),t.jsxs(W,{delayDuration:0,children:[t.jsx(H,{asChild:!0,children:t.jsx("span",{className:"inline-block",children:t.jsx(V,{variant:"outline",size:"icon",className:"size-7 border border-input",disabled:!f||v,onClick:g,"aria-label":"Save",children:v?t.jsx(Le,{size:14,className:"animate-spin"}):t.jsx(tt,{size:14})})})}),t.jsx(U,{side:"bottom",children:"Save"})]}),t.jsxs(W,{delayDuration:0,children:[t.jsx(H,{asChild:!0,children:t.jsx("span",{className:"inline-block",children:t.jsxs(V,{variant:"outline",size:"sm",className:"h-7 gap-1.5 px-2 border border-input",onClick:a,"aria-label":"Test Agent",children:[t.jsx(Gt,{size:14}),"Test Agent"]})})}),t.jsx(U,{side:"bottom",children:"Test this agent in chat"})]}),t.jsxs(W,{delayDuration:0,children:[t.jsx(H,{asChild:!0,children:t.jsx("span",{className:"inline-block",children:t.jsx(V,{variant:"outline",size:"icon",className:"size-7 border border-input",onClick:()=>c({type:"SET_SHARE_DIALOG_OPEN",payload:!0}),"aria-label":"Share",children:t.jsx(Ht,{size:14})})})}),t.jsx(U,{side:"bottom",children:"Share"})]}),t.jsx($t,{title:l.title,url:s,icon:l.icon??"cpu_chip"})]}),t.jsx("div",{className:"flex h-full w-full bg-background overflow-auto",children:t.jsxs("div",{className:"flex flex-col w-full",children:[t.jsxs("div",{className:"flex items-start justify-between gap-4 p-6 shrink-0",children:[t.jsxs("div",{className:"flex items-start gap-4 flex-1 min-w-0",children:[t.jsx(le,{icon:l.icon,name:r.watch("title")||"Agent",size:"lg",className:"shrink-0 shadow-sm",fallbackIcon:t.jsx(Xe,{})}),t.jsxs("div",{className:"flex flex-col flex-1 min-w-0",children:[t.jsx(Fe,{...r.register("title"),className:"h-auto py-0.5 text-lg! font-medium leading-7 px-1 -mx-1 border-transparent hover:bg-input/25 focus:border-input bg-transparent transition-all",placeholder:"Agent Name"}),t.jsx(Fe,{...r.register("description"),className:"h-auto py-0.5 text-base text-muted-foreground leading-6 px-1 -mx-1 border-transparent hover:bg-input/25 focus:border-input bg-transparent transition-all",placeholder:"Add a description..."})]})]}),t.jsx("div",{className:"flex items-center gap-2 shrink-0",children:t.jsx(Lt,{checked:r.watch("status")==="active",onCheckedChange:x=>r.setValue("status",x?"active":"inactive",{shouldDirty:!0})})})]}),t.jsxs(Et,{open:i.skillsOpen,onOpenChange:x=>c({type:"SET_SKILLS_OPEN",payload:x}),className:"border-t border-border shrink-0 max-h-[400px] overflow-hidden flex flex-col",children:[d.length===0?t.jsxs("button",{type:"button",onClick:p,className:"w-full flex items-center justify-between px-6 py-4 hover:bg-muted/50 transition-colors cursor-pointer",children:[t.jsx("p",{className:"text-sm font-medium text-muted-foreground",children:"Skills"}),t.jsxs("div",{className:"h-7 px-2 inline-flex items-center justify-center gap-1 rounded-md text-sm text-muted-foreground",children:[t.jsx(Be,{size:14}),"Add"]})]}):t.jsx(At,{asChild:!0,children:t.jsxs("button",{type:"button",className:"w-full flex items-center justify-between px-6 py-4 hover:bg-muted/50 transition-colors cursor-pointer",children:[t.jsx("p",{className:"text-sm font-medium text-muted-foreground",children:"Skills"}),t.jsxs("div",{className:"flex items-center",children:[t.jsx("div",{className:"flex items-center -space-x-2 ease-(--ease-out-expo)",style:{width:i.skillsOpen?0:"auto",marginRight:i.skillsOpen?0:4,opacity:i.skillsOpen?0:1,pointerEvents:i.skillsOpen?"none":"auto",transitionProperty:"all",transitionDuration:i.skillsOpen?"0ms":"200ms"},children:d.slice(0,4).map(x=>t.jsx(j.Suspense,{fallback:t.jsx(Ie.Fallback,{}),children:t.jsx(Ie,{connection_id:x.connection_id})},x.connection_id))}),t.jsxs("div",{role:"button",tabIndex:0,className:"h-7 inline-flex items-center justify-center rounded-md text-sm text-muted-foreground overflow-hidden transition-all duration-200 ease-(--ease-out-expo) hover:bg-accent hover:text-accent-foreground",style:{width:i.skillsOpen?"auto":28,paddingLeft:i.skillsOpen?8:0,paddingRight:i.skillsOpen?8:0,gap:i.skillsOpen?4:0},onPointerDown:x=>{x.stopPropagation()},onClick:x=>{x.stopPropagation(),x.preventDefault(),p()},onKeyDown:x=>{(x.key==="Enter"||x.key===" ")&&(x.stopPropagation(),x.preventDefault(),p())},children:[t.jsx(Be,{size:14,className:"shrink-0"}),t.jsx("span",{className:"overflow-hidden whitespace-nowrap transition-all duration-200 ease-(--ease-out-expo)",style:{width:i.skillsOpen?"auto":0,opacity:i.skillsOpen?1:0},children:"Add"})]}),t.jsx("div",{className:"h-7 inline-flex items-center justify-center overflow-hidden transition-all duration-200 ease-(--ease-out-expo)",style:{width:i.skillsOpen?28:0,opacity:i.skillsOpen?1:0},children:t.jsx(Ft,{size:16,className:"shrink-0"})})]})]})}),t.jsx("div",{className:"grid overflow-hidden transition-[grid-template-rows] duration-200 ease-(--ease-out-expo)",style:{gridTemplateRows:i.skillsOpen?"1fr":"0fr"},children:t.jsx("div",{className:"min-h-0 overflow-hidden",children:t.jsx("div",{className:"overflow-y-auto max-h-[300px] mask-[linear-gradient(to_bottom,black_calc(100%-40px),transparent_100%)]",children:t.jsx("div",{className:"flex flex-col gap-2 px-6 pb-4 pt-2",children:d.map(x=>t.jsx(j.Suspense,{fallback:t.jsx(Ee.Fallback,{}),children:t.jsx(Ee,{connection_id:x.connection_id,selected_tools:x.selected_tools,selected_resources:x.selected_resources,selected_prompts:x.selected_prompts,onClick:()=>N(x.connection_id)})},x.connection_id))})})})})]}),t.jsxs("div",{className:"flex flex-col flex-1 p-6 border-t border-border overflow-auto",children:[t.jsx("p",{className:"text-sm font-medium text-muted-foreground mb-2",children:"Instructions"}),t.jsx(wt,{name:"metadata.instructions",control:r.control,render:({field:x})=>t.jsx(Rt,{...x,value:x.value??"",placeholder:"Write instructions here...",className:"min-h-[200px] resize-none text-sm placeholder:text-muted-foreground/50 leading-relaxed border-0 rounded-none shadow-none px-0 focus-visible:ring-0 focus-visible:ring-offset-0 focus:border-0 bg-transparent"})})]})]})}),t.jsx(Is,{open:i.connectionDialogOpen,onOpenChange:x=>c({type:"SET_CONNECTION_DIALOG_OPEN",payload:x}),selectedId:i.editingConnectionId,form:r,connections:d}),t.jsx(Ls,{open:i.shareDialogOpen,onOpenChange:x=>c({type:"SET_SHARE_DIALOG_OPEN",payload:x}),virtualMcp:l})]})}function Ms(){const l=C.c(6),e=yt();let s;l[0]===Symbol.for("react.memo_cache_sentinel")?(s={from:"/shell/$org/agents/$agentId"},l[0]=s):s=l[0];const o=Ct(s),{org:n,agentId:r}=o,d=Mt(r);if(!d){let c;return l[1]!==e||l[2]!==n?(c=t.jsx("div",{className:"flex h-full w-full bg-background",children:t.jsx(Ot,{title:"Agent not found",description:"This Agent may have been deleted or you may not have access.",actions:t.jsx(V,{variant:"outline",onClick:()=>e({to:"/$org/agents",params:{org:n}}),children:"Back to agents"})})}),l[1]=e,l[2]=n,l[3]=c):c=l[3],c}let i;return l[4]!==d?(i=t.jsx(Ps,{virtualMcp:d}),l[4]=d,l[5]=i):i=l[5],i}function Rl(){const l=C.c(1);let e;return l[0]===Symbol.for("react.memo_cache_sentinel")?(e=t.jsx(me,{children:t.jsx(j.Suspense,{fallback:t.jsx("div",{className:"flex h-full items-center justify-center bg-background",children:t.jsx(Le,{size:32,className:"animate-spin text-muted-foreground"})}),children:t.jsx(Ms,{})})}),l[0]=e):e=l[0],e}export{Rl as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a0 as a,a1 as t}from"./index-BcdQIGUF.js";const e=a(t,{target:"draft-7"});export{e as B};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{bq as Ie,r as u,aw as K,x as F,H as Re,Q as Ce,U as $e,J as Me,br as O}from"./index-BcdQIGUF.js";var Y={exports:{}},h={};var fe;function Ae(){if(fe)return h;fe=1;var t=Symbol.for("react.element"),l=Symbol.for("react.portal"),r=Symbol.for("react.fragment"),f=Symbol.for("react.strict_mode"),o=Symbol.for("react.profiler"),c=Symbol.for("react.provider"),d=Symbol.for("react.context"),v=Symbol.for("react.server_context"),y=Symbol.for("react.forward_ref"),i=Symbol.for("react.suspense"),p=Symbol.for("react.suspense_list"),b=Symbol.for("react.memo"),E=Symbol.for("react.lazy"),x=Symbol.for("react.offscreen"),$;$=Symbol.for("react.module.reference");function k(n){if(typeof n=="object"&&n!==null){var M=n.$$typeof;switch(M){case t:switch(n=n.type,n){case r:case o:case f:case i:case p:return n;default:switch(n=n&&n.$$typeof,n){case v:case d:case y:case E:case b:case c:return n;default:return M}}case l:return M}}}return h.ContextConsumer=d,h.ContextProvider=c,h.Element=t,h.ForwardRef=y,h.Fragment=r,h.Lazy=E,h.Memo=b,h.Portal=l,h.Profiler=o,h.StrictMode=f,h.Suspense=i,h.SuspenseList=p,h.isAsyncMode=function(){return!1},h.isConcurrentMode=function(){return!1},h.isContextConsumer=function(n){return k(n)===d},h.isContextProvider=function(n){return k(n)===c},h.isElement=function(n){return typeof n=="object"&&n!==null&&n.$$typeof===t},h.isForwardRef=function(n){return k(n)===y},h.isFragment=function(n){return k(n)===r},h.isLazy=function(n){return k(n)===E},h.isMemo=function(n){return k(n)===b},h.isPortal=function(n){return k(n)===l},h.isProfiler=function(n){return k(n)===o},h.isStrictMode=function(n){return k(n)===f},h.isSuspense=function(n){return k(n)===i},h.isSuspenseList=function(n){return k(n)===p},h.isValidElementType=function(n){return typeof n=="string"||typeof n=="function"||n===r||n===o||n===f||n===i||n===p||n===x||typeof n=="object"&&n!==null&&(n.$$typeof===E||n.$$typeof===b||n.$$typeof===c||n.$$typeof===d||n.$$typeof===y||n.$$typeof===$||n.getModuleId!==void 0)},h.typeOf=k,h}var me;function Fe(){return me||(me=1,Y.exports=Ae()),Y.exports}var qe=Fe();const lt=Ie(qe);var ve=1,De=.9,Pe=.8,je=.17,Z=.1,ee=.999,Le=.9999,Ke=.99,Ve=/[\\\/_+.#"@\[\(\{&]/,ze=/[\\\/_+.#"@\[\(\{&]/g,Oe=/[\s-]/,be=/[\s-]/g;function re(t,l,r,f,o,c,d){if(c===l.length)return o===t.length?ve:Ke;var v=`${o},${c}`;if(d[v]!==void 0)return d[v];for(var y=f.charAt(c),i=r.indexOf(y,o),p=0,b,E,x,$;i>=0;)b=re(t,l,r,f,i+1,c+1,d),b>p&&(i===o?b*=ve:Ve.test(t.charAt(i-1))?(b*=Pe,x=t.slice(o,i-1).match(ze),x&&o>0&&(b*=Math.pow(ee,x.length))):Oe.test(t.charAt(i-1))?(b*=De,$=t.slice(o,i-1).match(be),$&&o>0&&(b*=Math.pow(ee,$.length))):(b*=je,o>0&&(b*=Math.pow(ee,i-o))),t.charAt(i)!==l.charAt(c)&&(b*=Le)),(b<Z&&r.charAt(i-1)===f.charAt(c+1)||f.charAt(c+1)===f.charAt(c)&&r.charAt(i-1)!==f.charAt(c))&&(E=re(t,l,r,f,i+1,c+2,d),E*Z>b&&(b=E*Z)),b>p&&(p=b),i=r.indexOf(y,i+1);return d[v]=p,p}function pe(t){return t.toLowerCase().replace(be," ")}function Be(t,l,r){return t=r&&r.length>0?`${t+" "+r.join(" ")}`:t,re(t,l,pe(t),pe(l),0,0,{})}var z='[cmdk-group=""]',te='[cmdk-group-items=""]',Ue='[cmdk-group-heading=""]',ge='[cmdk-item=""]',he=`${ge}:not([aria-disabled="true"])`,ne="cmdk-item-select",j="data-value",_e=(t,l,r)=>Be(t,l,r),ye=u.createContext(void 0),B=()=>u.useContext(ye),Se=u.createContext(void 0),le=()=>u.useContext(Se),we=u.createContext(void 0),Ee=u.forwardRef((t,l)=>{let r=L(()=>{var e,s;return{search:"",value:(s=(e=t.value)!=null?e:t.defaultValue)!=null?s:"",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}}}),f=L(()=>new Set),o=L(()=>new Map),c=L(()=>new Map),d=L(()=>new Set),v=xe(t),{label:y,children:i,value:p,onValueChange:b,filter:E,shouldFilter:x,loop:$,disablePointerSelection:k=!1,vimBindings:n=!0,...M}=t,H=K(),ue=K(),T=K(),q=u.useRef(null),w=et();D(()=>{if(p!==void 0){let e=p.trim();r.current.value=e,R.emit()}},[p]),D(()=>{w(6,ae)},[]);let R=u.useMemo(()=>({subscribe:e=>(d.current.add(e),()=>d.current.delete(e)),snapshot:()=>r.current,setState:(e,s,m)=>{var a,g,S,C;if(!Object.is(r.current[e],s)){if(r.current[e]=s,e==="search")G(),N(),w(1,W);else if(e==="value"){if(document.activeElement.hasAttribute("cmdk-input")||document.activeElement.hasAttribute("cmdk-root")){let I=document.getElementById(T);I?I.focus():(a=document.getElementById(H))==null||a.focus()}if(w(7,()=>{var I;r.current.selectedItemId=(I=P())==null?void 0:I.id,R.emit()}),m||w(5,ae),((g=v.current)==null?void 0:g.value)!==void 0){let I=s??"";(C=(S=v.current).onValueChange)==null||C.call(S,I);return}}R.emit()}},emit:()=>{d.current.forEach(e=>e())}}),[]),J=u.useMemo(()=>({value:(e,s,m)=>{var a;s!==((a=c.current.get(e))==null?void 0:a.value)&&(c.current.set(e,{value:s,keywords:m}),r.current.filtered.items.set(e,oe(s,m)),w(2,()=>{N(),R.emit()}))},item:(e,s)=>(f.current.add(e),s&&(o.current.has(s)?o.current.get(s).add(e):o.current.set(s,new Set([e]))),w(3,()=>{G(),N(),r.current.value||W(),R.emit()}),()=>{c.current.delete(e),f.current.delete(e),r.current.filtered.items.delete(e);let m=P();w(4,()=>{G(),m?.getAttribute("id")===e&&W(),R.emit()})}),group:e=>(o.current.has(e)||o.current.set(e,new Set),()=>{c.current.delete(e),o.current.delete(e)}),filter:()=>v.current.shouldFilter,label:y||t["aria-label"],getDisablePointerSelection:()=>v.current.disablePointerSelection,listId:H,inputId:T,labelId:ue,listInnerRef:q}),[]);function oe(e,s){var m,a;let g=(a=(m=v.current)==null?void 0:m.filter)!=null?a:_e;return e?g(e,r.current.search,s):0}function N(){if(!r.current.search||v.current.shouldFilter===!1)return;let e=r.current.filtered.items,s=[];r.current.filtered.groups.forEach(a=>{let g=o.current.get(a),S=0;g.forEach(C=>{let I=e.get(C);S=Math.max(I,S)}),s.push([a,S])});let m=q.current;V().sort((a,g)=>{var S,C;let I=a.getAttribute("id"),U=g.getAttribute("id");return((S=e.get(U))!=null?S:0)-((C=e.get(I))!=null?C:0)}).forEach(a=>{let g=a.closest(te);g?g.appendChild(a.parentElement===g?a:a.closest(`${te} > *`)):m.appendChild(a.parentElement===m?a:a.closest(`${te} > *`))}),s.sort((a,g)=>g[1]-a[1]).forEach(a=>{var g;let S=(g=q.current)==null?void 0:g.querySelector(`${z}[${j}="${encodeURIComponent(a[0])}"]`);S?.parentElement.appendChild(S)})}function W(){let e=V().find(m=>m.getAttribute("aria-disabled")!=="true"),s=e?.getAttribute(j);R.setState("value",s||void 0)}function G(){var e,s,m,a;if(!r.current.search||v.current.shouldFilter===!1){r.current.filtered.count=f.current.size;return}r.current.filtered.groups=new Set;let g=0;for(let S of f.current){let C=(s=(e=c.current.get(S))==null?void 0:e.value)!=null?s:"",I=(a=(m=c.current.get(S))==null?void 0:m.keywords)!=null?a:[],U=oe(C,I);r.current.filtered.items.set(S,U),U>0&&g++}for(let[S,C]of o.current)for(let I of C)if(r.current.filtered.items.get(I)>0){r.current.filtered.groups.add(S);break}r.current.filtered.count=g}function ae(){var e,s,m;let a=P();a&&(((e=a.parentElement)==null?void 0:e.firstChild)===a&&((m=(s=a.closest(z))==null?void 0:s.querySelector(Ue))==null||m.scrollIntoView({block:"nearest"})),a.scrollIntoView({block:"nearest"}))}function P(){var e;return(e=q.current)==null?void 0:e.querySelector(`${ge}[aria-selected="true"]`)}function V(){var e;return Array.from(((e=q.current)==null?void 0:e.querySelectorAll(he))||[])}function Q(e){let s=V()[e];s&&R.setState("value",s.getAttribute(j))}function X(e){var s;let m=P(),a=V(),g=a.findIndex(C=>C===m),S=a[g+e];(s=v.current)!=null&&s.loop&&(S=g+e<0?a[a.length-1]:g+e===a.length?a[0]:a[g+e]),S&&R.setState("value",S.getAttribute(j))}function ie(e){let s=P(),m=s?.closest(z),a;for(;m&&!a;)m=e>0?Ye(m,z):Ze(m,z),a=m?.querySelector(he);a?R.setState("value",a.getAttribute(j)):X(e)}let ce=()=>Q(V().length-1),se=e=>{e.preventDefault(),e.metaKey?ce():e.altKey?ie(1):X(1)},de=e=>{e.preventDefault(),e.metaKey?Q(0):e.altKey?ie(-1):X(-1)};return u.createElement(F.div,{ref:l,tabIndex:-1,...M,"cmdk-root":"",onKeyDown:e=>{var s;(s=M.onKeyDown)==null||s.call(M,e);let m=e.nativeEvent.isComposing||e.keyCode===229;if(!(e.defaultPrevented||m))switch(e.key){case"n":case"j":{n&&e.ctrlKey&&se(e);break}case"ArrowDown":{se(e);break}case"p":case"k":{n&&e.ctrlKey&&de(e);break}case"ArrowUp":{de(e);break}case"Home":{e.preventDefault(),Q(0);break}case"End":{e.preventDefault(),ce();break}case"Enter":{e.preventDefault();let a=P();if(a){let g=new Event(ne);a.dispatchEvent(g)}}}}},u.createElement("label",{"cmdk-label":"",htmlFor:J.inputId,id:J.labelId,style:rt},y),_(t,e=>u.createElement(Se.Provider,{value:R},u.createElement(ye.Provider,{value:J},e))))}),He=u.forwardRef((t,l)=>{var r,f;let o=K(),c=u.useRef(null),d=u.useContext(we),v=B(),y=xe(t),i=(f=(r=y.current)==null?void 0:r.forceMount)!=null?f:d?.forceMount;D(()=>{if(!i)return v.item(o,d?.id)},[i]);let p=ke(o,c,[t.value,t.children,c],t.keywords),b=le(),E=A(w=>w.value&&w.value===p.current),x=A(w=>i||v.filter()===!1?!0:w.search?w.filtered.items.get(o)>0:!0);u.useEffect(()=>{let w=c.current;if(!(!w||t.disabled))return w.addEventListener(ne,$),()=>w.removeEventListener(ne,$)},[x,t.onSelect,t.disabled]);function $(){var w,R;k(),(R=(w=y.current).onSelect)==null||R.call(w,p.current)}function k(){b.setState("value",p.current,!0)}if(!x)return null;let{disabled:n,value:M,onSelect:H,forceMount:ue,keywords:T,...q}=t;return u.createElement(F.div,{ref:O(c,l),...q,id:o,"cmdk-item":"",role:"option","aria-disabled":!!n,"aria-selected":!!E,"data-disabled":!!n,"data-selected":!!E,onPointerMove:n||v.getDisablePointerSelection()?void 0:k,onClick:n?void 0:$},t.children)}),Te=u.forwardRef((t,l)=>{let{heading:r,children:f,forceMount:o,...c}=t,d=K(),v=u.useRef(null),y=u.useRef(null),i=K(),p=B(),b=A(x=>o||p.filter()===!1?!0:x.search?x.filtered.groups.has(d):!0);D(()=>p.group(d),[]),ke(d,v,[t.value,t.heading,y]);let E=u.useMemo(()=>({id:d,forceMount:o}),[o]);return u.createElement(F.div,{ref:O(v,l),...c,"cmdk-group":"",role:"presentation",hidden:b?void 0:!0},r&&u.createElement("div",{ref:y,"cmdk-group-heading":"","aria-hidden":!0,id:i},r),_(t,x=>u.createElement("div",{"cmdk-group-items":"",role:"group","aria-labelledby":r?i:void 0},u.createElement(we.Provider,{value:E},x))))}),Je=u.forwardRef((t,l)=>{let{alwaysRender:r,...f}=t,o=u.useRef(null),c=A(d=>!d.search);return!r&&!c?null:u.createElement(F.div,{ref:O(o,l),...f,"cmdk-separator":"",role:"separator"})}),Ne=u.forwardRef((t,l)=>{let{onValueChange:r,...f}=t,o=t.value!=null,c=le(),d=A(i=>i.search),v=A(i=>i.selectedItemId),y=B();return u.useEffect(()=>{t.value!=null&&c.setState("search",t.value)},[t.value]),u.createElement(F.input,{ref:l,...f,"cmdk-input":"",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"aria-autocomplete":"list",role:"combobox","aria-expanded":!0,"aria-controls":y.listId,"aria-labelledby":y.labelId,"aria-activedescendant":v,id:y.inputId,type:"text",value:o?t.value:d,onChange:i=>{o||c.setState("search",i.target.value),r?.(i.target.value)}})}),We=u.forwardRef((t,l)=>{let{children:r,label:f="Suggestions",...o}=t,c=u.useRef(null),d=u.useRef(null),v=A(i=>i.selectedItemId),y=B();return u.useEffect(()=>{if(d.current&&c.current){let i=d.current,p=c.current,b,E=new ResizeObserver(()=>{b=requestAnimationFrame(()=>{let x=i.offsetHeight;p.style.setProperty("--cmdk-list-height",x.toFixed(1)+"px")})});return E.observe(i),()=>{cancelAnimationFrame(b),E.unobserve(i)}}},[]),u.createElement(F.div,{ref:O(c,l),...o,"cmdk-list":"",role:"listbox",tabIndex:-1,"aria-activedescendant":v,"aria-label":f,id:y.listId},_(t,i=>u.createElement("div",{ref:O(d,y.listInnerRef),"cmdk-list-sizer":""},i)))}),Ge=u.forwardRef((t,l)=>{let{open:r,onOpenChange:f,overlayClassName:o,contentClassName:c,container:d,...v}=t;return u.createElement(Re,{open:r,onOpenChange:f},u.createElement(Ce,{container:d},u.createElement($e,{"cmdk-overlay":"",className:o}),u.createElement(Me,{"aria-label":t.label,"cmdk-dialog":"",className:c},u.createElement(Ee,{ref:l,...v}))))}),Qe=u.forwardRef((t,l)=>A(r=>r.filtered.count===0)?u.createElement(F.div,{ref:l,...t,"cmdk-empty":"",role:"presentation"}):null),Xe=u.forwardRef((t,l)=>{let{progress:r,children:f,label:o="Loading...",...c}=t;return u.createElement(F.div,{ref:l,...c,"cmdk-loading":"",role:"progressbar","aria-valuenow":r,"aria-valuemin":0,"aria-valuemax":100,"aria-label":o},_(t,d=>u.createElement("div",{"aria-hidden":!0},d)))}),ut=Object.assign(Ee,{List:We,Item:He,Input:Ne,Group:Te,Separator:Je,Dialog:Ge,Empty:Qe,Loading:Xe});function Ye(t,l){let r=t.nextElementSibling;for(;r;){if(r.matches(l))return r;r=r.nextElementSibling}}function Ze(t,l){let r=t.previousElementSibling;for(;r;){if(r.matches(l))return r;r=r.previousElementSibling}}function xe(t){let l=u.useRef(t);return D(()=>{l.current=t}),l}var D=typeof window>"u"?u.useEffect:u.useLayoutEffect;function L(t){let l=u.useRef();return l.current===void 0&&(l.current=t()),l}function A(t){let l=le(),r=()=>t(l.snapshot());return u.useSyncExternalStore(l.subscribe,r,r)}function ke(t,l,r,f=[]){let o=u.useRef(),c=B();return D(()=>{var d;let v=(()=>{var i;for(let p of r){if(typeof p=="string")return p.trim();if(typeof p=="object"&&"current"in p)return p.current?(i=p.current.textContent)==null?void 0:i.trim():o.current}})(),y=f.map(i=>i.trim());c.value(t,v,y),(d=l.current)==null||d.setAttribute(j,v),o.current=v}),o}var et=()=>{let[t,l]=u.useState(),r=L(()=>new Map);return D(()=>{r.current.forEach(f=>f()),r.current=new Map},[t]),(f,o)=>{r.current.set(f,o),l({})}};function tt(t){let l=t.type;return typeof l=="function"?l(t.props):"render"in l?l.render(t.props):t}function _({asChild:t,children:l},r){return t&&u.isValidElement(l)?u.cloneElement(tt(l),{ref:l.ref},r(l.props.children)):r(l)}var rt={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"};export{lt as R,ut as _,qe as r};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as u}from"./infiniteQueryObserver-DrveVX8A.js";import{Y as i}from"./index-BcdQIGUF.js";function t(e,r){return i(e,u,r)}export{t as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Y as u,ag as s}from"./index-BcdQIGUF.js";function o(e,r){return u(e,s,r)}export{o as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as s}from"./infiniteQueryObserver-DrveVX8A.js";import{Y as u,Z as n}from"./index-BcdQIGUF.js";function a(r,e){return u({...r,enabled:!0,suspense:!0,throwOnError:n},s,e)}export{a as u};
|