@mcp-use/inspector 20.0.0-beta.12 → 20.0.0-beta.13
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/cdn/{ChatTab-C8zXNUYZ.js → ChatTab-CokP5UlL.js} +6 -6
- package/dist/cdn/{ConnectionSettingsForm-BVXahRU8.js → ConnectionSettingsForm-CXCKdMZh.js} +1 -1
- package/dist/cdn/{ConnectionSettingsTab-BhZAR3i_.js → ConnectionSettingsTab-Ag4WD55h.js} +1 -1
- package/dist/cdn/{MCPAppsDebugControls-CuOeF-vE.js → MCPAppsDebugControls-C01DPDJv.js} +2 -2
- package/dist/cdn/{MarkdownRenderer-BqBKHiSX.js → MarkdownRenderer-CrG5JHAZ.js} +1 -1
- package/dist/cdn/{McpAppsViewPanel-DPBSphNJ.js → McpAppsViewPanel-07_iHrne.js} +2 -2
- package/dist/cdn/{OAuthCallback-bHRDqzaN.js → OAuthCallback-Cku-R2uM.js} +1 -1
- package/dist/cdn/{PromptsTab-D_dlPX_K.js → PromptsTab-98ugje_q.js} +1 -1
- package/dist/cdn/{ResourcesTab-d7SnrXUl.js → ResourcesTab-CxHilZjd.js} +5 -5
- package/dist/cdn/{SamplingTab-DOPQOTz5.js → SamplingTab-gOUjg7bt.js} +3 -3
- package/dist/cdn/{ToolsTab-yyqMH0vD.js → ToolsTab-Dm6n5OxE.js} +4 -4
- package/dist/cdn/{ViewPreview-AeGZWy82.js → ViewPreview-CCKWd8Qt.js} +2 -2
- package/dist/cdn/{dist-OgG_v-Si.js → dist-C-AJLM5q.js} +3 -3
- package/dist/cdn/{index-browser-BcOnlg57.js → index-browser-CCygKh3z.js} +1 -1
- package/dist/cdn/inspector.js +5 -5
- package/dist/cdn/{react-xycV9YKS.js → react-BiVEwoxA.js} +12 -10
- package/dist/cdn/{telemetry-BalK3Ouf.js → telemetry-DyrOzsAR.js} +2 -2
- package/dist/cdn/{useConfig-Ble7Vgp1.js → useConfig-BTDwEhra.js} +2 -2
- package/dist/cdn/{useViewHostProps-vDnzU_bm.js → useViewHostProps-C5NRGTzJ.js} +1 -1
- package/dist/cli.js +1 -1
- package/dist/server/cdn-shell.js +2 -2
- package/dist/server/{chunk-ETDY7I5U.js → chunk-2XQWLYOZ.js} +1 -1
- package/dist/server/{chunk-RCI2YLNS.js → chunk-QQP554HG.js} +1 -1
- package/dist/server/{chunk-DJ6S6EF5.js → chunk-YAYRN4DW.js} +1 -1
- package/dist/server/cli.js +2 -2
- package/dist/server/index.js +3 -3
- package/dist/server/middleware.js +3 -3
- package/dist/server/version.js +1 -1
- package/dist/web/assets/{ChatTab-CCCw6oWr.js → ChatTab-BEfFVccY.js} +1 -1
- package/dist/web/assets/{ConnectionSettingsTab-DHOW1I8A.js → ConnectionSettingsTab-Bb_6a0Iv.js} +1 -1
- package/dist/web/assets/{ElicitationTab-h5zlfVfn.js → ElicitationTab-BP4GKiyX.js} +1 -1
- package/dist/web/assets/{MCPAppsDebugControls-DO5EDIz_.js → MCPAppsDebugControls-BIyFdqol.js} +1 -1
- package/dist/web/assets/{ManufactOAuthCallback-BVowTudz.js → ManufactOAuthCallback-C7FmBqhm.js} +1 -1
- package/dist/web/assets/{MarkdownRenderer-CxBCVgy6.js → MarkdownRenderer-Dh79xxF3.js} +1 -1
- package/dist/web/assets/{McpAppsViewPanel-Bl62cfjJ.js → McpAppsViewPanel-eC3j1-Vq.js} +1 -1
- package/dist/web/assets/{NotificationsTab-GLHnHHZG.js → NotificationsTab-BiZcGnsE.js} +1 -1
- package/dist/web/assets/{OAuthCallback-Bg0ejU9I.js → OAuthCallback-0QMKMr_h.js} +1 -1
- package/dist/web/assets/{PromptsTab-C7rfVPpA.js → PromptsTab-DP25ApgP.js} +1 -1
- package/dist/web/assets/{ResourcesTab-CWAPZqDe.js → ResourcesTab-CptaN3NT.js} +1 -1
- package/dist/web/assets/{SamplingTab-BHNlVvQn.js → SamplingTab-BcdnfiwQ.js} +1 -1
- package/dist/web/assets/{ServerMetadataTab-BPfRsmSt.js → ServerMetadataTab-DfM-a-Kp.js} +1 -1
- package/dist/web/assets/{ToolsTab-Dor-SLgL.js → ToolsTab-hSGwy5-P.js} +1 -1
- package/dist/web/assets/{ViewPreview-DeWlfohx.js → ViewPreview-r5Me72Dm.js} +1 -1
- package/dist/web/assets/{checkbox-B0G_7zpI.js → checkbox-CiCqaf9B.js} +1 -1
- package/dist/web/assets/{dist-CwP_ZKMB.js → dist-igO5zKmw.js} +4 -4
- package/dist/web/assets/{index-Czse3P3x.js → index-lCF-0iyi.js} +5 -5
- package/dist/web/assets/{shared-DRZGQjmF.js → shared-ChslWC1c.js} +1 -1
- package/dist/web/assets/{tabs-subtle-uM1_2FSE.js → tabs-subtle-BqKfSXAk.js} +1 -1
- package/dist/web/assets/{useConfig-D_iTmuEJ.js → useConfig-BoaEj10z.js} +1 -1
- package/dist/web/assets/{useViewHostProps-CQbZRFtk.js → useViewHostProps-BUcH84Z-.js} +1 -1
- package/dist/web/index.html +2 -2
- package/package.json +3 -3
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ChatTab-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ChatTab-BEfFVccY.js","assets/react-CU_d2d5K.js","assets/button-C8Xa2k4x.js","assets/createLucideIcon-BEHeJH0M.js","assets/FormContext-sV-yByKz.js","assets/input-C0OQCUZy.js","assets/select-D6jzbLJn.js","assets/AnimatePresence-FfDQQNFJ.js","assets/label-CI7JWQOo.js","assets/tabs-subtle-BqKfSXAk.js","assets/refresh-cw-B5iaAZKn.js","assets/MarkdownRenderer-Dh79xxF3.js","assets/checkbox-CiCqaf9B.js","assets/dist-igO5zKmw.js","assets/useConfig-BoaEj10z.js","assets/schemaHelpers-DLNTQr_6.js","assets/McpAppsViewPanel-eC3j1-Vq.js","assets/WidgetWrapper-cv_BM1bY.js","assets/useViewHostProps-BUcH84Z-.js","assets/textarea-CRTXuRmE.js","assets/ToolsTab-hSGwy5-P.js","assets/MCPAppsDebugControls-BIyFdqol.js","assets/maximize-2-Br1WQzT2.js","assets/sparkles-BGYTDThM.js","assets/zap-BDWHCVHU.js","assets/code-B14rVdNt.js","assets/shared-ChslWC1c.js","assets/ListTabHeader-CrGae306.js","assets/maximize-CJNgRe6S.js","assets/save-TM6fvNrt.js","assets/PromptsTab-DP25ApgP.js","assets/ResourcesTab-CptaN3NT.js","assets/brush-DX0UZ_pI.js","assets/SamplingTab-BcdnfiwQ.js","assets/ElicitationTab-BP4GKiyX.js","assets/NotificationsTab-BiZcGnsE.js","assets/ServerMetadataTab-DfM-a-Kp.js","assets/inspector-settings-layout-yjKRJDai.js","assets/ConnectionSettingsTab-Bb_6a0Iv.js","assets/OAuthCallback-0QMKMr_h.js","assets/ManufactOAuthCallback-C7FmBqhm.js","assets/ViewPreview-r5Me72Dm.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
import{a as e,i as t,n,s as r,t as i}from"./react-CU_d2d5K.js";import{$ as a,$n as o,A as s,At as c,B as l,Bn as u,Ct as d,D as f,Dn as p,Dt as m,E as h,En as g,F as _,G as v,Gt as y,I as b,It as x,J as S,K as C,Kn as w,Kt as T,L as E,Lt as ee,M as te,Mn as ne,Mt as re,N as ie,Nn as D,Nt as ae,O,Ot as k,P as A,Pn as oe,Pt as se,Q as ce,R as j,Rn as M,Rt as N,S as le,St as ue,T as de,Tn as fe,Tt as pe,U as me,Un as he,Ut as ge,Wn as _e,X as ve,Y as ye,Yn as be,Z as xe,Zn as P,_ as Se,_t as Ce,a as we,an as Te,ar as Ee,at as De,b as Oe,c as ke,cr as Ae,ct as je,dt as Me,et as Ne,f as Pe,ft as Fe,g as Ie,gt as Le,h as Re,hn as ze,ht as Be,i as Ve,in as He,ir as Ue,it as We,j as Ge,jt as Ke,k as qe,kn as Je,kt as Ye,lt as Xe,m as Ze,mn as Qe,mt as $e,n as et,nr as tt,o as nt,on as rt,or as it,ot as at,pt as ot,q as st,qt as ct,r as lt,rn as ut,rr as dt,rt as ft,s as pt,sr as F,st as mt,t as ht,tt as gt,ut as _t,v as vt,vt as yt,w as bt,wn as xt,wt as St,x as Ct,y as wt,yt as Tt,z as Et,zn as Dt}from"./input-C0OQCUZy.js";import{n as Ot,t as I}from"./createLucideIcon-BEHeJH0M.js";import{B as kt,D as At,H as L,M as jt,O as Mt,V as Nt,_ as Pt,a as Ft,c as It,d as Lt,g as Rt,h as zt,j as Bt,m as Vt,o as Ht,p as Ut,s as Wt,t as Gt,u as Kt,v as qt,z as Jt}from"./button-C8Xa2k4x.js";import{n as Yt,t as Xt}from"./label-CI7JWQOo.js";import{b as Zt,l as Qt,r as $t,t as en}from"./AnimatePresence-FfDQQNFJ.js";import{C as tn,S as nn,T as rn,_ as an,a as on,b as sn,c as cn,d as ln,f as un,g as dn,h as fn,i as pn,l as mn,m as hn,n as gn,p as _n,r as vn,t as yn,u as bn,v as xn,w as Sn,x as Cn,y as wn}from"./select-D6jzbLJn.js";import{c as Tn,i as En,l as Dn,o as On,r as kn,t as An}from"./FormContext-sV-yByKz.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var jn=n((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0<n;){var r=n-1>>>1,a=e[r];if(0<i(a,t))e[r]=t,e[n]=a,n=r;else break a}}function n(e){return e.length===0?null:e[0]}function r(e){if(e.length===0)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;a:for(var r=0,a=e.length,o=a>>>1;r<o;){var s=2*(r+1)-1,c=e[s],l=s+1,u=e[l];if(0>i(c,n))l<a&&0>i(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(l<a&&0>i(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m)if(n(c)!==null)m=!0,S||(S=!0,te());else{var t=n(l);t!==null&&ie(x,t.startTime-e)}}var S=!1,C=-1,w=5,T=-1;function E(){return g?!0:!(e.unstable_now()-T<w)}function ee(){if(g=!1,S){var t=e.unstable_now();T=t;var i=!0;try{a:{m=!1,h&&(h=!1,v(C),C=-1),p=!0;var a=f;try{b:{for(b(t),d=n(c);d!==null&&!(d.expirationTime>t&&E());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&ie(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?te():S=!1}}}var te;if(typeof y==`function`)te=function(){y(ee)};else if(typeof MessageChannel<`u`){var ne=new MessageChannel,re=ne.port2;ne.port1.onmessage=ee,te=function(){re.postMessage(null)}}else te=function(){_(ee,0)};function ie(t,n){C=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125<e?console.error(`forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported`):w=0<e?Math.floor(1e3/e):5},e.unstable_getCurrentPriorityLevel=function(){return f},e.unstable_next=function(e){switch(f){case 1:case 2:case 3:var t=3;break;default:t=f}var n=f;f=t;try{return e()}finally{f=n}},e.unstable_requestPaint=function(){g=!0},e.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=f;f=e;try{return t()}finally{f=n}},e.unstable_scheduleCallback=function(r,i,a){var o=e.unstable_now();switch(typeof a==`object`&&a?(a=a.delay,a=typeof a==`number`&&0<a?o+a:o):a=o,r){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return s=a+s,r={id:u++,callback:i,priorityLevel:r,startTime:a,expirationTime:s,sortIndex:-1},a>o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(C),C=-1):h=!0,ie(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,S||(S=!0,te()))),r},e.unstable_shouldYield=E,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),Mn=n(((e,t)=>{t.exports=jn()})),Nn=n((e=>{var t=Mn(),n=i(),r=Ae();function a(e){var t=`https://react.dev/errors/`+e;if(1<arguments.length){t+=`?args[]=`+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+=`&args[]=`+encodeURIComponent(arguments[n])}return`Minified React error #`+e+`; visit `+t+` for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`}function o(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function s(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do t=e,t.flags&4098&&(n=t.return),e=t.return;while(e)}return t.tag===3?n:null}function c(e){if(e.tag===13){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function l(e){if(e.tag===31){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function u(e){if(s(e)!==e)throw Error(a(188))}function d(e){var t=e.alternate;if(!t){if(t=s(e),t===null)throw Error(a(188));return t===e?e:null}for(var n=e,r=t;;){var i=n.return;if(i===null)break;var o=i.alternate;if(o===null){if(r=i.return,r!==null){n=r;continue}break}if(i.child===o.child){for(o=i.child;o;){if(o===n)return u(i),e;if(o===r)return u(i),t;o=o.sibling}throw Error(a(188))}if(n.return!==r.return)n=i,r=o;else{for(var c=!1,l=i.child;l;){if(l===n){c=!0,n=i,r=o;break}if(l===r){c=!0,r=i,n=o;break}l=l.sibling}if(!c){for(l=o.child;l;){if(l===n){c=!0,n=o,r=i;break}if(l===r){c=!0,r=o,n=i;break}l=l.sibling}if(!c)throw Error(a(189))}}if(n.alternate!==r)throw Error(a(190))}if(n.tag!==3)throw Error(a(188));return n.stateNode.current===n?e:t}function f(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e;for(e=e.child;e!==null;){if(t=f(e),t!==null)return t;e=e.sibling}return null}var p=Object.assign,m=Symbol.for(`react.element`),h=Symbol.for(`react.transitional.element`),g=Symbol.for(`react.portal`),_=Symbol.for(`react.fragment`),v=Symbol.for(`react.strict_mode`),y=Symbol.for(`react.profiler`),b=Symbol.for(`react.consumer`),x=Symbol.for(`react.context`),S=Symbol.for(`react.forward_ref`),C=Symbol.for(`react.suspense`),w=Symbol.for(`react.suspense_list`),T=Symbol.for(`react.memo`),E=Symbol.for(`react.lazy`),ee=Symbol.for(`react.activity`),te=Symbol.for(`react.memo_cache_sentinel`),ne=Symbol.iterator;function re(e){return typeof e!=`object`||!e?null:(e=ne&&e[ne]||e[`@@iterator`],typeof e==`function`?e:null)}var ie=Symbol.for(`react.client.reference`);function D(e){if(e==null)return null;if(typeof e==`function`)return e.$$typeof===ie?null:e.displayName||e.name||null;if(typeof e==`string`)return e;switch(e){case _:return`Fragment`;case y:return`Profiler`;case v:return`StrictMode`;case C:return`Suspense`;case w:return`SuspenseList`;case ee:return`Activity`}if(typeof e==`object`)switch(e.$$typeof){case g:return`Portal`;case x:return e.displayName||`Context`;case b:return(e._context.displayName||`Context`)+`.Consumer`;case S:var t=e.render;return e=e.displayName,e||=(e=t.displayName||t.name||``,e===``?`ForwardRef`:`ForwardRef(`+e+`)`),e;case T:return t=e.displayName||null,t===null?D(e.type)||`Memo`:t;case E:t=e._payload,e=e._init;try{return D(e(t))}catch{}}return null}var ae=Array.isArray,O=n.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,k=r.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,A={pending:!1,data:null,method:null,action:null},oe=[],se=-1;function ce(e){return{current:e}}function j(e){0>se||(e.current=oe[se],oe[se]=null,se--)}function M(e,t){se++,oe[se]=e.current,e.current=t}var N=ce(null),le=ce(null),ue=ce(null),de=ce(null);function fe(e,t){switch(M(ue,t),M(le,e),M(N,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?ef(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=ef(t),e=tf(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}j(N),M(N,e)}function pe(){j(N),j(le),j(ue)}function me(e){e.memoizedState!==null&&M(de,e);var t=N.current,n=tf(t,e.type);t!==n&&(M(le,e),M(N,n))}function he(e){le.current===e&&(j(N),j(le)),de.current===e&&(j(de),up._currentValue=A)}var ge,_e;function ve(e){if(ge===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);ge=t&&t[1]||``,_e=-1<e.stack.indexOf(`
|
|
3
3
|
at`)?` (<anonymous>)`:-1<e.stack.indexOf(`@`)?`@unknown:0:0`:``}return`
|
|
4
4
|
`+ge+e+_e}var ye=!1;function be(e,t){if(!e||ye)return``;ye=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var r={DetermineComponentFrameRoot:function(){try{if(t){var n=function(){throw Error()};if(Object.defineProperty(n.prototype,"props",{set:function(){throw Error()}}),typeof Reflect==`object`&&Reflect.construct){try{Reflect.construct(n,[])}catch(e){var r=e}Reflect.construct(e,[],n)}else{try{n.call()}catch(e){r=e}e.call(n.prototype)}}else{try{throw Error()}catch(e){r=e}(n=e())&&typeof n.catch==`function`&&n.catch(function(){})}}catch(e){if(e&&r&&typeof e.stack==`string`)return[e.stack,r.stack]}return[null,null]}};r.DetermineComponentFrameRoot.displayName=`DetermineComponentFrameRoot`;var i=Object.getOwnPropertyDescriptor(r.DetermineComponentFrameRoot,`name`);i&&i.configurable&&Object.defineProperty(r.DetermineComponentFrameRoot,"name",{value:`DetermineComponentFrameRoot`});var a=r.DetermineComponentFrameRoot(),o=a[0],s=a[1];if(o&&s){var c=o.split(`
|
|
@@ -86,7 +86,7 @@ void main(){
|
|
|
86
86
|
color=mix(color,grainOC,.35*grainOS);
|
|
87
87
|
opacity+=.5*grainOS;
|
|
88
88
|
fragColor=vec4(color,clamp(opacity,0.,1.));
|
|
89
|
-
}`;function po(e){return[parseInt(e.slice(1,3),16)/255,parseInt(e.slice(3,5),16)/255,parseInt(e.slice(5,7),16)/255,1]}function mo({className:e,colors:t=[`#e0eaff`,`#f9ffbd`,`#dedede`,`#ffffff`],distortion:n=.8,swirl:r=.1,grainMixer:i=0,grainOverlay:a=.2,speed:o=1}){let s=(0,z.useRef)(null),c=(0,z.useRef)(null),l=(0,z.useRef)({colors:t,distortion:n,swirl:r,grainMixer:i,grainOverlay:a,speed:o});return l.current={colors:t,distortion:n,swirl:r,grainMixer:i,grainOverlay:a,speed:o},(0,z.useEffect)(()=>{let e=s.current,t=c.current;if(!e||!t)return;let n=e.getContext(`webgl2`);if(!n)return;let r=(e,t)=>{let r=n.createShader(e);return r?(n.shaderSource(r,t),n.compileShader(r),n.getShaderParameter(r,n.COMPILE_STATUS)?r:(console.error(n.getShaderInfoLog(r)),null)):null},i=r(n.VERTEX_SHADER,uo),a=r(n.FRAGMENT_SHADER,fo);if(!i||!a)return;let o=n.createProgram();if(!o)return;if(n.attachShader(o,i),n.attachShader(o,a),n.linkProgram(o),!n.getProgramParameter(o,n.LINK_STATUS)){console.error(n.getProgramInfoLog(o));return}n.useProgram(o);let u=n.getAttribLocation(o,`a_position`),d=n.createBuffer();n.bindBuffer(n.ARRAY_BUFFER,d),n.bufferData(n.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,-1,1,1,-1,1,1]),n.STATIC_DRAW),n.enableVertexAttribArray(u),n.vertexAttribPointer(u,2,n.FLOAT,!1,0,0);let f=n.getUniformLocation(o,`u_time`),p=n.getUniformLocation(o,`u_resolution`),m=[0,1,2,3].map(e=>n.getUniformLocation(o,`u_colors[${e}]`)),h=n.getUniformLocation(o,`u_colorsCount`),g=n.getUniformLocation(o,`u_distortion`),_=n.getUniformLocation(o,`u_swirl`),v=n.getUniformLocation(o,`u_grainMixer`),y=n.getUniformLocation(o,`u_grainOverlay`),b=0,x=performance.now(),S=0,C=()=>{let r=Math.min(2,window.devicePixelRatio||1);e.width=Math.floor(t.clientWidth*r),e.height=Math.floor(t.clientHeight*r),n.viewport(0,0,e.width,e.height)},w=t=>{if(document.hidden){x=t,S=requestAnimationFrame(w);return}let{colors:r,distortion:i,swirl:a,grainMixer:o,grainOverlay:s,speed:c}=l.current,u=t-x;x=t,b+=u*c;let d=r.map(po);n.uniform1f(f,b*.001),n.uniform2f(p,e.width,e.height);for(let e=0;e<4;e++){let t=m[e];t&&n.uniform4fv(t,d[e]??[1,1,1,1])}n.uniform1f(h,d.length),n.uniform1f(g,i),n.uniform1f(_,a),n.uniform1f(v,o),n.uniform1f(y,s),n.drawArrays(n.TRIANGLES,0,6),S=requestAnimationFrame(w)};C();let T=new ResizeObserver(C);return T.observe(t),S=requestAnimationFrame(w),()=>{cancelAnimationFrame(S),T.disconnect()}},[]),(0,R.jsx)(`div`,{ref:c,className:e,children:(0,R.jsx)(`canvas`,{ref:s,className:`h-full w-full`,"aria-hidden":!0})})}var ho=`mcp-inspector-connect-panel-mesh-animation-paused`,go=`mcp-inspector-chat-mesh-animation-paused`;function _o(e){try{return localStorage.getItem(e)===`true`}catch{return!1}}function vo(e){let[t,n]=(0,z.useState)(()=>_o(e));return{paused:t,toggle:(0,z.useCallback)(()=>{n(t=>{let n=!t;try{localStorage.setItem(e,n?`true`:`false`)}catch{}return n})},[e])}}var yo=`z-50 flex h-7 w-7 cursor-pointer items-center justify-center rounded-full border border-zinc-500/60 bg-transparent text-zinc-600 transition-colors hover:border-zinc-500 hover:text-zinc-800 dark:border-zinc-500/50 dark:text-zinc-400 dark:hover:border-zinc-400 dark:hover:text-zinc-200`;function bo({paused:e,onToggle:t,className:n}){return(0,R.jsxs)(et,{children:[(0,R.jsx)(we,{render:(0,R.jsx)(`button`,{type:`button`,onClick:t,"aria-label":e?`Resume animation`:`Pause animation`,className:L(yo,n),children:e?(0,R.jsx)(ki,{className:`ml-px h-3 w-3`,fill:`currentColor`}):(0,R.jsx)(Vi,{className:`h-2.5 w-2.5`,fill:`currentColor`})}),nativeButton:!0}),(0,R.jsx)(lt,{side:`left`,children:(0,R.jsx)(`p`,{children:e?`Resume animation`:`Pause animation`})})]})}var xo=class{name=`mcp_inspector_open`;properties;constructor(e){this.properties={server_url:e.serverUrl,connection_count:e.connectionCount}}},So=class{name=`mcp_tool_execution`;properties;constructor(e){this.properties={tool_name:e.toolName,server_id:e.serverId,success:e.success,duration:e.duration,error:e.error}}},Co=class{name=`mcp_resource_read`;properties;constructor(e){this.properties={resource_uri:e.resourceUri,server_id:e.serverId,success:e.success,error:e.error}}},wo=class{name=`mcp_prompt_call`;properties;constructor(e){this.properties={prompt_name:e.promptName,server_id:e.serverId,success:e.success,error:e.error}}},To=class{name=`mcp_server_connection`;properties;constructor(e){this.properties={server_id:e.serverId,server_url:e.serverUrl,success:e.success,connection_type:e.connectionType,error:e.error}}},Eo=class{name=`mcp_chat_message`;properties;constructor(e){this.properties={server_id:e.serverId,provider:e.provider,model:e.model,message_count:e.messageCount,tool_calls_count:e.toolCallsCount,success:e.success,execution_mode:e.executionMode,duration:e.duration,error:e.error}}},Do=class{name=`mcp_server_added`;properties;constructor(e){this.properties={server_id:e.serverId,server_url:e.serverUrl,connection_type:e.connectionType,via_proxy:e.viaProxy}}},Oo=class{name=`mcp_server_removed`;properties;constructor(e){this.properties={server_id:e.serverId}}},ko=class{name=`mcp_command_palette_open`;properties;constructor(e){this.properties={trigger:e.trigger}}},Ao=class{name=`mcp_tool_saved`;properties;constructor(e){this.properties={tool_name:e.toolName,server_id:e.serverId}}},jo=class{name=`mcp_tunnel_action`;properties;constructor(e){this.properties={action:e.action,success:e.success,tunnel_url:e.tunnelUrl}}},Mo=class{name=`mcp_deploy_click`;properties;constructor(e){this.properties={referrer:e.referrer}}},No=class{name=`mcp_chat_configured`;properties;constructor(e){this.properties={provider:e.provider,model:e.model}}},Po=class{name=`mcp_tab_navigation`;properties;constructor(e){this.properties={tab:e.tab,previous_tab:e.previousTab}}},Fo=class{name=`mcp_add_to_client`;properties;constructor(e){this.properties={client:e.client}}},Io=class{name=`mcp_session_duration`;properties;constructor(e){this.properties={duration_seconds:e.durationSeconds,tabs_visited:e.tabsVisited,tools_executed:e.toolsExecuted}}};function Lo(){try{if(typeof window<`u`){let e=window.__INSPECTOR_VERSION__;if(e!==void 0&&e!==``)return e}return`2.0.0-beta.7`}catch{return`0.0.0`}}var Ro=Object.create,zo=Object.defineProperty,Bo=Object.getOwnPropertyDescriptor,Vo=Object.getOwnPropertyNames,Ho=Object.getPrototypeOf,Uo=Object.prototype.hasOwnProperty,Wo=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Go=(e,t)=>{let n={};for(var r in e)zo(n,r,{get:e[r],enumerable:!0});return t&&zo(n,Symbol.toStringTag,{value:`Module`}),n},Ko=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=Vo(t),a=0,o=i.length,s;a<o;a++)s=i[a],!Uo.call(e,s)&&s!==n&&zo(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=Bo(t,s))||r.enumerable});return e},qo=(e,t,n)=>(n=e==null?{}:Ro(Ho(e)),Ko(t||!e||!e.__esModule?zo(n,`default`,{value:e,enumerable:!0}):n,e)),Jo,Yo=Object.freeze({status:`aborted`});function B(e,t,n){function r(n,r){if(n._zod||Object.defineProperty(n,"_zod",{value:{def:r,constr:o,traits:new Set},enumerable:!1}),n._zod.traits.has(e))return;n._zod.traits.add(e),t(n,r);let i=o.prototype,a=Object.keys(i);for(let e=0;e<a.length;e++){let t=a[e];t in n||(n[t]=i[t].bind(n))}}let i=n?.Parent??Object;class a extends i{}Object.defineProperty(a,"name",{value:e});function o(e){var t;let i=n?.Parent?new a:this;r(i,e),(t=i._zod).deferred??(t.deferred=[]);for(let e of i._zod.deferred)e();return i}return Object.defineProperty(o,"init",{value:r}),Object.defineProperty(o,Symbol.hasInstance,{value:t=>n?.Parent&&t instanceof n.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(o,"name",{value:e}),o}var Xo=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},Zo=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}};(Jo=globalThis).__zod_globalConfig??(Jo.__zod_globalConfig={});var Qo=globalThis.__zod_globalConfig;function $o(e){return e&&Object.assign(Qo,e),Qo}function es(e){let t=Object.values(e).filter(e=>typeof e==`number`);return Object.entries(e).filter(([e,n])=>t.indexOf(+e)===-1).map(([e,t])=>t)}function ts(e,t){return typeof t==`bigint`?t.toString():t}function ns(e){return{get value(){{let t=e();return Object.defineProperty(this,"value",{value:t}),t}throw Error(`cached value already set`)}}}function rs(e){return e==null}function is(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function as(e,t){let n=e/t,r=Math.round(n),i=2**-52*Math.max(Math.abs(n),1);return Math.abs(n-r)<i?0:n-r}var os=Symbol(`evaluating`);function ss(e,t,n){let r;Object.defineProperty(e,t,{get(){if(r!==os)return r===void 0&&(r=os,r=n()),r},set(n){Object.defineProperty(e,t,{value:n})},configurable:!0})}function cs(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function ls(...e){let t={};for(let n of e)Object.assign(t,Object.getOwnPropertyDescriptors(n));return Object.defineProperties({},t)}function us(e){return JSON.stringify(e)}function ds(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,``).replace(/[\s_-]+/g,`-`).replace(/^-+|-+$/g,``)}var fs=`captureStackTrace`in Error?Error.captureStackTrace:(...e)=>{};function ps(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var ms=ns(()=>{if(Qo.jitless||typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function hs(e){if(ps(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let n=t.prototype;return!(ps(n)===!1||Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)===!1)}function gs(e){return hs(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}var _s=new Set([`string`,`number`,`symbol`]);function vs(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function ys(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function bs(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function xs(e){return Object.keys(e).filter(t=>e[t]._zod.optin===`optional`&&e[t]._zod.optout===`optional`)}var Ss={safeint:[-(2**53-1),2**53-1],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function Cs(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.pick() cannot be used on object schemas containing refinements`);return ys(e,ls(e._zod.def,{get shape(){let e={};for(let r in t){if(!(r in n.shape))throw Error(`Unrecognized key: "${r}"`);t[r]&&(e[r]=n.shape[r])}return cs(this,`shape`,e),e},checks:[]}))}function ws(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.omit() cannot be used on object schemas containing refinements`);return ys(e,ls(e._zod.def,{get shape(){let r={...e._zod.def.shape};for(let e in t){if(!(e in n.shape))throw Error(`Unrecognized key: "${e}"`);t[e]&&delete r[e]}return cs(this,`shape`,r),r},checks:[]}))}function Ts(e,t){if(!hs(t))throw Error(`Invalid input to extend: expected a plain object`);let n=e._zod.def.checks;if(n&&n.length>0){let n=e._zod.def.shape;for(let e in t)if(Object.getOwnPropertyDescriptor(n,e)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return ys(e,ls(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return cs(this,`shape`,n),n}}))}function Es(e,t){if(!hs(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return ys(e,ls(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return cs(this,`shape`,n),n}}))}function Ds(e,t){if(e._zod.def.checks?.length)throw Error(`.merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.`);return ys(e,ls(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t._zod.def.shape};return cs(this,`shape`,n),n},get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]}))}function Os(e,t,n){let r=t._zod.def.checks;if(r&&r.length>0)throw Error(`.partial() cannot be used on object schemas containing refinements`);return ys(t,ls(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in r))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t])}else for(let t in r)i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t];return cs(this,`shape`,i),i},checks:[]}))}function ks(e,t,n){return ys(t,ls(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in i))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=new e({type:`nonoptional`,innerType:r[t]}))}else for(let t in r)i[t]=new e({type:`nonoptional`,innerType:r[t]});return cs(this,`shape`,i),i}}))}function As(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue!==!0)return!0;return!1}function js(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue===!1)return!0;return!1}function Ms(e,t){return t.map(t=>{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function Ns(e){return typeof e==`string`?e:e?.message}function Ps(e,t,n){let r=e.message?e.message:Ns(e.inst?._zod.def?.error?.(e))??Ns(t?.error?.(e))??Ns(n.customError?.(e))??Ns(n.localeError?.(e))??`Invalid input`,{inst:i,continue:a,input:o,...s}=e;return s.path??=[],s.message=r,t?.reportInput&&(s.input=o),s}function Fs(e){return Array.isArray(e)?`array`:typeof e==`string`?`string`:`unknown`}function Is(...e){let[t,n,r]=e;return typeof t==`string`?{message:t,code:`custom`,input:n,inst:r}:{...t}}var Ls=(e,t)=>{e.name=`$ZodError`,Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,ts,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},Rs=B(`$ZodError`,Ls),zs=B(`$ZodError`,Ls,{Parent:Error});function Bs(e,t=e=>e.message){let n={},r=[];for(let i of e.issues)i.path.length>0?(n[i.path[0]]=n[i.path[0]]||[],n[i.path[0]].push(t(i))):r.push(t(i));return{formErrors:r,fieldErrors:n}}function Vs(e,t=e=>e.message){let n={_errors:[]},r=(e,i=[])=>{for(let a of e.issues)if(a.code===`invalid_union`&&a.errors.length)a.errors.map(e=>r({issues:e},[...i,...a.path]));else if(a.code===`invalid_key`)r({issues:a.issues},[...i,...a.path]);else if(a.code===`invalid_element`)r({issues:a.issues},[...i,...a.path]);else{let e=[...i,...a.path];if(e.length===0)n._errors.push(t(a));else{let r=n,i=0;for(;i<e.length;){let n=e[i];i===e.length-1?(r[n]=r[n]||{_errors:[]},r[n]._errors.push(t(a))):r[n]=r[n]||{_errors:[]},r=r[n],i++}}}};return r(e),n}var Hs=e=>(t,n,r,i)=>{let a=r?{...r,async:!1}:{async:!1},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise)throw new Xo;if(o.issues.length){let t=new(i?.Err??e)(o.issues.map(e=>Ps(e,a,$o())));throw fs(t,i?.callee),t}return o.value},Us=e=>async(t,n,r,i)=>{let a=r?{...r,async:!0}:{async:!0},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise&&(o=await o),o.issues.length){let t=new(i?.Err??e)(o.issues.map(e=>Ps(e,a,$o())));throw fs(t,i?.callee),t}return o.value},Ws=e=>(t,n,r)=>{let i=r?{...r,async:!1}:{async:!1},a=t._zod.run({value:n,issues:[]},i);if(a instanceof Promise)throw new Xo;return a.issues.length?{success:!1,error:new(e??Rs)(a.issues.map(e=>Ps(e,i,$o())))}:{success:!0,data:a.value}},Gs=Ws(zs),Ks=e=>async(t,n,r)=>{let i=r?{...r,async:!0}:{async:!0},a=t._zod.run({value:n,issues:[]},i);return a instanceof Promise&&(a=await a),a.issues.length?{success:!1,error:new e(a.issues.map(e=>Ps(e,i,$o())))}:{success:!0,data:a.value}},qs=Ks(zs),Js=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Hs(e)(t,n,i)},Ys=e=>(t,n,r)=>Hs(e)(t,n,r),Xs=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Us(e)(t,n,i)},Zs=e=>async(t,n,r)=>Us(e)(t,n,r),Qs=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Ws(e)(t,n,i)},$s=e=>(t,n,r)=>Ws(e)(t,n,r),ec=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Ks(e)(t,n,i)},tc=e=>async(t,n,r)=>Ks(e)(t,n,r),nc=/^[cC][0-9a-z]{6,}$/,rc=/^[0-9a-z]+$/,ic=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,ac=/^[0-9a-vA-V]{20}$/,oc=/^[A-Za-z0-9]{27}$/,sc=/^[a-zA-Z0-9_-]{21}$/,cc=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,lc=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,uc=e=>e?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,dc=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,fc=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`;function pc(){return new RegExp(fc,`u`)}var mc=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,hc=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,gc=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,_c=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,vc=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,yc=/^[A-Za-z0-9_-]*$/,bc=/^https?$/,xc=/^\+[1-9]\d{6,14}$/,Sc=`(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`,Cc=RegExp(`^${Sc}$`);function wc(e){let t=`(?:[01]\\d|2[0-3]):[0-5]\\d`;return typeof e.precision==`number`?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function Tc(e){return RegExp(`^${wc(e)}$`)}function Ec(e){let t=wc({precision:e.precision}),n=[`Z`];e.local&&n.push(``),e.offset&&n.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`);let r=`${t}(?:${n.join(`|`)})`;return RegExp(`^${Sc}T(?:${r})$`)}var Dc=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??``}}`:`[\\s\\S]*`;return RegExp(`^${t}$`)},Oc=/^-?\d+$/,kc=/^-?\d+(?:\.\d+)?$/,Ac=/^(?:true|false)$/i,jc=/^null$/i,Mc=/^undefined$/i,Nc=/^[^A-Z]*$/,Pc=/^[^a-z]*$/,Fc=B(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),Ic={number:`number`,bigint:`bigint`,object:`date`},Lc=B(`$ZodCheckLessThan`,(e,t)=>{Fc.init(e,t);let n=Ic[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.maximum:n.exclusiveMaximum)??1/0;t.value<r&&(t.inclusive?n.maximum=t.value:n.exclusiveMaximum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value<=t.value:r.value<t.value)||r.issues.push({origin:n,code:`too_big`,maximum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),Rc=B(`$ZodCheckGreaterThan`,(e,t)=>{Fc.init(e,t);let n=Ic[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.minimum:n.exclusiveMinimum)??-1/0;t.value>r&&(t.inclusive?n.minimum=t.value:n.exclusiveMinimum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:n,code:`too_small`,minimum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),zc=B(`$ZodCheckMultipleOf`,(e,t)=>{Fc.init(e,t),e._zod.onattach.push(e=>{var n;(n=e._zod.bag).multipleOf??(n.multipleOf=t.value)}),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw Error(`Cannot mix number and bigint in multiple_of check.`);(typeof n.value==`bigint`?n.value%t.value===BigInt(0):as(n.value,t.value)===0)||n.issues.push({origin:typeof n.value,code:`not_multiple_of`,divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),Bc=B(`$ZodCheckNumberFormat`,(e,t)=>{Fc.init(e,t),t.format=t.format||`float64`;let n=t.format?.includes(`int`),r=n?`int`:`number`,[i,a]=Ss[t.format];e._zod.onattach.push(e=>{let r=e._zod.bag;r.format=t.format,r.minimum=i,r.maximum=a,n&&(r.pattern=Oc)}),e._zod.check=o=>{let s=o.value;if(n){if(!Number.isInteger(s)){o.issues.push({expected:r,format:t.format,code:`invalid_type`,continue:!1,input:s,inst:e});return}if(!Number.isSafeInteger(s)){s>0?o.issues.push({input:s,code:`too_big`,maximum:2**53-1,note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort}):o.issues.push({input:s,code:`too_small`,minimum:-(2**53-1),note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort});return}}s<i&&o.issues.push({origin:`number`,input:s,code:`too_small`,minimum:i,inclusive:!0,inst:e,continue:!t.abort}),s>a&&o.issues.push({origin:`number`,input:s,code:`too_big`,maximum:a,inclusive:!0,inst:e,continue:!t.abort})}}),Vc=B(`$ZodCheckMaxLength`,(e,t)=>{var n;Fc.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!rs(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.maximum??1/0;t.maximum<n&&(e._zod.bag.maximum=t.maximum)}),e._zod.check=n=>{let r=n.value;if(r.length<=t.maximum)return;let i=Fs(r);n.issues.push({origin:i,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Hc=B(`$ZodCheckMinLength`,(e,t)=>{var n;Fc.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!rs(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.minimum??-1/0;t.minimum>n&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{let r=n.value;if(r.length>=t.minimum)return;let i=Fs(r);n.issues.push({origin:i,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Uc=B(`$ZodCheckLengthEquals`,(e,t)=>{var n;Fc.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!rs(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag;n.minimum=t.length,n.maximum=t.length,n.length=t.length}),e._zod.check=n=>{let r=n.value,i=r.length;if(i===t.length)return;let a=Fs(r),o=i>t.length;n.issues.push({origin:a,...o?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),Wc=B(`$ZodCheckStringFormat`,(e,t)=>{var n,r;Fc.init(e,t),e._zod.onattach.push(e=>{let n=e._zod.bag;n.format=t.format,t.pattern&&(n.patterns??=new Set,n.patterns.add(t.pattern))}),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),Gc=B(`$ZodCheckRegex`,(e,t)=>{Wc.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:`regex`,input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),Kc=B(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=Nc,Wc.init(e,t)}),qc=B(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=Pc,Wc.init(e,t)}),Jc=B(`$ZodCheckIncludes`,(e,t)=>{Fc.init(e,t);let n=vs(t.includes),r=new RegExp(typeof t.position==`number`?`^.{${t.position}}${n}`:n);t.pattern=r,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(r)}),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:`string`,code:`invalid_format`,format:`includes`,includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),Yc=B(`$ZodCheckStartsWith`,(e,t)=>{Fc.init(e,t);let n=RegExp(`^${vs(t.prefix)}.*`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`starts_with`,prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),Xc=B(`$ZodCheckEndsWith`,(e,t)=>{Fc.init(e,t);let n=RegExp(`.*${vs(t.suffix)}$`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`ends_with`,suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),Zc=B(`$ZodCheckOverwrite`,(e,t)=>{Fc.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}}),Qc=class{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),--this.indent}write(e){if(typeof e==`function`){e(this,{execution:`sync`}),e(this,{execution:`async`});return}let t=e.split(`
|
|
89
|
+
}`;function po(e){return[parseInt(e.slice(1,3),16)/255,parseInt(e.slice(3,5),16)/255,parseInt(e.slice(5,7),16)/255,1]}function mo({className:e,colors:t=[`#e0eaff`,`#f9ffbd`,`#dedede`,`#ffffff`],distortion:n=.8,swirl:r=.1,grainMixer:i=0,grainOverlay:a=.2,speed:o=1}){let s=(0,z.useRef)(null),c=(0,z.useRef)(null),l=(0,z.useRef)({colors:t,distortion:n,swirl:r,grainMixer:i,grainOverlay:a,speed:o});return l.current={colors:t,distortion:n,swirl:r,grainMixer:i,grainOverlay:a,speed:o},(0,z.useEffect)(()=>{let e=s.current,t=c.current;if(!e||!t)return;let n=e.getContext(`webgl2`);if(!n)return;let r=(e,t)=>{let r=n.createShader(e);return r?(n.shaderSource(r,t),n.compileShader(r),n.getShaderParameter(r,n.COMPILE_STATUS)?r:(console.error(n.getShaderInfoLog(r)),null)):null},i=r(n.VERTEX_SHADER,uo),a=r(n.FRAGMENT_SHADER,fo);if(!i||!a)return;let o=n.createProgram();if(!o)return;if(n.attachShader(o,i),n.attachShader(o,a),n.linkProgram(o),!n.getProgramParameter(o,n.LINK_STATUS)){console.error(n.getProgramInfoLog(o));return}n.useProgram(o);let u=n.getAttribLocation(o,`a_position`),d=n.createBuffer();n.bindBuffer(n.ARRAY_BUFFER,d),n.bufferData(n.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,-1,1,1,-1,1,1]),n.STATIC_DRAW),n.enableVertexAttribArray(u),n.vertexAttribPointer(u,2,n.FLOAT,!1,0,0);let f=n.getUniformLocation(o,`u_time`),p=n.getUniformLocation(o,`u_resolution`),m=[0,1,2,3].map(e=>n.getUniformLocation(o,`u_colors[${e}]`)),h=n.getUniformLocation(o,`u_colorsCount`),g=n.getUniformLocation(o,`u_distortion`),_=n.getUniformLocation(o,`u_swirl`),v=n.getUniformLocation(o,`u_grainMixer`),y=n.getUniformLocation(o,`u_grainOverlay`),b=0,x=performance.now(),S=0,C=()=>{let r=Math.min(2,window.devicePixelRatio||1);e.width=Math.floor(t.clientWidth*r),e.height=Math.floor(t.clientHeight*r),n.viewport(0,0,e.width,e.height)},w=t=>{if(document.hidden){x=t,S=requestAnimationFrame(w);return}let{colors:r,distortion:i,swirl:a,grainMixer:o,grainOverlay:s,speed:c}=l.current,u=t-x;x=t,b+=u*c;let d=r.map(po);n.uniform1f(f,b*.001),n.uniform2f(p,e.width,e.height);for(let e=0;e<4;e++){let t=m[e];t&&n.uniform4fv(t,d[e]??[1,1,1,1])}n.uniform1f(h,d.length),n.uniform1f(g,i),n.uniform1f(_,a),n.uniform1f(v,o),n.uniform1f(y,s),n.drawArrays(n.TRIANGLES,0,6),S=requestAnimationFrame(w)};C();let T=new ResizeObserver(C);return T.observe(t),S=requestAnimationFrame(w),()=>{cancelAnimationFrame(S),T.disconnect()}},[]),(0,R.jsx)(`div`,{ref:c,className:e,children:(0,R.jsx)(`canvas`,{ref:s,className:`h-full w-full`,"aria-hidden":!0})})}var ho=`mcp-inspector-connect-panel-mesh-animation-paused`,go=`mcp-inspector-chat-mesh-animation-paused`;function _o(e){try{return localStorage.getItem(e)===`true`}catch{return!1}}function vo(e){let[t,n]=(0,z.useState)(()=>_o(e));return{paused:t,toggle:(0,z.useCallback)(()=>{n(t=>{let n=!t;try{localStorage.setItem(e,n?`true`:`false`)}catch{}return n})},[e])}}var yo=`z-50 flex h-7 w-7 cursor-pointer items-center justify-center rounded-full border border-zinc-500/60 bg-transparent text-zinc-600 transition-colors hover:border-zinc-500 hover:text-zinc-800 dark:border-zinc-500/50 dark:text-zinc-400 dark:hover:border-zinc-400 dark:hover:text-zinc-200`;function bo({paused:e,onToggle:t,className:n}){return(0,R.jsxs)(et,{children:[(0,R.jsx)(we,{render:(0,R.jsx)(`button`,{type:`button`,onClick:t,"aria-label":e?`Resume animation`:`Pause animation`,className:L(yo,n),children:e?(0,R.jsx)(ki,{className:`ml-px h-3 w-3`,fill:`currentColor`}):(0,R.jsx)(Vi,{className:`h-2.5 w-2.5`,fill:`currentColor`})}),nativeButton:!0}),(0,R.jsx)(lt,{side:`left`,children:(0,R.jsx)(`p`,{children:e?`Resume animation`:`Pause animation`})})]})}var xo=class{name=`mcp_inspector_open`;properties;constructor(e){this.properties={server_url:e.serverUrl,connection_count:e.connectionCount}}},So=class{name=`mcp_tool_execution`;properties;constructor(e){this.properties={tool_name:e.toolName,server_id:e.serverId,success:e.success,duration:e.duration,error:e.error}}},Co=class{name=`mcp_resource_read`;properties;constructor(e){this.properties={resource_uri:e.resourceUri,server_id:e.serverId,success:e.success,error:e.error}}},wo=class{name=`mcp_prompt_call`;properties;constructor(e){this.properties={prompt_name:e.promptName,server_id:e.serverId,success:e.success,error:e.error}}},To=class{name=`mcp_server_connection`;properties;constructor(e){this.properties={server_id:e.serverId,server_url:e.serverUrl,success:e.success,connection_type:e.connectionType,error:e.error}}},Eo=class{name=`mcp_chat_message`;properties;constructor(e){this.properties={server_id:e.serverId,provider:e.provider,model:e.model,message_count:e.messageCount,tool_calls_count:e.toolCallsCount,success:e.success,execution_mode:e.executionMode,duration:e.duration,error:e.error}}},Do=class{name=`mcp_server_added`;properties;constructor(e){this.properties={server_id:e.serverId,server_url:e.serverUrl,connection_type:e.connectionType,via_proxy:e.viaProxy}}},Oo=class{name=`mcp_server_removed`;properties;constructor(e){this.properties={server_id:e.serverId}}},ko=class{name=`mcp_command_palette_open`;properties;constructor(e){this.properties={trigger:e.trigger}}},Ao=class{name=`mcp_tool_saved`;properties;constructor(e){this.properties={tool_name:e.toolName,server_id:e.serverId}}},jo=class{name=`mcp_tunnel_action`;properties;constructor(e){this.properties={action:e.action,success:e.success,tunnel_url:e.tunnelUrl}}},Mo=class{name=`mcp_deploy_click`;properties;constructor(e){this.properties={referrer:e.referrer}}},No=class{name=`mcp_chat_configured`;properties;constructor(e){this.properties={provider:e.provider,model:e.model}}},Po=class{name=`mcp_tab_navigation`;properties;constructor(e){this.properties={tab:e.tab,previous_tab:e.previousTab}}},Fo=class{name=`mcp_add_to_client`;properties;constructor(e){this.properties={client:e.client}}},Io=class{name=`mcp_session_duration`;properties;constructor(e){this.properties={duration_seconds:e.durationSeconds,tabs_visited:e.tabsVisited,tools_executed:e.toolsExecuted}}};function Lo(){try{if(typeof window<`u`){let e=window.__INSPECTOR_VERSION__;if(e!==void 0&&e!==``)return e}return`2.0.0-beta.8`}catch{return`0.0.0`}}var Ro=Object.create,zo=Object.defineProperty,Bo=Object.getOwnPropertyDescriptor,Vo=Object.getOwnPropertyNames,Ho=Object.getPrototypeOf,Uo=Object.prototype.hasOwnProperty,Wo=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Go=(e,t)=>{let n={};for(var r in e)zo(n,r,{get:e[r],enumerable:!0});return t&&zo(n,Symbol.toStringTag,{value:`Module`}),n},Ko=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=Vo(t),a=0,o=i.length,s;a<o;a++)s=i[a],!Uo.call(e,s)&&s!==n&&zo(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=Bo(t,s))||r.enumerable});return e},qo=(e,t,n)=>(n=e==null?{}:Ro(Ho(e)),Ko(t||!e||!e.__esModule?zo(n,`default`,{value:e,enumerable:!0}):n,e)),Jo,Yo=Object.freeze({status:`aborted`});function B(e,t,n){function r(n,r){if(n._zod||Object.defineProperty(n,"_zod",{value:{def:r,constr:o,traits:new Set},enumerable:!1}),n._zod.traits.has(e))return;n._zod.traits.add(e),t(n,r);let i=o.prototype,a=Object.keys(i);for(let e=0;e<a.length;e++){let t=a[e];t in n||(n[t]=i[t].bind(n))}}let i=n?.Parent??Object;class a extends i{}Object.defineProperty(a,"name",{value:e});function o(e){var t;let i=n?.Parent?new a:this;r(i,e),(t=i._zod).deferred??(t.deferred=[]);for(let e of i._zod.deferred)e();return i}return Object.defineProperty(o,"init",{value:r}),Object.defineProperty(o,Symbol.hasInstance,{value:t=>n?.Parent&&t instanceof n.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(o,"name",{value:e}),o}var Xo=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},Zo=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}};(Jo=globalThis).__zod_globalConfig??(Jo.__zod_globalConfig={});var Qo=globalThis.__zod_globalConfig;function $o(e){return e&&Object.assign(Qo,e),Qo}function es(e){let t=Object.values(e).filter(e=>typeof e==`number`);return Object.entries(e).filter(([e,n])=>t.indexOf(+e)===-1).map(([e,t])=>t)}function ts(e,t){return typeof t==`bigint`?t.toString():t}function ns(e){return{get value(){{let t=e();return Object.defineProperty(this,"value",{value:t}),t}throw Error(`cached value already set`)}}}function rs(e){return e==null}function is(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function as(e,t){let n=e/t,r=Math.round(n),i=2**-52*Math.max(Math.abs(n),1);return Math.abs(n-r)<i?0:n-r}var os=Symbol(`evaluating`);function ss(e,t,n){let r;Object.defineProperty(e,t,{get(){if(r!==os)return r===void 0&&(r=os,r=n()),r},set(n){Object.defineProperty(e,t,{value:n})},configurable:!0})}function cs(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function ls(...e){let t={};for(let n of e)Object.assign(t,Object.getOwnPropertyDescriptors(n));return Object.defineProperties({},t)}function us(e){return JSON.stringify(e)}function ds(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,``).replace(/[\s_-]+/g,`-`).replace(/^-+|-+$/g,``)}var fs=`captureStackTrace`in Error?Error.captureStackTrace:(...e)=>{};function ps(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var ms=ns(()=>{if(Qo.jitless||typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function hs(e){if(ps(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let n=t.prototype;return!(ps(n)===!1||Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)===!1)}function gs(e){return hs(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}var _s=new Set([`string`,`number`,`symbol`]);function vs(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function ys(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function bs(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function xs(e){return Object.keys(e).filter(t=>e[t]._zod.optin===`optional`&&e[t]._zod.optout===`optional`)}var Ss={safeint:[-(2**53-1),2**53-1],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function Cs(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.pick() cannot be used on object schemas containing refinements`);return ys(e,ls(e._zod.def,{get shape(){let e={};for(let r in t){if(!(r in n.shape))throw Error(`Unrecognized key: "${r}"`);t[r]&&(e[r]=n.shape[r])}return cs(this,`shape`,e),e},checks:[]}))}function ws(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.omit() cannot be used on object schemas containing refinements`);return ys(e,ls(e._zod.def,{get shape(){let r={...e._zod.def.shape};for(let e in t){if(!(e in n.shape))throw Error(`Unrecognized key: "${e}"`);t[e]&&delete r[e]}return cs(this,`shape`,r),r},checks:[]}))}function Ts(e,t){if(!hs(t))throw Error(`Invalid input to extend: expected a plain object`);let n=e._zod.def.checks;if(n&&n.length>0){let n=e._zod.def.shape;for(let e in t)if(Object.getOwnPropertyDescriptor(n,e)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return ys(e,ls(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return cs(this,`shape`,n),n}}))}function Es(e,t){if(!hs(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return ys(e,ls(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return cs(this,`shape`,n),n}}))}function Ds(e,t){if(e._zod.def.checks?.length)throw Error(`.merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.`);return ys(e,ls(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t._zod.def.shape};return cs(this,`shape`,n),n},get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]}))}function Os(e,t,n){let r=t._zod.def.checks;if(r&&r.length>0)throw Error(`.partial() cannot be used on object schemas containing refinements`);return ys(t,ls(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in r))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t])}else for(let t in r)i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t];return cs(this,`shape`,i),i},checks:[]}))}function ks(e,t,n){return ys(t,ls(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in i))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=new e({type:`nonoptional`,innerType:r[t]}))}else for(let t in r)i[t]=new e({type:`nonoptional`,innerType:r[t]});return cs(this,`shape`,i),i}}))}function As(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue!==!0)return!0;return!1}function js(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue===!1)return!0;return!1}function Ms(e,t){return t.map(t=>{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function Ns(e){return typeof e==`string`?e:e?.message}function Ps(e,t,n){let r=e.message?e.message:Ns(e.inst?._zod.def?.error?.(e))??Ns(t?.error?.(e))??Ns(n.customError?.(e))??Ns(n.localeError?.(e))??`Invalid input`,{inst:i,continue:a,input:o,...s}=e;return s.path??=[],s.message=r,t?.reportInput&&(s.input=o),s}function Fs(e){return Array.isArray(e)?`array`:typeof e==`string`?`string`:`unknown`}function Is(...e){let[t,n,r]=e;return typeof t==`string`?{message:t,code:`custom`,input:n,inst:r}:{...t}}var Ls=(e,t)=>{e.name=`$ZodError`,Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,ts,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},Rs=B(`$ZodError`,Ls),zs=B(`$ZodError`,Ls,{Parent:Error});function Bs(e,t=e=>e.message){let n={},r=[];for(let i of e.issues)i.path.length>0?(n[i.path[0]]=n[i.path[0]]||[],n[i.path[0]].push(t(i))):r.push(t(i));return{formErrors:r,fieldErrors:n}}function Vs(e,t=e=>e.message){let n={_errors:[]},r=(e,i=[])=>{for(let a of e.issues)if(a.code===`invalid_union`&&a.errors.length)a.errors.map(e=>r({issues:e},[...i,...a.path]));else if(a.code===`invalid_key`)r({issues:a.issues},[...i,...a.path]);else if(a.code===`invalid_element`)r({issues:a.issues},[...i,...a.path]);else{let e=[...i,...a.path];if(e.length===0)n._errors.push(t(a));else{let r=n,i=0;for(;i<e.length;){let n=e[i];i===e.length-1?(r[n]=r[n]||{_errors:[]},r[n]._errors.push(t(a))):r[n]=r[n]||{_errors:[]},r=r[n],i++}}}};return r(e),n}var Hs=e=>(t,n,r,i)=>{let a=r?{...r,async:!1}:{async:!1},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise)throw new Xo;if(o.issues.length){let t=new(i?.Err??e)(o.issues.map(e=>Ps(e,a,$o())));throw fs(t,i?.callee),t}return o.value},Us=e=>async(t,n,r,i)=>{let a=r?{...r,async:!0}:{async:!0},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise&&(o=await o),o.issues.length){let t=new(i?.Err??e)(o.issues.map(e=>Ps(e,a,$o())));throw fs(t,i?.callee),t}return o.value},Ws=e=>(t,n,r)=>{let i=r?{...r,async:!1}:{async:!1},a=t._zod.run({value:n,issues:[]},i);if(a instanceof Promise)throw new Xo;return a.issues.length?{success:!1,error:new(e??Rs)(a.issues.map(e=>Ps(e,i,$o())))}:{success:!0,data:a.value}},Gs=Ws(zs),Ks=e=>async(t,n,r)=>{let i=r?{...r,async:!0}:{async:!0},a=t._zod.run({value:n,issues:[]},i);return a instanceof Promise&&(a=await a),a.issues.length?{success:!1,error:new e(a.issues.map(e=>Ps(e,i,$o())))}:{success:!0,data:a.value}},qs=Ks(zs),Js=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Hs(e)(t,n,i)},Ys=e=>(t,n,r)=>Hs(e)(t,n,r),Xs=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Us(e)(t,n,i)},Zs=e=>async(t,n,r)=>Us(e)(t,n,r),Qs=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Ws(e)(t,n,i)},$s=e=>(t,n,r)=>Ws(e)(t,n,r),ec=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Ks(e)(t,n,i)},tc=e=>async(t,n,r)=>Ks(e)(t,n,r),nc=/^[cC][0-9a-z]{6,}$/,rc=/^[0-9a-z]+$/,ic=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,ac=/^[0-9a-vA-V]{20}$/,oc=/^[A-Za-z0-9]{27}$/,sc=/^[a-zA-Z0-9_-]{21}$/,cc=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,lc=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,uc=e=>e?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,dc=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,fc=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`;function pc(){return new RegExp(fc,`u`)}var mc=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,hc=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,gc=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,_c=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,vc=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,yc=/^[A-Za-z0-9_-]*$/,bc=/^https?$/,xc=/^\+[1-9]\d{6,14}$/,Sc=`(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`,Cc=RegExp(`^${Sc}$`);function wc(e){let t=`(?:[01]\\d|2[0-3]):[0-5]\\d`;return typeof e.precision==`number`?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function Tc(e){return RegExp(`^${wc(e)}$`)}function Ec(e){let t=wc({precision:e.precision}),n=[`Z`];e.local&&n.push(``),e.offset&&n.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`);let r=`${t}(?:${n.join(`|`)})`;return RegExp(`^${Sc}T(?:${r})$`)}var Dc=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??``}}`:`[\\s\\S]*`;return RegExp(`^${t}$`)},Oc=/^-?\d+$/,kc=/^-?\d+(?:\.\d+)?$/,Ac=/^(?:true|false)$/i,jc=/^null$/i,Mc=/^undefined$/i,Nc=/^[^A-Z]*$/,Pc=/^[^a-z]*$/,Fc=B(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),Ic={number:`number`,bigint:`bigint`,object:`date`},Lc=B(`$ZodCheckLessThan`,(e,t)=>{Fc.init(e,t);let n=Ic[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.maximum:n.exclusiveMaximum)??1/0;t.value<r&&(t.inclusive?n.maximum=t.value:n.exclusiveMaximum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value<=t.value:r.value<t.value)||r.issues.push({origin:n,code:`too_big`,maximum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),Rc=B(`$ZodCheckGreaterThan`,(e,t)=>{Fc.init(e,t);let n=Ic[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.minimum:n.exclusiveMinimum)??-1/0;t.value>r&&(t.inclusive?n.minimum=t.value:n.exclusiveMinimum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:n,code:`too_small`,minimum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),zc=B(`$ZodCheckMultipleOf`,(e,t)=>{Fc.init(e,t),e._zod.onattach.push(e=>{var n;(n=e._zod.bag).multipleOf??(n.multipleOf=t.value)}),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw Error(`Cannot mix number and bigint in multiple_of check.`);(typeof n.value==`bigint`?n.value%t.value===BigInt(0):as(n.value,t.value)===0)||n.issues.push({origin:typeof n.value,code:`not_multiple_of`,divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),Bc=B(`$ZodCheckNumberFormat`,(e,t)=>{Fc.init(e,t),t.format=t.format||`float64`;let n=t.format?.includes(`int`),r=n?`int`:`number`,[i,a]=Ss[t.format];e._zod.onattach.push(e=>{let r=e._zod.bag;r.format=t.format,r.minimum=i,r.maximum=a,n&&(r.pattern=Oc)}),e._zod.check=o=>{let s=o.value;if(n){if(!Number.isInteger(s)){o.issues.push({expected:r,format:t.format,code:`invalid_type`,continue:!1,input:s,inst:e});return}if(!Number.isSafeInteger(s)){s>0?o.issues.push({input:s,code:`too_big`,maximum:2**53-1,note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort}):o.issues.push({input:s,code:`too_small`,minimum:-(2**53-1),note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort});return}}s<i&&o.issues.push({origin:`number`,input:s,code:`too_small`,minimum:i,inclusive:!0,inst:e,continue:!t.abort}),s>a&&o.issues.push({origin:`number`,input:s,code:`too_big`,maximum:a,inclusive:!0,inst:e,continue:!t.abort})}}),Vc=B(`$ZodCheckMaxLength`,(e,t)=>{var n;Fc.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!rs(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.maximum??1/0;t.maximum<n&&(e._zod.bag.maximum=t.maximum)}),e._zod.check=n=>{let r=n.value;if(r.length<=t.maximum)return;let i=Fs(r);n.issues.push({origin:i,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Hc=B(`$ZodCheckMinLength`,(e,t)=>{var n;Fc.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!rs(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.minimum??-1/0;t.minimum>n&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{let r=n.value;if(r.length>=t.minimum)return;let i=Fs(r);n.issues.push({origin:i,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Uc=B(`$ZodCheckLengthEquals`,(e,t)=>{var n;Fc.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!rs(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag;n.minimum=t.length,n.maximum=t.length,n.length=t.length}),e._zod.check=n=>{let r=n.value,i=r.length;if(i===t.length)return;let a=Fs(r),o=i>t.length;n.issues.push({origin:a,...o?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),Wc=B(`$ZodCheckStringFormat`,(e,t)=>{var n,r;Fc.init(e,t),e._zod.onattach.push(e=>{let n=e._zod.bag;n.format=t.format,t.pattern&&(n.patterns??=new Set,n.patterns.add(t.pattern))}),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),Gc=B(`$ZodCheckRegex`,(e,t)=>{Wc.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:`regex`,input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),Kc=B(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=Nc,Wc.init(e,t)}),qc=B(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=Pc,Wc.init(e,t)}),Jc=B(`$ZodCheckIncludes`,(e,t)=>{Fc.init(e,t);let n=vs(t.includes),r=new RegExp(typeof t.position==`number`?`^.{${t.position}}${n}`:n);t.pattern=r,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(r)}),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:`string`,code:`invalid_format`,format:`includes`,includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),Yc=B(`$ZodCheckStartsWith`,(e,t)=>{Fc.init(e,t);let n=RegExp(`^${vs(t.prefix)}.*`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`starts_with`,prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),Xc=B(`$ZodCheckEndsWith`,(e,t)=>{Fc.init(e,t);let n=RegExp(`.*${vs(t.suffix)}$`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`ends_with`,suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),Zc=B(`$ZodCheckOverwrite`,(e,t)=>{Fc.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}}),Qc=class{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),--this.indent}write(e){if(typeof e==`function`){e(this,{execution:`sync`}),e(this,{execution:`async`});return}let t=e.split(`
|
|
90
90
|
`).filter(e=>e),n=Math.min(...t.map(e=>e.length-e.trimStart().length)),r=t.map(e=>e.slice(n)).map(e=>` `.repeat(this.indent*2)+e);for(let e of r)this.content.push(e)}compile(){let e=Function,t=this?.args,n=[...(this?.content??[``]).map(e=>` ${e}`)];return new e(...t,n.join(`
|
|
91
91
|
`))}},$c={major:4,minor:4,patch:3},el=B(`$ZodType`,(e,t)=>{var n;e??={},e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=$c;let r=[...e._zod.def.checks??[]];e._zod.traits.has(`$ZodCheck`)&&r.unshift(e);for(let t of r)for(let n of t._zod.onattach)n(e);if(r.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(e,t,n)=>{let r=As(e),i;for(let a of t){if(a._zod.def.when){if(js(e)||!a._zod.def.when(e))continue}else if(r)continue;let t=e.issues.length,o=a._zod.check(e);if(o instanceof Promise&&n?.async===!1)throw new Xo;if(i||o instanceof Promise)i=(i??Promise.resolve()).then(async()=>{await o,e.issues.length!==t&&(r||=As(e,t))});else{if(e.issues.length===t)continue;r||=As(e,t)}}return i?i.then(()=>e):e},n=(n,i,a)=>{if(As(n))return n.aborted=!0,n;let o=t(i,r,a);if(o instanceof Promise){if(a.async===!1)throw new Xo;return o.then(t=>e._zod.parse(t,a))}return e._zod.parse(o,a)};e._zod.run=(i,a)=>{if(a.skipChecks)return e._zod.parse(i,a);if(a.direction===`backward`){let t=e._zod.parse({value:i.value,issues:[]},{...a,skipChecks:!0});return t instanceof Promise?t.then(e=>n(e,i,a)):n(t,i,a)}let o=e._zod.parse(i,a);if(o instanceof Promise){if(a.async===!1)throw new Xo;return o.then(e=>t(e,r,a))}return t(o,r,a)}}ss(e,`~standard`,()=>({validate:t=>{try{let n=Gs(e,t);return n.success?{value:n.data}:{issues:n.error?.issues}}catch{return qs(e,t).then(e=>e.success?{value:e.data}:{issues:e.error?.issues})}},vendor:`zod`,version:1}))}),tl=B(`$ZodString`,(e,t)=>{el.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??Dc(e._zod.bag),e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=String(n.value)}catch{}return typeof n.value==`string`||n.issues.push({expected:`string`,code:`invalid_type`,input:n.value,inst:e}),n}}),nl=B(`$ZodStringFormat`,(e,t)=>{Wc.init(e,t),tl.init(e,t)}),rl=B(`$ZodGUID`,(e,t)=>{t.pattern??=lc,nl.init(e,t)}),il=B(`$ZodUUID`,(e,t)=>{if(t.version){let e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(e===void 0)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??=uc(e)}else t.pattern??=uc();nl.init(e,t)}),al=B(`$ZodEmail`,(e,t)=>{t.pattern??=dc,nl.init(e,t)}),ol=B(`$ZodURL`,(e,t)=>{nl.init(e,t),e._zod.check=n=>{try{let r=n.value.trim();if(!t.normalize&&t.protocol?.source===bc.source&&!/^https?:\/\//i.test(r)){n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid URL format`,input:n.value,inst:e,continue:!t.abort});return}let i=new URL(r);t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(i.hostname)||n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid hostname`,pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(i.protocol.endsWith(`:`)?i.protocol.slice(0,-1):i.protocol)||n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid protocol`,pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort})),t.normalize?n.value=i.href:n.value=r;return}catch{n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort})}}}),sl=B(`$ZodEmoji`,(e,t)=>{t.pattern??=pc(),nl.init(e,t)}),cl=B(`$ZodNanoID`,(e,t)=>{t.pattern??=sc,nl.init(e,t)}),ll=B(`$ZodCUID`,(e,t)=>{t.pattern??=nc,nl.init(e,t)}),ul=B(`$ZodCUID2`,(e,t)=>{t.pattern??=rc,nl.init(e,t)}),dl=B(`$ZodULID`,(e,t)=>{t.pattern??=ic,nl.init(e,t)}),fl=B(`$ZodXID`,(e,t)=>{t.pattern??=ac,nl.init(e,t)}),pl=B(`$ZodKSUID`,(e,t)=>{t.pattern??=oc,nl.init(e,t)}),ml=B(`$ZodISODateTime`,(e,t)=>{t.pattern??=Ec(t),nl.init(e,t)}),hl=B(`$ZodISODate`,(e,t)=>{t.pattern??=Cc,nl.init(e,t)}),gl=B(`$ZodISOTime`,(e,t)=>{t.pattern??=Tc(t),nl.init(e,t)}),_l=B(`$ZodISODuration`,(e,t)=>{t.pattern??=cc,nl.init(e,t)}),vl=B(`$ZodIPv4`,(e,t)=>{t.pattern??=mc,nl.init(e,t),e._zod.bag.format=`ipv4`}),yl=B(`$ZodIPv6`,(e,t)=>{t.pattern??=hc,nl.init(e,t),e._zod.bag.format=`ipv6`,e._zod.check=n=>{try{new URL(`http://[${n.value}]`)}catch{n.issues.push({code:`invalid_format`,format:`ipv6`,input:n.value,inst:e,continue:!t.abort})}}}),bl=B(`$ZodCIDRv4`,(e,t)=>{t.pattern??=gc,nl.init(e,t)}),xl=B(`$ZodCIDRv6`,(e,t)=>{t.pattern??=_c,nl.init(e,t),e._zod.check=n=>{let r=n.value.split(`/`);try{if(r.length!==2)throw Error();let[e,t]=r;if(!t)throw Error();let n=Number(t);if(`${n}`!==t||n<0||n>128)throw Error();new URL(`http://[${e}]`)}catch{n.issues.push({code:`invalid_format`,format:`cidrv6`,input:n.value,inst:e,continue:!t.abort})}}});function Sl(e){if(e===``)return!0;if(/\s/.test(e)||e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}var Cl=B(`$ZodBase64`,(e,t)=>{t.pattern??=vc,nl.init(e,t),e._zod.bag.contentEncoding=`base64`,e._zod.check=n=>{Sl(n.value)||n.issues.push({code:`invalid_format`,format:`base64`,input:n.value,inst:e,continue:!t.abort})}});function wl(e){if(!yc.test(e))return!1;let t=e.replace(/[-_]/g,e=>e===`-`?`+`:`/`);return Sl(t.padEnd(Math.ceil(t.length/4)*4,`=`))}var Tl=B(`$ZodBase64URL`,(e,t)=>{t.pattern??=yc,nl.init(e,t),e._zod.bag.contentEncoding=`base64url`,e._zod.check=n=>{wl(n.value)||n.issues.push({code:`invalid_format`,format:`base64url`,input:n.value,inst:e,continue:!t.abort})}}),El=B(`$ZodE164`,(e,t)=>{t.pattern??=xc,nl.init(e,t)});function Dl(e,t=null){try{let n=e.split(`.`);if(n.length!==3)return!1;let[r]=n;if(!r)return!1;let i=JSON.parse(atob(r));return!(`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&(!(`alg`in i)||i.alg!==t))}catch{return!1}}var Ol=B(`$ZodJWT`,(e,t)=>{nl.init(e,t),e._zod.check=n=>{Dl(n.value,t.alg)||n.issues.push({code:`invalid_format`,format:`jwt`,input:n.value,inst:e,continue:!t.abort})}}),kl=B(`$ZodNumber`,(e,t)=>{el.init(e,t),e._zod.pattern=e._zod.bag.pattern??kc,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=Number(n.value)}catch{}let i=n.value;if(typeof i==`number`&&!Number.isNaN(i)&&Number.isFinite(i))return n;let a=typeof i==`number`?Number.isNaN(i)?`NaN`:Number.isFinite(i)?void 0:`Infinity`:void 0;return n.issues.push({expected:`number`,code:`invalid_type`,input:i,inst:e,...a?{received:a}:{}}),n}}),Al=B(`$ZodNumberFormat`,(e,t)=>{Bc.init(e,t),kl.init(e,t)}),jl=B(`$ZodBoolean`,(e,t)=>{el.init(e,t),e._zod.pattern=Ac,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=!!n.value}catch{}let i=n.value;return typeof i==`boolean`||n.issues.push({expected:`boolean`,code:`invalid_type`,input:i,inst:e}),n}}),Ml=B(`$ZodUndefined`,(e,t)=>{el.init(e,t),e._zod.pattern=Mc,e._zod.values=new Set([void 0]),e._zod.parse=(t,n)=>{let r=t.value;return r===void 0||t.issues.push({expected:`undefined`,code:`invalid_type`,input:r,inst:e}),t}}),Nl=B(`$ZodNull`,(e,t)=>{el.init(e,t),e._zod.pattern=jc,e._zod.values=new Set([null]),e._zod.parse=(t,n)=>{let r=t.value;return r===null||t.issues.push({expected:`null`,code:`invalid_type`,input:r,inst:e}),t}}),Pl=B(`$ZodAny`,(e,t)=>{el.init(e,t),e._zod.parse=e=>e}),Fl=B(`$ZodUnknown`,(e,t)=>{el.init(e,t),e._zod.parse=e=>e}),Il=B(`$ZodNever`,(e,t)=>{el.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:`never`,code:`invalid_type`,input:t.value,inst:e}),t)});function Ll(e,t,n){e.issues.length&&t.issues.push(...Ms(n,e.issues)),t.value[n]=e.value}var Rl=B(`$ZodArray`,(e,t)=>{el.init(e,t),e._zod.parse=(n,r)=>{let i=n.value;if(!Array.isArray(i))return n.issues.push({expected:`array`,code:`invalid_type`,input:i,inst:e}),n;n.value=Array(i.length);let a=[];for(let e=0;e<i.length;e++){let o=i[e],s=t.element._zod.run({value:o,issues:[]},r);s instanceof Promise?a.push(s.then(t=>Ll(t,n,e))):Ll(s,n,e)}return a.length?Promise.all(a).then(()=>n):n}});function zl(e,t,n,r,i,a){let o=n in r;if(e.issues.length){if(i&&a&&!o)return;t.issues.push(...Ms(n,e.issues))}if(!o&&!i){e.issues.length||t.issues.push({code:`invalid_type`,expected:`nonoptional`,input:void 0,path:[n]});return}e.value===void 0?o&&(t.value[n]=void 0):t.value[n]=e.value}function Bl(e){let t=Object.keys(e.shape);for(let n of t)if(!e.shape?.[n]?._zod?.traits?.has(`$ZodType`))throw Error(`Invalid element at key "${n}": expected a Zod schema`);let n=xs(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(n)}}function Vl(e,t,n,r,i,a){let o=[],s=i.keySet,c=i.catchall._zod,l=c.def.type,u=c.optin===`optional`,d=c.optout===`optional`;for(let i in t){if(i===`__proto__`||s.has(i))continue;if(l===`never`){o.push(i);continue}let a=c.run({value:t[i],issues:[]},r);a instanceof Promise?e.push(a.then(e=>zl(e,n,i,t,u,d))):zl(a,n,i,t,u,d)}return o.length&&n.issues.push({code:`unrecognized_keys`,keys:o,input:t,inst:a}),e.length?Promise.all(e).then(()=>n):n}var Hl=B(`$ZodObject`,(e,t)=>{if(el.init(e,t),!Object.getOwnPropertyDescriptor(t,`shape`)?.get){let e=t.shape;Object.defineProperty(t,"shape",{get:()=>{let n={...e};return Object.defineProperty(t,"shape",{value:n}),n}})}let n=ns(()=>Bl(t));ss(e._zod,`propValues`,()=>{let e=t.shape,n={};for(let t in e){let r=e[t]._zod;if(r.values){n[t]??(n[t]=new Set);for(let e of r.values)n[t].add(e)}}return n});let r=ps,i=t.catchall,a;e._zod.parse=(t,o)=>{a??=n.value;let s=t.value;if(!r(s))return t.issues.push({expected:`object`,code:`invalid_type`,input:s,inst:e}),t;t.value={};let c=[],l=a.shape;for(let e of a.keys){let n=l[e],r=n._zod.optin===`optional`,i=n._zod.optout===`optional`,a=n._zod.run({value:s[e],issues:[]},o);a instanceof Promise?c.push(a.then(n=>zl(n,t,e,s,r,i))):zl(a,t,e,s,r,i)}return i?Vl(c,s,t,o,n.value,e):c.length?Promise.all(c).then(()=>t):t}}),Ul=B(`$ZodObjectJIT`,(e,t)=>{Hl.init(e,t);let n=e._zod.parse,r=ns(()=>Bl(t)),i=e=>{let t=new Qc([`shape`,`payload`,`ctx`]),n=r.value,i=e=>{let t=us(e);return`shape[${t}]._zod.run({ value: input[${t}], issues: [] }, ctx)`};t.write(`const input = payload.value;`);let a=Object.create(null),o=0;for(let e of n.keys)a[e]=`key_${o++}`;t.write(`const newResult = {};`);for(let r of n.keys){let n=a[r],o=us(r),s=e[r],c=s?._zod?.optin===`optional`,l=s?._zod?.optout===`optional`;t.write(`const ${n} = ${i(r)};`),c&&l?t.write(`
|
|
92
92
|
if (${n}.issues.length) {
|
|
@@ -154,7 +154,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
154
154
|
`;break;case`id`:s=t.includes(`\0`)?void 0:t;break;case`retry`:/^\d+$/.test(t)?r(parseInt(t,10)):n(new tS(`Invalid \`retry\` value: "${t}"`,{type:`invalid-retry`,value:t,line:i}));break;default:n(new tS(`Unknown field "${e.length>20?`${e.slice(0,20)}\u2026`:e}"`,{type:`unknown-field`,field:e,value:t,line:i}));break}}function p(){c.length>0&&t({id:s,event:l||void 0,data:c.endsWith(`
|
|
155
155
|
`)?c.slice(0,-1):c}),s=void 0,c=``,l=``}function m(e={}){a&&e.consume&&d(a),o=!0,s=void 0,c=``,l=``,a=``}return{feed:u,reset:m}}function iS(e){let t=[],n=``,r=0;for(;r<e.length;){let i=e.indexOf(`\r`,r),a=e.indexOf(`
|
|
156
156
|
`,r),o=-1;if(i!==-1&&a!==-1?o=Math.min(i,a):i===-1?a!==-1&&(o=a):o=i===e.length-1?-1:i,o===-1){n=e.slice(r);break}else{let n=e.slice(r,o);t.push(n),r=o+1,e[r-1]===`\r`&&e[r]===`
|
|
157
|
-
`&&r++}}return[t,n]}var aS=class extends TransformStream{constructor({onError:e,onRetry:t,onComment:n}={}){let r;super({start(i){r=rS({onEvent:e=>{i.enqueue(e)},onError(t){e===`terminate`?i.error(t):typeof e==`function`&&e(t)},onRetry:t,onComment:n})},transform(e){r.feed(e)}})}},oS=`modulepreload`,sS=function(e){return`/inspector/`+e},cS={},lS=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=sS(t,n),t in cS)return;cS[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:oS,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},uS=class extends Error{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.OAuthClientFlowError`})}static[Symbol.hasInstance](e){return K_(this,e)}static isInstance(e){if(typeof this!=`function`)throw TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return K_(this,e)}constructor(e){super(e),this.name=new.target.name,G_(this,new.target)}},dS=class extends uS{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.IssuerMismatchError`})}kind;expected;received;constructor(e,t,n){super(`Issuer mismatch in ${e===`metadata`?`authorization server metadata (RFC 8414 §3.3)`:`authorization response (RFC 9207)`}: expected ${JSON.stringify(t)}, received ${JSON.stringify(n)}`),this.kind=e,this.expected=t,this.received=n}},fS=class extends uS{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.RegistrationRejectedError`})}status;body;submittedMetadata;constructor(e){super(`Dynamic Client Registration rejected (HTTP ${e.status}): ${e.body}`),this.status=e.status,this.body=e.body,this.submittedMetadata=e.submittedMetadata}},pS=class extends uS{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.InsecureTokenEndpointError`})}tokenEndpoint;constructor(e){super(`Refusing to send credentials to non-https token endpoint '${e}'. OAuth token requests MUST use TLS (localhost / 127.0.0.1 / ::1 are exempt).`),this.tokenEndpoint=e}},mS=class extends uS{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.AuthorizationServerMismatchError`})}constructor(e,t){super(`Authorization server changed between redirect and callback (redirected to ${JSON.stringify(e)}, callback resolved ${JSON.stringify(t)}); refusing to send authorization_code/code_verifier to a different token endpoint`),this.recordedIssuer=e,this.currentIssuer=t}},hS=class extends uS{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.InsufficientScopeError`})}requiredScope;resourceMetadataUrl;errorDescription;constructor(e){super(`Insufficient scope${e.requiredScope?`: required "${e.requiredScope}"`:``}`),this.requiredScope=e.requiredScope,this.resourceMetadataUrl=e.resourceMetadataUrl,this.errorDescription=e.errorDescription}};function gS(e,t,n){if(e!==void 0)return e.issuer===void 0?(n?.canPersistStamp!==!1&&console.warn(`[mcp-sdk] SEP-2352: stored OAuth credential has no 'issuer' stamp (pre-upgrade storage or provider not round-tripping the value). SEP-2352 isolation is inactive for this read; ensure your provider round-trips the issuer field.`),e):_S(e.issuer,t)?e:void 0}function _S(e,t){return e===t||e.endsWith(`/`)&&e.slice(0,-1)===t||t.endsWith(`/`)&&t.slice(0,-1)===e}function vS(e){if(e==null)return!1;let t=e;return typeof t.tokens==`function`&&typeof t.clientInformation==`function`}async function yS(e,t,n){let{resourceMetadataUrl:r,scope:i}=KS(t.response);if(await BS(e,{serverUrl:t.serverUrl,resourceMetadataUrl:r,scope:i,fetchFn:t.fetchFn,...n})!==`AUTHORIZED`)throw new xS}function bS(e,t){return{token:async()=>(await e.tokens())?.access_token,onUnauthorized:async n=>yS(e,n,t)}}var xS=class extends Error{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.UnauthorizedError`})}static[Symbol.hasInstance](e){return K_(this,e)}static isInstance(e){if(typeof this!=`function`)throw TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return K_(this,e)}constructor(e){super(e??`Unauthorized`),this.name=`UnauthorizedError`,G_(this,new.target)}};function SS(e){return e?.authorization_response_iss_parameter_supported===!0}function CS({iss:e,expectedIssuer:t,issParameterSupported:n}){if(t!==void 0){if(e===void 0){if(n)throw new dS(`authorization_response`,t,void 0);return}if(e!==t)throw new dS(`authorization_response`,t,e)}}function wS(...e){let t=new Set;for(let n of e)if(n)for(let e of n.split(/\s+/))e&&t.add(e);return t.size>0?[...t].join(` `):void 0}function TS(e,t){if(!e)return!1;let n=new Set((t??``).split(/\s+/).filter(Boolean));for(let t of e.split(/\s+/))if(t&&!n.has(t))return!0;return!1}async function ES(e,t,n,r,i){if(typeof e==`string`)return{authorizationCode:e,iss:t};let a=e.get(`iss`)??void 0,o=e.get(`code`);if(o)return{authorizationCode:o,iss:a};let s=(await n.discoveryState?.())?.authorizationServerMetadata;if(!s)try{s=(await nC(r,i)).authorizationServerMetadata}catch{s=void 0}if(!s)throw new xS(`Authorization callback failed and the issuer could not be verified`);CS({iss:a,expectedIssuer:s.issuer,issParameterSupported:SS(s)});let c=e.get(`error`);throw c?new J_(c,e.get(`error_description`)??c,e.get(`error_uri`)??void 0):new xS("Authorization callback contained neither `code` nor `error`")}function DS(e){return[`client_secret_basic`,`client_secret_post`,`none`].includes(e)}var OS=`code`,kS=`S256`;function AS(e,t){let n=e.client_secret!==void 0;return`token_endpoint_auth_method`in e&&e.token_endpoint_auth_method&&DS(e.token_endpoint_auth_method)&&(t.length===0||t.includes(e.token_endpoint_auth_method))?e.token_endpoint_auth_method:t.length===0?n?`client_secret_basic`:`none`:n&&t.includes(`client_secret_basic`)?`client_secret_basic`:n&&t.includes(`client_secret_post`)?`client_secret_post`:t.includes(`none`)?`none`:n?`client_secret_post`:`none`}function jS(e,t,n,r){let{client_id:i,client_secret:a}=t;switch(e){case`client_secret_basic`:MS(i,a,n);return;case`client_secret_post`:NS(i,a,r);return;case`none`:PS(i,r);return;default:throw Error(`Unsupported client authentication method: ${e}`)}}function MS(e,t,n){if(!t)throw Error(`client_secret_basic authentication requires a client_secret`);let r=btoa(`${e}:${t}`);n.set(`Authorization`,`Basic ${r}`)}function NS(e,t,n){n.set(`client_id`,e),t&&n.set(`client_secret`,t)}function PS(e,t){t.set(`client_id`,e)}function FS(e){return e===`localhost`||e===`127.0.0.1`||e===`[::1]`||e===`::1`}function IS(e){let t=new URL(String(e));if(t.protocol!==`https:`&&!FS(t.hostname))throw new pS(t.href);return t}function LS(e){for(let t of e??[]){let e;try{e=new URL(t)}catch{continue}if(e.protocol!==`http:`&&e.protocol!==`https:`||FS(e.hostname))return`native`}return`web`}function RS(e){let t=e.clientMetadata;return{...t,grant_types:t.grant_types??(e.redirectUrl===void 0?void 0:[`authorization_code`,`refresh_token`]),application_type:t.application_type??LS(t.redirect_uris)}}async function zS(e){let t=e instanceof Response?e.status:void 0,n=e instanceof Response?await e.text():e;try{let e=L_.parse(JSON.parse(n));return J_.fromResponse(e)}catch(e){let r=`${t?`HTTP ${t}: `:``}Invalid OAuth error response: ${e}. Raw body: ${n}`;return new J_(q_.ServerError,r)}}async function BS(e,t){try{return await HS(e,t)}catch(n){if(n instanceof J_){if(n.code===q_.InvalidClient||n.code===q_.UnauthorizedClient)return await e.invalidateCredentials?.(`client`),await e.invalidateCredentials?.(`tokens`),await HS(e,t);if(n.code===q_.InvalidGrant)return await e.invalidateCredentials?.(`tokens`),await HS(e,t)}throw n}}function VS(e){let{requestedScope:t,resourceMetadata:n,authServerMetadata:r,clientMetadata:i}=e,a=t||n?.scopes_supported?.join(` `)||i.scope;return a&&r?.scopes_supported?.includes(`offline_access`)&&!a.split(` `).includes(`offline_access`)&&i.grant_types?.includes(`refresh_token`)&&(a=`${a} offline_access`),a}async function HS(e,{serverUrl:t,authorizationCode:n,iss:r,scope:i,resourceMetadataUrl:a,fetchFn:o,skipIssuerMetadataValidation:s,forceReauthorization:c}){let l=RS(e),u=await e.discoveryState?.(),d,f,p,m,h=a;if(!h&&u?.resourceMetadataUrl&&(h=new URL(u.resourceMetadataUrl)),u?.authorizationServerUrl){if(f=u.authorizationServerUrl,d=u.resourceMetadata,p=u.authorizationServerMetadata??await tC(f,{fetchFn:o,skipIssuerValidation:s}),!d)try{d=await JS(t,{resourceMetadataUrl:h},o)}catch(e){if(e instanceof TypeError)throw e}(p!==u.authorizationServerMetadata||d!==u.resourceMetadata)&&await e.saveDiscoveryState?.({authorizationServerUrl:String(f),resourceMetadataUrl:h?.toString(),resourceMetadata:d,authorizationServerMetadata:p})}else{let e=await nC(t,{resourceMetadataUrl:h,fetchFn:o,skipIssuerMetadataValidation:s});f=e.authorizationServerUrl,p=e.authorizationServerMetadata,d=e.resourceMetadata,m={authorizationServerUrl:String(f),resourceMetadataUrl:h?.toString(),resourceMetadata:d,authorizationServerMetadata:p}}let g=p?.issuer??String(f),_={issuer:g};if(await e.saveAuthorizationServerUrl?.(g),n!==void 0){let t=u?.authorizationServerMetadata?.issuer??u?.authorizationServerUrl;if(t===void 0){if(e.saveDiscoveryState!==void 0)throw new mS(`discoveryState was not available on the callback leg; ensure your provider persists discoveryState alongside codeVerifier`,g);console.warn(`[mcp-sdk] OAuthClientProvider does not implement saveDiscoveryState()/discoveryState(); the SEP-2352 callback-leg authorization-server binding cannot be checked. Implement discoveryState (persist alongside codeVerifier) — see docs/migration/upgrade-to-v2.md §SEP-2352.`)}else if(!_S(t,g))throw new mS(t,g)}m&&await e.saveDiscoveryState?.(m);let v=await GS(t,e,d);v&&await e.saveResourceUrl?.(String(v));let y=VS({requestedScope:i,resourceMetadata:d,authServerMetadata:p,clientMetadata:e.clientMetadata}),b=await Promise.resolve(e.clientInformation(_)),x=gS(b,g,{canPersistStamp:e.saveClientInformation!==void 0});if(x===void 0&&b?.issuer&&e.saveClientInformation===void 0)throw new mS(b.issuer,g);if(x&&x.issuer===void 0&&(x={...x,issuer:g},await e.saveClientInformation?.(x,_)),!x){if(n!==void 0)throw Error(`Existing OAuth client information is required when exchanging an authorization code`);let t=p?.client_id_metadata_document_supported===!0,r=e.clientMetadataUrl;if(r&&!WS(r))throw new J_(q_.InvalidClientMetadata,`clientMetadataUrl must be a valid HTTPS URL with a non-root pathname, got: ${r}`);if(t&&r)x={client_id:r,issuer:g},await e.saveClientInformation?.(x,_);else{if(!e.saveClientInformation)throw Error(`OAuth client information must be saveable for dynamic registration`);x={...await cC(f,{metadata:p,clientMetadata:l,scope:y,fetchFn:o}),issuer:g},await e.saveClientInformation(x,_)}}let S=!e.redirectUrl;if(n!==void 0||S){n!==void 0&&CS({iss:r,expectedIssuer:p?.issuer,issParameterSupported:SS(p)});let t=await sC(e,f,{metadata:p,resource:v,authorizationCode:n,iss:r,scope:y,fetchFn:o});return await e.saveTokens({...t,issuer:g},_),`AUTHORIZED`}let C=gS(await e.tokens(_),g);if(C&&C.issuer===void 0&&(C={...C,issuer:g},await e.saveTokens(C,_)),C?.refresh_token&&!c)try{let t=await oC(f,{metadata:p,clientInformation:x,refreshToken:C.refresh_token,resource:v,addClientAuthentication:e.addClientAuthentication,fetchFn:o});return await e.saveTokens({...t,issuer:g},_),`AUTHORIZED`}catch(e){if(e instanceof pS||!(!(e instanceof J_)||e.code===q_.ServerError))throw e}let w=e.state?await e.state():void 0,{authorizationUrl:T,codeVerifier:E}=await rC(f,{metadata:p,clientInformation:x,state:w,redirectUrl:e.redirectUrl,scope:y,resource:v});return await e.saveCodeVerifier(E),await e.redirectToAuthorization(T),`REDIRECT`}function US(e){if(e&&!WS(e))throw new J_(q_.InvalidClientMetadata,`clientMetadataUrl must be a valid HTTPS URL with a non-root pathname, got: ${e}`)}function WS(e){if(!e)return!1;try{let t=new URL(e);return t.protocol===`https:`&&t.pathname!==`/`}catch{return!1}}async function GS(e,t,n){let r=Q_(e);if(t.validateResourceURL)return await t.validateResourceURL(r,n?.resource);if(n){if(!$_({requestedResource:r,configuredResource:n.resource}))throw Error(`Protected resource ${n.resource} does not match expected ${r} (or origin)`);return new URL(n.resource)}}function KS(e){let t=e.headers.get(`WWW-Authenticate`);if(!t)return{};let[n,r]=t.split(` `);if(n?.toLowerCase()!==`bearer`||!r)return{};let i=qS(e,`resource_metadata`)||void 0,a;if(i)try{a=new URL(i)}catch{}let o=qS(e,`scope`)||void 0,s=qS(e,`error`)||void 0,c=qS(e,`error_description`)||void 0;return{resourceMetadataUrl:a,scope:o,error:s,errorDescription:c}}function qS(e,t){let n=e.headers.get(`WWW-Authenticate`);if(!n)return null;let r=new RegExp(String.raw`${t}=(?:"([^"]+)"|([^\s,]+))`),i=n.match(r);if(i){let e=i[1]||i[2];if(e)return e}return null}async function JS(e,t,n=fetch){let r=await $S(e,`oauth-protected-resource`,n,{protocolVersion:t?.protocolVersion,metadataUrl:t?.resourceMetadataUrl});if(!r||r.status===404)throw await r?.text?.().catch(()=>{}),Error(`Resource server does not implement OAuth 2.0 Protected Resource Metadata.`);if(!r.ok)throw await r.text?.().catch(()=>{}),Error(`HTTP ${r.status} trying to load well-known OAuth protected resource metadata.`);return j_.parse(await r.json())}async function YS(e,t,n=fetch){try{return await n(e,{headers:t})}catch(r){if(!(r instanceof TypeError))throw r;if(t)try{return await n(e,{})}catch(e){if(!(e instanceof TypeError))throw e;return}return}}function XS(e,t=``,n={}){return t.endsWith(`/`)&&(t=t.slice(0,-1)),n.prependPathname?`${t}/.well-known/${e}`:`/.well-known/${e}${t}`}async function ZS(e,t,n=fetch){return await YS(e,{"MCP-Protocol-Version":t},n)}function QS(e,t){return e?t===`/`?!1:e.status>=400&&e.status<500||e.status===502:!0}async function $S(e,t,n,r){let i=new URL(e),a=r?.protocolVersion??`2025-11-25`,o;if(r?.metadataUrl)o=new URL(r.metadataUrl);else{let e=XS(t,i.pathname);o=new URL(e,r?.metadataServerUrl??i),o.search=i.search}let s=await ZS(o,a,n);return!r?.metadataUrl&&QS(s,i.pathname)&&(s=await ZS(new URL(`/.well-known/${t}`,i),a,n)),s}function eC(e){let t=typeof e==`string`?new URL(e):e,n=t.pathname!==`/`,r=[];if(!n)return r.push({url:new URL(`/.well-known/oauth-authorization-server`,t.origin),type:`oauth`},{url:new URL(`/.well-known/openid-configuration`,t.origin),type:`oidc`}),r;let i=t.pathname;return i.endsWith(`/`)&&(i=i.slice(0,-1)),r.push({url:new URL(`/.well-known/oauth-authorization-server${i}`,t.origin),type:`oauth`},{url:new URL(`/.well-known/openid-configuration${i}`,t.origin),type:`oidc`},{url:new URL(`${i}/.well-known/openid-configuration`,t.origin),type:`oidc`}),r}async function tC(e,{fetchFn:t=fetch,protocolVersion:n=_m,skipIssuerValidation:r=!1}={}){let i={"MCP-Protocol-Version":n,Accept:`application/json`},a=eC(e);for(let{url:n,type:o}of a){let a=await YS(n,i,t);if(!a)continue;if(!a.ok){if(await a.text?.().catch(()=>{}),a.status>=400&&a.status<500||a.status===502)continue;throw Error(`HTTP ${a.status} trying to load ${o===`oauth`?`OAuth`:`OpenID provider`} metadata from ${n}`)}let s=o===`oauth`?M_.parse(await a.json()):P_.parse(await a.json());if(!r){let t=typeof e==`string`?e:e.href;if(!(s.issuer===t||t.endsWith(`/`)&&s.issuer===t.slice(0,-1)))throw new dS(`metadata`,t,s.issuer)}return s}}async function nC(e,t){let n,r;try{n=await JS(e,{resourceMetadataUrl:t?.resourceMetadataUrl},t?.fetchFn),n.authorization_servers&&n.authorization_servers.length>0&&(r=n.authorization_servers[0])}catch(e){if(e instanceof TypeError)throw e}r||=String(new URL(`/`,e));let i=await tC(r,{fetchFn:t?.fetchFn,skipIssuerValidation:t?.skipIssuerMetadataValidation});return{authorizationServerUrl:r,authorizationServerMetadata:i,resourceMetadata:n}}async function rC(e,{metadata:t,clientInformation:n,redirectUrl:r,scope:i,state:a,resource:o}){let s;if(t){if(s=new URL(t.authorization_endpoint),!t.response_types_supported.includes(OS))throw Error(`Incompatible auth server: does not support response type ${OS}`);if(t.code_challenge_methods_supported&&!t.code_challenge_methods_supported.includes(kS))throw Error(`Incompatible auth server: does not support code challenge method ${kS}`)}else s=new URL(`/authorize`,e);let c=await eS(),l=c.code_verifier,u=c.code_challenge;return s.searchParams.set(`response_type`,OS),s.searchParams.set(`client_id`,n.client_id),s.searchParams.set(`code_challenge`,u),s.searchParams.set(`code_challenge_method`,kS),s.searchParams.set(`redirect_uri`,String(r)),a&&s.searchParams.set(`state`,a),i&&s.searchParams.set(`scope`,i),i?.split(` `).includes(`offline_access`)&&s.searchParams.append(`prompt`,`consent`),o&&s.searchParams.set(`resource`,o.href),{authorizationUrl:s,codeVerifier:l}}function iC(e,t,n){return new URLSearchParams({grant_type:`authorization_code`,code:e,code_verifier:t,redirect_uri:String(n)})}async function aC(e,{metadata:t,tokenRequestParams:n,clientInformation:r,addClientAuthentication:i,resource:a,fetchFn:o}){let s=IS(t?.token_endpoint??new URL(`/token`,e)),c=new Headers({"Content-Type":`application/x-www-form-urlencoded`,Accept:`application/json`});a&&n.set(`resource`,a.href),i?await i(c,n,s,t):r&&jS(AS(r,t?.token_endpoint_auth_methods_supported??[]),r,c,n);let l=await(o??fetch)(s,{method:`POST`,headers:c,body:n});if(!l.ok)throw await zS(l);let u=await l.json();try{return F_.parse(u)}catch(e){throw typeof u==`object`&&u&&`error`in u?await zS(JSON.stringify(u)):e}}async function oC(e,{metadata:t,clientInformation:n,refreshToken:r,resource:i,addClientAuthentication:a,fetchFn:o}){return{refresh_token:r,...await aC(e,{metadata:t,tokenRequestParams:new URLSearchParams({grant_type:`refresh_token`,refresh_token:r}),clientInformation:n,addClientAuthentication:a,resource:i,fetchFn:o})}}async function sC(e,t,{metadata:n,resource:r,authorizationCode:i,iss:a,scope:o,fetchFn:s}={}){i!==void 0&&CS({iss:a,expectedIssuer:n?.issuer,issParameterSupported:SS(n)});let c=o??e.clientMetadata.scope,l;if(e.prepareTokenRequest&&(l=await e.prepareTokenRequest(c)),!l){if(!i)throw Error(`Either provider.prepareTokenRequest() or authorizationCode is required`);if(!e.redirectUrl)throw Error(`redirectUrl is required for authorization_code flow`);l=iC(i,await e.codeVerifier(),e.redirectUrl)}let u=await e.clientInformation({issuer:n?.issuer??String(t)});return aC(t,{metadata:n,tokenRequestParams:l,clientInformation:u??void 0,addClientAuthentication:e.addClientAuthentication,resource:r,fetchFn:s})}async function cC(e,{metadata:t,clientMetadata:n,scope:r,fetchFn:i}){let a;if(t){if(!t.registration_endpoint)throw Error(`Incompatible auth server: does not support dynamic client registration`);a=new URL(t.registration_endpoint)}else a=new URL(`/register`,e);let o={...n,...r===void 0?{}:{scope:r}},s=await(i??fetch)(a,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(o)});if(!s.ok)throw new fS({status:s.status,body:await s.text(),submittedMetadata:o});return V_.parse(await s.json())}var lC=new Set([`tools/list`,`prompts/list`,`resources/list`,`resources/templates/list`,`server/discover`]),uC=class{_entries=new Map;_maxEntries;_stamp=0;_cappedSize=0;constructor(e){this._maxEntries=e?.maxEntries??512}get size(){return this._entries.size}get(e){return this._entries.get(dC(e))}set(e,t){let n=dC(e),r=lC.has(e.method),i=!this._entries.has(n);if(!r&&i&&this._maxEntries>0&&this._cappedSize>=this._maxEntries){for(let e of this._entries.keys())if(!lC.has(e.slice(0,e.indexOf(`\0`)))){this._entries.delete(e),this._cappedSize--;break}}let a=++this._stamp;return this._entries.set(n,{...t,stamp:a}),i&&!r&&this._cappedSize++,a}delete(e){this._entries.delete(dC(e))&&!lC.has(e.method)&&this._cappedSize--}evict(e){let t=`${e}\0`,n=lC.has(e);for(let e of this._entries.keys())e.startsWith(t)&&(this._entries.delete(e),n||this._cappedSize--)}clear(){this._entries.clear(),this._cappedSize=0}};function dC(e){return`${e.method}\0${JSON.stringify([e.partition??``,e.params??``])}`}function fC(e,t){return t===void 0?e:`${e}\0${t}`}var pC=864e5,mC=class{_evictionGeneration=new Map;_toolIndex;_toolOutputValidatorIndex;_serverIdentity=``;constructor(e,t,n=()=>{},r=``,i=Date.now){this._store=e,this._isUserSupplied=t,this._reportError=n,this._cachePartition=r,this._now=i}now(){return this._now()}setServerIdentity(e){this._serverIdentity=e}_partitionFor(e){return JSON.stringify([this._serverIdentity,e===`public`?``:this._cachePartition])}async _probe(e,t){let n={method:e,params:t??``},r=this._partitionFor(`private`),i=await this._store.get({...n,partition:r});if(i!==void 0)return i;let a=this._partitionFor(`public`);if(a===r)return;let o=await this._store.get({...n,partition:a});return o?.scope===`public`?o:void 0}async evict(e){this._evictionGeneration.set(e,(this._evictionGeneration.get(e)??0)+1),await this._deleteBoth(e,``)}async _deleteBoth(e,t){let n=this._partitionFor(`private`),r=this._partitionFor(`public`);try{await this._store.delete({method:e,params:t,partition:n})}catch(e){this._reportError(e)}if(r!==n)try{await this._store.delete({method:e,params:t,partition:r})}catch(e){this._reportError(e)}}async evictKey(e,t){let n=fC(e,t),r=this._evictionGeneration.get(n);r!==void 0&&this._evictionGeneration.set(n,r+1),await this._deleteBoth(e,t)}captureGeneration(e,t){let n=fC(e,t),r=this._evictionGeneration.get(n)??0;return this._evictionGeneration.set(n,r),r}async write(e,t,n,r){if((this._evictionGeneration.get(fC(e,r?.params))??0)!==n)return;let i=r?.params??``,a=this._partitionFor(`private`),o=this._partitionFor(`public`),s=(r?.scope??`private`)===`public`?o:a;try{await this._store.set({method:e,params:i,partition:s},{value:hC(t),expiresAt:r?.expiresAt,scope:r?.scope})}catch(e){this._reportError(e)}if(o!==a)try{await this._store.delete({method:e,params:i,partition:s===a?o:a})}catch(e){this._reportError(e)}}async read(e,t){let n=await this._probe(e,t);if(!(n?.expiresAt===void 0||!(n.expiresAt>this.now())))try{let e=JSON.parse(n.value);if(typeof e!=`object`||!e||Array.isArray(e))throw TypeError(`cached document is not an object`);return{value:e}}catch(n){this._reportError(n),await this._deleteBoth(e,t??``);return}}resetForReconnect(){this._isUserSupplied||this._store.clear(),this._evictionGeneration.clear(),this._toolIndex=void 0,this._toolOutputValidatorIndex=void 0,this._serverIdentity=``}async toolDefinition(e){let t=await this._probe(`tools/list`);if(t===void 0){this._toolIndex=void 0;return}if(this._toolIndex?.stamp!==t.stamp){let e=this._decodeListTools(t),n=new Map;if(e!==void 0)for(let t of e.tools)n.set(t.name,t);this._toolIndex={stamp:t.stamp,byName:n}}return this._toolIndex.byName.get(e)}async outputValidator(e,t){let n=await this._probe(`tools/list`);if(n===void 0){this._toolOutputValidatorIndex=void 0;return}if(this._toolOutputValidatorIndex?.stamp!==n.stamp){let e=this._decodeListTools(n)??{tools:[]},r=new Map;for(let n of e.tools){let e=t(n);e!==void 0&&r.set(n.name,e)}this._toolOutputValidatorIndex={stamp:n.stamp,byName:r}}return this._toolOutputValidatorIndex.byName.get(e)}_decodeListTools(e){try{let t=JSON.parse(e.value);if(!Array.isArray(t?.tools)||!t.tools.every(e=>typeof e==`object`&&!!e))throw TypeError(`cached tools/list document has a malformed tools array`);return t}catch(e){this._reportError(e);return}}};function hC(e){let t;try{t=JSON.stringify(e)}catch(e){throw TypeError(`cache value is not JSON-serializable: ${e instanceof Error?e.message:String(e)}`)}if(typeof t!=`string`)throw TypeError(`cache value is not JSON-serializable: it has no JSON representation`);return t}var gC=-32022,_C=new Set([-32001,-32020,-32021]);function vC(e,t){switch(e.kind){case`result`:return yC(e.result,t);case`rpc-error`:return bC(e,t);case`http-error`:return xC(e,t);case`network-error`:return SC(e.error,t);case`auth-required`:return{kind:`error`,error:e.error};case`timeout`:return t.transportKind===`stdio`?{kind:`legacy`}:{kind:`error`,error:new X_(Y_.RequestTimeout,`Version negotiation probe timed out after ${e.timeoutMs}ms`,{timeout:e.timeoutMs})}}}function yC(e,t){let n=wy(Cy).validateResult(`server/discover`,e);if(!n.ok)return{kind:`legacy`};let r=n.value.supportedVersions,i=t.clientModernVersions.find(e=>r.includes(e));return i===void 0?t.fallbackAvailable?{kind:`legacy`}:{kind:`error`,error:new Gv({supported:[...r],requested:t.requestedVersion})}:{kind:`modern`,version:i,discover:n.value}}function bC(e,t){let{code:n,message:r,data:i}=e;if(n===gC){let e=TC(i);if(e===void 0)return{kind:`legacy`};let n=new Gv({supported:e,requested:EC(i)??t.requestedVersion},r),a=iv(e),o=t.clientModernVersions.find(e=>a.includes(e));return o===void 0?a.length>0?{kind:`error`,error:n}:t.fallbackAvailable?{kind:`legacy`}:{kind:`error`,error:n}:{kind:`corrective`,version:o,error:n}}return _C.has(n),{kind:`legacy`}}function xC(e,t){let n=DC(e.body);return n===void 0?{kind:`legacy`}:bC(n,t)}function SC(e,t){return t.environment===`browser`&&CC(e)?{kind:`legacy`}:{kind:`error`,error:new X_(Y_.EraNegotiationFailed,`Version negotiation probe failed: ${wC(e)}`,{cause:e})}}function CC(e){return e instanceof TypeError||e instanceof Error&&e.name===`TypeError`}function wC(e){return e instanceof Error?e.message:String(e)}function TC(e){if(typeof e!=`object`||!e)return;let t=e.supported;if(!(!Array.isArray(t)||t.length===0||!t.every(e=>typeof e==`string`)))return t}function EC(e){if(typeof e!=`object`||!e)return;let t=e.requested;return typeof t==`string`?t:void 0}function DC(e){if(e===void 0||e===``)return;let t;try{t=JSON.parse(e)}catch{return}if(typeof t!=`object`||!t)return;let n=t.error;if(typeof n!=`object`||!n)return;let{code:r,message:i,data:a}=n;if(typeof r==`number`)return{code:r,message:typeof i==`string`?i:``,data:a}}var OC=`legacy`;function kC(e,t){let n=e?.mode??OC;if(n===`legacy`)return{kind:`legacy`};let r=e?.probe??{};if(typeof n==`object`){if(!nv(n.pin))throw TypeError(`versionNegotiation: { pin: '${n.pin}' } is not a modern protocol revision — pinning is for 2026-07-28 and later; omit versionNegotiation (or use mode: 'legacy') for 2025-era servers.`);return{kind:`pin`,version:n.pin,probe:r}}let i=t?iv(t):[];return{kind:`auto`,modernVersions:i.length>0?i:[...tv],fallbackAvailable:t?rv(t).length>0:!0,probe:r}}function AC(){let e=globalThis;return e.window!==void 0&&e.document!==void 0?`browser`:`node`}function jC(e){return`stderr`in e&&`pid`in e?`stdio`:`http`}var MC=class e{_pending;_probeCounter=0;_savedOnMessage;_savedOnError;_savedOnClose;_closeDelivered=!1;constructor(e){this._transport=e,this._savedOnMessage=e.onmessage,this._savedOnError=e.onerror,this._savedOnClose=e.onclose}static async open(t){let n=new e(t);t.onmessage=e=>{let t=n._pending;if(t!==void 0&&(My(e)||Ny(e))&&e.id===t.id){n._pending=void 0,My(e)?t.resolve({kind:`response`,result:e.result}):t.resolve({kind:`response`,error:e.error});return}},t.onerror=e=>{n._savedOnError?.(e)},t.onclose=()=>{let e=n._pending;e!==void 0&&(n._pending=void 0,e.resolve({kind:`closed`})),n._closeDelivered=!0,n._savedOnClose?.()};try{await t.start()}catch(e){throw n.detach(),e}return n}async exchange(e,t){let n=`server-discover-probe-${++this._probeCounter}`;return new Promise(r=>{let i=!1,a=e=>{i||(i=!0,clearTimeout(o),this._pending?.id===n&&(this._pending=void 0),r(e))},o=setTimeout(()=>a({kind:`timeout`}),t);this._pending={id:n,resolve:a},this._transport.send(e(n)).catch(e=>a({kind:`send-error`,error:e}))})}detach(){this._pending=void 0,this._transport.onmessage=this._savedOnMessage,this._transport.onerror=this._savedOnError,this._transport.onclose=this._closeDelivered?void 0:this._savedOnClose}release(){this.detach();let e=this._transport,t=e.start.bind(e),n=!0;e.start=async()=>{if(n){n=!1,e.start=t;return}return t()}}};function NC(e,t,n,r){return{jsonrpc:`2.0`,id:e,method:`server/discover`,params:{_meta:wy(t).outboundEnvelope({protocolVersion:t,clientInfo:n,clientCapabilities:r})}}}function PC(e,t){switch(e.kind){case`response`:return e.error===void 0?{kind:`result`,result:e.result}:{kind:`rpc-error`,...e.error};case`send-error`:{let t=e.error;if(t instanceof Z_){let e=t.data?.text;return{kind:`http-error`,status:t.data.status,body:typeof e==`string`?e:void 0}}return t instanceof xS||t instanceof Error&&t.name===`UnauthorizedError`?{kind:`auth-required`,error:t}:{kind:`network-error`,error:t}}case`closed`:return{kind:`network-error`,error:Error(`Connection closed during the version negotiation probe`)};case`timeout`:return{kind:`timeout`,timeoutMs:t}}}async function FC(e,t){let n=e.probe.timeoutMs??t.defaultTimeoutMs,r=Math.max(0,e.probe.maxRetries??0),i=e.kind===`pin`?[e.version]:e.modernVersions,a=e.kind===`auto`&&e.fallbackAvailable,o=await MC.open(t.transport),s=async()=>{let s=i[0],c=!1,l=r;for(;;){let r=await o.exchange(e=>NC(e,s,t.clientInfo,t.capabilities),n);if(r.kind===`timeout`&&l>0){l--;continue}let u=vC(PC(r,n),{clientModernVersions:i,requestedVersion:s,fallbackAvailable:a,environment:t.environment,transportKind:t.transportKind});switch(u.kind){case`modern`:return{era:`modern`,version:u.version,discover:u.discover};case`corrective`:if(c)throw u.error;c=!0,s=u.version;continue;case`legacy`:if(e.kind===`pin`)throw new X_(Y_.EraNegotiationFailed,`Version negotiation failed: the server did not offer pinned protocol version ${e.version} via server/discover (no fallback in pin mode)`);if(!e.fallbackAvailable)throw new X_(Y_.EraNegotiationFailed,`Version negotiation failed: the server gave no modern evidence and this client supports no pre-2026-07-28 protocol version to fall back to`);return{era:`legacy`};case`error`:throw u.error}}},c;try{c=await s()}catch(e){throw o.detach(),e}return o.release(),c}function IC(e,t){if(!(!e||typeof t!=`object`||!t)){if(e.type===`object`&&e.properties&&typeof e.properties==`object`){let n=t,r=e.properties;for(let e of Object.keys(r)){let t=r[e];n[e]===void 0&&Object.prototype.hasOwnProperty.call(t,`default`)&&(n[e]=t.default),n[e]!==void 0&&IC(t,n[e])}}if(Array.isArray(e.anyOf))for(let n of e.anyOf)typeof n!=`boolean`&&IC(n,t);if(Array.isArray(e.oneOf))for(let n of e.oneOf)typeof n!=`boolean`&&IC(n,t)}}function LC(e){if(!e)return{supportsFormMode:!1,supportsUrlMode:!1};let t=e.form!==void 0,n=e.url!==void 0;return{supportsFormMode:t||!t&&!n,supportsUrlMode:n}}var RC={"notifications/tools/list_changed":[`tools/list`],"notifications/prompts/list_changed":[`prompts/list`],"notifications/resources/list_changed":[`resources/list`,`resources/templates/list`]},zC=64,BC=class extends Jb{_serverCapabilities;_serverVersion;_capabilities;_instructions;_jsonSchemaValidator;_cache;_defaultCacheTtlMs;_listMaxPages;_listChangedDebounceTimers=new Map;_listChangedConfig;_enforceStrictCapabilities;_versionNegotiation;_supportedProtocolVersionsOption;_inputRequiredDriverConfig;_listenState=new Map;_nextListenId=0;_autoOpenedSubscription;_discoverResult;_resetConnectionState(){if(this._negotiatedProtocolVersion=void 0,this._serverCapabilities=void 0,this._serverVersion=void 0,this._instructions=void 0,this._discoverResult=void 0,this._autoOpenedSubscription=void 0,this._listenState.size>0){let e=new X_(Y_.ConnectionClosed,`subscriptions/listen: client reconnected or closed; subscription state from the previous connection was reset`);for(let t of this._listenState.values())t.settle({cause:`remote`,error:e})}this._listenState.clear();for(let e of this._listChangedDebounceTimers.values())clearTimeout(e);this._listChangedDebounceTimers.clear(),this._cache.resetForReconnect()}async close(){try{await super.close()}finally{this._resetConnectionState()}}constructor(e,t){super(t),this._clientInfo=e,this._capabilities=t?.capabilities?{...t.capabilities}:{},this._jsonSchemaValidator=t?.jsonSchemaValidator??new Jx,this._enforceStrictCapabilities=t?.enforceStrictCapabilities??!1,this._versionNegotiation=t?.versionNegotiation,this._supportedProtocolVersionsOption=t?.supportedProtocolVersions,this._inputRequiredDriverConfig=kb(t?.inputRequired),this._cache=new mC(t?.responseCacheStore??new uC,t?.responseCacheStore!==void 0,e=>this._reportStoreError(e),t?.cachePartition??``),this._defaultCacheTtlMs=t?.defaultCacheTtlMs??0,this._listMaxPages=t?.listMaxPages??zC,t?.listChanged&&(this._listChangedConfig=t.listChanged)}buildContext(e,t){return e}_shouldDropInbound(e){if(this._negotiatedProtocolVersion!==void 0&&nv(this._negotiatedProtocolVersion)&&Ay(e))return`drop`}_outboundMetaEnvelope(){let e=this._negotiatedProtocolVersion;if(e!==void 0)return this._wireCodec().outboundEnvelope({protocolVersion:e,clientInfo:this._clientInfo,clientCapabilities:this._capabilities})}_resolveNonCompleteResult(e,t){return this._inputRequiredDriverConfig.autoFulfill?rx({getRequestHandler:e=>this._getRequestHandler(e),buildContext:e=>this.buildContext(e,void 0),sessionId:this.transport?.sessionId},this._inputRequiredDriverConfig,e,t):Promise.reject(new X_(Y_.UnsupportedResultType,`Unsupported result type 'input_required' for ${t.request.method}: multi-round-trip auto-fulfilment is not enabled on this instance — pass allowInputRequired: true to handle it manually, or enable inputRequired.autoFulfill`,{resultType:`input_required`,method:t.request.method}))}_setupListChangedHandlers(e){e.tools&&this._serverCapabilities?.tools?.listChanged&&this._setupListChangedHandler(`tools`,`notifications/tools/list_changed`,e.tools,async()=>(await this.listTools(void 0,{cacheMode:`refresh`})).tools),e.prompts&&this._serverCapabilities?.prompts?.listChanged&&this._setupListChangedHandler(`prompts`,`notifications/prompts/list_changed`,e.prompts,async()=>(await this.listPrompts(void 0,{cacheMode:`refresh`})).prompts),e.resources&&this._serverCapabilities?.resources?.listChanged&&this._setupListChangedHandler(`resources`,`notifications/resources/list_changed`,e.resources,async()=>(await this.listResources(void 0,{cacheMode:`refresh`})).resources)}registerCapabilities(e){if(this.transport)throw Error(`Cannot register capabilities after connecting to transport`);this._capabilities=Xb(this._capabilities,e)}setVersionNegotiation(e){if(this.transport)throw Error(`Cannot configure version negotiation after connecting to transport`);this._versionNegotiation=e}_wrapHandler(e,t){return e===`elicitation/create`?async(e,n)=>{let r=wy(this._negotiatedProtocolVersion),i=r.validateRequest(`elicitation/create`,e);if(!i.ok&&i.reason===`not-in-era`&&(i=r.validateInputRequest(`elicitation/create`,e)),!i.ok)throw new Hv(i.reason===`not-in-era`?Vv.InternalError:Vv.InvalidParams,i.reason===`not-in-era`?`No wire schema for elicitation/create in the resolved era`:`Invalid elicitation request: ${i.message}`);let{params:a}=i.value;a.mode=a.mode??`form`;let{supportsFormMode:o,supportsUrlMode:s}=LC(this._capabilities.elicitation);if(a.mode===`form`&&!o)throw new Hv(Vv.InvalidParams,`Client does not support form-mode elicitation requests`);if(a.mode===`url`&&!s)throw new Hv(Vv.InvalidParams,`Client does not support URL-mode elicitation requests`);let c=await t(e,n),l=r.validateResult(`elicitation/create`,c);if(!l.ok&&l.reason===`not-in-era`&&(l=r.validateInputResponse(`elicitation/create`,c)),!l.ok)throw new Hv(l.reason===`not-in-era`?Vv.InternalError:Vv.InvalidParams,l.reason===`not-in-era`?`No wire schema for elicitation/create in the resolved era`:`Invalid elicitation result: ${l.message}`);let u=l.value,d=a.mode===`form`?a.requestedSchema:void 0;if(a.mode===`form`&&u.action===`accept`&&u.content&&d&&this._capabilities.elicitation?.form?.applyDefaults)try{IC(d,u.content)}catch{}return u}:e===`sampling/createMessage`?async(e,n)=>{let r=wy(this._negotiatedProtocolVersion),i=r.validateRequest(`sampling/createMessage`,e);if(!i.ok&&i.reason===`not-in-era`&&(i=r.validateInputRequest(`sampling/createMessage`,e)),!i.ok)throw new Hv(i.reason===`not-in-era`?Vv.InternalError:Vv.InvalidParams,i.reason===`not-in-era`?`No wire schema for sampling/createMessage in the resolved era`:`Invalid sampling request: ${i.message}`);let{params:a}=i.value,o=await t(e,n),s=!!(a.tools||a.toolChoice),c=r.samplingResultVariant(s,o);if(!c.ok&&c.reason===`not-in-era`&&(c=r.validateInputResponse(`sampling/createMessage`,o)),!c.ok)throw new Hv(c.reason===`not-in-era`?Vv.InternalError:Vv.InvalidParams,c.reason===`not-in-era`?`No result schema for sampling/createMessage in the resolved era`:`Invalid sampling result: ${c.message}`);return c.value}:t}assertCapability(e,t){if(!this._serverCapabilities?.[e])throw new X_(Y_.CapabilityNotSupported,`Server does not support ${e} (required for ${t})`)}async connect(e,t){if(t?.prior!==void 0)return this._connectFromPrior(e,t.prior);let n=kC(this._versionNegotiation,this._supportedProtocolVersionsOption);if(n.kind!==`legacy`)return this._connectNegotiated(e,n,t);if(await super.connect(e),e.sessionId!==void 0){let t=this._negotiatedProtocolVersion;t!==void 0&&e.setProtocolVersion?.(t);return}this._resetConnectionState(),await this._legacyHandshake(e,t)}async _legacyHandshake(e,t){let n=rv(this._supportedProtocolVersions);try{let r=n[0];if(r===void 0)throw new X_(Y_.EraNegotiationFailed,`Cannot run the initialize handshake: supportedProtocolVersions contains no pre-2026-07-28 protocol version`);let i=await this.request({method:`initialize`,params:{protocolVersion:r,capabilities:this._capabilities,clientInfo:this._clientInfo}},t);if(i===void 0)throw Error(`Server sent invalid initialize result: ${i}`);if(!n.includes(i.protocolVersion))throw Error(`Server's protocol version is not supported: ${i.protocolVersion}`);this._serverCapabilities=i.capabilities,this._serverVersion=i.serverInfo,this._cache.setServerIdentity(this._deriveServerIdentity(e)),e.setProtocolVersion&&e.setProtocolVersion(i.protocolVersion),this._instructions=i.instructions,await this.notification({method:`notifications/initialized`}),this._negotiatedProtocolVersion=i.protocolVersion,this._listChangedConfig&&this._setupListChangedHandlers(this._listChangedConfig)}catch(e){throw this.close(),e}}async _connectNegotiated(e,t,n){if(e.sessionId!==void 0){await super.connect(e);let t=this._negotiatedProtocolVersion;t!==void 0&&e.setProtocolVersion&&e.setProtocolVersion(t);return}this._resetConnectionState();let r;try{r=await FC(t,{transport:e,clientInfo:this._clientInfo,capabilities:this._capabilities,environment:AC(),transportKind:jC(e),defaultTimeoutMs:n?.timeout??6e4})}catch(t){throw await e.close().catch(()=>{}),t}if(await super.connect(e),r.era===`legacy`){await this._legacyHandshake(e,n);return}if(this._serverCapabilities=r.discover.capabilities,this._serverVersion=r.discover.serverInfo,this._cache.setServerIdentity(this._deriveServerIdentity(e)),this._instructions=r.discover.instructions,this._discoverResult=r.discover,this._negotiatedProtocolVersion=r.version,e.setProtocolVersion&&e.setProtocolVersion(r.version),this._listChangedConfig){let e=this._listChangedConfig,t=this._serverCapabilities,r={...e.tools&&t?.tools?.listChanged&&{tools:e.tools},...e.prompts&&t?.prompts?.listChanged&&{prompts:e.prompts},...e.resources&&t?.resources?.listChanged&&{resources:e.resources}},i=!0;try{this._setupListChangedHandlers(r)}catch(e){i=!1,this.onerror?.(e instanceof Error?e:Error(String(e)))}let a=i?{...r.tools&&{toolsListChanged:!0},...r.prompts&&{promptsListChanged:!0},...r.resources&&{resourcesListChanged:!0}}:{};if(Object.keys(a).length>0){let e=new AbortController,t=()=>e.abort(n?.signal?.reason);n?.signal?.aborted&&t(),n?.signal?.addEventListener(`abort`,t);try{this._autoOpenedSubscription=await this.listen(a,{timeout:n?.timeout,signal:e.signal})}catch(e){if(n?.signal?.aborted)throw await this.close().catch(()=>{}),e;this.onerror?.(e instanceof Error?e:Error(String(e)))}finally{n?.signal?.removeEventListener(`abort`,t)}}}}async _connectFromPrior(e,t){this._resetConnectionState();let n=this._supportedProtocolVersionsOption,r=(n&&iv(n).length>0?iv(n):tv).find(e=>t.supportedVersions.includes(e));if(r===void 0)throw new X_(Y_.EraNegotiationFailed,`connect({ prior }) requires a 2026-07-28+ mutual protocol version; the supplied DiscoverResult and this client's supportedProtocolVersions have no modern overlap. Use versionNegotiation: { mode: 'auto' } for legacy-era fallback.`);if(await super.connect(e),this._discoverResult=t,this._serverCapabilities=t.capabilities,this._serverVersion=t.serverInfo,this._cache.setServerIdentity(this._deriveServerIdentity(e)),this._instructions=t.instructions,this._negotiatedProtocolVersion=r,e.setProtocolVersion?.(r),this._listChangedConfig)try{this._setupListChangedHandlers(this._listChangedConfig)}catch(e){this.onerror?.(e instanceof Error?e:Error(String(e)))}}getServerCapabilities(){return this._serverCapabilities}getServerVersion(){return this._serverVersion}_deriveServerIdentity(e){let t=this._serverVersion;return t===void 0?e.sessionId??``:`${t.name}@${t.version}`}getNegotiatedProtocolVersion(){return this._negotiatedProtocolVersion}getProtocolEra(){let e=this._negotiatedProtocolVersion;if(e!==void 0)return nv(e)?`modern`:`legacy`}getInstructions(){return this._instructions}getDiscoverResult(){return this._discoverResult}assertCapabilityForMethod(e){switch(e){case`logging/setLevel`:if(!this._serverCapabilities?.logging)throw new X_(Y_.CapabilityNotSupported,`Server does not support logging (required for ${e})`);break;case`prompts/get`:case`prompts/list`:if(!this._serverCapabilities?.prompts)throw new X_(Y_.CapabilityNotSupported,`Server does not support prompts (required for ${e})`);break;case`resources/list`:case`resources/templates/list`:case`resources/read`:case`resources/subscribe`:case`resources/unsubscribe`:if(!this._serverCapabilities?.resources)throw new X_(Y_.CapabilityNotSupported,`Server does not support resources (required for ${e})`);if(e===`resources/subscribe`&&!this._serverCapabilities.resources.subscribe)throw new X_(Y_.CapabilityNotSupported,`Server does not support resource subscriptions (required for ${e})`);break;case`tools/call`:case`tools/list`:if(!this._serverCapabilities?.tools)throw new X_(Y_.CapabilityNotSupported,`Server does not support tools (required for ${e})`);break;case`completion/complete`:if(!this._serverCapabilities?.completions)throw new X_(Y_.CapabilityNotSupported,`Server does not support completions (required for ${e})`);break;case`initialize`:break;case`server/discover`:break;case`ping`:break}}assertNotificationCapability(e){switch(e){case`notifications/roots/list_changed`:if(!this._capabilities.roots?.listChanged)throw new X_(Y_.CapabilityNotSupported,`Client does not support roots list changed notifications (required for ${e})`);break;case`notifications/initialized`:break;case`notifications/cancelled`:break;case`notifications/progress`:break}}assertRequestHandlerCapability(e){switch(e){case`sampling/createMessage`:if(!this._capabilities.sampling)throw new X_(Y_.CapabilityNotSupported,`Client does not support sampling capability (required for ${e})`);break;case`elicitation/create`:if(!this._capabilities.elicitation)throw new X_(Y_.CapabilityNotSupported,`Client does not support elicitation capability (required for ${e})`);break;case`roots/list`:if(!this._capabilities.roots)throw new X_(Y_.CapabilityNotSupported,`Client does not support roots capability (required for ${e})`);break;case`ping`:break}}async ping(e){return this.request({method:`ping`},e)}async discover(e){let t=await this._requestWithSchema({method:`server/discover`},lh,e);return this._discoverResult=t,t}async complete(e,t){return this.request({method:`completion/complete`,params:e},t)}async setLoggingLevel(e,t){return this.request({method:`logging/setLevel`,params:{level:e}},t)}async getPrompt(e,t){return this.request({method:`prompts/get`,params:e},t)}async listPrompts(e,t){if(!this._serverCapabilities?.prompts&&!this._enforceStrictCapabilities)return console.debug(`Client.listPrompts() called but server does not advertise prompts capability - returning empty list`),{prompts:[]};if(e?.cursor!==void 0)return this.request({method:`prompts/list`,params:e},t);let n=await this._serveFromCache(`prompts/list`,void 0,t);return n===void 0?this._listAllPages(`prompts/list`,e,t,(e,t)=>e.prompts.push(...t.prompts)):n}async listResources(e,t){if(!this._serverCapabilities?.resources&&!this._enforceStrictCapabilities)return console.debug(`Client.listResources() called but server does not advertise resources capability - returning empty list`),{resources:[]};if(e?.cursor!==void 0)return this.request({method:`resources/list`,params:e},t);let n=await this._serveFromCache(`resources/list`,void 0,t);return n===void 0?this._listAllPages(`resources/list`,e,t,(e,t)=>e.resources.push(...t.resources)):n}async listResourceTemplates(e,t){if(!this._serverCapabilities?.resources&&!this._enforceStrictCapabilities)return console.debug(`Client.listResourceTemplates() called but server does not advertise resources capability - returning empty list`),{resourceTemplates:[]};if(e?.cursor!==void 0)return this.request({method:`resources/templates/list`,params:e},t);let n=await this._serveFromCache(`resources/templates/list`,void 0,t);return n===void 0?this._listAllPages(`resources/templates/list`,e,t,(e,t)=>e.resourceTemplates.push(...t.resourceTemplates)):n}async _listAllPages(e,t,n,r,i){let a=n?.cacheMode===`bypass`,o=this._cache.captureGeneration(e),s=await this.request({method:e,...t&&{params:{...t}}},n),c=s.nextCursor,l=new Set,u=1;for(;c!==void 0&&!l.has(c);){if(this._listMaxPages!==0&&u>=this._listMaxPages)throw new X_(Y_.ListPaginationExceeded,`${e}: exceeded listMaxPages (${this._listMaxPages}); server pagination did not terminate`,{method:e,listMaxPages:this._listMaxPages});l.add(c);let i=await this.request({method:e,params:{...t,cursor:c}},n);r(s,i),c=i.nextCursor,u++}return delete s.nextCursor,i?.(s),a||await this._cache.write(e,s,o,this._freshness(s)),s}_freshness(e,t){let n=e,r=typeof n.ttlMs==`number`?n.ttlMs:this._defaultCacheTtlMs,i=n.cacheScope===`public`?`public`:`private`;return{expiresAt:this._cache.now()+Math.min(Math.max(0,r),pC),scope:i,params:t}}async _serveFromCache(e,t,n){if(n?.cacheMode===`bypass`||n?.cacheMode===`refresh`)return;let r=await this._cache.read(e,t).catch(e=>void this._reportStoreError(e));if(r!==void 0){if(n?.signal?.aborted){let e=n.signal.reason;throw e instanceof X_?e:new X_(Y_.RequestTimeout,String(e))}return r.value}}_reportStoreError(e){this.onerror?.(e instanceof Error?e:Error(String(e)))}_compileOutputValidator(e){if(e.outputSchema)try{return{ok:!0,validator:this._jsonSchemaValidator.getValidator(e.outputSchema)}}catch(e){return{ok:!1,compileError:e}}}async _resolveXMcpHeaderScan(e,t){let n=t??await this._cache.toolDefinition(e);return n===void 0?void 0:Vy(n.inputSchema)}async readResource(e,t){let n=await this._serveFromCache(`resources/read`,e.uri,t);if(n!==void 0)return n;let r=this._cache.captureGeneration(`resources/read`,e.uri),i=await this.request({method:`resources/read`,params:e},t);if(t?.cacheMode!==`bypass`){let n=this._freshness(i,e.uri);n.expiresAt>this._cache.now()?await this._cache.write(`resources/read`,i,r,n):t?.cacheMode===`refresh`&&await this._cache.evictKey(`resources/read`,e.uri)}return i}async subscribeResource(e,t){return this.request({method:`resources/subscribe`,params:e},t)}async unsubscribeResource(e,t){return this.request({method:`resources/unsubscribe`,params:e},t)}async listen(e,t){if(this.transport===void 0)throw new X_(Y_.NotConnected,`Not connected`);let n=this._negotiatedProtocolVersion;if(n===void 0||!nv(n))throw new X_(Y_.MethodNotSupportedByProtocolVersion,`subscriptions/listen requires a 2026-07-28-era connection (negotiated: ${n??`none`}). On a 2025-era connection, change notifications are delivered unsolicited: use ClientOptions.listChanged and resources/subscribe instead.`,{method:`subscriptions/listen`,protocolVersion:n});if(t?.signal?.aborted){let e=t.signal.reason;throw e instanceof X_?e:new X_(Y_.RequestTimeout,String(e))}let r=new AbortController,i=`listen:${this._nextListenId++}`,a=`opening`,o,s,c,l,u=new Promise((e,t)=>{c=e,l=t}),d,f=new Promise(e=>{d=e}),p=e=>{if(a===`closed`)return;let n=a===`opening`;if(o!==void 0&&(clearTimeout(o),o=void 0),`ack`in e){a=`open`,c(e.ack);return}a=`closed`,s!==void 0&&t?.signal?.removeEventListener(`abort`,s),this._listenState.delete(i),r.abort(),d(e.cause),n&&l(e.error??new X_(Y_.ConnectionClosed,`subscriptions/listen closed before the server acknowledged`))},m=async()=>{r.abort(),await this.notification({method:`notifications/cancelled`,params:{requestId:i}}).catch(()=>{})},h=async()=>{a!==`closed`&&(p({cause:`local`}),await m())};this._listenState.set(i,{settle:p});let g=t?.timeout??6e4;if(o=setTimeout(()=>{p({cause:`remote`,error:new X_(Y_.RequestTimeout,`subscriptions/listen ack timed out`,{timeout:g})}),m().catch(()=>{})},g),t?.signal){let e=t.signal;s=()=>{if(a===`closed`)return;let t=e.reason;p({cause:`local`,error:t instanceof Error?t:Error(String(t??`Aborted`))}),m().catch(()=>{})},e.addEventListener(`abort`,s,{once:!0})}let _={jsonrpc:`2.0`,id:i,method:`subscriptions/listen`,params:{_meta:{...this._outboundMetaEnvelope()},notifications:e}};try{await this.transport.send(_,{requestSignal:r.signal,onRequestStreamEnd:()=>p({cause:`remote`,error:Error(`subscriptions/listen: stream ended`)})})}catch(e){p({cause:`remote`,error:e instanceof Error?e:Error(String(e))})}return{honoredFilter:await u,close:h,closed:f}}get autoOpenedSubscription(){return this._autoOpenedSubscription}_onnotification(e,t){let n=Object.hasOwn(RC,e.method)?RC[e.method]:void 0;if(e.method===`notifications/resources/updated`){let t=e.params?.uri;typeof t==`string`&&this._cache.evictKey(`resources/read`,t)}else if(n!==void 0)for(let e of n)this._cache.evict(e);if(e.method===`notifications/subscriptions/acknowledged`){let t=e.params?._meta?.[Cm],n=typeof t==`string`?this._listenState.get(t):void 0;if(n!==void 0){let t=this._wireCodec().validateNotification(`notifications/subscriptions/acknowledged`,e);n.settle({ack:t.ok?t.value.params.notifications:{}});return}}if(e.method===`notifications/cancelled`){let t=e.params?.requestId,n=typeof t==`string`?this._listenState.get(t):void 0;if(n!==void 0){n.settle({cause:`remote`,error:Error(`subscriptions/listen: server cancelled the subscription`)});return}}super._onnotification(e,t)}_onresponse(e){let t=e.id,n=typeof t==`string`?this._listenState.get(t):void 0;if(n!==void 0){Ny(e)?n.settle({cause:`remote`,error:Hv.fromError(e.error.code,e.error.message,e.error.data)}):n.settle({cause:`graceful`,error:new X_(Y_.ConnectionClosed,`subscriptions/listen: server closed the subscription gracefully before acknowledging`)});return}super._onresponse(e)}_onclose(){if(this._listenState.size>0){let e=new X_(Y_.ConnectionClosed,`Connection closed`);for(let t of this._listenState.values())t.settle({cause:`remote`,error:e});this._listenState.clear()}super._onclose()}async callTool(e,t){let n=this.getProtocolEra()===`modern`&&AC()!==`browser`,r=async()=>{if(!n)return t;let r;try{r=await this._resolveXMcpHeaderScan(e.name,t?.toolDefinition)}catch(e){this._reportStoreError(e)}if(!r?.valid||r.declarations.length===0)return t;let i=Qy(r.declarations,e.arguments);return Object.keys(i).length===0?t:{...t,headers:{...t?.headers,...i}}},i=t?.toolDefinition===void 0?await this._cache.outputValidator(e.name,e=>this._compileOutputValidator(e)).catch(e=>void this._reportStoreError(e)):this._compileOutputValidator(t.toolDefinition),a=()=>{if(i===void 0||i.ok)return;let t=i.compileError,n=(t instanceof Error?t.message:String(t)).slice(0,200);throw new Hv(Vv.InvalidParams,`Tool '${e.name}' has an invalid outputSchema: ${n}`)};a();let o;try{o=await this.request({method:`tools/call`,params:e},await r())}catch(s){let c=s instanceof Hv&&s.code===-32020;if(!n||!c||t?.toolDefinition!==void 0)throw s;let l={signal:t?.signal,timeout:t?.timeout,cacheMode:`refresh`};await this._cache.evict(`tools/list`),await this.listTools(void 0,l).catch(e=>this._reportStoreError(e)),i=await this._cache.outputValidator(e.name,e=>this._compileOutputValidator(e)).catch(e=>void this._reportStoreError(e)),a(),o=await this.request({method:`tools/call`,params:e},await r())}let s=i!==void 0&&i.ok?i.validator:void 0;if(s){if(o.structuredContent===void 0&&!o.isError)throw new Hv(Vv.InvalidRequest,`Tool ${e.name} has an output schema but did not return structured content`);if(o.structuredContent!==void 0&&!o.isError)try{let e=s(o.structuredContent);if(!e.valid)throw new Hv(Vv.InvalidParams,`Structured content does not match the tool's output schema: ${e.errorMessage}`)}catch(e){throw e instanceof Hv?e:new Hv(Vv.InvalidParams,`Failed to validate structured content: ${e instanceof Error?e.message:String(e)}`)}}return o}async listTools(e,t){if(!this._serverCapabilities?.tools&&!this._enforceStrictCapabilities)return console.debug(`Client.listTools() called but server does not advertise tools capability - returning empty list`),{tools:[]};if(e?.cursor!==void 0){let n=await this.request({method:`tools/list`,params:e},t);return this._excludeInvalidXMcpHeaderTools(n),n}let n=await this._serveFromCache(`tools/list`,void 0,t);return n===void 0?this._listAllPages(`tools/list`,e,t,(e,t)=>e.tools.push(...t.tools),e=>this._excludeInvalidXMcpHeaderTools(e)):n}_excludeInvalidXMcpHeaderTools(e){if(this.getProtocolEra()!==`modern`||!this.transport||jC(this.transport)===`stdio`)return;let t=e.tools.filter(e=>{let t=Vy(e.inputSchema);return t.valid?!0:(console.warn(`[mcp-sdk] excluding tool '${e.name}' from tools/list: invalid x-mcp-header declaration — ${t.reason}`),!1)});t.length!==e.tools.length&&(e.tools=t)}_setupListChangedHandler(e,t,n,r){let i=$y(yg,n);if(!i.success)throw Error(`Invalid ${e} listChanged options: ${i.error.message}`);if(typeof n.onChanged!=`function`)throw TypeError(`Invalid ${e} listChanged options: onChanged must be a function`);let{autoRefresh:a,debounceMs:o}=i.data,{onChanged:s}=n,c=async()=>{if(!a){s(null,null);return}try{s(null,await r())}catch(e){s(e instanceof Error?e:Error(String(e)),null)}};this.setNotificationHandler(t,()=>{if(o){let t=this._listChangedDebounceTimers.get(e);t&&clearTimeout(t);let n=setTimeout(c,o);this._listChangedDebounceTimers.set(e,n)}else c()})}async sendRootsListChanged(){return this.notification({method:`notifications/roots/list_changed`})}};(class extends Error{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.SseError`})}static[Symbol.hasInstance](e){return K_(this,e)}static isInstance(e){if(typeof this!=`function`)throw TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return K_(this,e)}constructor(e,t,n){super(`SSE error: ${t}`),this.code=e,this.event=n,G_(this,new.target)}});var VC=1,HC={initialReconnectionDelay:1e3,maxReconnectionDelay:3e4,reconnectionDelayGrowFactor:1.5,maxRetries:2},UC=new Set([`authorization`,`content-type`,`mcp-protocol-version`,`mcp-method`,`mcp-name`,`mcp-session-id`]);function WC(e,t){if(typeof AbortSignal.any==`function`)return AbortSignal.any([e,t]);let n=new AbortController;if(e.aborted)return n.abort(e.reason),n.signal;if(t.aborted)return n.abort(t.reason),n.signal;let r=()=>{e.removeEventListener(`abort`,i),t.removeEventListener(`abort`,a)};function i(){r(),n.abort(e.reason)}function a(){r(),n.abort(t.reason)}return e.addEventListener(`abort`,i,{once:!0}),t.addEventListener(`abort`,a,{once:!0}),n.signal}var GC=class{_abortController;_url;_resourceMetadataUrl;_scope;_requestInit;_authProvider;_oauthProvider;_skipIssuerMetadataValidation;_fetch;_fetchWithInit;_sessionId;_reconnectionOptions;_protocolVersion;_onInsufficientScope;_maxStepUpRetries;_serverRetryMs;_reconnectionScheduler;_cancelReconnection;onclose;onerror;onmessage;hasPerRequestStream=!0;constructor(e,t){this._url=e,this._resourceMetadataUrl=void 0,this._scope=void 0,this._requestInit=t?.requestInit,this._skipIssuerMetadataValidation=t?.skipIssuerMetadataValidation,vS(t?.authProvider)?(this._oauthProvider=t.authProvider,this._authProvider=bS(t.authProvider,{skipIssuerMetadataValidation:t.skipIssuerMetadataValidation})):this._authProvider=t?.authProvider,this._fetch=t?.fetch,this._fetchWithInit=cx(t?.fetch,t?.requestInit),this._sessionId=t?.sessionId,this._protocolVersion=t?.protocolVersion,this._reconnectionOptions=t?.reconnectionOptions??HC,this._reconnectionScheduler=t?.reconnectionScheduler,this._onInsufficientScope=t?.onInsufficientScope??`reauthorize`,this._maxStepUpRetries=Math.max(0,t?.maxStepUpRetries??VC)}async _stepUpAuthorize(e,t){if(this._onInsufficientScope===`throw`||!this._oauthProvider)throw new hS({requiredScope:e.scope,resourceMetadataUrl:e.resourceMetadataUrl,errorDescription:e.errorDescription});if(t>=this._maxStepUpRetries)throw new Z_(Y_.ClientHttpForbidden,`Server returned 403 insufficient_scope after step-up re-authorization (retry limit ${this._maxStepUpRetries} reached)`,{status:403,statusText:e.statusText??`Forbidden`,text:e.text});e.resourceMetadataUrl&&(this._resourceMetadataUrl=e.resourceMetadataUrl);let n=await this._oauthProvider.tokens(),r=wS(this._scope,n?.scope,e.scope);this._scope=r;let i=TS(r,n?.scope);return BS(this._oauthProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:r,forceReauthorization:i,fetchFn:this._fetchWithInit,skipIssuerMetadataValidation:this._skipIssuerMetadataValidation})}async _commonHeaders(){let e={},t=await this._authProvider?.token();t&&(e.Authorization=`Bearer ${t}`),this._sessionId&&(e[`mcp-session-id`]=this._sessionId),this._protocolVersion&&(e[`mcp-protocol-version`]=this._protocolVersion);let n=sx(this._requestInit?.headers);return new Headers({...e,...n})}_applyBodyDerivedHeaders(e,t){if(Array.isArray(t)||!Ay(t))return;let n=t.params?._meta?.[bm];if(typeof n!=`string`)return;e.set(`mcp-protocol-version`,n),e.set(`mcp-method`,t.method);let r=t.params,i=t.method===`resources/read`?typeof r?.uri==`string`?r.uri:void 0:typeof r?.name==`string`?r.name:void 0;i!==void 0&&e.set(`mcp-name`,Xy(i))}_isModernEnvelopedRequest(e){if(Array.isArray(e)||!Ay(e))return!1;let t=e.params?._meta?.[bm];return typeof t==`string`&&nv(t)}async _startOrAuthSse(e,t=!1,n=0){let{resumptionToken:r,requestSignal:i}=e,a=()=>this._abortController?.signal.aborted===!0||i?.aborted===!0;try{let a=await this._commonHeaders(),o=[...a.get(`accept`)?.split(`,`).map(e=>e.trim().toLowerCase())??[],`text/event-stream`];a.set(`accept`,[...new Set(o)].join(`, `)),r&&a.set(`last-event-id`,r);let s=this._abortController?.signal,c=i!==void 0&&s!==void 0?WC(s,i):i??s,l=await(this._fetch??fetch)(this._url,{...this._requestInit,method:`GET`,headers:a,signal:c});if(!l.ok){if(l.status===401&&this._authProvider){if(l.headers.has(`www-authenticate`)){let{resourceMetadataUrl:e,scope:t}=KS(l);this._resourceMetadataUrl=e,this._scope=wS(this._scope,t)}if(this._authProvider.onUnauthorized&&!t)return await this._authProvider.onUnauthorized({response:l,serverUrl:this._url,fetchFn:this._fetchWithInit}),await l.text?.().catch(()=>{}),this._startOrAuthSse(e,!0,n);throw await l.text?.().catch(()=>{}),t?new Z_(Y_.ClientHttpAuthentication,`Server returned 401 after re-authentication`,{status:401,statusText:l.statusText}):new xS}if(l.status===403){let{resourceMetadataUrl:r,scope:i,error:a,errorDescription:o}=KS(l);if(a===`insufficient_scope`){let a=await l.text?.().catch(()=>null);if(await this._stepUpAuthorize({scope:i,resourceMetadataUrl:r,errorDescription:o,statusText:l.statusText,text:a},n)!==`AUTHORIZED`)throw new xS;return this._startOrAuthSse(e,t,n+1)}}if(await l.text?.().catch(()=>{}),l.status===405){e.onRequestStreamEnd?.();return}throw new Z_(Y_.ClientHttpFailedToOpenStream,`Failed to open SSE stream: ${l.statusText}`,{status:l.status,statusText:l.statusText})}this._handleSseStream(l.body,e,!0)}catch(e){throw a()||this.onerror?.(e),e}}_getNextReconnectionDelay(e){if(this._serverRetryMs!==void 0)return this._serverRetryMs;let t=this._reconnectionOptions.initialReconnectionDelay,n=this._reconnectionOptions.reconnectionDelayGrowFactor,r=this._reconnectionOptions.maxReconnectionDelay;return Math.min(t*n**+e,r)}_scheduleReconnection(e,t=0){let n=this._reconnectionOptions.maxRetries;if(t>=n){this.onerror?.(Error(`Maximum reconnection attempts (${n}) exceeded.`)),e.onRequestStreamEnd?.();return}let r=this._getNextReconnectionDelay(t),i=()=>{this._cancelReconnection=void 0,!(this._abortController?.signal.aborted||e.requestSignal?.aborted)&&this._startOrAuthSse(e).catch(n=>{if(!(this._abortController?.signal.aborted||e.requestSignal?.aborted)){this.onerror?.(Error(`Failed to reconnect SSE stream: ${n instanceof Error?n.message:String(n)}`));try{this._scheduleReconnection(e,t+1)}catch(e){this.onerror?.(e instanceof Error?e:Error(String(e)))}}})};if(this._reconnectionScheduler){let e=this._reconnectionScheduler(i,r,t);this._cancelReconnection=typeof e==`function`?e:void 0}else{let e=setTimeout(i,r);this._cancelReconnection=()=>clearTimeout(e)}}_handleSseStream(e,t,n){if(!e){t.onRequestStreamEnd?.();return}let{onresumptiontoken:r,replayMessageId:i,requestSignal:a,onRequestStreamEnd:o}=t,s=()=>this._abortController?.signal.aborted===!0||a?.aborted===!0,c,l=!1,u=!1;(async()=>{try{let t=e.pipeThrough(new TextDecoderStream).pipeThrough(new aS({onRetry:e=>{this._serverRetryMs=e}})).getReader();for(;;){let{value:e,done:n}=await t.read();if(n)break;if(e.id&&(c=e.id,l=!0,r?.(e.id)),e.data&&(!e.event||e.event===`message`))try{let t=Wm.parse(JSON.parse(e.data));(My(t)||Ny(t))&&(u=!0,i!==void 0&&(t.id=i)),this.onmessage?.(t)}catch(e){this.onerror?.(e)}}(n||l)&&!u&&this._abortController&&!s()?this._scheduleReconnection({resumptionToken:c,onresumptiontoken:r,replayMessageId:i,requestSignal:a,onRequestStreamEnd:o},0):s()||o?.()}catch(e){if(s())return;if(this.onerror?.(Error(`SSE stream disconnected: ${e}`)),(n||l)&&!u&&this._abortController&&!s())try{this._scheduleReconnection({resumptionToken:c,onresumptiontoken:r,replayMessageId:i,requestSignal:a,onRequestStreamEnd:o},0)}catch(e){this.onerror?.(Error(`Failed to reconnect: ${e instanceof Error?e.message:String(e)}`)),o?.()}else o?.()}})()}async start(){if(this._abortController)throw Error(`StreamableHTTPClientTransport already started! If using Client class, note that connect() calls start() automatically.`);this._abortController=new AbortController}async finishAuth(e,t){if(!this._oauthProvider)throw new xS(`finishAuth requires an OAuthClientProvider`);let{authorizationCode:n,iss:r}=await ES(e,t,this._oauthProvider,this._url,{fetchFn:this._fetchWithInit,resourceMetadataUrl:this._resourceMetadataUrl});if(await BS(this._oauthProvider,{serverUrl:this._url,authorizationCode:n,iss:r,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit,skipIssuerMetadataValidation:this._skipIssuerMetadataValidation})!==`AUTHORIZED`)throw new xS(`Failed to authorize`)}async close(){try{this._cancelReconnection?.()}finally{this._cancelReconnection=void 0,this._abortController?.abort(),this.onclose?.()}}async send(e,t){return this._send(e,t,!1)}async _send(e,t,n,r=0){try{let{resumptionToken:i,onresumptiontoken:a}=t||{};if(i){this._startOrAuthSse({resumptionToken:i,replayMessageId:Ay(e)?e.id:void 0,requestSignal:t?.requestSignal}).catch(e=>this.onerror?.(e));return}let o=await this._commonHeaders();this._applyBodyDerivedHeaders(o,e);let s=Array.isArray(e)?e.some(e=>Fy(e)):Fy(e);if(s&&o.delete(`mcp-session-id`),t?.headers!==void 0)for(let[e,n]of Object.entries(t.headers))UC.has(e.toLowerCase())||o.set(e,n);o.set(`content-type`,`application/json`);let c=[...o.get(`accept`)?.split(`,`).map(e=>e.trim().toLowerCase())??[],`application/json`,`text/event-stream`];o.set(`accept`,[...new Set(c)].join(`, `));let l=this._abortController?.signal,u=t?.requestSignal!==void 0&&l!==void 0?WC(l,t.requestSignal):t?.requestSignal??l,d={...this._requestInit,method:`POST`,headers:o,body:JSON.stringify(e),signal:u},f=await(this._fetch??fetch)(this._url,d);if(s&&f.ok&&(this._sessionId=f.headers.get(`mcp-session-id`)||void 0),!f.ok){if(f.status===401&&this._authProvider){if(f.headers.has(`www-authenticate`)){let{resourceMetadataUrl:e,scope:t}=KS(f);this._resourceMetadataUrl=e,this._scope=wS(this._scope,t)}if(this._authProvider.onUnauthorized&&!n)return await this._authProvider.onUnauthorized({response:f,serverUrl:this._url,fetchFn:this._fetchWithInit}),await f.text?.().catch(()=>{}),this._send(e,t,!0,r);throw await f.text?.().catch(()=>{}),n?new Z_(Y_.ClientHttpAuthentication,`Server returned 401 after re-authentication`,{status:401,statusText:f.statusText}):new xS}let i=await f.text?.().catch(()=>null);if(f.status===403){let{resourceMetadataUrl:a,scope:o,error:s,errorDescription:c}=KS(f);if(s===`insufficient_scope`){if(await this._stepUpAuthorize({scope:o,resourceMetadataUrl:a,errorDescription:c,statusText:f.statusText,text:i},r)!==`AUTHORIZED`)throw new xS;return this._send(e,t,n,r+1)}}if(f.status===400&&typeof i==`string`&&this._isModernEnvelopedRequest(e))try{let t=Wm.parse(JSON.parse(i)),n=(Array.isArray(e)?e:[e]).filter(e=>Ay(e));if(Ny(t)&&n.some(e=>e.id===t.id)){this.onmessage?.(t);return}}catch{}throw new Z_(Y_.ClientHttpNotImplemented,`Error POSTing to endpoint: ${i}`,{status:f.status,statusText:f.statusText,text:i})}if(f.status===202){await f.text?.().catch(()=>{}),Iy(e)&&this._startOrAuthSse({resumptionToken:void 0}).catch(e=>this.onerror?.(e));return}let p=(Array.isArray(e)?e:[e]).some(e=>`method`in e&&`id`in e&&e.id!==void 0),m=f.headers.get(`content-type`),h=ox(m);if(p)if(h===`text/event-stream`)this._handleSseStream(f.body,{onresumptiontoken:a,requestSignal:t?.requestSignal,onRequestStreamEnd:t?.onRequestStreamEnd},!1);else if(h===`application/json`){let e=await f.json(),t=Array.isArray(e)?e.map(e=>Wm.parse(e)):[Wm.parse(e)];for(let e of t)this.onmessage?.(e)}else throw await f.text?.().catch(()=>{}),new X_(Y_.ClientHttpUnexpectedContent,`Unexpected content type: ${m}`,{contentType:m});else await f.text?.().catch(()=>{})}catch(e){throw t?.requestSignal?.aborted!==!0&&this.onerror?.(e),e}}get sessionId(){return this._sessionId}async terminateSession(){if(this._sessionId)try{let e=await this._commonHeaders(),t={...this._requestInit,method:`DELETE`,headers:e,signal:this._abortController?.signal},n=await(this._fetch??fetch)(this._url,t);if(await n.text?.().catch(()=>{}),!n.ok&&n.status!==405)throw new Z_(Y_.ClientHttpFailedToTerminateSession,`Failed to terminate session: ${n.statusText}`,{status:n.status,statusText:n.statusText});this._sessionId=void 0}catch(e){throw this.onerror?.(e),e}}setProtocolVersion(e){this._protocolVersion=e}get protocolVersion(){return this._protocolVersion}async resumeStream(e,t){await this._startOrAuthSse({resumptionToken:e,onresumptiontoken:t?.onresumptiontoken})}},KC=t({BaseConnector:()=>$w,BrowserOAuthClientProvider:()=>Iw,DialectJsonSchemaValidator:()=>Zw,HttpConnector:()=>nT,MCPClient:()=>dT,MCPConnection:()=>sT,MCPSession:()=>sT,POSTHOG_API_KEY:()=>mw,POSTHOG_HOST:()=>pw,Tel:()=>kw,Telemetry:()=>Ow,VERSION:()=>iw,capturePostHog:()=>hw,completeOAuthFlow:()=>Ww,createOAuthProvider:()=>Lw,getPackageVersion:()=>aw,isUnauthorized:()=>Uw,logger:()=>Q,normalizeClientInfo:()=>oT,resolveCallbacks:()=>rT,setTelemetrySource:()=>Aw,shouldAutoProvisionOAuth:()=>iT,telFetch:()=>fw}),qC;function JC(e){qC=e}function YC(e,t){qC?.addServer(e,t)}function XC(e){qC?.removeServer(e)}var ZC;function QC(e){ZC=e}function $C(e){ZC?.(e)}var ew=[`silent`,`error`,`warn`,`info`,`http`,`verbose`,`debug`,`silly`],tw={silent:``,error:`❌`,warn:`⚠️`,info:`ℹ️`,http:`🌐`,verbose:`📝`,debug:`🔍`,silly:`🤪`};function nw(){let e;try{e=typeof process<`u`?{}.MCP_USE_LOG_LEVEL??{}.DEBUG:void 0}catch{}let t=e?.trim().toLowerCase();return t===`2`?`debug`:t&&ew.includes(t)?t:`info`}var rw=class{constructor(e=`mcp-use`,t=`info`,n=`minimal`){this.name=e,this.level=t,this.format=n}write(e,t,n){if(this.level===`silent`||ew.indexOf(e)>ew.indexOf(this.level))return;let r=n.map(e=>{if(typeof e==`string`)return e;try{return JSON.stringify(e)}catch{return String(e)}}).join(` `),i=r?`${t} ${r}`:t,a=new Date().toLocaleTimeString(`en-US`,{hour12:!1}),o=this.format===`minimal`?e:e.toUpperCase(),s=this.format===`emoji`?` ${tw[e]}`:``,c=`${a} [${this.name}]${s} ${o}: ${i}`;(e===`error`?console.error:e===`warn`?console.warn:e===`info`?console.info:e===`debug`?console.debug:console.log)(c)}error=(e,...t)=>this.write(`error`,e,t);warn=(e,...t)=>this.write(`warn`,e,t);info=(e,...t)=>this.write(`info`,e,t);debug=(e,...t)=>this.write(`debug`,e,t);http=(e,...t)=>this.write(`http`,e,t);verbose=(e,...t)=>this.write(`verbose`,e,t);silly=(e,...t)=>this.write(`silly`,e,t);setFormat(e){this.format=e}},Q=class{static instances={};static currentFormat=`minimal`;static currentLevel;static get(e=`mcp-use`){return this.instances[e]??=new rw(e,this.currentLevel??nw(),this.currentFormat)}static configure({level:e=nw(),format:t=`minimal`}={}){this.currentLevel=e,this.currentFormat=t;for(let n of Object.values(this.instances))n.level=e,n.format=t}static setDebug(e){let t=e===2||e===!0?`debug`:`info`;this.currentLevel=t;for(let e of Object.values(this.instances))e.level=t;try{typeof process<`u`&&({}.MCP_USE_LOG_LEVEL=t)}catch{}}static setFormat(e){this.configure({format:e})}}.get(),iw=`2.0.0-beta.7`;function aw(){return iw}var ow=class{},sw=class extends ow{constructor(e){super(),this.data=e}get name(){return`mcp_agent_execution`}get properties(){return{execution_method:this.data.executionMethod,query:this.data.query,query_length:this.data.query.length,success:this.data.success,model_provider:this.data.modelProvider,model_name:this.data.modelName,server_count:this.data.serverCount,server_identifiers:this.data.serverIdentifiers,total_tools_available:this.data.totalToolsAvailable,tools_available_names:this.data.toolsAvailableNames,max_steps_configured:this.data.maxStepsConfigured,memory_enabled:this.data.memoryEnabled,use_server_manager:this.data.useServerManager,max_steps_used:this.data.maxStepsUsed,manage_connector:this.data.manageConnector,external_history_used:this.data.externalHistoryUsed,steps_taken:this.data.stepsTaken??null,tools_used_count:this.data.toolsUsedCount??null,tools_used_names:this.data.toolsUsedNames??null,response:this.data.response??null,response_length:this.data.response?this.data.response.length:null,execution_time_ms:this.data.executionTimeMs??null,error_type:this.data.errorType??null,conversation_history_length:this.data.conversationHistoryLength??null}}},cw=class extends ow{constructor(e){super(),this.data=e}get name(){return`mcpclient_init`}get properties(){return{code_mode:this.data.codeMode,sandbox:this.data.sandbox,all_callbacks:this.data.allCallbacks,verify:this.data.verify,servers:this.data.servers,num_servers:this.data.numServers,is_browser:this.data.isBrowser}}},lw=class extends ow{constructor(e){super(),this.data=e}get name(){return`connector_init`}get properties(){return{connector_type:this.data.connectorType,server_command:this.data.serverCommand??null,server_args:this.data.serverArgs??null,server_url:this.data.serverUrl??null,public_identifier:this.data.publicIdentifier??null}}},uw=class extends ow{constructor(e){super(),this.data=e}get name(){return`client_add_server`}get properties(){let{serverName:e,serverConfig:t}=this.data,n=t.url;return{server_name:e,server_url_domain:n?this._extractHostname(n):null,transport:t.transport??null,has_auth:!!(t.authToken||t.authProvider)}}_extractHostname(e){try{return new URL(e).hostname}catch{return null}}},dw=class extends ow{constructor(e){super(),this.data=e}get name(){return`client_remove_server`}get properties(){return{server_name:this.data.serverName}}};async function fw(e,t){try{await fetch(e,t)}catch{}}var pw=`https://eu.i.posthog.com`,mw=`phc_lyTtbYwvkdSbrcMQNPiKiiRWrrM1seyKIMjycSvItEI`;function hw(e){let t=e.host??`https://eu.i.posthog.com`,n=e.apiKey??`phc_lyTtbYwvkdSbrcMQNPiKiiRWrrM1seyKIMjycSvItEI`;return fw(`${t}/i/v0/e/`,{method:`POST`,headers:{"Content-Type":`application/json`},keepalive:!0,body:JSON.stringify({api_key:n,event:e.event,distinct_id:e.distinctId,properties:e.properties,timestamp:new Date().toISOString()})})}function gw(){return globalThis.crypto.randomUUID()}function _w(){let e=new Uint8Array(8);return globalThis.crypto.getRandomValues(e),Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``)}var vw=`mcp_use_user_id`,yw=`phc_lyTtbYwvkdSbrcMQNPiKiiRWrrM1seyKIMjycSvItEI`,bw=`https://eu.i.posthog.com`,xw=null;function Sw(){return typeof localStorage<`u`&&typeof localStorage.getItem==`function`&&typeof localStorage.setItem==`function`&&typeof localStorage.removeItem==`function`}function Cw(){if(!Sw())return null;try{localStorage.setItem(`__mcp_use_test__`,`1`),localStorage.removeItem(`__mcp_use_test__`)}catch{return null}return{getUserId(){try{return localStorage.getItem(vw)}catch{return null}},setUserId(e){try{localStorage.setItem(vw,e)}catch{}}}}function ww(){try{return globalThis.Bun===void 0?globalThis.Deno===void 0?typeof navigator<`u`&&navigator.userAgent?.includes(`Cloudflare-Workers`)?`cloudflare-workers`:globalThis.EdgeRuntime===void 0?typeof window<`u`&&typeof document<`u`?`browser`:typeof process<`u`&&process.versions?.node!==void 0?`node`:`unknown`:`edge`:`deno`:`bun`}catch{return`unknown`}}function Tw(){if(typeof process<`u`&&{}.MCP_USE_TELEMETRY_SOURCE)return{}.MCP_USE_TELEMETRY_SOURCE;try{if(Sw())return localStorage.getItem(`MCP_USE_TELEMETRY_SOURCE`)??void 0}catch{}}function Ew(){if(typeof window<`u`&&window.__MCP_USE_ANONYMIZED_TELEMETRY__===!1||typeof process<`u`&&{}.MCP_USE_ANONYMIZED_TELEMETRY?.toLowerCase()===`false`)return!0;try{if(Sw()&&localStorage.getItem(`MCP_USE_ANONYMIZED_TELEMETRY`)===`false`)return!0}catch{}return!1}function Dw(){try{return`session-${gw()}`}catch{return`session-${Date.now()}-${_w()}`}}var Ow=class e{static instance=null;UNKNOWN_USER_ID=`UNKNOWN_USER_ID`;_currUserId=null;_telemetryEnabled=!1;_pending=new Set;_runtimeEnvironment;_storageCapability;_storage;_source;_productVersion;constructor(){this._runtimeEnvironment=ww(),this._storage=xw??Cw()??null,this._storageCapability=this._storage?`persistent`:`session-only`,this._source=Tw()||this._runtimeEnvironment;let e=Ew(),t=this._runtimeEnvironment!==`unknown`;e?(this._telemetryEnabled=!1,Q.debug(`Telemetry disabled via opt-out`)):t?(Q.debug(`Anonymized telemetry enabled. Set MCP_USE_ANONYMIZED_TELEMETRY=false to disable.`),this._telemetryEnabled=!0):(this._telemetryEnabled=!1,Q.debug(`Telemetry disabled - unknown environment: ${this._runtimeEnvironment}`))}get runtimeEnvironment(){return this._runtimeEnvironment}get storageCapability(){return this._storageCapability}static getInstance(){return e.instance||=new e,e.instance}setSource(e){this._source=e;try{Sw()&&localStorage.setItem(`MCP_USE_TELEMETRY_SOURCE`,e)}catch{}Q.debug(`Telemetry source set to: ${e}`)}getSource(){return this._source}setProductVersion(e){this._productVersion=e}get isEnabled(){return this._telemetryEnabled}get userId(){if(this._currUserId)return this._currUserId;try{if(this._storage){let e=this._storage.getUserId();if(e)return this._currUserId=e,e;let t=gw();return this._storage.setUserId(t),this._currUserId=t,t}this._currUserId=Dw()}catch{this._currUserId=this.UNKNOWN_USER_ID}return this._currUserId}async capture(e){if(!this._telemetryEnabled)return;let t=this.userId,n={...e.properties,mcp_use_version:this._productVersion??aw(),language:`typescript`,source:this._source,runtime:this._runtimeEnvironment},r=hw({host:bw,apiKey:yw,event:e.name,distinctId:t,properties:n});this._pending.add(r),r.finally(()=>this._pending.delete(r))}async trackAgentExecution(e){this.isEnabled&&await this.capture(new sw(e))}async trackMCPClientInit(e){this.isEnabled&&await this.capture(new cw(e))}async trackConnectorInit(e){this.isEnabled&&await this.capture(new lw(e))}async trackClientAddServer(e,t){this.isEnabled&&await this.capture(new uw({serverName:e,serverConfig:t}))}async trackClientRemoveServer(e){this.isEnabled&&await this.capture(new dw({serverName:e}))}async trackUseMcpConnection(e){this.isEnabled&&await this.capture({name:`usemcp_connection`,properties:{url_domain:new URL(e.url).hostname,transport_type:e.transportType,success:e.success,error_type:e.errorType??null,connection_time_ms:e.connectionTimeMs??null,has_oauth:e.hasOAuth,has_sampling:e.hasSampling,has_elicitation:e.hasElicitation}})}async trackUseMcpToolCall(e){this.isEnabled&&await this.capture({name:`usemcp_tool_call`,properties:{tool_name:e.toolName,success:e.success,error_type:e.errorType??null,execution_time_ms:e.executionTimeMs??null}})}async trackUseMcpResourceRead(e){this.isEnabled&&await this.capture({name:`usemcp_resource_read`,properties:{resource_uri_scheme:e.resourceUri.split(`:`)[0],success:e.success,error_type:e.errorType??null}})}identify(e,t){this._currUserId=e,this._storage?.setUserId(e),this._telemetryEnabled&&hw({host:bw,apiKey:yw,event:`$identify`,distinctId:e,properties:{$set:t??{}}})}reset(){this._currUserId=null}flush(){Promise.allSettled([...this._pending])}async shutdown(){try{await Promise.allSettled([...this._pending]),Q.debug(`Telemetry fetch captures flushed`)}catch(e){Q.debug(`Error flushing telemetry captures: ${e}`)}}},kw=Ow;function Aw(e){kw.getInstance().setSource(e)}JC({addServer:(e,t)=>Ow.getInstance().trackClientAddServer(e,t).catch(()=>void 0),removeServer:e=>Ow.getInstance().trackClientRemoveServer(e).catch(()=>void 0)}),QC(e=>Ow.getInstance().trackConnectorInit(e).catch(()=>void 0));function jw(e){let t=()=>{throw Error(`Invalid url to pass to open(): ${e}`)},n;try{n=new URL(e)}catch{t()}return n.protocol!==`https:`&&n.protocol!==`http:`&&t(),n.hostname!==encodeURIComponent(n.hostname)&&t(),n.username&&=encodeURIComponent(n.username),n.password&&=encodeURIComponent(n.password),n.pathname=n.pathname.slice(0,1)+encodeURIComponent(n.pathname.slice(1)).replace(/%2f/gi,`/`),n.search=n.search.slice(0,1)+Array.from(n.searchParams.entries()).map(Mw).join(`&`),n.hash=n.hash.slice(0,1)+encodeURIComponent(n.hash.slice(1)),n.href}function Mw([e,t]){return`${encodeURIComponent(e)}${t.length>0?`=${encodeURIComponent(t)}`:``}`}var Nw=class{get(e){return localStorage.getItem(e)}set(e,t){localStorage.setItem(e,t)}remove(e){localStorage.removeItem(e)}keys(){let e=[];for(let t=0;t<localStorage.length;t++){let n=localStorage.key(t);n&&e.push(n)}return e}},Pw=class e{serverUrl;storageKeyPrefix;serverUrlHash;clientName;clientUri;logoUri;callbackUrl;clientMetadataUrl;scope;store;allowClientSecret;constructor(t,n,r){US(n.clientMetadataUrl),this.serverUrl=t,this.storageKeyPrefix=n.storageKeyPrefix||`mcp:auth`,this.serverUrlHash=e.hashString(t),this.clientName=n.clientName||`mcp-use`,this.clientUri=n.clientUri||(typeof window<`u`?window.location.origin:`https://mcp-use.com`),this.logoUri=n.logoUri||`https://mcp-use.com/logo.png`,this.callbackUrl=jw(n.callbackUrl||(typeof window<`u`?new URL(`/oauth/callback`,window.location.origin).toString():`/oauth/callback`)),this.clientMetadataUrl=n.clientMetadataUrl,this.scope=n.scope,this.store=r,this.allowClientSecret=n.allowClientSecret??!0}getKey(e){return`${this.storageKeyPrefix}_${this.serverUrlHash}_${e}`}static hashString(e){let t=0;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);t=(t<<5)-t+r,t&=t}return Math.abs(t).toString(16)}get redirectUrl(){return this.callbackUrl}get clientMetadata(){return{redirect_uris:[this.redirectUrl],token_endpoint_auth_method:`none`,grant_types:[`authorization_code`,`refresh_token`],response_types:[`code`],client_name:this.clientName,client_uri:this.clientUri,logo_uri:this.logoUri,...this.scope?{scope:this.scope}:{}}}credentialKey(e,t){return t?this.getKey(`${e}_${encodeURIComponent(t.issuer)}`):this.getKey(e)}async readCredential(e,t){let n=this.credentialKey(e,t),r=await this.store.get(n);if(!r&&t){let r=this.credentialKey(e),i=await this.store.get(r);if(i)try{let e=JSON.parse(i);if(!e.issuer||e.issuer===t.issuer){let i={...e,issuer:t.issuer},a=JSON.stringify(i);return await this.store.set(n,a),await this.store.set(r,a),{key:n,value:i}}}catch{await this.store.remove(r)}return}if(r)try{return{key:n,value:JSON.parse(r)}}catch(t){console.warn(`[${this.storageKeyPrefix}] Failed to parse ${e.replace(`_`,` `)}:`,t),await this.store.remove(n);return}}async tokens(e){return(await this.readCredential(`tokens`,e))?.value}async saveTokens(e,t){let n=JSON.stringify(e);await this.store.set(this.credentialKey(`tokens`,t),n),t&&await this.store.set(this.credentialKey(`tokens`),n),await this.store.remove(this.getKey(`code_verifier`)),await this.store.remove(this.getKey(`last_auth_url`))}async clientInformation(e){let t=await this.readCredential(`client_info`,e);if(!t)return;let{key:n,value:r}=t;try{if(!this.allowClientSecret&&r.client_secret){await this.store.remove(n),e&&await this.store.remove(this.credentialKey(`client_info`)),console.warn(`[${this.storageKeyPrefix}] Removed OAuth client information containing a browser client_secret.`);return}let t=Array.isArray(r.redirect_uris)?r.redirect_uris:[];if(!(t.length===0||t.includes(this.redirectUrl))){console.info(`[${this.storageKeyPrefix}] Invalidating cached OAuth client info due to redirect URI mismatch.`),await this.store.remove(n),await this.store.remove(this.credentialKey(`tokens`,e)),await this.store.remove(this.getKey(`last_auth_url`));return}return r}catch{await this.store.remove(n);return}}async saveClientInformation(e,t){let n=e;if(!this.allowClientSecret&&n.client_secret)throw await this.store.remove(this.credentialKey(`client_info`,t)),t&&await this.store.remove(this.credentialKey(`client_info`)),Error(`Browser OAuth clients must be public clients; client_secret persistence is not allowed.`);let r=JSON.stringify(e);await this.store.set(this.credentialKey(`client_info`,t),r),t&&await this.store.set(this.credentialKey(`client_info`),r)}async saveCodeVerifier(e){await this.store.set(this.getKey(`code_verifier`),e)}async codeVerifier(){let e=this.getKey(`code_verifier`),t=await this.store.get(e);if(!t)throw Error(`[${this.storageKeyPrefix}] Code verifier not found in storage for key ${e}. Auth flow likely corrupted or timed out.`);return t}async invalidateCredentials(e){let t=async e=>{let t=`${this.getKey(e)}_`;for(let n of await this.store.keys())(n===this.getKey(e)||n.startsWith(t))&&await this.store.remove(n)};switch(e){case`all`:await t(`tokens`),await t(`client_info`),await this.store.remove(this.getKey(`code_verifier`)),await this.store.remove(this.getKey(`last_auth_url`)),await this.store.remove(this.getKey(`discovery_state`)),await this.store.remove(this.getKey(`token_endpoint`));break;case`client`:await t(`client_info`);break;case`tokens`:await t(`tokens`);break;case`verifier`:await this.store.remove(this.getKey(`code_verifier`));break;case`discovery`:await this.store.remove(this.getKey(`discovery_state`));break;default:break}}async saveDiscoveryState(e){await this.store.set(this.getKey(`discovery_state`),JSON.stringify(e))}async discoveryState(){let e=await this.store.get(this.getKey(`discovery_state`));if(e)try{return JSON.parse(e)}catch{await this.store.remove(this.getKey(`discovery_state`));return}}async storeAuthorizationState(e,t={}){let n=globalThis.crypto.randomUUID(),r=`${this.storageKeyPrefix}:state_${n}`,i={serverUrlHash:this.serverUrlHash,expiry:Date.now()+1e3*60*10,providerOptions:{serverUrl:this.serverUrl,storageKeyPrefix:this.storageKeyPrefix,clientName:this.clientName,clientUri:this.clientUri,callbackUrl:this.callbackUrl,...this.clientMetadataUrl?{clientMetadataUrl:this.clientMetadataUrl}:{},...t.extraProviderOptions??{}},flowType:t.flowType,returnUrl:t.returnUrl};e.searchParams.set(`state`,n);let a=jw(e.toString());return await this.store.set(r,JSON.stringify(i)),await this.store.set(this.getKey(`last_auth_url`),a),a}async getTokenEndpoint(){return(await this.discoveryState())?.authorizationServerMetadata?.token_endpoint??null}async getResource(){let e=(await this.discoveryState())?.resourceMetadata?.resource;return typeof e==`string`?e:null}};async function Fw(e){return typeof e==`string`?e:e instanceof URLSearchParams||e instanceof FormData?Object.fromEntries(e.entries()):e instanceof Blob?await e.text():e}var Iw=class{serverUrl;staticClientInfo;session;preventAutoAuth;useRedirectFlow;oauthProxyUrl;connectionUrl;proxyOAuthRequests;onPopupWindow;constructor(e,t={}){if(t.staticClientInfo?.client_secret)throw Error(`Browser OAuth clients must be public clients; staticClientInfo.client_secret is not allowed.`);this.serverUrl=e,this.session=new Pw(e,{...t,allowClientSecret:!1},new Nw),this.preventAutoAuth=t.preventAutoAuth,this.useRedirectFlow=t.useRedirectFlow,this.oauthProxyUrl=t.oauthProxyUrl,this.connectionUrl=t.connectionUrl,this.proxyOAuthRequests=t.proxyOAuthRequests??!0,this.staticClientInfo=t.staticClientInfo,this.onPopupWindow=t.onPopupWindow}get storageKeyPrefix(){return this.session.storageKeyPrefix}get serverUrlHash(){return this.session.serverUrlHash}get clientName(){return this.session.clientName}get clientUri(){return this.session.clientUri}get logoUri(){return this.session.logoUri}get callbackUrl(){return this.session.callbackUrl}get scope(){return this.session.scope}get clientMetadataUrl(){return this.session.clientMetadataUrl}getKey(e){return this.session.getKey(e)}reanchorWellKnownUrl(e){if(!this.connectionUrl)return e;try{let t=new URL(e),n=new URL(this.connectionUrl);if(t.origin!==n.origin||!t.pathname.startsWith(`/.well-known/`))return e;let r=new URL(this.serverUrl),[i,...a]=t.pathname.slice(13).split(`/`);if(!i)return e;let o=a.length?`/${a.join(`/`)}`:``,s=n.pathname.replace(/\/+$/,``),c=r.pathname.replace(/\/+$/,``),l=o&&o===s?c:o;return`${r.origin}/.well-known/${i}${l}${t.search}`}catch{return e}}getProxyFetch(e){if(!this.proxyOAuthRequests||!this.oauthProxyUrl)return e;let t=e??globalThis.fetch.bind(globalThis),n=this.oauthProxyUrl,r=new Set,i=!1;return async(e,a)=>{let o=typeof e==`string`?e:e instanceof URL?e.toString():e.url,s=this.reanchorWellKnownUrl(o),c;try{c=new URL(s).pathname}catch{return await t(e,a)}let l=c.includes(`/.well-known/`);if(!i){i=!0;let e=(await this.discoveryState())?.authorizationServerMetadata;for(let t of[`registration_endpoint`,`token_endpoint`,`revocation_endpoint`,`introspection_endpoint`])typeof e?.[t]==`string`&&r.add(e[t])}let u=r.has(s)||/\/(?:register|registration|token|revoke|revocation|introspect|introspection)\/?$/.test(c);if(!l&&!u)return await t(e,a);try{let r=new URL(s),i=new URL(n);if(r.origin===i.origin&&(r.pathname.startsWith(i.pathname)||s.includes(`/inspector/api/oauth`)))return await t(e,a)}catch{}let d=l?`${n}/metadata?serverUrl=${encodeURIComponent(this.serverUrl)}&url=${encodeURIComponent(s)}`:`${n}/proxy`;if(l){let e=await t(d,{...a,method:`GET`});try{let t=await e.clone().json();for(let e of[`registration_endpoint`,`token_endpoint`,`revocation_endpoint`,`introspection_endpoint`])typeof t[e]==`string`&&r.add(t[e])}catch{}return e}let f=a?.body?await Fw(a.body):void 0,p=await(await t(d,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({serverUrl:this.serverUrl,url:s,method:a?.method||`POST`,headers:a?.headers?Object.fromEntries(new Headers(a.headers)):{},body:f})})).json();return new Response(JSON.stringify(p.body),{status:p.status,statusText:p.statusText,headers:new Headers(p.headers)})}}get redirectUrl(){return this.session.redirectUrl}get clientMetadata(){return this.session.clientMetadata}tokens(e){return this.session.tokens(e)}saveTokens(e,t){return this.session.saveTokens(e,t)}async clientInformation(e){return this.staticClientInfo?this.staticClientInfo:this.session.clientInformation(e)}async saveClientInformation(e,t){if(!this.staticClientInfo)return this.session.saveClientInformation(e,t)}codeVerifier(){return this.session.codeVerifier()}saveCodeVerifier(e){return this.session.saveCodeVerifier(e)}invalidateCredentials(e){return this.session.invalidateCredentials(e)}saveDiscoveryState(e){return this.session.saveDiscoveryState(e)}discoveryState(){return this.session.discoveryState()}getTokenEndpoint(){return this.session.getTokenEndpoint()}getResource(){return this.session.getResource()}async getClientCredentials(){let e=await this.clientInformation();return e?.client_id?{client_id:e.client_id}:null}async prepareAuthorizationUrl(e){return this.session.storeAuthorizationState(e,{extraProviderOptions:{oauthProxyUrl:this.oauthProxyUrl,...this.clientMetadataUrl?{clientMetadataUrl:this.clientMetadataUrl}:{},...this.staticClientInfo?{staticClientInfo:this.staticClientInfo}:{},...this.scope?{scope:this.scope}:{}},flowType:this.useRedirectFlow?`redirect`:`popup`,returnUrl:typeof window<`u`?window.location.href:void 0})}async redirectToAuthorization(e){let t=await this.prepareAuthorizationUrl(e);if(this.preventAutoAuth){console.info(`[${this.storageKeyPrefix}] Auto-auth prevented. Authorization URL stored for manual trigger.`);return}if(this.useRedirectFlow){console.info(`[${this.storageKeyPrefix}] Redirecting to authorization URL (full-page redirect).`),window.location.href=t;return}let n=`width=600,height=700,resizable=yes,scrollbars=yes,status=yes`;try{let e=window.open(t,`mcp_auth_${this.serverUrlHash}`,n);this.onPopupWindow&&this.onPopupWindow(t,n,e),!e||e.closed||e.closed===void 0?console.warn(`[${this.storageKeyPrefix}] Popup likely blocked by browser. Manual navigation might be required using the stored URL.`):(e.focus(),console.info(`[${this.storageKeyPrefix}] Redirecting to authorization URL in popup.`))}catch(e){console.error(`[${this.storageKeyPrefix}] Error opening popup window:`,e)}}getLastAttemptedAuthUrl(){let e=localStorage.getItem(this.getKey(`last_auth_url`));return e?jw(e):null}clearStorage(){let e=`${this.storageKeyPrefix}_${this.serverUrlHash}_`,t=`${this.storageKeyPrefix}:state_`,n=[],r=0;for(let r=0;r<localStorage.length;r++){let i=localStorage.key(r);if(i){if(i.startsWith(e))n.push(i);else if(i.startsWith(t))try{let e=localStorage.getItem(i);e&&JSON.parse(e).serverUrlHash===this.serverUrlHash&&n.push(i)}catch(e){console.warn(`[${this.storageKeyPrefix}] Error parsing state key ${i} during clearStorage:`,e)}}}return[...new Set(n)].forEach(e=>{localStorage.removeItem(e),r++}),r}};async function Lw(e,t={}){return new Iw(e,t)}var Rw=`mcp_auth_callback`,zw=`mcp_auth_callback`;function Bw(e){try{return typeof localStorage<`u`&&!!localStorage.getItem(e)}catch{return!1}}function Vw({popup:e,state:t,tokensKey:n,timeoutMs:r=5*6e4,closePollMs:i=1e3,closeGraceMs:a=2e4,expectedOrigin:o=typeof window<`u`?window.location.origin:``}){return new Promise(s=>{let c=!1,l=null,u=null,d=null,f=null,p=()=>{if(l&&=(clearInterval(l),null),u&&=(clearTimeout(u),null),d&&=(clearTimeout(d),null),typeof window<`u`&&(window.removeEventListener(`message`,g),window.removeEventListener(`storage`,v)),f){try{f.removeEventListener(`message`,_),f.close()}catch{}f=null}},m=e=>{c||(c=!0,p(),s(e))},h=e=>{!e||e.type!==zw||e.state&&t&&e.state!==t||(e.success?m({kind:`success`}):m({kind:`error`,error:e.error??`Authentication failed in callback.`}))},g=e=>{o&&e.origin!==o||h(e.data)},_=e=>{h(e.data)},v=e=>{e.key===n&&e.newValue&&m({kind:`success`})};if(typeof window<`u`&&(window.addEventListener(`message`,g),window.addEventListener(`storage`,v)),typeof BroadcastChannel<`u`)try{f=new BroadcastChannel(Rw),f.addEventListener(`message`,_)}catch{f=null}e&&(l=setInterval(()=>{if(c)return;let t=!1;try{t=e.closed}catch{t=!1}if(t){if(l&&=(clearInterval(l),null),Bw(n)){m({kind:`success`});return}d=setTimeout(()=>{m(Bw(n)?{kind:`success`}:{kind:`cancelled`})},a)}},i)),u=setTimeout(()=>{m(Bw(n)?{kind:`success`}:{kind:`timeout`})},r)})}var Hw=5*6e4;function Uw(e,t=0){if(!e||t>5)return!1;if(e instanceof xS)return!0;if(e instanceof Error){if(e.code===401||e.name===`UnauthorizedError`)return!0;let n=e.message??``;if(n.includes(`401`)||n.includes(`Unauthorized`)||e.cause&&Uw(e.cause,t+1))return!0;let r=e.data;if(r?.cause&&Uw(r.cause,t+1))return!0}return!1}async function Ww(e,t,n={}){let r=e,i=n.timeoutMs??Hw,a=n.fetchFn??r.getProxyFetch?.()??void 0;if(!r.hasPendingFlow){let n=await BS(e,{serverUrl:t,fetchFn:a});if(n===`AUTHORIZED`)return;if(n!==`REDIRECT`)throw Error(`Unexpected OAuth auth() result: ${n}`)}if(typeof r.getAuthorizationCode==`function`){await BS(e,{serverUrl:t,authorizationCode:await r.getAuthorizationCode(),fetchFn:a});return}await Gw(r,i)}async function Gw(e,t){if(typeof window>`u`)throw Error(`OAuth redirect requires a browser environment or a provider with getAuthorizationCode()`);if(e.useRedirectFlow)return;let n=e.getKey?.(`tokens`);if(!n)throw Error(`Browser OAuth provider must expose getKey() for token storage`);let r=null,i=e.getLastAttemptedAuthUrl?.();if(i)try{r=new URL(i).searchParams.get(`state`)}catch{}let a=await Vw({popup:null,state:r,tokensKey:n,timeoutMs:t});switch(a.kind){case`success`:return;case`cancelled`:throw Error(`OAuth authentication was cancelled.`);case`timeout`:throw Error(`OAuth callback not received within ${t}ms. Ensure /oauth/callback calls onMcpAuthorization().`);case`error`:throw Error(a.error);default:throw Error(`Unexpected OAuth popup result`)}}var Kw=`http://json-schema.org/draft-04/schema`,qw=new Set([`http://json-schema.org/draft-07/schema`,`https://json-schema.org/draft-07/schema`]),Jw=new Set([`https://json-schema.org/draft/2019-09/schema`,`http://json-schema.org/draft/2019-09/schema`]),Yw=new Set([`https://json-schema.org/draft/2020-12/schema`,`http://json-schema.org/draft/2020-12/schema`]);function Xw(e){if(!(`$schema`in e)||typeof e.$schema!=`string`)return`2020-12`;let t=e.$schema.replace(/#$/,``);if(t===Kw)return`4`;if(qw.has(t))return`7`;if(Jw.has(t))return`2019-09`;if(Yw.has(t))return`2020-12`}var Zw=class{getValidator(e){let t=Xw(e);return(t===void 0?new Jx:new Jx({draft:t})).getValidator(e)}},Qw={"~standard":{version:1,vendor:`mcp-use`,validate:e=>({value:e})}},$w=class{client=null;connectionManager=null;toolsCache=null;capabilitiesCache=null;serverInfoCache=null;connected=!1;opts;notificationHandlers=[];rootsCache=[];activeProgressHandlers=new Set;constructor(e={}){this.opts=e,e.roots&&(this.rootsCache=[...e.roots]),e.onNotification&&this.notificationHandlers.push(e.onNotification)}trackConnectorInit(e){let t=this.constructor.name;$C({connectorType:t,...e})}onNotification(e){this.notificationHandlers.push(e),this.client&&this.setupNotificationHandler()}async forwardNotification(e){for(let t of this.notificationHandlers)try{await t(e)}catch(e){Q.error(`Error in notification handler:`,e)}}async handleListChanged(e,t,n){if(t){Q.warn(`[Auto] ${e} refresh failed:`,t);return}e===`notifications/tools/list_changed`&&n&&(this.toolsCache=[...n]),await this.forwardNotification({method:e})}setupNotificationHandler(){if(!this.client)return;this.client.fallbackNotificationHandler=async e=>{switch(e.method){case`notifications/tools/list_changed`:await this.refreshToolsCache();break;case`notifications/resources/list_changed`:await this.onResourcesListChanged();break;case`notifications/prompts/list_changed`:await this.onPromptsListChanged();break;default:break}await this.forwardNotification(e)};let e=this.client._notificationHandlers;for(let t of[`notifications/progress`,`notifications/cancelled`]){let n=e.get(t);n&&e.set(t,async e=>{await n(e),await this.forwardNotification(e)})}}setupRoundProgressForwarding(){if(!this.client)return;let e=this.client,t=e._onnotification.bind(this.client);e._onnotification=async e=>{e&&typeof e==`object`&&e.method===`notifications/progress`&&this.forwardRoundProgress(e.params),await t?.(e)}}forwardRoundProgress(e){if(this.activeProgressHandlers.size===1){let[t]=this.activeProgressHandlers;t?.(e)}}async refreshToolsCache(){if(this.client)try{Q.debug(`[Auto] Refreshing tools cache due to list_changed notification`);let e=await this.client.listTools();this.toolsCache=e.tools??[],Q.debug(`[Auto] Refreshed tools cache: ${this.toolsCache.length} tools`)}catch(e){Q.warn(`[Auto] Failed to refresh tools cache:`,e)}}async onResourcesListChanged(){Q.debug(`[Auto] Resources list changed - clients should re-fetch if needed`)}async onPromptsListChanged(){Q.debug(`[Auto] Prompts list changed - clients should re-fetch if needed`)}async setRoots(e){this.rootsCache=[...e],this.client&&(Q.debug(`Sending roots/list_changed notification with ${e.length} root(s)`),await this.client.sendRootsListChanged())}getRoots(){return[...this.rootsCache]}setupRootsHandler(){this.client&&this.client.setRequestHandler(`roots/list`,async()=>(Q.debug(`Server requested roots list, returning ${this.rootsCache.length} root(s)`),{roots:this.rootsCache}))}setupSamplingHandler(){if(!this.client){Q.debug(`setupSamplingHandler: No client available`);return}let e=this.opts.onSampling;if(!e){Q.debug(`setupSamplingHandler: No sampling callback provided`);return}Q.debug(`setupSamplingHandler: Setting up sampling request handler`),this.client.setRequestHandler(`sampling/createMessage`,async t=>(Q.debug(`Server requested sampling, forwarding to callback`),await e(t.params))),Q.debug(`setupSamplingHandler: Sampling handler registered successfully`)}setupElicitationHandler(){if(!this.client){Q.debug(`setupElicitationHandler: No client available`);return}let e=this.opts.onElicitation;if(!e){Q.debug(`setupElicitationHandler: No elicitation callback provided`);return}Q.debug(`setupElicitationHandler: Setting up elicitation request handler`),this.client.setRequestHandler(`elicitation/create`,async t=>(Q.debug(`Server requested elicitation, forwarding to callback`),await e(t.params))),Q.debug(`setupElicitationHandler: Elicitation handler registered successfully`)}async disconnect(){if(!this.connected){Q.debug(`Not connected to MCP implementation`);return}Q.debug(`Disconnecting from MCP implementation`),await this.cleanupResources(),this.connected=!1,Q.debug(`Disconnected from MCP implementation`)}get isClientConnected(){return this.client!=null}async initialize(e=this.opts.defaultRequestOptions??{}){if(!this.client)throw Error(`MCP client is not connected`);Q.debug(`Caching server capabilities & tools`);let t=this.client.getServerCapabilities();this.capabilitiesCache=t||null;let n=this.client.getServerVersion();this.serverInfoCache=n?{name:n.name,version:n.version,title:n.title,description:n.description,websiteUrl:n.websiteUrl,icons:n.icons}:null;try{let t=await this.client.listTools(void 0,e);this.toolsCache=t.tools??[],Q.debug(`Fetched ${this.toolsCache.length} tools from server`)}catch(e){let t=e;t.code===-32601?Q.debug(`Server does not implement tools/list, assuming no tools`):Q.debug(`Failed to list tools, assuming empty:`,t.message),this.toolsCache=[]}return Q.debug(`Server capabilities:`,t),Q.debug(`Server info:`,n),t}get tools(){if(!this.toolsCache)throw Error(`MCP client is not initialized; call initialize() first`);return this.toolsCache}get serverCapabilities(){return this.capabilitiesCache||{}}get serverInfo(){return this.serverInfoCache}get instructions(){return this.client?.getInstructions?.()}get protocolEra(){return this.client?.getProtocolEra?.()}get negotiatedProtocolVersion(){return this.client?.getNegotiatedProtocolVersion?.()}async callTool(e,t,n){if(!this.client)throw Error(`MCP client is not connected`);let r=n?{...n}:void 0;r?.resetTimeoutOnProgress&&!r.onprogress&&(r.onprogress=()=>{},Q.debug(`[BaseConnector] Added onprogress callback for tool '${e}' to enable progressToken`)),Q.debug(`Calling tool '${e}' with args`,t);let i=r?.onprogress;i&&this.activeProgressHandlers.add(i);try{let n=await this.client.callTool({name:e,arguments:t},r);return Q.debug(`Tool '${e}' returned`,n),n}finally{i&&this.activeProgressHandlers.delete(i)}}async listTools(e){if(!this.client)throw Error(`MCP client is not connected`);Q.debug(`[listTools] Fetching fresh tools from server...`);let t=await this.client.listTools(void 0,e),n=t.tools?[...t.tools]:[];return Q.debug(`[listTools] Returned ${n.length} tools:`,n.map(e=>e.name)),n}async listResources(e,t){if(!this.client)throw Error(`MCP client is not connected`);return Q.debug(`Listing resources`,e?`with cursor: ${e}`:``),await this.client.listResources({cursor:e},t)}async listAllResources(e){if(!this.client)throw Error(`MCP client is not connected`);if(!this.capabilitiesCache?.resources)return Q.debug(`Server does not advertise resources capability, skipping`),{resources:[]};try{Q.debug(`Listing all resources (with auto-pagination)`);let t=[],n;do{let r=await this.client.listResources({cursor:n},e);t.push(...r.resources||[]),n=r.nextCursor}while(n);return{resources:t}}catch(e){if(e.code===-32601)return Q.debug(`Server advertised resources but method not found`),{resources:[]};throw e}}async listResourceTemplates(e){if(!this.client)throw Error(`MCP client is not connected`);return Q.debug(`Listing resource templates`),await this.client.listResourceTemplates(void 0,e)}async complete(e,t){if(!this.client)throw Error(`MCP client is not connected`);Q.debug(`[complete] Requesting completions for:`,e.ref);let n=await this.client.complete(e,t);return Q.debug(`[complete] Received ${n.completion.values.length} suggestions`),n}async readResource(e,t){if(!this.client)throw Error(`MCP client is not connected`);return Q.debug(`Reading resource ${e}`),await this.client.readResource({uri:e},t)}async subscribeToResource(e,t){if(!this.client)throw Error(`MCP client is not connected`);return Q.debug(`Subscribing to resource: ${e}`),await this.client.subscribeResource({uri:e},t)}async unsubscribeFromResource(e,t){if(!this.client)throw Error(`MCP client is not connected`);return Q.debug(`Unsubscribing from resource: ${e}`),await this.client.unsubscribeResource({uri:e},t)}async listPrompts(){if(!this.client)throw Error(`MCP client is not connected`);if(!this.capabilitiesCache?.prompts)return Q.debug(`Server does not advertise prompts capability, skipping`),{prompts:[]};try{return Q.debug(`Listing prompts`),await this.client.listPrompts()}catch(e){if(e.code===-32601)return Q.debug(`Server advertised prompts but method not found`),{prompts:[]};throw e}}async getPrompt(e,t){if(!this.client)throw Error(`MCP client is not connected`);return Q.debug(`Getting prompt ${e}`),await this.client.getPrompt({name:e,arguments:t})}async request(e,t=null,n){if(!this.client)throw Error(`MCP client is not connected`);return Q.debug(`Sending raw request '${e}' with params`,t),await this.client.request({method:e,params:t??{}},Qw,n)}async cleanupResources(){let e=[];if(this.client)try{typeof this.client.close==`function`&&await this.client.close()}catch(t){let n=`Error closing client: ${t}`;Q.warn(n),e.push(n)}finally{this.client=null}if(this.connectionManager)try{await this.connectionManager.stop()}catch(t){let n=`Error stopping connection manager: ${t}`;Q.warn(n),e.push(n)}finally{this.connectionManager=null}this.toolsCache=null,e.length&&Q.warn(`Resource cleanup finished with ${e.length} issue(s)`)}};function eT(e,t=0){if(!e||t>5)return!1;if(e instanceof xS||e instanceof Z_&&e.status===401)return!0;if(e instanceof Error){if(e.cause&&eT(e.cause,t+1))return!0;let n=e instanceof X_?e.data:void 0;if(n?.cause&&eT(n.cause,t+1))return!0}return!1}function tT(e,t,n,r){let i=new URL(e),a=t.replace(/\/$/,``);return async(e,t)=>{let o=new Request(e,t),s=new URL(o.url);if(!(s.origin===i.origin&&s.pathname===i.pathname))return n(o);let c=new Headers(o.headers);c.set(`X-Target-URL`,o.url),r&&c.set(`X-Server-Id`,r);let l=o.method===`GET`||o.method===`HEAD`?void 0:await o.clone().arrayBuffer();return n(new Request(a,{method:o.method,headers:c,body:l,signal:o.signal,redirect:`manual`}))}}var nT=class extends $w{baseUrl;headers;timeout;customFetch;clientInfo;protocolNegotiation;gatewayUrl;serverId;reconnectionOptions;transportType=null;streamableTransport=null;constructor(e,t={}){super(t);let n=e.replace(/\/$/,``);this.baseUrl=n,this.headers={...t.headers??{}},this.gatewayUrl=t.gatewayUrl,this.serverId=t.serverId,t.authToken&&(this.headers.Authorization=`Bearer ${t.authToken}`),this.timeout=t.timeout??1e4;let r=t.fetch??globalThis.fetch.bind(globalThis);this.customFetch=this.gatewayUrl?tT(n,this.gatewayUrl,r,this.serverId):t.fetch,this.clientInfo=t.clientInfo??{name:`http-connector`,version:`1.0.0`},this.protocolNegotiation=t.protocolNegotiation??`auto`,this.reconnectionOptions=t.reconnectionOptions}buildClientOptions(){return{...this.opts.clientOptions||{},jsonSchemaValidator:this.opts.clientOptions?.jsonSchemaValidator??new Zw,versionNegotiation:{mode:this.protocolNegotiation,...this.opts.clientOptions?.versionNegotiation??{}},listChanged:{tools:{autoRefresh:!0,onChanged:(e,t)=>void this.handleListChanged(`notifications/tools/list_changed`,e,t)},resources:{autoRefresh:!1,onChanged:e=>void this.handleListChanged(`notifications/resources/list_changed`,e)},prompts:{autoRefresh:!1,onChanged:e=>void this.handleListChanged(`notifications/prompts/list_changed`,e)},...this.opts.clientOptions?.listChanged??{}},capabilities:{...this.opts.clientOptions?.capabilities||{},roots:{listChanged:!0},...this.opts.onSampling?{sampling:{}}:{},...this.opts.onElicitation?{elicitation:{form:{},url:{}}}:{}}}}unwrapStreamableError(e){return e instanceof Z_?e:e instanceof Error&&e.cause instanceof Z_?e.cause:null}classifyStreamableHttpFailure(e){let t=`Unknown error`,n=!1,r,i=this.unwrapStreamableError(e);if(i){let e=i.status;return n=e===401,r=e,e===400&&i.message.includes(`Missing session ID`)?(t=`Server requires session ID (FastMCP compatibility)`,Q.warn(`\u26A0\uFE0F ${t}`)):e===404||e===405?(t=`Server returned ${e} - server likely doesn't support streamable HTTP`,Q.debug(t)):(t=`Server returned ${e}: ${i.message}`,Q.debug(t)),{fallbackReason:t,is401Error:n,httpStatusCode:r}}if(e instanceof Error){let r=e.toString(),i=e.message||``;n=eT(e)||r.includes(`401`)||i.includes(`Unauthorized`),r.includes(`Missing session ID`)||r.includes(`Bad Request: Missing session ID`)||i.includes(`FastMCP session ID error`)?(t=`Server requires session ID (FastMCP compatibility)`,Q.warn(`\u26A0\uFE0F ${t}`)):r.includes(`405 Method Not Allowed`)||r.includes(`404 Not Found`)?(t=`Server doesn't support streamable HTTP (405/404)`,Q.debug(t)):(t=`Streamable HTTP failed: ${e.message}`,Q.debug(t))}return{fallbackReason:t,is401Error:n,httpStatusCode:r}}async connect(){if(this.connected){Q.debug(`Already connected to MCP implementation`);return}let e=this.baseUrl;Q.debug(`Connecting to MCP implementation via HTTP: ${e}`);try{await this.connectWithStreamableHttp(e),Q.debug(`✅ Successfully connected via streamable HTTP`)}catch(e){Q.debug(`Streamable HTTP connect failed`,e);let{fallbackReason:t,is401Error:n,httpStatusCode:r}=this.classifyStreamableHttpFailure(e);if(await this.cleanupResources(),n){Q.info(`Authentication required`);let e=Error(`Authentication required`);throw e.code=401,e}let i=Error(`Could not connect via streamable HTTP: ${t}`);throw r!==void 0&&Object.defineProperty(i,"code",{value:r,writable:!1,enumerable:!0,configurable:!0}),i}}observeSseProgress(e){if(!e.body||!e.headers.get(`content-type`)?.includes(`text/event-stream`))return e;let[t,n]=e.body.tee();return(async()=>{let e=n.getReader(),t=new TextDecoder,r=``;try{for(;;){let{done:n,value:i}=await e.read();if(n)break;r+=t.decode(i,{stream:!0});let a=r.split(/\r?\n\r?\n/);r=a.pop()??``;for(let e of a)for(let t of e.split(/\r?\n/))if(t.startsWith(`data:`))try{let e=JSON.parse(t.slice(5).trim());e.method===`notifications/progress`&&this.forwardRoundProgress(e.params)}catch{}}}catch(e){e instanceof DOMException&&e.name===`AbortError`||Q.debug(`Progress observer stream ended:`,e)}finally{e.releaseLock()}})(),new Response(t,{status:e.status,statusText:e.statusText,headers:e.headers})}async connectWithStreamableHttp(e){try{Q.debug(`[HttpConnector] Connecting with Streamable HTTP`,{baseUrl:e,originalUrl:this.baseUrl,gatewayUrl:this.gatewayUrl||`none`,authProviderUrl:this.opts.authProvider&&`serverUrl`in this.opts.authProvider&&typeof this.opts.authProvider.serverUrl==`string`?this.opts.authProvider.serverUrl:`none`,headers:this.headers});let t,n=new Promise(e=>{t=e}),r=this.customFetch??globalThis.fetch.bind(globalThis),i=new GC(new URL(e),{authProvider:this.opts.authProvider,fetch:async(e,n)=>{let i=await r(e,n),a=n?.method??(e instanceof Request?e.method:`GET`),o=new Headers(e instanceof Request?e.headers:void 0);return new Headers(n?.headers).forEach((e,t)=>{o.set(t,e)}),a.toUpperCase()===`GET`&&i.ok&&i.headers.get(`content-type`)?.includes(`text/event-stream`)&&t?.(),o.get(`mcp-method`)===`subscriptions/listen`?i:this.observeSseProgress(i)},requestInit:{headers:this.headers},reconnectionOptions:{maxReconnectionDelay:3e4,initialReconnectionDelay:1e3,reconnectionDelayGrowFactor:1.5,maxRetries:2,...this.reconnectionOptions}}),a=i;if(this.opts.wrapTransport){let e=this.baseUrl;a=this.opts.wrapTransport(a,e)}let o=this.buildClientOptions();Q.debug(`Creating Client with capabilities:`,JSON.stringify(o.capabilities,null,2)),this.client=new BC(this.clientInfo,o),this.setupRootsHandler(),this.setupSamplingHandler(),this.setupElicitationHandler(),Q.debug(`Roots/sampling/elicitation handlers registered before connect`);try{let e;if(await Promise.race([this.client.connect(a),new Promise((t,n)=>{e=setTimeout(()=>n(Error(`MCP connection timed out after ${this.timeout}ms`)),this.timeout)})]).finally(()=>{e!==void 0&&clearTimeout(e)}),(this.client.getProtocolEra?.()??`legacy`)===`legacy`&&i.sessionId){let e,t=await Promise.race([n.then(()=>!0),new Promise(t=>e=setTimeout(()=>t(!1),Math.min(this.timeout,5e3)))]);e&&clearTimeout(e),t||Q.warn(`Legacy server push stream did not attach before connect completed`)}let t=i.sessionId;t&&Q.debug(`Session ID obtained: ${t}`)}catch(e){if(e instanceof Error){let t=e.message||e.toString();if(t.includes(`Missing session ID`)||t.includes(`Bad Request: Missing session ID`)||t.includes(`Mcp-Session-Id header is required`)){let n=Error(`Session ID error: ${t}. The SDK should automatically extract session ID from initialize response.`);throw n.cause=e,n}}throw e}this.streamableTransport=i,this.connectionManager={stop:async()=>{if(this.streamableTransport)try{await this.streamableTransport.close()}catch(e){Q.warn(`Error closing Streamable HTTP transport: ${e}`)}finally{this.streamableTransport=null}}},this.connected=!0,this.transportType=`streamable-http`,this.setupNotificationHandler(),Q.debug(`Successfully connected to MCP implementation via streamable HTTP: ${e}`),this.trackConnectorInit({serverUrl:this.baseUrl,publicIdentifier:`${this.baseUrl} (streamable-http)`})}catch(e){throw await this.cleanupResources(),e}}get publicIdentifier(){return{type:`http`,url:this.baseUrl,transport:this.transportType||`unknown`,protocolEra:this.protocolEra??`unknown`}}getTransportType(){return this.transportType}async cleanupResources(){if(this.streamableTransport&&this.protocolEra!==`modern`){let e;try{await Promise.race([this.streamableTransport.terminateSession().then(()=>!0),new Promise(t=>e=setTimeout(()=>t(!1),Math.min(this.timeout,5e3)))])||Q.debug(`Timed out terminating legacy HTTP session; closing transport`)}catch(e){Q.debug(`Error terminating Streamable HTTP session: ${e}`)}finally{e&&clearTimeout(e)}}await super.cleanupResources()}};function rT(e,t){return{onSampling:e?.onSampling??t?.onSampling,onElicitation:e?.onElicitation??t?.onElicitation,onNotification:e?.onNotification??t?.onNotification}}function iT(e){if(!(`url`in e)||typeof e.url!=`string`||e.authProvider||e.authToken||e.oauth===!1)return!1;let t=e.headers;if(t){for(let e of Object.keys(t))if(e.toLowerCase()===`authorization`)return!1}return!0}function aT(){return{name:`mcp-use`,title:`mcp-use`,version:aw(),description:`mcp-use is a complete TypeScript framework for building and using MCP`,icons:[{src:`https://mcp-use.com/logo.png`}],websiteUrl:`https://mcp-use.com`}}function oT(e){let t=aT();if(!e||typeof e!=`object`)return t;let n=e;return!n.name||!n.version?t:{...t,...n}}var sT=class{connector;autoConnect;constructor(e,t=!0){this.connector=e,this.autoConnect=t}async connect(){await this.connector.connect()}async disconnect(){await this.connector.disconnect()}async initialize(){!this.isConnected&&this.autoConnect&&await this.connect(),await this.connector.initialize()}get isConnected(){return this.connector&&this.connector.isClientConnected}on(e,t){e===`notification`&&this.connector.onNotification(t)}async setRoots(e){return this.connector.setRoots(e)}getRoots(){return this.connector.getRoots()}get tools(){return this.connector.tools}async listTools(e){return this.connector.listTools(e)}get serverCapabilities(){return this.connector.serverCapabilities}get serverInfo(){return this.connector.serverInfo}get protocolEra(){return this.connector.protocolEra}get negotiatedProtocolVersion(){return this.connector.negotiatedProtocolVersion}get info(){let e=this.protocolEra,t=this.negotiatedProtocolVersion,n=this.serverInfo;if(!e||!t||!n)throw Error(`MCP connection is not initialized`);let r=this.serverCapabilities,i=r.extensions&&typeof r.extensions==`object`&&!Array.isArray(r.extensions)?r.extensions:{};return{protocolEra:e,protocolVersion:t,server:n,capabilities:r,instructions:this.connector.instructions,extensions:i}}supports(e){return e in this.serverCapabilities}async callTool(e,t={},n){return this.connector.callTool(e,t,n)}async listResources(e,t){return this.connector.listResources(e,t)}async listAllResources(e){return this.connector.listAllResources(e)}async listResourceTemplates(e){return this.connector.listResourceTemplates(e)}async complete(e,t){return this.connector.complete(e,t)}async readResource(e,t){return this.connector.readResource(e,t)}async subscribeToResource(e,t){return this.connector.subscribeToResource(e,t)}async unsubscribeFromResource(e,t){return this.connector.unsubscribeFromResource(e,t)}async listPrompts(){return this.connector.listPrompts()}async getPrompt(e,t){return this.connector.getPrompt(e,t)}async request(e,t=null,n){return this.connector.request(e,t,n)}};function cT(e){return!!e&&typeof e==`object`&&`redirectUrl`in e&&`clientMetadata`in e}var lT=class{config={};sessions={};activeSessions=[];constructor(e){e&&(this.config=e)}static fromDict(e){throw Error(`fromDict must be implemented by concrete class`)}addServer(e,t){this.config.mcpServers=this.config.mcpServers||{},this.config.mcpServers[e]=t,YC(e,t)}async removeServer(e){this.config.mcpServers?.[e]&&(await this.closeSession(e),delete this.config.mcpServers[e],XC(e))}getServerNames(){return Object.keys(this.config.mcpServers??{})}getServerConfig(e){return this.config.mcpServers?.[e]}getConfig(){return this.config??{}}async createSession(e,t=!0){let n=this.config.mcpServers??{};if(Object.keys(n).length===0&&Q.warn(`No MCP servers defined in config`),!n[e])throw Error(`Server '${e}' not found in config`);let r={...n[e]},i;if(iT(r)){let e=r.oauth===!1?void 0:r.oauth??{};i=await this.createDefaultOAuthProvider(r.url,e),r={...r,authProvider:i}}else `authProvider`in r&&r.authProvider&&cT(r.authProvider)&&(i=r.authProvider);let a=async()=>{let e=new sT(await Promise.resolve(this.createConnectorFromConfig(r)));return t&&await e.initialize(),e},o;try{o=await a()}catch(n){let s=r;if(!t||!i||!(`url`in s)||!Uw(n)||i.preventAutoAuth)throw n;Q.info(`[MCPClient] Unauthorized connecting to '${e}'; completing OAuth\u2026`),await Ww(i,s.url),o=await a()}return this.sessions[e]=o,this.activeSessions.includes(e)||this.activeSessions.push(e),o}async connect(e){return this.createSession(e)}async createAllSessions(e=!0){let t=this.config.mcpServers??{};Object.keys(t).length===0&&Q.warn(`No MCP servers defined in config`);for(let n of Object.keys(t))await this.createSession(n,e);return this.sessions}async connectAll(){return this.createAllSessions()}getSession(e){return this.sessions[e]||null}requireSession(e){let t=this.sessions[e];if(!t)throw Error(`Session '${e}' not found. Available sessions: ${this.activeSessions.join(`, `)||`none`}`);return t}getAllActiveSessions(){return Object.fromEntries(this.activeSessions.map(e=>[e,this.sessions[e]]))}async closeSession(e){let t=this.sessions[e];if(!t){Q.warn(`No session exists for server ${e}, nothing to close`);return}try{Q.debug(`Closing session for server ${e}`),await t.disconnect()}catch(t){Q.error(`Error closing session for server '${e}': ${t}`)}finally{this.sessions[e]===t&&(delete this.sessions[e],this.activeSessions=this.activeSessions.filter(t=>t!==e))}}async closeAllSessions(){let e=Object.keys(this.sessions),t=[];for(let n of e)try{Q.debug(`Closing session for server ${n}`),await this.closeSession(n)}catch(e){let r=`Failed to close session for server '${n}': ${e}`;Q.error(r),t.push(r)}t.length?Q.error(`Encountered ${t.length} errors while closing sessions`):Q.debug(`All sessions closed successfully`)}async close(){await this.closeAllSessions()}};function uT(e){let t=Object.keys(e.mcpServers??{});kw.getInstance().trackMCPClientInit({codeMode:!1,sandbox:!1,allCallbacks:!1,verify:!1,servers:t,numServers:t.length,isBrowser:!0}).catch(e=>Q.debug(`Failed to track BrowserMCPClient init: ${e}`))}var dT=class e extends lT{static getPackageVersion(){return aw()}constructor(e){super(e),uT(this.config)}static fromDict(t){return new e(t)}async createDefaultOAuthProvider(e,t={}){return Lw(e,t)}createConnectorFromConfig(e){let{url:t,headers:n,fetch:r,authToken:i,authProvider:a,wrapTransport:o,clientOptions:s,protocolNegotiation:c,timeout:l,gatewayUrl:u,serverId:d,reconnectionOptions:f}=e;if(!t)throw Error(`Server URL is required`);let p=this.config,m=rT(e,p),h=oT(e.clientInfo??this.config.clientInfo),g={headers:n,fetch:r??globalThis.fetch.bind(globalThis),authToken:i,authProvider:a,wrapTransport:o,clientOptions:s,onSampling:m.onSampling,onElicitation:m.onElicitation,onNotification:m.onNotification,protocolNegotiation:c,timeout:l,clientInfo:h,gatewayUrl:u,serverId:d,reconnectionOptions:f};return Q.debug(`[BrowserMCPClient] Connector options prepared (clientOptions: ${s?`provided`:`none`})`),new nT(t,g)}},fT=`mcp_inspector_telemetry_disabled`,pT=`mcp_inspector_telemetry_user_id`,mT=`MCP_USE_ANONYMIZED_TELEMETRY`,hT=`mcp_use_user_id`;function gT(){return typeof localStorage<`u`&&typeof localStorage.getItem==`function`&&typeof localStorage.setItem==`function`}function _T(){if(gT())try{if(localStorage.getItem(fT)===`true`&&localStorage.getItem(mT)!==`false`&&localStorage.setItem(mT,`false`),!localStorage.getItem(hT)){let e=localStorage.getItem(pT);e&&localStorage.setItem(hT,e)}}catch{}}function vT(){_T(),Aw(`inspector`),kw.getInstance().setProductVersion(Lo())}function yT(){if(typeof window>`u`)return`standalone`;let e=window.__MCP_INSPECTOR_MODE__;return e===`standalone`||e===`embedded`||e===`cloud`?e:`standalone`}async function bT(e){await kw.getInstance().capture({name:e.name,properties:{...e.properties,package:`inspector`,mode:yT()}})}async function xT(e){await bT(new xo(e))}var ST=`io.modelcontextprotocol/related-task`,CT=`io.modelcontextprotocol/subscriptionId`,wT=lm(()=>J([V(),H(),U(),Tp(),Y(V(),wT),G(wT)])),TT=Y(V(),wT),ET=J([V(),H().int()]),DT=V(),OT=K({ttl:H().optional()}),kT=K({taskId:V()}),AT=q({progressToken:ET.optional(),[ST]:kT.optional()}),jT=K({_meta:AT.optional()}),MT=jT.extend({task:OT.optional()}),NT=K({method:V(),params:jT.loose().optional()}),PT=K({_meta:AT.optional()}),FT=K({method:V(),params:PT.loose().optional()}),IT=q({_meta:AT.optional()}),LT=J([V(),H().int()]),RT=K({jsonrpc:X(`2.0`),id:LT,...NT.shape}).strict(),zT=K({jsonrpc:X(`2.0`),...FT.shape}).strict(),BT=K({jsonrpc:X(`2.0`),id:LT,result:IT}).strict(),VT=K({jsonrpc:X(`2.0`),id:LT.optional(),error:K({code:H().int(),message:V(),data:W().optional()})}).strict(),HT=J([RT,zT,BT,VT]);J([BT,VT]);var UT=IT.strict(),WT=PT.extend({requestId:LT.optional(),reason:V().optional()}),GT=FT.extend({method:X(`notifications/cancelled`),params:WT}),KT=K({icons:G(K({src:V(),mimeType:V().optional(),sizes:G(V()).optional(),theme:Bp([`light`,`dark`]).optional()})).optional()}),qT=K({name:V(),title:V().optional()}),JT=qT.extend({...qT.shape,...KT.shape,version:V(),websiteUrl:V().optional(),description:V().optional()}),YT=pm(e=>e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).length===0?{form:{}}:e,Lp(K({form:Lp(K({applyDefaults:U().optional()}),TT).optional(),url:TT.optional()}),TT.optional())),XT=q({list:TT.optional(),cancel:TT.optional(),requests:q({sampling:q({createMessage:TT.optional()}).optional(),elicitation:q({create:TT.optional()}).optional()}).optional()}),ZT=q({list:TT.optional(),cancel:TT.optional(),requests:q({tools:q({call:TT.optional()}).optional()}).optional()}),QT=K({experimental:Y(V(),TT).optional(),sampling:K({context:TT.optional(),tools:TT.optional()}).optional(),elicitation:YT.optional(),roots:K({listChanged:U().optional()}).optional(),tasks:XT.optional(),extensions:Y(V(),TT).optional()}),$T=jT.extend({protocolVersion:V(),capabilities:QT,clientInfo:JT}),eE=NT.extend({method:X(`initialize`),params:$T}),tE=K({experimental:Y(V(),TT).optional(),logging:TT.optional(),completions:TT.optional(),prompts:K({listChanged:U().optional()}).optional(),resources:K({subscribe:U().optional(),listChanged:U().optional()}).optional(),tools:K({listChanged:U().optional()}).optional(),tasks:ZT.optional(),extensions:Y(V(),TT).optional()}),nE=IT.extend({protocolVersion:V(),capabilities:tE,serverInfo:JT,instructions:V().optional()}),rE=FT.extend({method:X(`notifications/initialized`),params:PT.optional()}),iE=NT.extend({method:X(`server/discover`),params:jT.optional()}),aE=IT.extend({supportedVersions:G(V()),capabilities:tE,serverInfo:JT,instructions:V().optional()}),oE=NT.extend({method:X(`ping`),params:jT.optional()}),sE=K({progress:H(),total:Z(H()),message:Z(V())}),cE=K({...PT.shape,...sE.shape,progressToken:ET}),lE=FT.extend({method:X(`notifications/progress`),params:cE}),uE=jT.extend({cursor:DT.optional()}),dE=NT.extend({params:uE.optional()}),fE=IT.extend({nextCursor:DT.optional()}),pE=K({uri:V(),mimeType:Z(V()),_meta:Y(V(),W()).optional()}),mE=pE.extend({text:V()}),hE=V().refine(e=>{try{return atob(e),!0}catch{return!1}},{message:`Invalid Base64 string`}),gE=pE.extend({blob:hE}),_E=Bp([`user`,`assistant`]),vE=K({audience:G(_E).optional(),priority:H().min(0).max(1).optional(),lastModified:Tf({offset:!0}).optional()}),yE=K({...qT.shape,...KT.shape,uri:V(),description:Z(V()),mimeType:Z(V()),size:Z(H()),annotations:vE.optional(),_meta:Z(q({}))}),bE=K({...qT.shape,...KT.shape,uriTemplate:V(),description:Z(V()),mimeType:Z(V()),annotations:vE.optional(),_meta:Z(q({}))}),xE=dE.extend({method:X(`resources/list`)}),SE=fE.extend({resources:G(yE)}),CE=dE.extend({method:X(`resources/templates/list`)}),wE=fE.extend({resourceTemplates:G(bE)}),TE=jT.extend({uri:V()}),EE=TE,DE=NT.extend({method:X(`resources/read`),params:EE}),OE=IT.extend({contents:G(J([mE,gE]))}),kE=FT.extend({method:X(`notifications/resources/list_changed`),params:PT.optional()}),AE=TE,jE=NT.extend({method:X(`resources/subscribe`),params:AE}),ME=TE,NE=NT.extend({method:X(`resources/unsubscribe`),params:ME}),PE=K({toolsListChanged:U().optional(),promptsListChanged:U().optional(),resourcesListChanged:U().optional(),resourceSubscriptions:G(V()).optional()}),FE=jT.extend({notifications:PE}),IE=NT.extend({method:X(`subscriptions/listen`),params:FE}),LE=PT.extend({notifications:PE}),RE=FT.extend({method:X(`notifications/subscriptions/acknowledged`),params:LE}),zE=q({[CT]:LT}),BE=IT.extend({_meta:zE}),VE=PT.extend({uri:V()}),HE=FT.extend({method:X(`notifications/resources/updated`),params:VE}),UE=K({name:V(),description:Z(V()),required:Z(U())}),WE=K({...qT.shape,...KT.shape,description:Z(V()),arguments:Z(G(UE)),_meta:Z(q({}))}),GE=dE.extend({method:X(`prompts/list`)}),KE=fE.extend({prompts:G(WE)}),qE=jT.extend({name:V(),arguments:Y(V(),V()).optional()}),JE=NT.extend({method:X(`prompts/get`),params:qE}),YE=K({type:X(`text`),text:V(),annotations:vE.optional(),_meta:Y(V(),W()).optional()}),XE=K({type:X(`image`),data:hE,mimeType:V(),annotations:vE.optional(),_meta:Y(V(),W()).optional()}),ZE=K({type:X(`audio`),data:hE,mimeType:V(),annotations:vE.optional(),_meta:Y(V(),W()).optional()}),QE=K({type:X(`tool_use`),name:V(),id:V(),input:Y(V(),W()),_meta:Y(V(),W()).optional()}),$E=K({type:X(`resource`),resource:J([mE,gE]),annotations:vE.optional(),_meta:Y(V(),W()).optional()}),eD=yE.extend({type:X(`resource_link`)}),tD=J([YE,XE,ZE,eD,$E]),nD=K({role:_E,content:tD}),rD=IT.extend({description:V().optional(),messages:G(nD)}),iD=FT.extend({method:X(`notifications/prompts/list_changed`),params:PT.optional()}),aD=K({title:V().optional(),readOnlyHint:U().optional(),destructiveHint:U().optional(),idempotentHint:U().optional(),openWorldHint:U().optional()}),oD=K({taskSupport:Bp([`required`,`optional`,`forbidden`]).optional()}),sD=K({...qT.shape,...KT.shape,description:V().optional(),inputSchema:K({type:X(`object`),properties:Y(V(),wT).optional(),required:G(V()).optional()}).catchall(W()),outputSchema:q({$schema:V().optional()}).optional(),annotations:aD.optional(),execution:oD.optional(),_meta:Y(V(),W()).optional()}),cD=dE.extend({method:X(`tools/list`)}),lD=fE.extend({tools:G(sD)}),uD=IT.extend({content:G(tD).default([]),structuredContent:W().optional(),isError:U().optional()});uD.or(IT.extend({toolResult:W()}));var dD=MT.extend({name:V(),arguments:Y(V(),W()).optional()}),fD=NT.extend({method:X(`tools/call`),params:dD}),pD=FT.extend({method:X(`notifications/tools/list_changed`),params:PT.optional()});K({autoRefresh:U().default(!0),debounceMs:H().int().nonnegative().default(300)});var mD=Bp([`debug`,`info`,`notice`,`warning`,`error`,`critical`,`alert`,`emergency`]),hD=jT.extend({level:mD}),gD=NT.extend({method:X(`logging/setLevel`),params:hD}),_D=PT.extend({level:mD,logger:V().optional(),data:W()}),vD=FT.extend({method:X(`notifications/message`),params:_D}),yD=K({hints:G(K({name:V().optional()})).optional(),costPriority:H().min(0).max(1).optional(),speedPriority:H().min(0).max(1).optional(),intelligencePriority:H().min(0).max(1).optional()}),bD=K({mode:Bp([`auto`,`required`,`none`]).optional()}),xD=K({type:X(`tool_result`),toolUseId:V().describe(`The unique identifier for the corresponding tool call.`),content:G(tD),structuredContent:W().optional(),isError:U().optional(),_meta:Y(V(),W()).optional()}),SD=Fp(`type`,[YE,XE,ZE]),CD=Fp(`type`,[YE,XE,ZE,QE,xD]),wD=K({role:_E,content:J([CD,G(CD)]),_meta:Y(V(),W()).optional()}),TD=MT.extend({messages:G(wD),modelPreferences:yD.optional(),systemPrompt:V().optional(),includeContext:Bp([`none`,`thisServer`,`allServers`]).optional(),temperature:H().optional(),maxTokens:H().int(),stopSequences:G(V()).optional(),metadata:TT.optional(),tools:G(sD).optional(),toolChoice:bD.optional()}),ED=NT.extend({method:X(`sampling/createMessage`),params:TD}),DD=IT.extend({model:V(),stopReason:Z(Bp([`endTurn`,`stopSequence`,`maxTokens`]).or(V())),role:_E,content:SD}),OD=IT.extend({model:V(),stopReason:Z(Bp([`endTurn`,`stopSequence`,`maxTokens`,`toolUse`]).or(V())),role:_E,content:J([CD,G(CD)])}),kD=K({type:X(`boolean`),title:V().optional(),description:V().optional(),default:U().optional()}),AD=K({type:X(`string`),title:V().optional(),description:V().optional(),minLength:H().optional(),maxLength:H().optional(),format:Bp([`email`,`uri`,`date`,`date-time`]).optional(),default:V().optional()}),jD=K({type:Bp([`number`,`integer`]),title:V().optional(),description:V().optional(),minimum:H().optional(),maximum:H().optional(),default:H().optional()}),MD=K({type:X(`string`),title:V().optional(),description:V().optional(),enum:G(V()),default:V().optional()}),ND=K({type:X(`string`),title:V().optional(),description:V().optional(),oneOf:G(K({const:V(),title:V()})),default:V().optional()}),PD=J([J([K({type:X(`string`),title:V().optional(),description:V().optional(),enum:G(V()),enumNames:G(V()).optional(),default:V().optional()}),J([MD,ND]),J([K({type:X(`array`),title:V().optional(),description:V().optional(),minItems:H().optional(),maxItems:H().optional(),items:K({type:X(`string`),enum:G(V())}),default:G(V()).optional()}),K({type:X(`array`),title:V().optional(),description:V().optional(),minItems:H().optional(),maxItems:H().optional(),items:K({anyOf:G(K({const:V(),title:V()}))}),default:G(V()).optional()})])]),kD,AD,jD]),FD=J([MT.extend({mode:X(`form`).optional(),message:V(),requestedSchema:K({type:X(`object`),properties:Y(V(),PD),required:G(V()).optional()}).catchall(W())}),MT.extend({mode:X(`url`),message:V(),elicitationId:V(),url:V().url()})]),ID=NT.extend({method:X(`elicitation/create`),params:FD}),LD=PT.extend({elicitationId:V()}),RD=FT.extend({method:X(`notifications/elicitation/complete`),params:LD}),zD=IT.extend({action:Bp([`accept`,`decline`,`cancel`]),content:pm(e=>e===null?void 0:e,Y(V(),J([V(),H(),U(),G(V())])).optional())}),BD=K({type:X(`ref/resource`),uri:V()}),VD=K({type:X(`ref/prompt`),name:V()}),HD=jT.extend({ref:J([VD,BD]),argument:K({name:V(),value:V()}),context:K({arguments:Y(V(),V()).optional()}).optional()}),UD=NT.extend({method:X(`completion/complete`),params:HD}),WD=IT.extend({completion:q({values:G(V()).max(100),total:Z(H().int()),hasMore:Z(U())})}),GD=K({uri:V().startsWith(`file://`),name:V().optional(),_meta:Y(V(),W()).optional()}),KD=NT.extend({method:X(`roots/list`),params:jT.optional()}),qD=IT.extend({roots:G(GD)}),JD=FT.extend({method:X(`notifications/roots/list_changed`),params:PT.optional()});q({ttl:H().optional(),pollInterval:H().optional()});var YD=Bp([`working`,`input_required`,`completed`,`failed`,`cancelled`]),XD=K({taskId:V(),status:YD,ttl:J([H(),Tp()]),createdAt:V(),lastUpdatedAt:V(),pollInterval:Z(H()),statusMessage:Z(V())});IT.extend({task:XD});var ZD=PT.merge(XD);FT.extend({method:X(`notifications/tasks/status`),params:ZD}),NT.extend({method:X(`tasks/get`),params:jT.extend({taskId:V()})}),IT.merge(XD),NT.extend({method:X(`tasks/result`),params:jT.extend({taskId:V()})}),IT.loose(),dE.extend({method:X(`tasks/list`)}),fE.extend({tasks:G(XD)}),NT.extend({method:X(`tasks/cancel`),params:jT.extend({taskId:V()})}),IT.merge(XD),J([oE,eE,iE,UD,gD,JE,GE,xE,CE,DE,jE,NE,IE,fD,cD]),J([GT,lE,rE,JD]),J([UT,DD,OD,zD,qD]),J([oE,ED,ID,KD]),J([GT,lE,vD,HE,kE,pD,iD,RE,RD]),J([UT,nE,aE,WD,rD,KE,SE,wE,OE,uD,lD,BE]);var QD=np().superRefine((e,t)=>{if(!URL.canParse(e))return t.addIssue({code:mm.custom,message:`URL must be parseable`,fatal:!0}),Yo}).refine(e=>{let t=new URL(e);return t.protocol!==`javascript:`&&t.protocol!==`data:`&&t.protocol!==`vbscript:`},{message:`URL cannot use javascript:, data:, or vbscript: scheme`});q({resource:V().url(),authorization_servers:G(QD).optional(),jwks_uri:V().url().optional(),scopes_supported:G(V()).optional(),bearer_methods_supported:G(V()).optional(),resource_signing_alg_values_supported:G(V()).optional(),resource_name:V().optional(),resource_documentation:V().optional(),resource_policy_uri:V().url().optional(),resource_tos_uri:V().url().optional(),tls_client_certificate_bound_access_tokens:U().optional(),authorization_details_types_supported:G(V()).optional(),dpop_signing_alg_values_supported:G(V()).optional(),dpop_bound_access_tokens_required:U().optional()});var $D=q({issuer:V(),authorization_endpoint:QD,token_endpoint:QD,registration_endpoint:QD.optional(),scopes_supported:G(V()).optional(),response_types_supported:G(V()),response_modes_supported:G(V()).optional(),grant_types_supported:G(V()).optional(),token_endpoint_auth_methods_supported:G(V()).optional(),token_endpoint_auth_signing_alg_values_supported:G(V()).optional(),service_documentation:QD.optional(),revocation_endpoint:QD.optional(),revocation_endpoint_auth_methods_supported:G(V()).optional(),revocation_endpoint_auth_signing_alg_values_supported:G(V()).optional(),introspection_endpoint:V().optional(),introspection_endpoint_auth_methods_supported:G(V()).optional(),introspection_endpoint_auth_signing_alg_values_supported:G(V()).optional(),code_challenge_methods_supported:G(V()).optional(),client_id_metadata_document_supported:U().optional(),authorization_response_iss_parameter_supported:U().optional().catch(void 0)});K({...q({issuer:V(),authorization_endpoint:QD,token_endpoint:QD,userinfo_endpoint:QD.optional(),jwks_uri:QD,registration_endpoint:QD.optional(),scopes_supported:G(V()).optional(),response_types_supported:G(V()),response_modes_supported:G(V()).optional(),grant_types_supported:G(V()).optional(),acr_values_supported:G(V()).optional(),subject_types_supported:G(V()),id_token_signing_alg_values_supported:G(V()),id_token_encryption_alg_values_supported:G(V()).optional(),id_token_encryption_enc_values_supported:G(V()).optional(),userinfo_signing_alg_values_supported:G(V()).optional(),userinfo_encryption_alg_values_supported:G(V()).optional(),userinfo_encryption_enc_values_supported:G(V()).optional(),request_object_signing_alg_values_supported:G(V()).optional(),request_object_encryption_alg_values_supported:G(V()).optional(),request_object_encryption_enc_values_supported:G(V()).optional(),token_endpoint_auth_methods_supported:G(V()).optional(),token_endpoint_auth_signing_alg_values_supported:G(V()).optional(),display_values_supported:G(V()).optional(),claim_types_supported:G(V()).optional(),claims_supported:G(V()).optional(),service_documentation:V().optional(),claims_locales_supported:G(V()).optional(),ui_locales_supported:G(V()).optional(),claims_parameter_supported:U().optional(),request_parameter_supported:U().optional(),request_uri_parameter_supported:U().optional(),require_request_uri_registration:U().optional(),op_policy_uri:QD.optional(),op_tos_uri:QD.optional(),client_id_metadata_document_supported:U().optional(),authorization_response_iss_parameter_supported:U().optional().catch(void 0)}).shape,...$D.pick({code_challenge_methods_supported:!0}).shape}),K({access_token:V(),id_token:V().optional(),token_type:V(),expires_in:gm().optional(),scope:V().optional(),refresh_token:V().optional()}).strip(),K({issued_token_type:X(`urn:ietf:params:oauth:token-type:id-jag`),access_token:V(),token_type:V().optional(),expires_in:H().optional(),scope:V().optional()}).strip(),K({error:V(),error_description:V().optional(),error_uri:V().optional()});var eO=QD.optional().or(X(``).transform(()=>void 0)),tO=K({redirect_uris:G(QD),token_endpoint_auth_method:V().optional(),grant_types:G(V()).optional(),response_types:G(V()).optional(),application_type:V().optional(),client_name:V().optional(),client_uri:QD.optional(),logo_uri:eO,scope:V().optional(),contacts:G(V()).optional(),tos_uri:eO,policy_uri:V().optional(),jwks_uri:QD.optional(),jwks:Dp().optional(),software_id:V().optional(),software_version:V().optional(),software_statement:V().optional()}).strip(),nO=K({client_id:V(),client_secret:V().optional(),client_id_issued_at:H().optional(),client_secret_expires_at:H().optional()}).strip();tO.merge(nO),K({error:V(),error_description:V().optional()}).strip(),K({token:V(),token_type_hint:V().optional()}).strip(),(t=>typeof e<`u`?e:typeof Proxy<`u`?new Proxy(t,{get:(t,n)=>(typeof e<`u`?e:t)[n]}):t)(function(t){if(typeof e<`u`)return e.apply(this,arguments);throw Error(`Dynamic require of "`+t+`" is not supported`)});var rO=class{_eventSlots=new Map;setHandler(e,t){let n=this._ensureEventSlot(e);n.onHandler&&t&&console.warn(`[MCP Apps] on${String(e)} handler replaced. Use addEventListener("${String(e)}", …) to add multiple listeners without replacing.`),n.onHandler=t}getHandler(e){return this._eventSlots.get(e)?.onHandler}addEventListener(e,t){this._ensureEventSlot(e).listeners.push(t)}removeEventListener(e,t){let n=this._eventSlots.get(e);if(!n)return;let r=n.listeners.indexOf(t);r!==-1&&n.listeners.splice(r,1)}dispatch(e,t){let n=this._eventSlots.get(e);if(n){n.onHandler?.(t);for(let e of[...n.listeners])e(t)}}_ensureEventSlot(e){let t=this._eventSlots.get(e);return t||(t={listeners:[]},this._eventSlots.set(e,t)),t}},iO=`2026-01-26`,aO=J([X(`light`),X(`dark`)]).describe(`Color theme preference for the host environment.`),oO=J([X(`inline`),X(`fullscreen`),X(`pip`)]).describe(`Display mode for UI presentation.`),sO=Y(J([X(`--color-background-primary`),X(`--color-background-secondary`),X(`--color-background-tertiary`),X(`--color-background-inverse`),X(`--color-background-ghost`),X(`--color-background-info`),X(`--color-background-danger`),X(`--color-background-success`),X(`--color-background-warning`),X(`--color-background-disabled`),X(`--color-text-primary`),X(`--color-text-secondary`),X(`--color-text-tertiary`),X(`--color-text-inverse`),X(`--color-text-ghost`),X(`--color-text-info`),X(`--color-text-danger`),X(`--color-text-success`),X(`--color-text-warning`),X(`--color-text-disabled`),X(`--color-border-primary`),X(`--color-border-secondary`),X(`--color-border-tertiary`),X(`--color-border-inverse`),X(`--color-border-ghost`),X(`--color-border-info`),X(`--color-border-danger`),X(`--color-border-success`),X(`--color-border-warning`),X(`--color-border-disabled`),X(`--color-ring-primary`),X(`--color-ring-secondary`),X(`--color-ring-inverse`),X(`--color-ring-info`),X(`--color-ring-danger`),X(`--color-ring-success`),X(`--color-ring-warning`),X(`--font-sans`),X(`--font-mono`),X(`--font-weight-normal`),X(`--font-weight-medium`),X(`--font-weight-semibold`),X(`--font-weight-bold`),X(`--font-text-xs-size`),X(`--font-text-sm-size`),X(`--font-text-md-size`),X(`--font-text-lg-size`),X(`--font-heading-xs-size`),X(`--font-heading-sm-size`),X(`--font-heading-md-size`),X(`--font-heading-lg-size`),X(`--font-heading-xl-size`),X(`--font-heading-2xl-size`),X(`--font-heading-3xl-size`),X(`--font-text-xs-line-height`),X(`--font-text-sm-line-height`),X(`--font-text-md-line-height`),X(`--font-text-lg-line-height`),X(`--font-heading-xs-line-height`),X(`--font-heading-sm-line-height`),X(`--font-heading-md-line-height`),X(`--font-heading-lg-line-height`),X(`--font-heading-xl-line-height`),X(`--font-heading-2xl-line-height`),X(`--font-heading-3xl-line-height`),X(`--border-radius-xs`),X(`--border-radius-sm`),X(`--border-radius-md`),X(`--border-radius-lg`),X(`--border-radius-xl`),X(`--border-radius-full`),X(`--border-width-regular`),X(`--shadow-hairline`),X(`--shadow-sm`),X(`--shadow-md`),X(`--shadow-lg`)]).describe(`CSS variable keys available to MCP apps for theming.`).describe(`Style variables for theming MCP apps.
|
|
157
|
+
`&&r++}}return[t,n]}var aS=class extends TransformStream{constructor({onError:e,onRetry:t,onComment:n}={}){let r;super({start(i){r=rS({onEvent:e=>{i.enqueue(e)},onError(t){e===`terminate`?i.error(t):typeof e==`function`&&e(t)},onRetry:t,onComment:n})},transform(e){r.feed(e)}})}},oS=`modulepreload`,sS=function(e){return`/inspector/`+e},cS={},lS=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=sS(t,n),t in cS)return;cS[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:oS,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},uS=class extends Error{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.OAuthClientFlowError`})}static[Symbol.hasInstance](e){return K_(this,e)}static isInstance(e){if(typeof this!=`function`)throw TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return K_(this,e)}constructor(e){super(e),this.name=new.target.name,G_(this,new.target)}},dS=class extends uS{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.IssuerMismatchError`})}kind;expected;received;constructor(e,t,n){super(`Issuer mismatch in ${e===`metadata`?`authorization server metadata (RFC 8414 §3.3)`:`authorization response (RFC 9207)`}: expected ${JSON.stringify(t)}, received ${JSON.stringify(n)}`),this.kind=e,this.expected=t,this.received=n}},fS=class extends uS{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.RegistrationRejectedError`})}status;body;submittedMetadata;constructor(e){super(`Dynamic Client Registration rejected (HTTP ${e.status}): ${e.body}`),this.status=e.status,this.body=e.body,this.submittedMetadata=e.submittedMetadata}},pS=class extends uS{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.InsecureTokenEndpointError`})}tokenEndpoint;constructor(e){super(`Refusing to send credentials to non-https token endpoint '${e}'. OAuth token requests MUST use TLS (localhost / 127.0.0.1 / ::1 are exempt).`),this.tokenEndpoint=e}},mS=class extends uS{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.AuthorizationServerMismatchError`})}constructor(e,t){super(`Authorization server changed between redirect and callback (redirected to ${JSON.stringify(e)}, callback resolved ${JSON.stringify(t)}); refusing to send authorization_code/code_verifier to a different token endpoint`),this.recordedIssuer=e,this.currentIssuer=t}},hS=class extends uS{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.InsufficientScopeError`})}requiredScope;resourceMetadataUrl;errorDescription;constructor(e){super(`Insufficient scope${e.requiredScope?`: required "${e.requiredScope}"`:``}`),this.requiredScope=e.requiredScope,this.resourceMetadataUrl=e.resourceMetadataUrl,this.errorDescription=e.errorDescription}};function gS(e,t,n){if(e!==void 0)return e.issuer===void 0?(n?.canPersistStamp!==!1&&console.warn(`[mcp-sdk] SEP-2352: stored OAuth credential has no 'issuer' stamp (pre-upgrade storage or provider not round-tripping the value). SEP-2352 isolation is inactive for this read; ensure your provider round-trips the issuer field.`),e):_S(e.issuer,t)?e:void 0}function _S(e,t){return e===t||e.endsWith(`/`)&&e.slice(0,-1)===t||t.endsWith(`/`)&&t.slice(0,-1)===e}function vS(e){if(e==null)return!1;let t=e;return typeof t.tokens==`function`&&typeof t.clientInformation==`function`}async function yS(e,t,n){let{resourceMetadataUrl:r,scope:i}=KS(t.response);if(await BS(e,{serverUrl:t.serverUrl,resourceMetadataUrl:r,scope:i,fetchFn:t.fetchFn,...n})!==`AUTHORIZED`)throw new xS}function bS(e,t){return{token:async()=>(await e.tokens())?.access_token,onUnauthorized:async n=>yS(e,n,t)}}var xS=class extends Error{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.UnauthorizedError`})}static[Symbol.hasInstance](e){return K_(this,e)}static isInstance(e){if(typeof this!=`function`)throw TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return K_(this,e)}constructor(e){super(e??`Unauthorized`),this.name=`UnauthorizedError`,G_(this,new.target)}};function SS(e){return e?.authorization_response_iss_parameter_supported===!0}function CS({iss:e,expectedIssuer:t,issParameterSupported:n}){if(t!==void 0){if(e===void 0){if(n)throw new dS(`authorization_response`,t,void 0);return}if(e!==t)throw new dS(`authorization_response`,t,e)}}function wS(...e){let t=new Set;for(let n of e)if(n)for(let e of n.split(/\s+/))e&&t.add(e);return t.size>0?[...t].join(` `):void 0}function TS(e,t){if(!e)return!1;let n=new Set((t??``).split(/\s+/).filter(Boolean));for(let t of e.split(/\s+/))if(t&&!n.has(t))return!0;return!1}async function ES(e,t,n,r,i){if(typeof e==`string`)return{authorizationCode:e,iss:t};let a=e.get(`iss`)??void 0,o=e.get(`code`);if(o)return{authorizationCode:o,iss:a};let s=(await n.discoveryState?.())?.authorizationServerMetadata;if(!s)try{s=(await nC(r,i)).authorizationServerMetadata}catch{s=void 0}if(!s)throw new xS(`Authorization callback failed and the issuer could not be verified`);CS({iss:a,expectedIssuer:s.issuer,issParameterSupported:SS(s)});let c=e.get(`error`);throw c?new J_(c,e.get(`error_description`)??c,e.get(`error_uri`)??void 0):new xS("Authorization callback contained neither `code` nor `error`")}function DS(e){return[`client_secret_basic`,`client_secret_post`,`none`].includes(e)}var OS=`code`,kS=`S256`;function AS(e,t){let n=e.client_secret!==void 0;return`token_endpoint_auth_method`in e&&e.token_endpoint_auth_method&&DS(e.token_endpoint_auth_method)&&(t.length===0||t.includes(e.token_endpoint_auth_method))?e.token_endpoint_auth_method:t.length===0?n?`client_secret_basic`:`none`:n&&t.includes(`client_secret_basic`)?`client_secret_basic`:n&&t.includes(`client_secret_post`)?`client_secret_post`:t.includes(`none`)?`none`:n?`client_secret_post`:`none`}function jS(e,t,n,r){let{client_id:i,client_secret:a}=t;switch(e){case`client_secret_basic`:MS(i,a,n);return;case`client_secret_post`:NS(i,a,r);return;case`none`:PS(i,r);return;default:throw Error(`Unsupported client authentication method: ${e}`)}}function MS(e,t,n){if(!t)throw Error(`client_secret_basic authentication requires a client_secret`);let r=btoa(`${e}:${t}`);n.set(`Authorization`,`Basic ${r}`)}function NS(e,t,n){n.set(`client_id`,e),t&&n.set(`client_secret`,t)}function PS(e,t){t.set(`client_id`,e)}function FS(e){return e===`localhost`||e===`127.0.0.1`||e===`[::1]`||e===`::1`}function IS(e){let t=new URL(String(e));if(t.protocol!==`https:`&&!FS(t.hostname))throw new pS(t.href);return t}function LS(e){for(let t of e??[]){let e;try{e=new URL(t)}catch{continue}if(e.protocol!==`http:`&&e.protocol!==`https:`||FS(e.hostname))return`native`}return`web`}function RS(e){let t=e.clientMetadata;return{...t,grant_types:t.grant_types??(e.redirectUrl===void 0?void 0:[`authorization_code`,`refresh_token`]),application_type:t.application_type??LS(t.redirect_uris)}}async function zS(e){let t=e instanceof Response?e.status:void 0,n=e instanceof Response?await e.text():e;try{let e=L_.parse(JSON.parse(n));return J_.fromResponse(e)}catch(e){let r=`${t?`HTTP ${t}: `:``}Invalid OAuth error response: ${e}. Raw body: ${n}`;return new J_(q_.ServerError,r)}}async function BS(e,t){try{return await HS(e,t)}catch(n){if(n instanceof J_){if(n.code===q_.InvalidClient||n.code===q_.UnauthorizedClient)return await e.invalidateCredentials?.(`client`),await e.invalidateCredentials?.(`tokens`),await HS(e,t);if(n.code===q_.InvalidGrant)return await e.invalidateCredentials?.(`tokens`),await HS(e,t)}throw n}}function VS(e){let{requestedScope:t,resourceMetadata:n,authServerMetadata:r,clientMetadata:i}=e,a=t||n?.scopes_supported?.join(` `)||i.scope;return a&&r?.scopes_supported?.includes(`offline_access`)&&!a.split(` `).includes(`offline_access`)&&i.grant_types?.includes(`refresh_token`)&&(a=`${a} offline_access`),a}async function HS(e,{serverUrl:t,authorizationCode:n,iss:r,scope:i,resourceMetadataUrl:a,fetchFn:o,skipIssuerMetadataValidation:s,forceReauthorization:c}){let l=RS(e),u=await e.discoveryState?.(),d,f,p,m,h=a;if(!h&&u?.resourceMetadataUrl&&(h=new URL(u.resourceMetadataUrl)),u?.authorizationServerUrl){if(f=u.authorizationServerUrl,d=u.resourceMetadata,p=u.authorizationServerMetadata??await tC(f,{fetchFn:o,skipIssuerValidation:s}),!d)try{d=await JS(t,{resourceMetadataUrl:h},o)}catch(e){if(e instanceof TypeError)throw e}(p!==u.authorizationServerMetadata||d!==u.resourceMetadata)&&await e.saveDiscoveryState?.({authorizationServerUrl:String(f),resourceMetadataUrl:h?.toString(),resourceMetadata:d,authorizationServerMetadata:p})}else{let e=await nC(t,{resourceMetadataUrl:h,fetchFn:o,skipIssuerMetadataValidation:s});f=e.authorizationServerUrl,p=e.authorizationServerMetadata,d=e.resourceMetadata,m={authorizationServerUrl:String(f),resourceMetadataUrl:h?.toString(),resourceMetadata:d,authorizationServerMetadata:p}}let g=p?.issuer??String(f),_={issuer:g};if(await e.saveAuthorizationServerUrl?.(g),n!==void 0){let t=u?.authorizationServerMetadata?.issuer??u?.authorizationServerUrl;if(t===void 0){if(e.saveDiscoveryState!==void 0)throw new mS(`discoveryState was not available on the callback leg; ensure your provider persists discoveryState alongside codeVerifier`,g);console.warn(`[mcp-sdk] OAuthClientProvider does not implement saveDiscoveryState()/discoveryState(); the SEP-2352 callback-leg authorization-server binding cannot be checked. Implement discoveryState (persist alongside codeVerifier) — see docs/migration/upgrade-to-v2.md §SEP-2352.`)}else if(!_S(t,g))throw new mS(t,g)}m&&await e.saveDiscoveryState?.(m);let v=await GS(t,e,d);v&&await e.saveResourceUrl?.(String(v));let y=VS({requestedScope:i,resourceMetadata:d,authServerMetadata:p,clientMetadata:e.clientMetadata}),b=await Promise.resolve(e.clientInformation(_)),x=gS(b,g,{canPersistStamp:e.saveClientInformation!==void 0});if(x===void 0&&b?.issuer&&e.saveClientInformation===void 0)throw new mS(b.issuer,g);if(x&&x.issuer===void 0&&(x={...x,issuer:g},await e.saveClientInformation?.(x,_)),!x){if(n!==void 0)throw Error(`Existing OAuth client information is required when exchanging an authorization code`);let t=p?.client_id_metadata_document_supported===!0,r=e.clientMetadataUrl;if(r&&!WS(r))throw new J_(q_.InvalidClientMetadata,`clientMetadataUrl must be a valid HTTPS URL with a non-root pathname, got: ${r}`);if(t&&r)x={client_id:r,issuer:g},await e.saveClientInformation?.(x,_);else{if(!e.saveClientInformation)throw Error(`OAuth client information must be saveable for dynamic registration`);x={...await cC(f,{metadata:p,clientMetadata:l,scope:y,fetchFn:o}),issuer:g},await e.saveClientInformation(x,_)}}let S=!e.redirectUrl;if(n!==void 0||S){n!==void 0&&CS({iss:r,expectedIssuer:p?.issuer,issParameterSupported:SS(p)});let t=await sC(e,f,{metadata:p,resource:v,authorizationCode:n,iss:r,scope:y,fetchFn:o});return await e.saveTokens({...t,issuer:g},_),`AUTHORIZED`}let C=gS(await e.tokens(_),g);if(C&&C.issuer===void 0&&(C={...C,issuer:g},await e.saveTokens(C,_)),C?.refresh_token&&!c)try{let t=await oC(f,{metadata:p,clientInformation:x,refreshToken:C.refresh_token,resource:v,addClientAuthentication:e.addClientAuthentication,fetchFn:o});return await e.saveTokens({...t,issuer:g},_),`AUTHORIZED`}catch(e){if(e instanceof pS||!(!(e instanceof J_)||e.code===q_.ServerError))throw e}let w=e.state?await e.state():void 0,{authorizationUrl:T,codeVerifier:E}=await rC(f,{metadata:p,clientInformation:x,state:w,redirectUrl:e.redirectUrl,scope:y,resource:v});return await e.saveCodeVerifier(E),await e.redirectToAuthorization(T),`REDIRECT`}function US(e){if(e&&!WS(e))throw new J_(q_.InvalidClientMetadata,`clientMetadataUrl must be a valid HTTPS URL with a non-root pathname, got: ${e}`)}function WS(e){if(!e)return!1;try{let t=new URL(e);return t.protocol===`https:`&&t.pathname!==`/`}catch{return!1}}async function GS(e,t,n){let r=Q_(e);if(t.validateResourceURL)return await t.validateResourceURL(r,n?.resource);if(n){if(!$_({requestedResource:r,configuredResource:n.resource}))throw Error(`Protected resource ${n.resource} does not match expected ${r} (or origin)`);return new URL(n.resource)}}function KS(e){let t=e.headers.get(`WWW-Authenticate`);if(!t)return{};let[n,r]=t.split(` `);if(n?.toLowerCase()!==`bearer`||!r)return{};let i=qS(e,`resource_metadata`)||void 0,a;if(i)try{a=new URL(i)}catch{}let o=qS(e,`scope`)||void 0,s=qS(e,`error`)||void 0,c=qS(e,`error_description`)||void 0;return{resourceMetadataUrl:a,scope:o,error:s,errorDescription:c}}function qS(e,t){let n=e.headers.get(`WWW-Authenticate`);if(!n)return null;let r=new RegExp(String.raw`${t}=(?:"([^"]+)"|([^\s,]+))`),i=n.match(r);if(i){let e=i[1]||i[2];if(e)return e}return null}async function JS(e,t,n=fetch){let r=await $S(e,`oauth-protected-resource`,n,{protocolVersion:t?.protocolVersion,metadataUrl:t?.resourceMetadataUrl});if(!r||r.status===404)throw await r?.text?.().catch(()=>{}),Error(`Resource server does not implement OAuth 2.0 Protected Resource Metadata.`);if(!r.ok)throw await r.text?.().catch(()=>{}),Error(`HTTP ${r.status} trying to load well-known OAuth protected resource metadata.`);return j_.parse(await r.json())}async function YS(e,t,n=fetch){try{return await n(e,{headers:t})}catch(r){if(!(r instanceof TypeError))throw r;if(t)try{return await n(e,{})}catch(e){if(!(e instanceof TypeError))throw e;return}return}}function XS(e,t=``,n={}){return t.endsWith(`/`)&&(t=t.slice(0,-1)),n.prependPathname?`${t}/.well-known/${e}`:`/.well-known/${e}${t}`}async function ZS(e,t,n=fetch){return await YS(e,{"MCP-Protocol-Version":t},n)}function QS(e,t){return e?t===`/`?!1:e.status>=400&&e.status<500||e.status===502:!0}async function $S(e,t,n,r){let i=new URL(e),a=r?.protocolVersion??`2025-11-25`,o;if(r?.metadataUrl)o=new URL(r.metadataUrl);else{let e=XS(t,i.pathname);o=new URL(e,r?.metadataServerUrl??i),o.search=i.search}let s=await ZS(o,a,n);return!r?.metadataUrl&&QS(s,i.pathname)&&(s=await ZS(new URL(`/.well-known/${t}`,i),a,n)),s}function eC(e){let t=typeof e==`string`?new URL(e):e,n=t.pathname!==`/`,r=[];if(!n)return r.push({url:new URL(`/.well-known/oauth-authorization-server`,t.origin),type:`oauth`},{url:new URL(`/.well-known/openid-configuration`,t.origin),type:`oidc`}),r;let i=t.pathname;return i.endsWith(`/`)&&(i=i.slice(0,-1)),r.push({url:new URL(`/.well-known/oauth-authorization-server${i}`,t.origin),type:`oauth`},{url:new URL(`/.well-known/openid-configuration${i}`,t.origin),type:`oidc`},{url:new URL(`${i}/.well-known/openid-configuration`,t.origin),type:`oidc`}),r}async function tC(e,{fetchFn:t=fetch,protocolVersion:n=_m,skipIssuerValidation:r=!1}={}){let i={"MCP-Protocol-Version":n,Accept:`application/json`},a=eC(e);for(let{url:n,type:o}of a){let a=await YS(n,i,t);if(!a)continue;if(!a.ok){if(await a.text?.().catch(()=>{}),a.status>=400&&a.status<500||a.status===502)continue;throw Error(`HTTP ${a.status} trying to load ${o===`oauth`?`OAuth`:`OpenID provider`} metadata from ${n}`)}let s=o===`oauth`?M_.parse(await a.json()):P_.parse(await a.json());if(!r){let t=typeof e==`string`?e:e.href;if(!(s.issuer===t||t.endsWith(`/`)&&s.issuer===t.slice(0,-1)))throw new dS(`metadata`,t,s.issuer)}return s}}async function nC(e,t){let n,r;try{n=await JS(e,{resourceMetadataUrl:t?.resourceMetadataUrl},t?.fetchFn),n.authorization_servers&&n.authorization_servers.length>0&&(r=n.authorization_servers[0])}catch(e){if(e instanceof TypeError)throw e}r||=String(new URL(`/`,e));let i=await tC(r,{fetchFn:t?.fetchFn,skipIssuerValidation:t?.skipIssuerMetadataValidation});return{authorizationServerUrl:r,authorizationServerMetadata:i,resourceMetadata:n}}async function rC(e,{metadata:t,clientInformation:n,redirectUrl:r,scope:i,state:a,resource:o}){let s;if(t){if(s=new URL(t.authorization_endpoint),!t.response_types_supported.includes(OS))throw Error(`Incompatible auth server: does not support response type ${OS}`);if(t.code_challenge_methods_supported&&!t.code_challenge_methods_supported.includes(kS))throw Error(`Incompatible auth server: does not support code challenge method ${kS}`)}else s=new URL(`/authorize`,e);let c=await eS(),l=c.code_verifier,u=c.code_challenge;return s.searchParams.set(`response_type`,OS),s.searchParams.set(`client_id`,n.client_id),s.searchParams.set(`code_challenge`,u),s.searchParams.set(`code_challenge_method`,kS),s.searchParams.set(`redirect_uri`,String(r)),a&&s.searchParams.set(`state`,a),i&&s.searchParams.set(`scope`,i),i?.split(` `).includes(`offline_access`)&&s.searchParams.append(`prompt`,`consent`),o&&s.searchParams.set(`resource`,o.href),{authorizationUrl:s,codeVerifier:l}}function iC(e,t,n){return new URLSearchParams({grant_type:`authorization_code`,code:e,code_verifier:t,redirect_uri:String(n)})}async function aC(e,{metadata:t,tokenRequestParams:n,clientInformation:r,addClientAuthentication:i,resource:a,fetchFn:o}){let s=IS(t?.token_endpoint??new URL(`/token`,e)),c=new Headers({"Content-Type":`application/x-www-form-urlencoded`,Accept:`application/json`});a&&n.set(`resource`,a.href),i?await i(c,n,s,t):r&&jS(AS(r,t?.token_endpoint_auth_methods_supported??[]),r,c,n);let l=await(o??fetch)(s,{method:`POST`,headers:c,body:n});if(!l.ok)throw await zS(l);let u=await l.json();try{return F_.parse(u)}catch(e){throw typeof u==`object`&&u&&`error`in u?await zS(JSON.stringify(u)):e}}async function oC(e,{metadata:t,clientInformation:n,refreshToken:r,resource:i,addClientAuthentication:a,fetchFn:o}){return{refresh_token:r,...await aC(e,{metadata:t,tokenRequestParams:new URLSearchParams({grant_type:`refresh_token`,refresh_token:r}),clientInformation:n,addClientAuthentication:a,resource:i,fetchFn:o})}}async function sC(e,t,{metadata:n,resource:r,authorizationCode:i,iss:a,scope:o,fetchFn:s}={}){i!==void 0&&CS({iss:a,expectedIssuer:n?.issuer,issParameterSupported:SS(n)});let c=o??e.clientMetadata.scope,l;if(e.prepareTokenRequest&&(l=await e.prepareTokenRequest(c)),!l){if(!i)throw Error(`Either provider.prepareTokenRequest() or authorizationCode is required`);if(!e.redirectUrl)throw Error(`redirectUrl is required for authorization_code flow`);l=iC(i,await e.codeVerifier(),e.redirectUrl)}let u=await e.clientInformation({issuer:n?.issuer??String(t)});return aC(t,{metadata:n,tokenRequestParams:l,clientInformation:u??void 0,addClientAuthentication:e.addClientAuthentication,resource:r,fetchFn:s})}async function cC(e,{metadata:t,clientMetadata:n,scope:r,fetchFn:i}){let a;if(t){if(!t.registration_endpoint)throw Error(`Incompatible auth server: does not support dynamic client registration`);a=new URL(t.registration_endpoint)}else a=new URL(`/register`,e);let o={...n,...r===void 0?{}:{scope:r}},s=await(i??fetch)(a,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(o)});if(!s.ok)throw new fS({status:s.status,body:await s.text(),submittedMetadata:o});return V_.parse(await s.json())}var lC=new Set([`tools/list`,`prompts/list`,`resources/list`,`resources/templates/list`,`server/discover`]),uC=class{_entries=new Map;_maxEntries;_stamp=0;_cappedSize=0;constructor(e){this._maxEntries=e?.maxEntries??512}get size(){return this._entries.size}get(e){return this._entries.get(dC(e))}set(e,t){let n=dC(e),r=lC.has(e.method),i=!this._entries.has(n);if(!r&&i&&this._maxEntries>0&&this._cappedSize>=this._maxEntries){for(let e of this._entries.keys())if(!lC.has(e.slice(0,e.indexOf(`\0`)))){this._entries.delete(e),this._cappedSize--;break}}let a=++this._stamp;return this._entries.set(n,{...t,stamp:a}),i&&!r&&this._cappedSize++,a}delete(e){this._entries.delete(dC(e))&&!lC.has(e.method)&&this._cappedSize--}evict(e){let t=`${e}\0`,n=lC.has(e);for(let e of this._entries.keys())e.startsWith(t)&&(this._entries.delete(e),n||this._cappedSize--)}clear(){this._entries.clear(),this._cappedSize=0}};function dC(e){return`${e.method}\0${JSON.stringify([e.partition??``,e.params??``])}`}function fC(e,t){return t===void 0?e:`${e}\0${t}`}var pC=864e5,mC=class{_evictionGeneration=new Map;_toolIndex;_toolOutputValidatorIndex;_serverIdentity=``;constructor(e,t,n=()=>{},r=``,i=Date.now){this._store=e,this._isUserSupplied=t,this._reportError=n,this._cachePartition=r,this._now=i}now(){return this._now()}setServerIdentity(e){this._serverIdentity=e}_partitionFor(e){return JSON.stringify([this._serverIdentity,e===`public`?``:this._cachePartition])}async _probe(e,t){let n={method:e,params:t??``},r=this._partitionFor(`private`),i=await this._store.get({...n,partition:r});if(i!==void 0)return i;let a=this._partitionFor(`public`);if(a===r)return;let o=await this._store.get({...n,partition:a});return o?.scope===`public`?o:void 0}async evict(e){this._evictionGeneration.set(e,(this._evictionGeneration.get(e)??0)+1),await this._deleteBoth(e,``)}async _deleteBoth(e,t){let n=this._partitionFor(`private`),r=this._partitionFor(`public`);try{await this._store.delete({method:e,params:t,partition:n})}catch(e){this._reportError(e)}if(r!==n)try{await this._store.delete({method:e,params:t,partition:r})}catch(e){this._reportError(e)}}async evictKey(e,t){let n=fC(e,t),r=this._evictionGeneration.get(n);r!==void 0&&this._evictionGeneration.set(n,r+1),await this._deleteBoth(e,t)}captureGeneration(e,t){let n=fC(e,t),r=this._evictionGeneration.get(n)??0;return this._evictionGeneration.set(n,r),r}async write(e,t,n,r){if((this._evictionGeneration.get(fC(e,r?.params))??0)!==n)return;let i=r?.params??``,a=this._partitionFor(`private`),o=this._partitionFor(`public`),s=(r?.scope??`private`)===`public`?o:a;try{await this._store.set({method:e,params:i,partition:s},{value:hC(t),expiresAt:r?.expiresAt,scope:r?.scope})}catch(e){this._reportError(e)}if(o!==a)try{await this._store.delete({method:e,params:i,partition:s===a?o:a})}catch(e){this._reportError(e)}}async read(e,t){let n=await this._probe(e,t);if(!(n?.expiresAt===void 0||!(n.expiresAt>this.now())))try{let e=JSON.parse(n.value);if(typeof e!=`object`||!e||Array.isArray(e))throw TypeError(`cached document is not an object`);return{value:e}}catch(n){this._reportError(n),await this._deleteBoth(e,t??``);return}}resetForReconnect(){this._isUserSupplied||this._store.clear(),this._evictionGeneration.clear(),this._toolIndex=void 0,this._toolOutputValidatorIndex=void 0,this._serverIdentity=``}async toolDefinition(e){let t=await this._probe(`tools/list`);if(t===void 0){this._toolIndex=void 0;return}if(this._toolIndex?.stamp!==t.stamp){let e=this._decodeListTools(t),n=new Map;if(e!==void 0)for(let t of e.tools)n.set(t.name,t);this._toolIndex={stamp:t.stamp,byName:n}}return this._toolIndex.byName.get(e)}async outputValidator(e,t){let n=await this._probe(`tools/list`);if(n===void 0){this._toolOutputValidatorIndex=void 0;return}if(this._toolOutputValidatorIndex?.stamp!==n.stamp){let e=this._decodeListTools(n)??{tools:[]},r=new Map;for(let n of e.tools){let e=t(n);e!==void 0&&r.set(n.name,e)}this._toolOutputValidatorIndex={stamp:n.stamp,byName:r}}return this._toolOutputValidatorIndex.byName.get(e)}_decodeListTools(e){try{let t=JSON.parse(e.value);if(!Array.isArray(t?.tools)||!t.tools.every(e=>typeof e==`object`&&!!e))throw TypeError(`cached tools/list document has a malformed tools array`);return t}catch(e){this._reportError(e);return}}};function hC(e){let t;try{t=JSON.stringify(e)}catch(e){throw TypeError(`cache value is not JSON-serializable: ${e instanceof Error?e.message:String(e)}`)}if(typeof t!=`string`)throw TypeError(`cache value is not JSON-serializable: it has no JSON representation`);return t}var gC=-32022,_C=new Set([-32001,-32020,-32021]);function vC(e,t){switch(e.kind){case`result`:return yC(e.result,t);case`rpc-error`:return bC(e,t);case`http-error`:return xC(e,t);case`network-error`:return SC(e.error,t);case`auth-required`:return{kind:`error`,error:e.error};case`timeout`:return t.transportKind===`stdio`?{kind:`legacy`}:{kind:`error`,error:new X_(Y_.RequestTimeout,`Version negotiation probe timed out after ${e.timeoutMs}ms`,{timeout:e.timeoutMs})}}}function yC(e,t){let n=wy(Cy).validateResult(`server/discover`,e);if(!n.ok)return{kind:`legacy`};let r=n.value.supportedVersions,i=t.clientModernVersions.find(e=>r.includes(e));return i===void 0?t.fallbackAvailable?{kind:`legacy`}:{kind:`error`,error:new Gv({supported:[...r],requested:t.requestedVersion})}:{kind:`modern`,version:i,discover:n.value}}function bC(e,t){let{code:n,message:r,data:i}=e;if(n===gC){let e=TC(i);if(e===void 0)return{kind:`legacy`};let n=new Gv({supported:e,requested:EC(i)??t.requestedVersion},r),a=iv(e),o=t.clientModernVersions.find(e=>a.includes(e));return o===void 0?a.length>0?{kind:`error`,error:n}:t.fallbackAvailable?{kind:`legacy`}:{kind:`error`,error:n}:{kind:`corrective`,version:o,error:n}}return _C.has(n),{kind:`legacy`}}function xC(e,t){let n=DC(e.body);return n===void 0?{kind:`legacy`}:bC(n,t)}function SC(e,t){return t.environment===`browser`&&CC(e)?{kind:`legacy`}:{kind:`error`,error:new X_(Y_.EraNegotiationFailed,`Version negotiation probe failed: ${wC(e)}`,{cause:e})}}function CC(e){return e instanceof TypeError||e instanceof Error&&e.name===`TypeError`}function wC(e){return e instanceof Error?e.message:String(e)}function TC(e){if(typeof e!=`object`||!e)return;let t=e.supported;if(!(!Array.isArray(t)||t.length===0||!t.every(e=>typeof e==`string`)))return t}function EC(e){if(typeof e!=`object`||!e)return;let t=e.requested;return typeof t==`string`?t:void 0}function DC(e){if(e===void 0||e===``)return;let t;try{t=JSON.parse(e)}catch{return}if(typeof t!=`object`||!t)return;let n=t.error;if(typeof n!=`object`||!n)return;let{code:r,message:i,data:a}=n;if(typeof r==`number`)return{code:r,message:typeof i==`string`?i:``,data:a}}var OC=`legacy`;function kC(e,t){let n=e?.mode??OC;if(n===`legacy`)return{kind:`legacy`};let r=e?.probe??{};if(typeof n==`object`){if(!nv(n.pin))throw TypeError(`versionNegotiation: { pin: '${n.pin}' } is not a modern protocol revision — pinning is for 2026-07-28 and later; omit versionNegotiation (or use mode: 'legacy') for 2025-era servers.`);return{kind:`pin`,version:n.pin,probe:r}}let i=t?iv(t):[];return{kind:`auto`,modernVersions:i.length>0?i:[...tv],fallbackAvailable:t?rv(t).length>0:!0,probe:r}}function AC(){let e=globalThis;return e.window!==void 0&&e.document!==void 0?`browser`:`node`}function jC(e){return`stderr`in e&&`pid`in e?`stdio`:`http`}var MC=class e{_pending;_probeCounter=0;_savedOnMessage;_savedOnError;_savedOnClose;_closeDelivered=!1;constructor(e){this._transport=e,this._savedOnMessage=e.onmessage,this._savedOnError=e.onerror,this._savedOnClose=e.onclose}static async open(t){let n=new e(t);t.onmessage=e=>{let t=n._pending;if(t!==void 0&&(My(e)||Ny(e))&&e.id===t.id){n._pending=void 0,My(e)?t.resolve({kind:`response`,result:e.result}):t.resolve({kind:`response`,error:e.error});return}},t.onerror=e=>{n._savedOnError?.(e)},t.onclose=()=>{let e=n._pending;e!==void 0&&(n._pending=void 0,e.resolve({kind:`closed`})),n._closeDelivered=!0,n._savedOnClose?.()};try{await t.start()}catch(e){throw n.detach(),e}return n}async exchange(e,t){let n=`server-discover-probe-${++this._probeCounter}`;return new Promise(r=>{let i=!1,a=e=>{i||(i=!0,clearTimeout(o),this._pending?.id===n&&(this._pending=void 0),r(e))},o=setTimeout(()=>a({kind:`timeout`}),t);this._pending={id:n,resolve:a},this._transport.send(e(n)).catch(e=>a({kind:`send-error`,error:e}))})}detach(){this._pending=void 0,this._transport.onmessage=this._savedOnMessage,this._transport.onerror=this._savedOnError,this._transport.onclose=this._closeDelivered?void 0:this._savedOnClose}release(){this.detach();let e=this._transport,t=e.start.bind(e),n=!0;e.start=async()=>{if(n){n=!1,e.start=t;return}return t()}}};function NC(e,t,n,r){return{jsonrpc:`2.0`,id:e,method:`server/discover`,params:{_meta:wy(t).outboundEnvelope({protocolVersion:t,clientInfo:n,clientCapabilities:r})}}}function PC(e,t){switch(e.kind){case`response`:return e.error===void 0?{kind:`result`,result:e.result}:{kind:`rpc-error`,...e.error};case`send-error`:{let t=e.error;if(t instanceof Z_){let e=t.data?.text;return{kind:`http-error`,status:t.data.status,body:typeof e==`string`?e:void 0}}return t instanceof xS||t instanceof Error&&t.name===`UnauthorizedError`?{kind:`auth-required`,error:t}:{kind:`network-error`,error:t}}case`closed`:return{kind:`network-error`,error:Error(`Connection closed during the version negotiation probe`)};case`timeout`:return{kind:`timeout`,timeoutMs:t}}}async function FC(e,t){let n=e.probe.timeoutMs??t.defaultTimeoutMs,r=Math.max(0,e.probe.maxRetries??0),i=e.kind===`pin`?[e.version]:e.modernVersions,a=e.kind===`auto`&&e.fallbackAvailable,o=await MC.open(t.transport),s=async()=>{let s=i[0],c=!1,l=r;for(;;){let r=await o.exchange(e=>NC(e,s,t.clientInfo,t.capabilities),n);if(r.kind===`timeout`&&l>0){l--;continue}let u=vC(PC(r,n),{clientModernVersions:i,requestedVersion:s,fallbackAvailable:a,environment:t.environment,transportKind:t.transportKind});switch(u.kind){case`modern`:return{era:`modern`,version:u.version,discover:u.discover};case`corrective`:if(c)throw u.error;c=!0,s=u.version;continue;case`legacy`:if(e.kind===`pin`)throw new X_(Y_.EraNegotiationFailed,`Version negotiation failed: the server did not offer pinned protocol version ${e.version} via server/discover (no fallback in pin mode)`);if(!e.fallbackAvailable)throw new X_(Y_.EraNegotiationFailed,`Version negotiation failed: the server gave no modern evidence and this client supports no pre-2026-07-28 protocol version to fall back to`);return{era:`legacy`};case`error`:throw u.error}}},c;try{c=await s()}catch(e){throw o.detach(),e}return o.release(),c}function IC(e,t){if(!(!e||typeof t!=`object`||!t)){if(e.type===`object`&&e.properties&&typeof e.properties==`object`){let n=t,r=e.properties;for(let e of Object.keys(r)){let t=r[e];n[e]===void 0&&Object.prototype.hasOwnProperty.call(t,`default`)&&(n[e]=t.default),n[e]!==void 0&&IC(t,n[e])}}if(Array.isArray(e.anyOf))for(let n of e.anyOf)typeof n!=`boolean`&&IC(n,t);if(Array.isArray(e.oneOf))for(let n of e.oneOf)typeof n!=`boolean`&&IC(n,t)}}function LC(e){if(!e)return{supportsFormMode:!1,supportsUrlMode:!1};let t=e.form!==void 0,n=e.url!==void 0;return{supportsFormMode:t||!t&&!n,supportsUrlMode:n}}var RC={"notifications/tools/list_changed":[`tools/list`],"notifications/prompts/list_changed":[`prompts/list`],"notifications/resources/list_changed":[`resources/list`,`resources/templates/list`]},zC=64,BC=class extends Jb{_serverCapabilities;_serverVersion;_capabilities;_instructions;_jsonSchemaValidator;_cache;_defaultCacheTtlMs;_listMaxPages;_listChangedDebounceTimers=new Map;_listChangedConfig;_enforceStrictCapabilities;_versionNegotiation;_supportedProtocolVersionsOption;_inputRequiredDriverConfig;_listenState=new Map;_nextListenId=0;_autoOpenedSubscription;_discoverResult;_resetConnectionState(){if(this._negotiatedProtocolVersion=void 0,this._serverCapabilities=void 0,this._serverVersion=void 0,this._instructions=void 0,this._discoverResult=void 0,this._autoOpenedSubscription=void 0,this._listenState.size>0){let e=new X_(Y_.ConnectionClosed,`subscriptions/listen: client reconnected or closed; subscription state from the previous connection was reset`);for(let t of this._listenState.values())t.settle({cause:`remote`,error:e})}this._listenState.clear();for(let e of this._listChangedDebounceTimers.values())clearTimeout(e);this._listChangedDebounceTimers.clear(),this._cache.resetForReconnect()}async close(){try{await super.close()}finally{this._resetConnectionState()}}constructor(e,t){super(t),this._clientInfo=e,this._capabilities=t?.capabilities?{...t.capabilities}:{},this._jsonSchemaValidator=t?.jsonSchemaValidator??new Jx,this._enforceStrictCapabilities=t?.enforceStrictCapabilities??!1,this._versionNegotiation=t?.versionNegotiation,this._supportedProtocolVersionsOption=t?.supportedProtocolVersions,this._inputRequiredDriverConfig=kb(t?.inputRequired),this._cache=new mC(t?.responseCacheStore??new uC,t?.responseCacheStore!==void 0,e=>this._reportStoreError(e),t?.cachePartition??``),this._defaultCacheTtlMs=t?.defaultCacheTtlMs??0,this._listMaxPages=t?.listMaxPages??zC,t?.listChanged&&(this._listChangedConfig=t.listChanged)}buildContext(e,t){return e}_shouldDropInbound(e){if(this._negotiatedProtocolVersion!==void 0&&nv(this._negotiatedProtocolVersion)&&Ay(e))return`drop`}_outboundMetaEnvelope(){let e=this._negotiatedProtocolVersion;if(e!==void 0)return this._wireCodec().outboundEnvelope({protocolVersion:e,clientInfo:this._clientInfo,clientCapabilities:this._capabilities})}_resolveNonCompleteResult(e,t){return this._inputRequiredDriverConfig.autoFulfill?rx({getRequestHandler:e=>this._getRequestHandler(e),buildContext:e=>this.buildContext(e,void 0),sessionId:this.transport?.sessionId},this._inputRequiredDriverConfig,e,t):Promise.reject(new X_(Y_.UnsupportedResultType,`Unsupported result type 'input_required' for ${t.request.method}: multi-round-trip auto-fulfilment is not enabled on this instance — pass allowInputRequired: true to handle it manually, or enable inputRequired.autoFulfill`,{resultType:`input_required`,method:t.request.method}))}_setupListChangedHandlers(e){e.tools&&this._serverCapabilities?.tools?.listChanged&&this._setupListChangedHandler(`tools`,`notifications/tools/list_changed`,e.tools,async()=>(await this.listTools(void 0,{cacheMode:`refresh`})).tools),e.prompts&&this._serverCapabilities?.prompts?.listChanged&&this._setupListChangedHandler(`prompts`,`notifications/prompts/list_changed`,e.prompts,async()=>(await this.listPrompts(void 0,{cacheMode:`refresh`})).prompts),e.resources&&this._serverCapabilities?.resources?.listChanged&&this._setupListChangedHandler(`resources`,`notifications/resources/list_changed`,e.resources,async()=>(await this.listResources(void 0,{cacheMode:`refresh`})).resources)}registerCapabilities(e){if(this.transport)throw Error(`Cannot register capabilities after connecting to transport`);this._capabilities=Xb(this._capabilities,e)}setVersionNegotiation(e){if(this.transport)throw Error(`Cannot configure version negotiation after connecting to transport`);this._versionNegotiation=e}_wrapHandler(e,t){return e===`elicitation/create`?async(e,n)=>{let r=wy(this._negotiatedProtocolVersion),i=r.validateRequest(`elicitation/create`,e);if(!i.ok&&i.reason===`not-in-era`&&(i=r.validateInputRequest(`elicitation/create`,e)),!i.ok)throw new Hv(i.reason===`not-in-era`?Vv.InternalError:Vv.InvalidParams,i.reason===`not-in-era`?`No wire schema for elicitation/create in the resolved era`:`Invalid elicitation request: ${i.message}`);let{params:a}=i.value;a.mode=a.mode??`form`;let{supportsFormMode:o,supportsUrlMode:s}=LC(this._capabilities.elicitation);if(a.mode===`form`&&!o)throw new Hv(Vv.InvalidParams,`Client does not support form-mode elicitation requests`);if(a.mode===`url`&&!s)throw new Hv(Vv.InvalidParams,`Client does not support URL-mode elicitation requests`);let c=await t(e,n),l=r.validateResult(`elicitation/create`,c);if(!l.ok&&l.reason===`not-in-era`&&(l=r.validateInputResponse(`elicitation/create`,c)),!l.ok)throw new Hv(l.reason===`not-in-era`?Vv.InternalError:Vv.InvalidParams,l.reason===`not-in-era`?`No wire schema for elicitation/create in the resolved era`:`Invalid elicitation result: ${l.message}`);let u=l.value,d=a.mode===`form`?a.requestedSchema:void 0;if(a.mode===`form`&&u.action===`accept`&&u.content&&d&&this._capabilities.elicitation?.form?.applyDefaults)try{IC(d,u.content)}catch{}return u}:e===`sampling/createMessage`?async(e,n)=>{let r=wy(this._negotiatedProtocolVersion),i=r.validateRequest(`sampling/createMessage`,e);if(!i.ok&&i.reason===`not-in-era`&&(i=r.validateInputRequest(`sampling/createMessage`,e)),!i.ok)throw new Hv(i.reason===`not-in-era`?Vv.InternalError:Vv.InvalidParams,i.reason===`not-in-era`?`No wire schema for sampling/createMessage in the resolved era`:`Invalid sampling request: ${i.message}`);let{params:a}=i.value,o=await t(e,n),s=!!(a.tools||a.toolChoice),c=r.samplingResultVariant(s,o);if(!c.ok&&c.reason===`not-in-era`&&(c=r.validateInputResponse(`sampling/createMessage`,o)),!c.ok)throw new Hv(c.reason===`not-in-era`?Vv.InternalError:Vv.InvalidParams,c.reason===`not-in-era`?`No result schema for sampling/createMessage in the resolved era`:`Invalid sampling result: ${c.message}`);return c.value}:t}assertCapability(e,t){if(!this._serverCapabilities?.[e])throw new X_(Y_.CapabilityNotSupported,`Server does not support ${e} (required for ${t})`)}async connect(e,t){if(t?.prior!==void 0)return this._connectFromPrior(e,t.prior);let n=kC(this._versionNegotiation,this._supportedProtocolVersionsOption);if(n.kind!==`legacy`)return this._connectNegotiated(e,n,t);if(await super.connect(e),e.sessionId!==void 0){let t=this._negotiatedProtocolVersion;t!==void 0&&e.setProtocolVersion?.(t);return}this._resetConnectionState(),await this._legacyHandshake(e,t)}async _legacyHandshake(e,t){let n=rv(this._supportedProtocolVersions);try{let r=n[0];if(r===void 0)throw new X_(Y_.EraNegotiationFailed,`Cannot run the initialize handshake: supportedProtocolVersions contains no pre-2026-07-28 protocol version`);let i=await this.request({method:`initialize`,params:{protocolVersion:r,capabilities:this._capabilities,clientInfo:this._clientInfo}},t);if(i===void 0)throw Error(`Server sent invalid initialize result: ${i}`);if(!n.includes(i.protocolVersion))throw Error(`Server's protocol version is not supported: ${i.protocolVersion}`);this._serverCapabilities=i.capabilities,this._serverVersion=i.serverInfo,this._cache.setServerIdentity(this._deriveServerIdentity(e)),e.setProtocolVersion&&e.setProtocolVersion(i.protocolVersion),this._instructions=i.instructions,await this.notification({method:`notifications/initialized`}),this._negotiatedProtocolVersion=i.protocolVersion,this._listChangedConfig&&this._setupListChangedHandlers(this._listChangedConfig)}catch(e){throw this.close(),e}}async _connectNegotiated(e,t,n){if(e.sessionId!==void 0){await super.connect(e);let t=this._negotiatedProtocolVersion;t!==void 0&&e.setProtocolVersion&&e.setProtocolVersion(t);return}this._resetConnectionState();let r;try{r=await FC(t,{transport:e,clientInfo:this._clientInfo,capabilities:this._capabilities,environment:AC(),transportKind:jC(e),defaultTimeoutMs:n?.timeout??6e4})}catch(t){throw await e.close().catch(()=>{}),t}if(await super.connect(e),r.era===`legacy`){await this._legacyHandshake(e,n);return}if(this._serverCapabilities=r.discover.capabilities,this._serverVersion=r.discover.serverInfo,this._cache.setServerIdentity(this._deriveServerIdentity(e)),this._instructions=r.discover.instructions,this._discoverResult=r.discover,this._negotiatedProtocolVersion=r.version,e.setProtocolVersion&&e.setProtocolVersion(r.version),this._listChangedConfig){let e=this._listChangedConfig,t=this._serverCapabilities,r={...e.tools&&t?.tools?.listChanged&&{tools:e.tools},...e.prompts&&t?.prompts?.listChanged&&{prompts:e.prompts},...e.resources&&t?.resources?.listChanged&&{resources:e.resources}},i=!0;try{this._setupListChangedHandlers(r)}catch(e){i=!1,this.onerror?.(e instanceof Error?e:Error(String(e)))}let a=i?{...r.tools&&{toolsListChanged:!0},...r.prompts&&{promptsListChanged:!0},...r.resources&&{resourcesListChanged:!0}}:{};if(Object.keys(a).length>0){let e=new AbortController,t=()=>e.abort(n?.signal?.reason);n?.signal?.aborted&&t(),n?.signal?.addEventListener(`abort`,t);try{this._autoOpenedSubscription=await this.listen(a,{timeout:n?.timeout,signal:e.signal})}catch(e){if(n?.signal?.aborted)throw await this.close().catch(()=>{}),e;this.onerror?.(e instanceof Error?e:Error(String(e)))}finally{n?.signal?.removeEventListener(`abort`,t)}}}}async _connectFromPrior(e,t){this._resetConnectionState();let n=this._supportedProtocolVersionsOption,r=(n&&iv(n).length>0?iv(n):tv).find(e=>t.supportedVersions.includes(e));if(r===void 0)throw new X_(Y_.EraNegotiationFailed,`connect({ prior }) requires a 2026-07-28+ mutual protocol version; the supplied DiscoverResult and this client's supportedProtocolVersions have no modern overlap. Use versionNegotiation: { mode: 'auto' } for legacy-era fallback.`);if(await super.connect(e),this._discoverResult=t,this._serverCapabilities=t.capabilities,this._serverVersion=t.serverInfo,this._cache.setServerIdentity(this._deriveServerIdentity(e)),this._instructions=t.instructions,this._negotiatedProtocolVersion=r,e.setProtocolVersion?.(r),this._listChangedConfig)try{this._setupListChangedHandlers(this._listChangedConfig)}catch(e){this.onerror?.(e instanceof Error?e:Error(String(e)))}}getServerCapabilities(){return this._serverCapabilities}getServerVersion(){return this._serverVersion}_deriveServerIdentity(e){let t=this._serverVersion;return t===void 0?e.sessionId??``:`${t.name}@${t.version}`}getNegotiatedProtocolVersion(){return this._negotiatedProtocolVersion}getProtocolEra(){let e=this._negotiatedProtocolVersion;if(e!==void 0)return nv(e)?`modern`:`legacy`}getInstructions(){return this._instructions}getDiscoverResult(){return this._discoverResult}assertCapabilityForMethod(e){switch(e){case`logging/setLevel`:if(!this._serverCapabilities?.logging)throw new X_(Y_.CapabilityNotSupported,`Server does not support logging (required for ${e})`);break;case`prompts/get`:case`prompts/list`:if(!this._serverCapabilities?.prompts)throw new X_(Y_.CapabilityNotSupported,`Server does not support prompts (required for ${e})`);break;case`resources/list`:case`resources/templates/list`:case`resources/read`:case`resources/subscribe`:case`resources/unsubscribe`:if(!this._serverCapabilities?.resources)throw new X_(Y_.CapabilityNotSupported,`Server does not support resources (required for ${e})`);if(e===`resources/subscribe`&&!this._serverCapabilities.resources.subscribe)throw new X_(Y_.CapabilityNotSupported,`Server does not support resource subscriptions (required for ${e})`);break;case`tools/call`:case`tools/list`:if(!this._serverCapabilities?.tools)throw new X_(Y_.CapabilityNotSupported,`Server does not support tools (required for ${e})`);break;case`completion/complete`:if(!this._serverCapabilities?.completions)throw new X_(Y_.CapabilityNotSupported,`Server does not support completions (required for ${e})`);break;case`initialize`:break;case`server/discover`:break;case`ping`:break}}assertNotificationCapability(e){switch(e){case`notifications/roots/list_changed`:if(!this._capabilities.roots?.listChanged)throw new X_(Y_.CapabilityNotSupported,`Client does not support roots list changed notifications (required for ${e})`);break;case`notifications/initialized`:break;case`notifications/cancelled`:break;case`notifications/progress`:break}}assertRequestHandlerCapability(e){switch(e){case`sampling/createMessage`:if(!this._capabilities.sampling)throw new X_(Y_.CapabilityNotSupported,`Client does not support sampling capability (required for ${e})`);break;case`elicitation/create`:if(!this._capabilities.elicitation)throw new X_(Y_.CapabilityNotSupported,`Client does not support elicitation capability (required for ${e})`);break;case`roots/list`:if(!this._capabilities.roots)throw new X_(Y_.CapabilityNotSupported,`Client does not support roots capability (required for ${e})`);break;case`ping`:break}}async ping(e){return this.request({method:`ping`},e)}async discover(e){let t=await this._requestWithSchema({method:`server/discover`},lh,e);return this._discoverResult=t,t}async complete(e,t){return this.request({method:`completion/complete`,params:e},t)}async setLoggingLevel(e,t){return this.request({method:`logging/setLevel`,params:{level:e}},t)}async getPrompt(e,t){return this.request({method:`prompts/get`,params:e},t)}async listPrompts(e,t){if(!this._serverCapabilities?.prompts&&!this._enforceStrictCapabilities)return console.debug(`Client.listPrompts() called but server does not advertise prompts capability - returning empty list`),{prompts:[]};if(e?.cursor!==void 0)return this.request({method:`prompts/list`,params:e},t);let n=await this._serveFromCache(`prompts/list`,void 0,t);return n===void 0?this._listAllPages(`prompts/list`,e,t,(e,t)=>e.prompts.push(...t.prompts)):n}async listResources(e,t){if(!this._serverCapabilities?.resources&&!this._enforceStrictCapabilities)return console.debug(`Client.listResources() called but server does not advertise resources capability - returning empty list`),{resources:[]};if(e?.cursor!==void 0)return this.request({method:`resources/list`,params:e},t);let n=await this._serveFromCache(`resources/list`,void 0,t);return n===void 0?this._listAllPages(`resources/list`,e,t,(e,t)=>e.resources.push(...t.resources)):n}async listResourceTemplates(e,t){if(!this._serverCapabilities?.resources&&!this._enforceStrictCapabilities)return console.debug(`Client.listResourceTemplates() called but server does not advertise resources capability - returning empty list`),{resourceTemplates:[]};if(e?.cursor!==void 0)return this.request({method:`resources/templates/list`,params:e},t);let n=await this._serveFromCache(`resources/templates/list`,void 0,t);return n===void 0?this._listAllPages(`resources/templates/list`,e,t,(e,t)=>e.resourceTemplates.push(...t.resourceTemplates)):n}async _listAllPages(e,t,n,r,i){let a=n?.cacheMode===`bypass`,o=this._cache.captureGeneration(e),s=await this.request({method:e,...t&&{params:{...t}}},n),c=s.nextCursor,l=new Set,u=1;for(;c!==void 0&&!l.has(c);){if(this._listMaxPages!==0&&u>=this._listMaxPages)throw new X_(Y_.ListPaginationExceeded,`${e}: exceeded listMaxPages (${this._listMaxPages}); server pagination did not terminate`,{method:e,listMaxPages:this._listMaxPages});l.add(c);let i=await this.request({method:e,params:{...t,cursor:c}},n);r(s,i),c=i.nextCursor,u++}return delete s.nextCursor,i?.(s),a||await this._cache.write(e,s,o,this._freshness(s)),s}_freshness(e,t){let n=e,r=typeof n.ttlMs==`number`?n.ttlMs:this._defaultCacheTtlMs,i=n.cacheScope===`public`?`public`:`private`;return{expiresAt:this._cache.now()+Math.min(Math.max(0,r),pC),scope:i,params:t}}async _serveFromCache(e,t,n){if(n?.cacheMode===`bypass`||n?.cacheMode===`refresh`)return;let r=await this._cache.read(e,t).catch(e=>void this._reportStoreError(e));if(r!==void 0){if(n?.signal?.aborted){let e=n.signal.reason;throw e instanceof X_?e:new X_(Y_.RequestTimeout,String(e))}return r.value}}_reportStoreError(e){this.onerror?.(e instanceof Error?e:Error(String(e)))}_compileOutputValidator(e){if(e.outputSchema)try{return{ok:!0,validator:this._jsonSchemaValidator.getValidator(e.outputSchema)}}catch(e){return{ok:!1,compileError:e}}}async _resolveXMcpHeaderScan(e,t){let n=t??await this._cache.toolDefinition(e);return n===void 0?void 0:Vy(n.inputSchema)}async readResource(e,t){let n=await this._serveFromCache(`resources/read`,e.uri,t);if(n!==void 0)return n;let r=this._cache.captureGeneration(`resources/read`,e.uri),i=await this.request({method:`resources/read`,params:e},t);if(t?.cacheMode!==`bypass`){let n=this._freshness(i,e.uri);n.expiresAt>this._cache.now()?await this._cache.write(`resources/read`,i,r,n):t?.cacheMode===`refresh`&&await this._cache.evictKey(`resources/read`,e.uri)}return i}async subscribeResource(e,t){return this.request({method:`resources/subscribe`,params:e},t)}async unsubscribeResource(e,t){return this.request({method:`resources/unsubscribe`,params:e},t)}async listen(e,t){if(this.transport===void 0)throw new X_(Y_.NotConnected,`Not connected`);let n=this._negotiatedProtocolVersion;if(n===void 0||!nv(n))throw new X_(Y_.MethodNotSupportedByProtocolVersion,`subscriptions/listen requires a 2026-07-28-era connection (negotiated: ${n??`none`}). On a 2025-era connection, change notifications are delivered unsolicited: use ClientOptions.listChanged and resources/subscribe instead.`,{method:`subscriptions/listen`,protocolVersion:n});if(t?.signal?.aborted){let e=t.signal.reason;throw e instanceof X_?e:new X_(Y_.RequestTimeout,String(e))}let r=new AbortController,i=`listen:${this._nextListenId++}`,a=`opening`,o,s,c,l,u=new Promise((e,t)=>{c=e,l=t}),d,f=new Promise(e=>{d=e}),p=e=>{if(a===`closed`)return;let n=a===`opening`;if(o!==void 0&&(clearTimeout(o),o=void 0),`ack`in e){a=`open`,c(e.ack);return}a=`closed`,s!==void 0&&t?.signal?.removeEventListener(`abort`,s),this._listenState.delete(i),r.abort(),d(e.cause),n&&l(e.error??new X_(Y_.ConnectionClosed,`subscriptions/listen closed before the server acknowledged`))},m=async()=>{r.abort(),await this.notification({method:`notifications/cancelled`,params:{requestId:i}}).catch(()=>{})},h=async()=>{a!==`closed`&&(p({cause:`local`}),await m())};this._listenState.set(i,{settle:p});let g=t?.timeout??6e4;if(o=setTimeout(()=>{p({cause:`remote`,error:new X_(Y_.RequestTimeout,`subscriptions/listen ack timed out`,{timeout:g})}),m().catch(()=>{})},g),t?.signal){let e=t.signal;s=()=>{if(a===`closed`)return;let t=e.reason;p({cause:`local`,error:t instanceof Error?t:Error(String(t??`Aborted`))}),m().catch(()=>{})},e.addEventListener(`abort`,s,{once:!0})}let _={jsonrpc:`2.0`,id:i,method:`subscriptions/listen`,params:{_meta:{...this._outboundMetaEnvelope()},notifications:e}};try{await this.transport.send(_,{requestSignal:r.signal,onRequestStreamEnd:()=>p({cause:`remote`,error:Error(`subscriptions/listen: stream ended`)})})}catch(e){p({cause:`remote`,error:e instanceof Error?e:Error(String(e))})}return{honoredFilter:await u,close:h,closed:f}}get autoOpenedSubscription(){return this._autoOpenedSubscription}_onnotification(e,t){let n=Object.hasOwn(RC,e.method)?RC[e.method]:void 0;if(e.method===`notifications/resources/updated`){let t=e.params?.uri;typeof t==`string`&&this._cache.evictKey(`resources/read`,t)}else if(n!==void 0)for(let e of n)this._cache.evict(e);if(e.method===`notifications/subscriptions/acknowledged`){let t=e.params?._meta?.[Cm],n=typeof t==`string`?this._listenState.get(t):void 0;if(n!==void 0){let t=this._wireCodec().validateNotification(`notifications/subscriptions/acknowledged`,e);n.settle({ack:t.ok?t.value.params.notifications:{}});return}}if(e.method===`notifications/cancelled`){let t=e.params?.requestId,n=typeof t==`string`?this._listenState.get(t):void 0;if(n!==void 0){n.settle({cause:`remote`,error:Error(`subscriptions/listen: server cancelled the subscription`)});return}}super._onnotification(e,t)}_onresponse(e){let t=e.id,n=typeof t==`string`?this._listenState.get(t):void 0;if(n!==void 0){Ny(e)?n.settle({cause:`remote`,error:Hv.fromError(e.error.code,e.error.message,e.error.data)}):n.settle({cause:`graceful`,error:new X_(Y_.ConnectionClosed,`subscriptions/listen: server closed the subscription gracefully before acknowledging`)});return}super._onresponse(e)}_onclose(){if(this._listenState.size>0){let e=new X_(Y_.ConnectionClosed,`Connection closed`);for(let t of this._listenState.values())t.settle({cause:`remote`,error:e});this._listenState.clear()}super._onclose()}async callTool(e,t){let n=this.getProtocolEra()===`modern`&&AC()!==`browser`,r=async()=>{if(!n)return t;let r;try{r=await this._resolveXMcpHeaderScan(e.name,t?.toolDefinition)}catch(e){this._reportStoreError(e)}if(!r?.valid||r.declarations.length===0)return t;let i=Qy(r.declarations,e.arguments);return Object.keys(i).length===0?t:{...t,headers:{...t?.headers,...i}}},i=t?.toolDefinition===void 0?await this._cache.outputValidator(e.name,e=>this._compileOutputValidator(e)).catch(e=>void this._reportStoreError(e)):this._compileOutputValidator(t.toolDefinition),a=()=>{if(i===void 0||i.ok)return;let t=i.compileError,n=(t instanceof Error?t.message:String(t)).slice(0,200);throw new Hv(Vv.InvalidParams,`Tool '${e.name}' has an invalid outputSchema: ${n}`)};a();let o;try{o=await this.request({method:`tools/call`,params:e},await r())}catch(s){let c=s instanceof Hv&&s.code===-32020;if(!n||!c||t?.toolDefinition!==void 0)throw s;let l={signal:t?.signal,timeout:t?.timeout,cacheMode:`refresh`};await this._cache.evict(`tools/list`),await this.listTools(void 0,l).catch(e=>this._reportStoreError(e)),i=await this._cache.outputValidator(e.name,e=>this._compileOutputValidator(e)).catch(e=>void this._reportStoreError(e)),a(),o=await this.request({method:`tools/call`,params:e},await r())}let s=i!==void 0&&i.ok?i.validator:void 0;if(s){if(o.structuredContent===void 0&&!o.isError)throw new Hv(Vv.InvalidRequest,`Tool ${e.name} has an output schema but did not return structured content`);if(o.structuredContent!==void 0&&!o.isError)try{let e=s(o.structuredContent);if(!e.valid)throw new Hv(Vv.InvalidParams,`Structured content does not match the tool's output schema: ${e.errorMessage}`)}catch(e){throw e instanceof Hv?e:new Hv(Vv.InvalidParams,`Failed to validate structured content: ${e instanceof Error?e.message:String(e)}`)}}return o}async listTools(e,t){if(!this._serverCapabilities?.tools&&!this._enforceStrictCapabilities)return console.debug(`Client.listTools() called but server does not advertise tools capability - returning empty list`),{tools:[]};if(e?.cursor!==void 0){let n=await this.request({method:`tools/list`,params:e},t);return this._excludeInvalidXMcpHeaderTools(n),n}let n=await this._serveFromCache(`tools/list`,void 0,t);return n===void 0?this._listAllPages(`tools/list`,e,t,(e,t)=>e.tools.push(...t.tools),e=>this._excludeInvalidXMcpHeaderTools(e)):n}_excludeInvalidXMcpHeaderTools(e){if(this.getProtocolEra()!==`modern`||!this.transport||jC(this.transport)===`stdio`)return;let t=e.tools.filter(e=>{let t=Vy(e.inputSchema);return t.valid?!0:(console.warn(`[mcp-sdk] excluding tool '${e.name}' from tools/list: invalid x-mcp-header declaration — ${t.reason}`),!1)});t.length!==e.tools.length&&(e.tools=t)}_setupListChangedHandler(e,t,n,r){let i=$y(yg,n);if(!i.success)throw Error(`Invalid ${e} listChanged options: ${i.error.message}`);if(typeof n.onChanged!=`function`)throw TypeError(`Invalid ${e} listChanged options: onChanged must be a function`);let{autoRefresh:a,debounceMs:o}=i.data,{onChanged:s}=n,c=async()=>{if(!a){s(null,null);return}try{s(null,await r())}catch(e){s(e instanceof Error?e:Error(String(e)),null)}};this.setNotificationHandler(t,()=>{if(o){let t=this._listChangedDebounceTimers.get(e);t&&clearTimeout(t);let n=setTimeout(c,o);this._listChangedDebounceTimers.set(e,n)}else c()})}async sendRootsListChanged(){return this.notification({method:`notifications/roots/list_changed`})}};(class extends Error{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.SseError`})}static[Symbol.hasInstance](e){return K_(this,e)}static isInstance(e){if(typeof this!=`function`)throw TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return K_(this,e)}constructor(e,t,n){super(`SSE error: ${t}`),this.code=e,this.event=n,G_(this,new.target)}});var VC=1,HC={initialReconnectionDelay:1e3,maxReconnectionDelay:3e4,reconnectionDelayGrowFactor:1.5,maxRetries:2},UC=new Set([`authorization`,`content-type`,`mcp-protocol-version`,`mcp-method`,`mcp-name`,`mcp-session-id`]);function WC(e,t){if(typeof AbortSignal.any==`function`)return AbortSignal.any([e,t]);let n=new AbortController;if(e.aborted)return n.abort(e.reason),n.signal;if(t.aborted)return n.abort(t.reason),n.signal;let r=()=>{e.removeEventListener(`abort`,i),t.removeEventListener(`abort`,a)};function i(){r(),n.abort(e.reason)}function a(){r(),n.abort(t.reason)}return e.addEventListener(`abort`,i,{once:!0}),t.addEventListener(`abort`,a,{once:!0}),n.signal}var GC=class{_abortController;_url;_resourceMetadataUrl;_scope;_requestInit;_authProvider;_oauthProvider;_skipIssuerMetadataValidation;_fetch;_fetchWithInit;_sessionId;_reconnectionOptions;_protocolVersion;_onInsufficientScope;_maxStepUpRetries;_serverRetryMs;_reconnectionScheduler;_cancelReconnection;onclose;onerror;onmessage;hasPerRequestStream=!0;constructor(e,t){this._url=e,this._resourceMetadataUrl=void 0,this._scope=void 0,this._requestInit=t?.requestInit,this._skipIssuerMetadataValidation=t?.skipIssuerMetadataValidation,vS(t?.authProvider)?(this._oauthProvider=t.authProvider,this._authProvider=bS(t.authProvider,{skipIssuerMetadataValidation:t.skipIssuerMetadataValidation})):this._authProvider=t?.authProvider,this._fetch=t?.fetch,this._fetchWithInit=cx(t?.fetch,t?.requestInit),this._sessionId=t?.sessionId,this._protocolVersion=t?.protocolVersion,this._reconnectionOptions=t?.reconnectionOptions??HC,this._reconnectionScheduler=t?.reconnectionScheduler,this._onInsufficientScope=t?.onInsufficientScope??`reauthorize`,this._maxStepUpRetries=Math.max(0,t?.maxStepUpRetries??VC)}async _stepUpAuthorize(e,t){if(this._onInsufficientScope===`throw`||!this._oauthProvider)throw new hS({requiredScope:e.scope,resourceMetadataUrl:e.resourceMetadataUrl,errorDescription:e.errorDescription});if(t>=this._maxStepUpRetries)throw new Z_(Y_.ClientHttpForbidden,`Server returned 403 insufficient_scope after step-up re-authorization (retry limit ${this._maxStepUpRetries} reached)`,{status:403,statusText:e.statusText??`Forbidden`,text:e.text});e.resourceMetadataUrl&&(this._resourceMetadataUrl=e.resourceMetadataUrl);let n=await this._oauthProvider.tokens(),r=wS(this._scope,n?.scope,e.scope);this._scope=r;let i=TS(r,n?.scope);return BS(this._oauthProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:r,forceReauthorization:i,fetchFn:this._fetchWithInit,skipIssuerMetadataValidation:this._skipIssuerMetadataValidation})}async _commonHeaders(){let e={},t=await this._authProvider?.token();t&&(e.Authorization=`Bearer ${t}`),this._sessionId&&(e[`mcp-session-id`]=this._sessionId),this._protocolVersion&&(e[`mcp-protocol-version`]=this._protocolVersion);let n=sx(this._requestInit?.headers);return new Headers({...e,...n})}_applyBodyDerivedHeaders(e,t){if(Array.isArray(t)||!Ay(t))return;let n=t.params?._meta?.[bm];if(typeof n!=`string`)return;e.set(`mcp-protocol-version`,n),e.set(`mcp-method`,t.method);let r=t.params,i=t.method===`resources/read`?typeof r?.uri==`string`?r.uri:void 0:typeof r?.name==`string`?r.name:void 0;i!==void 0&&e.set(`mcp-name`,Xy(i))}_isModernEnvelopedRequest(e){if(Array.isArray(e)||!Ay(e))return!1;let t=e.params?._meta?.[bm];return typeof t==`string`&&nv(t)}async _startOrAuthSse(e,t=!1,n=0){let{resumptionToken:r,requestSignal:i}=e,a=()=>this._abortController?.signal.aborted===!0||i?.aborted===!0;try{let a=await this._commonHeaders(),o=[...a.get(`accept`)?.split(`,`).map(e=>e.trim().toLowerCase())??[],`text/event-stream`];a.set(`accept`,[...new Set(o)].join(`, `)),r&&a.set(`last-event-id`,r);let s=this._abortController?.signal,c=i!==void 0&&s!==void 0?WC(s,i):i??s,l=await(this._fetch??fetch)(this._url,{...this._requestInit,method:`GET`,headers:a,signal:c});if(!l.ok){if(l.status===401&&this._authProvider){if(l.headers.has(`www-authenticate`)){let{resourceMetadataUrl:e,scope:t}=KS(l);this._resourceMetadataUrl=e,this._scope=wS(this._scope,t)}if(this._authProvider.onUnauthorized&&!t)return await this._authProvider.onUnauthorized({response:l,serverUrl:this._url,fetchFn:this._fetchWithInit}),await l.text?.().catch(()=>{}),this._startOrAuthSse(e,!0,n);throw await l.text?.().catch(()=>{}),t?new Z_(Y_.ClientHttpAuthentication,`Server returned 401 after re-authentication`,{status:401,statusText:l.statusText}):new xS}if(l.status===403){let{resourceMetadataUrl:r,scope:i,error:a,errorDescription:o}=KS(l);if(a===`insufficient_scope`){let a=await l.text?.().catch(()=>null);if(await this._stepUpAuthorize({scope:i,resourceMetadataUrl:r,errorDescription:o,statusText:l.statusText,text:a},n)!==`AUTHORIZED`)throw new xS;return this._startOrAuthSse(e,t,n+1)}}if(await l.text?.().catch(()=>{}),l.status===405){e.onRequestStreamEnd?.();return}throw new Z_(Y_.ClientHttpFailedToOpenStream,`Failed to open SSE stream: ${l.statusText}`,{status:l.status,statusText:l.statusText})}this._handleSseStream(l.body,e,!0)}catch(e){throw a()||this.onerror?.(e),e}}_getNextReconnectionDelay(e){if(this._serverRetryMs!==void 0)return this._serverRetryMs;let t=this._reconnectionOptions.initialReconnectionDelay,n=this._reconnectionOptions.reconnectionDelayGrowFactor,r=this._reconnectionOptions.maxReconnectionDelay;return Math.min(t*n**+e,r)}_scheduleReconnection(e,t=0){let n=this._reconnectionOptions.maxRetries;if(t>=n){this.onerror?.(Error(`Maximum reconnection attempts (${n}) exceeded.`)),e.onRequestStreamEnd?.();return}let r=this._getNextReconnectionDelay(t),i=()=>{this._cancelReconnection=void 0,!(this._abortController?.signal.aborted||e.requestSignal?.aborted)&&this._startOrAuthSse(e).catch(n=>{if(!(this._abortController?.signal.aborted||e.requestSignal?.aborted)){this.onerror?.(Error(`Failed to reconnect SSE stream: ${n instanceof Error?n.message:String(n)}`));try{this._scheduleReconnection(e,t+1)}catch(e){this.onerror?.(e instanceof Error?e:Error(String(e)))}}})};if(this._reconnectionScheduler){let e=this._reconnectionScheduler(i,r,t);this._cancelReconnection=typeof e==`function`?e:void 0}else{let e=setTimeout(i,r);this._cancelReconnection=()=>clearTimeout(e)}}_handleSseStream(e,t,n){if(!e){t.onRequestStreamEnd?.();return}let{onresumptiontoken:r,replayMessageId:i,requestSignal:a,onRequestStreamEnd:o}=t,s=()=>this._abortController?.signal.aborted===!0||a?.aborted===!0,c,l=!1,u=!1;(async()=>{try{let t=e.pipeThrough(new TextDecoderStream).pipeThrough(new aS({onRetry:e=>{this._serverRetryMs=e}})).getReader();for(;;){let{value:e,done:n}=await t.read();if(n)break;if(e.id&&(c=e.id,l=!0,r?.(e.id)),e.data&&(!e.event||e.event===`message`))try{let t=Wm.parse(JSON.parse(e.data));(My(t)||Ny(t))&&(u=!0,i!==void 0&&(t.id=i)),this.onmessage?.(t)}catch(e){this.onerror?.(e)}}(n||l)&&!u&&this._abortController&&!s()?this._scheduleReconnection({resumptionToken:c,onresumptiontoken:r,replayMessageId:i,requestSignal:a,onRequestStreamEnd:o},0):s()||o?.()}catch(e){if(s())return;if(this.onerror?.(Error(`SSE stream disconnected: ${e}`)),(n||l)&&!u&&this._abortController&&!s())try{this._scheduleReconnection({resumptionToken:c,onresumptiontoken:r,replayMessageId:i,requestSignal:a,onRequestStreamEnd:o},0)}catch(e){this.onerror?.(Error(`Failed to reconnect: ${e instanceof Error?e.message:String(e)}`)),o?.()}else o?.()}})()}async start(){if(this._abortController)throw Error(`StreamableHTTPClientTransport already started! If using Client class, note that connect() calls start() automatically.`);this._abortController=new AbortController}async finishAuth(e,t){if(!this._oauthProvider)throw new xS(`finishAuth requires an OAuthClientProvider`);let{authorizationCode:n,iss:r}=await ES(e,t,this._oauthProvider,this._url,{fetchFn:this._fetchWithInit,resourceMetadataUrl:this._resourceMetadataUrl});if(await BS(this._oauthProvider,{serverUrl:this._url,authorizationCode:n,iss:r,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit,skipIssuerMetadataValidation:this._skipIssuerMetadataValidation})!==`AUTHORIZED`)throw new xS(`Failed to authorize`)}async close(){try{this._cancelReconnection?.()}finally{this._cancelReconnection=void 0,this._abortController?.abort(),this.onclose?.()}}async send(e,t){return this._send(e,t,!1)}async _send(e,t,n,r=0){try{let{resumptionToken:i,onresumptiontoken:a}=t||{};if(i){this._startOrAuthSse({resumptionToken:i,replayMessageId:Ay(e)?e.id:void 0,requestSignal:t?.requestSignal}).catch(e=>this.onerror?.(e));return}let o=await this._commonHeaders();this._applyBodyDerivedHeaders(o,e);let s=Array.isArray(e)?e.some(e=>Fy(e)):Fy(e);if(s&&o.delete(`mcp-session-id`),t?.headers!==void 0)for(let[e,n]of Object.entries(t.headers))UC.has(e.toLowerCase())||o.set(e,n);o.set(`content-type`,`application/json`);let c=[...o.get(`accept`)?.split(`,`).map(e=>e.trim().toLowerCase())??[],`application/json`,`text/event-stream`];o.set(`accept`,[...new Set(c)].join(`, `));let l=this._abortController?.signal,u=t?.requestSignal!==void 0&&l!==void 0?WC(l,t.requestSignal):t?.requestSignal??l,d={...this._requestInit,method:`POST`,headers:o,body:JSON.stringify(e),signal:u},f=await(this._fetch??fetch)(this._url,d);if(s&&f.ok&&(this._sessionId=f.headers.get(`mcp-session-id`)||void 0),!f.ok){if(f.status===401&&this._authProvider){if(f.headers.has(`www-authenticate`)){let{resourceMetadataUrl:e,scope:t}=KS(f);this._resourceMetadataUrl=e,this._scope=wS(this._scope,t)}if(this._authProvider.onUnauthorized&&!n)return await this._authProvider.onUnauthorized({response:f,serverUrl:this._url,fetchFn:this._fetchWithInit}),await f.text?.().catch(()=>{}),this._send(e,t,!0,r);throw await f.text?.().catch(()=>{}),n?new Z_(Y_.ClientHttpAuthentication,`Server returned 401 after re-authentication`,{status:401,statusText:f.statusText}):new xS}let i=await f.text?.().catch(()=>null);if(f.status===403){let{resourceMetadataUrl:a,scope:o,error:s,errorDescription:c}=KS(f);if(s===`insufficient_scope`){if(await this._stepUpAuthorize({scope:o,resourceMetadataUrl:a,errorDescription:c,statusText:f.statusText,text:i},r)!==`AUTHORIZED`)throw new xS;return this._send(e,t,n,r+1)}}if(f.status===400&&typeof i==`string`&&this._isModernEnvelopedRequest(e))try{let t=Wm.parse(JSON.parse(i)),n=(Array.isArray(e)?e:[e]).filter(e=>Ay(e));if(Ny(t)&&n.some(e=>e.id===t.id)){this.onmessage?.(t);return}}catch{}throw new Z_(Y_.ClientHttpNotImplemented,`Error POSTing to endpoint: ${i}`,{status:f.status,statusText:f.statusText,text:i})}if(f.status===202){await f.text?.().catch(()=>{}),Iy(e)&&this._startOrAuthSse({resumptionToken:void 0}).catch(e=>this.onerror?.(e));return}let p=(Array.isArray(e)?e:[e]).some(e=>`method`in e&&`id`in e&&e.id!==void 0),m=f.headers.get(`content-type`),h=ox(m);if(p)if(h===`text/event-stream`)this._handleSseStream(f.body,{onresumptiontoken:a,requestSignal:t?.requestSignal,onRequestStreamEnd:t?.onRequestStreamEnd},!1);else if(h===`application/json`){let e=await f.json(),t=Array.isArray(e)?e.map(e=>Wm.parse(e)):[Wm.parse(e)];for(let e of t)this.onmessage?.(e)}else throw await f.text?.().catch(()=>{}),new X_(Y_.ClientHttpUnexpectedContent,`Unexpected content type: ${m}`,{contentType:m});else await f.text?.().catch(()=>{})}catch(e){throw t?.requestSignal?.aborted!==!0&&this.onerror?.(e),e}}get sessionId(){return this._sessionId}async terminateSession(){if(this._sessionId)try{let e=await this._commonHeaders(),t={...this._requestInit,method:`DELETE`,headers:e,signal:this._abortController?.signal},n=await(this._fetch??fetch)(this._url,t);if(await n.text?.().catch(()=>{}),!n.ok&&n.status!==405)throw new Z_(Y_.ClientHttpFailedToTerminateSession,`Failed to terminate session: ${n.statusText}`,{status:n.status,statusText:n.statusText});this._sessionId=void 0}catch(e){throw this.onerror?.(e),e}}setProtocolVersion(e){this._protocolVersion=e}get protocolVersion(){return this._protocolVersion}async resumeStream(e,t){await this._startOrAuthSse({resumptionToken:e,onresumptiontoken:t?.onresumptiontoken})}},KC=t({BaseConnector:()=>$w,BrowserOAuthClientProvider:()=>Iw,DialectJsonSchemaValidator:()=>Zw,HttpConnector:()=>nT,MCPClient:()=>dT,MCPConnection:()=>sT,MCPSession:()=>sT,POSTHOG_API_KEY:()=>mw,POSTHOG_HOST:()=>pw,Tel:()=>kw,Telemetry:()=>Ow,VERSION:()=>iw,capturePostHog:()=>hw,completeOAuthFlow:()=>Ww,createOAuthProvider:()=>Lw,getPackageVersion:()=>aw,isUnauthorized:()=>Uw,logger:()=>Q,normalizeClientInfo:()=>oT,resolveCallbacks:()=>rT,setTelemetrySource:()=>Aw,shouldAutoProvisionOAuth:()=>iT,telFetch:()=>fw}),qC;function JC(e){qC=e}function YC(e,t){qC?.addServer(e,t)}function XC(e){qC?.removeServer(e)}var ZC;function QC(e){ZC=e}function $C(e){ZC?.(e)}var ew=[`silent`,`error`,`warn`,`info`,`http`,`verbose`,`debug`,`silly`],tw={silent:``,error:`❌`,warn:`⚠️`,info:`ℹ️`,http:`🌐`,verbose:`📝`,debug:`🔍`,silly:`🤪`};function nw(){let e;try{e=typeof process<`u`?{}.MCP_USE_LOG_LEVEL??{}.DEBUG:void 0}catch{}let t=e?.trim().toLowerCase();return t===`2`?`debug`:t&&ew.includes(t)?t:`info`}var rw=class{constructor(e=`mcp-use`,t=`info`,n=`minimal`){this.name=e,this.level=t,this.format=n}write(e,t,n){if(this.level===`silent`||ew.indexOf(e)>ew.indexOf(this.level))return;let r=n.map(e=>{if(typeof e==`string`)return e;try{return JSON.stringify(e)}catch{return String(e)}}).join(` `),i=r?`${t} ${r}`:t,a=new Date().toLocaleTimeString(`en-US`,{hour12:!1}),o=this.format===`minimal`?e:e.toUpperCase(),s=this.format===`emoji`?` ${tw[e]}`:``,c=`${a} [${this.name}]${s} ${o}: ${i}`;(e===`error`?console.error:e===`warn`?console.warn:e===`info`?console.info:e===`debug`?console.debug:console.log)(c)}error=(e,...t)=>this.write(`error`,e,t);warn=(e,...t)=>this.write(`warn`,e,t);info=(e,...t)=>this.write(`info`,e,t);debug=(e,...t)=>this.write(`debug`,e,t);http=(e,...t)=>this.write(`http`,e,t);verbose=(e,...t)=>this.write(`verbose`,e,t);silly=(e,...t)=>this.write(`silly`,e,t);setFormat(e){this.format=e}},Q=class{static instances={};static currentFormat=`minimal`;static currentLevel;static get(e=`mcp-use`){return this.instances[e]??=new rw(e,this.currentLevel??nw(),this.currentFormat)}static configure({level:e=nw(),format:t=`minimal`}={}){this.currentLevel=e,this.currentFormat=t;for(let n of Object.values(this.instances))n.level=e,n.format=t}static setDebug(e){let t=e===2||e===!0?`debug`:`info`;this.currentLevel=t;for(let e of Object.values(this.instances))e.level=t;try{typeof process<`u`&&({}.MCP_USE_LOG_LEVEL=t)}catch{}}static setFormat(e){this.configure({format:e})}}.get(),iw=`2.0.0-beta.8`;function aw(){return iw}var ow=class{},sw=class extends ow{constructor(e){super(),this.data=e}get name(){return`mcp_agent_execution`}get properties(){return{execution_method:this.data.executionMethod,query:this.data.query,query_length:this.data.query.length,success:this.data.success,model_provider:this.data.modelProvider,model_name:this.data.modelName,server_count:this.data.serverCount,server_identifiers:this.data.serverIdentifiers,total_tools_available:this.data.totalToolsAvailable,tools_available_names:this.data.toolsAvailableNames,max_steps_configured:this.data.maxStepsConfigured,memory_enabled:this.data.memoryEnabled,use_server_manager:this.data.useServerManager,max_steps_used:this.data.maxStepsUsed,manage_connector:this.data.manageConnector,external_history_used:this.data.externalHistoryUsed,steps_taken:this.data.stepsTaken??null,tools_used_count:this.data.toolsUsedCount??null,tools_used_names:this.data.toolsUsedNames??null,response:this.data.response??null,response_length:this.data.response?this.data.response.length:null,execution_time_ms:this.data.executionTimeMs??null,error_type:this.data.errorType??null,conversation_history_length:this.data.conversationHistoryLength??null}}},cw=class extends ow{constructor(e){super(),this.data=e}get name(){return`mcpclient_init`}get properties(){return{code_mode:this.data.codeMode,sandbox:this.data.sandbox,all_callbacks:this.data.allCallbacks,verify:this.data.verify,servers:this.data.servers,num_servers:this.data.numServers,is_browser:this.data.isBrowser}}},lw=class extends ow{constructor(e){super(),this.data=e}get name(){return`connector_init`}get properties(){return{connector_type:this.data.connectorType,server_command:this.data.serverCommand??null,server_args:this.data.serverArgs??null,server_url:this.data.serverUrl??null,public_identifier:this.data.publicIdentifier??null}}},uw=class extends ow{constructor(e){super(),this.data=e}get name(){return`client_add_server`}get properties(){let{serverName:e,serverConfig:t}=this.data,n=t.url;return{server_name:e,server_url_domain:n?this._extractHostname(n):null,transport:t.transport??null,has_auth:!!(t.authToken||t.authProvider)}}_extractHostname(e){try{return new URL(e).hostname}catch{return null}}},dw=class extends ow{constructor(e){super(),this.data=e}get name(){return`client_remove_server`}get properties(){return{server_name:this.data.serverName}}};async function fw(e,t){try{await fetch(e,t)}catch{}}var pw=`https://eu.i.posthog.com`,mw=`phc_lyTtbYwvkdSbrcMQNPiKiiRWrrM1seyKIMjycSvItEI`;function hw(e){let t=e.host??`https://eu.i.posthog.com`,n=e.apiKey??`phc_lyTtbYwvkdSbrcMQNPiKiiRWrrM1seyKIMjycSvItEI`;return fw(`${t}/i/v0/e/`,{method:`POST`,headers:{"Content-Type":`application/json`},keepalive:!0,body:JSON.stringify({api_key:n,event:e.event,distinct_id:e.distinctId,properties:e.properties,timestamp:new Date().toISOString()})})}function gw(){return globalThis.crypto.randomUUID()}function _w(){let e=new Uint8Array(8);return globalThis.crypto.getRandomValues(e),Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``)}var vw=`mcp_use_user_id`,yw=`phc_lyTtbYwvkdSbrcMQNPiKiiRWrrM1seyKIMjycSvItEI`,bw=`https://eu.i.posthog.com`,xw=null;function Sw(){return typeof localStorage<`u`&&typeof localStorage.getItem==`function`&&typeof localStorage.setItem==`function`&&typeof localStorage.removeItem==`function`}function Cw(){if(!Sw())return null;try{localStorage.setItem(`__mcp_use_test__`,`1`),localStorage.removeItem(`__mcp_use_test__`)}catch{return null}return{getUserId(){try{return localStorage.getItem(vw)}catch{return null}},setUserId(e){try{localStorage.setItem(vw,e)}catch{}}}}function ww(){try{return globalThis.Bun===void 0?globalThis.Deno===void 0?typeof navigator<`u`&&navigator.userAgent?.includes(`Cloudflare-Workers`)?`cloudflare-workers`:globalThis.EdgeRuntime===void 0?typeof window<`u`&&typeof document<`u`?`browser`:typeof process<`u`&&process.versions?.node!==void 0?`node`:`unknown`:`edge`:`deno`:`bun`}catch{return`unknown`}}function Tw(){if(typeof process<`u`&&{}.MCP_USE_TELEMETRY_SOURCE)return{}.MCP_USE_TELEMETRY_SOURCE;try{if(Sw())return localStorage.getItem(`MCP_USE_TELEMETRY_SOURCE`)??void 0}catch{}}function Ew(){if(typeof window<`u`&&window.__MCP_USE_ANONYMIZED_TELEMETRY__===!1||typeof process<`u`&&{}.MCP_USE_ANONYMIZED_TELEMETRY?.toLowerCase()===`false`)return!0;try{if(Sw()&&localStorage.getItem(`MCP_USE_ANONYMIZED_TELEMETRY`)===`false`)return!0}catch{}return!1}function Dw(){try{return`session-${gw()}`}catch{return`session-${Date.now()}-${_w()}`}}var Ow=class e{static instance=null;UNKNOWN_USER_ID=`UNKNOWN_USER_ID`;_currUserId=null;_telemetryEnabled=!1;_pending=new Set;_runtimeEnvironment;_storageCapability;_storage;_source;_productVersion;constructor(){this._runtimeEnvironment=ww(),this._storage=xw??Cw()??null,this._storageCapability=this._storage?`persistent`:`session-only`,this._source=Tw()||this._runtimeEnvironment;let e=Ew(),t=this._runtimeEnvironment!==`unknown`;e?(this._telemetryEnabled=!1,Q.debug(`Telemetry disabled via opt-out`)):t?(Q.debug(`Anonymized telemetry enabled. Set MCP_USE_ANONYMIZED_TELEMETRY=false to disable.`),this._telemetryEnabled=!0):(this._telemetryEnabled=!1,Q.debug(`Telemetry disabled - unknown environment: ${this._runtimeEnvironment}`))}get runtimeEnvironment(){return this._runtimeEnvironment}get storageCapability(){return this._storageCapability}static getInstance(){return e.instance||=new e,e.instance}setSource(e){this._source=e;try{Sw()&&localStorage.setItem(`MCP_USE_TELEMETRY_SOURCE`,e)}catch{}Q.debug(`Telemetry source set to: ${e}`)}getSource(){return this._source}setProductVersion(e){this._productVersion=e}get isEnabled(){return this._telemetryEnabled}get userId(){if(this._currUserId)return this._currUserId;try{if(this._storage){let e=this._storage.getUserId();if(e)return this._currUserId=e,e;let t=gw();return this._storage.setUserId(t),this._currUserId=t,t}this._currUserId=Dw()}catch{this._currUserId=this.UNKNOWN_USER_ID}return this._currUserId}async capture(e){if(!this._telemetryEnabled)return;let t=this.userId,n={...e.properties,mcp_use_version:this._productVersion??aw(),language:`typescript`,source:this._source,runtime:this._runtimeEnvironment},r=hw({host:bw,apiKey:yw,event:e.name,distinctId:t,properties:n});this._pending.add(r),r.finally(()=>this._pending.delete(r))}async trackAgentExecution(e){this.isEnabled&&await this.capture(new sw(e))}async trackMCPClientInit(e){this.isEnabled&&await this.capture(new cw(e))}async trackConnectorInit(e){this.isEnabled&&await this.capture(new lw(e))}async trackClientAddServer(e,t){this.isEnabled&&await this.capture(new uw({serverName:e,serverConfig:t}))}async trackClientRemoveServer(e){this.isEnabled&&await this.capture(new dw({serverName:e}))}async trackUseMcpConnection(e){this.isEnabled&&await this.capture({name:`usemcp_connection`,properties:{url_domain:new URL(e.url).hostname,transport_type:e.transportType,success:e.success,error_type:e.errorType??null,connection_time_ms:e.connectionTimeMs??null,has_oauth:e.hasOAuth,has_sampling:e.hasSampling,has_elicitation:e.hasElicitation}})}async trackUseMcpToolCall(e){this.isEnabled&&await this.capture({name:`usemcp_tool_call`,properties:{tool_name:e.toolName,success:e.success,error_type:e.errorType??null,execution_time_ms:e.executionTimeMs??null}})}async trackUseMcpResourceRead(e){this.isEnabled&&await this.capture({name:`usemcp_resource_read`,properties:{resource_uri_scheme:e.resourceUri.split(`:`)[0],success:e.success,error_type:e.errorType??null}})}identify(e,t){this._currUserId=e,this._storage?.setUserId(e),this._telemetryEnabled&&hw({host:bw,apiKey:yw,event:`$identify`,distinctId:e,properties:{$set:t??{}}})}reset(){this._currUserId=null}flush(){Promise.allSettled([...this._pending])}async shutdown(){try{await Promise.allSettled([...this._pending]),Q.debug(`Telemetry fetch captures flushed`)}catch(e){Q.debug(`Error flushing telemetry captures: ${e}`)}}},kw=Ow;function Aw(e){kw.getInstance().setSource(e)}JC({addServer:(e,t)=>Ow.getInstance().trackClientAddServer(e,t).catch(()=>void 0),removeServer:e=>Ow.getInstance().trackClientRemoveServer(e).catch(()=>void 0)}),QC(e=>Ow.getInstance().trackConnectorInit(e).catch(()=>void 0));function jw(e){let t=()=>{throw Error(`Invalid url to pass to open(): ${e}`)},n;try{n=new URL(e)}catch{t()}return n.protocol!==`https:`&&n.protocol!==`http:`&&t(),n.hostname!==encodeURIComponent(n.hostname)&&t(),n.username&&=encodeURIComponent(n.username),n.password&&=encodeURIComponent(n.password),n.pathname=n.pathname.slice(0,1)+encodeURIComponent(n.pathname.slice(1)).replace(/%2f/gi,`/`),n.search=n.search.slice(0,1)+Array.from(n.searchParams.entries()).map(Mw).join(`&`),n.hash=n.hash.slice(0,1)+encodeURIComponent(n.hash.slice(1)),n.href}function Mw([e,t]){return`${encodeURIComponent(e)}${t.length>0?`=${encodeURIComponent(t)}`:``}`}var Nw=class{get(e){return localStorage.getItem(e)}set(e,t){localStorage.setItem(e,t)}remove(e){localStorage.removeItem(e)}keys(){let e=[];for(let t=0;t<localStorage.length;t++){let n=localStorage.key(t);n&&e.push(n)}return e}},Pw=class e{serverUrl;storageKeyPrefix;serverUrlHash;clientName;clientUri;logoUri;callbackUrl;clientMetadataUrl;scope;store;allowClientSecret;constructor(t,n,r){US(n.clientMetadataUrl),this.serverUrl=t,this.storageKeyPrefix=n.storageKeyPrefix||`mcp:auth`,this.serverUrlHash=e.hashString(t),this.clientName=n.clientName||`mcp-use`,this.clientUri=n.clientUri||(typeof window<`u`?window.location.origin:`https://mcp-use.com`),this.logoUri=n.logoUri||`https://mcp-use.com/logo.png`,this.callbackUrl=jw(n.callbackUrl||(typeof window<`u`?new URL(`/oauth/callback`,window.location.origin).toString():`/oauth/callback`)),this.clientMetadataUrl=n.clientMetadataUrl,this.scope=n.scope,this.store=r,this.allowClientSecret=n.allowClientSecret??!0}getKey(e){return`${this.storageKeyPrefix}_${this.serverUrlHash}_${e}`}static hashString(e){let t=0;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);t=(t<<5)-t+r,t&=t}return Math.abs(t).toString(16)}get redirectUrl(){return this.callbackUrl}get clientMetadata(){return{redirect_uris:[this.redirectUrl],token_endpoint_auth_method:`none`,grant_types:[`authorization_code`,`refresh_token`],response_types:[`code`],client_name:this.clientName,client_uri:this.clientUri,logo_uri:this.logoUri,...this.scope?{scope:this.scope}:{}}}credentialKey(e,t){return t?this.getKey(`${e}_${encodeURIComponent(t.issuer)}`):this.getKey(e)}async readCredential(e,t){let n=this.credentialKey(e,t),r=await this.store.get(n);if(!r&&t){let r=this.credentialKey(e),i=await this.store.get(r);if(i)try{let e=JSON.parse(i);if(!e.issuer||e.issuer===t.issuer){let i={...e,issuer:t.issuer},a=JSON.stringify(i);return await this.store.set(n,a),await this.store.set(r,a),{key:n,value:i}}}catch{await this.store.remove(r)}return}if(r)try{return{key:n,value:JSON.parse(r)}}catch(t){console.warn(`[${this.storageKeyPrefix}] Failed to parse ${e.replace(`_`,` `)}:`,t),await this.store.remove(n);return}}async tokens(e){return(await this.readCredential(`tokens`,e))?.value}async saveTokens(e,t){let n=JSON.stringify(e);await this.store.set(this.credentialKey(`tokens`,t),n),t&&await this.store.set(this.credentialKey(`tokens`),n),await this.store.remove(this.getKey(`code_verifier`)),await this.store.remove(this.getKey(`last_auth_url`))}async clientInformation(e){let t=await this.readCredential(`client_info`,e);if(!t)return;let{key:n,value:r}=t;try{if(!this.allowClientSecret&&r.client_secret){await this.store.remove(n),e&&await this.store.remove(this.credentialKey(`client_info`)),console.warn(`[${this.storageKeyPrefix}] Removed OAuth client information containing a browser client_secret.`);return}let t=Array.isArray(r.redirect_uris)?r.redirect_uris:[];if(!(t.length===0||t.includes(this.redirectUrl))){console.info(`[${this.storageKeyPrefix}] Invalidating cached OAuth client info due to redirect URI mismatch.`),await this.store.remove(n),await this.store.remove(this.credentialKey(`tokens`,e)),await this.store.remove(this.getKey(`last_auth_url`));return}return r}catch{await this.store.remove(n);return}}async saveClientInformation(e,t){let n=e;if(!this.allowClientSecret&&n.client_secret)throw await this.store.remove(this.credentialKey(`client_info`,t)),t&&await this.store.remove(this.credentialKey(`client_info`)),Error(`Browser OAuth clients must be public clients; client_secret persistence is not allowed.`);let r=JSON.stringify(e);await this.store.set(this.credentialKey(`client_info`,t),r),t&&await this.store.set(this.credentialKey(`client_info`),r)}async saveCodeVerifier(e){await this.store.set(this.getKey(`code_verifier`),e)}async codeVerifier(){let e=this.getKey(`code_verifier`),t=await this.store.get(e);if(!t)throw Error(`[${this.storageKeyPrefix}] Code verifier not found in storage for key ${e}. Auth flow likely corrupted or timed out.`);return t}async invalidateCredentials(e){let t=async e=>{let t=`${this.getKey(e)}_`;for(let n of await this.store.keys())(n===this.getKey(e)||n.startsWith(t))&&await this.store.remove(n)};switch(e){case`all`:await t(`tokens`),await t(`client_info`),await this.store.remove(this.getKey(`code_verifier`)),await this.store.remove(this.getKey(`last_auth_url`)),await this.store.remove(this.getKey(`discovery_state`)),await this.store.remove(this.getKey(`token_endpoint`));break;case`client`:await t(`client_info`);break;case`tokens`:await t(`tokens`);break;case`verifier`:await this.store.remove(this.getKey(`code_verifier`));break;case`discovery`:await this.store.remove(this.getKey(`discovery_state`));break;default:break}}async saveDiscoveryState(e){await this.store.set(this.getKey(`discovery_state`),JSON.stringify(e))}async discoveryState(){let e=await this.store.get(this.getKey(`discovery_state`));if(e)try{return JSON.parse(e)}catch{await this.store.remove(this.getKey(`discovery_state`));return}}async storeAuthorizationState(e,t={}){let n=globalThis.crypto.randomUUID(),r=`${this.storageKeyPrefix}:state_${n}`,i={serverUrlHash:this.serverUrlHash,expiry:Date.now()+1e3*60*10,providerOptions:{serverUrl:this.serverUrl,storageKeyPrefix:this.storageKeyPrefix,clientName:this.clientName,clientUri:this.clientUri,callbackUrl:this.callbackUrl,...this.clientMetadataUrl?{clientMetadataUrl:this.clientMetadataUrl}:{},...t.extraProviderOptions??{}},flowType:t.flowType,returnUrl:t.returnUrl};e.searchParams.set(`state`,n);let a=jw(e.toString());return await this.store.set(r,JSON.stringify(i)),await this.store.set(this.getKey(`last_auth_url`),a),a}async getTokenEndpoint(){return(await this.discoveryState())?.authorizationServerMetadata?.token_endpoint??null}async getResource(){let e=(await this.discoveryState())?.resourceMetadata?.resource;return typeof e==`string`?e:null}};async function Fw(e){return typeof e==`string`?e:e instanceof URLSearchParams||e instanceof FormData?Object.fromEntries(e.entries()):e instanceof Blob?await e.text():e}var Iw=class{serverUrl;staticClientInfo;session;preventAutoAuth;useRedirectFlow;oauthProxyUrl;connectionUrl;proxyOAuthRequests;onPopupWindow;constructor(e,t={}){if(t.staticClientInfo?.client_secret)throw Error(`Browser OAuth clients must be public clients; staticClientInfo.client_secret is not allowed.`);this.serverUrl=e,this.session=new Pw(e,{...t,allowClientSecret:!1},new Nw),this.preventAutoAuth=t.preventAutoAuth,this.useRedirectFlow=t.useRedirectFlow,this.oauthProxyUrl=t.oauthProxyUrl,this.connectionUrl=t.connectionUrl,this.proxyOAuthRequests=t.proxyOAuthRequests??!0,this.staticClientInfo=t.staticClientInfo,this.onPopupWindow=t.onPopupWindow}get storageKeyPrefix(){return this.session.storageKeyPrefix}get serverUrlHash(){return this.session.serverUrlHash}get clientName(){return this.session.clientName}get clientUri(){return this.session.clientUri}get logoUri(){return this.session.logoUri}get callbackUrl(){return this.session.callbackUrl}get scope(){return this.session.scope}get clientMetadataUrl(){return this.session.clientMetadataUrl}getKey(e){return this.session.getKey(e)}reanchorWellKnownUrl(e){if(!this.connectionUrl)return e;try{let t=new URL(e),n=new URL(this.connectionUrl);if(t.origin!==n.origin||!t.pathname.startsWith(`/.well-known/`))return e;let r=new URL(this.serverUrl),[i,...a]=t.pathname.slice(13).split(`/`);if(!i)return e;let o=a.length?`/${a.join(`/`)}`:``,s=n.pathname.replace(/\/+$/,``),c=r.pathname.replace(/\/+$/,``),l=o&&o===s?c:o;return`${r.origin}/.well-known/${i}${l}${t.search}`}catch{return e}}getProxyFetch(e){if(!this.proxyOAuthRequests||!this.oauthProxyUrl)return e;let t=e??globalThis.fetch.bind(globalThis),n=this.oauthProxyUrl,r=new Set,i=!1;return async(e,a)=>{let o=typeof e==`string`?e:e instanceof URL?e.toString():e.url,s=this.reanchorWellKnownUrl(o),c;try{c=new URL(s).pathname}catch{return await t(e,a)}let l=c.includes(`/.well-known/`);if(!i){i=!0;let e=(await this.discoveryState())?.authorizationServerMetadata;for(let t of[`registration_endpoint`,`token_endpoint`,`revocation_endpoint`,`introspection_endpoint`])typeof e?.[t]==`string`&&r.add(e[t])}let u=r.has(s)||/\/(?:register|registration|token|revoke|revocation|introspect|introspection)\/?$/.test(c);if(!l&&!u)return await t(e,a);try{let r=new URL(s),i=new URL(n);if(r.origin===i.origin&&(r.pathname.startsWith(i.pathname)||s.includes(`/inspector/api/oauth`)))return await t(e,a)}catch{}let d=l?`${n}/metadata?serverUrl=${encodeURIComponent(this.serverUrl)}&url=${encodeURIComponent(s)}`:`${n}/proxy`;if(l){let e=await t(d,{...a,method:`GET`});try{let t=await e.clone().json();for(let e of[`registration_endpoint`,`token_endpoint`,`revocation_endpoint`,`introspection_endpoint`])typeof t[e]==`string`&&r.add(t[e])}catch{}return e}let f=a?.body?await Fw(a.body):void 0,p=await(await t(d,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({serverUrl:this.serverUrl,url:s,method:a?.method||`POST`,headers:a?.headers?Object.fromEntries(new Headers(a.headers)):{},body:f})})).json();return new Response(JSON.stringify(p.body),{status:p.status,statusText:p.statusText,headers:new Headers(p.headers)})}}get redirectUrl(){return this.session.redirectUrl}get clientMetadata(){return this.session.clientMetadata}tokens(e){return this.session.tokens(e)}saveTokens(e,t){return this.session.saveTokens(e,t)}async clientInformation(e){return this.staticClientInfo?this.staticClientInfo:this.session.clientInformation(e)}async saveClientInformation(e,t){if(!this.staticClientInfo)return this.session.saveClientInformation(e,t)}codeVerifier(){return this.session.codeVerifier()}saveCodeVerifier(e){return this.session.saveCodeVerifier(e)}invalidateCredentials(e){return this.session.invalidateCredentials(e)}saveDiscoveryState(e){return this.session.saveDiscoveryState(e)}discoveryState(){return this.session.discoveryState()}getTokenEndpoint(){return this.session.getTokenEndpoint()}getResource(){return this.session.getResource()}async getClientCredentials(){let e=await this.clientInformation();return e?.client_id?{client_id:e.client_id}:null}async prepareAuthorizationUrl(e){return this.session.storeAuthorizationState(e,{extraProviderOptions:{oauthProxyUrl:this.oauthProxyUrl,...this.clientMetadataUrl?{clientMetadataUrl:this.clientMetadataUrl}:{},...this.staticClientInfo?{staticClientInfo:this.staticClientInfo}:{},...this.scope?{scope:this.scope}:{}},flowType:this.useRedirectFlow?`redirect`:`popup`,returnUrl:typeof window<`u`?window.location.href:void 0})}async redirectToAuthorization(e){let t=await this.prepareAuthorizationUrl(e);if(this.preventAutoAuth){console.info(`[${this.storageKeyPrefix}] Auto-auth prevented. Authorization URL stored for manual trigger.`);return}if(this.useRedirectFlow){console.info(`[${this.storageKeyPrefix}] Redirecting to authorization URL (full-page redirect).`),window.location.href=t;return}let n=`width=600,height=700,resizable=yes,scrollbars=yes,status=yes`;try{let e=window.open(t,`mcp_auth_${this.serverUrlHash}`,n);this.onPopupWindow&&this.onPopupWindow(t,n,e),!e||e.closed||e.closed===void 0?console.warn(`[${this.storageKeyPrefix}] Popup likely blocked by browser. Manual navigation might be required using the stored URL.`):(e.focus(),console.info(`[${this.storageKeyPrefix}] Redirecting to authorization URL in popup.`))}catch(e){console.error(`[${this.storageKeyPrefix}] Error opening popup window:`,e)}}getLastAttemptedAuthUrl(){let e=localStorage.getItem(this.getKey(`last_auth_url`));return e?jw(e):null}clearStorage(){let e=`${this.storageKeyPrefix}_${this.serverUrlHash}_`,t=`${this.storageKeyPrefix}:state_`,n=[],r=0;for(let r=0;r<localStorage.length;r++){let i=localStorage.key(r);if(i){if(i.startsWith(e))n.push(i);else if(i.startsWith(t))try{let e=localStorage.getItem(i);e&&JSON.parse(e).serverUrlHash===this.serverUrlHash&&n.push(i)}catch(e){console.warn(`[${this.storageKeyPrefix}] Error parsing state key ${i} during clearStorage:`,e)}}}return[...new Set(n)].forEach(e=>{localStorage.removeItem(e),r++}),r}};async function Lw(e,t={}){return new Iw(e,t)}var Rw=`mcp_auth_callback`,zw=`mcp_auth_callback`;function Bw(e){try{return typeof localStorage<`u`&&!!localStorage.getItem(e)}catch{return!1}}function Vw({popup:e,state:t,tokensKey:n,timeoutMs:r=5*6e4,closePollMs:i=1e3,closeGraceMs:a=2e4,expectedOrigin:o=typeof window<`u`?window.location.origin:``}){return new Promise(s=>{let c=!1,l=null,u=null,d=null,f=null,p=()=>{if(l&&=(clearInterval(l),null),u&&=(clearTimeout(u),null),d&&=(clearTimeout(d),null),typeof window<`u`&&(window.removeEventListener(`message`,g),window.removeEventListener(`storage`,v)),f){try{f.removeEventListener(`message`,_),f.close()}catch{}f=null}},m=e=>{c||(c=!0,p(),s(e))},h=e=>{!e||e.type!==zw||e.state&&t&&e.state!==t||(e.success?m({kind:`success`}):m({kind:`error`,error:e.error??`Authentication failed in callback.`}))},g=e=>{o&&e.origin!==o||h(e.data)},_=e=>{h(e.data)},v=e=>{e.key===n&&e.newValue&&m({kind:`success`})};if(typeof window<`u`&&(window.addEventListener(`message`,g),window.addEventListener(`storage`,v)),typeof BroadcastChannel<`u`)try{f=new BroadcastChannel(Rw),f.addEventListener(`message`,_)}catch{f=null}e&&(l=setInterval(()=>{if(c)return;let t=!1;try{t=e.closed}catch{t=!1}if(t){if(l&&=(clearInterval(l),null),Bw(n)){m({kind:`success`});return}d=setTimeout(()=>{m(Bw(n)?{kind:`success`}:{kind:`cancelled`})},a)}},i)),u=setTimeout(()=>{m(Bw(n)?{kind:`success`}:{kind:`timeout`})},r)})}var Hw=5*6e4;function Uw(e,t=0){if(!e||t>5)return!1;if(e instanceof xS)return!0;if(e instanceof Error){if(e.code===401||e.name===`UnauthorizedError`)return!0;let n=e.message??``;if(n.includes(`401`)||n.includes(`Unauthorized`)||e.cause&&Uw(e.cause,t+1))return!0;let r=e.data;if(r?.cause&&Uw(r.cause,t+1))return!0}return!1}async function Ww(e,t,n={}){let r=e,i=n.timeoutMs??Hw,a=n.fetchFn??r.getProxyFetch?.()??void 0;if(!r.hasPendingFlow){let n=await BS(e,{serverUrl:t,fetchFn:a});if(n===`AUTHORIZED`)return;if(n!==`REDIRECT`)throw Error(`Unexpected OAuth auth() result: ${n}`)}if(typeof r.getAuthorizationCode==`function`){await BS(e,{serverUrl:t,authorizationCode:await r.getAuthorizationCode(),fetchFn:a});return}await Gw(r,i)}async function Gw(e,t){if(typeof window>`u`)throw Error(`OAuth redirect requires a browser environment or a provider with getAuthorizationCode()`);if(e.useRedirectFlow)return;let n=e.getKey?.(`tokens`);if(!n)throw Error(`Browser OAuth provider must expose getKey() for token storage`);let r=null,i=e.getLastAttemptedAuthUrl?.();if(i)try{r=new URL(i).searchParams.get(`state`)}catch{}let a=await Vw({popup:null,state:r,tokensKey:n,timeoutMs:t});switch(a.kind){case`success`:return;case`cancelled`:throw Error(`OAuth authentication was cancelled.`);case`timeout`:throw Error(`OAuth callback not received within ${t}ms. Ensure /oauth/callback calls onMcpAuthorization().`);case`error`:throw Error(a.error);default:throw Error(`Unexpected OAuth popup result`)}}var Kw=`http://json-schema.org/draft-04/schema`,qw=new Set([`http://json-schema.org/draft-07/schema`,`https://json-schema.org/draft-07/schema`]),Jw=new Set([`https://json-schema.org/draft/2019-09/schema`,`http://json-schema.org/draft/2019-09/schema`]),Yw=new Set([`https://json-schema.org/draft/2020-12/schema`,`http://json-schema.org/draft/2020-12/schema`]);function Xw(e){if(!(`$schema`in e)||typeof e.$schema!=`string`)return`2020-12`;let t=e.$schema.replace(/#$/,``);if(t===Kw)return`4`;if(qw.has(t))return`7`;if(Jw.has(t))return`2019-09`;if(Yw.has(t))return`2020-12`}var Zw=class{getValidator(e){let t=Xw(e);return(t===void 0?new Jx:new Jx({draft:t})).getValidator(e)}},Qw={"~standard":{version:1,vendor:`mcp-use`,validate:e=>({value:e})}},$w=class{client=null;connectionManager=null;toolsCache=null;capabilitiesCache=null;serverInfoCache=null;connected=!1;opts;notificationHandlers=[];rootsCache=[];activeProgressHandlers=new Set;constructor(e={}){this.opts=e,e.roots&&(this.rootsCache=[...e.roots]),e.onNotification&&this.notificationHandlers.push(e.onNotification)}trackConnectorInit(e){let t=this.constructor.name;$C({connectorType:t,...e})}onNotification(e){this.notificationHandlers.push(e),this.client&&this.setupNotificationHandler()}async forwardNotification(e){for(let t of this.notificationHandlers)try{await t(e)}catch(e){Q.error(`Error in notification handler:`,e)}}async handleListChanged(e,t,n){if(t){Q.warn(`[Auto] ${e} refresh failed:`,t);return}e===`notifications/tools/list_changed`&&n&&(this.toolsCache=[...n]),await this.forwardNotification({method:e})}setupNotificationHandler(){if(!this.client)return;this.client.fallbackNotificationHandler=async e=>{switch(e.method){case`notifications/tools/list_changed`:await this.refreshToolsCache();break;case`notifications/resources/list_changed`:await this.onResourcesListChanged();break;case`notifications/prompts/list_changed`:await this.onPromptsListChanged();break;default:break}await this.forwardNotification(e)};let e=this.client._notificationHandlers;for(let t of[`notifications/progress`,`notifications/cancelled`]){let n=e.get(t);n&&e.set(t,async e=>{await n(e),await this.forwardNotification(e)})}}setupRoundProgressForwarding(){if(!this.client)return;let e=this.client,t=e._onnotification.bind(this.client);e._onnotification=async e=>{e&&typeof e==`object`&&e.method===`notifications/progress`&&this.forwardRoundProgress(e.params),await t?.(e)}}forwardRoundProgress(e){if(this.activeProgressHandlers.size===1){let[t]=this.activeProgressHandlers;t?.(e)}}async refreshToolsCache(){if(this.client)try{Q.debug(`[Auto] Refreshing tools cache due to list_changed notification`);let e=await this.client.listTools();this.toolsCache=e.tools??[],Q.debug(`[Auto] Refreshed tools cache: ${this.toolsCache.length} tools`)}catch(e){Q.warn(`[Auto] Failed to refresh tools cache:`,e)}}async onResourcesListChanged(){Q.debug(`[Auto] Resources list changed - clients should re-fetch if needed`)}async onPromptsListChanged(){Q.debug(`[Auto] Prompts list changed - clients should re-fetch if needed`)}async setRoots(e){this.rootsCache=[...e],this.client&&(Q.debug(`Sending roots/list_changed notification with ${e.length} root(s)`),await this.client.sendRootsListChanged())}getRoots(){return[...this.rootsCache]}setupRootsHandler(){this.client&&this.client.setRequestHandler(`roots/list`,async()=>(Q.debug(`Server requested roots list, returning ${this.rootsCache.length} root(s)`),{roots:this.rootsCache}))}setupSamplingHandler(){if(!this.client){Q.debug(`setupSamplingHandler: No client available`);return}let e=this.opts.onSampling;if(!e){Q.debug(`setupSamplingHandler: No sampling callback provided`);return}Q.debug(`setupSamplingHandler: Setting up sampling request handler`),this.client.setRequestHandler(`sampling/createMessage`,async t=>(Q.debug(`Server requested sampling, forwarding to callback`),await e(t.params))),Q.debug(`setupSamplingHandler: Sampling handler registered successfully`)}setupElicitationHandler(){if(!this.client){Q.debug(`setupElicitationHandler: No client available`);return}let e=this.opts.onElicitation;if(!e){Q.debug(`setupElicitationHandler: No elicitation callback provided`);return}Q.debug(`setupElicitationHandler: Setting up elicitation request handler`),this.client.setRequestHandler(`elicitation/create`,async t=>(Q.debug(`Server requested elicitation, forwarding to callback`),await e(t.params))),Q.debug(`setupElicitationHandler: Elicitation handler registered successfully`)}async disconnect(){if(!this.connected){Q.debug(`Not connected to MCP implementation`);return}Q.debug(`Disconnecting from MCP implementation`),await this.cleanupResources(),this.connected=!1,Q.debug(`Disconnected from MCP implementation`)}get isClientConnected(){return this.client!=null}async initialize(e=this.opts.defaultRequestOptions??{}){if(!this.client)throw Error(`MCP client is not connected`);Q.debug(`Caching server capabilities & tools`);let t=this.client.getServerCapabilities();this.capabilitiesCache=t||null;let n=this.client.getServerVersion();this.serverInfoCache=n?{name:n.name,version:n.version,title:n.title,description:n.description,websiteUrl:n.websiteUrl,icons:n.icons}:null;try{let t=await this.client.listTools(void 0,e);this.toolsCache=t.tools??[],Q.debug(`Fetched ${this.toolsCache.length} tools from server`)}catch(e){let t=e;t.code===-32601?Q.debug(`Server does not implement tools/list, assuming no tools`):Q.debug(`Failed to list tools, assuming empty:`,t.message),this.toolsCache=[]}return Q.debug(`Server capabilities:`,t),Q.debug(`Server info:`,n),t}get tools(){if(!this.toolsCache)throw Error(`MCP client is not initialized; call initialize() first`);return this.toolsCache}get serverCapabilities(){return this.capabilitiesCache||{}}get serverInfo(){return this.serverInfoCache}get instructions(){return this.client?.getInstructions?.()}get protocolEra(){return this.client?.getProtocolEra?.()}get negotiatedProtocolVersion(){return this.client?.getNegotiatedProtocolVersion?.()}async callTool(e,t,n){if(!this.client)throw Error(`MCP client is not connected`);let r=n?{...n}:void 0;r?.resetTimeoutOnProgress&&!r.onprogress&&(r.onprogress=()=>{},Q.debug(`[BaseConnector] Added onprogress callback for tool '${e}' to enable progressToken`)),Q.debug(`Calling tool '${e}' with args`,t);let i=r?.onprogress;i&&this.activeProgressHandlers.add(i);try{let n=await this.client.callTool({name:e,arguments:t},r);return Q.debug(`Tool '${e}' returned`,n),n}finally{i&&this.activeProgressHandlers.delete(i)}}async listTools(e){if(!this.client)throw Error(`MCP client is not connected`);Q.debug(`[listTools] Fetching fresh tools from server...`);let t=await this.client.listTools(void 0,e),n=t.tools?[...t.tools]:[];return Q.debug(`[listTools] Returned ${n.length} tools:`,n.map(e=>e.name)),n}async listResources(e,t){if(!this.client)throw Error(`MCP client is not connected`);return Q.debug(`Listing resources`,e?`with cursor: ${e}`:``),await this.client.listResources({cursor:e},t)}async listAllResources(e){if(!this.client)throw Error(`MCP client is not connected`);if(!this.capabilitiesCache?.resources)return Q.debug(`Server does not advertise resources capability, skipping`),{resources:[]};try{Q.debug(`Listing all resources (with auto-pagination)`);let t=[],n;do{let r=await this.client.listResources({cursor:n},e);t.push(...r.resources||[]),n=r.nextCursor}while(n);return{resources:t}}catch(e){if(e.code===-32601)return Q.debug(`Server advertised resources but method not found`),{resources:[]};throw e}}async listResourceTemplates(e){if(!this.client)throw Error(`MCP client is not connected`);return Q.debug(`Listing resource templates`),await this.client.listResourceTemplates(void 0,e)}async complete(e,t){if(!this.client)throw Error(`MCP client is not connected`);Q.debug(`[complete] Requesting completions for:`,e.ref);let n=await this.client.complete(e,t);return Q.debug(`[complete] Received ${n.completion.values.length} suggestions`),n}async readResource(e,t){if(!this.client)throw Error(`MCP client is not connected`);return Q.debug(`Reading resource ${e}`),await this.client.readResource({uri:e},t)}async subscribeToResource(e,t){if(!this.client)throw Error(`MCP client is not connected`);return Q.debug(`Subscribing to resource: ${e}`),await this.client.subscribeResource({uri:e},t)}async unsubscribeFromResource(e,t){if(!this.client)throw Error(`MCP client is not connected`);return Q.debug(`Unsubscribing from resource: ${e}`),await this.client.unsubscribeResource({uri:e},t)}async listPrompts(){if(!this.client)throw Error(`MCP client is not connected`);if(!this.capabilitiesCache?.prompts)return Q.debug(`Server does not advertise prompts capability, skipping`),{prompts:[]};try{return Q.debug(`Listing prompts`),await this.client.listPrompts()}catch(e){if(e.code===-32601)return Q.debug(`Server advertised prompts but method not found`),{prompts:[]};throw e}}async getPrompt(e,t){if(!this.client)throw Error(`MCP client is not connected`);return Q.debug(`Getting prompt ${e}`),await this.client.getPrompt({name:e,arguments:t})}async request(e,t=null,n){if(!this.client)throw Error(`MCP client is not connected`);return Q.debug(`Sending raw request '${e}' with params`,t),await this.client.request({method:e,params:t??{}},Qw,n)}async cleanupResources(){let e=[];if(this.client)try{typeof this.client.close==`function`&&await this.client.close()}catch(t){let n=`Error closing client: ${t}`;Q.warn(n),e.push(n)}finally{this.client=null}if(this.connectionManager)try{await this.connectionManager.stop()}catch(t){let n=`Error stopping connection manager: ${t}`;Q.warn(n),e.push(n)}finally{this.connectionManager=null}this.toolsCache=null,e.length&&Q.warn(`Resource cleanup finished with ${e.length} issue(s)`)}};function eT(e,t=0){if(!e||t>5)return!1;if(e instanceof xS||e instanceof Z_&&e.status===401)return!0;if(e instanceof Error){if(e.cause&&eT(e.cause,t+1))return!0;let n=e instanceof X_?e.data:void 0;if(n?.cause&&eT(n.cause,t+1))return!0}return!1}function tT(e,t,n,r){let i=new URL(e),a=t.replace(/\/$/,``);return async(e,t)=>{let o=new Request(e,t),s=new URL(o.url);if(!(s.origin===i.origin&&s.pathname===i.pathname))return n(o);let c=new Headers(o.headers);c.set(`X-Target-URL`,o.url),r&&c.set(`X-Server-Id`,r);let l=o.method===`GET`||o.method===`HEAD`?void 0:await o.clone().arrayBuffer();return n(new Request(a,{method:o.method,headers:c,body:l,signal:o.signal,redirect:`manual`}))}}var nT=class extends $w{baseUrl;headers;timeout;customFetch;clientInfo;protocolNegotiation;gatewayUrl;serverId;reconnectionOptions;transportType=null;streamableTransport=null;constructor(e,t={}){super(t);let n=e.replace(/\/$/,``);this.baseUrl=n,this.headers={...t.headers??{}},this.gatewayUrl=t.gatewayUrl,this.serverId=t.serverId,t.authToken&&(this.headers.Authorization=`Bearer ${t.authToken}`),this.timeout=t.timeout??1e4;let r=t.fetch??globalThis.fetch.bind(globalThis);this.customFetch=this.gatewayUrl?tT(n,this.gatewayUrl,r,this.serverId):t.fetch,this.clientInfo=t.clientInfo??{name:`http-connector`,version:`1.0.0`},this.protocolNegotiation=t.protocolNegotiation??`auto`,this.reconnectionOptions=t.reconnectionOptions}buildClientOptions(){return{...this.opts.clientOptions||{},jsonSchemaValidator:this.opts.clientOptions?.jsonSchemaValidator??new Zw,versionNegotiation:{mode:this.protocolNegotiation,...this.opts.clientOptions?.versionNegotiation??{}},listChanged:{tools:{autoRefresh:!0,onChanged:(e,t)=>void this.handleListChanged(`notifications/tools/list_changed`,e,t)},resources:{autoRefresh:!1,onChanged:e=>void this.handleListChanged(`notifications/resources/list_changed`,e)},prompts:{autoRefresh:!1,onChanged:e=>void this.handleListChanged(`notifications/prompts/list_changed`,e)},...this.opts.clientOptions?.listChanged??{}},capabilities:{...this.opts.clientOptions?.capabilities||{},roots:{listChanged:!0},...this.opts.onSampling?{sampling:{}}:{},...this.opts.onElicitation?{elicitation:{form:{},url:{}}}:{}}}}unwrapStreamableError(e){return e instanceof Z_?e:e instanceof Error&&e.cause instanceof Z_?e.cause:null}classifyStreamableHttpFailure(e){let t=`Unknown error`,n=!1,r,i=this.unwrapStreamableError(e);if(i){let e=i.status;return n=e===401,r=e,e===400&&i.message.includes(`Missing session ID`)?(t=`Server requires session ID (FastMCP compatibility)`,Q.warn(`\u26A0\uFE0F ${t}`)):e===404||e===405?(t=`Server returned ${e} - server likely doesn't support streamable HTTP`,Q.debug(t)):(t=`Server returned ${e}: ${i.message}`,Q.debug(t)),{fallbackReason:t,is401Error:n,httpStatusCode:r}}if(e instanceof Error){let r=e.toString(),i=e.message||``;n=eT(e)||r.includes(`401`)||i.includes(`Unauthorized`),r.includes(`Missing session ID`)||r.includes(`Bad Request: Missing session ID`)||i.includes(`FastMCP session ID error`)?(t=`Server requires session ID (FastMCP compatibility)`,Q.warn(`\u26A0\uFE0F ${t}`)):r.includes(`405 Method Not Allowed`)||r.includes(`404 Not Found`)?(t=`Server doesn't support streamable HTTP (405/404)`,Q.debug(t)):(t=`Streamable HTTP failed: ${e.message}`,Q.debug(t))}return{fallbackReason:t,is401Error:n,httpStatusCode:r}}async connect(){if(this.connected){Q.debug(`Already connected to MCP implementation`);return}let e=this.baseUrl;Q.debug(`Connecting to MCP implementation via HTTP: ${e}`);try{await this.connectWithStreamableHttp(e),Q.debug(`✅ Successfully connected via streamable HTTP`)}catch(e){Q.debug(`Streamable HTTP connect failed`,e);let{fallbackReason:t,is401Error:n,httpStatusCode:r}=this.classifyStreamableHttpFailure(e);if(await this.cleanupResources(),n){Q.info(`Authentication required`);let e=Error(`Authentication required`);throw e.code=401,e}let i=Error(`Could not connect via streamable HTTP: ${t}`);throw r!==void 0&&Object.defineProperty(i,"code",{value:r,writable:!1,enumerable:!0,configurable:!0}),i}}observeSseProgress(e){if(!e.body||!e.headers.get(`content-type`)?.includes(`text/event-stream`))return e;let[t,n]=e.body.tee();return(async()=>{let e=n.getReader(),t=new TextDecoder,r=``;try{for(;;){let{done:n,value:i}=await e.read();if(n)break;r+=t.decode(i,{stream:!0});let a=r.split(/\r?\n\r?\n/);r=a.pop()??``;for(let e of a)for(let t of e.split(/\r?\n/))if(t.startsWith(`data:`))try{let e=JSON.parse(t.slice(5).trim());e.method===`notifications/progress`&&this.forwardRoundProgress(e.params)}catch{}}}catch(e){e instanceof DOMException&&e.name===`AbortError`||Q.debug(`Progress observer stream ended:`,e)}finally{e.releaseLock()}})(),new Response(t,{status:e.status,statusText:e.statusText,headers:e.headers})}async connectWithStreamableHttp(e){try{Q.debug(`[HttpConnector] Connecting with Streamable HTTP`,{baseUrl:e,originalUrl:this.baseUrl,gatewayUrl:this.gatewayUrl||`none`,authProviderUrl:this.opts.authProvider&&`serverUrl`in this.opts.authProvider&&typeof this.opts.authProvider.serverUrl==`string`?this.opts.authProvider.serverUrl:`none`,headers:this.headers});let t,n=new Promise(e=>{t=e}),r=this.customFetch??globalThis.fetch.bind(globalThis),i=new GC(new URL(e),{authProvider:this.opts.authProvider,fetch:async(e,n)=>{let i=await r(e,n),a=n?.method??(e instanceof Request?e.method:`GET`),o=new Headers(e instanceof Request?e.headers:void 0);return new Headers(n?.headers).forEach((e,t)=>{o.set(t,e)}),a.toUpperCase()===`GET`&&i.ok&&i.headers.get(`content-type`)?.includes(`text/event-stream`)&&t?.(),o.get(`mcp-method`)===`subscriptions/listen`?i:this.observeSseProgress(i)},requestInit:{headers:this.headers},reconnectionOptions:{maxReconnectionDelay:3e4,initialReconnectionDelay:1e3,reconnectionDelayGrowFactor:1.5,maxRetries:2,...this.reconnectionOptions}}),a=i;if(this.opts.wrapTransport){let e=this.baseUrl;a=this.opts.wrapTransport(a,e)}let o=this.buildClientOptions();Q.debug(`Creating Client with capabilities:`,JSON.stringify(o.capabilities,null,2)),this.client=new BC(this.clientInfo,o),this.setupRootsHandler(),this.setupSamplingHandler(),this.setupElicitationHandler(),Q.debug(`Roots/sampling/elicitation handlers registered before connect`);try{let e;if(await Promise.race([this.client.connect(a),new Promise((t,n)=>{e=setTimeout(()=>n(Error(`MCP connection timed out after ${this.timeout}ms`)),this.timeout)})]).finally(()=>{e!==void 0&&clearTimeout(e)}),(this.client.getProtocolEra?.()??`legacy`)===`legacy`&&i.sessionId){let e,t=await Promise.race([n.then(()=>!0),new Promise(t=>e=setTimeout(()=>t(!1),Math.min(this.timeout,5e3)))]);e&&clearTimeout(e),t||Q.warn(`Legacy server push stream did not attach before connect completed`)}let t=i.sessionId;t&&Q.debug(`Session ID obtained: ${t}`)}catch(e){if(e instanceof Error){let t=e.message||e.toString();if(t.includes(`Missing session ID`)||t.includes(`Bad Request: Missing session ID`)||t.includes(`Mcp-Session-Id header is required`)){let n=Error(`Session ID error: ${t}. The SDK should automatically extract session ID from initialize response.`);throw n.cause=e,n}}throw e}this.streamableTransport=i,this.connectionManager={stop:async()=>{if(this.streamableTransport)try{await this.streamableTransport.close()}catch(e){Q.warn(`Error closing Streamable HTTP transport: ${e}`)}finally{this.streamableTransport=null}}},this.connected=!0,this.transportType=`streamable-http`,this.setupNotificationHandler(),Q.debug(`Successfully connected to MCP implementation via streamable HTTP: ${e}`),this.trackConnectorInit({serverUrl:this.baseUrl,publicIdentifier:`${this.baseUrl} (streamable-http)`})}catch(e){throw await this.cleanupResources(),e}}get publicIdentifier(){return{type:`http`,url:this.baseUrl,transport:this.transportType||`unknown`,protocolEra:this.protocolEra??`unknown`}}getTransportType(){return this.transportType}async cleanupResources(){if(this.streamableTransport&&this.protocolEra!==`modern`){let e;try{await Promise.race([this.streamableTransport.terminateSession().then(()=>!0),new Promise(t=>e=setTimeout(()=>t(!1),Math.min(this.timeout,5e3)))])||Q.debug(`Timed out terminating legacy HTTP session; closing transport`)}catch(e){Q.debug(`Error terminating Streamable HTTP session: ${e}`)}finally{e&&clearTimeout(e)}}await super.cleanupResources()}};function rT(e,t){return{onSampling:e?.onSampling??t?.onSampling,onElicitation:e?.onElicitation??t?.onElicitation,onNotification:e?.onNotification??t?.onNotification}}function iT(e){if(!(`url`in e)||typeof e.url!=`string`||e.authProvider||e.authToken||e.oauth===!1)return!1;let t=e.headers;if(t){for(let e of Object.keys(t))if(e.toLowerCase()===`authorization`)return!1}return!0}function aT(){return{name:`mcp-use`,title:`mcp-use`,version:aw(),description:`mcp-use is a complete TypeScript framework for building and using MCP`,icons:[{src:`https://mcp-use.com/logo.png`}],websiteUrl:`https://mcp-use.com`}}function oT(e){let t=aT();if(!e||typeof e!=`object`)return t;let n=e;return!n.name||!n.version?t:{...t,...n}}var sT=class{connector;autoConnect;constructor(e,t=!0){this.connector=e,this.autoConnect=t}async connect(){await this.connector.connect()}async disconnect(){await this.connector.disconnect()}async initialize(){!this.isConnected&&this.autoConnect&&await this.connect(),await this.connector.initialize()}get isConnected(){return this.connector&&this.connector.isClientConnected}on(e,t){e===`notification`&&this.connector.onNotification(t)}async setRoots(e){return this.connector.setRoots(e)}getRoots(){return this.connector.getRoots()}get tools(){return this.connector.tools}async listTools(e){return this.connector.listTools(e)}get serverCapabilities(){return this.connector.serverCapabilities}get serverInfo(){return this.connector.serverInfo}get protocolEra(){return this.connector.protocolEra}get negotiatedProtocolVersion(){return this.connector.negotiatedProtocolVersion}get info(){let e=this.protocolEra,t=this.negotiatedProtocolVersion,n=this.serverInfo;if(!e||!t||!n)throw Error(`MCP connection is not initialized`);let r=this.serverCapabilities,i=r.extensions&&typeof r.extensions==`object`&&!Array.isArray(r.extensions)?r.extensions:{};return{protocolEra:e,protocolVersion:t,server:n,capabilities:r,instructions:this.connector.instructions,extensions:i}}supports(e){return e in this.serverCapabilities}async callTool(e,t={},n){return this.connector.callTool(e,t,n)}async listResources(e,t){return this.connector.listResources(e,t)}async listAllResources(e){return this.connector.listAllResources(e)}async listResourceTemplates(e){return this.connector.listResourceTemplates(e)}async complete(e,t){return this.connector.complete(e,t)}async readResource(e,t){return this.connector.readResource(e,t)}async subscribeToResource(e,t){return this.connector.subscribeToResource(e,t)}async unsubscribeFromResource(e,t){return this.connector.unsubscribeFromResource(e,t)}async listPrompts(){return this.connector.listPrompts()}async getPrompt(e,t){return this.connector.getPrompt(e,t)}async request(e,t=null,n){return this.connector.request(e,t,n)}};function cT(e){return!!e&&typeof e==`object`&&`redirectUrl`in e&&`clientMetadata`in e}var lT=class{config={};sessions={};activeSessions=[];constructor(e){e&&(this.config=e)}static fromDict(e){throw Error(`fromDict must be implemented by concrete class`)}addServer(e,t){this.config.mcpServers=this.config.mcpServers||{},this.config.mcpServers[e]=t,YC(e,t)}async removeServer(e){this.config.mcpServers?.[e]&&(await this.closeSession(e),delete this.config.mcpServers[e],XC(e))}getServerNames(){return Object.keys(this.config.mcpServers??{})}getServerConfig(e){return this.config.mcpServers?.[e]}getConfig(){return this.config??{}}async createSession(e,t=!0){let n=this.config.mcpServers??{};if(Object.keys(n).length===0&&Q.warn(`No MCP servers defined in config`),!n[e])throw Error(`Server '${e}' not found in config`);let r={...n[e]},i;if(iT(r)){let e=r.oauth===!1?void 0:r.oauth??{};i=await this.createDefaultOAuthProvider(r.url,e),r={...r,authProvider:i}}else `authProvider`in r&&r.authProvider&&cT(r.authProvider)&&(i=r.authProvider);let a=async()=>{let e=new sT(await Promise.resolve(this.createConnectorFromConfig(r)));return t&&await e.initialize(),e},o;try{o=await a()}catch(n){let s=r;if(!t||!i||!(`url`in s)||!Uw(n)||i.preventAutoAuth)throw n;Q.info(`[MCPClient] Unauthorized connecting to '${e}'; completing OAuth\u2026`),await Ww(i,s.url),o=await a()}return this.sessions[e]=o,this.activeSessions.includes(e)||this.activeSessions.push(e),o}async connect(e){return this.createSession(e)}async createAllSessions(e=!0){let t=this.config.mcpServers??{};Object.keys(t).length===0&&Q.warn(`No MCP servers defined in config`);for(let n of Object.keys(t))await this.createSession(n,e);return this.sessions}async connectAll(){return this.createAllSessions()}getSession(e){return this.sessions[e]||null}requireSession(e){let t=this.sessions[e];if(!t)throw Error(`Session '${e}' not found. Available sessions: ${this.activeSessions.join(`, `)||`none`}`);return t}getAllActiveSessions(){return Object.fromEntries(this.activeSessions.map(e=>[e,this.sessions[e]]))}async closeSession(e){let t=this.sessions[e];if(!t){Q.warn(`No session exists for server ${e}, nothing to close`);return}try{Q.debug(`Closing session for server ${e}`),await t.disconnect()}catch(t){Q.error(`Error closing session for server '${e}': ${t}`)}finally{this.sessions[e]===t&&(delete this.sessions[e],this.activeSessions=this.activeSessions.filter(t=>t!==e))}}async closeAllSessions(){let e=Object.keys(this.sessions),t=[];for(let n of e)try{Q.debug(`Closing session for server ${n}`),await this.closeSession(n)}catch(e){let r=`Failed to close session for server '${n}': ${e}`;Q.error(r),t.push(r)}t.length?Q.error(`Encountered ${t.length} errors while closing sessions`):Q.debug(`All sessions closed successfully`)}async close(){await this.closeAllSessions()}};function uT(e){let t=Object.keys(e.mcpServers??{});kw.getInstance().trackMCPClientInit({codeMode:!1,sandbox:!1,allCallbacks:!1,verify:!1,servers:t,numServers:t.length,isBrowser:!0}).catch(e=>Q.debug(`Failed to track BrowserMCPClient init: ${e}`))}var dT=class e extends lT{static getPackageVersion(){return aw()}constructor(e){super(e),uT(this.config)}static fromDict(t){return new e(t)}async createDefaultOAuthProvider(e,t={}){return Lw(e,t)}createConnectorFromConfig(e){let{url:t,headers:n,fetch:r,authToken:i,authProvider:a,wrapTransport:o,clientOptions:s,protocolNegotiation:c,timeout:l,gatewayUrl:u,serverId:d,reconnectionOptions:f}=e;if(!t)throw Error(`Server URL is required`);let p=this.config,m=rT(e,p),h=oT(e.clientInfo??this.config.clientInfo),g={headers:n,fetch:r??globalThis.fetch.bind(globalThis),authToken:i,authProvider:a,wrapTransport:o,clientOptions:s,onSampling:m.onSampling,onElicitation:m.onElicitation,onNotification:m.onNotification,protocolNegotiation:c,timeout:l,clientInfo:h,gatewayUrl:u,serverId:d,reconnectionOptions:f};return Q.debug(`[BrowserMCPClient] Connector options prepared (clientOptions: ${s?`provided`:`none`})`),new nT(t,g)}},fT=`mcp_inspector_telemetry_disabled`,pT=`mcp_inspector_telemetry_user_id`,mT=`MCP_USE_ANONYMIZED_TELEMETRY`,hT=`mcp_use_user_id`;function gT(){return typeof localStorage<`u`&&typeof localStorage.getItem==`function`&&typeof localStorage.setItem==`function`}function _T(){if(gT())try{if(localStorage.getItem(fT)===`true`&&localStorage.getItem(mT)!==`false`&&localStorage.setItem(mT,`false`),!localStorage.getItem(hT)){let e=localStorage.getItem(pT);e&&localStorage.setItem(hT,e)}}catch{}}function vT(){_T(),Aw(`inspector`),kw.getInstance().setProductVersion(Lo())}function yT(){if(typeof window>`u`)return`standalone`;let e=window.__MCP_INSPECTOR_MODE__;return e===`standalone`||e===`embedded`||e===`cloud`?e:`standalone`}async function bT(e){await kw.getInstance().capture({name:e.name,properties:{...e.properties,package:`inspector`,mode:yT()}})}async function xT(e){await bT(new xo(e))}var ST=`io.modelcontextprotocol/related-task`,CT=`io.modelcontextprotocol/subscriptionId`,wT=lm(()=>J([V(),H(),U(),Tp(),Y(V(),wT),G(wT)])),TT=Y(V(),wT),ET=J([V(),H().int()]),DT=V(),OT=K({ttl:H().optional()}),kT=K({taskId:V()}),AT=q({progressToken:ET.optional(),[ST]:kT.optional()}),jT=K({_meta:AT.optional()}),MT=jT.extend({task:OT.optional()}),NT=K({method:V(),params:jT.loose().optional()}),PT=K({_meta:AT.optional()}),FT=K({method:V(),params:PT.loose().optional()}),IT=q({_meta:AT.optional()}),LT=J([V(),H().int()]),RT=K({jsonrpc:X(`2.0`),id:LT,...NT.shape}).strict(),zT=K({jsonrpc:X(`2.0`),...FT.shape}).strict(),BT=K({jsonrpc:X(`2.0`),id:LT,result:IT}).strict(),VT=K({jsonrpc:X(`2.0`),id:LT.optional(),error:K({code:H().int(),message:V(),data:W().optional()})}).strict(),HT=J([RT,zT,BT,VT]);J([BT,VT]);var UT=IT.strict(),WT=PT.extend({requestId:LT.optional(),reason:V().optional()}),GT=FT.extend({method:X(`notifications/cancelled`),params:WT}),KT=K({icons:G(K({src:V(),mimeType:V().optional(),sizes:G(V()).optional(),theme:Bp([`light`,`dark`]).optional()})).optional()}),qT=K({name:V(),title:V().optional()}),JT=qT.extend({...qT.shape,...KT.shape,version:V(),websiteUrl:V().optional(),description:V().optional()}),YT=pm(e=>e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).length===0?{form:{}}:e,Lp(K({form:Lp(K({applyDefaults:U().optional()}),TT).optional(),url:TT.optional()}),TT.optional())),XT=q({list:TT.optional(),cancel:TT.optional(),requests:q({sampling:q({createMessage:TT.optional()}).optional(),elicitation:q({create:TT.optional()}).optional()}).optional()}),ZT=q({list:TT.optional(),cancel:TT.optional(),requests:q({tools:q({call:TT.optional()}).optional()}).optional()}),QT=K({experimental:Y(V(),TT).optional(),sampling:K({context:TT.optional(),tools:TT.optional()}).optional(),elicitation:YT.optional(),roots:K({listChanged:U().optional()}).optional(),tasks:XT.optional(),extensions:Y(V(),TT).optional()}),$T=jT.extend({protocolVersion:V(),capabilities:QT,clientInfo:JT}),eE=NT.extend({method:X(`initialize`),params:$T}),tE=K({experimental:Y(V(),TT).optional(),logging:TT.optional(),completions:TT.optional(),prompts:K({listChanged:U().optional()}).optional(),resources:K({subscribe:U().optional(),listChanged:U().optional()}).optional(),tools:K({listChanged:U().optional()}).optional(),tasks:ZT.optional(),extensions:Y(V(),TT).optional()}),nE=IT.extend({protocolVersion:V(),capabilities:tE,serverInfo:JT,instructions:V().optional()}),rE=FT.extend({method:X(`notifications/initialized`),params:PT.optional()}),iE=NT.extend({method:X(`server/discover`),params:jT.optional()}),aE=IT.extend({supportedVersions:G(V()),capabilities:tE,serverInfo:JT,instructions:V().optional()}),oE=NT.extend({method:X(`ping`),params:jT.optional()}),sE=K({progress:H(),total:Z(H()),message:Z(V())}),cE=K({...PT.shape,...sE.shape,progressToken:ET}),lE=FT.extend({method:X(`notifications/progress`),params:cE}),uE=jT.extend({cursor:DT.optional()}),dE=NT.extend({params:uE.optional()}),fE=IT.extend({nextCursor:DT.optional()}),pE=K({uri:V(),mimeType:Z(V()),_meta:Y(V(),W()).optional()}),mE=pE.extend({text:V()}),hE=V().refine(e=>{try{return atob(e),!0}catch{return!1}},{message:`Invalid Base64 string`}),gE=pE.extend({blob:hE}),_E=Bp([`user`,`assistant`]),vE=K({audience:G(_E).optional(),priority:H().min(0).max(1).optional(),lastModified:Tf({offset:!0}).optional()}),yE=K({...qT.shape,...KT.shape,uri:V(),description:Z(V()),mimeType:Z(V()),size:Z(H()),annotations:vE.optional(),_meta:Z(q({}))}),bE=K({...qT.shape,...KT.shape,uriTemplate:V(),description:Z(V()),mimeType:Z(V()),annotations:vE.optional(),_meta:Z(q({}))}),xE=dE.extend({method:X(`resources/list`)}),SE=fE.extend({resources:G(yE)}),CE=dE.extend({method:X(`resources/templates/list`)}),wE=fE.extend({resourceTemplates:G(bE)}),TE=jT.extend({uri:V()}),EE=TE,DE=NT.extend({method:X(`resources/read`),params:EE}),OE=IT.extend({contents:G(J([mE,gE]))}),kE=FT.extend({method:X(`notifications/resources/list_changed`),params:PT.optional()}),AE=TE,jE=NT.extend({method:X(`resources/subscribe`),params:AE}),ME=TE,NE=NT.extend({method:X(`resources/unsubscribe`),params:ME}),PE=K({toolsListChanged:U().optional(),promptsListChanged:U().optional(),resourcesListChanged:U().optional(),resourceSubscriptions:G(V()).optional()}),FE=jT.extend({notifications:PE}),IE=NT.extend({method:X(`subscriptions/listen`),params:FE}),LE=PT.extend({notifications:PE}),RE=FT.extend({method:X(`notifications/subscriptions/acknowledged`),params:LE}),zE=q({[CT]:LT}),BE=IT.extend({_meta:zE}),VE=PT.extend({uri:V()}),HE=FT.extend({method:X(`notifications/resources/updated`),params:VE}),UE=K({name:V(),description:Z(V()),required:Z(U())}),WE=K({...qT.shape,...KT.shape,description:Z(V()),arguments:Z(G(UE)),_meta:Z(q({}))}),GE=dE.extend({method:X(`prompts/list`)}),KE=fE.extend({prompts:G(WE)}),qE=jT.extend({name:V(),arguments:Y(V(),V()).optional()}),JE=NT.extend({method:X(`prompts/get`),params:qE}),YE=K({type:X(`text`),text:V(),annotations:vE.optional(),_meta:Y(V(),W()).optional()}),XE=K({type:X(`image`),data:hE,mimeType:V(),annotations:vE.optional(),_meta:Y(V(),W()).optional()}),ZE=K({type:X(`audio`),data:hE,mimeType:V(),annotations:vE.optional(),_meta:Y(V(),W()).optional()}),QE=K({type:X(`tool_use`),name:V(),id:V(),input:Y(V(),W()),_meta:Y(V(),W()).optional()}),$E=K({type:X(`resource`),resource:J([mE,gE]),annotations:vE.optional(),_meta:Y(V(),W()).optional()}),eD=yE.extend({type:X(`resource_link`)}),tD=J([YE,XE,ZE,eD,$E]),nD=K({role:_E,content:tD}),rD=IT.extend({description:V().optional(),messages:G(nD)}),iD=FT.extend({method:X(`notifications/prompts/list_changed`),params:PT.optional()}),aD=K({title:V().optional(),readOnlyHint:U().optional(),destructiveHint:U().optional(),idempotentHint:U().optional(),openWorldHint:U().optional()}),oD=K({taskSupport:Bp([`required`,`optional`,`forbidden`]).optional()}),sD=K({...qT.shape,...KT.shape,description:V().optional(),inputSchema:K({type:X(`object`),properties:Y(V(),wT).optional(),required:G(V()).optional()}).catchall(W()),outputSchema:q({$schema:V().optional()}).optional(),annotations:aD.optional(),execution:oD.optional(),_meta:Y(V(),W()).optional()}),cD=dE.extend({method:X(`tools/list`)}),lD=fE.extend({tools:G(sD)}),uD=IT.extend({content:G(tD).default([]),structuredContent:W().optional(),isError:U().optional()});uD.or(IT.extend({toolResult:W()}));var dD=MT.extend({name:V(),arguments:Y(V(),W()).optional()}),fD=NT.extend({method:X(`tools/call`),params:dD}),pD=FT.extend({method:X(`notifications/tools/list_changed`),params:PT.optional()});K({autoRefresh:U().default(!0),debounceMs:H().int().nonnegative().default(300)});var mD=Bp([`debug`,`info`,`notice`,`warning`,`error`,`critical`,`alert`,`emergency`]),hD=jT.extend({level:mD}),gD=NT.extend({method:X(`logging/setLevel`),params:hD}),_D=PT.extend({level:mD,logger:V().optional(),data:W()}),vD=FT.extend({method:X(`notifications/message`),params:_D}),yD=K({hints:G(K({name:V().optional()})).optional(),costPriority:H().min(0).max(1).optional(),speedPriority:H().min(0).max(1).optional(),intelligencePriority:H().min(0).max(1).optional()}),bD=K({mode:Bp([`auto`,`required`,`none`]).optional()}),xD=K({type:X(`tool_result`),toolUseId:V().describe(`The unique identifier for the corresponding tool call.`),content:G(tD),structuredContent:W().optional(),isError:U().optional(),_meta:Y(V(),W()).optional()}),SD=Fp(`type`,[YE,XE,ZE]),CD=Fp(`type`,[YE,XE,ZE,QE,xD]),wD=K({role:_E,content:J([CD,G(CD)]),_meta:Y(V(),W()).optional()}),TD=MT.extend({messages:G(wD),modelPreferences:yD.optional(),systemPrompt:V().optional(),includeContext:Bp([`none`,`thisServer`,`allServers`]).optional(),temperature:H().optional(),maxTokens:H().int(),stopSequences:G(V()).optional(),metadata:TT.optional(),tools:G(sD).optional(),toolChoice:bD.optional()}),ED=NT.extend({method:X(`sampling/createMessage`),params:TD}),DD=IT.extend({model:V(),stopReason:Z(Bp([`endTurn`,`stopSequence`,`maxTokens`]).or(V())),role:_E,content:SD}),OD=IT.extend({model:V(),stopReason:Z(Bp([`endTurn`,`stopSequence`,`maxTokens`,`toolUse`]).or(V())),role:_E,content:J([CD,G(CD)])}),kD=K({type:X(`boolean`),title:V().optional(),description:V().optional(),default:U().optional()}),AD=K({type:X(`string`),title:V().optional(),description:V().optional(),minLength:H().optional(),maxLength:H().optional(),format:Bp([`email`,`uri`,`date`,`date-time`]).optional(),default:V().optional()}),jD=K({type:Bp([`number`,`integer`]),title:V().optional(),description:V().optional(),minimum:H().optional(),maximum:H().optional(),default:H().optional()}),MD=K({type:X(`string`),title:V().optional(),description:V().optional(),enum:G(V()),default:V().optional()}),ND=K({type:X(`string`),title:V().optional(),description:V().optional(),oneOf:G(K({const:V(),title:V()})),default:V().optional()}),PD=J([J([K({type:X(`string`),title:V().optional(),description:V().optional(),enum:G(V()),enumNames:G(V()).optional(),default:V().optional()}),J([MD,ND]),J([K({type:X(`array`),title:V().optional(),description:V().optional(),minItems:H().optional(),maxItems:H().optional(),items:K({type:X(`string`),enum:G(V())}),default:G(V()).optional()}),K({type:X(`array`),title:V().optional(),description:V().optional(),minItems:H().optional(),maxItems:H().optional(),items:K({anyOf:G(K({const:V(),title:V()}))}),default:G(V()).optional()})])]),kD,AD,jD]),FD=J([MT.extend({mode:X(`form`).optional(),message:V(),requestedSchema:K({type:X(`object`),properties:Y(V(),PD),required:G(V()).optional()}).catchall(W())}),MT.extend({mode:X(`url`),message:V(),elicitationId:V(),url:V().url()})]),ID=NT.extend({method:X(`elicitation/create`),params:FD}),LD=PT.extend({elicitationId:V()}),RD=FT.extend({method:X(`notifications/elicitation/complete`),params:LD}),zD=IT.extend({action:Bp([`accept`,`decline`,`cancel`]),content:pm(e=>e===null?void 0:e,Y(V(),J([V(),H(),U(),G(V())])).optional())}),BD=K({type:X(`ref/resource`),uri:V()}),VD=K({type:X(`ref/prompt`),name:V()}),HD=jT.extend({ref:J([VD,BD]),argument:K({name:V(),value:V()}),context:K({arguments:Y(V(),V()).optional()}).optional()}),UD=NT.extend({method:X(`completion/complete`),params:HD}),WD=IT.extend({completion:q({values:G(V()).max(100),total:Z(H().int()),hasMore:Z(U())})}),GD=K({uri:V().startsWith(`file://`),name:V().optional(),_meta:Y(V(),W()).optional()}),KD=NT.extend({method:X(`roots/list`),params:jT.optional()}),qD=IT.extend({roots:G(GD)}),JD=FT.extend({method:X(`notifications/roots/list_changed`),params:PT.optional()});q({ttl:H().optional(),pollInterval:H().optional()});var YD=Bp([`working`,`input_required`,`completed`,`failed`,`cancelled`]),XD=K({taskId:V(),status:YD,ttl:J([H(),Tp()]),createdAt:V(),lastUpdatedAt:V(),pollInterval:Z(H()),statusMessage:Z(V())});IT.extend({task:XD});var ZD=PT.merge(XD);FT.extend({method:X(`notifications/tasks/status`),params:ZD}),NT.extend({method:X(`tasks/get`),params:jT.extend({taskId:V()})}),IT.merge(XD),NT.extend({method:X(`tasks/result`),params:jT.extend({taskId:V()})}),IT.loose(),dE.extend({method:X(`tasks/list`)}),fE.extend({tasks:G(XD)}),NT.extend({method:X(`tasks/cancel`),params:jT.extend({taskId:V()})}),IT.merge(XD),J([oE,eE,iE,UD,gD,JE,GE,xE,CE,DE,jE,NE,IE,fD,cD]),J([GT,lE,rE,JD]),J([UT,DD,OD,zD,qD]),J([oE,ED,ID,KD]),J([GT,lE,vD,HE,kE,pD,iD,RE,RD]),J([UT,nE,aE,WD,rD,KE,SE,wE,OE,uD,lD,BE]);var QD=np().superRefine((e,t)=>{if(!URL.canParse(e))return t.addIssue({code:mm.custom,message:`URL must be parseable`,fatal:!0}),Yo}).refine(e=>{let t=new URL(e);return t.protocol!==`javascript:`&&t.protocol!==`data:`&&t.protocol!==`vbscript:`},{message:`URL cannot use javascript:, data:, or vbscript: scheme`});q({resource:V().url(),authorization_servers:G(QD).optional(),jwks_uri:V().url().optional(),scopes_supported:G(V()).optional(),bearer_methods_supported:G(V()).optional(),resource_signing_alg_values_supported:G(V()).optional(),resource_name:V().optional(),resource_documentation:V().optional(),resource_policy_uri:V().url().optional(),resource_tos_uri:V().url().optional(),tls_client_certificate_bound_access_tokens:U().optional(),authorization_details_types_supported:G(V()).optional(),dpop_signing_alg_values_supported:G(V()).optional(),dpop_bound_access_tokens_required:U().optional()});var $D=q({issuer:V(),authorization_endpoint:QD,token_endpoint:QD,registration_endpoint:QD.optional(),scopes_supported:G(V()).optional(),response_types_supported:G(V()),response_modes_supported:G(V()).optional(),grant_types_supported:G(V()).optional(),token_endpoint_auth_methods_supported:G(V()).optional(),token_endpoint_auth_signing_alg_values_supported:G(V()).optional(),service_documentation:QD.optional(),revocation_endpoint:QD.optional(),revocation_endpoint_auth_methods_supported:G(V()).optional(),revocation_endpoint_auth_signing_alg_values_supported:G(V()).optional(),introspection_endpoint:V().optional(),introspection_endpoint_auth_methods_supported:G(V()).optional(),introspection_endpoint_auth_signing_alg_values_supported:G(V()).optional(),code_challenge_methods_supported:G(V()).optional(),client_id_metadata_document_supported:U().optional(),authorization_response_iss_parameter_supported:U().optional().catch(void 0)});K({...q({issuer:V(),authorization_endpoint:QD,token_endpoint:QD,userinfo_endpoint:QD.optional(),jwks_uri:QD,registration_endpoint:QD.optional(),scopes_supported:G(V()).optional(),response_types_supported:G(V()),response_modes_supported:G(V()).optional(),grant_types_supported:G(V()).optional(),acr_values_supported:G(V()).optional(),subject_types_supported:G(V()),id_token_signing_alg_values_supported:G(V()),id_token_encryption_alg_values_supported:G(V()).optional(),id_token_encryption_enc_values_supported:G(V()).optional(),userinfo_signing_alg_values_supported:G(V()).optional(),userinfo_encryption_alg_values_supported:G(V()).optional(),userinfo_encryption_enc_values_supported:G(V()).optional(),request_object_signing_alg_values_supported:G(V()).optional(),request_object_encryption_alg_values_supported:G(V()).optional(),request_object_encryption_enc_values_supported:G(V()).optional(),token_endpoint_auth_methods_supported:G(V()).optional(),token_endpoint_auth_signing_alg_values_supported:G(V()).optional(),display_values_supported:G(V()).optional(),claim_types_supported:G(V()).optional(),claims_supported:G(V()).optional(),service_documentation:V().optional(),claims_locales_supported:G(V()).optional(),ui_locales_supported:G(V()).optional(),claims_parameter_supported:U().optional(),request_parameter_supported:U().optional(),request_uri_parameter_supported:U().optional(),require_request_uri_registration:U().optional(),op_policy_uri:QD.optional(),op_tos_uri:QD.optional(),client_id_metadata_document_supported:U().optional(),authorization_response_iss_parameter_supported:U().optional().catch(void 0)}).shape,...$D.pick({code_challenge_methods_supported:!0}).shape}),K({access_token:V(),id_token:V().optional(),token_type:V(),expires_in:gm().optional(),scope:V().optional(),refresh_token:V().optional()}).strip(),K({issued_token_type:X(`urn:ietf:params:oauth:token-type:id-jag`),access_token:V(),token_type:V().optional(),expires_in:H().optional(),scope:V().optional()}).strip(),K({error:V(),error_description:V().optional(),error_uri:V().optional()});var eO=QD.optional().or(X(``).transform(()=>void 0)),tO=K({redirect_uris:G(QD),token_endpoint_auth_method:V().optional(),grant_types:G(V()).optional(),response_types:G(V()).optional(),application_type:V().optional(),client_name:V().optional(),client_uri:QD.optional(),logo_uri:eO,scope:V().optional(),contacts:G(V()).optional(),tos_uri:eO,policy_uri:V().optional(),jwks_uri:QD.optional(),jwks:Dp().optional(),software_id:V().optional(),software_version:V().optional(),software_statement:V().optional()}).strip(),nO=K({client_id:V(),client_secret:V().optional(),client_id_issued_at:H().optional(),client_secret_expires_at:H().optional()}).strip();tO.merge(nO),K({error:V(),error_description:V().optional()}).strip(),K({token:V(),token_type_hint:V().optional()}).strip(),(t=>typeof e<`u`?e:typeof Proxy<`u`?new Proxy(t,{get:(t,n)=>(typeof e<`u`?e:t)[n]}):t)(function(t){if(typeof e<`u`)return e.apply(this,arguments);throw Error(`Dynamic require of "`+t+`" is not supported`)});var rO=class{_eventSlots=new Map;setHandler(e,t){let n=this._ensureEventSlot(e);n.onHandler&&t&&console.warn(`[MCP Apps] on${String(e)} handler replaced. Use addEventListener("${String(e)}", …) to add multiple listeners without replacing.`),n.onHandler=t}getHandler(e){return this._eventSlots.get(e)?.onHandler}addEventListener(e,t){this._ensureEventSlot(e).listeners.push(t)}removeEventListener(e,t){let n=this._eventSlots.get(e);if(!n)return;let r=n.listeners.indexOf(t);r!==-1&&n.listeners.splice(r,1)}dispatch(e,t){let n=this._eventSlots.get(e);if(n){n.onHandler?.(t);for(let e of[...n.listeners])e(t)}}_ensureEventSlot(e){let t=this._eventSlots.get(e);return t||(t={listeners:[]},this._eventSlots.set(e,t)),t}},iO=`2026-01-26`,aO=J([X(`light`),X(`dark`)]).describe(`Color theme preference for the host environment.`),oO=J([X(`inline`),X(`fullscreen`),X(`pip`)]).describe(`Display mode for UI presentation.`),sO=Y(J([X(`--color-background-primary`),X(`--color-background-secondary`),X(`--color-background-tertiary`),X(`--color-background-inverse`),X(`--color-background-ghost`),X(`--color-background-info`),X(`--color-background-danger`),X(`--color-background-success`),X(`--color-background-warning`),X(`--color-background-disabled`),X(`--color-text-primary`),X(`--color-text-secondary`),X(`--color-text-tertiary`),X(`--color-text-inverse`),X(`--color-text-ghost`),X(`--color-text-info`),X(`--color-text-danger`),X(`--color-text-success`),X(`--color-text-warning`),X(`--color-text-disabled`),X(`--color-border-primary`),X(`--color-border-secondary`),X(`--color-border-tertiary`),X(`--color-border-inverse`),X(`--color-border-ghost`),X(`--color-border-info`),X(`--color-border-danger`),X(`--color-border-success`),X(`--color-border-warning`),X(`--color-border-disabled`),X(`--color-ring-primary`),X(`--color-ring-secondary`),X(`--color-ring-inverse`),X(`--color-ring-info`),X(`--color-ring-danger`),X(`--color-ring-success`),X(`--color-ring-warning`),X(`--font-sans`),X(`--font-mono`),X(`--font-weight-normal`),X(`--font-weight-medium`),X(`--font-weight-semibold`),X(`--font-weight-bold`),X(`--font-text-xs-size`),X(`--font-text-sm-size`),X(`--font-text-md-size`),X(`--font-text-lg-size`),X(`--font-heading-xs-size`),X(`--font-heading-sm-size`),X(`--font-heading-md-size`),X(`--font-heading-lg-size`),X(`--font-heading-xl-size`),X(`--font-heading-2xl-size`),X(`--font-heading-3xl-size`),X(`--font-text-xs-line-height`),X(`--font-text-sm-line-height`),X(`--font-text-md-line-height`),X(`--font-text-lg-line-height`),X(`--font-heading-xs-line-height`),X(`--font-heading-sm-line-height`),X(`--font-heading-md-line-height`),X(`--font-heading-lg-line-height`),X(`--font-heading-xl-line-height`),X(`--font-heading-2xl-line-height`),X(`--font-heading-3xl-line-height`),X(`--border-radius-xs`),X(`--border-radius-sm`),X(`--border-radius-md`),X(`--border-radius-lg`),X(`--border-radius-xl`),X(`--border-radius-full`),X(`--border-width-regular`),X(`--shadow-hairline`),X(`--shadow-sm`),X(`--shadow-md`),X(`--shadow-lg`)]).describe(`CSS variable keys available to MCP apps for theming.`).describe(`Style variables for theming MCP apps.
|
|
158
158
|
|
|
159
159
|
Individual style keys are optional - hosts may provide any subset of these values.
|
|
160
160
|
Values are strings containing CSS values (colors, sizes, font stacks, etc.).
|
|
@@ -200,7 +200,7 @@ Boolean requesting whether a visible border and background is provided by the ho
|
|
|
200
200
|
- omitted: host decides border`)});var wO=K({method:X(`ui/request-display-mode`),params:K({mode:oO.describe(`The display mode being requested.`)})}),TO=K({mode:oO.describe(`The display mode that was actually set. May differ from requested if not supported.`)}).passthrough(),EO=J([X(`model`),X(`app`)]).describe(`Tool visibility scope - who can access the tool.`);K({resourceUri:V().optional(),visibility:G(EO).optional().describe(`Who can access this tool. Default: ["model", "app"]
|
|
201
201
|
- "model": Tool visible to and callable by the agent
|
|
202
202
|
- "app": Tool callable by the app from this server only`),csp:Ap().optional(),permissions:Ap().optional()}),K({mimeTypes:G(V()).optional().describe('Array of supported MIME types for UI resources.\nMust include `"text/html;profile=mcp-app"` for MCP Apps support.')});var DO=K({method:X(`ui/download-file`),params:K({contents:G(J([$E,eD])).describe(`Resource contents to download — embedded (inline data) or linked (host fetches). Uses standard MCP resource types.`)})}),OO=K({method:X(`ui/message`),params:K({role:X(`user`).describe(`Message role, currently only "user" is supported.`),content:G(tD).describe(`Message content blocks (text, image, etc.).`)})});K({method:X(`ui/notifications/sandbox-resource-ready`),params:K({html:V().describe(`HTML content to load into the inner iframe.`),sandbox:V().optional().describe(`Optional override for the inner iframe's sandbox attribute.`),csp:pO.optional().describe(`CSP configuration from resource metadata.`),permissions:mO.optional().describe(`Sandbox permissions from resource metadata.`)})}),K({method:X(`ui/notifications/tool-result`),params:uD.describe(`Standard MCP tool execution result.`)});var kO=K({toolInfo:K({id:LT.optional().describe(`JSON-RPC id of the tools/call request.`),tool:sD.describe(`Tool definition including name, inputSchema, etc.`)}).optional().describe(`Metadata of the tool call that instantiated this App.`),theme:aO.optional().describe(`Current color theme preference.`),styles:_O.optional().describe(`Style configuration for theming the app.`),displayMode:oO.optional().describe(`How the UI is currently displayed.`),availableDisplayModes:G(oO).optional().describe(`Display modes the host supports.`),containerDimensions:J([K({height:H().describe(`Fixed container height in pixels.`)}),K({maxHeight:J([H(),Cp()]).optional().describe(`Maximum container height in pixels.`)})]).and(J([K({width:H().describe(`Fixed container width in pixels.`)}),K({maxWidth:J([H(),Cp()]).optional().describe(`Maximum container width in pixels.`)})])).optional().describe(`Container dimensions. Represents the dimensions of the iframe or other
|
|
203
|
-
container holding the app. Specify either width or maxWidth, and either height or maxHeight.`),locale:V().optional().describe(`User's language and region preference in BCP 47 format.`),timeZone:V().optional().describe(`User's timezone in IANA format.`),userAgent:V().optional().describe(`Host application identifier.`),platform:J([X(`web`),X(`desktop`),X(`mobile`)]).optional().describe(`Platform type for responsive design decisions.`),deviceCapabilities:K({touch:U().optional().describe(`Whether the device supports touch input.`),hover:U().optional().describe(`Whether the device supports hover interactions.`)}).optional().describe(`Device input capabilities.`),safeAreaInsets:K({top:H().describe(`Top safe area inset in pixels.`),right:H().describe(`Right safe area inset in pixels.`),bottom:H().describe(`Bottom safe area inset in pixels.`),left:H().describe(`Left safe area inset in pixels.`)}).optional().describe(`Mobile safe area boundaries in pixels.`)}).passthrough();K({method:X(`ui/notifications/host-context-changed`),params:kO.describe(`Partial context update containing only changed fields.`)});var AO=K({method:X(`ui/update-model-context`),params:K({content:G(tD).optional().describe(`Context content blocks (text, image, etc.).`),structuredContent:Y(V(),W().describe(`Structured content for machine-readable context data.`)).optional().describe(`Structured content for machine-readable context data.`)})}),jO=K({method:X(`ui/initialize`),params:K({appInfo:JT.describe(`App identification (name and version).`),appCapabilities:SO.describe(`Features and capabilities this app provides.`),protocolVersion:V().describe(`Protocol version this app supports.`)})}),MO=K({protocolVersion:V().describe(`Negotiated protocol version string (e.g., "2025-11-21").`),hostInfo:JT.describe(`Host application identification and version.`),hostCapabilities:xO.describe(`Features and capabilities provided by the host.`),hostContext:kO.describe(`Rich context about the host environment.`)}).passthrough(),NO=class{eventTarget;eventSource;messageListener;constructor(e=window.parent,t){this.eventTarget=e,this.eventSource=t,this.messageListener=e=>{if(t&&e.source!==this.eventSource){console.debug(`Ignoring message from unknown source`,e);return}let n=HT.safeParse(e.data);n.success?(console.debug(`Parsed message`,n.data),this.onmessage?.(n.data)):e.data?.jsonrpc===`2.0`?(console.error(`Failed to parse message`,n.error.message,e),this.onerror?.(Error(`Invalid JSON-RPC message received: `+n.error.message))):console.debug(`Ignoring non-JSON-RPC message`,n.error.message,e)}}async start(){window.addEventListener(`message`,this.messageListener)}async send(e,t){e.method!==`ui/notifications/tool-input-partial`&&console.debug(`Sending message`,e),this.eventTarget.postMessage(e,`*`)}async close(){window.removeEventListener(`message`,this.messageListener),this.onclose?.()}onclose;onerror;onmessage;sessionId;setProtocolVersion},PO=`text/html;profile=mcp-app`;function FO(e){if(!e)return``;let t=[];return e.camera&&t.push(`camera`),e.microphone&&t.push(`microphone`),e.geolocation&&t.push(`geolocation`),e.clipboardWrite&&t.push(`clipboard-write`),t.join(`; `)}var IO=[iO],LO=class extends Jb{_client;_hostInfo;_hostCapabilities;_appCapabilities;_hostContext={};_appInfo;_initializedReceived=!1;_registeredEvents=new Set;_events=new rO;_wrapHandler(e,t){let n=super._wrapHandler(e,t);return e===`ui/initialize`||e===`ping`?n:async(t,r)=>(this._initializedReceived||console.warn(`[ext-apps] AppBridge received '${e}' before ui/notifications/initialized. The View is calling host methods before completing the handshake; it should await app.connect() first.`),n(t,r))}eventSchemas={sizechange:hO,sandboxready:fO,initialized:CO,requestteardown:bO,loggingmessage:vD};setEventHandler(e,t){this._ensureEventSlot(e),this._events.setHandler(e,t)}getEventHandler(e){return this._events.getHandler(e)}addEventListener(e,t){this._ensureEventSlot(e),this._events.addEventListener(e,t)}removeEventListener(e,t){this._events.removeEventListener(e,t)}_ensureEventSlot(e){if(this._registeredEvents.has(e))return;let t=this.eventSchemas[e];if(!t)throw Error(`Unknown event: ${String(e)}`);let n=t=>{e===`initialized`&&(this._initializedReceived=!0),this._events.dispatch(e,t)};e===`loggingmessage`?this.setNotificationHandler(`notifications/message`,e=>{n(e.params)}):this.setNotificationHandler(t.shape.method.value,{params:t.shape.params},e=>n(e)),this._registeredEvents.add(e)}warnIfRequestHandlerReplaced(e,t,n){t&&n&&console.warn(`[MCP Apps] ${e} handler replaced. Previous handler will no longer be called.`)}constructor(e,t,n,r){super(r),this._client=e,this._hostInfo=t,this._hostCapabilities=n,this._ensureEventSlot(`initialized`),this._hostContext=r?.hostContext||{},this.setRequestHandler(`ui/initialize`,{params:jO.shape.params,result:MO},e=>this._onAppsInitialize(e)),this.setRequestHandler(`ping`,(e,t)=>(this.onping?.(e.params,t),{})),this.setRequestHandler(`ui/request-display-mode`,{params:wO.shape.params,result:TO},()=>({mode:this._hostContext.displayMode??`inline`}))}buildContext(e){return e}assertCapabilityForMethod(e){}assertRequestHandlerCapability(e){}assertNotificationCapability(e){}getAppCapabilities(){return this._appCapabilities}getAppVersion(){return this._appInfo}onping;get onsizechange(){return this.getEventHandler(`sizechange`)}set onsizechange(e){this.setEventHandler(`sizechange`,e)}get onsandboxready(){return this.getEventHandler(`sandboxready`)}set onsandboxready(e){this.setEventHandler(`sandboxready`,e)}get oninitialized(){return this.getEventHandler(`initialized`)}set oninitialized(e){this.setEventHandler(`initialized`,e)}_onmessage;get onmessage(){return this._onmessage}set onmessage(e){this.warnIfRequestHandlerReplaced(`onmessage`,this._onmessage,e),this._onmessage=e,this.setRequestHandler(`ui/message`,{params:OO.shape.params,result:dO},async(e,t)=>{if(!this._onmessage)throw Error(`No onmessage handler set`);return this._onmessage(e,t)})}_onopenlink;get onopenlink(){return this._onopenlink}set onopenlink(e){this.warnIfRequestHandlerReplaced(`onopenlink`,this._onopenlink,e),this._onopenlink=e,this.setRequestHandler(`ui/open-link`,{params:cO.shape.params,result:lO},async(e,t)=>{if(!this._onopenlink)throw Error(`No onopenlink handler set`);return this._onopenlink(e,t)})}_ondownloadfile;get ondownloadfile(){return this._ondownloadfile}set ondownloadfile(e){this.warnIfRequestHandlerReplaced(`ondownloadfile`,this._ondownloadfile,e),this._ondownloadfile=e,this.setRequestHandler(`ui/download-file`,{params:DO.shape.params,result:uO},async(e,t)=>{if(!this._ondownloadfile)throw Error(`No ondownloadfile handler set`);return this._ondownloadfile(e,t)})}get onrequestteardown(){return this.getEventHandler(`requestteardown`)}set onrequestteardown(e){this.setEventHandler(`requestteardown`,e)}_onrequestdisplaymode;get onrequestdisplaymode(){return this._onrequestdisplaymode}set onrequestdisplaymode(e){this.warnIfRequestHandlerReplaced(`onrequestdisplaymode`,this._onrequestdisplaymode,e),this._onrequestdisplaymode=e,this.setRequestHandler(`ui/request-display-mode`,{params:wO.shape.params,result:TO},async(e,t)=>{if(!this._onrequestdisplaymode)throw Error(`No onrequestdisplaymode handler set`);return this._onrequestdisplaymode(e,t)})}get onloggingmessage(){return this.getEventHandler(`loggingmessage`)}set onloggingmessage(e){this.setEventHandler(`loggingmessage`,e)}_onupdatemodelcontext;get onupdatemodelcontext(){return this._onupdatemodelcontext}set onupdatemodelcontext(e){this.warnIfRequestHandlerReplaced(`onupdatemodelcontext`,this._onupdatemodelcontext,e),this._onupdatemodelcontext=e,this.setRequestHandler(`ui/update-model-context`,{params:AO.shape.params,result:UT},async(e,t)=>{if(!this._onupdatemodelcontext)throw Error(`No onupdatemodelcontext handler set`);return this._onupdatemodelcontext(e,t)})}_oncalltool;get oncalltool(){return this._oncalltool}set oncalltool(e){this.warnIfRequestHandlerReplaced(`oncalltool`,this._oncalltool,e),this._oncalltool=e,this.setRequestHandler(`tools/call`,async(e,t)=>{if(!this._oncalltool)throw Error(`No oncalltool handler set`);return this._oncalltool(e.params,t)})}set oncreatesamplingmessage(e){this.setRequestHandler(`sampling/createMessage`,async(t,n)=>e(t.params,n))}sendToolListChanged(e={}){return this.notification({method:`notifications/tools/list_changed`,params:e})}_onlistresources;get onlistresources(){return this._onlistresources}set onlistresources(e){this.warnIfRequestHandlerReplaced(`onlistresources`,this._onlistresources,e),this._onlistresources=e,this.setRequestHandler(`resources/list`,async(e,t)=>{if(!this._onlistresources)throw Error(`No onlistresources handler set`);return this._onlistresources(e.params,t)})}_onlistresourcetemplates;get onlistresourcetemplates(){return this._onlistresourcetemplates}set onlistresourcetemplates(e){this.warnIfRequestHandlerReplaced(`onlistresourcetemplates`,this._onlistresourcetemplates,e),this._onlistresourcetemplates=e,this.setRequestHandler(`resources/templates/list`,async(e,t)=>{if(!this._onlistresourcetemplates)throw Error(`No onlistresourcetemplates handler set`);return this._onlistresourcetemplates(e.params,t)})}_onreadresource;get onreadresource(){return this._onreadresource}set onreadresource(e){this.warnIfRequestHandlerReplaced(`onreadresource`,this._onreadresource,e),this._onreadresource=e,this.setRequestHandler(`resources/read`,async(e,t)=>{if(!this._onreadresource)throw Error(`No onreadresource handler set`);return this._onreadresource(e.params,t)})}sendResourceListChanged(e={}){return this.notification({method:`notifications/resources/list_changed`,params:e})}_onlistprompts;get onlistprompts(){return this._onlistprompts}set onlistprompts(e){this.warnIfRequestHandlerReplaced(`onlistprompts`,this._onlistprompts,e),this._onlistprompts=e,this.setRequestHandler(`prompts/list`,async(e,t)=>{if(!this._onlistprompts)throw Error(`No onlistprompts handler set`);return this._onlistprompts(e.params,t)})}sendPromptListChanged(e={}){return this.notification({method:`notifications/prompts/list_changed`,params:e})}getCapabilities(){return this._hostCapabilities}async _onAppsInitialize(e){let t=e.protocolVersion;return this._appInfo!==void 0&&console.warn(`[ext-apps] AppBridge received a second ui/initialize. The View may be double-mounting (e.g. React StrictMode in dev) without closing the previous App instance. Responding normally; the latest appInfo/appCapabilities replace the previous values.`),this._appCapabilities=e.appCapabilities,this._appInfo=e.appInfo,{protocolVersion:IO.includes(t)?t:iO,hostCapabilities:this.getCapabilities(),hostInfo:this._hostInfo,hostContext:this._hostContext}}setHostContext(e){let t={},n=!1;for(let r of Object.keys(e)){let i=this._hostContext[r],a=e[r];RO(i,a)||(t[r]=a,n=!0)}n&&(this._hostContext=e,this.sendHostContextChange(t))}sendHostContextChange(e){return this.notification({method:`ui/notifications/host-context-changed`,params:e})}sendToolInput(e){return this.notification({method:`ui/notifications/tool-input`,params:e})}sendToolInputPartial(e){return this.notification({method:`ui/notifications/tool-input-partial`,params:e})}sendToolResult(e){return this.notification({method:`ui/notifications/tool-result`,params:e})}sendToolCancelled(e){return this.notification({method:`ui/notifications/tool-cancelled`,params:e})}sendSandboxResourceReady(e){return this.notification({method:`ui/notifications/sandbox-resource-ready`,params:e})}teardownResource(e,t){return this.request({method:`ui/resource-teardown`,params:e},vO,t)}sendResourceTeardown=this.teardownResource;callTool(e,t){return this.request({method:`tools/call`,params:e},t)}listTools(e,t){return this.request({method:`tools/list`,params:e},t)}async connect(e){if(this.transport)throw Error(`AppBridge is already connected. Call close() before connecting again.`);if(this._initializedReceived=!1,this._client){let e=this._client.getServerCapabilities();if(!e)throw Error(`Client server capabilities not available`);e.tools&&(this.oncalltool=async(e,t)=>this._client.request({method:`tools/call`,params:e},{signal:t.mcpReq.signal}),e.tools.listChanged&&this._client.setNotificationHandler(`notifications/tools/list_changed`,e=>this.sendToolListChanged(e.params))),e.resources&&(this.onlistresources=async(e,t)=>this._client.request({method:`resources/list`,params:e},{signal:t.mcpReq.signal}),this.onlistresourcetemplates=async(e,t)=>this._client.request({method:`resources/templates/list`,params:e},{signal:t.mcpReq.signal}),this.onreadresource=async(e,t)=>this._client.request({method:`resources/read`,params:e},{signal:t.mcpReq.signal}),e.resources.listChanged&&this._client.setNotificationHandler(`notifications/resources/list_changed`,e=>this.sendResourceListChanged(e.params))),e.prompts&&(this.onlistprompts=async(e,t)=>this._client.request({method:`prompts/list`,params:e},{signal:t.mcpReq.signal}),e.prompts.listChanged&&this._client.setNotificationHandler(`notifications/prompts/list_changed`,e=>this.sendPromptListChanged(e.params)))}return super.connect(e)}};function RO(e,t){return JSON.stringify(e)===JSON.stringify(t)}var zO=Object.defineProperty,BO=Object.getOwnPropertyNames,VO=(e,t)=>function(){return e&&(t=(0,e[BO(e)[0]])(e=0)),t},HO=(e,t)=>{for(var n in t)zO(e,n,{get:t[n],enumerable:!0})};function UO(){let e;try{e=typeof process<`u`?{}.MCP_USE_LOG_LEVEL??{}.DEBUG:void 0}catch{}let t=e?.trim().toLowerCase();return t===`2`?`debug`:t&&WO.includes(t)?t:`info`}var WO,GO,KO,qO,$,JO=VO({"src/utils/logging.ts"(){WO=[`silent`,`error`,`warn`,`info`,`http`,`verbose`,`debug`,`silly`],GO={silent:``,error:`❌`,warn:`⚠️`,info:`ℹ️`,http:`🌐`,verbose:`📝`,debug:`🔍`,silly:`🤪`},KO=class{constructor(e=`mcp-use`,t=`info`,n=`minimal`){this.name=e,this.level=t,this.format=n}write(e,t,n){if(this.level===`silent`||WO.indexOf(e)>WO.indexOf(this.level))return;let r=n.map(e=>{if(typeof e==`string`)return e;try{return JSON.stringify(e)}catch{return String(e)}}).join(` `),i=r?`${t} ${r}`:t,a=new Date().toLocaleTimeString(`en-US`,{hour12:!1}),o=this.format===`minimal`?e:e.toUpperCase(),s=this.format===`emoji`?` ${GO[e]}`:``,c=`${a} [${this.name}]${s} ${o}: ${i}`;(e===`error`?console.error:e===`warn`?console.warn:e===`info`?console.info:e===`debug`?console.debug:console.log)(c)}error=(e,...t)=>this.write(`error`,e,t);warn=(e,...t)=>this.write(`warn`,e,t);info=(e,...t)=>this.write(`info`,e,t);debug=(e,...t)=>this.write(`debug`,e,t);http=(e,...t)=>this.write(`http`,e,t);verbose=(e,...t)=>this.write(`verbose`,e,t);silly=(e,...t)=>this.write(`silly`,e,t);setFormat(e){this.format=e}},qO=class{static instances={};static currentFormat=`minimal`;static currentLevel;static get(e=`mcp-use`){return this.instances[e]??=new KO(e,this.currentLevel??UO(),this.currentFormat)}static configure({level:e=UO(),format:t=`minimal`}={}){this.currentLevel=e,this.currentFormat=t;for(let n of Object.values(this.instances))n.level=e,n.format=t}static setDebug(e){let t=e===2||e===!0?`debug`:`info`;this.currentLevel=t;for(let e of Object.values(this.instances))e.level=t;try{typeof process<`u`&&({}.MCP_USE_LOG_LEVEL=t)}catch{}}static setFormat(e){this.configure({format:e})}},$=qO.get()}}),YO={};HO(YO,{clearRpcLogs:()=>$O,getAllRpcLogs:()=>ZO,getRpcLogs:()=>XO,subscribeToRpcLogs:()=>QO,wrapTransportForLogging:()=>ek});function XO(e){return rk.getLogsForServer(e)}function ZO(){return rk.getAllLogs()}function QO(e){return rk.subscribe(e)}function $O(e){rk.clear(e)}function ek(e,t){class n{constructor(e){this.inner=e,this.inner.onmessage=(e,n)=>{rk.publish({serverId:t,direction:`receive`,timestamp:new Date().toISOString(),message:e}),this.onmessage?.(e,n)},this.inner.onclose=()=>{this.onclose?.()},this.inner.onerror=e=>{this.onerror?.(e)}}onclose;onerror;onmessage;async start(){typeof this.inner.start==`function`&&await this.inner.start()}async send(e,n){rk.publish({serverId:t,direction:`send`,timestamp:new Date().toISOString(),message:e}),await this.inner.send(e,n)}async close(){await this.inner.close()}get sessionId(){return this.inner.sessionId}setProtocolVersion(e){typeof this.inner.setProtocolVersion==`function`&&this.inner.setProtocolVersion(e)}}return new n(e)}var tk,nk,rk,ik=VO({"src/react/rpc-logger.ts"(){JO(),tk=qO.get(`RpcLogger`),nk=class{logs=[];listeners=new Set;maxLogs=1e3;publish(e){tk.debug(`[RPC Logger] Publishing log:`,e.direction,e.serverId,e.message?.method),this.logs.push(e),this.logs.length>this.maxLogs&&(this.logs=this.logs.slice(-this.maxLogs)),tk.debug(`[RPC Logger] Total logs:`,this.logs.length,`Listeners:`,this.listeners.size),this.listeners.forEach(t=>{try{t(e)}catch(e){tk.error(`[RPC Logger] Listener error:`,e)}})}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}getLogsForServer(e){return this.logs.filter(t=>t.serverId===e)}getAllLogs(){return[...this.logs]}clear(e){e?this.logs=this.logs.filter(t=>t.serverId!==e):this.logs=[]}},rk=new nk}}),ak=`mcp_auth_callback`,ok=`mcp_auth_callback`;function sk(e){try{return typeof localStorage<`u`&&!!localStorage.getItem(e)}catch{return!1}}function ck({popup:e,state:t,tokensKey:n,timeoutMs:r=5*6e4,closePollMs:i=1e3,closeGraceMs:a=2e4,expectedOrigin:o=typeof window<`u`?window.location.origin:``}){return new Promise(s=>{let c=!1,l=null,u=null,d=null,f=null,p=()=>{if(l&&=(clearInterval(l),null),u&&=(clearTimeout(u),null),d&&=(clearTimeout(d),null),typeof window<`u`&&(window.removeEventListener(`message`,g),window.removeEventListener(`storage`,v)),f){try{f.removeEventListener(`message`,_),f.close()}catch{}f=null}},m=e=>{c||(c=!0,p(),s(e))},h=e=>{!e||e.type!==ok||e.state&&t&&e.state!==t||(e.success?m({kind:`success`}):m({kind:`error`,error:e.error??`Authentication failed in callback.`}))},g=e=>{o&&e.origin!==o||h(e.data)},_=e=>{h(e.data)},v=e=>{e.key===n&&e.newValue&&m({kind:`success`})};if(typeof window<`u`&&(window.addEventListener(`message`,g),window.addEventListener(`storage`,v)),typeof BroadcastChannel<`u`)try{f=new BroadcastChannel(ak),f.addEventListener(`message`,_)}catch{f=null}e&&(l=setInterval(()=>{if(c)return;let t=!1;try{t=e.closed}catch{t=!1}if(t){if(l&&=(clearInterval(l),null),sk(n)){m({kind:`success`});return}d=setTimeout(()=>{m(sk(n)?{kind:`success`}:{kind:`cancelled`})},a)}},i)),u=setTimeout(()=>{m(sk(n)?{kind:`success`}:{kind:`timeout`})},r)})}JO();var lk=`http://json-schema.org/draft-04/schema`,uk=new Set([`http://json-schema.org/draft-07/schema`,`https://json-schema.org/draft-07/schema`]),dk=new Set([`https://json-schema.org/draft/2019-09/schema`,`http://json-schema.org/draft/2019-09/schema`]),fk=new Set([`https://json-schema.org/draft/2020-12/schema`,`http://json-schema.org/draft/2020-12/schema`]);function pk(e){if(!(`$schema`in e)||typeof e.$schema!=`string`)return`2020-12`;let t=e.$schema.replace(/#$/,``);if(t===lk)return`4`;if(uk.has(t))return`7`;if(dk.has(t))return`2019-09`;if(fk.has(t))return`2020-12`}var mk=class{getValidator(e){let t=pk(e);return(t===void 0?new Jx:new Jx({draft:t})).getValidator(e)}};JO();var hk;function gk(e){hk?.(e)}var _k={"~standard":{version:1,vendor:`mcp-use`,validate:e=>({value:e})}},vk=class{client=null;connectionManager=null;toolsCache=null;capabilitiesCache=null;serverInfoCache=null;connected=!1;opts;notificationHandlers=[];rootsCache=[];activeProgressHandlers=new Set;constructor(e={}){this.opts=e,e.roots&&(this.rootsCache=[...e.roots]),e.onNotification&&this.notificationHandlers.push(e.onNotification)}trackConnectorInit(e){let t=this.constructor.name;gk({connectorType:t,...e})}onNotification(e){this.notificationHandlers.push(e),this.client&&this.setupNotificationHandler()}async forwardNotification(e){for(let t of this.notificationHandlers)try{await t(e)}catch(e){$.error(`Error in notification handler:`,e)}}async handleListChanged(e,t,n){if(t){$.warn(`[Auto] ${e} refresh failed:`,t);return}e===`notifications/tools/list_changed`&&n&&(this.toolsCache=[...n]),await this.forwardNotification({method:e})}setupNotificationHandler(){if(!this.client)return;this.client.fallbackNotificationHandler=async e=>{switch(e.method){case`notifications/tools/list_changed`:await this.refreshToolsCache();break;case`notifications/resources/list_changed`:await this.onResourcesListChanged();break;case`notifications/prompts/list_changed`:await this.onPromptsListChanged();break;default:break}await this.forwardNotification(e)};let e=this.client._notificationHandlers;for(let t of[`notifications/progress`,`notifications/cancelled`]){let n=e.get(t);n&&e.set(t,async e=>{await n(e),await this.forwardNotification(e)})}}setupRoundProgressForwarding(){if(!this.client)return;let e=this.client,t=e._onnotification.bind(this.client);e._onnotification=async e=>{e&&typeof e==`object`&&e.method===`notifications/progress`&&this.forwardRoundProgress(e.params),await t?.(e)}}forwardRoundProgress(e){if(this.activeProgressHandlers.size===1){let[t]=this.activeProgressHandlers;t?.(e)}}async refreshToolsCache(){if(this.client)try{$.debug(`[Auto] Refreshing tools cache due to list_changed notification`);let e=await this.client.listTools();this.toolsCache=e.tools??[],$.debug(`[Auto] Refreshed tools cache: ${this.toolsCache.length} tools`)}catch(e){$.warn(`[Auto] Failed to refresh tools cache:`,e)}}async onResourcesListChanged(){$.debug(`[Auto] Resources list changed - clients should re-fetch if needed`)}async onPromptsListChanged(){$.debug(`[Auto] Prompts list changed - clients should re-fetch if needed`)}async setRoots(e){this.rootsCache=[...e],this.client&&($.debug(`Sending roots/list_changed notification with ${e.length} root(s)`),await this.client.sendRootsListChanged())}getRoots(){return[...this.rootsCache]}setupRootsHandler(){this.client&&this.client.setRequestHandler(`roots/list`,async()=>($.debug(`Server requested roots list, returning ${this.rootsCache.length} root(s)`),{roots:this.rootsCache}))}setupSamplingHandler(){if(!this.client){$.debug(`setupSamplingHandler: No client available`);return}let e=this.opts.onSampling;if(!e){$.debug(`setupSamplingHandler: No sampling callback provided`);return}$.debug(`setupSamplingHandler: Setting up sampling request handler`),this.client.setRequestHandler(`sampling/createMessage`,async t=>($.debug(`Server requested sampling, forwarding to callback`),await e(t.params))),$.debug(`setupSamplingHandler: Sampling handler registered successfully`)}setupElicitationHandler(){if(!this.client){$.debug(`setupElicitationHandler: No client available`);return}let e=this.opts.onElicitation;if(!e){$.debug(`setupElicitationHandler: No elicitation callback provided`);return}$.debug(`setupElicitationHandler: Setting up elicitation request handler`),this.client.setRequestHandler(`elicitation/create`,async t=>($.debug(`Server requested elicitation, forwarding to callback`),await e(t.params))),$.debug(`setupElicitationHandler: Elicitation handler registered successfully`)}async disconnect(){if(!this.connected){$.debug(`Not connected to MCP implementation`);return}$.debug(`Disconnecting from MCP implementation`),await this.cleanupResources(),this.connected=!1,$.debug(`Disconnected from MCP implementation`)}get isClientConnected(){return this.client!=null}async initialize(e=this.opts.defaultRequestOptions??{}){if(!this.client)throw Error(`MCP client is not connected`);$.debug(`Caching server capabilities & tools`);let t=this.client.getServerCapabilities();this.capabilitiesCache=t||null;let n=this.client.getServerVersion();this.serverInfoCache=n?{name:n.name,version:n.version,title:n.title,description:n.description,websiteUrl:n.websiteUrl,icons:n.icons}:null;try{let t=await this.client.listTools(void 0,e);this.toolsCache=t.tools??[],$.debug(`Fetched ${this.toolsCache.length} tools from server`)}catch(e){let t=e;t.code===-32601?$.debug(`Server does not implement tools/list, assuming no tools`):$.debug(`Failed to list tools, assuming empty:`,t.message),this.toolsCache=[]}return $.debug(`Server capabilities:`,t),$.debug(`Server info:`,n),t}get tools(){if(!this.toolsCache)throw Error(`MCP client is not initialized; call initialize() first`);return this.toolsCache}get serverCapabilities(){return this.capabilitiesCache||{}}get serverInfo(){return this.serverInfoCache}get instructions(){return this.client?.getInstructions?.()}get protocolEra(){return this.client?.getProtocolEra?.()}get negotiatedProtocolVersion(){return this.client?.getNegotiatedProtocolVersion?.()}async callTool(e,t,n){if(!this.client)throw Error(`MCP client is not connected`);let r=n?{...n}:void 0;r?.resetTimeoutOnProgress&&!r.onprogress&&(r.onprogress=()=>{},$.debug(`[BaseConnector] Added onprogress callback for tool '${e}' to enable progressToken`)),$.debug(`Calling tool '${e}' with args`,t);let i=r?.onprogress;i&&this.activeProgressHandlers.add(i);try{let n=await this.client.callTool({name:e,arguments:t},r);return $.debug(`Tool '${e}' returned`,n),n}finally{i&&this.activeProgressHandlers.delete(i)}}async listTools(e){if(!this.client)throw Error(`MCP client is not connected`);$.debug(`[listTools] Fetching fresh tools from server...`);let t=await this.client.listTools(void 0,e),n=t.tools?[...t.tools]:[];return $.debug(`[listTools] Returned ${n.length} tools:`,n.map(e=>e.name)),n}async listResources(e,t){if(!this.client)throw Error(`MCP client is not connected`);return $.debug(`Listing resources`,e?`with cursor: ${e}`:``),await this.client.listResources({cursor:e},t)}async listAllResources(e){if(!this.client)throw Error(`MCP client is not connected`);if(!this.capabilitiesCache?.resources)return $.debug(`Server does not advertise resources capability, skipping`),{resources:[]};try{$.debug(`Listing all resources (with auto-pagination)`);let t=[],n;do{let r=await this.client.listResources({cursor:n},e);t.push(...r.resources||[]),n=r.nextCursor}while(n);return{resources:t}}catch(e){if(e.code===-32601)return $.debug(`Server advertised resources but method not found`),{resources:[]};throw e}}async listResourceTemplates(e){if(!this.client)throw Error(`MCP client is not connected`);return $.debug(`Listing resource templates`),await this.client.listResourceTemplates(void 0,e)}async complete(e,t){if(!this.client)throw Error(`MCP client is not connected`);$.debug(`[complete] Requesting completions for:`,e.ref);let n=await this.client.complete(e,t);return $.debug(`[complete] Received ${n.completion.values.length} suggestions`),n}async readResource(e,t){if(!this.client)throw Error(`MCP client is not connected`);return $.debug(`Reading resource ${e}`),await this.client.readResource({uri:e},t)}async subscribeToResource(e,t){if(!this.client)throw Error(`MCP client is not connected`);return $.debug(`Subscribing to resource: ${e}`),await this.client.subscribeResource({uri:e},t)}async unsubscribeFromResource(e,t){if(!this.client)throw Error(`MCP client is not connected`);return $.debug(`Unsubscribing from resource: ${e}`),await this.client.unsubscribeResource({uri:e},t)}async listPrompts(){if(!this.client)throw Error(`MCP client is not connected`);if(!this.capabilitiesCache?.prompts)return $.debug(`Server does not advertise prompts capability, skipping`),{prompts:[]};try{return $.debug(`Listing prompts`),await this.client.listPrompts()}catch(e){if(e.code===-32601)return $.debug(`Server advertised prompts but method not found`),{prompts:[]};throw e}}async getPrompt(e,t){if(!this.client)throw Error(`MCP client is not connected`);return $.debug(`Getting prompt ${e}`),await this.client.getPrompt({name:e,arguments:t})}async request(e,t=null,n){if(!this.client)throw Error(`MCP client is not connected`);return $.debug(`Sending raw request '${e}' with params`,t),await this.client.request({method:e,params:t??{}},_k,n)}async cleanupResources(){let e=[];if(this.client)try{typeof this.client.close==`function`&&await this.client.close()}catch(t){let n=`Error closing client: ${t}`;$.warn(n),e.push(n)}finally{this.client=null}if(this.connectionManager)try{await this.connectionManager.stop()}catch(t){let n=`Error stopping connection manager: ${t}`;$.warn(n),e.push(n)}finally{this.connectionManager=null}this.toolsCache=null,e.length&&$.warn(`Resource cleanup finished with ${e.length} issue(s)`)}};function yk(e,t=0){if(!e||t>5)return!1;if(e instanceof xS||e instanceof Z_&&e.status===401)return!0;if(e instanceof Error){if(e.cause&&yk(e.cause,t+1))return!0;let n=e instanceof X_?e.data:void 0;if(n?.cause&&yk(n.cause,t+1))return!0}return!1}function bk(e,t,n,r){let i=new URL(e),a=t.replace(/\/$/,``);return async(e,t)=>{let o=new Request(e,t),s=new URL(o.url);if(!(s.origin===i.origin&&s.pathname===i.pathname))return n(o);let c=new Headers(o.headers);c.set(`X-Target-URL`,o.url),r&&c.set(`X-Server-Id`,r);let l=o.method===`GET`||o.method===`HEAD`?void 0:await o.clone().arrayBuffer();return n(new Request(a,{method:o.method,headers:c,body:l,signal:o.signal,redirect:`manual`}))}}var xk=class extends vk{baseUrl;headers;timeout;customFetch;clientInfo;protocolNegotiation;gatewayUrl;serverId;reconnectionOptions;transportType=null;streamableTransport=null;constructor(e,t={}){super(t);let n=e.replace(/\/$/,``);this.baseUrl=n,this.headers={...t.headers??{}},this.gatewayUrl=t.gatewayUrl,this.serverId=t.serverId,t.authToken&&(this.headers.Authorization=`Bearer ${t.authToken}`),this.timeout=t.timeout??1e4;let r=t.fetch??globalThis.fetch.bind(globalThis);this.customFetch=this.gatewayUrl?bk(n,this.gatewayUrl,r,this.serverId):t.fetch,this.clientInfo=t.clientInfo??{name:`http-connector`,version:`1.0.0`},this.protocolNegotiation=t.protocolNegotiation??`auto`,this.reconnectionOptions=t.reconnectionOptions}buildClientOptions(){return{...this.opts.clientOptions||{},jsonSchemaValidator:this.opts.clientOptions?.jsonSchemaValidator??new mk,versionNegotiation:{mode:this.protocolNegotiation,...this.opts.clientOptions?.versionNegotiation??{}},listChanged:{tools:{autoRefresh:!0,onChanged:(e,t)=>void this.handleListChanged(`notifications/tools/list_changed`,e,t)},resources:{autoRefresh:!1,onChanged:e=>void this.handleListChanged(`notifications/resources/list_changed`,e)},prompts:{autoRefresh:!1,onChanged:e=>void this.handleListChanged(`notifications/prompts/list_changed`,e)},...this.opts.clientOptions?.listChanged??{}},capabilities:{...this.opts.clientOptions?.capabilities||{},roots:{listChanged:!0},...this.opts.onSampling?{sampling:{}}:{},...this.opts.onElicitation?{elicitation:{form:{},url:{}}}:{}}}}unwrapStreamableError(e){return e instanceof Z_?e:e instanceof Error&&e.cause instanceof Z_?e.cause:null}classifyStreamableHttpFailure(e){let t=`Unknown error`,n=!1,r,i=this.unwrapStreamableError(e);if(i){let e=i.status;return n=e===401,r=e,e===400&&i.message.includes(`Missing session ID`)?(t=`Server requires session ID (FastMCP compatibility)`,$.warn(`\u26A0\uFE0F ${t}`)):e===404||e===405?(t=`Server returned ${e} - server likely doesn't support streamable HTTP`,$.debug(t)):(t=`Server returned ${e}: ${i.message}`,$.debug(t)),{fallbackReason:t,is401Error:n,httpStatusCode:r}}if(e instanceof Error){let r=e.toString(),i=e.message||``;n=yk(e)||r.includes(`401`)||i.includes(`Unauthorized`),r.includes(`Missing session ID`)||r.includes(`Bad Request: Missing session ID`)||i.includes(`FastMCP session ID error`)?(t=`Server requires session ID (FastMCP compatibility)`,$.warn(`\u26A0\uFE0F ${t}`)):r.includes(`405 Method Not Allowed`)||r.includes(`404 Not Found`)?(t=`Server doesn't support streamable HTTP (405/404)`,$.debug(t)):(t=`Streamable HTTP failed: ${e.message}`,$.debug(t))}return{fallbackReason:t,is401Error:n,httpStatusCode:r}}async connect(){if(this.connected){$.debug(`Already connected to MCP implementation`);return}let e=this.baseUrl;$.debug(`Connecting to MCP implementation via HTTP: ${e}`);try{await this.connectWithStreamableHttp(e),$.debug(`✅ Successfully connected via streamable HTTP`)}catch(e){$.debug(`Streamable HTTP connect failed`,e);let{fallbackReason:t,is401Error:n,httpStatusCode:r}=this.classifyStreamableHttpFailure(e);if(await this.cleanupResources(),n){$.info(`Authentication required`);let e=Error(`Authentication required`);throw e.code=401,e}let i=Error(`Could not connect via streamable HTTP: ${t}`);throw r!==void 0&&Object.defineProperty(i,"code",{value:r,writable:!1,enumerable:!0,configurable:!0}),i}}observeSseProgress(e){if(!e.body||!e.headers.get(`content-type`)?.includes(`text/event-stream`))return e;let[t,n]=e.body.tee();return(async()=>{let e=n.getReader(),t=new TextDecoder,r=``;try{for(;;){let{done:n,value:i}=await e.read();if(n)break;r+=t.decode(i,{stream:!0});let a=r.split(/\r?\n\r?\n/);r=a.pop()??``;for(let e of a)for(let t of e.split(/\r?\n/))if(t.startsWith(`data:`))try{let e=JSON.parse(t.slice(5).trim());e.method===`notifications/progress`&&this.forwardRoundProgress(e.params)}catch{}}}catch(e){e instanceof DOMException&&e.name===`AbortError`||$.debug(`Progress observer stream ended:`,e)}finally{e.releaseLock()}})(),new Response(t,{status:e.status,statusText:e.statusText,headers:e.headers})}async connectWithStreamableHttp(e){try{$.debug(`[HttpConnector] Connecting with Streamable HTTP`,{baseUrl:e,originalUrl:this.baseUrl,gatewayUrl:this.gatewayUrl||`none`,authProviderUrl:this.opts.authProvider&&`serverUrl`in this.opts.authProvider&&typeof this.opts.authProvider.serverUrl==`string`?this.opts.authProvider.serverUrl:`none`,headers:this.headers});let t,n=new Promise(e=>{t=e}),r=this.customFetch??globalThis.fetch.bind(globalThis),i=new GC(new URL(e),{authProvider:this.opts.authProvider,fetch:async(e,n)=>{let i=await r(e,n),a=n?.method??(e instanceof Request?e.method:`GET`),o=new Headers(e instanceof Request?e.headers:void 0);return new Headers(n?.headers).forEach((e,t)=>{o.set(t,e)}),a.toUpperCase()===`GET`&&i.ok&&i.headers.get(`content-type`)?.includes(`text/event-stream`)&&t?.(),o.get(`mcp-method`)===`subscriptions/listen`?i:this.observeSseProgress(i)},requestInit:{headers:this.headers},reconnectionOptions:{maxReconnectionDelay:3e4,initialReconnectionDelay:1e3,reconnectionDelayGrowFactor:1.5,maxRetries:2,...this.reconnectionOptions}}),a=i;if(this.opts.wrapTransport){let e=this.baseUrl;a=this.opts.wrapTransport(a,e)}let o=this.buildClientOptions();$.debug(`Creating Client with capabilities:`,JSON.stringify(o.capabilities,null,2)),this.client=new BC(this.clientInfo,o),this.setupRootsHandler(),this.setupSamplingHandler(),this.setupElicitationHandler(),$.debug(`Roots/sampling/elicitation handlers registered before connect`);try{let e;if(await Promise.race([this.client.connect(a),new Promise((t,n)=>{e=setTimeout(()=>n(Error(`MCP connection timed out after ${this.timeout}ms`)),this.timeout)})]).finally(()=>{e!==void 0&&clearTimeout(e)}),(this.client.getProtocolEra?.()??`legacy`)===`legacy`&&i.sessionId){let e,t=await Promise.race([n.then(()=>!0),new Promise(t=>e=setTimeout(()=>t(!1),Math.min(this.timeout,5e3)))]);e&&clearTimeout(e),t||$.warn(`Legacy server push stream did not attach before connect completed`)}let t=i.sessionId;t&&$.debug(`Session ID obtained: ${t}`)}catch(e){if(e instanceof Error){let t=e.message||e.toString();if(t.includes(`Missing session ID`)||t.includes(`Bad Request: Missing session ID`)||t.includes(`Mcp-Session-Id header is required`)){let n=Error(`Session ID error: ${t}. The SDK should automatically extract session ID from initialize response.`);throw n.cause=e,n}}throw e}this.streamableTransport=i,this.connectionManager={stop:async()=>{if(this.streamableTransport)try{await this.streamableTransport.close()}catch(e){$.warn(`Error closing Streamable HTTP transport: ${e}`)}finally{this.streamableTransport=null}}},this.connected=!0,this.transportType=`streamable-http`,this.setupNotificationHandler(),$.debug(`Successfully connected to MCP implementation via streamable HTTP: ${e}`),this.trackConnectorInit({serverUrl:this.baseUrl,publicIdentifier:`${this.baseUrl} (streamable-http)`})}catch(e){throw await this.cleanupResources(),e}}get publicIdentifier(){return{type:`http`,url:this.baseUrl,transport:this.transportType||`unknown`,protocolEra:this.protocolEra??`unknown`}}getTransportType(){return this.transportType}async cleanupResources(){if(this.streamableTransport&&this.protocolEra!==`modern`){let e;try{await Promise.race([this.streamableTransport.terminateSession().then(()=>!0),new Promise(t=>e=setTimeout(()=>t(!1),Math.min(this.timeout,5e3)))])||$.debug(`Timed out terminating legacy HTTP session; closing transport`)}catch(e){$.debug(`Error terminating Streamable HTTP session: ${e}`)}finally{e&&clearTimeout(e)}}await super.cleanupResources()}},Sk=`2.0.0-beta.7`;function Ck(){return Sk}function wk(e,t){return{onSampling:e?.onSampling??t?.onSampling,onElicitation:e?.onElicitation??t?.onElicitation,onNotification:e?.onNotification??t?.onNotification}}function Tk(e){if(!(`url`in e)||typeof e.url!=`string`||e.authProvider||e.authToken||e.oauth===!1)return!1;let t=e.headers;if(t){for(let e of Object.keys(t))if(e.toLowerCase()===`authorization`)return!1}return!0}function Ek(){return{name:`mcp-use`,title:`mcp-use`,version:Ck(),description:`mcp-use is a complete TypeScript framework for building and using MCP`,icons:[{src:`https://mcp-use.com/logo.png`}],websiteUrl:`https://mcp-use.com`}}function Dk(e){let t=Ek();if(!e||typeof e!=`object`)return t;let n=e;return!n.name||!n.version?t:{...t,...n}}function Ok(e){let t=e?.capabilities;if(!t||t.views!==!0)return e;let{views:n,...r}=t,i=r.extensions&&typeof r.extensions==`object`&&!Array.isArray(r.extensions)?{...r.extensions}:{};return{...e,capabilities:{...r,extensions:{...i,"io.modelcontextprotocol/ui":{mimeTypes:[`text/html;profile=mcp-app`]}}}}}function kk(e){let t=()=>{throw Error(`Invalid url to pass to open(): ${e}`)},n;try{n=new URL(e)}catch{t()}return n.protocol!==`https:`&&n.protocol!==`http:`&&t(),n.hostname!==encodeURIComponent(n.hostname)&&t(),n.username&&=encodeURIComponent(n.username),n.password&&=encodeURIComponent(n.password),n.pathname=n.pathname.slice(0,1)+encodeURIComponent(n.pathname.slice(1)).replace(/%2f/gi,`/`),n.search=n.search.slice(0,1)+Array.from(n.searchParams.entries()).map(Ak).join(`&`),n.hash=n.hash.slice(0,1)+encodeURIComponent(n.hash.slice(1)),n.href}function Ak([e,t]){return`${encodeURIComponent(e)}${t.length>0?`=${encodeURIComponent(t)}`:``}`}var jk=class{get(e){return localStorage.getItem(e)}set(e,t){localStorage.setItem(e,t)}remove(e){localStorage.removeItem(e)}keys(){let e=[];for(let t=0;t<localStorage.length;t++){let n=localStorage.key(t);n&&e.push(n)}return e}},Mk=class e{serverUrl;storageKeyPrefix;serverUrlHash;clientName;clientUri;logoUri;callbackUrl;clientMetadataUrl;scope;store;allowClientSecret;constructor(t,n,r){US(n.clientMetadataUrl),this.serverUrl=t,this.storageKeyPrefix=n.storageKeyPrefix||`mcp:auth`,this.serverUrlHash=e.hashString(t),this.clientName=n.clientName||`mcp-use`,this.clientUri=n.clientUri||(typeof window<`u`?window.location.origin:`https://mcp-use.com`),this.logoUri=n.logoUri||`https://mcp-use.com/logo.png`,this.callbackUrl=kk(n.callbackUrl||(typeof window<`u`?new URL(`/oauth/callback`,window.location.origin).toString():`/oauth/callback`)),this.clientMetadataUrl=n.clientMetadataUrl,this.scope=n.scope,this.store=r,this.allowClientSecret=n.allowClientSecret??!0}getKey(e){return`${this.storageKeyPrefix}_${this.serverUrlHash}_${e}`}static hashString(e){let t=0;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);t=(t<<5)-t+r,t&=t}return Math.abs(t).toString(16)}get redirectUrl(){return this.callbackUrl}get clientMetadata(){return{redirect_uris:[this.redirectUrl],token_endpoint_auth_method:`none`,grant_types:[`authorization_code`,`refresh_token`],response_types:[`code`],client_name:this.clientName,client_uri:this.clientUri,logo_uri:this.logoUri,...this.scope?{scope:this.scope}:{}}}credentialKey(e,t){return t?this.getKey(`${e}_${encodeURIComponent(t.issuer)}`):this.getKey(e)}async readCredential(e,t){let n=this.credentialKey(e,t),r=await this.store.get(n);if(!r&&t){let r=this.credentialKey(e),i=await this.store.get(r);if(i)try{let e=JSON.parse(i);if(!e.issuer||e.issuer===t.issuer){let i={...e,issuer:t.issuer},a=JSON.stringify(i);return await this.store.set(n,a),await this.store.set(r,a),{key:n,value:i}}}catch{await this.store.remove(r)}return}if(r)try{return{key:n,value:JSON.parse(r)}}catch(t){console.warn(`[${this.storageKeyPrefix}] Failed to parse ${e.replace(`_`,` `)}:`,t),await this.store.remove(n);return}}async tokens(e){return(await this.readCredential(`tokens`,e))?.value}async saveTokens(e,t){let n=JSON.stringify(e);await this.store.set(this.credentialKey(`tokens`,t),n),t&&await this.store.set(this.credentialKey(`tokens`),n),await this.store.remove(this.getKey(`code_verifier`)),await this.store.remove(this.getKey(`last_auth_url`))}async clientInformation(e){let t=await this.readCredential(`client_info`,e);if(!t)return;let{key:n,value:r}=t;try{if(!this.allowClientSecret&&r.client_secret){await this.store.remove(n),e&&await this.store.remove(this.credentialKey(`client_info`)),console.warn(`[${this.storageKeyPrefix}] Removed OAuth client information containing a browser client_secret.`);return}let t=Array.isArray(r.redirect_uris)?r.redirect_uris:[];if(!(t.length===0||t.includes(this.redirectUrl))){console.info(`[${this.storageKeyPrefix}] Invalidating cached OAuth client info due to redirect URI mismatch.`),await this.store.remove(n),await this.store.remove(this.credentialKey(`tokens`,e)),await this.store.remove(this.getKey(`last_auth_url`));return}return r}catch{await this.store.remove(n);return}}async saveClientInformation(e,t){let n=e;if(!this.allowClientSecret&&n.client_secret)throw await this.store.remove(this.credentialKey(`client_info`,t)),t&&await this.store.remove(this.credentialKey(`client_info`)),Error(`Browser OAuth clients must be public clients; client_secret persistence is not allowed.`);let r=JSON.stringify(e);await this.store.set(this.credentialKey(`client_info`,t),r),t&&await this.store.set(this.credentialKey(`client_info`),r)}async saveCodeVerifier(e){await this.store.set(this.getKey(`code_verifier`),e)}async codeVerifier(){let e=this.getKey(`code_verifier`),t=await this.store.get(e);if(!t)throw Error(`[${this.storageKeyPrefix}] Code verifier not found in storage for key ${e}. Auth flow likely corrupted or timed out.`);return t}async invalidateCredentials(e){let t=async e=>{let t=`${this.getKey(e)}_`;for(let n of await this.store.keys())(n===this.getKey(e)||n.startsWith(t))&&await this.store.remove(n)};switch(e){case`all`:await t(`tokens`),await t(`client_info`),await this.store.remove(this.getKey(`code_verifier`)),await this.store.remove(this.getKey(`last_auth_url`)),await this.store.remove(this.getKey(`discovery_state`)),await this.store.remove(this.getKey(`token_endpoint`));break;case`client`:await t(`client_info`);break;case`tokens`:await t(`tokens`);break;case`verifier`:await this.store.remove(this.getKey(`code_verifier`));break;case`discovery`:await this.store.remove(this.getKey(`discovery_state`));break;default:break}}async saveDiscoveryState(e){await this.store.set(this.getKey(`discovery_state`),JSON.stringify(e))}async discoveryState(){let e=await this.store.get(this.getKey(`discovery_state`));if(e)try{return JSON.parse(e)}catch{await this.store.remove(this.getKey(`discovery_state`));return}}async storeAuthorizationState(e,t={}){let n=globalThis.crypto.randomUUID(),r=`${this.storageKeyPrefix}:state_${n}`,i={serverUrlHash:this.serverUrlHash,expiry:Date.now()+1e3*60*10,providerOptions:{serverUrl:this.serverUrl,storageKeyPrefix:this.storageKeyPrefix,clientName:this.clientName,clientUri:this.clientUri,callbackUrl:this.callbackUrl,...this.clientMetadataUrl?{clientMetadataUrl:this.clientMetadataUrl}:{},...t.extraProviderOptions??{}},flowType:t.flowType,returnUrl:t.returnUrl};e.searchParams.set(`state`,n);let a=kk(e.toString());return await this.store.set(r,JSON.stringify(i)),await this.store.set(this.getKey(`last_auth_url`),a),a}async getTokenEndpoint(){return(await this.discoveryState())?.authorizationServerMetadata?.token_endpoint??null}async getResource(){let e=(await this.discoveryState())?.resourceMetadata?.resource;return typeof e==`string`?e:null}};async function Nk(e){return typeof e==`string`?e:e instanceof URLSearchParams||e instanceof FormData?Object.fromEntries(e.entries()):e instanceof Blob?await e.text():e}var Pk=class{serverUrl;staticClientInfo;session;preventAutoAuth;useRedirectFlow;oauthProxyUrl;connectionUrl;proxyOAuthRequests;onPopupWindow;constructor(e,t={}){if(t.staticClientInfo?.client_secret)throw Error(`Browser OAuth clients must be public clients; staticClientInfo.client_secret is not allowed.`);this.serverUrl=e,this.session=new Mk(e,{...t,allowClientSecret:!1},new jk),this.preventAutoAuth=t.preventAutoAuth,this.useRedirectFlow=t.useRedirectFlow,this.oauthProxyUrl=t.oauthProxyUrl,this.connectionUrl=t.connectionUrl,this.proxyOAuthRequests=t.proxyOAuthRequests??!0,this.staticClientInfo=t.staticClientInfo,this.onPopupWindow=t.onPopupWindow}get storageKeyPrefix(){return this.session.storageKeyPrefix}get serverUrlHash(){return this.session.serverUrlHash}get clientName(){return this.session.clientName}get clientUri(){return this.session.clientUri}get logoUri(){return this.session.logoUri}get callbackUrl(){return this.session.callbackUrl}get scope(){return this.session.scope}get clientMetadataUrl(){return this.session.clientMetadataUrl}getKey(e){return this.session.getKey(e)}reanchorWellKnownUrl(e){if(!this.connectionUrl)return e;try{let t=new URL(e),n=new URL(this.connectionUrl);if(t.origin!==n.origin||!t.pathname.startsWith(`/.well-known/`))return e;let r=new URL(this.serverUrl),[i,...a]=t.pathname.slice(13).split(`/`);if(!i)return e;let o=a.length?`/${a.join(`/`)}`:``,s=n.pathname.replace(/\/+$/,``),c=r.pathname.replace(/\/+$/,``),l=o&&o===s?c:o;return`${r.origin}/.well-known/${i}${l}${t.search}`}catch{return e}}getProxyFetch(e){if(!this.proxyOAuthRequests||!this.oauthProxyUrl)return e;let t=e??globalThis.fetch.bind(globalThis),n=this.oauthProxyUrl,r=new Set,i=!1;return async(e,a)=>{let o=typeof e==`string`?e:e instanceof URL?e.toString():e.url,s=this.reanchorWellKnownUrl(o),c;try{c=new URL(s).pathname}catch{return await t(e,a)}let l=c.includes(`/.well-known/`);if(!i){i=!0;let e=(await this.discoveryState())?.authorizationServerMetadata;for(let t of[`registration_endpoint`,`token_endpoint`,`revocation_endpoint`,`introspection_endpoint`])typeof e?.[t]==`string`&&r.add(e[t])}let u=r.has(s)||/\/(?:register|registration|token|revoke|revocation|introspect|introspection)\/?$/.test(c);if(!l&&!u)return await t(e,a);try{let r=new URL(s),i=new URL(n);if(r.origin===i.origin&&(r.pathname.startsWith(i.pathname)||s.includes(`/inspector/api/oauth`)))return await t(e,a)}catch{}let d=l?`${n}/metadata?serverUrl=${encodeURIComponent(this.serverUrl)}&url=${encodeURIComponent(s)}`:`${n}/proxy`;if(l){let e=await t(d,{...a,method:`GET`});try{let t=await e.clone().json();for(let e of[`registration_endpoint`,`token_endpoint`,`revocation_endpoint`,`introspection_endpoint`])typeof t[e]==`string`&&r.add(t[e])}catch{}return e}let f=a?.body?await Nk(a.body):void 0,p=await(await t(d,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({serverUrl:this.serverUrl,url:s,method:a?.method||`POST`,headers:a?.headers?Object.fromEntries(new Headers(a.headers)):{},body:f})})).json();return new Response(JSON.stringify(p.body),{status:p.status,statusText:p.statusText,headers:new Headers(p.headers)})}}get redirectUrl(){return this.session.redirectUrl}get clientMetadata(){return this.session.clientMetadata}tokens(e){return this.session.tokens(e)}saveTokens(e,t){return this.session.saveTokens(e,t)}async clientInformation(e){return this.staticClientInfo?this.staticClientInfo:this.session.clientInformation(e)}async saveClientInformation(e,t){if(!this.staticClientInfo)return this.session.saveClientInformation(e,t)}codeVerifier(){return this.session.codeVerifier()}saveCodeVerifier(e){return this.session.saveCodeVerifier(e)}invalidateCredentials(e){return this.session.invalidateCredentials(e)}saveDiscoveryState(e){return this.session.saveDiscoveryState(e)}discoveryState(){return this.session.discoveryState()}getTokenEndpoint(){return this.session.getTokenEndpoint()}getResource(){return this.session.getResource()}async getClientCredentials(){let e=await this.clientInformation();return e?.client_id?{client_id:e.client_id}:null}async prepareAuthorizationUrl(e){return this.session.storeAuthorizationState(e,{extraProviderOptions:{oauthProxyUrl:this.oauthProxyUrl,...this.clientMetadataUrl?{clientMetadataUrl:this.clientMetadataUrl}:{},...this.staticClientInfo?{staticClientInfo:this.staticClientInfo}:{},...this.scope?{scope:this.scope}:{}},flowType:this.useRedirectFlow?`redirect`:`popup`,returnUrl:typeof window<`u`?window.location.href:void 0})}async redirectToAuthorization(e){let t=await this.prepareAuthorizationUrl(e);if(this.preventAutoAuth){console.info(`[${this.storageKeyPrefix}] Auto-auth prevented. Authorization URL stored for manual trigger.`);return}if(this.useRedirectFlow){console.info(`[${this.storageKeyPrefix}] Redirecting to authorization URL (full-page redirect).`),window.location.href=t;return}let n=`width=600,height=700,resizable=yes,scrollbars=yes,status=yes`;try{let e=window.open(t,`mcp_auth_${this.serverUrlHash}`,n);this.onPopupWindow&&this.onPopupWindow(t,n,e),!e||e.closed||e.closed===void 0?console.warn(`[${this.storageKeyPrefix}] Popup likely blocked by browser. Manual navigation might be required using the stored URL.`):(e.focus(),console.info(`[${this.storageKeyPrefix}] Redirecting to authorization URL in popup.`))}catch(e){console.error(`[${this.storageKeyPrefix}] Error opening popup window:`,e)}}getLastAttemptedAuthUrl(){let e=localStorage.getItem(this.getKey(`last_auth_url`));return e?kk(e):null}clearStorage(){let e=`${this.storageKeyPrefix}_${this.serverUrlHash}_`,t=`${this.storageKeyPrefix}:state_`,n=[],r=0;for(let r=0;r<localStorage.length;r++){let i=localStorage.key(r);if(i){if(i.startsWith(e))n.push(i);else if(i.startsWith(t))try{let e=localStorage.getItem(i);e&&JSON.parse(e).serverUrlHash===this.serverUrlHash&&n.push(i)}catch(e){console.warn(`[${this.storageKeyPrefix}] Error parsing state key ${i} during clearStorage:`,e)}}}return[...new Set(n)].forEach(e=>{localStorage.removeItem(e),r++}),r}};async function Fk(e,t={}){return new Pk(e,t)}JO(),JO();var Ik=class{},Lk=class extends Ik{constructor(e){super(),this.data=e}get name(){return`mcp_agent_execution`}get properties(){return{execution_method:this.data.executionMethod,query:this.data.query,query_length:this.data.query.length,success:this.data.success,model_provider:this.data.modelProvider,model_name:this.data.modelName,server_count:this.data.serverCount,server_identifiers:this.data.serverIdentifiers,total_tools_available:this.data.totalToolsAvailable,tools_available_names:this.data.toolsAvailableNames,max_steps_configured:this.data.maxStepsConfigured,memory_enabled:this.data.memoryEnabled,use_server_manager:this.data.useServerManager,max_steps_used:this.data.maxStepsUsed,manage_connector:this.data.manageConnector,external_history_used:this.data.externalHistoryUsed,steps_taken:this.data.stepsTaken??null,tools_used_count:this.data.toolsUsedCount??null,tools_used_names:this.data.toolsUsedNames??null,response:this.data.response??null,response_length:this.data.response?this.data.response.length:null,execution_time_ms:this.data.executionTimeMs??null,error_type:this.data.errorType??null,conversation_history_length:this.data.conversationHistoryLength??null}}},Rk=class extends Ik{constructor(e){super(),this.data=e}get name(){return`mcpclient_init`}get properties(){return{code_mode:this.data.codeMode,sandbox:this.data.sandbox,all_callbacks:this.data.allCallbacks,verify:this.data.verify,servers:this.data.servers,num_servers:this.data.numServers,is_browser:this.data.isBrowser}}},zk=class extends Ik{constructor(e){super(),this.data=e}get name(){return`connector_init`}get properties(){return{connector_type:this.data.connectorType,server_command:this.data.serverCommand??null,server_args:this.data.serverArgs??null,server_url:this.data.serverUrl??null,public_identifier:this.data.publicIdentifier??null}}},Bk=class extends Ik{constructor(e){super(),this.data=e}get name(){return`client_add_server`}get properties(){let{serverName:e,serverConfig:t}=this.data,n=t.url;return{server_name:e,server_url_domain:n?this._extractHostname(n):null,transport:t.transport??null,has_auth:!!(t.authToken||t.authProvider)}}_extractHostname(e){try{return new URL(e).hostname}catch{return null}}},Vk=class extends Ik{constructor(e){super(),this.data=e}get name(){return`client_remove_server`}get properties(){return{server_name:this.data.serverName}}};async function Hk(e,t){try{await fetch(e,t)}catch{}}var Uk=`https://eu.i.posthog.com`,Wk=`phc_lyTtbYwvkdSbrcMQNPiKiiRWrrM1seyKIMjycSvItEI`;function Gk(e){let t=e.host??Uk,n=e.apiKey??Wk;return Hk(`${t}/i/v0/e/`,{method:`POST`,headers:{"Content-Type":`application/json`},keepalive:!0,body:JSON.stringify({api_key:n,event:e.event,distinct_id:e.distinctId,properties:e.properties,timestamp:new Date().toISOString()})})}function Kk(){return globalThis.crypto.randomUUID()}function qk(){let e=new Uint8Array(8);return globalThis.crypto.getRandomValues(e),Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``)}var Jk=`mcp_use_user_id`,Yk=`phc_lyTtbYwvkdSbrcMQNPiKiiRWrrM1seyKIMjycSvItEI`,Xk=`https://eu.i.posthog.com`,Zk=null;function Qk(){return typeof localStorage<`u`&&typeof localStorage.getItem==`function`&&typeof localStorage.setItem==`function`&&typeof localStorage.removeItem==`function`}function $k(){if(!Qk())return null;try{localStorage.setItem(`__mcp_use_test__`,`1`),localStorage.removeItem(`__mcp_use_test__`)}catch{return null}return{getUserId(){try{return localStorage.getItem(Jk)}catch{return null}},setUserId(e){try{localStorage.setItem(Jk,e)}catch{}}}}function eA(){try{return globalThis.Bun===void 0?globalThis.Deno===void 0?typeof navigator<`u`&&navigator.userAgent?.includes(`Cloudflare-Workers`)?`cloudflare-workers`:globalThis.EdgeRuntime===void 0?typeof window<`u`&&typeof document<`u`?`browser`:typeof process<`u`&&process.versions?.node!==void 0?`node`:`unknown`:`edge`:`deno`:`bun`}catch{return`unknown`}}function tA(){if(typeof process<`u`&&{}.MCP_USE_TELEMETRY_SOURCE)return{}.MCP_USE_TELEMETRY_SOURCE;try{if(Qk())return localStorage.getItem(`MCP_USE_TELEMETRY_SOURCE`)??void 0}catch{}}function nA(){if(typeof window<`u`&&window.__MCP_USE_ANONYMIZED_TELEMETRY__===!1||typeof process<`u`&&{}.MCP_USE_ANONYMIZED_TELEMETRY?.toLowerCase()===`false`)return!0;try{if(Qk()&&localStorage.getItem(`MCP_USE_ANONYMIZED_TELEMETRY`)===`false`)return!0}catch{}return!1}function rA(){try{return`session-${Kk()}`}catch{return`session-${Date.now()}-${qk()}`}}var iA=class e{static instance=null;UNKNOWN_USER_ID=`UNKNOWN_USER_ID`;_currUserId=null;_telemetryEnabled=!1;_pending=new Set;_runtimeEnvironment;_storageCapability;_storage;_source;_productVersion;constructor(){this._runtimeEnvironment=eA(),this._storage=Zk??$k()??null,this._storageCapability=this._storage?`persistent`:`session-only`,this._source=tA()||this._runtimeEnvironment;let e=nA(),t=this._runtimeEnvironment!==`unknown`;e?(this._telemetryEnabled=!1,$.debug(`Telemetry disabled via opt-out`)):t?($.debug(`Anonymized telemetry enabled. Set MCP_USE_ANONYMIZED_TELEMETRY=false to disable.`),this._telemetryEnabled=!0):(this._telemetryEnabled=!1,$.debug(`Telemetry disabled - unknown environment: ${this._runtimeEnvironment}`))}get runtimeEnvironment(){return this._runtimeEnvironment}get storageCapability(){return this._storageCapability}static getInstance(){return e.instance||=new e,e.instance}setSource(e){this._source=e;try{Qk()&&localStorage.setItem(`MCP_USE_TELEMETRY_SOURCE`,e)}catch{}$.debug(`Telemetry source set to: ${e}`)}getSource(){return this._source}setProductVersion(e){this._productVersion=e}get isEnabled(){return this._telemetryEnabled}get userId(){if(this._currUserId)return this._currUserId;try{if(this._storage){let e=this._storage.getUserId();if(e)return this._currUserId=e,e;let t=Kk();return this._storage.setUserId(t),this._currUserId=t,t}this._currUserId=rA()}catch{this._currUserId=this.UNKNOWN_USER_ID}return this._currUserId}async capture(e){if(!this._telemetryEnabled)return;let t=this.userId,n={...e.properties,mcp_use_version:this._productVersion??Ck(),language:`typescript`,source:this._source,runtime:this._runtimeEnvironment},r=Gk({host:Xk,apiKey:Yk,event:e.name,distinctId:t,properties:n});this._pending.add(r),r.finally(()=>this._pending.delete(r))}async trackAgentExecution(e){this.isEnabled&&await this.capture(new Lk(e))}async trackMCPClientInit(e){this.isEnabled&&await this.capture(new Rk(e))}async trackConnectorInit(e){this.isEnabled&&await this.capture(new zk(e))}async trackClientAddServer(e,t){this.isEnabled&&await this.capture(new Bk({serverName:e,serverConfig:t}))}async trackClientRemoveServer(e){this.isEnabled&&await this.capture(new Vk({serverName:e}))}async trackUseMcpConnection(e){this.isEnabled&&await this.capture({name:`usemcp_connection`,properties:{url_domain:new URL(e.url).hostname,transport_type:e.transportType,success:e.success,error_type:e.errorType??null,connection_time_ms:e.connectionTimeMs??null,has_oauth:e.hasOAuth,has_sampling:e.hasSampling,has_elicitation:e.hasElicitation}})}async trackUseMcpToolCall(e){this.isEnabled&&await this.capture({name:`usemcp_tool_call`,properties:{tool_name:e.toolName,success:e.success,error_type:e.errorType??null,execution_time_ms:e.executionTimeMs??null}})}async trackUseMcpResourceRead(e){this.isEnabled&&await this.capture({name:`usemcp_resource_read`,properties:{resource_uri_scheme:e.resourceUri.split(`:`)[0],success:e.success,error_type:e.errorType??null}})}identify(e,t){this._currUserId=e,this._storage?.setUserId(e),this._telemetryEnabled&&Gk({host:Xk,apiKey:Yk,event:`$identify`,distinctId:e,properties:{$set:t??{}}})}reset(){this._currUserId=null}flush(){Promise.allSettled([...this._pending])}async shutdown(){try{await Promise.allSettled([...this._pending]),$.debug(`Telemetry fetch captures flushed`)}catch(e){$.debug(`Error flushing telemetry captures: ${e}`)}}},aA=5*6e4;function oA(e,t=0){if(!e||t>5)return!1;if(e instanceof xS)return!0;if(e instanceof Error){if(e.code===401||e.name===`UnauthorizedError`)return!0;let n=e.message??``;if(n.includes(`401`)||n.includes(`Unauthorized`)||e.cause&&oA(e.cause,t+1))return!0;let r=e.data;if(r?.cause&&oA(r.cause,t+1))return!0}return!1}async function sA(e,t,n={}){let r=e,i=n.timeoutMs??aA,a=n.fetchFn??r.getProxyFetch?.()??void 0;if(!r.hasPendingFlow){let n=await BS(e,{serverUrl:t,fetchFn:a});if(n===`AUTHORIZED`)return;if(n!==`REDIRECT`)throw Error(`Unexpected OAuth auth() result: ${n}`)}if(typeof r.getAuthorizationCode==`function`){await BS(e,{serverUrl:t,authorizationCode:await r.getAuthorizationCode(),fetchFn:a});return}await cA(r,i)}async function cA(e,t){if(typeof window>`u`)throw Error(`OAuth redirect requires a browser environment or a provider with getAuthorizationCode()`);if(e.useRedirectFlow)return;let n=e.getKey?.(`tokens`);if(!n)throw Error(`Browser OAuth provider must expose getKey() for token storage`);let r=null,i=e.getLastAttemptedAuthUrl?.();if(i)try{r=new URL(i).searchParams.get(`state`)}catch{}let a=await ck({popup:null,state:r,tokensKey:n,timeoutMs:t});switch(a.kind){case`success`:return;case`cancelled`:throw Error(`OAuth authentication was cancelled.`);case`timeout`:throw Error(`OAuth callback not received within ${t}ms. Ensure /oauth/callback calls onMcpAuthorization().`);case`error`:throw Error(a.error);default:throw Error(`Unexpected OAuth popup result`)}}JO();var lA=class{connector;autoConnect;constructor(e,t=!0){this.connector=e,this.autoConnect=t}async connect(){await this.connector.connect()}async disconnect(){await this.connector.disconnect()}async initialize(){!this.isConnected&&this.autoConnect&&await this.connect(),await this.connector.initialize()}get isConnected(){return this.connector&&this.connector.isClientConnected}on(e,t){e===`notification`&&this.connector.onNotification(t)}async setRoots(e){return this.connector.setRoots(e)}getRoots(){return this.connector.getRoots()}get tools(){return this.connector.tools}async listTools(e){return this.connector.listTools(e)}get serverCapabilities(){return this.connector.serverCapabilities}get serverInfo(){return this.connector.serverInfo}get protocolEra(){return this.connector.protocolEra}get negotiatedProtocolVersion(){return this.connector.negotiatedProtocolVersion}get info(){let e=this.protocolEra,t=this.negotiatedProtocolVersion,n=this.serverInfo;if(!e||!t||!n)throw Error(`MCP connection is not initialized`);let r=this.serverCapabilities,i=r.extensions&&typeof r.extensions==`object`&&!Array.isArray(r.extensions)?r.extensions:{};return{protocolEra:e,protocolVersion:t,server:n,capabilities:r,instructions:this.connector.instructions,extensions:i}}supports(e){return e in this.serverCapabilities}async callTool(e,t={},n){return this.connector.callTool(e,t,n)}async listResources(e,t){return this.connector.listResources(e,t)}async listAllResources(e){return this.connector.listAllResources(e)}async listResourceTemplates(e){return this.connector.listResourceTemplates(e)}async complete(e,t){return this.connector.complete(e,t)}async readResource(e,t){return this.connector.readResource(e,t)}async subscribeToResource(e,t){return this.connector.subscribeToResource(e,t)}async unsubscribeFromResource(e,t){return this.connector.unsubscribeFromResource(e,t)}async listPrompts(){return this.connector.listPrompts()}async getPrompt(e,t){return this.connector.getPrompt(e,t)}async request(e,t=null,n){return this.connector.request(e,t,n)}},uA;function dA(e,t){uA?.addServer(e,t)}function fA(e){uA?.removeServer(e)}function pA(e){return!!e&&typeof e==`object`&&`redirectUrl`in e&&`clientMetadata`in e}var mA=class{config={};sessions={};activeSessions=[];constructor(e){e&&(this.config=e)}static fromDict(e){throw Error(`fromDict must be implemented by concrete class`)}addServer(e,t){this.config.mcpServers=this.config.mcpServers||{},this.config.mcpServers[e]=t,dA(e,t)}async removeServer(e){this.config.mcpServers?.[e]&&(await this.closeSession(e),delete this.config.mcpServers[e],fA(e))}getServerNames(){return Object.keys(this.config.mcpServers??{})}getServerConfig(e){return this.config.mcpServers?.[e]}getConfig(){return this.config??{}}async createSession(e,t=!0){let n=this.config.mcpServers??{};if(Object.keys(n).length===0&&$.warn(`No MCP servers defined in config`),!n[e])throw Error(`Server '${e}' not found in config`);let r={...n[e]},i;if(Tk(r)){let e=r.oauth===!1?void 0:r.oauth??{};i=await this.createDefaultOAuthProvider(r.url,e),r={...r,authProvider:i}}else `authProvider`in r&&r.authProvider&&pA(r.authProvider)&&(i=r.authProvider);let a=async()=>{let e=new lA(await Promise.resolve(this.createConnectorFromConfig(r)));return t&&await e.initialize(),e},o;try{o=await a()}catch(n){let s=r;if(!t||!i||!(`url`in s)||!oA(n)||i.preventAutoAuth)throw n;$.info(`[MCPClient] Unauthorized connecting to '${e}'; completing OAuth\u2026`),await sA(i,s.url),o=await a()}return this.sessions[e]=o,this.activeSessions.includes(e)||this.activeSessions.push(e),o}async connect(e){return this.createSession(e)}async createAllSessions(e=!0){let t=this.config.mcpServers??{};Object.keys(t).length===0&&$.warn(`No MCP servers defined in config`);for(let n of Object.keys(t))await this.createSession(n,e);return this.sessions}async connectAll(){return this.createAllSessions()}getSession(e){return this.sessions[e]||null}requireSession(e){let t=this.sessions[e];if(!t)throw Error(`Session '${e}' not found. Available sessions: ${this.activeSessions.join(`, `)||`none`}`);return t}getAllActiveSessions(){return Object.fromEntries(this.activeSessions.map(e=>[e,this.sessions[e]]))}async closeSession(e){let t=this.sessions[e];if(!t){$.warn(`No session exists for server ${e}, nothing to close`);return}try{$.debug(`Closing session for server ${e}`),await t.disconnect()}catch(t){$.error(`Error closing session for server '${e}': ${t}`)}finally{this.sessions[e]===t&&(delete this.sessions[e],this.activeSessions=this.activeSessions.filter(t=>t!==e))}}async closeAllSessions(){let e=Object.keys(this.sessions),t=[];for(let n of e)try{$.debug(`Closing session for server ${n}`),await this.closeSession(n)}catch(e){let r=`Failed to close session for server '${n}': ${e}`;$.error(r),t.push(r)}t.length?$.error(`Encountered ${t.length} errors while closing sessions`):$.debug(`All sessions closed successfully`)}async close(){await this.closeAllSessions()}};function hA(e){let t=Object.keys(e.mcpServers??{});iA.getInstance().trackMCPClientInit({codeMode:!1,sandbox:!1,allCallbacks:!1,verify:!1,servers:t,numServers:t.length,isBrowser:!0}).catch(e=>$.debug(`Failed to track BrowserMCPClient init: ${e}`))}var gA=class e extends mA{static getPackageVersion(){return Ck()}constructor(e){super(e),hA(this.config)}static fromDict(t){return new e(t)}async createDefaultOAuthProvider(e,t={}){return Fk(e,t)}createConnectorFromConfig(e){let{url:t,headers:n,fetch:r,authToken:i,authProvider:a,wrapTransport:o,clientOptions:s,protocolNegotiation:c,timeout:l,gatewayUrl:u,serverId:d,reconnectionOptions:f}=e;if(!t)throw Error(`Server URL is required`);let p=this.config,m=wk(e,p),h=Dk(e.clientInfo??this.config.clientInfo),g={headers:n,fetch:r??globalThis.fetch.bind(globalThis),authToken:i,authProvider:a,wrapTransport:o,clientOptions:s,onSampling:m.onSampling,onElicitation:m.onElicitation,onNotification:m.onNotification,protocolNegotiation:c,timeout:l,clientInfo:h,gatewayUrl:u,serverId:d,reconnectionOptions:f};return $.debug(`[BrowserMCPClient] Connector options prepared (clientOptions: ${s?`provided`:`none`})`),new xk(t,g)}};JO();var _A=`https://favicon.tools.mcp-use.com`,vA=/^\d{1,3}(\.\d{1,3}){3}$/;function yA(e){try{let t=e.includes(`://`)?e:`https://${e}`;return new URL(t).hostname}catch{return null}}function bA(e){let t=e.toLowerCase();if(t===`localhost`||t.endsWith(`.localhost`)||t===`host.docker.internal`||t===`0.0.0.0`)return!0;if(!vA.test(t))return!1;if(t===`127.0.0.1`||t.startsWith(`127.`)||t.startsWith(`10.`)||t.startsWith(`192.168.`))return!0;let n=/^172\.(\d+)\./.exec(t);if(n){let e=Number.parseInt(n[1],10);if(e>=16&&e<=31)return!0}return!1}function xA(e){let t=e.split(`.`);return Array.from({length:t.length-1},(e,n)=>t.slice(n).join(`.`))}function SA(e){return new Promise((t,n)=>{let r=new FileReader;r.onloadend=()=>t(r.result),r.onerror=n,r.readAsDataURL(e)})}async function CA(e){try{let t=yA(e);if(!t||bA(t))return null;for(let e of xA(t))try{let t=await fetch(`${_A}/${e}?response=json`,{signal:AbortSignal.timeout(2e3)});if(!t.ok)continue;let n=await t.json();if(n.source==="default")continue;let r=n.url.replace(/^http:\/\//,`https://`),i=await fetch(r,{signal:AbortSignal.timeout(2e3)});if(!i.ok)continue;return await SA(await i.blob())}catch{continue}return null}catch(e){return console.warn(`[favicon] Error detecting favicon:`,e),null}}var wA=`inspector-server`;function TA(e,t){if(!e)throw Error(t)}async function EA(e){try{let t=e.serverInfo.icons?.[0]?.src;if(t){e.addLog(`info`,`Server provided icon:`,t);let n=await(await fetch(t)).blob(),r=await new Promise((e,t)=>{let r=new FileReader;r.onloadend=()=>e(r.result),r.onerror=t,r.readAsDataURL(n)});return e.isMounted()&&(e.setServerInfo(e=>e?{...e,icon:r}:void 0),e.addLog(`debug`,`Server icon converted to base64`)),r}if(e.url){let t=await CA(e.url);if(!e.isMounted())return e.addLog(`debug`,`Connection aborted after favicon detection - component unmounted`),null;if(t)return e.setServerInfo(e=>e?{...e,icon:t}:void 0),e.addLog(`debug`,`Favicon detected and added to serverInfo`),t}return null}catch(t){return e.addLog(`debug`,`Icon loading failed (non-critical):`,t),null}}function DA(e,t){return t?`state=${e}`:`client disconnected (state=${e})`}function OA(e){return{name:e.name,version:e.version,uri:e.websiteUrl,logo_uri:e.icons?.[0]?.src}}function kA(e){let t=(e instanceof Error?e.message:String(e)).toLowerCase();return t.includes(`oauth discovery failed`)||t.includes(`oauth-authorization-server`)||t.includes(`not valid json`)||t.includes(`404`)&&(t.includes(`openid-configuration`)||t.includes(`oauth-protected-resources`)||t.includes(`oauth-authorization-url`)||t.includes(`register`))||t.includes(`invalid oauth error response`)&&t.includes(`not found`)}function AA(e,t){if(t)return t;if(e)try{let t=new URL(e);return t.pathname=t.pathname.replace(/\/proxy\/?$/,`/oauth`),t.toString()}catch{return}}function jA(e){let t=AA(e.gatewayUrl,e.oauthProxyUrl);return{provider:new Pk(e.effectiveOAuthUrl,{storageKeyPrefix:e.storageKeyPrefix,clientName:e.oauthClientConfig.name,clientUri:e.oauthClientConfig.uri,logoUri:e.oauthClientConfig.logo_uri||`https://mcp-use.com/logo.png`,callbackUrl:e.callbackUrl,preventAutoAuth:e.preventAutoAuth,useRedirectFlow:e.useRedirectFlow,oauthProxyUrl:t,connectionUrl:e.gatewayUrl,onPopupWindow:e.onPopupWindow,proxyOAuthRequests:e.proxyOAuthRequests,staticClientInfo:e.staticClientInfo,clientMetadataUrl:e.clientMetadataUrl,scope:e.scope}),oauthProxyUrl:t}}function MA(e){let t=null,n=Date.now(),r=!1,i=e.healthCheckIntervalMs??1e4,a=e.healthCheckTimeoutMs??3e4;return t=setInterval(async()=>{if(!r){if(!e.isMountedRef.current||e.stateRef.current!==`ready`){t&&=(clearInterval(t),null);return}try{let i=e.gatewayUrl||e.url;if(!i)return;let a=e.getAuthHeaders?await e.getAuthHeaders():{},o=await fetch(i,{method:`HEAD`,headers:{...e.allHeaders,...a},signal:AbortSignal.timeout(5e3)});if(o.status===405||o.status===404){r=!0,n=Date.now(),t&&=(clearInterval(t),null);return}if(o.ok||o.status<500)n=Date.now();else throw Error(`Server returned ${o.status}`)}catch{let r=Date.now()-n;r>a&&(e.addLog(`warn`,`Connection appears to be broken (no response for ${Math.round(r/1e3)}s), attempting to reconnect...`),t&&=(clearInterval(t),null),e.autoReconnectRef.current&&e.isMountedRef.current&&(e.setState(`discovering`),e.addLog(`info`,`Auto-reconnecting to MCP server...`),setTimeout(()=>{e.isMountedRef.current&&e.stateRef.current===`discovering`&&e.connect()},typeof e.autoReconnectRef.current==`number`?e.autoReconnectRef.current:e.defaultReconnectDelay)))}}},i),()=>{t&&=(clearInterval(t),null)}}function NA(e,t){let n=e.connectionRef.current;if(e.stateRef.current!==`ready`||!e.hasClient()||!n)throw Error(`MCP client is not ready (${DA(e.stateRef.current,e.hasClient())}). Cannot ${t}.`);return n}function PA(e){let t=(0,z.useCallback)(async(t,n,r)=>{let i=NA(e,`call tool "${t}"`);e.addLog(`info`,`Calling tool: ${t}`,n);let a=Date.now();try{let o=await i.callTool(t,n||{},r);return e.addLog(`info`,`Tool "${t}" call successful:`,o),iA.getInstance().trackUseMcpToolCall({toolName:t,success:!0,executionTimeMs:Date.now()-a}).catch(()=>{}),o}catch(n){throw e.addLog(`error`,`Tool "${t}" call failed:`,n),iA.getInstance().trackUseMcpToolCall({toolName:t,success:!1,errorType:n instanceof Error?n.name:`UnknownError`,executionTimeMs:Date.now()-a}).catch(()=>{}),n}},[e.addLog]),n=(0,z.useCallback)(async()=>{let t=NA(e,`list resources`);e.addLog(`info`,`Listing resources`);let n=await t.listAllResources();e.setResources(n.resources||[])},[e.addLog]),r=(0,z.useCallback)(async t=>{let n=NA(e,`read resource`);e.addLog(`info`,`Reading resource: ${t}`);try{let e=await n.readResource(t);return iA.getInstance().trackUseMcpResourceRead({resourceUri:t,success:!0}).catch(()=>{}),e}catch(e){throw iA.getInstance().trackUseMcpResourceRead({resourceUri:t,success:!1,errorType:e instanceof Error?e.name:`UnknownError`}).catch(()=>{}),e}},[e.addLog]),i=(0,z.useCallback)(async()=>{let t=NA(e,`list prompts`);e.addLog(`info`,`Listing prompts`);let n=await t.listPrompts();e.setPrompts(n.prompts||[])},[e.addLog]),a=(0,z.useCallback)(async()=>{if(!(e.stateRef.current!==`ready`||!e.connectionRef.current))try{e.setTools(await e.connectionRef.current.listTools()||[])}catch(t){e.addLog(`error`,`Failed to refresh tools:`,t)}},[e.addLog]),o=(0,z.useCallback)(async()=>{if(!(e.stateRef.current!==`ready`||!e.connectionRef.current))try{let t=await e.connectionRef.current.listAllResources();e.setResources(t.resources||[])}catch(t){e.addLog(`warn`,`Failed to refresh resources:`,t)}},[e.addLog]),s=(0,z.useCallback)(async()=>{if(!(e.stateRef.current!==`ready`||!e.connectionRef.current))try{let t=await e.connectionRef.current.listPrompts();e.setPrompts(t.prompts||[])}catch(t){e.addLog(`warn`,`Failed to refresh prompts:`,t)}},[e.addLog]),c=(0,z.useCallback)(async()=>{let t=await NA(e,`refresh resource templates`).listResourceTemplates();e.isMounted()&&e.setResourceTemplates(t.resourceTemplates||[])},[e.addLog]);return{callTool:t,listResources:n,readResource:r,listPrompts:i,refreshTools:a,refreshResources:o,refreshPrompts:s,refreshResourceTemplates:c,refreshAll:(0,z.useCallback)(()=>Promise.all([a(),o(),c(),s()]).then(()=>void 0),[a,o,c,s]),getPrompt:(0,z.useCallback)(async(t,n)=>NA(e,`get prompt`).getPrompt(t,n||{}),[e.addLog]),complete:(0,z.useCallback)(async t=>NA(e,`request completion`).complete(t),[e.addLog])}}var FA=3e3,IA=5e3;function LA(e){let{url:t,enabled:n=!0,callbackUrl:r=typeof window<`u`?kk(new URL(`/oauth/callback`,window.location.origin).toString()):`/oauth/callback`,storageKeyPrefix:i=`mcp:auth`,authProvider:a,headers:o,proxyConfig:s,oauthProxyUrl:c,autoProxyFallback:l=!1,logLevel:u=`silent`,autoRetry:d=!1,autoReconnect:f=!0,reconnectionOptions:p,preventAutoAuth:m=!0,useRedirectFlow:h=!1,onPopupWindow:g,timeout:_=3e4,wrapTransport:v,serverId:y,fetch:b,clientOptions:x,protocolNegotiation:S,onNotification:C,onSampling:w,onElicitation:T,oauth:E}=e,ee=`http`,te=E?.clientId?.trim()||void 0,ne=E?.clientMetadataUrl?.trim()||void 0,re=E?.scope?.trim()||void 0,ie=(0,z.useMemo)(()=>te?{client_id:te}:void 0,[te]),D=(0,z.useMemo)(()=>{let e=`useMcp:${t||`no-url`}`,n=qO.get(e);return u&&(n.level=u),n},[t,u]),ae=o??{},O=(0,z.useMemo)(()=>Ok(x),[x]),k=w,A=T,oe=(0,z.useMemo)(()=>({name:`mcp-use`,title:`mcp-use`,version:Ck(),description:`mcp-use is a complete TypeScript framework for building and using MCP`,icons:[{src:`https://mcp-use.com/logo.png`}],websiteUrl:`https://mcp-use.com`}),[]),se=(0,z.useMemo)(()=>e.clientInfo?{...oe,...e.clientInfo}:oe,[e.clientInfo,oe]),ce=(0,z.useMemo)(()=>OA(se),[se]),j=(0,z.useMemo)(()=>{if(!l)return{enabled:!1,proxyAddress:void 0};if(typeof l==`boolean`){let e=s?.proxyAddress;return{enabled:l&&!!e,proxyAddress:e}}let e=l.proxyAddress??s?.proxyAddress;return{enabled:l.enabled!==!1&&!!e,proxyAddress:e}},[l,s]),M=(0,z.useMemo)(()=>f===!1?{enabled:!1,initialDelay:0,healthCheckInterval:!1,healthCheckTimeout:3e4}:f===!0?{enabled:!0,initialDelay:FA,healthCheckInterval:1e4,healthCheckTimeout:3e4}:typeof f==`number`?{enabled:!0,initialDelay:f,healthCheckInterval:1e4,healthCheckTimeout:3e4}:{enabled:f.enabled!==!1,initialDelay:f.initialDelay??FA,healthCheckInterval:f.healthCheckInterval??1e4,healthCheckTimeout:f.healthCheckTimeout??3e4},[f]),[N,le]=(0,z.useState)(void 0);(0,z.useEffect)(()=>{le(void 0)},[t,s]);let ue=(0,z.useMemo)(()=>{if(!N?.proxyAddress)return s;let e=s?.headers??{};return{...N,headers:{...e,...N.headers??{}}}},[N,s]),de=ue?.proxyAddress,fe=ue?.headers??{},pe=(0,z.useMemo)(()=>t||``,[t]),me=(0,z.useMemo)(()=>({...fe,...ae}),[fe,ae]),[he,ge]=(0,z.useState)(`discovering`),[_e,ve]=(0,z.useState)([]),[ye,be]=(0,z.useState)([]),[xe,P]=(0,z.useState)([]),[Se,Ce]=(0,z.useState)([]),[we,Te]=(0,z.useState)(e._initialServerInfo?.name?e._initialServerInfo:void 0),[Ee,De]=(0,z.useState)(),[Oe,ke]=(0,z.useState)(void 0),[Ae,je]=(0,z.useState)(void 0),[Me,Ne]=(0,z.useState)(),[Pe,Fe]=(0,z.useState)({}),[Ie,Le]=(0,z.useState)(void 0),[Re,ze]=(0,z.useState)([]),[Be,Ve]=(0,z.useState)(void 0),[He,Ue]=(0,z.useState)(void 0),We=(0,z.useRef)(null),Ge=(0,z.useRef)(null),Ke=(0,z.useRef)(a??null),qe=(0,z.useRef)(null),Je=(0,z.useRef)(!1),Ye=(0,z.useRef)(!0),Xe=(0,z.useRef)(0),Ze=(0,z.useRef)(0),Qe=(0,z.useRef)(null),$e=(0,z.useRef)(!1),et=(0,z.useRef)(!1),tt=(0,z.useRef)(he),nt=(0,z.useRef)(f),rt=(0,z.useRef)(null),it=(0,z.useRef)(null),at=(0,z.useRef)(null),ot=(0,z.useRef)(k),st=(0,z.useRef)(A),ct=(0,z.useRef)(k!==void 0),lt=(0,z.useRef)(A!==void 0),ut=(0,z.useRef)(C);k!==void 0&&(ot.current=k),A!==void 0&&(st.current=A),ct.current=k!==void 0,lt.current=A!==void 0,ut.current=C;let dt=(0,z.useCallback)(async e=>ot.current(e),[]),ft=(0,z.useCallback)(async e=>st.current(e),[]),pt=(0,z.useCallback)(e=>{ut.current?.(e)},[]);(0,z.useEffect)(()=>{tt.current=he,nt.current=f},[he,f]),(0,z.useEffect)(()=>{Ke.current=a??null},[a]);let F=(0,z.useCallback)((e,t,...n)=>{let r=n.length>0?`${t} ${n.map(e=>JSON.stringify(e)).join(` `)}`:t,i=`[useMcp] ${r}`;switch(e){case`error`:D.error(i);break;case`warn`:D.warn(i);break;case`info`:D.info(i);break;case`debug`:D.debug(i);break;default:D.info(i)}Ye.current&&ze(t=>[...t.slice(-100),{level:e,message:r,timestamp:Date.now()}])},[D]),mt=PA({stateRef:tt,connectionRef:Ge,hasClient:()=>We.current!==null,isMounted:()=>Ye.current,setTools:ve,setResources:be,setResourceTemplates:P,setPrompts:Ce,addLog:F}),ht=(0,z.useCallback)(async(e=!1)=>{e||F(`info`,`Disconnecting...`),Je.current=!1,Qe.current&&clearTimeout(Qe.current),Qe.current=null;let t=Ze.current,n=We.current;if(n)try{let e=wA,t=n===We.current?Ge.current:null;t&&t._healthCheckCleanup&&(t._healthCheckCleanup(),t._healthCheckCleanup=null),t&&await n.closeSession(e)}catch(t){e||F(`warn`,`Error closing connection:`,t)}let r=Ze.current!==t;We.current===n&&!r&&(We.current=null,Ge.current=null),Ye.current&&!e&&!r&&(ge(`discovering`),ve([]),be([]),P([]),Ce([]),Le(void 0),Ve(void 0),Ue(void 0),Te(void 0),De(void 0),ke(void 0),je(void 0),Ne(void 0),Fe({}))},[F]),gt=(0,z.useCallback)((e,n)=>{F(`error`,e,n??``);let r=n&&`code`in n?n.code:void 0,i=j.enabled&&!ue?.proxyAddress,o=e.includes(`CORS`)||e.includes(`blocked by CORS policy`)||e.includes(`Failed to fetch`),s=r===400;if(i&&(o||s||typeof r==`number`&&r>=404&&r<500)&&!(r===401||r===403))return F(`info`,`Direct connection failed with ${o?`CORS error`:s?`HTTP 400 (Bad Request)`:`HTTP 4xx error`}. Trying with proxy...`),We.current=null,a||(Ke.current=null),F(`debug`,`Cleared client and auth provider for proxy fallback`),le({proxyAddress:j.proxyAddress}),Ye.current&&ge(`discovering`),setTimeout(()=>{Ye.current&&it.current?.()},1e3),!0;if(Ye.current){F(`info`,`Setting state to FAILED:`,e),ge(`failed`),Le(e);let t=Ke.current?.getLastAttemptedAuthUrl?.();t&&(Ve(t),F(`info`,`Manual authentication URL may be available.`,t))}return Je.current=!1,t&&iA.getInstance().trackUseMcpConnection({url:t,transportType:ee,success:!1,errorType:n?.name||`UnknownError`,hasOAuth:!!Ke.current,hasSampling:ct.current,hasElicitation:lt.current}).catch(()=>{}),!1},[F,t,ee,j,ue,a]),_t=(0,z.useCallback)(async()=>{if(!n||!t){F(`debug`,n?`No server URL provided, skipping connection.`:`Connection disabled via enabled flag.`);return}if(Je.current){F(`debug`,`Connection attempt already in progress.`);return}if(!Ye.current){F(`debug`,`Connect called after unmount, aborting.`);return}if(Je.current=!0,Ze.current+=1,Xe.current+=1,Le(void 0),Ve(void 0),rt.current=null,ge(`discovering`),ve([]),be([]),P([]),Ce([]),Te(void 0),De(void 0),ke(void 0),je(void 0),Ne(void 0),Fe({}),F(`info`,`Connecting attempt #${Xe.current} to ${t}...`),!Ke.current){let{provider:e,oauthProxyUrl:t}=jA({effectiveOAuthUrl:pe,storageKeyPrefix:i,oauthClientConfig:ce,callbackUrl:r,preventAutoAuth:m,useRedirectFlow:h,gatewayUrl:de,oauthProxyUrl:c,onPopupWindow:g,proxyOAuthRequests:!0,staticClientInfo:ie,clientMetadataUrl:ne,scope:re});Ke.current=e,t&&F(`debug`,`OAuth BFF enabled: ${t}`),F(`debug`,`BrowserOAuthClientProvider initialized with URL: ${pe}, proxy: ${t?`enabled`:`disabled`}, gateway: ${de?`enabled`:`disabled`}`)}We.current?F(`debug`,`BrowserMCPClient already exists, reusing.`):(We.current=new gA,F(`debug`,`BrowserMCPClient initialized in connect.`));let e=async n=>{if(!Ye.current)return F(`debug`,`Connection attempt aborted - component unmounted`),`failed`;F(`info`,`Attempting connection with transport: ${n}`),F(`debug`,`Client ref status at start of tryConnectWithTransport: ${We.current?`initialized`:`NULL`}`);try{let e=wA,r={url:t,timeout:_,clientInfo:se,...(()=>{let e=Ke.current?.getProxyFetch?.(b)??b;return e?{fetch:e}:{}})(),...O&&{clientOptions:O},...S!==void 0&&{protocolNegotiation:S},...p?{reconnectionOptions:p}:f===!1?{reconnectionOptions:{maxRetries:0}}:{}};if(de&&(r.gatewayUrl=de,F(`debug`,`Using proxy gateway: ${de} for target: ${t}`)),me&&Object.keys(me).length>0&&(r.headers=me),!We.current){if(!Ye.current)return F(`debug`,`Connection aborted - component unmounted, client cleaned up`),`failed`;let e=Error(`Client not initialized - this is a bug in the connection flow`);throw F(`error`,`Client ref is null in tryConnectWithTransport but component is still mounted`),e}We.current.addServer(e,{...r,authProvider:Ke.current,onSampling:ct.current?dt:void 0,onElicitation:lt.current?ft:void 0,onNotification:e=>{F(`debug`,`Notification received:`,e.method,e),pt(e),e.method===`notifications/tools/list_changed`?(F(`info`,`Tools list changed, auto-refreshing...`),mt.refreshTools().catch(e=>F(`warn`,`Auto-refresh tools failed:`,e))):e.method===`notifications/resources/list_changed`?(F(`info`,`Resources list changed, auto-refreshing...`),mt.refreshResources().catch(e=>F(`warn`,`Auto-refresh resources failed:`,e))):e.method===`notifications/prompts/list_changed`&&(F(`info`,`Prompts list changed, auto-refreshing...`),mt.refreshPrompts().catch(e=>F(`warn`,`Auto-refresh prompts failed:`,e)))},wrapTransport:v?n=>(F(`debug`,`Applying transport wrapper for server:`,e,`url:`,t),v(n,y??t)):void 0});let i=await We.current.connect(e);if(Ge.current=i,!Ye.current)return F(`debug`,`Connection aborted after connection creation - component unmounted`),`failed`;F(`info`,`✅ Successfully connected to MCP server`),F(`info`,`Server info:`,i.info.server),F(`info`,`Server capabilities:`,i.info.capabilities),M.enabled&&M.healthCheckInterval!==!1&&(i._healthCheckCleanup=MA({gatewayUrl:de,url:t,allHeaders:me,getAuthHeaders:async()=>{try{let e=await Ke.current?.tokens?.();if(e?.access_token){let t=e.token_type||`bearer`;return{Authorization:`${t.charAt(0).toUpperCase()+t.slice(1)} ${e.access_token}`}}}catch{}return{}},isMountedRef:Ye,stateRef:tt,autoReconnectRef:nt,setState:ge,addLog:F,connect:_t,defaultReconnectDelay:M.initialDelay,healthCheckIntervalMs:M.healthCheckInterval,healthCheckTimeoutMs:M.healthCheckTimeout})),iA.getInstance().trackUseMcpConnection({url:t,transportType:n,success:!0,hasOAuth:!!Ke.current,hasSampling:ct.current,hasElicitation:lt.current}).catch(()=>{}),ve(i.tools||[]);let[a,o,s]=await Promise.all([i.listAllResources(),i.listPrompts(),i.supports(`resources`)?i.listResourceTemplates():Promise.resolve({resourceTemplates:[]})]);if(!Ye.current)return F(`debug`,`Connection aborted after discovery - component unmounted`),`failed`;be(a.resources||[]),Ce(o.prompts||[]),P(s.resourceTemplates||[]);let{server:c,capabilities:l,protocolEra:u,protocolVersion:d,instructions:m,extensions:h}=i.info;if(Ye.current&&(ke(u),je(d),Ne(m),Fe(h)),c){if(F(`debug`,`Server info:`,c),!Ye.current)return F(`debug`,`Skipping state update - component unmounted`),`failed`;Te(c),qe.current=EA({serverInfo:c,url:t,isMounted:()=>Ye.current,setServerInfo:Te,addLog:F})}if(l){if(F(`debug`,`Server capabilities:`,l),!Ye.current)return F(`debug`,`Skipping state update - component unmounted`),`failed`;De(l)}if(Ke.current){let e=await Ke.current.tokens?.();if(!Ye.current)return F(`debug`,`Connection aborted after token fetch for auth tokens - component unmounted`),`failed`;if(e?.access_token){let t=e.expires_in?Date.now()+e.expires_in*1e3:void 0,n=null,r=null,i=null;try{n=await Ke.current.getTokenEndpoint?.()??null}catch{n=null}try{r=await Ke.current.getResource?.()??null}catch{r=null}try{i=await Ke.current.getClientCredentials?.()??null}catch{i=null}if(!Ye.current)return F(`debug`,`Skipping state update - component unmounted`),`failed`;Ue({access_token:e.access_token,token_type:e.token_type||`Bearer`,expires_at:t,refresh_token:e.refresh_token,scope:e.scope,...n?{token_endpoint:n}:{},...r?{resource:r}:{},...i?.client_id?{client_id:i.client_id}:{},...i?.client_secret?{client_secret:i.client_secret}:{}})}}return rt.current=n,ge(`ready`),`success`}catch(r){let i=r,a=i?.message||String(r),o=Ke.current?.getLastAttemptedAuthUrl?.();if(o&&Ke.current&&m)return F(`info`,`OAuth already discovered (stored auth URL present); awaiting manual authentication.`),Ye.current&&(ge(`pending_auth`),Ve(o)),Je.current=!1,`auth_redirect`;let s=kA(r),c=oA(r);if(s&&ae&&Object.keys(ae).length>0)return gt(`Authentication failed (HTTP 401). Server does not support OAuth. Check your Authorization header value is correct.`),`failed`;if(s&&(!ae||Object.keys(ae).length===0))return gt(`Authentication required (HTTP 401). Server does not support OAuth. Add an Authorization header in the Custom Headers section (e.g., Authorization: Bearer YOUR_API_KEY).`),`failed`;if(c){if(s)return gt(`Authentication required (HTTP 401). Server does not support OAuth. Add an Authorization header in the Custom Headers section (e.g., Authorization: Bearer YOUR_API_KEY).`),`failed`;if(Ke.current)if(F(`info`,`Authentication required. OAuth provider available.`),m){if(F(`info`,`Waiting for user to initiate authentication flow...`),Ye.current){ge(`pending_auth`);let e=Ke.current?.getLastAttemptedAuthUrl?.();e&&(Ve(e),F(`info`,`Retrieved stored auth URL for manual authentication`))}return Je.current=!1,`auth_redirect`}else{F(`info`,`Triggering automatic OAuth authentication flow...`);try{if(await BS(Ke.current,{serverUrl:t,fetchFn:Ke.current.getProxyFetch?.()})===`REDIRECT`){let e=await Ke.current.getAuthorizationCode?.();if(!e)throw Error(`Authorization code not captured by headless provider`);await BS(Ke.current,{serverUrl:t,authorizationCode:e,fetchFn:Ke.current.getProxyFetch?.()})}return F(`info`,`OAuth flow completed, reconnecting...`),await e(n)}catch(e){return gt(`Automatic OAuth authentication failed: ${e instanceof Error?e.message:String(e)}`,e instanceof Error?e:Error(String(e))),`failed`}}return ae&&Object.keys(ae).length>0?(gt(`Authentication failed: Server returned 401 Unauthorized. Check your Authorization header value is correct.`),`failed`):(gt(`Authentication required: Server returned 401 Unauthorized. Add an Authorization header in the Custom Headers section (e.g., Authorization: Bearer YOUR_API_KEY).`),`failed`)}return gt(a,i instanceof Error?i:Error(String(i)))?`auth_redirect`:`failed`}},a=`failed`;F(`debug`,`Connecting via streamable HTTP`),a=await e(`http`),(a===`success`||a===`failed`||a===`auth_redirect`)&&(Je.current=!1),F(`debug`,`Connection sequence finished with status: ${a}`)},[F,gt,ht,t,i,r,ce.name,ce.version,ce.uri,ce.logo_uri,ie,ne,re,ae,ee,m,h,g,n,_,se,O,S,de,c,me,pe,dt,ft,pt]);(0,z.useEffect)(()=>{it.current=_t,at.current=gt},[_t,gt]);let vt=(0,z.useCallback)(()=>{tt.current===`failed`?(F(`info`,`Retry requested...`),it.current?.()):F(`warn`,`Retry called but state is not 'failed' (state: ${tt.current}). Ignoring.`)},[F]),yt=(0,z.useCallback)(async()=>{F(`info`,`Manual authentication requested...`);let e=tt.current;if(e===`failed`)F(`info`,`Attempting to reconnect and authenticate via retry...`),vt();else if(e===`pending_auth`){F(`info`,`Proceeding with authentication from pending state...`);try{if(TA(Ke.current,`Auth Provider not available for manual auth`),TA(t,`Server URL is required for authentication`),a){F(`info`,`Using provided authProvider for manual authentication`);let e=new URL(t),n=e.origin+e.pathname.replace(/\/+$/,``);await BS(Ke.current,{serverUrl:n,fetchFn:Ke.current.getProxyFetch?.()}),it.current?.();return}F(`info`,`Cleared ${Ke.current.clearStorage?.()??0} OAuth storage item(s) for fresh authentication`),ge(`authenticating`);let e=null,n=null,{provider:o,oauthProxyUrl:s}=jA({effectiveOAuthUrl:pe,storageKeyPrefix:i,oauthClientConfig:ce,callbackUrl:r,preventAutoAuth:!1,useRedirectFlow:h,gatewayUrl:de,oauthProxyUrl:c,onPopupWindow:(t,r,i)=>{e=i;try{n=new URL(t).searchParams.get(`state`)}catch{}g?.(t,r,i)},proxyOAuthRequests:!0,staticClientInfo:ie,clientMetadataUrl:ne,scope:re});s&&F(`info`,`Scoped OAuth proxy fetch enabled for manual auth`),Ke.current=o,F(`info`,`Triggering fresh OAuth authorization...`);let l=new URL(t),u=l.origin+l.pathname.replace(/\/+$/,``);try{await BS(o,{serverUrl:u,fetchFn:o.getProxyFetch?.()}),F(`info`,`OAuth flow completed (tokens obtained)`)}catch(e){F(`info`,`OAuth flow initiated (popup/redirect):`,e instanceof Error?e.message:`Redirecting...`)}let d=o.getLastAttemptedAuthUrl?.();if(d&&(Ve(d),F(`info`,`Updated auth URL for fallback:`,d),!n))try{n=new URL(d).searchParams.get(`state`)}catch{}if(h)return;let f=o.getKey?.(`tokens`);if(!f){F(`warn`,`Could not derive tokens storage key; relying on callback listener.`);return}et.current=!0;let p;try{p=await ck({popup:e,state:n,tokensKey:f})}finally{et.current=!1}if(!Ye.current)return;switch(p.kind){case`success`:F(`info`,`Authentication succeeded; reconnecting to MCP server...`),Je.current=!1,it.current?.();break;case`cancelled`:F(`warn`,`Authentication popup was closed before completing. Returning to pending_auth.`),ge(`pending_auth`);break;case`timeout`:F(`warn`,`Authentication timed out waiting for the popup. Returning to pending_auth.`),ge(`pending_auth`);break;case`error`:gt(`Authentication failed: ${p.error}`);break;default:break}}catch(e){if(!Ye.current)return;ge(`pending_auth`),F(`error`,`Manual authentication failed: ${e instanceof Error?e.message:String(e)}`)}}else if(e===`authenticating`){F(`warn`,`Already attempting authentication. Check for blocked popups or wait for timeout.`);let e=Ke.current?.getLastAttemptedAuthUrl?.();e&&!Be&&(Ve(e),F(`info`,`Manual authentication URL retrieved:`,e))}else F(`info`,`Client not in a state requiring manual authentication trigger (state: ${e}). If needed, try disconnecting and reconnecting.`)},[F,vt,gt,Be,t,h,g,i,ce.name,ce.uri,ce.logo_uri,ie,ne,re,r,se,a]),bt=(0,z.useCallback)(()=>{Ke.current?.clearStorage?(F(`info`,`Cleared ${Ke.current.clearStorage()} item(s) from localStorage for ${t}.`),Ve(void 0),ht()):F(`warn`,`Auth provider not initialized, cannot clear storage.`)},[t,F,ht]);(0,z.useEffect)(()=>{if(typeof window>`u`)return;let e=(e,t)=>{if(et.current){F(`debug`,`Ignoring auth callback via ${t}; manual popup flow owns this result.`);return}let n=Ke.current?.serverUrlHash;if(e?.serverUrlHash&&n&&e.serverUrlHash!==n){F(`debug`,`Ignoring auth callback via ${t} for a different server.`);return}if(F(`info`,`Received auth callback via ${t}.`,e),Qe.current&&clearTimeout(Qe.current),Qe.current=null,e?.success)F(`info`,`Authentication successful via popup. Reconnecting client...`),Je.current&&F(`debug`,`Connection attempt already in progress, resetting flag to allow reconnection.`),Je.current=!1,setTimeout(()=>{Ye.current&&(F(`debug`,`Initiating reconnection after successful auth callback.`),it.current?.())},100);else{if(tt.current!==`authenticating`&&tt.current!==`pending_auth`){F(`debug`,`Ignoring stale auth failure callback (state=${tt.current}).`);return}at.current?.(`Authentication failed in callback: ${e?.error||`Unknown reason.`}`)}},t=t=>{t.origin===window.location.origin&&t.data?.type===ok&&e(t.data,`postMessage`)};window.addEventListener(`message`,t),F(`debug`,`Auth callback message listener added.`);let n=null,r=t=>{t.data?.type===ok&&e(t.data,`BroadcastChannel`)};if(typeof BroadcastChannel<`u`)try{n=new BroadcastChannel(ak),n.addEventListener(`message`,r),F(`debug`,`Auth callback BroadcastChannel listener added.`)}catch(e){F(`warn`,`Failed to open auth callback BroadcastChannel; lost-opener popups will not reach this client.`,e),n=null}return()=>{if(window.removeEventListener(`message`,t),F(`debug`,`Auth callback message listener removed.`),n){try{n.removeEventListener(`message`,r),n.close()}catch{}F(`debug`,`Auth callback BroadcastChannel listener removed.`)}Qe.current&&clearTimeout(Qe.current)}},[F]),(0,z.useEffect)(()=>{if(Ye.current=!0,!n||!t)return F(`debug`,n?`No server URL provided, skipping connection.`:`Connection disabled via enabled flag.`),ge(`discovering`),()=>{Ye.current=!1};if(F(`debug`,`useMcp mounted, initiating connection.`),Xe.current=0,a)Ke.current=a,F(`debug`,`Using externally provided authProvider`);else if(!Ke.current||Ke.current.serverUrl!==pe){let{provider:e,oauthProxyUrl:t}=jA({effectiveOAuthUrl:pe,storageKeyPrefix:i,oauthClientConfig:ce,callbackUrl:r,preventAutoAuth:m,useRedirectFlow:h,gatewayUrl:de,oauthProxyUrl:c,onPopupWindow:g,proxyOAuthRequests:!0,staticClientInfo:ie,clientMetadataUrl:ne,scope:re});Ke.current=e,t&&F(`debug`,`OAuth proxy URL in effect: ${t}`),F(`debug`,`BrowserOAuthClientProvider initialized/updated with URL: ${pe}, proxy: ${t?`enabled`:`disabled`}, gateway: ${de?`enabled`:`disabled`}`)}return _t(),()=>{Ye.current=!1,F(`debug`,`useMcp unmounting, disconnecting.`),ht(!0)}},[t,n,i,r,ce.name,ce.version,ce.uri,ce.logo_uri,ie,ne,re,h,se,pe,s,a]);let xt=(0,z.useRef)(vt),St=(0,z.useRef)(F);(0,z.useEffect)(()=>{xt.current=vt,St.current=F},[vt,F]),(0,z.useEffect)(()=>{let e=null;if(he===`failed`&&d&&Xe.current>0){if(!$e.current){$e.current=!0;let t=typeof d==`number`?d:IA;St.current(`info`,`Connection failed, auto-retrying in ${t}ms...`),e=setTimeout(()=>{$e.current=!1,Ye.current&&tt.current===`failed`&&xt.current()},t)}}else he!==`failed`&&($e.current=!1);return()=>{e&&(clearTimeout(e),$e.current=!1)}},[he,d]);let Ct=(0,z.useCallback)(async()=>tt.current===`ready`?we?.icon?we.icon:qe.current?(F(`debug`,`Waiting for icon to finish loading...`),await qe.current):(F(`debug`,`No icon available and no loading in progress`),null):(F(`warn`,`Cannot ensure icon loaded - not connected`),null),[we,F]);return{state:he,name:we?.name||t||``,tools:_e,resources:ye,resourceTemplates:xe,prompts:Se,serverInfo:we,capabilities:Ee,protocolEra:Oe,protocolVersion:Ae,instructions:Me,extensions:Pe,error:Ie,log:Re,authUrl:Be,authTokens:He,client:We.current,...mt,retry:vt,disconnect:ht,authenticate:yt,clearStorage:bt,ensureIconLoaded:Ct}}var RA=null;function zA(){return typeof window<`u`&&window.name.startsWith(`mcp_auth_`)}function BA(e,t,n){return{type:ok,success:e,...e?{}:{error:t??`Unknown error`},...n.state?{state:n.state}:{},...n.serverUrlHash?{serverUrlHash:n.serverUrlHash}:{}}}function VA(e){if(typeof BroadcastChannel>`u`)return;let t;try{t=new BroadcastChannel(ak),t.postMessage(e)}catch(e){console.warn(`[mcp-callback] Failed to broadcast callback result:`,e)}finally{t&&setTimeout(()=>{try{t?.close()}catch{}},0)}}function HA(e,t,n,r){if(typeof document>`u`)return;document.body.innerHTML=``;let i=document.createElement(`div`);i.style.fontFamily=`sans-serif`,i.style.padding=`20px`;let a=document.createElement(`h1`);a.textContent=e,i.appendChild(a);let o=document.createElement(`p`);o.textContent=t,n&&(o.style.color=`red`,o.style.backgroundColor=`#ffebeb`,o.style.border=`1px solid red`,o.style.padding=`10px`,o.style.borderRadius=`4px`),i.appendChild(o);let s=document.createElement(`a`);if(s.href=`#`,s.textContent=`Close this window`,s.onclick=e=>(e.preventDefault(),window.close(),!1),i.appendChild(s),r){let e=document.createTextNode(` or `),t=document.createElement(`a`);t.href=r,t.textContent=`return to the app`,i.append(e,t)}document.body.appendChild(i)}function UA(e){let t=`mcp:auth:state_${e}`,n=localStorage.getItem(t)?t:null;if(!n){let t=`:state_${e}`;for(let e=0;e<localStorage.length;e++){let r=localStorage.key(e);if(r?.endsWith(t)){n=r;break}}}let r=n?localStorage.getItem(n):null;if(!n||!r)throw Error(`Invalid or expired OAuth state "${e}".`);let i;try{i=JSON.parse(r)}catch{throw localStorage.removeItem(n),Error(`Failed to parse stored OAuth state.`)}return{key:n,value:i}}function WA(e,t){let n=new URL(e);n.searchParams.set(`auth_error`,`oauth_callback_failed`),n.searchParams.set(`auth_error_description`,t),window.location.href=n.toString()}function GA(e,t,n,r){let i=BA(e,t,r),a=n?.returnUrl,o=n?.flowType===`popup`||zA();if(n?.flowType===`redirect`&&a){e?window.location.href=a:WA(a,t??`Authentication failed.`);return}if(window.opener&&!window.opener.closed){window.opener.postMessage(i,window.location.origin),window.close();return}if(o){VA(i),HA(e?`Authentication Successful!`:`Authentication Error`,e?`You're authenticated. You can close this window and return to the app.`:t??`Authentication failed.`,!e,a);try{window.close()}catch{}return}if(a){e?window.location.href=a:WA(a,t??`Authentication failed.`);return}if(!e){HA(`Authentication Error`,t??`Authentication failed.`,!0);return}window.location.href=`/`}function KA(){return RA||=qA(),RA}async function qA(){let e=new URLSearchParams(window.location.search),t=e.get(`state`),n=null,r=null,i=null;try{if(!t)throw Error(`OAuth callback is missing the state parameter.`);let a=UA(t);if(n=a.key,r=a.value,!r.expiry||r.expiry<Date.now())throw localStorage.removeItem(n),Error(`OAuth state has expired. Please start authentication again.`);if(!r.providerOptions)throw Error(`Stored OAuth state is missing provider options.`);let{serverUrl:o,...s}=r.providerOptions;i=new Pk(o,s),await new GC(new URL(o),{authProvider:i,fetch:i.getProxyFetch()}).finishAuth(e),localStorage.removeItem(n),GA(!0,void 0,r,{state:t,serverUrlHash:r.serverUrlHash})}catch(e){let a=e instanceof Error?e.message:String(e);console.error(`[mcp-callback] OAuth callback failed:`,e),n&&localStorage.removeItem(n),i&&localStorage.removeItem(i.getKey(`last_auth_url`)),GA(!1,a,r,{state:t,serverUrlHash:r?.serverUrlHash})}}JO();var JA=[`url`,`displayName`,`enabled`,`proxyConfig`,`oauthProxyUrl`,`connectionMode`,`autoProxyFallback`,`callbackUrl`,`storageKeyPrefix`,`headers`,`logLevel`,`autoRetry`,`autoReconnect`,`reconnectionOptions`,`popupFeatures`,`preventAutoAuth`,`useRedirectFlow`,`clientOptions`,`protocolNegotiation`,`timeout`,`clientInfo`,`oauth`];function YA(e){let t={};for(let n of JA){let r=e[n];r!==void 0&&(t[n]=r)}return t}function XA(e){return YA(e)}var ZA=500,QA=5*6e4;function $A(e){let[t,n]=(0,z.useState)([]),[r,i]=(0,z.useState)([]),[a,o]=(0,z.useState)([]),s=(0,z.useRef)(0),c=(0,z.useRef)(0),l=(0,z.useRef)(new Map),u=(0,z.useRef)(new Map),d=(0,z.useCallback)(e=>{for(let t of l.current.values())clearTimeout(t.timeout),t.reject(Error(e));l.current.clear();for(let t of u.current.values())clearTimeout(t.timeout),t.reject(Error(e));u.current.clear(),i([]),o([])},[]);(0,z.useEffect)(()=>()=>d(`MCP server connection was removed`),[d]);let f=(0,z.useCallback)(t=>{let r={id:globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random()}`,method:t.method,params:t.params,timestamp:Date.now(),read:!1};n(e=>[r,...e].slice(0,ZA)),e.onNotificationReceived?.(r)},[e.onNotificationReceived]),p=(0,z.useCallback)((e,t)=>{let n=l.current.get(e);n&&(clearTimeout(n.timeout),l.current.delete(e),i(t=>t.filter(t=>t.id!==e)),n.resolve(t))},[]),m=(0,z.useCallback)((e,t)=>{let n=l.current.get(e);n&&(clearTimeout(n.timeout),l.current.delete(e),i(t=>t.filter(t=>t.id!==e)),n.reject(Error(t??`User rejected sampling request`)))},[]),h=(0,z.useCallback)(t=>new Promise((n,r)=>{let a=`sampling-${s.current++}`,o={id:a,request:{method:`sampling/createMessage`,params:t},timestamp:Date.now(),serverName:e.serverName},c=setTimeout(()=>m(a,`Sampling request timed out`),QA);l.current.set(a,{resolve:n,reject:r,timeout:c}),i(e=>[...e,o]),e.onSamplingRequest?.(o),e.onGlobalSamplingRequest?.(o,e.serverId,e.serverName,p,m)}),[p,e,m]),g=(0,z.useCallback)((e,t)=>{let n=u.current.get(e);n&&(clearTimeout(n.timeout),u.current.delete(e),o(t=>t.filter(t=>t.id!==e)),n.resolve(t))},[]),_=(0,z.useCallback)((e,t)=>{let n=u.current.get(e);n&&(clearTimeout(n.timeout),u.current.delete(e),o(t=>t.filter(t=>t.id!==e)),n.reject(Error(t??`User rejected elicitation request`)))},[]),v=(0,z.useCallback)(t=>new Promise((n,r)=>{let i=`elicitation-${c.current++}`,a={id:i,request:t,timestamp:Date.now(),serverName:e.serverName},s=setTimeout(()=>_(i,`Elicitation request timed out`),QA);u.current.set(i,{resolve:n,reject:r,timeout:s}),o(e=>[...e,a]),e.onElicitationRequest?.(a),e.onGlobalElicitationRequest?.(a,e.serverId,e.serverName,g,_)}),[g,e,_]),y=(0,z.useCallback)(e=>{n(t=>t.map(t=>t.id===e?{...t,read:!0}:t))},[]),b=(0,z.useCallback)(()=>n(e=>e.map(e=>({...e,read:!0}))),[]),x=(0,z.useCallback)(()=>n([]),[]);return{notifications:t,pendingSamplingRequests:r,pendingElicitationRequests:a,unreadNotificationCount:t.filter(e=>!e.read).length,markNotificationRead:y,markAllNotificationsRead:b,clearNotifications:x,approveSampling:p,rejectSampling:m,approveElicitation:g,rejectElicitation:_,onNotification:f,onSampling:h,onElicitation:v,rejectAll:d}}var ej=qO.get(`McpClientProvider`),tj=(0,z.createContext)(null);function nj(e,t){return JSON.stringify(e)===JSON.stringify(t)}function rj(e,t){return e.id===t.id&&nj(YA(e),YA(t))&&e.name===t.name&&e.state===t.state&&e.error===t.error&&e.authUrl===t.authUrl&&nj(e.authTokens,t.authTokens)&&e.protocolEra===t.protocolEra&&e.protocolVersion===t.protocolVersion&&nj(e.serverInfo,t.serverInfo)&&nj(e.capabilities,t.capabilities)&&e.instructions===t.instructions&&nj(e.extensions,t.extensions)&&nj(e.tools,t.tools)&&nj(e.resources,t.resources)&&nj(e.resourceTemplates,t.resourceTemplates)&&nj(e.prompts,t.prompts)&&nj(e.notifications,t.notifications)&&e.unreadNotificationCount===t.unreadNotificationCount&&nj(e.pendingSamplingRequests,t.pendingSamplingRequests)&&nj(e.pendingElicitationRequests,t.pendingElicitationRequests)&&e.client===t.client}function ij({id:e,options:t,defaultCallbackUrl:n,defaultOAuthProxyUrl:r,defaultProxyConfig:i,defaultAutoProxyFallback:a,clientInfo:o,cachedMetadata:s,onUpdate:c,onUpdateConfig:l,onUpdateDisplayName:u,onReconnect:d,rpcWrapTransport:f,onGlobalSamplingRequest:p,onGlobalElicitationRequest:m}){let{displayName:h,onSamplingRequest:g,onElicitationRequest:_,onNotificationReceived:v,wrapTransport:y}=t,b=(0,z.useMemo)(()=>{let{displayName:c,onSamplingRequest:l,onElicitationRequest:u,onNotificationReceived:d,wrapTransport:f,...p}=t;return{...p,callbackUrl:p.callbackUrl||n,oauthProxyUrl:p.oauthProxyUrl||r,proxyConfig:p.proxyConfig||i,autoProxyFallback:p.autoProxyFallback===void 0?a:p.autoProxyFallback,clientInfo:p.clientInfo?o?{...o,...p.clientInfo}:p.clientInfo:o,_initialServerInfo:s,serverId:e}},[t,n,r,i,a,o,s]),x=(0,z.useMemo)(()=>{if(!(!f&&!y))return t=>{let n=t;return f&&(n=f(n,e)),y&&(n=y(n,e)),n}},[f,y,e]),S=$A({serverId:e,serverName:h||e,onNotificationReceived:v,onSamplingRequest:g,onElicitationRequest:_,onGlobalSamplingRequest:p,onGlobalElicitationRequest:m}),C=LA({...b,onNotification:S.onNotification,onSampling:S.onSampling,onElicitation:S.onElicitation,wrapTransport:x});(0,z.useEffect)(()=>{C.state!==`ready`&&S.rejectAll(`MCP server connection is no longer active`)},[C.state,S.rejectAll]);let w=(0,z.useCallback)(t=>l(e,t),[e,l]),T=(0,z.useCallback)(n=>{let r=t.proxyConfig?.proxyAddress?.trim();return t.connectionMode===`proxy`&&r?l(e,{proxyConfig:{...t.proxyConfig,proxyAddress:r,...n?{headers:n}:{}},headers:void 0}):l(e,{headers:n})},[e,t.connectionMode,t.proxyConfig,l]),E=(0,z.useCallback)(t=>u(e,t),[e,u]),ee=(0,z.useCallback)(()=>d(e),[e,d]),te=(0,z.useRef)(c),ne=(0,z.useRef)(null);return(0,z.useEffect)(()=>{te.current=c},[c]),(0,z.useEffect)(()=>{let n={...XA(t),...C,id:e,displayName:h||t.displayName||e,notifications:S.notifications,unreadNotificationCount:S.unreadNotificationCount,markNotificationRead:S.markNotificationRead,markAllNotificationsRead:S.markAllNotificationsRead,clearNotifications:S.clearNotifications,pendingSamplingRequests:S.pendingSamplingRequests,approveSampling:S.approveSampling,rejectSampling:S.rejectSampling,pendingElicitationRequests:S.pendingElicitationRequests,approveElicitation:S.approveElicitation,rejectElicitation:S.rejectElicitation,updateConfig:w,setHeaders:T,setDisplayName:E,reconnect:ee},r=ne.current;!r||!rj(r,n)?(ne.current=n,te.current(n)):ej.debug(`[McpServerWrapper ${e}] No meaningful changes detected, skipping onUpdate`)},[e,h,t,t.url,C.state,C.error,C.authUrl,C.tools,C.resources,C.resourceTemplates,C.prompts,C.serverInfo,C.capabilities,C.protocolEra,C.protocolVersion,C.instructions,C.extensions,C.authTokens,S,w,T,E,ee]),null}function aj({children:e,mcpServers:t,defaultCallbackUrl:n,defaultOAuthProxyUrl:r,defaultProxyConfig:i,defaultAutoProxyFallback:a=!1,defaultServerConfig:o,clientInfo:s,storageProvider:c,enableRpcLogging:l=!1,onServerAdded:u,onServerRemoved:d,onServerStateChange:f,onSamplingRequest:p,onElicitationRequest:m}){let[h,g]=(0,z.useState)([]),[_,v]=(0,z.useState)([]),[y,b]=(0,z.useState)({}),[x,S]=(0,z.useState)(!1),C=(0,z.useRef)(!1),w=(0,z.useRef)([]);(0,z.useEffect)(()=>{w.current=_},[_]);let T=(0,z.useRef)({}),[E,ee]=(0,z.useState)(void 0),[te,ne]=(0,z.useState)(!1);(0,z.useEffect)(()=>{if(!l||typeof window>`u`){ee(void 0),ne(!0);return}Promise.resolve().then(()=>(ik(),YO)).then(e=>{ej.debug(`[McpClientProvider] RPC logger loaded`),ee(()=>e.wrapTransportForLogging),ne(!0)}).catch(e=>{ej.error(`[McpClientProvider] Failed to load RPC logger:`,e),ee(void 0),ne(!0)})},[l]),(0,z.useEffect)(()=>{if(!te){ej.debug(`[McpClientProvider] Waiting for RPC logging to be ready before loading servers`);return}C.current||(C.current=!0,(async()=>{if(ej.debug(`[McpClientProvider] Loading servers, storageProvider:`,!!c,`mcpServers:`,t),!c){if(t){let e=Object.entries(t).map(([e,t])=>({id:e,options:t}));ej.debug(`[McpClientProvider] Loaded from mcpServers prop:`,e.length),g(e)}S(!0);return}try{let e=await Promise.resolve(c.getServers());if(ej.debug(`[McpClientProvider] Loaded from storage:`,Object.keys(e).length),c.getServerMetadata)try{let t=Object.keys(e).map(async e=>[e,await Promise.resolve(c.getServerMetadata(e))]),n=await Promise.all(t);T.current=Object.fromEntries(n.filter(e=>e[1]!==void 0)),ej.debug(`[McpClientProvider] Loaded cached metadata for`,Object.keys(T.current).length,`servers`)}catch(e){ej.warn(`[McpClientProvider] Failed to load cached metadata:`,e)}let n={...e,...t},r=Object.entries(n).map(([e,t])=>({id:e,options:t}));ej.debug(`[McpClientProvider] Total servers after merge:`,r.length),g(r),S(!0)}catch(e){ej.error(`[McpClientProvider] Failed to load from storage:`,e),t&&g(Object.entries(t).map(([e,t])=>({id:e,options:t}))),S(!0)}})())},[c,t,te]),(0,z.useEffect)(()=>{!c||!x||(async()=>{try{let e=h.reduce((e,t)=>(e[t.id]=XA(t.options),e),{});await Promise.resolve(c.setServers(e))}catch(e){ej.error(`[McpClientProvider] Failed to save to storage:`,e)}})()},[h,c,x]);let re=(0,z.useCallback)(e=>{ej.debug(`[McpClientProvider] handleServerUpdate called for server ${e.id}`,{toolCount:e.tools.length,state:e.state});let t=[];v(n=>{let r=n.findIndex(t=>t.id===e.id);if(r===-1)return ej.debug(`[McpClientProvider] Adding new server ${e.id} to state`),t.push(()=>u?.(e.id,e)),[...n,e];let i=n[r],a=i.state!==e.state,o=i.serverInfo!==e.serverInfo;if(ej.debug(`[McpClientProvider] Comparing server ${e.id}:`,{toolsChanged:i.tools!==e.tools,currentToolCount:i.tools.length,updatedToolCount:e.tools.length,stateChanged:a}),rj(i,e))return ej.debug(`[McpClientProvider] No changes detected for server ${e.id}, skipping update`),n;if(ej.debug(`[McpClientProvider] Updating server ${e.id} in state`),a&&t.push(()=>f?.(e.id,e.state)),o&&e.serverInfo&&c?.setServerMetadata){let t={name:e.serverInfo.name,version:e.serverInfo.version,title:e.serverInfo.title,websiteUrl:e.serverInfo.websiteUrl,icons:e.serverInfo.icons,icon:e.serverInfo.icon};T.current[e.id]=t,Promise.resolve(c.setServerMetadata(e.id,t)).catch(e=>{ej.error(`[McpClientProvider] Failed to save server metadata:`,e)})}let s=[...n];return s[r]=e,s}),t.length>0&&queueMicrotask(()=>{t.forEach(e=>e())})},[u,f,c]),ie=(0,z.useCallback)((e,t)=>{g(n=>n.find(t=>t.id===e)?n:(ej.debug(`[McpClientProvider] Adding new server to configs:`,e),[...n,{id:e,options:t}]))},[]),D=(0,z.useCallback)(async(e,t)=>{let n=w.current.find(t=>t.id===e);if(v(t=>t.filter(t=>t.id!==e)),g(t=>t.filter(t=>t.id!==e)),b(t=>{let{[e]:n,...r}=t;return r}),n?.disconnect&&await n.disconnect(),t?.clearCredentials&&n?.clearStorage&&await n.clearStorage(),l){let{clearRpcLogs:t}=await Promise.resolve().then(()=>(ik(),YO));t(e)}d?.(e)},[l,d]),ae=(0,z.useCallback)(async(e,t)=>{let n=h.find(t=>t.id===e);if(!n){ej.warn(`[McpClientProvider] Cannot update server "${e}" - not found`);return}let r={...n.options,...t};nj(YA(n.options),YA(r))||(await w.current.find(t=>t.id===e)?.disconnect(),v(t=>t.filter(t=>t.id!==e)),g(t=>t.map(t=>t.id===e?{id:e,options:r}:t)),b(t=>({...t,[e]:(t[e]??0)+1})))},[h]),O=(0,z.useCallback)(async e=>{if(!h.find(t=>t.id===e)){ej.warn(`[McpClientProvider] Cannot reconnect server "${e}" - not found`);return}await w.current.find(t=>t.id===e)?.disconnect(),v(t=>t.filter(t=>t.id!==e)),b(t=>({...t,[e]:(t[e]??0)+1}))},[h]),k=(0,z.useCallback)(async(e,t)=>new Promise(n=>{let r=h.find(t=>t.id===e);if(!r){ej.warn(`[McpClientProvider] Cannot update server metadata for "${e}" - not found`),n();return}let i={...r.options,displayName:t.name};v(n=>n.map(n=>n.id===e?{...n,displayName:t.name}:n)),g(t=>{let r=t.map(t=>t.id===e?{id:e,options:i}:t);return setTimeout(()=>n(),0),r})}),[h]),A=(0,z.useCallback)(e=>_.find(t=>t.id===e),[_]),oe=(0,z.useMemo)(()=>({servers:_,addServer:ie,removeServer:D,updateServerMetadata:k,updateServer:ae,getServer:A,storageLoaded:x}),[_,ie,D,k,ae,A,x]),{capabilities:se,...ce}=s||{},j=(0,z.useMemo)(()=>Object.keys(ce).length?ce:void 0,[s]),M=(0,z.useMemo)(()=>h.map(e=>{let t=o?{...o,...e.options}:e.options;return se&&(t={...t,clientOptions:{...t.clientOptions,capabilities:{...se,...t.clientOptions?.capabilities}}}),{id:e.id,options:t}}),[h,se,o]),N=typeof window<`u`&&/\/oauth\/callback\/?$/.test(window.location.pathname);return z.createElement(tj.Provider,{value:oe},e,!N&&M.map(e=>z.createElement(ij,{key:`${e.id}-v${y[e.id]??0}`,id:e.id,options:e.options,defaultCallbackUrl:n,defaultOAuthProxyUrl:r,defaultProxyConfig:i,defaultAutoProxyFallback:a,clientInfo:j,cachedMetadata:T.current[e.id],onUpdate:re,onUpdateConfig:ae,onUpdateDisplayName:(e,t)=>k(e,{name:t}),onReconnect:O,rpcWrapTransport:E,onGlobalSamplingRequest:p,onGlobalElicitationRequest:m})))}function oj(){let e=(0,z.useContext)(tj);if(!e)throw Error(`useMcpClient must be used within a McpClientProvider`);return e}var sj=class{constructor(e=`mcp-client-servers`){this.storageKey=e,this.metadataKey=`${e}-metadata`}metadataKey;getServers(){try{let e=localStorage.getItem(this.storageKey);return e?JSON.parse(e):{}}catch(e){return console.error(`[LocalStorageProvider] Failed to load servers:`,e),{}}}setServers(e){try{localStorage.setItem(this.storageKey,JSON.stringify(e))}catch(e){console.error(`[LocalStorageProvider] Failed to save servers:`,e)}}setServer(e,t){let n=this.getServers();n[e]=t,this.setServers(n)}removeServer(e){let t=this.getServers();delete t[e],this.setServers(t),this.removeServerMetadata(e)}clear(){try{localStorage.removeItem(this.storageKey),localStorage.removeItem(this.metadataKey)}catch(e){console.error(`[LocalStorageProvider] Failed to clear:`,e)}}getAllMetadata(){try{let e=localStorage.getItem(this.metadataKey);return e?JSON.parse(e):{}}catch(e){return console.error(`[LocalStorageProvider] Failed to load metadata:`,e),{}}}setAllMetadata(e){try{localStorage.setItem(this.metadataKey,JSON.stringify(e))}catch(e){console.error(`[LocalStorageProvider] Failed to save metadata:`,e)}}getServerMetadata(e){return this.getAllMetadata()[e]}setServerMetadata(e,t){let n=this.getAllMetadata();n[e]={...t,cachedAt:Date.now()},this.setAllMetadata(n)}removeServerMetadata(e){let t=this.getAllMetadata();delete t[e],this.setAllMetadata(t)}};ik();function cj(e){let t={};if(!e)return t;for(let[n,r]of Object.entries(e))if(typeof r==`string`&&(r.trim().startsWith(`[`)||r.trim().startsWith(`{`)))try{t[n]=JSON.parse(r)}catch{t[n]=r}else t[n]=r;return t}var lj=`<script>
|
|
203
|
+
container holding the app. Specify either width or maxWidth, and either height or maxHeight.`),locale:V().optional().describe(`User's language and region preference in BCP 47 format.`),timeZone:V().optional().describe(`User's timezone in IANA format.`),userAgent:V().optional().describe(`Host application identifier.`),platform:J([X(`web`),X(`desktop`),X(`mobile`)]).optional().describe(`Platform type for responsive design decisions.`),deviceCapabilities:K({touch:U().optional().describe(`Whether the device supports touch input.`),hover:U().optional().describe(`Whether the device supports hover interactions.`)}).optional().describe(`Device input capabilities.`),safeAreaInsets:K({top:H().describe(`Top safe area inset in pixels.`),right:H().describe(`Right safe area inset in pixels.`),bottom:H().describe(`Bottom safe area inset in pixels.`),left:H().describe(`Left safe area inset in pixels.`)}).optional().describe(`Mobile safe area boundaries in pixels.`)}).passthrough();K({method:X(`ui/notifications/host-context-changed`),params:kO.describe(`Partial context update containing only changed fields.`)});var AO=K({method:X(`ui/update-model-context`),params:K({content:G(tD).optional().describe(`Context content blocks (text, image, etc.).`),structuredContent:Y(V(),W().describe(`Structured content for machine-readable context data.`)).optional().describe(`Structured content for machine-readable context data.`)})}),jO=K({method:X(`ui/initialize`),params:K({appInfo:JT.describe(`App identification (name and version).`),appCapabilities:SO.describe(`Features and capabilities this app provides.`),protocolVersion:V().describe(`Protocol version this app supports.`)})}),MO=K({protocolVersion:V().describe(`Negotiated protocol version string (e.g., "2025-11-21").`),hostInfo:JT.describe(`Host application identification and version.`),hostCapabilities:xO.describe(`Features and capabilities provided by the host.`),hostContext:kO.describe(`Rich context about the host environment.`)}).passthrough(),NO=class{eventTarget;eventSource;messageListener;constructor(e=window.parent,t){this.eventTarget=e,this.eventSource=t,this.messageListener=e=>{if(t&&e.source!==this.eventSource){console.debug(`Ignoring message from unknown source`,e);return}let n=HT.safeParse(e.data);n.success?(console.debug(`Parsed message`,n.data),this.onmessage?.(n.data)):e.data?.jsonrpc===`2.0`?(console.error(`Failed to parse message`,n.error.message,e),this.onerror?.(Error(`Invalid JSON-RPC message received: `+n.error.message))):console.debug(`Ignoring non-JSON-RPC message`,n.error.message,e)}}async start(){window.addEventListener(`message`,this.messageListener)}async send(e,t){e.method!==`ui/notifications/tool-input-partial`&&console.debug(`Sending message`,e),this.eventTarget.postMessage(e,`*`)}async close(){window.removeEventListener(`message`,this.messageListener),this.onclose?.()}onclose;onerror;onmessage;sessionId;setProtocolVersion},PO=`text/html;profile=mcp-app`;function FO(e){if(!e)return``;let t=[];return e.camera&&t.push(`camera`),e.microphone&&t.push(`microphone`),e.geolocation&&t.push(`geolocation`),e.clipboardWrite&&t.push(`clipboard-write`),t.join(`; `)}var IO=[iO],LO=class extends Jb{_client;_hostInfo;_hostCapabilities;_appCapabilities;_hostContext={};_appInfo;_initializedReceived=!1;_registeredEvents=new Set;_events=new rO;_wrapHandler(e,t){let n=super._wrapHandler(e,t);return e===`ui/initialize`||e===`ping`?n:async(t,r)=>(this._initializedReceived||console.warn(`[ext-apps] AppBridge received '${e}' before ui/notifications/initialized. The View is calling host methods before completing the handshake; it should await app.connect() first.`),n(t,r))}eventSchemas={sizechange:hO,sandboxready:fO,initialized:CO,requestteardown:bO,loggingmessage:vD};setEventHandler(e,t){this._ensureEventSlot(e),this._events.setHandler(e,t)}getEventHandler(e){return this._events.getHandler(e)}addEventListener(e,t){this._ensureEventSlot(e),this._events.addEventListener(e,t)}removeEventListener(e,t){this._events.removeEventListener(e,t)}_ensureEventSlot(e){if(this._registeredEvents.has(e))return;let t=this.eventSchemas[e];if(!t)throw Error(`Unknown event: ${String(e)}`);let n=t=>{e===`initialized`&&(this._initializedReceived=!0),this._events.dispatch(e,t)};e===`loggingmessage`?this.setNotificationHandler(`notifications/message`,e=>{n(e.params)}):this.setNotificationHandler(t.shape.method.value,{params:t.shape.params},e=>n(e)),this._registeredEvents.add(e)}warnIfRequestHandlerReplaced(e,t,n){t&&n&&console.warn(`[MCP Apps] ${e} handler replaced. Previous handler will no longer be called.`)}constructor(e,t,n,r){super(r),this._client=e,this._hostInfo=t,this._hostCapabilities=n,this._ensureEventSlot(`initialized`),this._hostContext=r?.hostContext||{},this.setRequestHandler(`ui/initialize`,{params:jO.shape.params,result:MO},e=>this._onAppsInitialize(e)),this.setRequestHandler(`ping`,(e,t)=>(this.onping?.(e.params,t),{})),this.setRequestHandler(`ui/request-display-mode`,{params:wO.shape.params,result:TO},()=>({mode:this._hostContext.displayMode??`inline`}))}buildContext(e){return e}assertCapabilityForMethod(e){}assertRequestHandlerCapability(e){}assertNotificationCapability(e){}getAppCapabilities(){return this._appCapabilities}getAppVersion(){return this._appInfo}onping;get onsizechange(){return this.getEventHandler(`sizechange`)}set onsizechange(e){this.setEventHandler(`sizechange`,e)}get onsandboxready(){return this.getEventHandler(`sandboxready`)}set onsandboxready(e){this.setEventHandler(`sandboxready`,e)}get oninitialized(){return this.getEventHandler(`initialized`)}set oninitialized(e){this.setEventHandler(`initialized`,e)}_onmessage;get onmessage(){return this._onmessage}set onmessage(e){this.warnIfRequestHandlerReplaced(`onmessage`,this._onmessage,e),this._onmessage=e,this.setRequestHandler(`ui/message`,{params:OO.shape.params,result:dO},async(e,t)=>{if(!this._onmessage)throw Error(`No onmessage handler set`);return this._onmessage(e,t)})}_onopenlink;get onopenlink(){return this._onopenlink}set onopenlink(e){this.warnIfRequestHandlerReplaced(`onopenlink`,this._onopenlink,e),this._onopenlink=e,this.setRequestHandler(`ui/open-link`,{params:cO.shape.params,result:lO},async(e,t)=>{if(!this._onopenlink)throw Error(`No onopenlink handler set`);return this._onopenlink(e,t)})}_ondownloadfile;get ondownloadfile(){return this._ondownloadfile}set ondownloadfile(e){this.warnIfRequestHandlerReplaced(`ondownloadfile`,this._ondownloadfile,e),this._ondownloadfile=e,this.setRequestHandler(`ui/download-file`,{params:DO.shape.params,result:uO},async(e,t)=>{if(!this._ondownloadfile)throw Error(`No ondownloadfile handler set`);return this._ondownloadfile(e,t)})}get onrequestteardown(){return this.getEventHandler(`requestteardown`)}set onrequestteardown(e){this.setEventHandler(`requestteardown`,e)}_onrequestdisplaymode;get onrequestdisplaymode(){return this._onrequestdisplaymode}set onrequestdisplaymode(e){this.warnIfRequestHandlerReplaced(`onrequestdisplaymode`,this._onrequestdisplaymode,e),this._onrequestdisplaymode=e,this.setRequestHandler(`ui/request-display-mode`,{params:wO.shape.params,result:TO},async(e,t)=>{if(!this._onrequestdisplaymode)throw Error(`No onrequestdisplaymode handler set`);return this._onrequestdisplaymode(e,t)})}get onloggingmessage(){return this.getEventHandler(`loggingmessage`)}set onloggingmessage(e){this.setEventHandler(`loggingmessage`,e)}_onupdatemodelcontext;get onupdatemodelcontext(){return this._onupdatemodelcontext}set onupdatemodelcontext(e){this.warnIfRequestHandlerReplaced(`onupdatemodelcontext`,this._onupdatemodelcontext,e),this._onupdatemodelcontext=e,this.setRequestHandler(`ui/update-model-context`,{params:AO.shape.params,result:UT},async(e,t)=>{if(!this._onupdatemodelcontext)throw Error(`No onupdatemodelcontext handler set`);return this._onupdatemodelcontext(e,t)})}_oncalltool;get oncalltool(){return this._oncalltool}set oncalltool(e){this.warnIfRequestHandlerReplaced(`oncalltool`,this._oncalltool,e),this._oncalltool=e,this.setRequestHandler(`tools/call`,async(e,t)=>{if(!this._oncalltool)throw Error(`No oncalltool handler set`);return this._oncalltool(e.params,t)})}set oncreatesamplingmessage(e){this.setRequestHandler(`sampling/createMessage`,async(t,n)=>e(t.params,n))}sendToolListChanged(e={}){return this.notification({method:`notifications/tools/list_changed`,params:e})}_onlistresources;get onlistresources(){return this._onlistresources}set onlistresources(e){this.warnIfRequestHandlerReplaced(`onlistresources`,this._onlistresources,e),this._onlistresources=e,this.setRequestHandler(`resources/list`,async(e,t)=>{if(!this._onlistresources)throw Error(`No onlistresources handler set`);return this._onlistresources(e.params,t)})}_onlistresourcetemplates;get onlistresourcetemplates(){return this._onlistresourcetemplates}set onlistresourcetemplates(e){this.warnIfRequestHandlerReplaced(`onlistresourcetemplates`,this._onlistresourcetemplates,e),this._onlistresourcetemplates=e,this.setRequestHandler(`resources/templates/list`,async(e,t)=>{if(!this._onlistresourcetemplates)throw Error(`No onlistresourcetemplates handler set`);return this._onlistresourcetemplates(e.params,t)})}_onreadresource;get onreadresource(){return this._onreadresource}set onreadresource(e){this.warnIfRequestHandlerReplaced(`onreadresource`,this._onreadresource,e),this._onreadresource=e,this.setRequestHandler(`resources/read`,async(e,t)=>{if(!this._onreadresource)throw Error(`No onreadresource handler set`);return this._onreadresource(e.params,t)})}sendResourceListChanged(e={}){return this.notification({method:`notifications/resources/list_changed`,params:e})}_onlistprompts;get onlistprompts(){return this._onlistprompts}set onlistprompts(e){this.warnIfRequestHandlerReplaced(`onlistprompts`,this._onlistprompts,e),this._onlistprompts=e,this.setRequestHandler(`prompts/list`,async(e,t)=>{if(!this._onlistprompts)throw Error(`No onlistprompts handler set`);return this._onlistprompts(e.params,t)})}sendPromptListChanged(e={}){return this.notification({method:`notifications/prompts/list_changed`,params:e})}getCapabilities(){return this._hostCapabilities}async _onAppsInitialize(e){let t=e.protocolVersion;return this._appInfo!==void 0&&console.warn(`[ext-apps] AppBridge received a second ui/initialize. The View may be double-mounting (e.g. React StrictMode in dev) without closing the previous App instance. Responding normally; the latest appInfo/appCapabilities replace the previous values.`),this._appCapabilities=e.appCapabilities,this._appInfo=e.appInfo,{protocolVersion:IO.includes(t)?t:iO,hostCapabilities:this.getCapabilities(),hostInfo:this._hostInfo,hostContext:this._hostContext}}setHostContext(e){let t={},n=!1;for(let r of Object.keys(e)){let i=this._hostContext[r],a=e[r];RO(i,a)||(t[r]=a,n=!0)}n&&(this._hostContext=e,this.sendHostContextChange(t))}sendHostContextChange(e){return this.notification({method:`ui/notifications/host-context-changed`,params:e})}sendToolInput(e){return this.notification({method:`ui/notifications/tool-input`,params:e})}sendToolInputPartial(e){return this.notification({method:`ui/notifications/tool-input-partial`,params:e})}sendToolResult(e){return this.notification({method:`ui/notifications/tool-result`,params:e})}sendToolCancelled(e){return this.notification({method:`ui/notifications/tool-cancelled`,params:e})}sendSandboxResourceReady(e){return this.notification({method:`ui/notifications/sandbox-resource-ready`,params:e})}teardownResource(e,t){return this.request({method:`ui/resource-teardown`,params:e},vO,t)}sendResourceTeardown=this.teardownResource;callTool(e,t){return this.request({method:`tools/call`,params:e},t)}listTools(e,t){return this.request({method:`tools/list`,params:e},t)}async connect(e){if(this.transport)throw Error(`AppBridge is already connected. Call close() before connecting again.`);if(this._initializedReceived=!1,this._client){let e=this._client.getServerCapabilities();if(!e)throw Error(`Client server capabilities not available`);e.tools&&(this.oncalltool=async(e,t)=>this._client.request({method:`tools/call`,params:e},{signal:t.mcpReq.signal}),e.tools.listChanged&&this._client.setNotificationHandler(`notifications/tools/list_changed`,e=>this.sendToolListChanged(e.params))),e.resources&&(this.onlistresources=async(e,t)=>this._client.request({method:`resources/list`,params:e},{signal:t.mcpReq.signal}),this.onlistresourcetemplates=async(e,t)=>this._client.request({method:`resources/templates/list`,params:e},{signal:t.mcpReq.signal}),this.onreadresource=async(e,t)=>this._client.request({method:`resources/read`,params:e},{signal:t.mcpReq.signal}),e.resources.listChanged&&this._client.setNotificationHandler(`notifications/resources/list_changed`,e=>this.sendResourceListChanged(e.params))),e.prompts&&(this.onlistprompts=async(e,t)=>this._client.request({method:`prompts/list`,params:e},{signal:t.mcpReq.signal}),e.prompts.listChanged&&this._client.setNotificationHandler(`notifications/prompts/list_changed`,e=>this.sendPromptListChanged(e.params)))}return super.connect(e)}};function RO(e,t){return JSON.stringify(e)===JSON.stringify(t)}var zO=Object.defineProperty,BO=Object.getOwnPropertyNames,VO=(e,t)=>function(){return e&&(t=(0,e[BO(e)[0]])(e=0)),t},HO=(e,t)=>{for(var n in t)zO(e,n,{get:t[n],enumerable:!0})};function UO(){let e;try{e=typeof process<`u`?{}.MCP_USE_LOG_LEVEL??{}.DEBUG:void 0}catch{}let t=e?.trim().toLowerCase();return t===`2`?`debug`:t&&WO.includes(t)?t:`info`}var WO,GO,KO,qO,$,JO=VO({"src/utils/logging.ts"(){WO=[`silent`,`error`,`warn`,`info`,`http`,`verbose`,`debug`,`silly`],GO={silent:``,error:`❌`,warn:`⚠️`,info:`ℹ️`,http:`🌐`,verbose:`📝`,debug:`🔍`,silly:`🤪`},KO=class{constructor(e=`mcp-use`,t=`info`,n=`minimal`){this.name=e,this.level=t,this.format=n}write(e,t,n){if(this.level===`silent`||WO.indexOf(e)>WO.indexOf(this.level))return;let r=n.map(e=>{if(typeof e==`string`)return e;try{return JSON.stringify(e)}catch{return String(e)}}).join(` `),i=r?`${t} ${r}`:t,a=new Date().toLocaleTimeString(`en-US`,{hour12:!1}),o=this.format===`minimal`?e:e.toUpperCase(),s=this.format===`emoji`?` ${GO[e]}`:``,c=`${a} [${this.name}]${s} ${o}: ${i}`;(e===`error`?console.error:e===`warn`?console.warn:e===`info`?console.info:e===`debug`?console.debug:console.log)(c)}error=(e,...t)=>this.write(`error`,e,t);warn=(e,...t)=>this.write(`warn`,e,t);info=(e,...t)=>this.write(`info`,e,t);debug=(e,...t)=>this.write(`debug`,e,t);http=(e,...t)=>this.write(`http`,e,t);verbose=(e,...t)=>this.write(`verbose`,e,t);silly=(e,...t)=>this.write(`silly`,e,t);setFormat(e){this.format=e}},qO=class{static instances={};static currentFormat=`minimal`;static currentLevel;static get(e=`mcp-use`){return this.instances[e]??=new KO(e,this.currentLevel??UO(),this.currentFormat)}static configure({level:e=UO(),format:t=`minimal`}={}){this.currentLevel=e,this.currentFormat=t;for(let n of Object.values(this.instances))n.level=e,n.format=t}static setDebug(e){let t=e===2||e===!0?`debug`:`info`;this.currentLevel=t;for(let e of Object.values(this.instances))e.level=t;try{typeof process<`u`&&({}.MCP_USE_LOG_LEVEL=t)}catch{}}static setFormat(e){this.configure({format:e})}},$=qO.get()}}),YO={};HO(YO,{clearRpcLogs:()=>$O,getAllRpcLogs:()=>ZO,getRpcLogs:()=>XO,subscribeToRpcLogs:()=>QO,wrapTransportForLogging:()=>ek});function XO(e){return rk.getLogsForServer(e)}function ZO(){return rk.getAllLogs()}function QO(e){return rk.subscribe(e)}function $O(e){rk.clear(e)}function ek(e,t){class n{constructor(e){this.inner=e,this.inner.onmessage=(e,n)=>{rk.publish({serverId:t,direction:`receive`,timestamp:new Date().toISOString(),message:e}),this.onmessage?.(e,n)},this.inner.onclose=()=>{this.onclose?.()},this.inner.onerror=e=>{this.onerror?.(e)}}onclose;onerror;onmessage;async start(){typeof this.inner.start==`function`&&await this.inner.start()}async send(e,n){rk.publish({serverId:t,direction:`send`,timestamp:new Date().toISOString(),message:e}),await this.inner.send(e,n)}async close(){await this.inner.close()}get sessionId(){return this.inner.sessionId}setProtocolVersion(e){typeof this.inner.setProtocolVersion==`function`&&this.inner.setProtocolVersion(e)}}return new n(e)}var tk,nk,rk,ik=VO({"src/react/rpc-logger.ts"(){JO(),tk=qO.get(`RpcLogger`),nk=class{logs=[];listeners=new Set;maxLogs=1e3;publish(e){tk.debug(`[RPC Logger] Publishing log:`,e.direction,e.serverId,e.message?.method),this.logs.push(e),this.logs.length>this.maxLogs&&(this.logs=this.logs.slice(-this.maxLogs)),tk.debug(`[RPC Logger] Total logs:`,this.logs.length,`Listeners:`,this.listeners.size),this.listeners.forEach(t=>{try{t(e)}catch(e){tk.error(`[RPC Logger] Listener error:`,e)}})}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}getLogsForServer(e){return this.logs.filter(t=>t.serverId===e)}getAllLogs(){return[...this.logs]}clear(e){e?this.logs=this.logs.filter(t=>t.serverId!==e):this.logs=[]}},rk=new nk}}),ak=`mcp_auth_callback`,ok=`mcp_auth_callback`;function sk(e){try{return typeof localStorage<`u`&&!!localStorage.getItem(e)}catch{return!1}}function ck({popup:e,state:t,tokensKey:n,timeoutMs:r=5*6e4,closePollMs:i=1e3,closeGraceMs:a=2e4,expectedOrigin:o=typeof window<`u`?window.location.origin:``}){return new Promise(s=>{let c=!1,l=null,u=null,d=null,f=null,p=()=>{if(l&&=(clearInterval(l),null),u&&=(clearTimeout(u),null),d&&=(clearTimeout(d),null),typeof window<`u`&&(window.removeEventListener(`message`,g),window.removeEventListener(`storage`,v)),f){try{f.removeEventListener(`message`,_),f.close()}catch{}f=null}},m=e=>{c||(c=!0,p(),s(e))},h=e=>{!e||e.type!==ok||e.state&&t&&e.state!==t||(e.success?m({kind:`success`}):m({kind:`error`,error:e.error??`Authentication failed in callback.`}))},g=e=>{o&&e.origin!==o||h(e.data)},_=e=>{h(e.data)},v=e=>{e.key===n&&e.newValue&&m({kind:`success`})};if(typeof window<`u`&&(window.addEventListener(`message`,g),window.addEventListener(`storage`,v)),typeof BroadcastChannel<`u`)try{f=new BroadcastChannel(ak),f.addEventListener(`message`,_)}catch{f=null}e&&(l=setInterval(()=>{if(c)return;let t=!1;try{t=e.closed}catch{t=!1}if(t){if(l&&=(clearInterval(l),null),sk(n)){m({kind:`success`});return}d=setTimeout(()=>{m(sk(n)?{kind:`success`}:{kind:`cancelled`})},a)}},i)),u=setTimeout(()=>{m(sk(n)?{kind:`success`}:{kind:`timeout`})},r)})}JO();var lk=`http://json-schema.org/draft-04/schema`,uk=new Set([`http://json-schema.org/draft-07/schema`,`https://json-schema.org/draft-07/schema`]),dk=new Set([`https://json-schema.org/draft/2019-09/schema`,`http://json-schema.org/draft/2019-09/schema`]),fk=new Set([`https://json-schema.org/draft/2020-12/schema`,`http://json-schema.org/draft/2020-12/schema`]);function pk(e){if(!(`$schema`in e)||typeof e.$schema!=`string`)return`2020-12`;let t=e.$schema.replace(/#$/,``);if(t===lk)return`4`;if(uk.has(t))return`7`;if(dk.has(t))return`2019-09`;if(fk.has(t))return`2020-12`}var mk=class{getValidator(e){let t=pk(e);return(t===void 0?new Jx:new Jx({draft:t})).getValidator(e)}};JO();var hk;function gk(e){hk?.(e)}var _k={"~standard":{version:1,vendor:`mcp-use`,validate:e=>({value:e})}},vk=class{client=null;connectionManager=null;toolsCache=null;capabilitiesCache=null;serverInfoCache=null;connected=!1;opts;notificationHandlers=[];rootsCache=[];activeProgressHandlers=new Set;constructor(e={}){this.opts=e,e.roots&&(this.rootsCache=[...e.roots]),e.onNotification&&this.notificationHandlers.push(e.onNotification)}trackConnectorInit(e){let t=this.constructor.name;gk({connectorType:t,...e})}onNotification(e){this.notificationHandlers.push(e),this.client&&this.setupNotificationHandler()}async forwardNotification(e){for(let t of this.notificationHandlers)try{await t(e)}catch(e){$.error(`Error in notification handler:`,e)}}async handleListChanged(e,t,n){if(t){$.warn(`[Auto] ${e} refresh failed:`,t);return}e===`notifications/tools/list_changed`&&n&&(this.toolsCache=[...n]),await this.forwardNotification({method:e})}setupNotificationHandler(){if(!this.client)return;this.client.fallbackNotificationHandler=async e=>{switch(e.method){case`notifications/tools/list_changed`:await this.refreshToolsCache();break;case`notifications/resources/list_changed`:await this.onResourcesListChanged();break;case`notifications/prompts/list_changed`:await this.onPromptsListChanged();break;default:break}await this.forwardNotification(e)};let e=this.client._notificationHandlers;for(let t of[`notifications/progress`,`notifications/cancelled`]){let n=e.get(t);n&&e.set(t,async e=>{await n(e),await this.forwardNotification(e)})}}setupRoundProgressForwarding(){if(!this.client)return;let e=this.client,t=e._onnotification.bind(this.client);e._onnotification=async e=>{e&&typeof e==`object`&&e.method===`notifications/progress`&&this.forwardRoundProgress(e.params),await t?.(e)}}forwardRoundProgress(e){if(this.activeProgressHandlers.size===1){let[t]=this.activeProgressHandlers;t?.(e)}}async refreshToolsCache(){if(this.client)try{$.debug(`[Auto] Refreshing tools cache due to list_changed notification`);let e=await this.client.listTools();this.toolsCache=e.tools??[],$.debug(`[Auto] Refreshed tools cache: ${this.toolsCache.length} tools`)}catch(e){$.warn(`[Auto] Failed to refresh tools cache:`,e)}}async onResourcesListChanged(){$.debug(`[Auto] Resources list changed - clients should re-fetch if needed`)}async onPromptsListChanged(){$.debug(`[Auto] Prompts list changed - clients should re-fetch if needed`)}async setRoots(e){this.rootsCache=[...e],this.client&&($.debug(`Sending roots/list_changed notification with ${e.length} root(s)`),await this.client.sendRootsListChanged())}getRoots(){return[...this.rootsCache]}setupRootsHandler(){this.client&&this.client.setRequestHandler(`roots/list`,async()=>($.debug(`Server requested roots list, returning ${this.rootsCache.length} root(s)`),{roots:this.rootsCache}))}setupSamplingHandler(){if(!this.client){$.debug(`setupSamplingHandler: No client available`);return}let e=this.opts.onSampling;if(!e){$.debug(`setupSamplingHandler: No sampling callback provided`);return}$.debug(`setupSamplingHandler: Setting up sampling request handler`),this.client.setRequestHandler(`sampling/createMessage`,async t=>($.debug(`Server requested sampling, forwarding to callback`),await e(t.params))),$.debug(`setupSamplingHandler: Sampling handler registered successfully`)}setupElicitationHandler(){if(!this.client){$.debug(`setupElicitationHandler: No client available`);return}let e=this.opts.onElicitation;if(!e){$.debug(`setupElicitationHandler: No elicitation callback provided`);return}$.debug(`setupElicitationHandler: Setting up elicitation request handler`),this.client.setRequestHandler(`elicitation/create`,async t=>($.debug(`Server requested elicitation, forwarding to callback`),await e(t.params))),$.debug(`setupElicitationHandler: Elicitation handler registered successfully`)}async disconnect(){if(!this.connected){$.debug(`Not connected to MCP implementation`);return}$.debug(`Disconnecting from MCP implementation`),await this.cleanupResources(),this.connected=!1,$.debug(`Disconnected from MCP implementation`)}get isClientConnected(){return this.client!=null}async initialize(e=this.opts.defaultRequestOptions??{}){if(!this.client)throw Error(`MCP client is not connected`);$.debug(`Caching server capabilities & tools`);let t=this.client.getServerCapabilities();this.capabilitiesCache=t||null;let n=this.client.getServerVersion();this.serverInfoCache=n?{name:n.name,version:n.version,title:n.title,description:n.description,websiteUrl:n.websiteUrl,icons:n.icons}:null;try{let t=await this.client.listTools(void 0,e);this.toolsCache=t.tools??[],$.debug(`Fetched ${this.toolsCache.length} tools from server`)}catch(e){let t=e;t.code===-32601?$.debug(`Server does not implement tools/list, assuming no tools`):$.debug(`Failed to list tools, assuming empty:`,t.message),this.toolsCache=[]}return $.debug(`Server capabilities:`,t),$.debug(`Server info:`,n),t}get tools(){if(!this.toolsCache)throw Error(`MCP client is not initialized; call initialize() first`);return this.toolsCache}get serverCapabilities(){return this.capabilitiesCache||{}}get serverInfo(){return this.serverInfoCache}get instructions(){return this.client?.getInstructions?.()}get protocolEra(){return this.client?.getProtocolEra?.()}get negotiatedProtocolVersion(){return this.client?.getNegotiatedProtocolVersion?.()}async callTool(e,t,n){if(!this.client)throw Error(`MCP client is not connected`);let r=n?{...n}:void 0;r?.resetTimeoutOnProgress&&!r.onprogress&&(r.onprogress=()=>{},$.debug(`[BaseConnector] Added onprogress callback for tool '${e}' to enable progressToken`)),$.debug(`Calling tool '${e}' with args`,t);let i=r?.onprogress;i&&this.activeProgressHandlers.add(i);try{let n=await this.client.callTool({name:e,arguments:t},r);return $.debug(`Tool '${e}' returned`,n),n}finally{i&&this.activeProgressHandlers.delete(i)}}async listTools(e){if(!this.client)throw Error(`MCP client is not connected`);$.debug(`[listTools] Fetching fresh tools from server...`);let t=await this.client.listTools(void 0,e),n=t.tools?[...t.tools]:[];return $.debug(`[listTools] Returned ${n.length} tools:`,n.map(e=>e.name)),n}async listResources(e,t){if(!this.client)throw Error(`MCP client is not connected`);return $.debug(`Listing resources`,e?`with cursor: ${e}`:``),await this.client.listResources({cursor:e},t)}async listAllResources(e){if(!this.client)throw Error(`MCP client is not connected`);if(!this.capabilitiesCache?.resources)return $.debug(`Server does not advertise resources capability, skipping`),{resources:[]};try{$.debug(`Listing all resources (with auto-pagination)`);let t=[],n;do{let r=await this.client.listResources({cursor:n},e);t.push(...r.resources||[]),n=r.nextCursor}while(n);return{resources:t}}catch(e){if(e.code===-32601)return $.debug(`Server advertised resources but method not found`),{resources:[]};throw e}}async listResourceTemplates(e){if(!this.client)throw Error(`MCP client is not connected`);return $.debug(`Listing resource templates`),await this.client.listResourceTemplates(void 0,e)}async complete(e,t){if(!this.client)throw Error(`MCP client is not connected`);$.debug(`[complete] Requesting completions for:`,e.ref);let n=await this.client.complete(e,t);return $.debug(`[complete] Received ${n.completion.values.length} suggestions`),n}async readResource(e,t){if(!this.client)throw Error(`MCP client is not connected`);return $.debug(`Reading resource ${e}`),await this.client.readResource({uri:e},t)}async subscribeToResource(e,t){if(!this.client)throw Error(`MCP client is not connected`);return $.debug(`Subscribing to resource: ${e}`),await this.client.subscribeResource({uri:e},t)}async unsubscribeFromResource(e,t){if(!this.client)throw Error(`MCP client is not connected`);return $.debug(`Unsubscribing from resource: ${e}`),await this.client.unsubscribeResource({uri:e},t)}async listPrompts(){if(!this.client)throw Error(`MCP client is not connected`);if(!this.capabilitiesCache?.prompts)return $.debug(`Server does not advertise prompts capability, skipping`),{prompts:[]};try{return $.debug(`Listing prompts`),await this.client.listPrompts()}catch(e){if(e.code===-32601)return $.debug(`Server advertised prompts but method not found`),{prompts:[]};throw e}}async getPrompt(e,t){if(!this.client)throw Error(`MCP client is not connected`);return $.debug(`Getting prompt ${e}`),await this.client.getPrompt({name:e,arguments:t})}async request(e,t=null,n){if(!this.client)throw Error(`MCP client is not connected`);return $.debug(`Sending raw request '${e}' with params`,t),await this.client.request({method:e,params:t??{}},_k,n)}async cleanupResources(){let e=[];if(this.client)try{typeof this.client.close==`function`&&await this.client.close()}catch(t){let n=`Error closing client: ${t}`;$.warn(n),e.push(n)}finally{this.client=null}if(this.connectionManager)try{await this.connectionManager.stop()}catch(t){let n=`Error stopping connection manager: ${t}`;$.warn(n),e.push(n)}finally{this.connectionManager=null}this.toolsCache=null,e.length&&$.warn(`Resource cleanup finished with ${e.length} issue(s)`)}};function yk(e,t=0){if(!e||t>5)return!1;if(e instanceof xS||e instanceof Z_&&e.status===401)return!0;if(e instanceof Error){if(e.cause&&yk(e.cause,t+1))return!0;let n=e instanceof X_?e.data:void 0;if(n?.cause&&yk(n.cause,t+1))return!0}return!1}function bk(e,t,n,r){let i=new URL(e),a=t.replace(/\/$/,``);return async(e,t)=>{let o=new Request(e,t),s=new URL(o.url);if(!(s.origin===i.origin&&s.pathname===i.pathname))return n(o);let c=new Headers(o.headers);c.set(`X-Target-URL`,o.url),r&&c.set(`X-Server-Id`,r);let l=o.method===`GET`||o.method===`HEAD`?void 0:await o.clone().arrayBuffer();return n(new Request(a,{method:o.method,headers:c,body:l,signal:o.signal,redirect:`manual`}))}}var xk=class extends vk{baseUrl;headers;timeout;customFetch;clientInfo;protocolNegotiation;gatewayUrl;serverId;reconnectionOptions;transportType=null;streamableTransport=null;constructor(e,t={}){super(t);let n=e.replace(/\/$/,``);this.baseUrl=n,this.headers={...t.headers??{}},this.gatewayUrl=t.gatewayUrl,this.serverId=t.serverId,t.authToken&&(this.headers.Authorization=`Bearer ${t.authToken}`),this.timeout=t.timeout??1e4;let r=t.fetch??globalThis.fetch.bind(globalThis);this.customFetch=this.gatewayUrl?bk(n,this.gatewayUrl,r,this.serverId):t.fetch,this.clientInfo=t.clientInfo??{name:`http-connector`,version:`1.0.0`},this.protocolNegotiation=t.protocolNegotiation??`auto`,this.reconnectionOptions=t.reconnectionOptions}buildClientOptions(){return{...this.opts.clientOptions||{},jsonSchemaValidator:this.opts.clientOptions?.jsonSchemaValidator??new mk,versionNegotiation:{mode:this.protocolNegotiation,...this.opts.clientOptions?.versionNegotiation??{}},listChanged:{tools:{autoRefresh:!0,onChanged:(e,t)=>void this.handleListChanged(`notifications/tools/list_changed`,e,t)},resources:{autoRefresh:!1,onChanged:e=>void this.handleListChanged(`notifications/resources/list_changed`,e)},prompts:{autoRefresh:!1,onChanged:e=>void this.handleListChanged(`notifications/prompts/list_changed`,e)},...this.opts.clientOptions?.listChanged??{}},capabilities:{...this.opts.clientOptions?.capabilities||{},roots:{listChanged:!0},...this.opts.onSampling?{sampling:{}}:{},...this.opts.onElicitation?{elicitation:{form:{},url:{}}}:{}}}}unwrapStreamableError(e){return e instanceof Z_?e:e instanceof Error&&e.cause instanceof Z_?e.cause:null}classifyStreamableHttpFailure(e){let t=`Unknown error`,n=!1,r,i=this.unwrapStreamableError(e);if(i){let e=i.status;return n=e===401,r=e,e===400&&i.message.includes(`Missing session ID`)?(t=`Server requires session ID (FastMCP compatibility)`,$.warn(`\u26A0\uFE0F ${t}`)):e===404||e===405?(t=`Server returned ${e} - server likely doesn't support streamable HTTP`,$.debug(t)):(t=`Server returned ${e}: ${i.message}`,$.debug(t)),{fallbackReason:t,is401Error:n,httpStatusCode:r}}if(e instanceof Error){let r=e.toString(),i=e.message||``;n=yk(e)||r.includes(`401`)||i.includes(`Unauthorized`),r.includes(`Missing session ID`)||r.includes(`Bad Request: Missing session ID`)||i.includes(`FastMCP session ID error`)?(t=`Server requires session ID (FastMCP compatibility)`,$.warn(`\u26A0\uFE0F ${t}`)):r.includes(`405 Method Not Allowed`)||r.includes(`404 Not Found`)?(t=`Server doesn't support streamable HTTP (405/404)`,$.debug(t)):(t=`Streamable HTTP failed: ${e.message}`,$.debug(t))}return{fallbackReason:t,is401Error:n,httpStatusCode:r}}async connect(){if(this.connected){$.debug(`Already connected to MCP implementation`);return}let e=this.baseUrl;$.debug(`Connecting to MCP implementation via HTTP: ${e}`);try{await this.connectWithStreamableHttp(e),$.debug(`✅ Successfully connected via streamable HTTP`)}catch(e){$.debug(`Streamable HTTP connect failed`,e);let{fallbackReason:t,is401Error:n,httpStatusCode:r}=this.classifyStreamableHttpFailure(e);if(await this.cleanupResources(),n){$.info(`Authentication required`);let e=Error(`Authentication required`);throw e.code=401,e}let i=Error(`Could not connect via streamable HTTP: ${t}`);throw r!==void 0&&Object.defineProperty(i,"code",{value:r,writable:!1,enumerable:!0,configurable:!0}),i}}observeSseProgress(e){if(!e.body||!e.headers.get(`content-type`)?.includes(`text/event-stream`))return e;let[t,n]=e.body.tee();return(async()=>{let e=n.getReader(),t=new TextDecoder,r=``;try{for(;;){let{done:n,value:i}=await e.read();if(n)break;r+=t.decode(i,{stream:!0});let a=r.split(/\r?\n\r?\n/);r=a.pop()??``;for(let e of a)for(let t of e.split(/\r?\n/))if(t.startsWith(`data:`))try{let e=JSON.parse(t.slice(5).trim());e.method===`notifications/progress`&&this.forwardRoundProgress(e.params)}catch{}}}catch(e){e instanceof DOMException&&e.name===`AbortError`||$.debug(`Progress observer stream ended:`,e)}finally{e.releaseLock()}})(),new Response(t,{status:e.status,statusText:e.statusText,headers:e.headers})}async connectWithStreamableHttp(e){try{$.debug(`[HttpConnector] Connecting with Streamable HTTP`,{baseUrl:e,originalUrl:this.baseUrl,gatewayUrl:this.gatewayUrl||`none`,authProviderUrl:this.opts.authProvider&&`serverUrl`in this.opts.authProvider&&typeof this.opts.authProvider.serverUrl==`string`?this.opts.authProvider.serverUrl:`none`,headers:this.headers});let t,n=new Promise(e=>{t=e}),r=this.customFetch??globalThis.fetch.bind(globalThis),i=new GC(new URL(e),{authProvider:this.opts.authProvider,fetch:async(e,n)=>{let i=await r(e,n),a=n?.method??(e instanceof Request?e.method:`GET`),o=new Headers(e instanceof Request?e.headers:void 0);return new Headers(n?.headers).forEach((e,t)=>{o.set(t,e)}),a.toUpperCase()===`GET`&&i.ok&&i.headers.get(`content-type`)?.includes(`text/event-stream`)&&t?.(),o.get(`mcp-method`)===`subscriptions/listen`?i:this.observeSseProgress(i)},requestInit:{headers:this.headers},reconnectionOptions:{maxReconnectionDelay:3e4,initialReconnectionDelay:1e3,reconnectionDelayGrowFactor:1.5,maxRetries:2,...this.reconnectionOptions}}),a=i;if(this.opts.wrapTransport){let e=this.baseUrl;a=this.opts.wrapTransport(a,e)}let o=this.buildClientOptions();$.debug(`Creating Client with capabilities:`,JSON.stringify(o.capabilities,null,2)),this.client=new BC(this.clientInfo,o),this.setupRootsHandler(),this.setupSamplingHandler(),this.setupElicitationHandler(),$.debug(`Roots/sampling/elicitation handlers registered before connect`);try{let e;if(await Promise.race([this.client.connect(a),new Promise((t,n)=>{e=setTimeout(()=>n(Error(`MCP connection timed out after ${this.timeout}ms`)),this.timeout)})]).finally(()=>{e!==void 0&&clearTimeout(e)}),(this.client.getProtocolEra?.()??`legacy`)===`legacy`&&i.sessionId){let e,t=await Promise.race([n.then(()=>!0),new Promise(t=>e=setTimeout(()=>t(!1),Math.min(this.timeout,5e3)))]);e&&clearTimeout(e),t||$.warn(`Legacy server push stream did not attach before connect completed`)}let t=i.sessionId;t&&$.debug(`Session ID obtained: ${t}`)}catch(e){if(e instanceof Error){let t=e.message||e.toString();if(t.includes(`Missing session ID`)||t.includes(`Bad Request: Missing session ID`)||t.includes(`Mcp-Session-Id header is required`)){let n=Error(`Session ID error: ${t}. The SDK should automatically extract session ID from initialize response.`);throw n.cause=e,n}}throw e}this.streamableTransport=i,this.connectionManager={stop:async()=>{if(this.streamableTransport)try{await this.streamableTransport.close()}catch(e){$.warn(`Error closing Streamable HTTP transport: ${e}`)}finally{this.streamableTransport=null}}},this.connected=!0,this.transportType=`streamable-http`,this.setupNotificationHandler(),$.debug(`Successfully connected to MCP implementation via streamable HTTP: ${e}`),this.trackConnectorInit({serverUrl:this.baseUrl,publicIdentifier:`${this.baseUrl} (streamable-http)`})}catch(e){throw await this.cleanupResources(),e}}get publicIdentifier(){return{type:`http`,url:this.baseUrl,transport:this.transportType||`unknown`,protocolEra:this.protocolEra??`unknown`}}getTransportType(){return this.transportType}async cleanupResources(){if(this.streamableTransport&&this.protocolEra!==`modern`){let e;try{await Promise.race([this.streamableTransport.terminateSession().then(()=>!0),new Promise(t=>e=setTimeout(()=>t(!1),Math.min(this.timeout,5e3)))])||$.debug(`Timed out terminating legacy HTTP session; closing transport`)}catch(e){$.debug(`Error terminating Streamable HTTP session: ${e}`)}finally{e&&clearTimeout(e)}}await super.cleanupResources()}},Sk=`2.0.0-beta.8`;function Ck(){return Sk}function wk(e,t){return{onSampling:e?.onSampling??t?.onSampling,onElicitation:e?.onElicitation??t?.onElicitation,onNotification:e?.onNotification??t?.onNotification}}function Tk(e){if(!(`url`in e)||typeof e.url!=`string`||e.authProvider||e.authToken||e.oauth===!1)return!1;let t=e.headers;if(t){for(let e of Object.keys(t))if(e.toLowerCase()===`authorization`)return!1}return!0}function Ek(){return{name:`mcp-use`,title:`mcp-use`,version:Ck(),description:`mcp-use is a complete TypeScript framework for building and using MCP`,icons:[{src:`https://mcp-use.com/logo.png`}],websiteUrl:`https://mcp-use.com`}}function Dk(e){let t=Ek();if(!e||typeof e!=`object`)return t;let n=e;return!n.name||!n.version?t:{...t,...n}}function Ok(e){let t=e?.capabilities;if(!t||t.views!==!0)return e;let{views:n,...r}=t,i=r.extensions&&typeof r.extensions==`object`&&!Array.isArray(r.extensions)?{...r.extensions}:{};return{...e,capabilities:{...r,extensions:{...i,"io.modelcontextprotocol/ui":{mimeTypes:[`text/html;profile=mcp-app`]}}}}}function kk(e){let t=()=>{throw Error(`Invalid url to pass to open(): ${e}`)},n;try{n=new URL(e)}catch{t()}return n.protocol!==`https:`&&n.protocol!==`http:`&&t(),n.hostname!==encodeURIComponent(n.hostname)&&t(),n.username&&=encodeURIComponent(n.username),n.password&&=encodeURIComponent(n.password),n.pathname=n.pathname.slice(0,1)+encodeURIComponent(n.pathname.slice(1)).replace(/%2f/gi,`/`),n.search=n.search.slice(0,1)+Array.from(n.searchParams.entries()).map(Ak).join(`&`),n.hash=n.hash.slice(0,1)+encodeURIComponent(n.hash.slice(1)),n.href}function Ak([e,t]){return`${encodeURIComponent(e)}${t.length>0?`=${encodeURIComponent(t)}`:``}`}var jk=class{get(e){return localStorage.getItem(e)}set(e,t){localStorage.setItem(e,t)}remove(e){localStorage.removeItem(e)}keys(){let e=[];for(let t=0;t<localStorage.length;t++){let n=localStorage.key(t);n&&e.push(n)}return e}},Mk=class e{serverUrl;storageKeyPrefix;serverUrlHash;clientName;clientUri;logoUri;callbackUrl;clientMetadataUrl;scope;store;allowClientSecret;constructor(t,n,r){US(n.clientMetadataUrl),this.serverUrl=t,this.storageKeyPrefix=n.storageKeyPrefix||`mcp:auth`,this.serverUrlHash=e.hashString(t),this.clientName=n.clientName||`mcp-use`,this.clientUri=n.clientUri||(typeof window<`u`?window.location.origin:`https://mcp-use.com`),this.logoUri=n.logoUri||`https://mcp-use.com/logo.png`,this.callbackUrl=kk(n.callbackUrl||(typeof window<`u`?new URL(`/oauth/callback`,window.location.origin).toString():`/oauth/callback`)),this.clientMetadataUrl=n.clientMetadataUrl,this.scope=n.scope,this.store=r,this.allowClientSecret=n.allowClientSecret??!0}getKey(e){return`${this.storageKeyPrefix}_${this.serverUrlHash}_${e}`}static hashString(e){let t=0;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);t=(t<<5)-t+r,t&=t}return Math.abs(t).toString(16)}get redirectUrl(){return this.callbackUrl}get clientMetadata(){return{redirect_uris:[this.redirectUrl],token_endpoint_auth_method:`none`,grant_types:[`authorization_code`,`refresh_token`],response_types:[`code`],client_name:this.clientName,client_uri:this.clientUri,logo_uri:this.logoUri,...this.scope?{scope:this.scope}:{}}}credentialKey(e,t){return t?this.getKey(`${e}_${encodeURIComponent(t.issuer)}`):this.getKey(e)}async readCredential(e,t){let n=this.credentialKey(e,t),r=await this.store.get(n);if(!r&&t){let r=this.credentialKey(e),i=await this.store.get(r);if(i)try{let e=JSON.parse(i);if(!e.issuer||e.issuer===t.issuer){let i={...e,issuer:t.issuer},a=JSON.stringify(i);return await this.store.set(n,a),await this.store.set(r,a),{key:n,value:i}}}catch{await this.store.remove(r)}return}if(r)try{return{key:n,value:JSON.parse(r)}}catch(t){console.warn(`[${this.storageKeyPrefix}] Failed to parse ${e.replace(`_`,` `)}:`,t),await this.store.remove(n);return}}async tokens(e){return(await this.readCredential(`tokens`,e))?.value}async saveTokens(e,t){let n=JSON.stringify(e);await this.store.set(this.credentialKey(`tokens`,t),n),t&&await this.store.set(this.credentialKey(`tokens`),n),await this.store.remove(this.getKey(`code_verifier`)),await this.store.remove(this.getKey(`last_auth_url`))}async clientInformation(e){let t=await this.readCredential(`client_info`,e);if(!t)return;let{key:n,value:r}=t;try{if(!this.allowClientSecret&&r.client_secret){await this.store.remove(n),e&&await this.store.remove(this.credentialKey(`client_info`)),console.warn(`[${this.storageKeyPrefix}] Removed OAuth client information containing a browser client_secret.`);return}let t=Array.isArray(r.redirect_uris)?r.redirect_uris:[];if(!(t.length===0||t.includes(this.redirectUrl))){console.info(`[${this.storageKeyPrefix}] Invalidating cached OAuth client info due to redirect URI mismatch.`),await this.store.remove(n),await this.store.remove(this.credentialKey(`tokens`,e)),await this.store.remove(this.getKey(`last_auth_url`));return}return r}catch{await this.store.remove(n);return}}async saveClientInformation(e,t){let n=e;if(!this.allowClientSecret&&n.client_secret)throw await this.store.remove(this.credentialKey(`client_info`,t)),t&&await this.store.remove(this.credentialKey(`client_info`)),Error(`Browser OAuth clients must be public clients; client_secret persistence is not allowed.`);let r=JSON.stringify(e);await this.store.set(this.credentialKey(`client_info`,t),r),t&&await this.store.set(this.credentialKey(`client_info`),r)}async saveCodeVerifier(e){await this.store.set(this.getKey(`code_verifier`),e)}async codeVerifier(){let e=this.getKey(`code_verifier`),t=await this.store.get(e);if(!t)throw Error(`[${this.storageKeyPrefix}] Code verifier not found in storage for key ${e}. Auth flow likely corrupted or timed out.`);return t}async invalidateCredentials(e){let t=async e=>{let t=`${this.getKey(e)}_`;for(let n of await this.store.keys())(n===this.getKey(e)||n.startsWith(t))&&await this.store.remove(n)};switch(e){case`all`:await t(`tokens`),await t(`client_info`),await this.store.remove(this.getKey(`code_verifier`)),await this.store.remove(this.getKey(`last_auth_url`)),await this.store.remove(this.getKey(`discovery_state`)),await this.store.remove(this.getKey(`token_endpoint`));break;case`client`:await t(`client_info`);break;case`tokens`:await t(`tokens`);break;case`verifier`:await this.store.remove(this.getKey(`code_verifier`));break;case`discovery`:await this.store.remove(this.getKey(`discovery_state`));break;default:break}}async saveDiscoveryState(e){await this.store.set(this.getKey(`discovery_state`),JSON.stringify(e))}async discoveryState(){let e=await this.store.get(this.getKey(`discovery_state`));if(e)try{return JSON.parse(e)}catch{await this.store.remove(this.getKey(`discovery_state`));return}}async storeAuthorizationState(e,t={}){let n=globalThis.crypto.randomUUID(),r=`${this.storageKeyPrefix}:state_${n}`,i={serverUrlHash:this.serverUrlHash,expiry:Date.now()+1e3*60*10,providerOptions:{serverUrl:this.serverUrl,storageKeyPrefix:this.storageKeyPrefix,clientName:this.clientName,clientUri:this.clientUri,callbackUrl:this.callbackUrl,...this.clientMetadataUrl?{clientMetadataUrl:this.clientMetadataUrl}:{},...t.extraProviderOptions??{}},flowType:t.flowType,returnUrl:t.returnUrl};e.searchParams.set(`state`,n);let a=kk(e.toString());return await this.store.set(r,JSON.stringify(i)),await this.store.set(this.getKey(`last_auth_url`),a),a}async getTokenEndpoint(){return(await this.discoveryState())?.authorizationServerMetadata?.token_endpoint??null}async getResource(){let e=(await this.discoveryState())?.resourceMetadata?.resource;return typeof e==`string`?e:null}};async function Nk(e){return typeof e==`string`?e:e instanceof URLSearchParams||e instanceof FormData?Object.fromEntries(e.entries()):e instanceof Blob?await e.text():e}var Pk=class{serverUrl;staticClientInfo;session;preventAutoAuth;useRedirectFlow;oauthProxyUrl;connectionUrl;proxyOAuthRequests;onPopupWindow;constructor(e,t={}){if(t.staticClientInfo?.client_secret)throw Error(`Browser OAuth clients must be public clients; staticClientInfo.client_secret is not allowed.`);this.serverUrl=e,this.session=new Mk(e,{...t,allowClientSecret:!1},new jk),this.preventAutoAuth=t.preventAutoAuth,this.useRedirectFlow=t.useRedirectFlow,this.oauthProxyUrl=t.oauthProxyUrl,this.connectionUrl=t.connectionUrl,this.proxyOAuthRequests=t.proxyOAuthRequests??!0,this.staticClientInfo=t.staticClientInfo,this.onPopupWindow=t.onPopupWindow}get storageKeyPrefix(){return this.session.storageKeyPrefix}get serverUrlHash(){return this.session.serverUrlHash}get clientName(){return this.session.clientName}get clientUri(){return this.session.clientUri}get logoUri(){return this.session.logoUri}get callbackUrl(){return this.session.callbackUrl}get scope(){return this.session.scope}get clientMetadataUrl(){return this.session.clientMetadataUrl}getKey(e){return this.session.getKey(e)}reanchorWellKnownUrl(e){if(!this.connectionUrl)return e;try{let t=new URL(e),n=new URL(this.connectionUrl);if(t.origin!==n.origin||!t.pathname.startsWith(`/.well-known/`))return e;let r=new URL(this.serverUrl),[i,...a]=t.pathname.slice(13).split(`/`);if(!i)return e;let o=a.length?`/${a.join(`/`)}`:``,s=n.pathname.replace(/\/+$/,``),c=r.pathname.replace(/\/+$/,``),l=o&&o===s?c:o;return`${r.origin}/.well-known/${i}${l}${t.search}`}catch{return e}}getProxyFetch(e){if(!this.proxyOAuthRequests||!this.oauthProxyUrl)return e;let t=e??globalThis.fetch.bind(globalThis),n=this.oauthProxyUrl,r=new Set,i=!1;return async(e,a)=>{let o=typeof e==`string`?e:e instanceof URL?e.toString():e.url,s=this.reanchorWellKnownUrl(o),c;try{c=new URL(s).pathname}catch{return await t(e,a)}let l=c.includes(`/.well-known/`);if(!i){i=!0;let e=(await this.discoveryState())?.authorizationServerMetadata;for(let t of[`registration_endpoint`,`token_endpoint`,`revocation_endpoint`,`introspection_endpoint`])typeof e?.[t]==`string`&&r.add(e[t])}let u=r.has(s)||/\/(?:register|registration|token|revoke|revocation|introspect|introspection)\/?$/.test(c);if(!l&&!u)return await t(e,a);try{let r=new URL(s),i=new URL(n);if(r.origin===i.origin&&(r.pathname.startsWith(i.pathname)||s.includes(`/inspector/api/oauth`)))return await t(e,a)}catch{}let d=l?`${n}/metadata?serverUrl=${encodeURIComponent(this.serverUrl)}&url=${encodeURIComponent(s)}`:`${n}/proxy`;if(l){let e=await t(d,{...a,method:`GET`});try{let t=await e.clone().json();for(let e of[`registration_endpoint`,`token_endpoint`,`revocation_endpoint`,`introspection_endpoint`])typeof t[e]==`string`&&r.add(t[e])}catch{}return e}let f=a?.body?await Nk(a.body):void 0,p=await(await t(d,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({serverUrl:this.serverUrl,url:s,method:a?.method||`POST`,headers:a?.headers?Object.fromEntries(new Headers(a.headers)):{},body:f})})).json();return new Response(JSON.stringify(p.body),{status:p.status,statusText:p.statusText,headers:new Headers(p.headers)})}}get redirectUrl(){return this.session.redirectUrl}get clientMetadata(){return this.session.clientMetadata}tokens(e){return this.session.tokens(e)}saveTokens(e,t){return this.session.saveTokens(e,t)}async clientInformation(e){return this.staticClientInfo?this.staticClientInfo:this.session.clientInformation(e)}async saveClientInformation(e,t){if(!this.staticClientInfo)return this.session.saveClientInformation(e,t)}codeVerifier(){return this.session.codeVerifier()}saveCodeVerifier(e){return this.session.saveCodeVerifier(e)}invalidateCredentials(e){return this.session.invalidateCredentials(e)}saveDiscoveryState(e){return this.session.saveDiscoveryState(e)}discoveryState(){return this.session.discoveryState()}getTokenEndpoint(){return this.session.getTokenEndpoint()}getResource(){return this.session.getResource()}async getClientCredentials(){let e=await this.clientInformation();return e?.client_id?{client_id:e.client_id}:null}async prepareAuthorizationUrl(e){return this.session.storeAuthorizationState(e,{extraProviderOptions:{oauthProxyUrl:this.oauthProxyUrl,...this.clientMetadataUrl?{clientMetadataUrl:this.clientMetadataUrl}:{},...this.staticClientInfo?{staticClientInfo:this.staticClientInfo}:{},...this.scope?{scope:this.scope}:{}},flowType:this.useRedirectFlow?`redirect`:`popup`,returnUrl:typeof window<`u`?window.location.href:void 0})}async redirectToAuthorization(e){let t=await this.prepareAuthorizationUrl(e);if(this.preventAutoAuth){console.info(`[${this.storageKeyPrefix}] Auto-auth prevented. Authorization URL stored for manual trigger.`);return}if(this.useRedirectFlow){console.info(`[${this.storageKeyPrefix}] Redirecting to authorization URL (full-page redirect).`),window.location.href=t;return}let n=`width=600,height=700,resizable=yes,scrollbars=yes,status=yes`;try{let e=window.open(t,`mcp_auth_${this.serverUrlHash}`,n);this.onPopupWindow&&this.onPopupWindow(t,n,e),!e||e.closed||e.closed===void 0?console.warn(`[${this.storageKeyPrefix}] Popup likely blocked by browser. Manual navigation might be required using the stored URL.`):(e.focus(),console.info(`[${this.storageKeyPrefix}] Redirecting to authorization URL in popup.`))}catch(e){console.error(`[${this.storageKeyPrefix}] Error opening popup window:`,e)}}getLastAttemptedAuthUrl(){let e=localStorage.getItem(this.getKey(`last_auth_url`));return e?kk(e):null}clearStorage(){let e=`${this.storageKeyPrefix}_${this.serverUrlHash}_`,t=`${this.storageKeyPrefix}:state_`,n=[],r=0;for(let r=0;r<localStorage.length;r++){let i=localStorage.key(r);if(i){if(i.startsWith(e))n.push(i);else if(i.startsWith(t))try{let e=localStorage.getItem(i);e&&JSON.parse(e).serverUrlHash===this.serverUrlHash&&n.push(i)}catch(e){console.warn(`[${this.storageKeyPrefix}] Error parsing state key ${i} during clearStorage:`,e)}}}return[...new Set(n)].forEach(e=>{localStorage.removeItem(e),r++}),r}};async function Fk(e,t={}){return new Pk(e,t)}JO(),JO();var Ik=class{},Lk=class extends Ik{constructor(e){super(),this.data=e}get name(){return`mcp_agent_execution`}get properties(){return{execution_method:this.data.executionMethod,query:this.data.query,query_length:this.data.query.length,success:this.data.success,model_provider:this.data.modelProvider,model_name:this.data.modelName,server_count:this.data.serverCount,server_identifiers:this.data.serverIdentifiers,total_tools_available:this.data.totalToolsAvailable,tools_available_names:this.data.toolsAvailableNames,max_steps_configured:this.data.maxStepsConfigured,memory_enabled:this.data.memoryEnabled,use_server_manager:this.data.useServerManager,max_steps_used:this.data.maxStepsUsed,manage_connector:this.data.manageConnector,external_history_used:this.data.externalHistoryUsed,steps_taken:this.data.stepsTaken??null,tools_used_count:this.data.toolsUsedCount??null,tools_used_names:this.data.toolsUsedNames??null,response:this.data.response??null,response_length:this.data.response?this.data.response.length:null,execution_time_ms:this.data.executionTimeMs??null,error_type:this.data.errorType??null,conversation_history_length:this.data.conversationHistoryLength??null}}},Rk=class extends Ik{constructor(e){super(),this.data=e}get name(){return`mcpclient_init`}get properties(){return{code_mode:this.data.codeMode,sandbox:this.data.sandbox,all_callbacks:this.data.allCallbacks,verify:this.data.verify,servers:this.data.servers,num_servers:this.data.numServers,is_browser:this.data.isBrowser}}},zk=class extends Ik{constructor(e){super(),this.data=e}get name(){return`connector_init`}get properties(){return{connector_type:this.data.connectorType,server_command:this.data.serverCommand??null,server_args:this.data.serverArgs??null,server_url:this.data.serverUrl??null,public_identifier:this.data.publicIdentifier??null}}},Bk=class extends Ik{constructor(e){super(),this.data=e}get name(){return`client_add_server`}get properties(){let{serverName:e,serverConfig:t}=this.data,n=t.url;return{server_name:e,server_url_domain:n?this._extractHostname(n):null,transport:t.transport??null,has_auth:!!(t.authToken||t.authProvider)}}_extractHostname(e){try{return new URL(e).hostname}catch{return null}}},Vk=class extends Ik{constructor(e){super(),this.data=e}get name(){return`client_remove_server`}get properties(){return{server_name:this.data.serverName}}};async function Hk(e,t){try{await fetch(e,t)}catch{}}var Uk=`https://eu.i.posthog.com`,Wk=`phc_lyTtbYwvkdSbrcMQNPiKiiRWrrM1seyKIMjycSvItEI`;function Gk(e){let t=e.host??Uk,n=e.apiKey??Wk;return Hk(`${t}/i/v0/e/`,{method:`POST`,headers:{"Content-Type":`application/json`},keepalive:!0,body:JSON.stringify({api_key:n,event:e.event,distinct_id:e.distinctId,properties:e.properties,timestamp:new Date().toISOString()})})}function Kk(){return globalThis.crypto.randomUUID()}function qk(){let e=new Uint8Array(8);return globalThis.crypto.getRandomValues(e),Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``)}var Jk=`mcp_use_user_id`,Yk=`phc_lyTtbYwvkdSbrcMQNPiKiiRWrrM1seyKIMjycSvItEI`,Xk=`https://eu.i.posthog.com`,Zk=null;function Qk(){return typeof localStorage<`u`&&typeof localStorage.getItem==`function`&&typeof localStorage.setItem==`function`&&typeof localStorage.removeItem==`function`}function $k(){if(!Qk())return null;try{localStorage.setItem(`__mcp_use_test__`,`1`),localStorage.removeItem(`__mcp_use_test__`)}catch{return null}return{getUserId(){try{return localStorage.getItem(Jk)}catch{return null}},setUserId(e){try{localStorage.setItem(Jk,e)}catch{}}}}function eA(){try{return globalThis.Bun===void 0?globalThis.Deno===void 0?typeof navigator<`u`&&navigator.userAgent?.includes(`Cloudflare-Workers`)?`cloudflare-workers`:globalThis.EdgeRuntime===void 0?typeof window<`u`&&typeof document<`u`?`browser`:typeof process<`u`&&process.versions?.node!==void 0?`node`:`unknown`:`edge`:`deno`:`bun`}catch{return`unknown`}}function tA(){if(typeof process<`u`&&{}.MCP_USE_TELEMETRY_SOURCE)return{}.MCP_USE_TELEMETRY_SOURCE;try{if(Qk())return localStorage.getItem(`MCP_USE_TELEMETRY_SOURCE`)??void 0}catch{}}function nA(){if(typeof window<`u`&&window.__MCP_USE_ANONYMIZED_TELEMETRY__===!1||typeof process<`u`&&{}.MCP_USE_ANONYMIZED_TELEMETRY?.toLowerCase()===`false`)return!0;try{if(Qk()&&localStorage.getItem(`MCP_USE_ANONYMIZED_TELEMETRY`)===`false`)return!0}catch{}return!1}function rA(){try{return`session-${Kk()}`}catch{return`session-${Date.now()}-${qk()}`}}var iA=class e{static instance=null;UNKNOWN_USER_ID=`UNKNOWN_USER_ID`;_currUserId=null;_telemetryEnabled=!1;_pending=new Set;_runtimeEnvironment;_storageCapability;_storage;_source;_productVersion;constructor(){this._runtimeEnvironment=eA(),this._storage=Zk??$k()??null,this._storageCapability=this._storage?`persistent`:`session-only`,this._source=tA()||this._runtimeEnvironment;let e=nA(),t=this._runtimeEnvironment!==`unknown`;e?(this._telemetryEnabled=!1,$.debug(`Telemetry disabled via opt-out`)):t?($.debug(`Anonymized telemetry enabled. Set MCP_USE_ANONYMIZED_TELEMETRY=false to disable.`),this._telemetryEnabled=!0):(this._telemetryEnabled=!1,$.debug(`Telemetry disabled - unknown environment: ${this._runtimeEnvironment}`))}get runtimeEnvironment(){return this._runtimeEnvironment}get storageCapability(){return this._storageCapability}static getInstance(){return e.instance||=new e,e.instance}setSource(e){this._source=e;try{Qk()&&localStorage.setItem(`MCP_USE_TELEMETRY_SOURCE`,e)}catch{}$.debug(`Telemetry source set to: ${e}`)}getSource(){return this._source}setProductVersion(e){this._productVersion=e}get isEnabled(){return this._telemetryEnabled}get userId(){if(this._currUserId)return this._currUserId;try{if(this._storage){let e=this._storage.getUserId();if(e)return this._currUserId=e,e;let t=Kk();return this._storage.setUserId(t),this._currUserId=t,t}this._currUserId=rA()}catch{this._currUserId=this.UNKNOWN_USER_ID}return this._currUserId}async capture(e){if(!this._telemetryEnabled)return;let t=this.userId,n={...e.properties,mcp_use_version:this._productVersion??Ck(),language:`typescript`,source:this._source,runtime:this._runtimeEnvironment},r=Gk({host:Xk,apiKey:Yk,event:e.name,distinctId:t,properties:n});this._pending.add(r),r.finally(()=>this._pending.delete(r))}async trackAgentExecution(e){this.isEnabled&&await this.capture(new Lk(e))}async trackMCPClientInit(e){this.isEnabled&&await this.capture(new Rk(e))}async trackConnectorInit(e){this.isEnabled&&await this.capture(new zk(e))}async trackClientAddServer(e,t){this.isEnabled&&await this.capture(new Bk({serverName:e,serverConfig:t}))}async trackClientRemoveServer(e){this.isEnabled&&await this.capture(new Vk({serverName:e}))}async trackUseMcpConnection(e){this.isEnabled&&await this.capture({name:`usemcp_connection`,properties:{url_domain:new URL(e.url).hostname,transport_type:e.transportType,success:e.success,error_type:e.errorType??null,connection_time_ms:e.connectionTimeMs??null,has_oauth:e.hasOAuth,has_sampling:e.hasSampling,has_elicitation:e.hasElicitation}})}async trackUseMcpToolCall(e){this.isEnabled&&await this.capture({name:`usemcp_tool_call`,properties:{tool_name:e.toolName,success:e.success,error_type:e.errorType??null,execution_time_ms:e.executionTimeMs??null}})}async trackUseMcpResourceRead(e){this.isEnabled&&await this.capture({name:`usemcp_resource_read`,properties:{resource_uri_scheme:e.resourceUri.split(`:`)[0],success:e.success,error_type:e.errorType??null}})}identify(e,t){this._currUserId=e,this._storage?.setUserId(e),this._telemetryEnabled&&Gk({host:Xk,apiKey:Yk,event:`$identify`,distinctId:e,properties:{$set:t??{}}})}reset(){this._currUserId=null}flush(){Promise.allSettled([...this._pending])}async shutdown(){try{await Promise.allSettled([...this._pending]),$.debug(`Telemetry fetch captures flushed`)}catch(e){$.debug(`Error flushing telemetry captures: ${e}`)}}},aA=5*6e4;function oA(e,t=0){if(!e||t>5)return!1;if(e instanceof xS)return!0;if(e instanceof Error){if(e.code===401||e.name===`UnauthorizedError`)return!0;let n=e.message??``;if(n.includes(`401`)||n.includes(`Unauthorized`)||e.cause&&oA(e.cause,t+1))return!0;let r=e.data;if(r?.cause&&oA(r.cause,t+1))return!0}return!1}async function sA(e,t,n={}){let r=e,i=n.timeoutMs??aA,a=n.fetchFn??r.getProxyFetch?.()??void 0;if(!r.hasPendingFlow){let n=await BS(e,{serverUrl:t,fetchFn:a});if(n===`AUTHORIZED`)return;if(n!==`REDIRECT`)throw Error(`Unexpected OAuth auth() result: ${n}`)}if(typeof r.getAuthorizationCode==`function`){await BS(e,{serverUrl:t,authorizationCode:await r.getAuthorizationCode(),fetchFn:a});return}await cA(r,i)}async function cA(e,t){if(typeof window>`u`)throw Error(`OAuth redirect requires a browser environment or a provider with getAuthorizationCode()`);if(e.useRedirectFlow)return;let n=e.getKey?.(`tokens`);if(!n)throw Error(`Browser OAuth provider must expose getKey() for token storage`);let r=null,i=e.getLastAttemptedAuthUrl?.();if(i)try{r=new URL(i).searchParams.get(`state`)}catch{}let a=await ck({popup:null,state:r,tokensKey:n,timeoutMs:t});switch(a.kind){case`success`:return;case`cancelled`:throw Error(`OAuth authentication was cancelled.`);case`timeout`:throw Error(`OAuth callback not received within ${t}ms. Ensure /oauth/callback calls onMcpAuthorization().`);case`error`:throw Error(a.error);default:throw Error(`Unexpected OAuth popup result`)}}JO();var lA=class{connector;autoConnect;constructor(e,t=!0){this.connector=e,this.autoConnect=t}async connect(){await this.connector.connect()}async disconnect(){await this.connector.disconnect()}async initialize(){!this.isConnected&&this.autoConnect&&await this.connect(),await this.connector.initialize()}get isConnected(){return this.connector&&this.connector.isClientConnected}on(e,t){e===`notification`&&this.connector.onNotification(t)}async setRoots(e){return this.connector.setRoots(e)}getRoots(){return this.connector.getRoots()}get tools(){return this.connector.tools}async listTools(e){return this.connector.listTools(e)}get serverCapabilities(){return this.connector.serverCapabilities}get serverInfo(){return this.connector.serverInfo}get protocolEra(){return this.connector.protocolEra}get negotiatedProtocolVersion(){return this.connector.negotiatedProtocolVersion}get info(){let e=this.protocolEra,t=this.negotiatedProtocolVersion,n=this.serverInfo;if(!e||!t||!n)throw Error(`MCP connection is not initialized`);let r=this.serverCapabilities,i=r.extensions&&typeof r.extensions==`object`&&!Array.isArray(r.extensions)?r.extensions:{};return{protocolEra:e,protocolVersion:t,server:n,capabilities:r,instructions:this.connector.instructions,extensions:i}}supports(e){return e in this.serverCapabilities}async callTool(e,t={},n){return this.connector.callTool(e,t,n)}async listResources(e,t){return this.connector.listResources(e,t)}async listAllResources(e){return this.connector.listAllResources(e)}async listResourceTemplates(e){return this.connector.listResourceTemplates(e)}async complete(e,t){return this.connector.complete(e,t)}async readResource(e,t){return this.connector.readResource(e,t)}async subscribeToResource(e,t){return this.connector.subscribeToResource(e,t)}async unsubscribeFromResource(e,t){return this.connector.unsubscribeFromResource(e,t)}async listPrompts(){return this.connector.listPrompts()}async getPrompt(e,t){return this.connector.getPrompt(e,t)}async request(e,t=null,n){return this.connector.request(e,t,n)}},uA;function dA(e,t){uA?.addServer(e,t)}function fA(e){uA?.removeServer(e)}function pA(e){return!!e&&typeof e==`object`&&`redirectUrl`in e&&`clientMetadata`in e}var mA=class{config={};sessions={};activeSessions=[];constructor(e){e&&(this.config=e)}static fromDict(e){throw Error(`fromDict must be implemented by concrete class`)}addServer(e,t){this.config.mcpServers=this.config.mcpServers||{},this.config.mcpServers[e]=t,dA(e,t)}async removeServer(e){this.config.mcpServers?.[e]&&(await this.closeSession(e),delete this.config.mcpServers[e],fA(e))}getServerNames(){return Object.keys(this.config.mcpServers??{})}getServerConfig(e){return this.config.mcpServers?.[e]}getConfig(){return this.config??{}}async createSession(e,t=!0){let n=this.config.mcpServers??{};if(Object.keys(n).length===0&&$.warn(`No MCP servers defined in config`),!n[e])throw Error(`Server '${e}' not found in config`);let r={...n[e]},i;if(Tk(r)){let e=r.oauth===!1?void 0:r.oauth??{};i=await this.createDefaultOAuthProvider(r.url,e),r={...r,authProvider:i}}else `authProvider`in r&&r.authProvider&&pA(r.authProvider)&&(i=r.authProvider);let a=async()=>{let e=new lA(await Promise.resolve(this.createConnectorFromConfig(r)));return t&&await e.initialize(),e},o;try{o=await a()}catch(n){let s=r;if(!t||!i||!(`url`in s)||!oA(n)||i.preventAutoAuth)throw n;$.info(`[MCPClient] Unauthorized connecting to '${e}'; completing OAuth\u2026`),await sA(i,s.url),o=await a()}return this.sessions[e]=o,this.activeSessions.includes(e)||this.activeSessions.push(e),o}async connect(e){return this.createSession(e)}async createAllSessions(e=!0){let t=this.config.mcpServers??{};Object.keys(t).length===0&&$.warn(`No MCP servers defined in config`);for(let n of Object.keys(t))await this.createSession(n,e);return this.sessions}async connectAll(){return this.createAllSessions()}getSession(e){return this.sessions[e]||null}requireSession(e){let t=this.sessions[e];if(!t)throw Error(`Session '${e}' not found. Available sessions: ${this.activeSessions.join(`, `)||`none`}`);return t}getAllActiveSessions(){return Object.fromEntries(this.activeSessions.map(e=>[e,this.sessions[e]]))}async closeSession(e){let t=this.sessions[e];if(!t){$.warn(`No session exists for server ${e}, nothing to close`);return}try{$.debug(`Closing session for server ${e}`),await t.disconnect()}catch(t){$.error(`Error closing session for server '${e}': ${t}`)}finally{this.sessions[e]===t&&(delete this.sessions[e],this.activeSessions=this.activeSessions.filter(t=>t!==e))}}async closeAllSessions(){let e=Object.keys(this.sessions),t=[];for(let n of e)try{$.debug(`Closing session for server ${n}`),await this.closeSession(n)}catch(e){let r=`Failed to close session for server '${n}': ${e}`;$.error(r),t.push(r)}t.length?$.error(`Encountered ${t.length} errors while closing sessions`):$.debug(`All sessions closed successfully`)}async close(){await this.closeAllSessions()}};function hA(e){let t=Object.keys(e.mcpServers??{});iA.getInstance().trackMCPClientInit({codeMode:!1,sandbox:!1,allCallbacks:!1,verify:!1,servers:t,numServers:t.length,isBrowser:!0}).catch(e=>$.debug(`Failed to track BrowserMCPClient init: ${e}`))}var gA=class e extends mA{static getPackageVersion(){return Ck()}constructor(e){super(e),hA(this.config)}static fromDict(t){return new e(t)}async createDefaultOAuthProvider(e,t={}){return Fk(e,t)}createConnectorFromConfig(e){let{url:t,headers:n,fetch:r,authToken:i,authProvider:a,wrapTransport:o,clientOptions:s,protocolNegotiation:c,timeout:l,gatewayUrl:u,serverId:d,reconnectionOptions:f}=e;if(!t)throw Error(`Server URL is required`);let p=this.config,m=wk(e,p),h=Dk(e.clientInfo??this.config.clientInfo),g={headers:n,fetch:r??globalThis.fetch.bind(globalThis),authToken:i,authProvider:a,wrapTransport:o,clientOptions:s,onSampling:m.onSampling,onElicitation:m.onElicitation,onNotification:m.onNotification,protocolNegotiation:c,timeout:l,clientInfo:h,gatewayUrl:u,serverId:d,reconnectionOptions:f};return $.debug(`[BrowserMCPClient] Connector options prepared (clientOptions: ${s?`provided`:`none`})`),new xk(t,g)}};JO();var _A=`https://favicon.tools.mcp-use.com`,vA=/^\d{1,3}(\.\d{1,3}){3}$/;function yA(e){try{let t=e.includes(`://`)?e:`https://${e}`;return new URL(t).hostname}catch{return null}}function bA(e){let t=e.toLowerCase();if(t===`localhost`||t.endsWith(`.localhost`)||t===`host.docker.internal`||t===`0.0.0.0`)return!0;if(!vA.test(t))return!1;if(t===`127.0.0.1`||t.startsWith(`127.`)||t.startsWith(`10.`)||t.startsWith(`192.168.`))return!0;let n=/^172\.(\d+)\./.exec(t);if(n){let e=Number.parseInt(n[1],10);if(e>=16&&e<=31)return!0}return!1}function xA(e){let t=e.split(`.`);return Array.from({length:t.length-1},(e,n)=>t.slice(n).join(`.`))}function SA(e){return new Promise((t,n)=>{let r=new FileReader;r.onloadend=()=>t(r.result),r.onerror=n,r.readAsDataURL(e)})}async function CA(e){try{let t=yA(e);if(!t||bA(t))return null;for(let e of xA(t))try{let t=await fetch(`${_A}/${e}?response=json`,{signal:AbortSignal.timeout(2e3)});if(!t.ok)continue;let n=await t.json();if(n.source==="default")continue;let r=n.url.replace(/^http:\/\//,`https://`),i=await fetch(r,{signal:AbortSignal.timeout(2e3)});if(!i.ok)continue;return await SA(await i.blob())}catch{continue}return null}catch(e){return console.warn(`[favicon] Error detecting favicon:`,e),null}}var wA=`inspector-server`;function TA(e,t){if(!e)throw Error(t)}async function EA(e){try{let t=e.serverInfo.icons?.[0]?.src;if(t){e.addLog(`info`,`Server provided icon:`,t);let n=await(await fetch(t)).blob(),r=await new Promise((e,t)=>{let r=new FileReader;r.onloadend=()=>e(r.result),r.onerror=t,r.readAsDataURL(n)});return e.isMounted()&&(e.setServerInfo(e=>e?{...e,icon:r}:void 0),e.addLog(`debug`,`Server icon converted to base64`)),r}if(e.url){let t=await CA(e.url);if(!e.isMounted())return e.addLog(`debug`,`Connection aborted after favicon detection - component unmounted`),null;if(t)return e.setServerInfo(e=>e?{...e,icon:t}:void 0),e.addLog(`debug`,`Favicon detected and added to serverInfo`),t}return null}catch(t){return e.addLog(`debug`,`Icon loading failed (non-critical):`,t),null}}function DA(e,t){return t?`state=${e}`:`client disconnected (state=${e})`}function OA(e){return{name:e.name,version:e.version,uri:e.websiteUrl,logo_uri:e.icons?.[0]?.src}}function kA(e){let t=(e instanceof Error?e.message:String(e)).toLowerCase();return t.includes(`oauth discovery failed`)||t.includes(`oauth-authorization-server`)||t.includes(`not valid json`)||t.includes(`404`)&&(t.includes(`openid-configuration`)||t.includes(`oauth-protected-resources`)||t.includes(`oauth-authorization-url`)||t.includes(`register`))||t.includes(`invalid oauth error response`)&&t.includes(`not found`)}function AA(e,t){if(t)return t;if(e)try{let t=new URL(e);return t.pathname=t.pathname.replace(/\/proxy\/?$/,`/oauth`),t.toString()}catch{return}}function jA(e){let t=AA(e.gatewayUrl,e.oauthProxyUrl);return{provider:new Pk(e.effectiveOAuthUrl,{storageKeyPrefix:e.storageKeyPrefix,clientName:e.oauthClientConfig.name,clientUri:e.oauthClientConfig.uri,logoUri:e.oauthClientConfig.logo_uri||`https://mcp-use.com/logo.png`,callbackUrl:e.callbackUrl,preventAutoAuth:e.preventAutoAuth,useRedirectFlow:e.useRedirectFlow,oauthProxyUrl:t,connectionUrl:e.gatewayUrl,onPopupWindow:e.onPopupWindow,proxyOAuthRequests:e.proxyOAuthRequests,staticClientInfo:e.staticClientInfo,clientMetadataUrl:e.clientMetadataUrl,scope:e.scope}),oauthProxyUrl:t}}function MA(e){let t=null,n=Date.now(),r=!1,i=e.healthCheckIntervalMs??1e4,a=e.healthCheckTimeoutMs??3e4;return t=setInterval(async()=>{if(!r){if(!e.isMountedRef.current||e.stateRef.current!==`ready`){t&&=(clearInterval(t),null);return}try{let i=e.gatewayUrl||e.url;if(!i)return;let a=e.getAuthHeaders?await e.getAuthHeaders():{},o=await fetch(i,{method:`HEAD`,headers:{...e.allHeaders,...a},signal:AbortSignal.timeout(5e3)});if(o.status===405||o.status===404){r=!0,n=Date.now(),t&&=(clearInterval(t),null);return}if(o.ok||o.status<500)n=Date.now();else throw Error(`Server returned ${o.status}`)}catch{let r=Date.now()-n;r>a&&(e.addLog(`warn`,`Connection appears to be broken (no response for ${Math.round(r/1e3)}s), attempting to reconnect...`),t&&=(clearInterval(t),null),e.autoReconnectRef.current&&e.isMountedRef.current&&(e.setState(`discovering`),e.addLog(`info`,`Auto-reconnecting to MCP server...`),setTimeout(()=>{e.isMountedRef.current&&e.stateRef.current===`discovering`&&e.connect()},typeof e.autoReconnectRef.current==`number`?e.autoReconnectRef.current:e.defaultReconnectDelay)))}}},i),()=>{t&&=(clearInterval(t),null)}}function NA(e,t){let n=e.connectionRef.current;if(e.stateRef.current!==`ready`||!e.hasClient()||!n)throw Error(`MCP client is not ready (${DA(e.stateRef.current,e.hasClient())}). Cannot ${t}.`);return n}function PA(e){let t=(0,z.useCallback)(async(t,n,r)=>{let i=NA(e,`call tool "${t}"`);e.addLog(`info`,`Calling tool: ${t}`,n);let a=Date.now();try{let o=await i.callTool(t,n||{},r);return e.addLog(`info`,`Tool "${t}" call successful:`,o),iA.getInstance().trackUseMcpToolCall({toolName:t,success:!0,executionTimeMs:Date.now()-a}).catch(()=>{}),o}catch(n){throw e.addLog(`error`,`Tool "${t}" call failed:`,n),iA.getInstance().trackUseMcpToolCall({toolName:t,success:!1,errorType:n instanceof Error?n.name:`UnknownError`,executionTimeMs:Date.now()-a}).catch(()=>{}),n}},[e.addLog]),n=(0,z.useCallback)(async()=>{let t=NA(e,`list resources`);e.addLog(`info`,`Listing resources`);let n=await t.listAllResources();e.setResources(n.resources||[])},[e.addLog]),r=(0,z.useCallback)(async t=>{let n=NA(e,`read resource`);e.addLog(`info`,`Reading resource: ${t}`);try{let e=await n.readResource(t);return iA.getInstance().trackUseMcpResourceRead({resourceUri:t,success:!0}).catch(()=>{}),e}catch(e){throw iA.getInstance().trackUseMcpResourceRead({resourceUri:t,success:!1,errorType:e instanceof Error?e.name:`UnknownError`}).catch(()=>{}),e}},[e.addLog]),i=(0,z.useCallback)(async()=>{let t=NA(e,`list prompts`);e.addLog(`info`,`Listing prompts`);let n=await t.listPrompts();e.setPrompts(n.prompts||[])},[e.addLog]),a=(0,z.useCallback)(async()=>{if(!(e.stateRef.current!==`ready`||!e.connectionRef.current))try{e.setTools(await e.connectionRef.current.listTools()||[])}catch(t){e.addLog(`error`,`Failed to refresh tools:`,t)}},[e.addLog]),o=(0,z.useCallback)(async()=>{if(!(e.stateRef.current!==`ready`||!e.connectionRef.current))try{let t=await e.connectionRef.current.listAllResources();e.setResources(t.resources||[])}catch(t){e.addLog(`warn`,`Failed to refresh resources:`,t)}},[e.addLog]),s=(0,z.useCallback)(async()=>{if(!(e.stateRef.current!==`ready`||!e.connectionRef.current))try{let t=await e.connectionRef.current.listPrompts();e.setPrompts(t.prompts||[])}catch(t){e.addLog(`warn`,`Failed to refresh prompts:`,t)}},[e.addLog]),c=(0,z.useCallback)(async()=>{let t=await NA(e,`refresh resource templates`).listResourceTemplates();e.isMounted()&&e.setResourceTemplates(t.resourceTemplates||[])},[e.addLog]);return{callTool:t,listResources:n,readResource:r,listPrompts:i,refreshTools:a,refreshResources:o,refreshPrompts:s,refreshResourceTemplates:c,refreshAll:(0,z.useCallback)(()=>Promise.all([a(),o(),c(),s()]).then(()=>void 0),[a,o,c,s]),getPrompt:(0,z.useCallback)(async(t,n)=>NA(e,`get prompt`).getPrompt(t,n||{}),[e.addLog]),complete:(0,z.useCallback)(async t=>NA(e,`request completion`).complete(t),[e.addLog])}}var FA=3e3,IA=5e3;function LA(e){let{url:t,enabled:n=!0,callbackUrl:r=typeof window<`u`?kk(new URL(`/oauth/callback`,window.location.origin).toString()):`/oauth/callback`,storageKeyPrefix:i=`mcp:auth`,authProvider:a,headers:o,proxyConfig:s,oauthProxyUrl:c,autoProxyFallback:l=!1,logLevel:u=`silent`,autoRetry:d=!1,autoReconnect:f=!0,reconnectionOptions:p,preventAutoAuth:m=!0,useRedirectFlow:h=!1,onPopupWindow:g,timeout:_=3e4,wrapTransport:v,serverId:y,fetch:b,clientOptions:x,protocolNegotiation:S,onNotification:C,onSampling:w,onElicitation:T,oauth:E}=e,ee=`http`,te=E?.clientId?.trim()||void 0,ne=E?.clientMetadataUrl?.trim()||void 0,re=E?.scope?.trim()||void 0,ie=(0,z.useMemo)(()=>te?{client_id:te}:void 0,[te]),D=(0,z.useMemo)(()=>{let e=`useMcp:${t||`no-url`}`,n=qO.get(e);return u&&(n.level=u),n},[t,u]),ae=o??{},O=(0,z.useMemo)(()=>Ok(x),[x]),k=w,A=T,oe=(0,z.useMemo)(()=>({name:`mcp-use`,title:`mcp-use`,version:Ck(),description:`mcp-use is a complete TypeScript framework for building and using MCP`,icons:[{src:`https://mcp-use.com/logo.png`}],websiteUrl:`https://mcp-use.com`}),[]),se=(0,z.useMemo)(()=>e.clientInfo?{...oe,...e.clientInfo}:oe,[e.clientInfo,oe]),ce=(0,z.useMemo)(()=>OA(se),[se]),j=(0,z.useMemo)(()=>{if(!l)return{enabled:!1,proxyAddress:void 0};if(typeof l==`boolean`){let e=s?.proxyAddress;return{enabled:l&&!!e,proxyAddress:e}}let e=l.proxyAddress??s?.proxyAddress;return{enabled:l.enabled!==!1&&!!e,proxyAddress:e}},[l,s]),M=(0,z.useMemo)(()=>f===!1?{enabled:!1,initialDelay:0,healthCheckInterval:!1,healthCheckTimeout:3e4}:f===!0?{enabled:!0,initialDelay:FA,healthCheckInterval:1e4,healthCheckTimeout:3e4}:typeof f==`number`?{enabled:!0,initialDelay:f,healthCheckInterval:1e4,healthCheckTimeout:3e4}:{enabled:f.enabled!==!1,initialDelay:f.initialDelay??FA,healthCheckInterval:f.healthCheckInterval??1e4,healthCheckTimeout:f.healthCheckTimeout??3e4},[f]),[N,le]=(0,z.useState)(void 0);(0,z.useEffect)(()=>{le(void 0)},[t,s]);let ue=(0,z.useMemo)(()=>{if(!N?.proxyAddress)return s;let e=s?.headers??{};return{...N,headers:{...e,...N.headers??{}}}},[N,s]),de=ue?.proxyAddress,fe=ue?.headers??{},pe=(0,z.useMemo)(()=>t||``,[t]),me=(0,z.useMemo)(()=>({...fe,...ae}),[fe,ae]),[he,ge]=(0,z.useState)(`discovering`),[_e,ve]=(0,z.useState)([]),[ye,be]=(0,z.useState)([]),[xe,P]=(0,z.useState)([]),[Se,Ce]=(0,z.useState)([]),[we,Te]=(0,z.useState)(e._initialServerInfo?.name?e._initialServerInfo:void 0),[Ee,De]=(0,z.useState)(),[Oe,ke]=(0,z.useState)(void 0),[Ae,je]=(0,z.useState)(void 0),[Me,Ne]=(0,z.useState)(),[Pe,Fe]=(0,z.useState)({}),[Ie,Le]=(0,z.useState)(void 0),[Re,ze]=(0,z.useState)([]),[Be,Ve]=(0,z.useState)(void 0),[He,Ue]=(0,z.useState)(void 0),We=(0,z.useRef)(null),Ge=(0,z.useRef)(null),Ke=(0,z.useRef)(a??null),qe=(0,z.useRef)(null),Je=(0,z.useRef)(!1),Ye=(0,z.useRef)(!0),Xe=(0,z.useRef)(0),Ze=(0,z.useRef)(0),Qe=(0,z.useRef)(null),$e=(0,z.useRef)(!1),et=(0,z.useRef)(!1),tt=(0,z.useRef)(he),nt=(0,z.useRef)(f),rt=(0,z.useRef)(null),it=(0,z.useRef)(null),at=(0,z.useRef)(null),ot=(0,z.useRef)(k),st=(0,z.useRef)(A),ct=(0,z.useRef)(k!==void 0),lt=(0,z.useRef)(A!==void 0),ut=(0,z.useRef)(C);k!==void 0&&(ot.current=k),A!==void 0&&(st.current=A),ct.current=k!==void 0,lt.current=A!==void 0,ut.current=C;let dt=(0,z.useCallback)(async e=>ot.current(e),[]),ft=(0,z.useCallback)(async e=>st.current(e),[]),pt=(0,z.useCallback)(e=>{ut.current?.(e)},[]);(0,z.useEffect)(()=>{tt.current=he,nt.current=f},[he,f]),(0,z.useEffect)(()=>{Ke.current=a??null},[a]);let F=(0,z.useCallback)((e,t,...n)=>{let r=n.length>0?`${t} ${n.map(e=>JSON.stringify(e)).join(` `)}`:t,i=`[useMcp] ${r}`;switch(e){case`error`:D.error(i);break;case`warn`:D.warn(i);break;case`info`:D.info(i);break;case`debug`:D.debug(i);break;default:D.info(i)}Ye.current&&ze(t=>[...t.slice(-100),{level:e,message:r,timestamp:Date.now()}])},[D]),mt=PA({stateRef:tt,connectionRef:Ge,hasClient:()=>We.current!==null,isMounted:()=>Ye.current,setTools:ve,setResources:be,setResourceTemplates:P,setPrompts:Ce,addLog:F}),ht=(0,z.useCallback)(async(e=!1)=>{e||F(`info`,`Disconnecting...`),Je.current=!1,Qe.current&&clearTimeout(Qe.current),Qe.current=null;let t=Ze.current,n=We.current;if(n)try{let e=wA,t=n===We.current?Ge.current:null;t&&t._healthCheckCleanup&&(t._healthCheckCleanup(),t._healthCheckCleanup=null),t&&await n.closeSession(e)}catch(t){e||F(`warn`,`Error closing connection:`,t)}let r=Ze.current!==t;We.current===n&&!r&&(We.current=null,Ge.current=null),Ye.current&&!e&&!r&&(ge(`discovering`),ve([]),be([]),P([]),Ce([]),Le(void 0),Ve(void 0),Ue(void 0),Te(void 0),De(void 0),ke(void 0),je(void 0),Ne(void 0),Fe({}))},[F]),gt=(0,z.useCallback)((e,n)=>{F(`error`,e,n??``);let r=n&&`code`in n?n.code:void 0,i=j.enabled&&!ue?.proxyAddress,o=e.includes(`CORS`)||e.includes(`blocked by CORS policy`)||e.includes(`Failed to fetch`),s=r===400;if(i&&(o||s||typeof r==`number`&&r>=404&&r<500)&&!(r===401||r===403))return F(`info`,`Direct connection failed with ${o?`CORS error`:s?`HTTP 400 (Bad Request)`:`HTTP 4xx error`}. Trying with proxy...`),We.current=null,a||(Ke.current=null),F(`debug`,`Cleared client and auth provider for proxy fallback`),le({proxyAddress:j.proxyAddress}),Ye.current&&ge(`discovering`),setTimeout(()=>{Ye.current&&it.current?.()},1e3),!0;if(Ye.current){F(`info`,`Setting state to FAILED:`,e),ge(`failed`),Le(e);let t=Ke.current?.getLastAttemptedAuthUrl?.();t&&(Ve(t),F(`info`,`Manual authentication URL may be available.`,t))}return Je.current=!1,t&&iA.getInstance().trackUseMcpConnection({url:t,transportType:ee,success:!1,errorType:n?.name||`UnknownError`,hasOAuth:!!Ke.current,hasSampling:ct.current,hasElicitation:lt.current}).catch(()=>{}),!1},[F,t,ee,j,ue,a]),_t=(0,z.useCallback)(async()=>{if(!n||!t){F(`debug`,n?`No server URL provided, skipping connection.`:`Connection disabled via enabled flag.`);return}if(Je.current){F(`debug`,`Connection attempt already in progress.`);return}if(!Ye.current){F(`debug`,`Connect called after unmount, aborting.`);return}if(Je.current=!0,Ze.current+=1,Xe.current+=1,Le(void 0),Ve(void 0),rt.current=null,ge(`discovering`),ve([]),be([]),P([]),Ce([]),Te(void 0),De(void 0),ke(void 0),je(void 0),Ne(void 0),Fe({}),F(`info`,`Connecting attempt #${Xe.current} to ${t}...`),!Ke.current){let{provider:e,oauthProxyUrl:t}=jA({effectiveOAuthUrl:pe,storageKeyPrefix:i,oauthClientConfig:ce,callbackUrl:r,preventAutoAuth:m,useRedirectFlow:h,gatewayUrl:de,oauthProxyUrl:c,onPopupWindow:g,proxyOAuthRequests:!0,staticClientInfo:ie,clientMetadataUrl:ne,scope:re});Ke.current=e,t&&F(`debug`,`OAuth BFF enabled: ${t}`),F(`debug`,`BrowserOAuthClientProvider initialized with URL: ${pe}, proxy: ${t?`enabled`:`disabled`}, gateway: ${de?`enabled`:`disabled`}`)}We.current?F(`debug`,`BrowserMCPClient already exists, reusing.`):(We.current=new gA,F(`debug`,`BrowserMCPClient initialized in connect.`));let e=async n=>{if(!Ye.current)return F(`debug`,`Connection attempt aborted - component unmounted`),`failed`;F(`info`,`Attempting connection with transport: ${n}`),F(`debug`,`Client ref status at start of tryConnectWithTransport: ${We.current?`initialized`:`NULL`}`);try{let e=wA,r={url:t,timeout:_,clientInfo:se,...(()=>{let e=Ke.current?.getProxyFetch?.(b)??b;return e?{fetch:e}:{}})(),...O&&{clientOptions:O},...S!==void 0&&{protocolNegotiation:S},...p?{reconnectionOptions:p}:f===!1?{reconnectionOptions:{maxRetries:0}}:{}};if(de&&(r.gatewayUrl=de,F(`debug`,`Using proxy gateway: ${de} for target: ${t}`)),me&&Object.keys(me).length>0&&(r.headers=me),!We.current){if(!Ye.current)return F(`debug`,`Connection aborted - component unmounted, client cleaned up`),`failed`;let e=Error(`Client not initialized - this is a bug in the connection flow`);throw F(`error`,`Client ref is null in tryConnectWithTransport but component is still mounted`),e}We.current.addServer(e,{...r,authProvider:Ke.current,onSampling:ct.current?dt:void 0,onElicitation:lt.current?ft:void 0,onNotification:e=>{F(`debug`,`Notification received:`,e.method,e),pt(e),e.method===`notifications/tools/list_changed`?(F(`info`,`Tools list changed, auto-refreshing...`),mt.refreshTools().catch(e=>F(`warn`,`Auto-refresh tools failed:`,e))):e.method===`notifications/resources/list_changed`?(F(`info`,`Resources list changed, auto-refreshing...`),mt.refreshResources().catch(e=>F(`warn`,`Auto-refresh resources failed:`,e))):e.method===`notifications/prompts/list_changed`&&(F(`info`,`Prompts list changed, auto-refreshing...`),mt.refreshPrompts().catch(e=>F(`warn`,`Auto-refresh prompts failed:`,e)))},wrapTransport:v?n=>(F(`debug`,`Applying transport wrapper for server:`,e,`url:`,t),v(n,y??t)):void 0});let i=await We.current.connect(e);if(Ge.current=i,!Ye.current)return F(`debug`,`Connection aborted after connection creation - component unmounted`),`failed`;F(`info`,`✅ Successfully connected to MCP server`),F(`info`,`Server info:`,i.info.server),F(`info`,`Server capabilities:`,i.info.capabilities),M.enabled&&M.healthCheckInterval!==!1&&(i._healthCheckCleanup=MA({gatewayUrl:de,url:t,allHeaders:me,getAuthHeaders:async()=>{try{let e=await Ke.current?.tokens?.();if(e?.access_token){let t=e.token_type||`bearer`;return{Authorization:`${t.charAt(0).toUpperCase()+t.slice(1)} ${e.access_token}`}}}catch{}return{}},isMountedRef:Ye,stateRef:tt,autoReconnectRef:nt,setState:ge,addLog:F,connect:_t,defaultReconnectDelay:M.initialDelay,healthCheckIntervalMs:M.healthCheckInterval,healthCheckTimeoutMs:M.healthCheckTimeout})),iA.getInstance().trackUseMcpConnection({url:t,transportType:n,success:!0,hasOAuth:!!Ke.current,hasSampling:ct.current,hasElicitation:lt.current}).catch(()=>{}),ve(i.tools||[]);let[a,o,s]=await Promise.all([i.listAllResources(),i.listPrompts(),i.supports(`resources`)?i.listResourceTemplates():Promise.resolve({resourceTemplates:[]})]);if(!Ye.current)return F(`debug`,`Connection aborted after discovery - component unmounted`),`failed`;be(a.resources||[]),Ce(o.prompts||[]),P(s.resourceTemplates||[]);let{server:c,capabilities:l,protocolEra:u,protocolVersion:d,instructions:m,extensions:h}=i.info;if(Ye.current&&(ke(u),je(d),Ne(m),Fe(h)),c){if(F(`debug`,`Server info:`,c),!Ye.current)return F(`debug`,`Skipping state update - component unmounted`),`failed`;Te(c),qe.current=EA({serverInfo:c,url:t,isMounted:()=>Ye.current,setServerInfo:Te,addLog:F})}if(l){if(F(`debug`,`Server capabilities:`,l),!Ye.current)return F(`debug`,`Skipping state update - component unmounted`),`failed`;De(l)}if(Ke.current){let e=await Ke.current.tokens?.();if(!Ye.current)return F(`debug`,`Connection aborted after token fetch for auth tokens - component unmounted`),`failed`;if(e?.access_token){let t=e.expires_in?Date.now()+e.expires_in*1e3:void 0,n=null,r=null,i=null;try{n=await Ke.current.getTokenEndpoint?.()??null}catch{n=null}try{r=await Ke.current.getResource?.()??null}catch{r=null}try{i=await Ke.current.getClientCredentials?.()??null}catch{i=null}if(!Ye.current)return F(`debug`,`Skipping state update - component unmounted`),`failed`;Ue({access_token:e.access_token,token_type:e.token_type||`Bearer`,expires_at:t,refresh_token:e.refresh_token,scope:e.scope,...n?{token_endpoint:n}:{},...r?{resource:r}:{},...i?.client_id?{client_id:i.client_id}:{},...i?.client_secret?{client_secret:i.client_secret}:{}})}}return rt.current=n,ge(`ready`),`success`}catch(r){let i=r,a=i?.message||String(r),o=Ke.current?.getLastAttemptedAuthUrl?.();if(o&&Ke.current&&m)return F(`info`,`OAuth already discovered (stored auth URL present); awaiting manual authentication.`),Ye.current&&(ge(`pending_auth`),Ve(o)),Je.current=!1,`auth_redirect`;let s=kA(r),c=oA(r);if(s&&ae&&Object.keys(ae).length>0)return gt(`Authentication failed (HTTP 401). Server does not support OAuth. Check your Authorization header value is correct.`),`failed`;if(s&&(!ae||Object.keys(ae).length===0))return gt(`Authentication required (HTTP 401). Server does not support OAuth. Add an Authorization header in the Custom Headers section (e.g., Authorization: Bearer YOUR_API_KEY).`),`failed`;if(c){if(s)return gt(`Authentication required (HTTP 401). Server does not support OAuth. Add an Authorization header in the Custom Headers section (e.g., Authorization: Bearer YOUR_API_KEY).`),`failed`;if(Ke.current)if(F(`info`,`Authentication required. OAuth provider available.`),m){if(F(`info`,`Waiting for user to initiate authentication flow...`),Ye.current){ge(`pending_auth`);let e=Ke.current?.getLastAttemptedAuthUrl?.();e&&(Ve(e),F(`info`,`Retrieved stored auth URL for manual authentication`))}return Je.current=!1,`auth_redirect`}else{F(`info`,`Triggering automatic OAuth authentication flow...`);try{if(await BS(Ke.current,{serverUrl:t,fetchFn:Ke.current.getProxyFetch?.()})===`REDIRECT`){let e=await Ke.current.getAuthorizationCode?.();if(!e)throw Error(`Authorization code not captured by headless provider`);await BS(Ke.current,{serverUrl:t,authorizationCode:e,fetchFn:Ke.current.getProxyFetch?.()})}return F(`info`,`OAuth flow completed, reconnecting...`),await e(n)}catch(e){return gt(`Automatic OAuth authentication failed: ${e instanceof Error?e.message:String(e)}`,e instanceof Error?e:Error(String(e))),`failed`}}return ae&&Object.keys(ae).length>0?(gt(`Authentication failed: Server returned 401 Unauthorized. Check your Authorization header value is correct.`),`failed`):(gt(`Authentication required: Server returned 401 Unauthorized. Add an Authorization header in the Custom Headers section (e.g., Authorization: Bearer YOUR_API_KEY).`),`failed`)}return gt(a,i instanceof Error?i:Error(String(i)))?`auth_redirect`:`failed`}},a=`failed`;F(`debug`,`Connecting via streamable HTTP`),a=await e(`http`),(a===`success`||a===`failed`||a===`auth_redirect`)&&(Je.current=!1),F(`debug`,`Connection sequence finished with status: ${a}`)},[F,gt,ht,t,i,r,ce.name,ce.version,ce.uri,ce.logo_uri,ie,ne,re,ae,ee,m,h,g,n,_,se,O,S,de,c,me,pe,dt,ft,pt]);(0,z.useEffect)(()=>{it.current=_t,at.current=gt},[_t,gt]);let vt=(0,z.useCallback)(()=>{tt.current===`failed`?(F(`info`,`Retry requested...`),it.current?.()):F(`warn`,`Retry called but state is not 'failed' (state: ${tt.current}). Ignoring.`)},[F]),yt=(0,z.useCallback)(async()=>{F(`info`,`Manual authentication requested...`);let e=tt.current;if(e===`failed`)F(`info`,`Attempting to reconnect and authenticate via retry...`),vt();else if(e===`pending_auth`){F(`info`,`Proceeding with authentication from pending state...`);try{if(TA(Ke.current,`Auth Provider not available for manual auth`),TA(t,`Server URL is required for authentication`),a){F(`info`,`Using provided authProvider for manual authentication`);let e=new URL(t),n=e.origin+e.pathname.replace(/\/+$/,``);await BS(Ke.current,{serverUrl:n,fetchFn:Ke.current.getProxyFetch?.()}),it.current?.();return}F(`info`,`Cleared ${Ke.current.clearStorage?.()??0} OAuth storage item(s) for fresh authentication`),ge(`authenticating`);let e=null,n=null,{provider:o,oauthProxyUrl:s}=jA({effectiveOAuthUrl:pe,storageKeyPrefix:i,oauthClientConfig:ce,callbackUrl:r,preventAutoAuth:!1,useRedirectFlow:h,gatewayUrl:de,oauthProxyUrl:c,onPopupWindow:(t,r,i)=>{e=i;try{n=new URL(t).searchParams.get(`state`)}catch{}g?.(t,r,i)},proxyOAuthRequests:!0,staticClientInfo:ie,clientMetadataUrl:ne,scope:re});s&&F(`info`,`Scoped OAuth proxy fetch enabled for manual auth`),Ke.current=o,F(`info`,`Triggering fresh OAuth authorization...`);let l=new URL(t),u=await BS(o,{serverUrl:l.origin+l.pathname.replace(/\/+$/,``),fetchFn:o.getProxyFetch?.()});if(u===`AUTHORIZED`){F(`info`,`OAuth flow completed (tokens obtained)`),Je.current=!1,it.current?.();return}if(u!==`REDIRECT`)throw Error(`Unexpected OAuth auth() result: ${u}`);F(`info`,`OAuth authorization redirect initiated`);let d=o.getLastAttemptedAuthUrl?.();if(d&&(Ve(d),F(`info`,`Updated auth URL for fallback:`,d),!n))try{n=new URL(d).searchParams.get(`state`)}catch{}if(h)return;let f=o.getKey?.(`tokens`);if(!f){F(`warn`,`Could not derive tokens storage key; relying on callback listener.`);return}et.current=!0;let p;try{p=await ck({popup:e,state:n,tokensKey:f})}finally{et.current=!1}if(!Ye.current)return;switch(p.kind){case`success`:F(`info`,`Authentication succeeded; reconnecting to MCP server...`),Je.current=!1,it.current?.();break;case`cancelled`:F(`warn`,`Authentication popup was closed before completing. Returning to pending_auth.`),ge(`pending_auth`);break;case`timeout`:F(`warn`,`Authentication timed out waiting for the popup. Returning to pending_auth.`),ge(`pending_auth`);break;case`error`:gt(`Authentication failed: ${p.error}`);break;default:break}}catch(e){if(!Ye.current)return;let t=e instanceof Error?e:Error(String(e));gt(`Manual authentication failed: ${t.message}`,t)}}else if(e===`authenticating`){F(`warn`,`Already attempting authentication. Check for blocked popups or wait for timeout.`);let e=Ke.current?.getLastAttemptedAuthUrl?.();e&&!Be&&(Ve(e),F(`info`,`Manual authentication URL retrieved:`,e))}else F(`info`,`Client not in a state requiring manual authentication trigger (state: ${e}). If needed, try disconnecting and reconnecting.`)},[F,vt,gt,Be,t,h,g,i,ce.name,ce.uri,ce.logo_uri,ie,ne,re,r,se,a]),bt=(0,z.useCallback)(()=>{Ke.current?.clearStorage?(F(`info`,`Cleared ${Ke.current.clearStorage()} item(s) from localStorage for ${t}.`),Ve(void 0),ht()):F(`warn`,`Auth provider not initialized, cannot clear storage.`)},[t,F,ht]);(0,z.useEffect)(()=>{if(typeof window>`u`)return;let e=(e,t)=>{if(et.current){F(`debug`,`Ignoring auth callback via ${t}; manual popup flow owns this result.`);return}let n=Ke.current?.serverUrlHash;if(e?.serverUrlHash&&n&&e.serverUrlHash!==n){F(`debug`,`Ignoring auth callback via ${t} for a different server.`);return}if(F(`info`,`Received auth callback via ${t}.`,e),Qe.current&&clearTimeout(Qe.current),Qe.current=null,e?.success)F(`info`,`Authentication successful via popup. Reconnecting client...`),Je.current&&F(`debug`,`Connection attempt already in progress, resetting flag to allow reconnection.`),Je.current=!1,setTimeout(()=>{Ye.current&&(F(`debug`,`Initiating reconnection after successful auth callback.`),it.current?.())},100);else{if(tt.current!==`authenticating`&&tt.current!==`pending_auth`){F(`debug`,`Ignoring stale auth failure callback (state=${tt.current}).`);return}at.current?.(`Authentication failed in callback: ${e?.error||`Unknown reason.`}`)}},t=t=>{t.origin===window.location.origin&&t.data?.type===ok&&e(t.data,`postMessage`)};window.addEventListener(`message`,t),F(`debug`,`Auth callback message listener added.`);let n=null,r=t=>{t.data?.type===ok&&e(t.data,`BroadcastChannel`)};if(typeof BroadcastChannel<`u`)try{n=new BroadcastChannel(ak),n.addEventListener(`message`,r),F(`debug`,`Auth callback BroadcastChannel listener added.`)}catch(e){F(`warn`,`Failed to open auth callback BroadcastChannel; lost-opener popups will not reach this client.`,e),n=null}return()=>{if(window.removeEventListener(`message`,t),F(`debug`,`Auth callback message listener removed.`),n){try{n.removeEventListener(`message`,r),n.close()}catch{}F(`debug`,`Auth callback BroadcastChannel listener removed.`)}Qe.current&&clearTimeout(Qe.current)}},[F]),(0,z.useEffect)(()=>{if(Ye.current=!0,!n||!t)return F(`debug`,n?`No server URL provided, skipping connection.`:`Connection disabled via enabled flag.`),ge(`discovering`),()=>{Ye.current=!1};if(F(`debug`,`useMcp mounted, initiating connection.`),Xe.current=0,a)Ke.current=a,F(`debug`,`Using externally provided authProvider`);else if(!Ke.current||Ke.current.serverUrl!==pe){let{provider:e,oauthProxyUrl:t}=jA({effectiveOAuthUrl:pe,storageKeyPrefix:i,oauthClientConfig:ce,callbackUrl:r,preventAutoAuth:m,useRedirectFlow:h,gatewayUrl:de,oauthProxyUrl:c,onPopupWindow:g,proxyOAuthRequests:!0,staticClientInfo:ie,clientMetadataUrl:ne,scope:re});Ke.current=e,t&&F(`debug`,`OAuth proxy URL in effect: ${t}`),F(`debug`,`BrowserOAuthClientProvider initialized/updated with URL: ${pe}, proxy: ${t?`enabled`:`disabled`}, gateway: ${de?`enabled`:`disabled`}`)}return _t(),()=>{Ye.current=!1,F(`debug`,`useMcp unmounting, disconnecting.`),ht(!0)}},[t,n,i,r,ce.name,ce.version,ce.uri,ce.logo_uri,ie,ne,re,h,se,pe,s,a]);let xt=(0,z.useRef)(vt),St=(0,z.useRef)(F);(0,z.useEffect)(()=>{xt.current=vt,St.current=F},[vt,F]),(0,z.useEffect)(()=>{let e=null;if(he===`failed`&&d&&Xe.current>0){if(!$e.current){$e.current=!0;let t=typeof d==`number`?d:IA;St.current(`info`,`Connection failed, auto-retrying in ${t}ms...`),e=setTimeout(()=>{$e.current=!1,Ye.current&&tt.current===`failed`&&xt.current()},t)}}else he!==`failed`&&($e.current=!1);return()=>{e&&(clearTimeout(e),$e.current=!1)}},[he,d]);let Ct=(0,z.useCallback)(async()=>tt.current===`ready`?we?.icon?we.icon:qe.current?(F(`debug`,`Waiting for icon to finish loading...`),await qe.current):(F(`debug`,`No icon available and no loading in progress`),null):(F(`warn`,`Cannot ensure icon loaded - not connected`),null),[we,F]);return{state:he,name:we?.name||t||``,tools:_e,resources:ye,resourceTemplates:xe,prompts:Se,serverInfo:we,capabilities:Ee,protocolEra:Oe,protocolVersion:Ae,instructions:Me,extensions:Pe,error:Ie,log:Re,authUrl:Be,authTokens:He,client:We.current,...mt,retry:vt,disconnect:ht,authenticate:yt,clearStorage:bt,ensureIconLoaded:Ct}}var RA=null;function zA(){return typeof window<`u`&&window.name.startsWith(`mcp_auth_`)}function BA(e,t,n){return{type:ok,success:e,...e?{}:{error:t??`Unknown error`},...n.state?{state:n.state}:{},...n.serverUrlHash?{serverUrlHash:n.serverUrlHash}:{}}}function VA(e){if(typeof BroadcastChannel>`u`)return;let t;try{t=new BroadcastChannel(ak),t.postMessage(e)}catch(e){console.warn(`[mcp-callback] Failed to broadcast callback result:`,e)}finally{t&&setTimeout(()=>{try{t?.close()}catch{}},0)}}function HA(e,t,n,r){if(typeof document>`u`)return;document.body.innerHTML=``;let i=document.createElement(`div`);i.style.fontFamily=`sans-serif`,i.style.padding=`20px`;let a=document.createElement(`h1`);a.textContent=e,i.appendChild(a);let o=document.createElement(`p`);o.textContent=t,n&&(o.style.color=`red`,o.style.backgroundColor=`#ffebeb`,o.style.border=`1px solid red`,o.style.padding=`10px`,o.style.borderRadius=`4px`),i.appendChild(o);let s=document.createElement(`a`);if(s.href=`#`,s.textContent=`Close this window`,s.onclick=e=>(e.preventDefault(),window.close(),!1),i.appendChild(s),r){let e=document.createTextNode(` or `),t=document.createElement(`a`);t.href=r,t.textContent=`return to the app`,i.append(e,t)}document.body.appendChild(i)}function UA(e){let t=`mcp:auth:state_${e}`,n=localStorage.getItem(t)?t:null;if(!n){let t=`:state_${e}`;for(let e=0;e<localStorage.length;e++){let r=localStorage.key(e);if(r?.endsWith(t)){n=r;break}}}let r=n?localStorage.getItem(n):null;if(!n||!r)throw Error(`Invalid or expired OAuth state "${e}".`);let i;try{i=JSON.parse(r)}catch{throw localStorage.removeItem(n),Error(`Failed to parse stored OAuth state.`)}return{key:n,value:i}}function WA(e,t){let n=new URL(e);n.searchParams.set(`auth_error`,`oauth_callback_failed`),n.searchParams.set(`auth_error_description`,t),window.location.href=n.toString()}function GA(e,t,n,r){let i=BA(e,t,r),a=n?.returnUrl,o=n?.flowType===`popup`||zA();if(n?.flowType===`redirect`&&a){e?window.location.href=a:WA(a,t??`Authentication failed.`);return}if(window.opener&&!window.opener.closed){window.opener.postMessage(i,window.location.origin),window.close();return}if(o){VA(i),HA(e?`Authentication Successful!`:`Authentication Error`,e?`You're authenticated. You can close this window and return to the app.`:t??`Authentication failed.`,!e,a);try{window.close()}catch{}return}if(a){e?window.location.href=a:WA(a,t??`Authentication failed.`);return}if(!e){HA(`Authentication Error`,t??`Authentication failed.`,!0);return}window.location.href=`/`}function KA(){return RA||=qA(),RA}async function qA(){let e=new URLSearchParams(window.location.search),t=e.get(`state`),n=null,r=null,i=null;try{if(!t)throw Error(`OAuth callback is missing the state parameter.`);let a=UA(t);if(n=a.key,r=a.value,!r.expiry||r.expiry<Date.now())throw localStorage.removeItem(n),Error(`OAuth state has expired. Please start authentication again.`);if(!r.providerOptions)throw Error(`Stored OAuth state is missing provider options.`);let{serverUrl:o,...s}=r.providerOptions;i=new Pk(o,s),await new GC(new URL(o),{authProvider:i,fetch:i.getProxyFetch()}).finishAuth(e),localStorage.removeItem(n),GA(!0,void 0,r,{state:t,serverUrlHash:r.serverUrlHash})}catch(e){let a=e instanceof Error?e.message:String(e);console.error(`[mcp-callback] OAuth callback failed:`,e),n&&localStorage.removeItem(n),i&&localStorage.removeItem(i.getKey(`last_auth_url`)),GA(!1,a,r,{state:t,serverUrlHash:r?.serverUrlHash})}}JO();var JA=[`url`,`displayName`,`enabled`,`proxyConfig`,`oauthProxyUrl`,`connectionMode`,`autoProxyFallback`,`callbackUrl`,`storageKeyPrefix`,`headers`,`logLevel`,`autoRetry`,`autoReconnect`,`reconnectionOptions`,`popupFeatures`,`preventAutoAuth`,`useRedirectFlow`,`clientOptions`,`protocolNegotiation`,`timeout`,`clientInfo`,`oauth`];function YA(e){let t={};for(let n of JA){let r=e[n];r!==void 0&&(t[n]=r)}return t}function XA(e){return YA(e)}var ZA=500,QA=5*6e4;function $A(e){let[t,n]=(0,z.useState)([]),[r,i]=(0,z.useState)([]),[a,o]=(0,z.useState)([]),s=(0,z.useRef)(0),c=(0,z.useRef)(0),l=(0,z.useRef)(new Map),u=(0,z.useRef)(new Map),d=(0,z.useCallback)(e=>{for(let t of l.current.values())clearTimeout(t.timeout),t.reject(Error(e));l.current.clear();for(let t of u.current.values())clearTimeout(t.timeout),t.reject(Error(e));u.current.clear(),i([]),o([])},[]);(0,z.useEffect)(()=>()=>d(`MCP server connection was removed`),[d]);let f=(0,z.useCallback)(t=>{let r={id:globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random()}`,method:t.method,params:t.params,timestamp:Date.now(),read:!1};n(e=>[r,...e].slice(0,ZA)),e.onNotificationReceived?.(r)},[e.onNotificationReceived]),p=(0,z.useCallback)((e,t)=>{let n=l.current.get(e);n&&(clearTimeout(n.timeout),l.current.delete(e),i(t=>t.filter(t=>t.id!==e)),n.resolve(t))},[]),m=(0,z.useCallback)((e,t)=>{let n=l.current.get(e);n&&(clearTimeout(n.timeout),l.current.delete(e),i(t=>t.filter(t=>t.id!==e)),n.reject(Error(t??`User rejected sampling request`)))},[]),h=(0,z.useCallback)(t=>new Promise((n,r)=>{let a=`sampling-${s.current++}`,o={id:a,request:{method:`sampling/createMessage`,params:t},timestamp:Date.now(),serverName:e.serverName},c=setTimeout(()=>m(a,`Sampling request timed out`),QA);l.current.set(a,{resolve:n,reject:r,timeout:c}),i(e=>[...e,o]),e.onSamplingRequest?.(o),e.onGlobalSamplingRequest?.(o,e.serverId,e.serverName,p,m)}),[p,e,m]),g=(0,z.useCallback)((e,t)=>{let n=u.current.get(e);n&&(clearTimeout(n.timeout),u.current.delete(e),o(t=>t.filter(t=>t.id!==e)),n.resolve(t))},[]),_=(0,z.useCallback)((e,t)=>{let n=u.current.get(e);n&&(clearTimeout(n.timeout),u.current.delete(e),o(t=>t.filter(t=>t.id!==e)),n.reject(Error(t??`User rejected elicitation request`)))},[]),v=(0,z.useCallback)(t=>new Promise((n,r)=>{let i=`elicitation-${c.current++}`,a={id:i,request:t,timestamp:Date.now(),serverName:e.serverName},s=setTimeout(()=>_(i,`Elicitation request timed out`),QA);u.current.set(i,{resolve:n,reject:r,timeout:s}),o(e=>[...e,a]),e.onElicitationRequest?.(a),e.onGlobalElicitationRequest?.(a,e.serverId,e.serverName,g,_)}),[g,e,_]),y=(0,z.useCallback)(e=>{n(t=>t.map(t=>t.id===e?{...t,read:!0}:t))},[]),b=(0,z.useCallback)(()=>n(e=>e.map(e=>({...e,read:!0}))),[]),x=(0,z.useCallback)(()=>n([]),[]);return{notifications:t,pendingSamplingRequests:r,pendingElicitationRequests:a,unreadNotificationCount:t.filter(e=>!e.read).length,markNotificationRead:y,markAllNotificationsRead:b,clearNotifications:x,approveSampling:p,rejectSampling:m,approveElicitation:g,rejectElicitation:_,onNotification:f,onSampling:h,onElicitation:v,rejectAll:d}}var ej=qO.get(`McpClientProvider`),tj=(0,z.createContext)(null);function nj(e,t){return JSON.stringify(e)===JSON.stringify(t)}function rj(e,t){return e.id===t.id&&nj(YA(e),YA(t))&&e.name===t.name&&e.state===t.state&&e.error===t.error&&e.authUrl===t.authUrl&&nj(e.authTokens,t.authTokens)&&e.protocolEra===t.protocolEra&&e.protocolVersion===t.protocolVersion&&nj(e.serverInfo,t.serverInfo)&&nj(e.capabilities,t.capabilities)&&e.instructions===t.instructions&&nj(e.extensions,t.extensions)&&nj(e.tools,t.tools)&&nj(e.resources,t.resources)&&nj(e.resourceTemplates,t.resourceTemplates)&&nj(e.prompts,t.prompts)&&nj(e.notifications,t.notifications)&&e.unreadNotificationCount===t.unreadNotificationCount&&nj(e.pendingSamplingRequests,t.pendingSamplingRequests)&&nj(e.pendingElicitationRequests,t.pendingElicitationRequests)&&e.client===t.client}function ij({id:e,options:t,defaultCallbackUrl:n,defaultOAuthProxyUrl:r,defaultProxyConfig:i,defaultAutoProxyFallback:a,clientInfo:o,cachedMetadata:s,onUpdate:c,onUpdateConfig:l,onUpdateDisplayName:u,onReconnect:d,rpcWrapTransport:f,onGlobalSamplingRequest:p,onGlobalElicitationRequest:m}){let{displayName:h,onSamplingRequest:g,onElicitationRequest:_,onNotificationReceived:v,wrapTransport:y}=t,b=(0,z.useMemo)(()=>{let{displayName:c,onSamplingRequest:l,onElicitationRequest:u,onNotificationReceived:d,wrapTransport:f,...p}=t;return{...p,callbackUrl:p.callbackUrl||n,oauthProxyUrl:p.oauthProxyUrl||r,proxyConfig:p.proxyConfig||i,autoProxyFallback:p.autoProxyFallback===void 0?a:p.autoProxyFallback,clientInfo:p.clientInfo?o?{...o,...p.clientInfo}:p.clientInfo:o,_initialServerInfo:s,serverId:e}},[t,n,r,i,a,o,s]),x=(0,z.useMemo)(()=>{if(!(!f&&!y))return t=>{let n=t;return f&&(n=f(n,e)),y&&(n=y(n,e)),n}},[f,y,e]),S=$A({serverId:e,serverName:h||e,onNotificationReceived:v,onSamplingRequest:g,onElicitationRequest:_,onGlobalSamplingRequest:p,onGlobalElicitationRequest:m}),C=LA({...b,onNotification:S.onNotification,onSampling:S.onSampling,onElicitation:S.onElicitation,wrapTransport:x});(0,z.useEffect)(()=>{C.state!==`ready`&&S.rejectAll(`MCP server connection is no longer active`)},[C.state,S.rejectAll]);let w=(0,z.useCallback)(t=>l(e,t),[e,l]),T=(0,z.useCallback)(n=>{let r=t.proxyConfig?.proxyAddress?.trim();return t.connectionMode===`proxy`&&r?l(e,{proxyConfig:{...t.proxyConfig,proxyAddress:r,...n?{headers:n}:{}},headers:void 0}):l(e,{headers:n})},[e,t.connectionMode,t.proxyConfig,l]),E=(0,z.useCallback)(t=>u(e,t),[e,u]),ee=(0,z.useCallback)(()=>d(e),[e,d]),te=(0,z.useRef)(c),ne=(0,z.useRef)(null);return(0,z.useEffect)(()=>{te.current=c},[c]),(0,z.useEffect)(()=>{let n={...XA(t),...C,id:e,displayName:h||t.displayName||e,notifications:S.notifications,unreadNotificationCount:S.unreadNotificationCount,markNotificationRead:S.markNotificationRead,markAllNotificationsRead:S.markAllNotificationsRead,clearNotifications:S.clearNotifications,pendingSamplingRequests:S.pendingSamplingRequests,approveSampling:S.approveSampling,rejectSampling:S.rejectSampling,pendingElicitationRequests:S.pendingElicitationRequests,approveElicitation:S.approveElicitation,rejectElicitation:S.rejectElicitation,updateConfig:w,setHeaders:T,setDisplayName:E,reconnect:ee},r=ne.current;!r||!rj(r,n)?(ne.current=n,te.current(n)):ej.debug(`[McpServerWrapper ${e}] No meaningful changes detected, skipping onUpdate`)},[e,h,t,t.url,C.state,C.error,C.authUrl,C.tools,C.resources,C.resourceTemplates,C.prompts,C.serverInfo,C.capabilities,C.protocolEra,C.protocolVersion,C.instructions,C.extensions,C.authTokens,S,w,T,E,ee]),null}function aj({children:e,mcpServers:t,defaultCallbackUrl:n,defaultOAuthProxyUrl:r,defaultProxyConfig:i,defaultAutoProxyFallback:a=!1,defaultServerConfig:o,clientInfo:s,storageProvider:c,enableRpcLogging:l=!1,onServerAdded:u,onServerRemoved:d,onServerStateChange:f,onSamplingRequest:p,onElicitationRequest:m}){let[h,g]=(0,z.useState)([]),[_,v]=(0,z.useState)([]),[y,b]=(0,z.useState)({}),[x,S]=(0,z.useState)(!1),C=(0,z.useRef)(!1),w=(0,z.useRef)([]);(0,z.useEffect)(()=>{w.current=_},[_]);let T=(0,z.useRef)({}),[E,ee]=(0,z.useState)(void 0),[te,ne]=(0,z.useState)(!1);(0,z.useEffect)(()=>{if(!l||typeof window>`u`){ee(void 0),ne(!0);return}Promise.resolve().then(()=>(ik(),YO)).then(e=>{ej.debug(`[McpClientProvider] RPC logger loaded`),ee(()=>e.wrapTransportForLogging),ne(!0)}).catch(e=>{ej.error(`[McpClientProvider] Failed to load RPC logger:`,e),ee(void 0),ne(!0)})},[l]),(0,z.useEffect)(()=>{if(!te){ej.debug(`[McpClientProvider] Waiting for RPC logging to be ready before loading servers`);return}C.current||(C.current=!0,(async()=>{if(ej.debug(`[McpClientProvider] Loading servers, storageProvider:`,!!c,`mcpServers:`,t),!c){if(t){let e=Object.entries(t).map(([e,t])=>({id:e,options:t}));ej.debug(`[McpClientProvider] Loaded from mcpServers prop:`,e.length),g(e)}S(!0);return}try{let e=await Promise.resolve(c.getServers());if(ej.debug(`[McpClientProvider] Loaded from storage:`,Object.keys(e).length),c.getServerMetadata)try{let t=Object.keys(e).map(async e=>[e,await Promise.resolve(c.getServerMetadata(e))]),n=await Promise.all(t);T.current=Object.fromEntries(n.filter(e=>e[1]!==void 0)),ej.debug(`[McpClientProvider] Loaded cached metadata for`,Object.keys(T.current).length,`servers`)}catch(e){ej.warn(`[McpClientProvider] Failed to load cached metadata:`,e)}let n={...e,...t},r=Object.entries(n).map(([e,t])=>({id:e,options:t}));ej.debug(`[McpClientProvider] Total servers after merge:`,r.length),g(r),S(!0)}catch(e){ej.error(`[McpClientProvider] Failed to load from storage:`,e),t&&g(Object.entries(t).map(([e,t])=>({id:e,options:t}))),S(!0)}})())},[c,t,te]),(0,z.useEffect)(()=>{!c||!x||(async()=>{try{let e=h.reduce((e,t)=>(e[t.id]=XA(t.options),e),{});await Promise.resolve(c.setServers(e))}catch(e){ej.error(`[McpClientProvider] Failed to save to storage:`,e)}})()},[h,c,x]);let re=(0,z.useCallback)(e=>{ej.debug(`[McpClientProvider] handleServerUpdate called for server ${e.id}`,{toolCount:e.tools.length,state:e.state});let t=[];v(n=>{let r=n.findIndex(t=>t.id===e.id);if(r===-1)return ej.debug(`[McpClientProvider] Adding new server ${e.id} to state`),t.push(()=>u?.(e.id,e)),[...n,e];let i=n[r],a=i.state!==e.state,o=i.serverInfo!==e.serverInfo;if(ej.debug(`[McpClientProvider] Comparing server ${e.id}:`,{toolsChanged:i.tools!==e.tools,currentToolCount:i.tools.length,updatedToolCount:e.tools.length,stateChanged:a}),rj(i,e))return ej.debug(`[McpClientProvider] No changes detected for server ${e.id}, skipping update`),n;if(ej.debug(`[McpClientProvider] Updating server ${e.id} in state`),a&&t.push(()=>f?.(e.id,e.state)),o&&e.serverInfo&&c?.setServerMetadata){let t={name:e.serverInfo.name,version:e.serverInfo.version,title:e.serverInfo.title,websiteUrl:e.serverInfo.websiteUrl,icons:e.serverInfo.icons,icon:e.serverInfo.icon};T.current[e.id]=t,Promise.resolve(c.setServerMetadata(e.id,t)).catch(e=>{ej.error(`[McpClientProvider] Failed to save server metadata:`,e)})}let s=[...n];return s[r]=e,s}),t.length>0&&queueMicrotask(()=>{t.forEach(e=>e())})},[u,f,c]),ie=(0,z.useCallback)((e,t)=>{g(n=>n.find(t=>t.id===e)?n:(ej.debug(`[McpClientProvider] Adding new server to configs:`,e),[...n,{id:e,options:t}]))},[]),D=(0,z.useCallback)(async(e,t)=>{let n=w.current.find(t=>t.id===e);if(v(t=>t.filter(t=>t.id!==e)),g(t=>t.filter(t=>t.id!==e)),b(t=>{let{[e]:n,...r}=t;return r}),n?.disconnect&&await n.disconnect(),t?.clearCredentials&&n?.clearStorage&&await n.clearStorage(),l){let{clearRpcLogs:t}=await Promise.resolve().then(()=>(ik(),YO));t(e)}d?.(e)},[l,d]),ae=(0,z.useCallback)(async(e,t)=>{let n=h.find(t=>t.id===e);if(!n){ej.warn(`[McpClientProvider] Cannot update server "${e}" - not found`);return}let r={...n.options,...t};nj(YA(n.options),YA(r))||(await w.current.find(t=>t.id===e)?.disconnect(),v(t=>t.filter(t=>t.id!==e)),g(t=>t.map(t=>t.id===e?{id:e,options:r}:t)),b(t=>({...t,[e]:(t[e]??0)+1})))},[h]),O=(0,z.useCallback)(async e=>{if(!h.find(t=>t.id===e)){ej.warn(`[McpClientProvider] Cannot reconnect server "${e}" - not found`);return}await w.current.find(t=>t.id===e)?.disconnect(),v(t=>t.filter(t=>t.id!==e)),b(t=>({...t,[e]:(t[e]??0)+1}))},[h]),k=(0,z.useCallback)(async(e,t)=>new Promise(n=>{let r=h.find(t=>t.id===e);if(!r){ej.warn(`[McpClientProvider] Cannot update server metadata for "${e}" - not found`),n();return}let i={...r.options,displayName:t.name};v(n=>n.map(n=>n.id===e?{...n,displayName:t.name}:n)),g(t=>{let r=t.map(t=>t.id===e?{id:e,options:i}:t);return setTimeout(()=>n(),0),r})}),[h]),A=(0,z.useCallback)(e=>_.find(t=>t.id===e),[_]),oe=(0,z.useMemo)(()=>({servers:_,addServer:ie,removeServer:D,updateServerMetadata:k,updateServer:ae,getServer:A,storageLoaded:x}),[_,ie,D,k,ae,A,x]),{capabilities:se,...ce}=s||{},j=(0,z.useMemo)(()=>Object.keys(ce).length?ce:void 0,[s]),M=(0,z.useMemo)(()=>h.map(e=>{let t=o?{...o,...e.options}:e.options;return se&&(t={...t,clientOptions:{...t.clientOptions,capabilities:{...se,...t.clientOptions?.capabilities}}}),{id:e.id,options:t}}),[h,se,o]),N=typeof window<`u`&&/\/oauth\/callback\/?$/.test(window.location.pathname);return z.createElement(tj.Provider,{value:oe},e,!N&&M.map(e=>z.createElement(ij,{key:`${e.id}-v${y[e.id]??0}`,id:e.id,options:e.options,defaultCallbackUrl:n,defaultOAuthProxyUrl:r,defaultProxyConfig:i,defaultAutoProxyFallback:a,clientInfo:j,cachedMetadata:T.current[e.id],onUpdate:re,onUpdateConfig:ae,onUpdateDisplayName:(e,t)=>k(e,{name:t}),onReconnect:O,rpcWrapTransport:E,onGlobalSamplingRequest:p,onGlobalElicitationRequest:m})))}function oj(){let e=(0,z.useContext)(tj);if(!e)throw Error(`useMcpClient must be used within a McpClientProvider`);return e}var sj=class{constructor(e=`mcp-client-servers`){this.storageKey=e,this.metadataKey=`${e}-metadata`}metadataKey;getServers(){try{let e=localStorage.getItem(this.storageKey);return e?JSON.parse(e):{}}catch(e){return console.error(`[LocalStorageProvider] Failed to load servers:`,e),{}}}setServers(e){try{localStorage.setItem(this.storageKey,JSON.stringify(e))}catch(e){console.error(`[LocalStorageProvider] Failed to save servers:`,e)}}setServer(e,t){let n=this.getServers();n[e]=t,this.setServers(n)}removeServer(e){let t=this.getServers();delete t[e],this.setServers(t),this.removeServerMetadata(e)}clear(){try{localStorage.removeItem(this.storageKey),localStorage.removeItem(this.metadataKey)}catch(e){console.error(`[LocalStorageProvider] Failed to clear:`,e)}}getAllMetadata(){try{let e=localStorage.getItem(this.metadataKey);return e?JSON.parse(e):{}}catch(e){return console.error(`[LocalStorageProvider] Failed to load metadata:`,e),{}}}setAllMetadata(e){try{localStorage.setItem(this.metadataKey,JSON.stringify(e))}catch(e){console.error(`[LocalStorageProvider] Failed to save metadata:`,e)}}getServerMetadata(e){return this.getAllMetadata()[e]}setServerMetadata(e,t){let n=this.getAllMetadata();n[e]={...t,cachedAt:Date.now()},this.setAllMetadata(n)}removeServerMetadata(e){let t=this.getAllMetadata();delete t[e],this.setAllMetadata(t)}};ik();function cj(e){let t={};if(!e)return t;for(let[n,r]of Object.entries(e))if(typeof r==`string`&&(r.trim().startsWith(`[`)||r.trim().startsWith(`{`)))try{t[n]=JSON.parse(r)}catch{t[n]=r}else t[n]=r;return t}var lj=`<script>
|
|
204
204
|
(function () {
|
|
205
205
|
var files = new Map();
|
|
206
206
|
window.openai = window.openai || {};
|
|
@@ -496,4 +496,4 @@ Please change the parent <Route path="${e}"> to <Route path="${e===`/`?`*`:`${e}
|
|
|
496
496
|
# (optional) Use environment variables instead:
|
|
497
497
|
# env_http_headers = { `;let e=i.map(({name:e,header:t})=>`"${t}" = "${e}"`);r+=e.join(`, `),r+=` }`}}return{config:r,envVars:i}}function _L(e){if(e.length===0)return``;let t=`Set these environment variables in your shell:
|
|
498
498
|
|
|
499
|
-
`;for(let{name:n}of e)t+=`export ${n}="your-${n}-value"\n`;return t}function vL({className:e,size:t=`md`}){return(0,R.jsxs)(`svg`,{viewBox:`0 0 500 500`,className:L(`text-current`,{sm:`h-4 w-4`,md:`h-5 w-5`,lg:`h-6 w-6`}[t],e),fill:`currentColor`,fillRule:`nonzero`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,R.jsx)(`path`,{d:`M105.933 0C164.437 0.000116002 211.865 47.607 211.865 106.333C211.865 131.829 210.493 158.403 221.068 181.602L228.975 198.947C243.584 230.997 269.265 256.7 301.303 271.336L316.155 278.121C340.142 289.079 367.694 287.335 394.066 287.335C452.571 287.335 499.999 334.942 499.999 393.668C499.999 452.394 452.571 500.001 394.066 500.001C335.562 500.001 288.134 452.394 288.134 393.668C288.134 368.974 289.24 343.275 278.992 320.807L270.586 302.38C255.948 270.29 230.214 244.565 198.118 229.939L180.164 221.758C157.282 211.331 131.078 212.666 105.933 212.666C47.4278 212.666 4.86252e-05 165.059 0 106.333C0 47.607 47.4278 0 105.933 0Z`}),(0,R.jsx)(`circle`,{cx:`100.426`,cy:`399.575`,r:`100.426`}),(0,R.jsx)(`path`,{d:`M500 100.426C500 155.889 455.037 200.851 399.574 200.851C344.11 200.851 299.148 155.889 299.148 100.426C299.148 44.962 344.11 0 399.574 0C455.037 0 500 44.962 500 100.426Z`})]})}function yL({className:e}){return(0,R.jsx)(`svg`,{viewBox:`0 0 24 24`,className:e,fill:`currentColor`,xmlns:`http://www.w3.org/2000/svg`,children:(0,R.jsx)(`path`,{d:`M23.15 2.587L18.21.21a1.494 1.494 0 0 0-1.705.29l-9.46 8.63-4.12-3.128a.999.999 0 0 0-1.276.057L.327 7.261A1 1 0 0 0 .326 8.74L3.899 12 .326 15.26a1 1 0 0 0 .001 1.479L1.65 17.94a.999.999 0 0 0 1.276.057l4.12-3.128 9.46 8.63a1.492 1.492 0 0 0 1.704.29l4.942-2.377A1.5 1.5 0 0 0 24 20.06V3.939a1.5 1.5 0 0 0-.85-1.352zm-5.146 14.861L10.826 12l7.178-5.448v10.896z`})})}function bL({className:e}){return(0,R.jsxs)(`svg`,{fill:`currentColor`,fillRule:`evenodd`,viewBox:`0 0 24 24`,className:e,xmlns:`http://www.w3.org/2000/svg`,"aria-label":`ModelContextProtocol`,children:[(0,R.jsx)(`path`,{d:`M15.688 2.343a2.588 2.588 0 00-3.61 0l-9.626 9.44a.863.863 0 01-1.203 0 .823.823 0 010-1.18l9.626-9.44a4.313 4.313 0 016.016 0 4.116 4.116 0 011.204 3.54 4.3 4.3 0 013.609 1.18l.05.05a4.115 4.115 0 010 5.9l-8.706 8.537a.274.274 0 000 .393l1.788 1.754a.823.823 0 010 1.18.863.863 0 01-1.203 0l-1.788-1.753a1.92 1.92 0 010-2.754l8.706-8.538a2.47 2.47 0 000-3.54l-.05-.049a2.588 2.588 0 00-3.607-.003l-7.172 7.034-.002.002-.098.097a.863.863 0 01-1.204 0 .823.823 0 010-1.18l7.273-7.133a2.47 2.47 0 00-.003-3.537z`}),(0,R.jsx)(`path`,{d:`M14.485 4.703a.823.823 0 000-1.18.863.863 0 00-1.204 0l-7.119 6.982a4.115 4.115 0 000 5.9 4.314 4.314 0 006.016 0l7.12-6.982a.823.823 0 000-1.18.863.863 0 00-1.204 0l-7.119 6.982a2.588 2.588 0 01-3.61 0 2.47 2.47 0 010-3.54l7.12-6.982z`})]})}function xL({className:e}){return(0,R.jsx)(`svg`,{viewBox:`0 -28.5 256 256`,className:e,fill:`currentColor`,xmlns:`http://www.w3.org/2000/svg`,children:(0,R.jsx)(`path`,{d:`M216.856339,16.5966031 C200.285002,8.84328665 182.566144,3.2084988 164.041564,0 C161.766523,4.11318106 159.108624,9.64549908 157.276099,14.0464379 C137.583995,11.0849896 118.072967,11.0849896 98.7430163,14.0464379 C96.9108417,9.64549908 94.1925838,4.11318106 91.8971895,0 C73.3526068,3.2084988 55.6133949,8.86399117 39.0420583,16.6376612 C5.61752293,67.146514 -3.4433191,116.400813 1.08711069,164.955721 C23.2560196,181.510915 44.7403634,191.567697 65.8621325,198.148576 C71.0772151,190.971126 75.7283628,183.341335 79.7352139,175.300261 C72.104019,172.400575 64.7949724,168.822202 57.8887866,164.667963 C59.7209612,163.310589 61.5131304,161.891452 63.2445898,160.431257 C105.36741,180.133187 151.134928,180.133187 192.754523,160.431257 C194.506336,161.891452 196.298154,163.310589 198.110326,164.667963 C191.183787,168.842556 183.854737,172.420929 176.223542,175.320965 C180.230393,183.341335 184.861538,190.991831 190.096624,198.16893 C211.238746,191.588051 232.743023,181.531619 254.911949,164.955721 C260.227747,108.668201 245.831087,59.8662432 216.856339,16.5966031 Z M85.4738752,135.09489 C72.8290281,135.09489 62.4592217,123.290155 62.4592217,108.914901 C62.4592217,94.5396472 72.607595,82.7145587 85.4738752,82.7145587 C98.3405064,82.7145587 108.709962,94.5189427 108.488529,108.914901 C108.508531,123.290155 98.3405064,135.09489 85.4738752,135.09489 Z M170.525237,135.09489 C157.88039,135.09489 147.510584,123.290155 147.510584,108.914901 C147.510584,94.5396472 157.658606,82.7145587 170.525237,82.7145587 C183.391518,82.7145587 193.761324,94.5189427 193.539891,108.914901 C193.539891,123.290155 183.391518,135.09489 170.525237,135.09489 Z`,fillRule:`nonzero`})})}function SL({isOpen:e,onOpenChange:t,tools:n,prompts:r,resources:i,savedRequests:a,connections:o,selectedServer:s,tunnelUrl:c,onNavigate:l,onServerSelect:u}){let[d,f]=(0,z.useState)(``),[p,m]=(0,z.useState)(0),h=(0,z.useRef)(null),g=(0,z.useRef)(null),_=LN(),y=kt.pill,{activeIndex:b,itemRects:x,sessionRef:S,handlers:C,registerItem:w,measureItems:T}=_n(h),E=s?c?`${c}/mcp`:s.url:null,ee=s?.name||`MCP Server`,te=s?cM(s):void 0,ne=s?[{id:`open-in-cursor`,name:`Open in Cursor`,description:`Add this server to Cursor`,type:`global`,category:`Open in Client`,action:()=>{try{let e=lL(E,ee,te);window.location.href=e,IF.success(`Opening in Cursor...`),t(!1)}catch{IF.error(`Failed to open in Cursor`)}}},{id:`open-in-claude-code`,name:`Open in Claude Code`,description:`Add this server to Claude Code CLI`,type:`global`,category:`Open in Client`,action:()=>{let{command:e}=mL(E,ee,te);zj(e),IF.success(`Command copied to clipboard`),t(!1)}},{id:`open-in-claude-desktop`,name:`Open in Claude Desktop`,description:`Download .mcpb configuration file`,type:`global`,category:`Open in Client`,action:()=>{try{pL(E,ee,te),IF.success(`Downloaded .mcpb file`),t(!1)}catch{IF.error(`Failed to download configuration file`)}}},{id:`open-in-vscode`,name:`Open in VS Code`,description:`Add this server to VS Code`,type:`global`,category:`Open in Client`,action:()=>{try{let e=uL(E,ee,te);window.location.href=e,IF.success(`Opening in VS Code...`),t(!1)}catch{IF.error(`Failed to open in VS Code`)}}},{id:`open-in-vscode-insiders`,name:`Open in VS Code Insiders`,description:`Add this server to VS Code Insiders`,type:`global`,category:`Open in Client`,action:()=>{try{let e=dL(E,ee,te);window.location.href=e,IF.success(`Opening in VS Code Insiders...`),t(!1)}catch{IF.error(`Failed to open in VS Code Insiders`)}}},{id:`open-in-gemini`,name:`Open in Gemini CLI`,description:`Add this server to Gemini CLI`,type:`global`,category:`Open in Client`,action:()=>{let{command:e}=hL(E,ee,te);zj(e),IF.success(`Command copied to clipboard`),t(!1)}},{id:`open-in-codex`,name:`Open in Codex CLI`,description:`Add this server to Codex CLI`,type:`global`,category:`Open in Client`,action:()=>{let{config:e}=gL(E,ee,te);zj(e),IF.success(`Config copied to clipboard`),t(!1)}}]:[],re=[{id:`connect-server`,name:`Connect Server`,description:`Add a new MCP server connection`,type:`global`,category:`Navigation`,action:()=>_(`/`)},{id:`mcp-use-website`,name:`MCP Use Website`,description:`Visit mcp-use.com for tools and resources`,type:`global`,category:`Documentation`,action:()=>window.open(`https://mcp-use.com`,`_blank`)},{id:`mcp-use-docs`,name:`How to Create an MCP Server`,description:`Step-by-step guide to building MCP servers`,type:`global`,category:`Documentation`,action:()=>window.open(`https://mcp-use.com/docs`,`_blank`)},{id:`mcp-docs`,name:`MCP Official Documentation`,description:`Learn about the Model Context Protocol`,type:`global`,category:`Documentation`,action:()=>window.open(`https://modelcontextprotocol.io/docs/getting-started/intro`,`_blank`)},{id:`discord`,name:`Join Discord Community`,description:`Connect with the MCP community`,type:`global`,category:`Community`,action:()=>window.open(`https://discord.gg/XkNkSkMz3V`,`_blank`)},{id:`clear-localstorage`,name:`Clear localStorage & Reload`,description:`Having trouble connecting? Clear stored auth data and refresh`,type:`global`,category:`Troubleshooting`,action:()=>{let e=[];for(let t=0;t<localStorage.length;t++){let n=localStorage.key(t);n&&(n.startsWith(`mcp:auth`)||n.startsWith(`mcp-inspector`))&&e.push(n)}e.forEach(e=>localStorage.removeItem(e)),IF.success(`Cleared ${e.length} localStorage item(s). Refreshing page...`,{duration:2e3}),setTimeout(()=>{window.location.reload()},500),t(!1)}}],ie=o.map(e=>({id:`server-${e.id}`,name:Xj(e),description:`Connected server (${e.state})`,type:`global`,category:`Connected Servers`,metadata:{serverId:e.id,state:e.state},action:()=>u(e.id)})),D=[...re,...ne,...ie,...n.map(e=>({id:`tool-${e.name}`,name:e.name,description:e.description,type:`tool`,category:e._serverName?`Tools - ${e._serverName}`:`Tools`,metadata:{inputSchema:e.inputSchema,serverId:e._serverId,serverName:e._serverName}})),...r.map(e=>({id:`prompt-${e.name}`,name:e.name,description:e.description,type:`prompt`,category:e._serverName?`Prompts - ${e._serverName}`:`Prompts`,metadata:{arguments:e.arguments,serverId:e._serverId,serverName:e._serverName}})),...i.map(e=>({id:`resource-${e.uri}`,name:e.name,description:e.description,type:`resource`,category:e._serverName?`Resources - ${e._serverName}`:`Resources`,metadata:{uri:e.uri,mimeType:e.mimeType,serverId:e._serverId,serverName:e._serverName}})),...a.map(e=>({id:`saved-${e.id}`,name:e.name,description:`Saved request for ${e.toolName}`,type:`saved-request`,category:`Saved Requests`,metadata:{toolName:e.toolName,args:e.args,savedAt:e.savedAt,serverId:e.serverId,serverName:e.serverName}}))].filter(e=>d.trim()?`${e.name} ${e.description||``} ${e.category}`.toLowerCase().includes(d.trim().toLowerCase()):!0),ae=(0,z.useCallback)(e=>{if(console.warn(`[CommandPalette] Item selected:`,{itemType:e.type,itemName:e.name,itemId:e.id,metadata:e.metadata}),e.action)console.warn(`[CommandPalette] Executing action for global item`),e.action(),t(!1);else if(e.type===`global`)e.metadata?.serverId&&(console.warn(`[CommandPalette] Selecting server:`,e.metadata.serverId),u(e.metadata.serverId),t(!1));else{let n=e.type===`resource`?e.metadata?.uri:e.name,r=e.type===`tool`?`tools`:e.type===`prompt`?`prompts`:e.type===`saved-request`?`tools`:`resources`;console.warn(`[CommandPalette] Navigating to item:`,{tab:r,itemIdentifier:n,serverId:e.metadata?.serverId}),l(r,n,e.metadata?.serverId),t(!1)}},[l,t,u]),O=(e,t,n)=>{switch(e){case`tool`:return(0,R.jsx)(`div`,{className:`bg-blue-500/20 rounded-full p-2 flex items-center justify-center shrink-0`,children:(0,R.jsx)(Yi,{className:`h-4 w-4 text-blue-500`})});case`prompt`:return(0,R.jsx)(`div`,{className:`bg-purple-500/20 rounded-full p-2 flex items-center justify-center shrink-0`,children:(0,R.jsx)(yi,{className:`h-4 w-4 text-purple-500`})});case`resource`:return(0,R.jsx)(`div`,{className:`bg-green-500/20 rounded-full p-2 flex items-center justify-center shrink-0`,children:(0,R.jsx)(Qr,{className:`h-4 w-4 text-green-500`})});case`saved-request`:return(0,R.jsx)(`div`,{className:`bg-orange-500/20 rounded-full p-2 flex items-center justify-center shrink-0`,children:(0,R.jsx)(ri,{className:`h-4 w-4 text-orange-500`})});case`global`:if(t===`Navigation`)return(0,R.jsx)(`div`,{className:`bg-gray-500/20 rounded-full p-2 flex items-center justify-center shrink-0`,children:(0,R.jsx)(Ai,{className:`h-4 w-4 text-gray-600 dark:text-gray-300`})});if(t===`Open in Client`){if(n?.includes(`Cursor`))return(0,R.jsx)(`div`,{className:`bg-gray-200 dark:bg-gray-800 rounded-full p-2 flex items-center justify-center shrink-0`,children:(0,R.jsx)(`img`,{src:`https://cdn.simpleicons.org/cursor`,alt:`Cursor`,className:`h-4 w-4`})});if(n?.includes(`Claude Code`)||n?.includes(`Claude Desktop`))return(0,R.jsx)(`div`,{className:`bg-orange-500/20 rounded-full p-2 flex items-center justify-center shrink-0`,children:(0,R.jsx)(`img`,{src:`https://cdn.simpleicons.org/claude`,alt:`Claude`,className:`h-4 w-4`})});if(n?.includes(`VS Code`))return(0,R.jsx)(`div`,{className:`bg-blue-600/20 rounded-full p-2 flex items-center justify-center shrink-0`,children:(0,R.jsx)(yL,{className:`h-4 w-4 text-blue-600`})});if(n?.includes(`Gemini`))return(0,R.jsx)(`div`,{className:`bg-purple-500/20 rounded-full p-2 flex items-center justify-center shrink-0`,children:(0,R.jsx)(`img`,{src:`https://cdn.simpleicons.org/googlegemini`,alt:`Gemini`,className:`h-4 w-4`})});if(n?.includes(`Codex`))return(0,R.jsx)(`div`,{className:`bg-green-500/20 rounded-full p-2 flex items-center justify-center shrink-0`,children:(0,R.jsx)(`img`,{src:`https://inspector-cdn.mcp-use.com/providers/openai.png`,alt:`Codex`,className:`h-4 w-4`})})}return t===`Documentation`?n?.includes(`MCP Use`)||n?.includes(`mcp-use`)?(0,R.jsx)(`div`,{className:`bg-black/10 dark:bg-white/10 rounded-full p-2 flex items-center justify-center shrink-0`,children:(0,R.jsx)(vL,{className:`h-4 w-4 text-black dark:text-white`,size:`sm`})}):(0,R.jsx)(`div`,{className:`bg-orange-500/20 rounded-full p-2 flex items-center justify-center shrink-0`,children:(0,R.jsx)(Yr,{className:`h-4 w-4 text-orange-500`})}):t===`Community`?(0,R.jsx)(`div`,{className:`bg-purple-500/20 rounded-full p-2 flex items-center justify-center shrink-0`,children:(0,R.jsx)(xL,{className:`h-4 w-4 text-purple-500`})}):t===`Troubleshooting`?(0,R.jsx)(`div`,{className:`bg-yellow-500/20 rounded-full p-2 flex items-center justify-center shrink-0`,children:(0,R.jsx)(Pr,{className:`h-4 w-4 text-yellow-500`})}):t===`Connected Servers`?(0,R.jsx)(`div`,{className:`bg-cyan-500/20 rounded-full p-2 flex items-center justify-center shrink-0`,children:(0,R.jsx)(Fi,{className:`h-4 w-4 text-cyan-500`})}):(0,R.jsx)(`div`,{className:`bg-gray-500/20 rounded-full p-2 flex items-center justify-center shrink-0`,children:(0,R.jsx)(Yr,{className:`h-4 w-4 text-gray-500`})});default:return(0,R.jsx)(`div`,{className:`bg-gray-500/20 rounded-full p-2 flex items-center justify-center shrink-0`,children:(0,R.jsx)(v,{className:`h-4 w-4 text-gray-500`})})}};(0,z.useEffect)(()=>{e&&(f(``),m(0),requestAnimationFrame(()=>g.current?.focus()))},[e]),(0,z.useEffect)(()=>{h.current&&(h.current.scrollTop=0),m(0)},[d]),(0,z.useEffect)(()=>{p>=D.length&&m(Math.max(0,D.length-1))},[p,D.length]),(0,z.useLayoutEffect)(()=>{e&&T()},[e,T,D]);let k=x[p]??null,A=b===null?null:x[b],oe=b!==null&&b!==p;return e?(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`button`,{type:`button`,className:`fixed inset-0 z-50 bg-black/40 backdrop-blur-sm`,"aria-label":`Close command palette`,onClick:()=>t(!1)}),(0,R.jsxs)(`div`,{role:`dialog`,"aria-label":`Command Palette`,"data-testid":`command-palette-dialog`,className:`fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-[51] max-w-[640px] w-[calc(100vw-2rem)] sm:w-full p-2 bg-white dark:bg-zinc-900/90 backdrop-blur-xl rounded-xl overflow-hidden border border-border shadow-[var(--cmdk-shadow)] transition-transform duration-100 ease-out outline-none`,onKeyDown:e=>{e.key===`ArrowDown`?(e.preventDefault(),m(e=>Math.min(e+1,D.length-1))):e.key===`ArrowUp`?(e.preventDefault(),m(e=>Math.max(e-1,0))):e.key===`Enter`&&D[p]?(e.preventDefault(),ae(D[p])):e.key===`Escape`&&(e.preventDefault(),t(!1))},children:[(0,R.jsx)(`input`,{ref:g,placeholder:`What do you need?`,value:d,onChange:e=>f(e.target.value),className:`border-none w-full text-[17px] px-4 pt-2 pb-4 outline-none bg-transparent text-foreground border-b border-border mb-0 rounded-none placeholder:text-muted-foreground`,"data-testid":`command-palette-input`}),(0,R.jsxs)(`div`,{ref:h,onMouseEnter:C.onMouseEnter,onMouseMove:C.onMouseMove,onMouseLeave:C.onMouseLeave,className:`relative isolate min-h-[200px] sm:min-h-[330px] max-h-[400px] overflow-auto overscroll-contain transition-[height] duration-100 ease-out px-1`,"data-testid":`command-palette-list`,children:[(0,R.jsx)(en,{children:k&&(0,R.jsx)(Pe.div,{"aria-hidden":!0,className:L(`pointer-events-none absolute bg-active`,y.bg),initial:!1,animate:{top:k.top,left:k.left,width:k.width,height:k.height,opacity:oe?.8:1},exit:{opacity:0,transition:pt.moderate.exit},transition:{...pt.moderate,opacity:{duration:.08}}})}),(0,R.jsx)(en,{children:A&&(0,R.jsx)(Pe.div,{"aria-hidden":!0,className:L(`pointer-events-none absolute bg-hover`,y.bg),initial:{opacity:0,top:k?.top??A.top,left:k?.left??A.left,width:k?.width??A.width,height:k?.height??A.height},animate:{opacity:1,top:A.top,left:A.left,width:A.width,height:A.height},exit:{opacity:0,transition:pt.fast.exit},transition:{...pt.fast,opacity:{duration:.08}}},S.current)}),D.length===0?(0,R.jsx)(`div`,{className:`text-sm flex items-center justify-center h-12 whitespace-pre-wrap text-muted-foreground`,children:`No results found.`}):D.map((e,t)=>(0,R.jsxs)(`button`,{ref:e=>w(t,e),type:`button`,"data-testid":`command-palette-item-${e.id}`,"data-proximity-index":t,onClick:()=>ae(e),className:`[content-visibility:auto] relative z-10 cursor-pointer h-12 text-sm flex items-center gap-3 px-3 text-foreground select-none w-full text-left mt-1 first:mt-0`,children:[O(e.type,e.category,e.name),(0,R.jsx)(`span`,{className:`font-medium truncate flex-1 min-w-0`,children:e.name}),(()=>{let t=e.metadata?.serverId;if(!t||e.category===`Connected Servers`)return null;let n=o.find(e=>e.id===t);return n?(0,R.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0 text-muted-foreground`,children:[(0,R.jsx)(ZI,{server:n,size:`xs`}),(0,R.jsx)(`span`,{className:`text-xs truncate max-w-[9rem]`,children:Xj(n)})]}):null})()]},e.id))]}),(0,R.jsxs)(`div`,{className:`border-t border-border px-4 py-3 pb-1 flex items-center justify-between text-xs text-muted-foreground `,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,R.jsx)(`span`,{className:`inline-flex items-center justify-center w-5 h-5 font-mono font-medium rounded shadow-sm bg-white dark:bg-zinc-800 border border-zinc-200 dark:border-zinc-700 text-foreground leading-none`,children:`t`}),(0,R.jsx)(`span`,{children:`Tools`})]}),(0,R.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,R.jsx)(`span`,{className:`inline-flex items-center justify-center w-5 h-5 font-mono font-medium rounded shadow-sm bg-white dark:bg-zinc-800 border border-zinc-200 dark:border-zinc-700 text-foreground leading-none`,children:`p`}),(0,R.jsx)(`span`,{children:`Prompts`})]}),(0,R.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,R.jsx)(`span`,{className:`inline-flex items-center justify-center w-5 h-5 font-mono font-medium rounded shadow-sm bg-white dark:bg-zinc-800 border border-zinc-200 dark:border-zinc-700 text-foreground leading-none`,children:`r`}),(0,R.jsx)(`span`,{children:`Resources`})]}),(0,R.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,R.jsx)(`span`,{className:`inline-flex items-center justify-center w-5 h-5 font-mono font-medium rounded shadow-sm bg-white dark:bg-zinc-800 border border-zinc-200 dark:border-zinc-700 text-foreground leading-none`,children:`c`}),(0,R.jsx)(`span`,{children:`Chat`})]})]}),(0,R.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,R.jsx)(`span`,{className:`inline-flex items-center justify-center w-5 h-5 font-mono font-medium rounded shadow-sm bg-white dark:bg-zinc-800 border border-zinc-200 dark:border-zinc-700 text-foreground leading-none`,children:`h`}),(0,R.jsx)(`span`,{children:`Home`})]}),(0,R.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,R.jsx)(`span`,{className:`inline-flex items-center justify-center px-2 h-5 font-mono text-[10px] font-medium rounded shadow-sm bg-white dark:bg-zinc-800 border border-zinc-200 dark:border-zinc-700 text-foreground leading-none`,children:`esc`}),(0,R.jsx)(`span`,{children:`Close`})]})]})]})]})]}):null}var CL=`openid profile email offline_access`,wL=`mcp-inspector:manufact-auth`,TL=`manufact:session-changed`,EL={loaded:!0,authorizing:!1,accessToken:null,user:null,mode:null},DL=new Map,OL=new Set,kL=new Map,AL=new Map,jL=null,ML=!1;typeof window<`u`&&window.addEventListener(`message`,e=>{if(e.data?.type!==`manufact:invalidate-oauth-client`)return;for(let e of DL.keys())PL()?.removeItem(BL(e,`client`));let t=jL;!t||ML||(ML=!0,cR(t,{isRetry:!0}).finally(()=>{ML=!1}))});function NL(e){let t=DL.get(e);if(t)return t;let n={...EL,loaded:!1};return DL.set(e,n),n}function PL(){return typeof window>`u`?null:window.localStorage}function FL(e){return new URL(e).origin}function IL(e,t){let n=new URL(e),r=new URL(t),i=new Set([`localhost`,`127.0.0.1`]);return i.has(n.hostname)&&i.has(r.hostname)?n.origin===r.origin:(n.hostname===`manufact.com`||n.hostname.endsWith(`.manufact.com`))&&(r.hostname===`manufact.com`||r.hostname.endsWith(`.manufact.com`))}function LL(e){let t=window.__MANUFACT_LOGIN_URL__;if(t)return new URL(t).origin;let n=new URL(e);return n.hostname===`localhost`||n.hostname===`127.0.0.1`?`${n.protocol}//${n.hostname}:3000`:`${n.protocol}//manufact.com`}function RL(e){return`${LL(e)}/login`}function zL(e){return`${LL(e)}/auth/embedded-sign-out`}function BL(e,t){return`${wL}:${t}:${e}`}function VL(e){return PL()?.getItem(BL(e,`skip-session`))===`1`}function HL(e,t){let n=BL(e,`skip-session`);t?PL()?.setItem(n,`1`):PL()?.removeItem(n)}function UL(e){return`${wL}:state:${e}`}function WL(e){let t=PL()?.getItem(e);if(!t)return null;try{return JSON.parse(t)}catch{return PL()?.removeItem(e),null}}function GL(e,t){PL()?.setItem(e,JSON.stringify(t))}function KL(e,t){DL.set(e,{...DL.get(e)??EL,...t}),OL.forEach(e=>e()),window.dispatchEvent(new CustomEvent(TL))}function qL(e){let t=``;return e.forEach(e=>{t+=String.fromCharCode(e)}),btoa(t).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}function JL(e=32){let t=new Uint8Array(e);return crypto.getRandomValues(t),qL(t)}async function YL(e){let t=await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(e));return qL(new Uint8Array(t))}async function XL(e){let t=await fetch(`${e}/api/auth/.well-known/openid-configuration`);if(!t.ok)throw Error(`Manufact OAuth discovery failed`);return await t.json()}function ZL(){return`${window.location.origin}${Wj()}/auth/callback`}function QL(e){return e===`localhost`||e===`127.0.0.1`}function $L(e){try{let t=new URL(e).hostname,n=typeof window<`u`?new URL(window.location.href).hostname:``;return QL(t)&&QL(n)}catch{return!1}}async function eR(e,t,n){let r=new URL(`${e}/api/auth/oauth2/authorize`);r.searchParams.set(`response_type`,`code`),r.searchParams.set(`client_id`,t),r.searchParams.set(`redirect_uri`,n),r.searchParams.set(`scope`,CL),r.searchParams.set(`code_challenge`,await YL(JL(32))),r.searchParams.set(`code_challenge_method`,`S256`),r.searchParams.set(`state`,`client-probe`),r.searchParams.set(`prompt`,`none`);try{let e=await fetch(r.toString(),{method:`GET`,redirect:`manual`,credentials:`include`}),t=e.headers.get(`location`)??``;return t.includes(`/auth/error`)&&t.includes(`invalid_client`)?!1:e.status>=300&&e.status<400||e.type===`opaqueredirect`?!!t&&!t.includes(`/auth/error`):!0}catch{return!1}}async function tR(e,t){let n=ZL(),r=BL(e,`client`),i=WL(r),a=$L(e);if(!a&&i?.client_id&&i.redirect_uri===n){if(await eR(e,i.client_id,n))return i;PL()?.removeItem(r)}else a&&i?.client_id&&PL()?.removeItem(r);if(!t.registration_endpoint)throw Error(`Manufact OAuth registration is unavailable`);let o=await fetch(t.registration_endpoint,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({client_name:`mcp-use Inspector`,redirect_uris:[n],grant_types:[`authorization_code`,`refresh_token`],response_types:[`code`],token_endpoint_auth_method:`none`,scope:CL})});if(!o.ok)throw Error(`Could not register Inspector with Manufact`);let s=await o.json();if(!s.client_id)throw Error(`Manufact returned no OAuth client ID`);let c={...s,redirect_uri:n};return GL(r,c),c}async function nR(e,t){let n=await fetch(e,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:new URLSearchParams(t)}),r=await n.json().catch(()=>({}));if(!n.ok||!r.access_token)throw Error(r.error_description??`Manufact token exchange failed`);return{access_token:r.access_token,refresh_token:r.refresh_token,token_type:r.token_type,expires_at:Date.now()+(r.expires_in??3600)*1e3}}async function rR(e,t){if(!t.refresh_token)return null;let n=AL.get(e);if(n)return n;let r=(async()=>{try{let n=await XL(e),r=WL(BL(e,`client`));if(!r?.client_id)return null;let i=await nR(n.token_endpoint,{grant_type:`refresh_token`,refresh_token:t.refresh_token,client_id:r.client_id}),a={...i,refresh_token:i.refresh_token??t.refresh_token};return GL(BL(e,`tokens`),a),a}catch{return PL()?.removeItem(BL(e,`tokens`)),null}finally{AL.delete(e)}})();return AL.set(e,r),r}async function iR(e){let t=WL(BL(e,`tokens`));return t?.access_token?t.expires_at>Date.now()+3e4?t:rR(e,t):null}async function aR(e,t){let n=await XL(e);if(!n.userinfo_endpoint)return null;let r=await fetch(n.userinfo_endpoint,{headers:{Authorization:`Bearer ${t}`}});if(!r.ok)return null;let i=await r.json();return i.sub?{id:i.sub,name:i.name,email:i.email,image:i.picture}:null}async function oR(e){try{let t=await fetch(`${e}/api/auth/get-session`,{credentials:`include`});return t.ok?(await t.json())?.user??null:null}catch{return null}}async function sR(e){let t=kL.get(e);if(t)return t;DL.set(e,{...DL.get(e)??EL,loaded:!1});let n=(async()=>{try{let t=IL(typeof window<`u`?window.location.href:e,e),n=VL(e),r=await iR(e),i=r?await aR(e,r.access_token):null;if(i&&r){HL(e,!1),KL(e,{loaded:!0,accessToken:r.access_token,user:i,mode:`oauth`});return}r&&!i&&PL()?.removeItem(BL(e,`tokens`));let a=t&&!n?await oR(e):null;if(a){KL(e,{loaded:!0,accessToken:null,user:a,mode:`session`});return}KL(e,{loaded:!0,accessToken:null,user:null,mode:null})}catch{KL(e,{loaded:!0,accessToken:null,user:null,mode:null})}})().finally(()=>kL.delete(e));return kL.set(e,n),n}async function cR(e,t){let n=FL(e);jL=e,HL(n,!1);let r=window.open(``,`manufact-oauth`,`width=600,height=700,resizable=yes,scrollbars=yes`);if(!r)throw Error(`Allow popups to sign in with Manufact`);if(KL(n,{authorizing:!0}),IL(window.location.href,n)){r.location.href=RL(n);let e=window.setInterval(async()=>{if(r.closed){window.clearInterval(e),KL(n,{authorizing:!1});return}let t=await oR(n);t&&(window.clearInterval(e),r.close(),KL(n,{loaded:!0,authorizing:!1,accessToken:null,user:t,mode:`session`}))},1e3);return}try{let e=await XL(n),t=await tR(n,e),i=JL(64),a=JL(),o=ZL();GL(UL(a),{authOrigin:n,clientId:t.client_id,redirectUri:o,codeVerifier:i,expiresAt:Date.now()+600*1e3});let s=new URL(e.authorization_endpoint);s.searchParams.set(`response_type`,`code`),s.searchParams.set(`client_id`,t.client_id),s.searchParams.set(`redirect_uri`,o),s.searchParams.set(`scope`,CL),s.searchParams.set(`state`,a),s.searchParams.set(`code_challenge`,await YL(i)),s.searchParams.set(`code_challenge_method`,`S256`),s.searchParams.set(`prompt`,`consent`),r.location.href=s.toString();let c=window.setInterval(()=>{r.closed&&(window.clearInterval(c),sR(n).finally(()=>KL(n,{authorizing:!1})))},500)}catch(e){throw r.close(),KL(n,{authorizing:!1}),e}}async function lR(e=new URL(window.location.href)){let t=e.searchParams.get(`state`),n=e.searchParams.get(`code`),r=e.searchParams.get(`error_description`)??e.searchParams.get(`error`);if(r)throw Error(r);if(!t||!n)throw Error(`Missing OAuth code or state`);let i=UL(t),a=WL(i);if(PL()?.removeItem(i),!a||a.expiresAt<Date.now())throw Error(`OAuth state is invalid or expired`);let o=await nR((await XL(a.authOrigin)).token_endpoint,{grant_type:`authorization_code`,code:n,redirect_uri:a.redirectUri,client_id:a.clientId,code_verifier:a.codeVerifier});GL(BL(a.authOrigin,`tokens`),o),HL(a.authOrigin,!1);let s=await aR(a.authOrigin,o.access_token);KL(a.authOrigin,{loaded:!0,authorizing:!1,accessToken:o.access_token,user:s,mode:`oauth`}),window.opener?.postMessage({type:`manufact:oauth-complete`,authOrigin:a.authOrigin},window.location.origin)}function uR(e){let t=FL(e);PL()?.removeItem(BL(t,`tokens`)),KL(t,{loaded:!0,authorizing:!1,accessToken:null,user:null,mode:null})}async function dR(e){let t=WL(BL(e,`tokens`)),n=WL(BL(e,`client`)),r=t?.refresh_token??t?.access_token;if(!n?.client_id||!r)return null;try{let i=(await XL(e)).revocation_endpoint??`${e}/api/auth/oauth2/revoke`;return(await fetch(i,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:new URLSearchParams({client_id:n.client_id,token:r,token_type_hint:t?.refresh_token?`refresh_token`:`access_token`})})).status}catch{return-1}}async function fR(e){let t=LL(e),n=window.open(zL(e),`manufact-sign-out`,`width=420,height=320`);return n?new Promise(r=>{let i=!1,a=e=>{i||(i=!0,window.clearTimeout(o),window.clearInterval(c),window.removeEventListener(`message`,s),r(e))},o=window.setTimeout(()=>{a({attempted:!0,signOutOk:!1,signOutStatus:null})},3e4),s=e=>{e.origin===t&&e.data?.type===`manufact:sign-out-complete`&&a({attempted:!0,signOutOk:!0,signOutStatus:200})},c=window.setInterval(()=>{n.closed&&oR(e).then(e=>{a({attempted:!0,signOutOk:!e,signOutStatus:e?401:200})})},500);window.addEventListener(`message`,s)}):{attempted:!0,signOutOk:!1,signOutStatus:null}}async function pR(e,t){let n=FL(e),r=!!WL(BL(n,`tokens`))?.access_token;t===`oauth`||r?(await dR(n),HL(n,!0)):t===`session`&&(await fR(n),HL(n,!1)),uR(e)}function mR(e){let t=e?FL(e):null,n=(0,z.useSyncExternalStore)((0,z.useCallback)(e=>(OL.add(e),()=>OL.delete(e)),[]),(0,z.useCallback)(()=>t?NL(t):EL,[t]),()=>EL);return(0,z.useEffect)(()=>{if(!t)return;sR(t);let e=e=>{e.origin===window.location.origin&&e.data?.type===`manufact:oauth-complete`&&e.data.authOrigin===t&&sR(t).finally(()=>KL(t,{authorizing:!1}))},n=e=>{e.key!==BL(t,`tokens`)||!e.newValue||sR(t).finally(()=>KL(t,{authorizing:!1}))};return window.addEventListener(`message`,e),window.addEventListener(`storage`,n),()=>{window.removeEventListener(`message`,e),window.removeEventListener(`storage`,n)}},[t]),{...n,authorize:(0,z.useCallback)(async()=>{e&&await cR(e)},[e]),logout:(0,z.useCallback)(async()=>{e&&await pR(e,n.mode)},[e,n.mode])}}var hR=(0,z.lazy)(()=>lS(()=>import(`./ChatTab-CCCw6oWr.js`).then(e=>({default:e.ChatTab})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]))),gR=(0,z.lazy)(()=>lS(()=>import(`./ToolsTab-Dor-SLgL.js`).then(e=>({default:e.ToolsTab})),__vite__mapDeps([20,1,2,3,5,6,4,7,8,21,22,23,13,19,18,24,25,26,10,27,28,29,16,17]))),_R=(0,z.lazy)(()=>lS(()=>import(`./PromptsTab-C7rfVPpA.js`).then(e=>({default:e.PromptsTab})),__vite__mapDeps([30,1,2,3,5,6,4,7,8,24,26,10,27,28,29,11,12,19]))),vR=(0,z.lazy)(()=>lS(()=>import(`./ResourcesTab-CWAPZqDe.js`).then(e=>({default:e.ResourcesTab})),__vite__mapDeps([31,1,2,3,5,7,21,6,4,8,22,23,13,19,18,32,24,25,26,10,27,28,14,17]))),yR=(0,z.lazy)(()=>lS(()=>import(`./SamplingTab-BHNlVvQn.js`).then(e=>({default:e.SamplingTab})),__vite__mapDeps([33,1,2,3,5,6,4,7,8,26,10,27,22,23,13,14,19]))),bR=(0,z.lazy)(()=>lS(()=>import(`./ElicitationTab-h5zlfVfn.js`).then(e=>({default:e.ElicitationTab})),__vite__mapDeps([34,1,2,3,5,8,26,10,27,22,15,12,19]))),xR=(0,z.lazy)(()=>lS(()=>import(`./NotificationsTab-GLHnHHZG.js`).then(e=>({default:e.NotificationsTab})),__vite__mapDeps([35,1,2,3,32,25,26,5,10,27,28]))),SR=(0,z.lazy)(()=>lS(()=>import(`./ServerMetadataTab-BPfRsmSt.js`).then(e=>({default:e.ServerMetadataTab})),__vite__mapDeps([36,1,5,2,3,9,7,8,27,10,37]))),CR=(0,z.lazy)(()=>lS(()=>import(`./ConnectionSettingsTab-DHOW1I8A.js`).then(e=>({default:e.ConnectionSettingsTab})),__vite__mapDeps([38,1,2,3,5,27,10,37])));function wR({children:e}){return(0,R.jsx)(z.Suspense,{fallback:(0,R.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,R.jsx)(XI,{className:`size-6`})}),children:e})}var TR=`anthropic/claude-sonnet-4.6`;function ER({isLoopback:e,chatApiUrl:t}){return e&&!!t}function DR(e,t,n=!1,r){let i=e.replace(/\/chat\/stream\/?$/,`/llm`);return{provider:`openai-compatible`,model:r??`anthropic/claude-sonnet-4.6`,apiKey:t??`server-managed`,baseUrl:i,...n?{credentials:`include`}:{}}}function OR(e){return e?{Authorization:`Bearer ${e}`}:void 0}var kR=`mcp-inspector:managed-model`;function AR(e){return`${kR}:${e}`}function jR(e){try{return localStorage.getItem(AR(e))}catch{return null}}function MR(e,t,n,r){let i=e?new URL(e).origin:null,[a,o]=(0,z.useState)([]),[s,c]=(0,z.useState)(TR),[l,u]=(0,z.useState)(()=>i?jR(i)??`anthropic/claude-sonnet-4.6`:TR),[d,f]=(0,z.useState)(!1),p=(0,z.useCallback)(e=>{if(u(e),i)try{localStorage.setItem(AR(i),e)}catch{}},[i]);return(0,z.useEffect)(()=>{if(!r||!i)return;let e=!1;return f(!0),(async()=>{try{let r=OR(t),a=await fetch(`${i}/api/v1/models`,{headers:r,credentials:n===`session`?`include`:`same-origin`});if(!a.ok)return;let s=await a.json();if(e)return;let l=s.models??[];o(l);let d=s.defaultModelId??`anthropic/claude-sonnet-4.6`;c(d);let f=new Set(l.map(e=>e.id)),p=jR(i);p&&f.has(p)?u(p):f.has(d)?u(d):l[0]&&u(l[0].id)}finally{e||f(!1)}})(),()=>{e=!0}},[r,i,t,n]),{models:a,selectedModelId:l,setSelectedModelId:p,isLoading:d,selectedModel:a.find(e=>e.id===l)??null,defaultModelId:s}}var NR=[`tools`,`prompts`,`resources`,`chat`,`sampling`,`elicitation`,`notifications`,`server-metadata`,`connection-settings`];function PR(e){return NR.includes(e)?e:`tools`}function FR({selectedServer:e,activeTab:t,toolsSearchRef:n,promptsSearchRef:r,resourcesSearchRef:i,onUpdateConnection:a,children:o}){let{embeddedConfig:s}=nL(),c=PR(t),[l,u]=(0,z.useState)(()=>new Set([c]));(0,z.useEffect)(()=>{let e=PR(t);u(t=>t.has(e)?t:new Set(t).add(e))},[t]);let{accessToken:d,mode:f,user:p}=mR(s.chatApiUrl),m=OR(d),h=f===`session`?`include`:void 0,g=p!=null,_=s.chatApiUrl,v=!!e?.url&&qj(e.url),y=e?ER({isLoopback:v,chatApiUrl:s.chatApiUrl,enableFreeTierUpgrade:s.chatEnableFreeTierUpgrade}):!1,b=MR(_,d,f,!!e&&!!_&&g),x=y?DR(_,d,f===`session`,g?b.selectedModelId:void 0):s.managedLlmConfig??(_&&!v?{provider:`anthropic`,model:`claude-haiku-4-5`,apiKey:`server-managed`}:void 0);if(!e&&s.forceConnected)return s.chatApiUrl?(0,R.jsx)(wR,{children:(0,R.jsx)(hR,{connection:{id:`force-connected`,url:``,displayName:``,name:``,state:`ready`,tools:[],prompts:[],resources:[]},isConnected:!0,prompts:[],serverId:`force-connected`,callPrompt:async()=>({messages:[]}),readResource:async()=>({contents:[]}),useClientSide:!1,chatApiUrl:s.chatApiUrl,extraHeaders:m,credentials:h,managedLlmConfig:s.managedLlmConfig??{provider:`anthropic`,model:`claude-haiku-4-5`,apiKey:`server-managed`},enableFreeTierUpgrade:s.chatEnableFreeTierUpgrade,hideTitle:s.chatHideTitle,hideModelBadge:s.chatHideModelBadge??!0,hideServerUrl:s.chatHideServerUrl??!0,clearButtonLabel:s.chatClearButtonLabel,clearButtonHideIcon:s.chatClearButtonHideIcon,clearButtonHideShortcut:s.chatClearButtonHideShortcut,clearButtonVariant:s.chatClearButtonVariant,chatQuickQuestions:s.chatQuickQuestions,chatFollowups:s.chatFollowups,hideClearButton:s.chatHideClearButton,hideToolSelector:s.chatHideToolSelector,enableKeyboardShortcuts:!1},`chat-force-connected`)}):(0,R.jsx)(R.Fragment,{children:o});if(!e)return(0,R.jsx)(R.Fragment,{children:o});let S=e=>s.visibleTabs?s.visibleTabs.includes(e):!0,C=NR;return(0,R.jsxs)(wR,{children:[S(`tools`)&&l.has(`tools`)&&(0,R.jsx)(`div`,{style:{display:t===`tools`?`block`:`none`},className:`h-full`,children:(0,R.jsx)(gR,{ref:n,tools:e.tools,callTool:e.callTool,readResource:e.readResource,serverId:e.id,isConnected:e.state===`ready`,refreshTools:e.refreshTools},`tools-${e.id}`)}),S(`prompts`)&&l.has(`prompts`)&&(0,R.jsx)(`div`,{style:{display:t===`prompts`?`block`:`none`},className:`h-full`,children:(0,R.jsx)(_R,{ref:r,prompts:e.prompts,callPrompt:(t,n)=>e.getPrompt(t,n?Object.fromEntries(Object.entries(n).map(([e,t])=>[e,typeof t==`string`?t:String(t??``)])):void 0),serverId:e.id,isConnected:e.state===`ready`,refreshPrompts:e.refreshPrompts},`prompts-${e.id}`)}),S(`resources`)&&l.has(`resources`)&&(0,R.jsx)(`div`,{style:{display:t===`resources`?`block`:`none`},className:`h-full`,children:(0,R.jsx)(vR,{ref:i,resources:e.resources,readResource:e.readResource,serverId:e.id,isConnected:e.state===`ready`,mcpServerUrl:e.url||``,refreshResources:e.refreshResources},`resources-${e.id}`)}),S(`chat`)&&l.has(`chat`)&&(0,R.jsx)(`div`,{style:{display:t===`chat`?`block`:`none`},className:`h-full`,children:(0,R.jsx)(hR,{connection:e,isConnected:s.forceConnected||e.state===`ready`,prompts:e.prompts,serverId:e.id,callPrompt:(t,n)=>e.getPrompt(t,n?Object.fromEntries(Object.entries(n).map(([e,t])=>[e,typeof t==`string`?t:String(t??``)])):void 0),readResource:e.readResource,useClientSide:y||!_,chatApiUrl:_,extraHeaders:m,credentials:s.chatCredentials??h,managedLlmConfig:x,managedCloudModel:b,enableFreeTierUpgrade:s.chatEnableFreeTierUpgrade,hideTitle:s.chatHideTitle,hideModelBadge:s.chatHideModelBadge??!1,hideServerUrl:s.chatHideServerUrl??!!_,clearButtonLabel:s.chatClearButtonLabel,clearButtonHideIcon:s.chatClearButtonHideIcon,clearButtonHideShortcut:s.chatClearButtonHideShortcut,clearButtonVariant:s.chatClearButtonVariant,chatQuickQuestions:s.chatQuickQuestions,chatFollowups:s.chatFollowups,hideClearButton:s.chatHideClearButton,hideToolSelector:s.chatHideToolSelector,streamProtocol:s.chatStreamProtocol},`chat-${e.id}`)}),S(`sampling`)&&l.has(`sampling`)&&(0,R.jsx)(`div`,{style:{display:t===`sampling`?`block`:`none`},className:`h-full`,children:(0,R.jsx)(yR,{pendingRequests:e.pendingSamplingRequests,onApprove:e.approveSampling,onReject:e.rejectSampling,serverId:e.id,isConnected:e.state===`ready`,mcpServerUrl:e.url??``},`sampling-${e.id}`)}),S(`elicitation`)&&l.has(`elicitation`)&&(0,R.jsx)(`div`,{style:{display:t===`elicitation`?`block`:`none`},className:`h-full`,children:(0,R.jsx)(bR,{pendingRequests:e.pendingElicitationRequests,onApprove:e.approveElicitation,onReject:e.rejectElicitation,serverId:e.id,isConnected:e.state===`ready`},`elicitation-${e.id}`)}),S(`notifications`)&&l.has(`notifications`)&&(0,R.jsx)(`div`,{style:{display:t===`notifications`?`block`:`none`},className:`h-full`,children:(0,R.jsx)(xR,{notifications:e.notifications,unreadCount:e.unreadNotificationCount,markNotificationRead:e.markNotificationRead,markAllNotificationsRead:e.markAllNotificationsRead,clearNotifications:e.clearNotifications,serverId:e.id,isConnected:e.state===`ready`},`notifications-${e.id}`)}),S(`server-metadata`)&&l.has(`server-metadata`)&&(0,R.jsx)(`div`,{style:{display:t===`server-metadata`?`block`:`none`},className:`h-full`,children:(0,R.jsx)(SR,{connection:e},`server-metadata-${e.id}`)}),S(`connection-settings`)&&l.has(`connection-settings`)&&a&&(0,R.jsx)(`div`,{style:{display:t===`connection-settings`?`block`:`none`},className:`h-full`,children:(0,R.jsx)(CR,{connection:e,onSave:a},`connection-settings-${e.id}`)}),!C.includes(t)&&(0,R.jsx)(R.Fragment,{children:o})]})}var IR=z.createContext(void 0);function LR(){let e=z.use(IR);if(!e)throw Error(`useTabs must be used within a TabsProvider`);return e}var RR=z.createContext(void 0);function zR(){return z.use(RR)}function BR({ref:e,children:t,defaultValue:n,value:r,onValueChange:i,className:a,collapsed:o,onCollapsedChange:s,...c}){let[l,u]=z.useState(n||``),d=r!==void 0,f=o!==void 0,[p,m]=z.useState(!1),h=z.useCallback(e=>{d||u(e),i?.(e)},[d,i]);return(0,R.jsx)(IR,{value:{activeValue:d?r:l,handleValueChange:h,collapsed:f?o:p,handleCollapsedChange:z.useCallback(e=>{f||m(e),s?.(e)},[f,s])},children:(0,R.jsx)(`div`,{ref:e,className:L(`flex flex-col gap-2`,a),...c,children:t})})}BR.displayName=`Tabs`;function VR({ref:e,children:t,className:n,variant:r=`default`,collapsible:i=!1,...a}){let{activeValue:o,collapsed:s,handleCollapsedChange:c}=LR(),[l,u]=z.useState({width:0,left:0}),d=z.useRef(null),f=z.useRef(null),p=z.useRef(null),m=z.useCallback(()=>{let e=d.current;if(!e)return;let t=e.querySelector(`div:first-child`);if(!t)return;let n=t.querySelector(`button[data-tab-value="${o}"]`);if(n&&o){let e=t.getBoundingClientRect(),r=n.getBoundingClientRect();u({width:r.width,left:r.left-e.left})}else u({width:0,left:0})},[o]),h=z.useCallback(()=>{p.current&&clearTimeout(p.current),p.current=setTimeout(m,16)},[m]);z.useEffect(()=>{let e=setTimeout(m,10);return()=>clearTimeout(e)},[m,s]),z.useEffect(()=>{let e=d.current;if(!e)return;f.current=new ResizeObserver(()=>{h()}),f.current.observe(e);let t=e.querySelector(`div:first-child`);return t&&t.querySelectorAll(`button[data-tab-value]`).forEach(e=>{f.current&&f.current.observe(e)}),()=>{f.current&&f.current.disconnect(),p.current&&clearTimeout(p.current)}},[h]),z.useEffect(()=>{let e=()=>{h()};return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[h]);let g=z.useRef(null);return z.useEffect(()=>{g.current&&(g.current.style.width=`${l.width}px`,g.current.style.left=`${l.left}px`)},[l]),(0,R.jsx)(RR,{value:{variant:r,collapsed:s,handleCollapsedChange:c},children:(0,R.jsx)(`div`,{ref:d,className:L(`relative flex items-center bg-none gap-1`,r==="default"&&`p-1 rounded-full border border-zinc-300 dark:border-zinc-600`,r===`underline`&&`border-b border-zinc-200 dark:border-zinc-700`,n),...a,children:(0,R.jsxs)(`div`,{role:`tablist`,className:`flex-1 flex items-center relative`,children:[t,(0,R.jsx)(`span`,{ref:g,className:L(`absolute transition-all duration-[250ms] ease-in-out z-0`,r==="default"&&`bg-white dark:bg-zinc-700 rounded-full h-[calc(100%)] top-0 border border-zinc-300 dark:border-zinc-600`,r===`underline`&&`bottom-0 h-0.5 bg-black dark:bg-white`)})]})})})}VR.displayName=`TabsList`;var HR=({children:e,title:t,collapsed:n})=>!t||!n?e:(0,R.jsx)(Ve,{children:(0,R.jsxs)(et,{children:[(0,R.jsx)(we,{render:(0,R.jsx)(`span`,{className:`contents`,children:e}),nativeButton:!1}),(0,R.jsx)(lt,{children:t})]})}),UR=z.forwardRef(({children:e,value:t,className:n,disabled:r,icon:i,title:a,showDot:o=!1,alwaysExpanded:s=!1,iconOnly:c=!1,badge:l,...u},d)=>{let{activeValue:f,handleValueChange:p,collapsed:m}=LR(),h=zR()?.variant||`default`,g=f===t,_=!c&&(!m||g||s),v=c||m&&!_;return(0,R.jsx)(HR,{title:a,collapsed:m&&!_,children:(0,R.jsxs)(`button`,{ref:d,disabled:r,onClick:()=>p(t),"data-tab-value":t,"data-tab-active":g,role:`tab`,"aria-selected":g?`true`:`false`,title:m&&!_&&a?a:void 0,className:L(`relative z-10 inline-flex items-center justify-center whitespace-nowrap text-sm font-medium ring-offset-background transition-all duration-[250ms] ease-in-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 cursor-pointer`,c?`size-9 shrink-0 flex-none rounded-full p-0`:`flex-1`,h==="default"&&!c&&`py-2.5`,h==="default"&&!c&&`rounded-md px-4`,h===`underline`&&`px-6 py-3 border-b-2 border-transparent`,g&&`text-foreground`,!g&&`text-muted-foreground hover:text-foreground`,n),...u,children:[i&&(0,R.jsxs)(`span`,{className:L(`relative inline-flex shrink-0 items-center justify-center`,c?`size-5`:_&&`mr-2`),children:[(0,R.jsx)(i,{className:L(`h-4 w-4 shrink-0 transition-all duration-[250ms] ease-in-out`,!_&&!c&&`mr-0!`)}),l&&v?l:null]}),o&&(0,R.jsx)(`span`,{className:`absolute top-1.5 right-1.5 w-2 h-2 bg-orange-500 dark:bg-orange-400 border-2 border-white dark:border-zinc-900 rounded-full transition-opacity duration-300 z-10 animate-status-pulse-orange`}),(0,R.jsx)(`span`,{className:L(`min-w-0 transition-all duration-[250ms] ease-in-out overflow-hidden`,_?`w-auto opacity-100`:`w-0 opacity-0`),children:e}),l&&!v?l:null]})})});UR.displayName=`TabsTrigger`;function WR(e){return mR(e)}var GR=z.createContext(void 0);function KR(){let e=z.useContext(GR);if(e===void 0)throw Error(Vt(13));return e}var qR={imageLoadingStatus:()=>null},JR=z.forwardRef(function(e,t){let{className:n,render:r,style:i,...a}=e,[o,s]=z.useState(`idle`),c={imageLoadingStatus:o},l=z.useMemo(()=>({imageLoadingStatus:o,setImageLoadingStatus:s}),[o,s]),u=Ft(`span`,e,{state:c,ref:t,props:a,stateAttributesMapping:qR});return(0,R.jsx)(GR.Provider,{value:l,children:u})});function YR(e,{referrerPolicy:t,crossOrigin:n,sizes:r,srcSet:i}){let[a,o]=z.useState(`idle`);return Rt(()=>{if(!e&&!i)return o(`error`),It;let a=!0,s=new window.Image,c=e=>()=>{a&&o(e)};return o(`loading`),s.onload=c(`loaded`),s.onerror=c(`error`),t&&(s.referrerPolicy=t),s.crossOrigin=n??null,r&&(s.sizes=r),i&&(s.srcset=i),e&&(s.src=e),s.complete&&o(s.naturalWidth>0?`loaded`:`error`),()=>{a=!1}},[e,i,r,n,t]),a}var XR={...qR,...it},ZR=z.forwardRef(function(e,t){let{className:n,render:r,onLoadingStatusChange:i,style:a,...o}=e,{setImageLoadingStatus:s}=KR(),c=YR(o.src,o),l=c===`loaded`,{mounted:u,transitionStatus:d,setMounted:f}=Je(l),p=z.useRef(null),m=Pt(e=>{i?.(e),s(e)});Rt(()=>{c!==`idle`&&m(c)},[c,m]),Rt(()=>()=>s(`idle`),[s]),g({open:l,ref:p,onComplete(){l||f(!1)}});let h=Ft(`img`,e,{state:{imageLoadingStatus:c,transitionStatus:d},ref:[t,p],props:o,stateAttributesMapping:XR,enabled:u});return u?h:null}),QR=z.forwardRef(function(e,t){let{className:n,render:r,delay:i,style:a,...o}=e,{imageLoadingStatus:s}=KR(),[c,l]=z.useState(i===void 0),u=fe();return z.useEffect(()=>(i===void 0?l(!0):u.start(i,()=>l(!0)),u.clear),[u,i]),Ft(`span`,e,{state:{imageLoadingStatus:s},ref:t,props:o,stateAttributesMapping:qR,enabled:s!==`loaded`&&(i===void 0||c)})});function $R({className:e,size:t=`default`,...n}){return(0,R.jsx)(JR,{"data-slot":`avatar`,"data-size":t,className:L(`group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten`,e),...n})}function ez({className:e,...t}){return(0,R.jsx)(ZR,{"data-slot":`avatar-image`,className:L(`aspect-square size-full rounded-full object-cover`,e),...t})}function tz({className:e,...t}){return(0,R.jsx)(QR,{"data-slot":`avatar-fallback`,className:L(`flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs`,e),...t})}function nz(e,t){return e?.[0]?e[0].toUpperCase():t?.[0]?t[0].toUpperCase():`U`}function rz({chatApiUrl:e,dashboardUrl:t=`https://manufact.com/cloud`,fallback:n=null,onUserResolved:r,compact:i=!1}){let{user:a,loaded:o,authorizing:s,authorize:c,logout:l,mode:u}=WR(e),d=(0,z.useRef)(void 0);if((0,z.useEffect)(()=>{if(!o)return;let e=a?.id??null;d.current!==e&&(d.current=e,r?.(a))},[o,a,r]),!o)return null;if(!a)return(0,R.jsxs)(R.Fragment,{children:[n,(0,R.jsx)(Gt,{variant:`ghost`,size:`sm`,className:L(`shrink-0 rounded-full text-[13px]`,i?`px-2.5 text-xs`:`px-4`),disabled:s,onClick:()=>{c().catch(e=>IF.error(e instanceof Error?e.message:`Authorization failed`))},children:s?`Authorizing…`:`Sign in`})]});let f=nz(a.name,a.email),p=a.name??a.email??`User`;return(0,R.jsxs)(Ya,{children:[(0,R.jsx)(Xa,{render:(0,R.jsx)(Gt,{variant:`ghost`,className:`relative h-8 w-8 shrink-0 rounded-full p-0 mr-2`,"aria-label":`User menu`,children:(0,R.jsxs)($R,{className:`h-8 w-8 border border-zinc-300 dark:border-zinc-600`,children:[(0,R.jsx)(ez,{src:a.image??``,alt:p}),(0,R.jsx)(tz,{className:`text-sm`,children:f})]})}),nativeButton:!0}),(0,R.jsxs)(Za,{className:`w-56`,align:`end`,forceMount:!0,children:[(0,R.jsx)(Qa,{className:`font-normal`,children:(0,R.jsxs)(`div`,{className:`flex flex-col space-y-1`,children:[(0,R.jsx)(`p`,{className:`text-sm font-medium leading-none truncate`,children:p}),a.email&&a.email!==p&&(0,R.jsx)(`p`,{className:`text-xs leading-none text-muted-foreground truncate`,children:a.email})]})}),(0,R.jsx)(no,{}),(0,R.jsx)($a,{render:(0,R.jsxs)(`a`,{href:t,target:`_blank`,rel:`noopener noreferrer`,children:[(0,R.jsx)(li,{className:`mr-2 h-4 w-4`}),`Go to dashboard`]})}),(0,R.jsx)(no,{}),(0,R.jsxs)($a,{onClick:()=>{l().catch(()=>IF.error(`Sign out failed`))},children:[(0,R.jsx)(hi,{className:`mr-2 h-4 w-4`}),u===`session`?`Sign out of Manufact`:`Disconnect Inspector`]})]})]})}function iz({count:e,isActive:t,size:n=`md`,overlay:r=!1}){return e<=0?null:(0,R.jsx)(`span`,{className:L(t?`dark:bg-black`:`dark:bg-zinc-700`,`shrink-0 bg-zinc-200 text-zinc-700 dark:text-zinc-300 rounded-full font-medium`,r&&`absolute -bottom-1 -right-1.5 z-10 flex h-3.5 min-w-3.5 items-center justify-center border border-background px-0.5 text-[9px] leading-none`,!r&&`ml-1`,!r&&n===`sm`&&`text-[10px] px-1.5 py-0.5`,!r&&n===`md`&&`text-xs px-2 py-0.5`),children:e})}var az=`flex h-10 items-center gap-2`;function oz({serverConfig:e,additionalItems:t=[],showClients:n={cursor:!0,vsCode:!0,vsCodeInsiders:!0,claudeDesktop:!0,claudeCode:!0,geminiCli:!0,codexCli:!0},className:r=``,onSuccess:i,onError:a,trigger:o}){let[s,c]=(0,z.useState)(!1),[l,u]=(0,z.useState)(null),[d,f]=(0,z.useState)(!1),{url:p,name:m,headers:h}=e,g=e=>{try{bT(new Fo({client:e})).catch(()=>{})}catch{}},_=()=>{g(`cursor`);try{let e=lL(p,m,h);window.location.href=e,i?.(`Cursor`)}catch(e){console.error(`Failed to generate Cursor deep link:`,e),a?.(e)}},v=()=>{g(`vscode`);try{let e=uL(p,m,h);window.location.href=e,i?.(`VS Code`)}catch(e){console.error(`Failed to generate VS Code deep link:`,e),a?.(e)}},y=()=>{g(`vscode-insiders`);try{let e=dL(p,m,h);window.location.href=e,i?.(`VS Code Insiders`)}catch(e){console.error(`Failed to generate VS Code Insiders deep link:`,e),a?.(e)}},b=()=>{g(`claude-desktop`);try{pL(p,m,h),i?.(`Claude Desktop`)}catch(e){console.error(`Failed to download .mcpb file:`,e),a?.(e)}},x=()=>{g(`claude-code`),u(`claude-code`),c(!0)},S=()=>{g(`gemini-cli`),u(`gemini-cli`),c(!0)},C=()=>{g(`codex-cli`),u(`codex-cli`),c(!0)},w=async e=>{try{await zj(e),f(!0),setTimeout(()=>f(!1),2e3)}catch(e){console.error(`Failed to copy:`,e),a?.(e)}},T=()=>{if(l===`claude-code`){let{command:e,envVars:t}=mL(p,m,h),n=_L(t);return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsxs)(VI,{children:[(0,R.jsx)(GI,{children:`Add to Claude Code`}),(0,R.jsx)(KI,{children:`Execute the following command in your shell to add this server to Claude Code.`})]}),(0,R.jsxs)(HI,{className:`space-y-4`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`h5`,{className:`font-semibold text-sm mb-2`,children:`Instructions`}),(0,R.jsxs)(`ol`,{className:`space-y-2 text-xs text-muted-foreground`,children:[(0,R.jsxs)(`li`,{className:`flex gap-2`,children:[(0,R.jsx)(`span`,{className:`font-semibold text-foreground`,children:`1.`}),(0,R.jsx)(`span`,{children:`Ensure the Claude Code executable is available in your path`})]}),(0,R.jsxs)(`li`,{className:`flex gap-2`,children:[(0,R.jsx)(`span`,{className:`font-semibold text-foreground`,children:`2.`}),(0,R.jsx)(`span`,{children:`Execute the following snippet in your shell:`})]})]})]}),(0,R.jsxs)(`div`,{className:`relative`,children:[(0,R.jsx)(`div`,{className:`absolute top-2 right-2 z-10`,children:(0,R.jsx)(Gt,{variant:`ghost`,size:`sm`,className:`h-7 px-2 bg-background hover:bg-accent border border-border`,onClick:()=>w(e),children:d?(0,R.jsx)(Fr,{className:`size-3.5 text-green-600`}):(0,R.jsx)(Wr,{className:`size-3.5`})})}),(0,R.jsx)(`pre`,{className:`bg-muted p-3 pr-14 rounded-md text-xs overflow-x-auto`,children:(0,R.jsx)(`code`,{children:e})})]}),n&&(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`h5`,{className:`font-semibold text-sm mb-2`,children:`Environment Variables`}),(0,R.jsx)(`p`,{className:`text-xs text-muted-foreground mb-2`,children:`After installation, set these environment variables in your shell:`}),(0,R.jsx)(`pre`,{className:`bg-muted p-3 rounded-md text-xs overflow-x-auto`,children:(0,R.jsx)(`code`,{children:n})})]}),(0,R.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`The MCP configuration supports environment variable expansion using `,(0,R.jsx)(`code`,{className:`text-foreground`,children:"${VAR}"}),` `,`syntax.`]})]})]})}if(l===`gemini-cli`){let{command:e,envVars:t}=hL(p,m,h),n=_L(t);return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsxs)(VI,{children:[(0,R.jsx)(GI,{children:`Add to Gemini CLI`}),(0,R.jsx)(KI,{children:`Execute the following command in your shell to add this server to Gemini CLI.`})]}),(0,R.jsxs)(HI,{className:`space-y-4`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`h5`,{className:`font-semibold text-sm mb-2`,children:`Instructions`}),(0,R.jsxs)(`ol`,{className:`space-y-2 text-xs text-muted-foreground`,children:[(0,R.jsxs)(`li`,{className:`flex gap-2`,children:[(0,R.jsx)(`span`,{className:`font-semibold text-foreground`,children:`1.`}),(0,R.jsx)(`span`,{children:`Ensure the Gemini CLI executable is available in your path`})]}),n&&(0,R.jsxs)(`li`,{className:`flex gap-2`,children:[(0,R.jsx)(`span`,{className:`font-semibold text-foreground`,children:`2.`}),(0,R.jsx)(`span`,{children:`Set these environment variables in your shell before running the command:`})]}),(0,R.jsxs)(`li`,{className:`flex gap-2`,children:[(0,R.jsx)(`span`,{className:`font-semibold text-foreground`,children:n?`3.`:`2.`}),(0,R.jsx)(`span`,{children:`Execute the following snippet in your shell:`})]})]})]}),n&&(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`h5`,{className:`font-semibold text-sm mb-2`,children:`Environment Variables`}),(0,R.jsx)(`pre`,{className:`bg-muted p-3 rounded-md text-xs overflow-x-auto`,children:(0,R.jsx)(`code`,{children:n})})]}),(0,R.jsxs)(`div`,{className:`relative`,children:[(0,R.jsx)(`div`,{className:`absolute top-2 right-2 z-10`,children:(0,R.jsx)(Gt,{variant:`ghost`,size:`sm`,className:`h-7 px-2 bg-background hover:bg-accent border border-border`,onClick:()=>w(e),children:d?(0,R.jsx)(Fr,{className:`size-3.5 text-green-600`}):(0,R.jsx)(Wr,{className:`size-3.5`})})}),(0,R.jsx)(`pre`,{className:`bg-muted p-3 pr-14 rounded-md text-xs overflow-x-auto`,children:(0,R.jsx)(`code`,{children:e})})]}),(0,R.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Restart Gemini CLI to load the new configuration.`})]})]})}if(l===`codex-cli`){let{config:e,envVars:t}=gL(p,m,h);return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsxs)(VI,{children:[(0,R.jsx)(GI,{children:`Add to Codex CLI`}),(0,R.jsxs)(KI,{children:[`Add this configuration to your`,` `,(0,R.jsx)(`code`,{className:`text-foreground`,children:`~/.codex/config.toml`}),` `,`file.`]})]}),(0,R.jsxs)(HI,{className:`space-y-4`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`h5`,{className:`font-semibold text-sm mb-2`,children:`Instructions`}),(0,R.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Add this configuration to your`,` `,(0,R.jsx)(`code`,{className:`text-foreground`,children:`~/.codex/config.toml`}),`:`]})]}),(0,R.jsxs)(`div`,{className:`relative`,children:[(0,R.jsx)(`div`,{className:`absolute top-2 right-2 z-10`,children:(0,R.jsx)(Gt,{variant:`ghost`,size:`sm`,className:`h-7 px-2 bg-background hover:bg-accent border border-border`,onClick:()=>w(e),children:d?(0,R.jsx)(Fr,{className:`size-3.5 text-green-600`}):(0,R.jsx)(Wr,{className:`size-3.5`})})}),(0,R.jsx)(`pre`,{className:`bg-muted p-3 pr-14 rounded-md text-xs overflow-x-auto`,children:(0,R.jsx)(`code`,{children:e})})]}),t.length>0&&(0,R.jsx)(`div`,{children:(0,R.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`(optional) If you would rather use variables from your system's environment, replace the`,` `,(0,R.jsx)(`code`,{className:`text-foreground`,children:`http_headers`}),` key with the `,(0,R.jsx)(`code`,{className:`text-foreground`,children:`env_http_headers`}),` `,`key as shown in the commented section above.`]})}),(0,R.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Restart Codex CLI to load the new configuration.`})]})]})}return null},E=(0,R.jsxs)(Gt,{variant:`ghost`,className:`bg-zinc-200 dark:bg-zinc-800 hover:bg-zinc-300 dark:hover:bg-zinc-700 rounded-full transition-colors px-3 flex items-center justify-center ${r}`,children:[(0,R.jsxs)(`span`,{className:`xl:hidden hidden sm:flex items-center gap-1`,children:[(0,R.jsx)(Ai,{className:`size-3`}),`Client`]}),(0,R.jsxs)(`span`,{className:`hidden xl:flex items-center gap-1`,children:[`Add to Client`,(0,R.jsx)(Ir,{className:`size-3`})]})]}),ee=o?typeof o==`function`?o({isOpen:!1,onClick:()=>{}}):o:E;return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsxs)(Ya,{children:[(0,R.jsx)(Xa,{render:(0,z.isValidElement)(ee)?ee:E,nativeButton:!0}),(0,R.jsxs)(Za,{align:`end`,className:`w-auto min-w-[300px]`,children:[t.map(e=>(0,R.jsxs)($a,{onClick:async()=>{await e.onClick()},className:az,children:[e.icon,(0,R.jsx)(`span`,{className:`min-w-0 max-w-full whitespace-nowrap`,children:e.label})]},e.id)),t.length>0&&(0,R.jsx)(no,{}),n.cursor&&(0,R.jsxs)($a,{onClick:_,className:az,children:[(0,R.jsx)(`img`,{src:`https://cdn.simpleicons.org/cursor`,alt:`Cursor`,className:`h-4 w-4`}),(0,R.jsx)(`span`,{className:`min-w-0 max-w-full whitespace-nowrap`,children:`Cursor`})]}),n.claudeCode&&(0,R.jsxs)($a,{onClick:x,className:az,children:[(0,R.jsx)(`img`,{src:`https://cdn.simpleicons.org/claude`,alt:`Claude`,className:`h-4 w-4`}),(0,R.jsx)(`span`,{className:`min-w-0 max-w-full whitespace-nowrap`,children:`Claude Code`})]}),n.claudeDesktop&&(0,R.jsxs)($a,{onClick:b,className:az,children:[(0,R.jsx)(`img`,{src:`https://cdn.simpleicons.org/claude`,alt:`Claude`,className:`h-4 w-4`}),(0,R.jsx)(`span`,{className:`min-w-0 max-w-full whitespace-nowrap`,children:`Claude Desktop`})]}),n.vsCode&&(0,R.jsxs)($a,{onClick:v,className:az,children:[(0,R.jsx)(yL,{className:`h-4 w-4 text-blue-500`}),(0,R.jsx)(`span`,{className:`min-w-0 max-w-full whitespace-nowrap`,children:`VS Code`})]}),n.vsCodeInsiders&&(0,R.jsxs)($a,{onClick:y,className:az,children:[(0,R.jsx)(yL,{className:`h-4 w-4 text-teal-400`}),(0,R.jsx)(`span`,{className:`min-w-0 max-w-full whitespace-nowrap`,children:`VS Code Insiders`})]}),n.geminiCli&&(0,R.jsxs)($a,{onClick:S,className:az,children:[(0,R.jsx)(`img`,{src:`https://cdn.simpleicons.org/googlegemini`,alt:`Gemini`,className:`h-4 w-4`}),(0,R.jsx)(`span`,{className:`min-w-0 max-w-full whitespace-nowrap`,children:`Gemini CLI`})]}),n.codexCli&&(0,R.jsxs)($a,{onClick:C,className:az,children:[(0,R.jsx)(`img`,{src:`https://inspector-cdn.mcp-use.com/providers/openai.png`,alt:`Codex`,className:`h-4 w-4`}),(0,R.jsx)(`span`,{className:`min-w-0 max-w-full whitespace-nowrap`,children:`Codex CLI`})]})]})]}),(0,R.jsx)(RI,{open:s,onOpenChange:c,children:(0,R.jsx)(BI,{scrollable:!0,className:`max-w-3xl max-h-[80vh]`,children:T()})})]})}function sz({className:e,state:t=`collapsed`,to:n=`/`,showLabel:r=t===`expanded`,labelParts:i=`full`,pinSymbolInIconColumn:a=!1,size:o}){let[s,c]=(0,z.useState)(!1),l=1.5,u=.2/l,d=.8999999999999999/l,f=r&&(t===`expanded`||i===`inspector`),p=o??(a?20:t===`expanded`?40:20),m=(0,R.jsx)(`div`,{className:`relative`,children:(0,R.jsxs)(Pe.svg,{viewBox:`0 0 500 500`,initial:`rest`,animate:s?`hover`:`rest`,className:`text-foreground`,style:{width:p,height:p},children:[(0,R.jsxs)(Pe.g,{variants:{rest:{opacity:1},hover:{opacity:[1,0,0,1],transition:{duration:l,times:[0,u,d,1],ease:`easeInOut`}}},fill:`currentColor`,fillRule:`nonzero`,stroke:`currentColor`,strokeWidth:4,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,R.jsx)(`path`,{d:`M105.933 0C164.437 0.000116002 211.865 47.607 211.865 106.333C211.865 131.829 210.493 158.403 221.068 181.602L228.975 198.947C243.584 230.997 269.265 256.7 301.303 271.336L316.155 278.121C340.142 289.079 367.694 287.335 394.066 287.335C452.571 287.335 499.999 334.942 499.999 393.668C499.999 452.394 452.571 500.001 394.066 500.001C335.562 500.001 288.134 452.394 288.134 393.668C288.134 368.974 289.24 343.275 278.992 320.807L270.586 302.38C255.948 270.29 230.214 244.565 198.118 229.939L180.164 221.758C157.282 211.331 131.078 212.666 105.933 212.666C47.4278 212.666 4.86252e-05 165.059 0 106.333C0 47.607 47.4278 0 105.933 0Z`}),(0,R.jsx)(`circle`,{cx:`100.426`,cy:`399.575`,r:`100.426`}),(0,R.jsx)(`path`,{d:`M500 100.426C500 155.889 455.037 200.851 399.574 200.851C344.11 200.851 299.148 155.889 299.148 100.426C299.148 44.962 344.11 0 399.574 0C455.037 0 500 44.962 500 100.426Z`})]}),(0,R.jsxs)(`g`,{fill:`none`,stroke:`currentColor`,strokeWidth:4,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,R.jsx)(cz,{d:`M105.933 0C164.437 0.000116002 211.865 47.607 211.865 106.333C211.865 131.829 210.493 158.403 221.068 181.602L228.975 198.947C243.584 230.997 269.265 256.7 301.303 271.336L316.155 278.121C340.142 289.079 367.694 287.335 394.066 287.335C452.571 287.335 499.999 334.942 499.999 393.668C499.999 452.394 452.571 500.001 394.066 500.001C335.562 500.001 288.134 452.394 288.134 393.668C288.134 368.974 289.24 343.275 278.992 320.807L270.586 302.38C255.948 270.29 230.214 244.565 198.118 229.939L180.164 221.758C157.282 211.331 131.078 212.666 105.933 212.666C47.4278 212.666 4.86252e-05 165.059 0 106.333C0 47.607 47.4278 0 105.933 0Z`,times:{T0:0,T1:u,T2:d,T3:1},total:l}),(0,R.jsx)(lz,{cx:100.426,cy:399.575,r:100.426,times:{T0:0,T1:u,T2:d,T3:1},total:l}),(0,R.jsx)(cz,{d:`M500 100.426C500 155.889 455.037 200.851 399.574 200.851C344.11 200.851 299.148 155.889 299.148 100.426C299.148 44.962 344.11 0 399.574 0C455.037 0 500 44.962 500 100.426Z`,times:{T0:0,T1:u,T2:d,T3:1},total:l})]})]})}),h=r?(0,R.jsx)(`span`,{className:L(`font-ubuntu flex items-center gap-2 whitespace-nowrap`,a?L(`pl-(--sidebar-nav-text-pl-absolute)`,f?`relative opacity-100 blur-0`:`pointer-events-none absolute left-0 top-1/2 w-0 -translate-y-1/2 overflow-hidden opacity-0 blur-[3px]`):i===`inspector`?`mr-0`:`mr-3`),children:i===`full`?(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`span`,{className:`text-xl font-bold leading-none text-foreground [text-box:trim-both_cap_alphabetic]`,children:`mcp-use`}),(0,R.jsx)(`span`,{className:`text-lg font-sans font-light leading-none tracking-wide text-muted-foreground [text-box:trim-both_cap_alphabetic]`,children:`Inspector`})]}):(0,R.jsx)(`span`,{className:`text-base font-medium leading-none text-foreground [text-box:trim-both_cap_alphabetic]`,children:`Inspector`})}):null,g=a?(0,R.jsxs)(`div`,{className:L(`relative flex shrink-0 items-center`,f?`min-w-(--sidebar-width-icon)`:`w-(--sidebar-width-icon)`),children:[(0,R.jsx)(`div`,{className:`pointer-events-none absolute inset-y-0 left-0 flex w-(--sidebar-width-icon) items-center justify-center`,children:(0,R.jsx)(`div`,{className:`pointer-events-auto`,children:m})}),h]}):i===`inspector`?(0,R.jsxs)(`span`,{className:`flex items-center gap-2.5`,children:[m,h]}):(0,R.jsxs)(R.Fragment,{children:[m,h]});return(0,R.jsx)(rF,{to:n,className:L(`flex items-center transition-opacity`,!a&&i!==`inspector`&&`-my-3`,e),onMouseEnter:()=>c(!0),onMouseLeave:()=>c(!1),children:g})}function cz({d:e,times:t,total:n}){let{T0:r,T1:i,T2:a,T3:o}=t;return(0,R.jsx)(Pe.path,{d:e,variants:{rest:{pathLength:0,opacity:0},hover:{pathLength:[0,0,1,1],opacity:[0,0,1,1],transition:{duration:n,times:[r,i,a,o],ease:`easeInOut`}}}})}function lz({cx:e,cy:t,r:n,times:r,total:i}){let{T0:a,T1:o,T2:s,T3:c}=r;return(0,R.jsx)(Pe.circle,{cx:e,cy:t,r:n,variants:{rest:{pathLength:0,opacity:0},hover:{pathLength:[0,0,1,1],opacity:[0,0,1,1],transition:{duration:i,times:[a,o,s,c],ease:`easeInOut`}}}})}var uz=(0,z.createContext)(void 0);function dz(){let e=(0,z.use)(uz);if(e===void 0)throw Error(`useTheme must be used within a ThemeProvider`);return e}function fz({children:e,defaultTheme:t=`system`,storageKey:n=`theme`,forcedTheme:r}){let[i,a]=(0,z.useState)(r||t),[o,s]=(0,z.useState)(!1),c=()=>typeof window>`u`?`light`:window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`,l=i===`system`?c():i,u=e=>{let t=document.documentElement,i=e===`system`?c():e;t.classList.remove(`light`,`dark`),t.classList.add(i),r||localStorage.setItem(n,e)};return(0,z.useEffect)(()=>{s(!0);let e=localStorage.getItem(n),i=r||e||t;a(i),u(i)},[t,n,r]),(0,z.useEffect)(()=>{if(i!==`system`)return;let e=window.matchMedia(`(prefers-color-scheme: dark)`),t=()=>{u(`system`)};return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[i]),(0,z.useEffect)(()=>{o&&u(i)},[i,o]),(0,R.jsx)(uz,{value:{theme:i,setTheme:e=>{if(r){console.warn(`[ThemeProvider] Theme is forced via URL parameter, ignoring setTheme call`);return}a(e)},resolvedTheme:l},children:e})}function pz({ref:e,shimmerColor:t,shimmerSize:n=`0.05em`,shimmerDuration:r=`3s`,borderRadius:i=`100px`,background:a,className:o,children:s,...c}){let{theme:l}=dz();return(0,R.jsxs)(`button`,{style:{"--spread":`90deg`,"--shimmer-color":t||(l===`dark`?`#000000`:`#ffffff`),"--radius":i,"--speed":r,"--cut":n,"--bg":a||(l===`dark`?`rgba(255, 255, 255, 1)`:`rgba(0, 0, 0, 1)`)},className:L(`group relative z-0 flex cursor-pointer items-center justify-center overflow-hidden [border-radius:var(--radius)] border px-6 py-3 whitespace-nowrap [background:var(--bg)]`,`transform-gpu transition-transform duration-300 ease-in-out active:translate-y-px`,`dark:text-white text-black dark:border-white/10 border-black/10`,o),ref:e,...c,children:[(0,R.jsx)(`div`,{className:L(`-z-30 blur-[2px]`,`@container-[size] absolute inset-0 overflow-visible`),children:(0,R.jsx)(`div`,{className:`animate-shimmer-slide absolute inset-0 aspect-[1] h-[100cqh] rounded-none mask-none`,children:(0,R.jsx)(`div`,{className:`animate-spin-around absolute -inset-full w-auto [translate:0_0] rotate-0 [background:conic-gradient(from_calc(270deg-(var(--spread)*0.5)),transparent_0,var(--shimmer-color)_var(--spread),transparent_var(--spread))]`})})}),s,(0,R.jsx)(`div`,{className:L(`absolute inset-0 size-full`,`rounded-2xl px-4 py-1.5 text-sm font-medium`,`transform-gpu transition-all duration-300 ease-in-out`,`dark:shadow-[inset_0_-8px_10px_#0000001f] dark:group-hover:shadow-[inset_0_-6px_10px_#0000003f] dark:group-active:shadow-[inset_0_-10px_10px_#0000003f] shadow-[inset_0_-8px_10px_#ffffff1f] group-hover:shadow-[inset_0_-6px_10px_#ffffff3f] group-active:shadow-[inset_0_-10px_10px_#ffffff3f]`)}),(0,R.jsx)(`div`,{className:L(`absolute [inset:var(--cut)] -z-20 [border-radius:var(--radius)] bg-black dark:bg-white`)})]})}pz.displayName=`ShimmerButton`;function mz(e){switch(e){case`ready`:return`bg-emerald-600 animate-status-pulse`;case`failed`:return`bg-rose-600 animate-status-pulse-red`;default:return`bg-yellow-500 animate-status-pulse-yellow`}}function hz(e){switch(e){case`ready`:return`Connected`;case`failed`:return`Failed`;default:return e}}function gz({status:e,className:t}){return(0,R.jsxs)(et,{children:[(0,R.jsx)(we,{render:(0,R.jsx)(`div`,{className:L(`w-2 h-2 rounded-full shrink-0`,mz(e),t)}),nativeButton:!1}),(0,R.jsx)(lt,{children:(0,R.jsx)(`p`,{children:hz(e)})})]})}var _z=`h-6 px-2 text-xs bg-yellow-500/20 border-0 dark:bg-yellow-400/10 text-yellow-800 dark:text-yellow-500 shrink-0`;function vz(e){try{sessionStorage.setItem(QF,JSON.stringify({url:e.url,name:e.name||`Auto-connected Server`,transportType:e.transportType||`http`,connectionMode:`auto`}))}catch{}}function yz({server:e,className:t}){let{state:n,authUrl:r,authenticate:i}=e;return n!==`pending_auth`&&n!==`authenticating`?null:n===`authenticating`?(0,R.jsxs)(Gt,{size:`sm`,variant:`outline`,disabled:!0,className:L(_z,t),children:[(0,R.jsx)(fi,{className:`h-3 w-3 animate-spin mr-1`}),`Authenticating`]}):i?(0,R.jsx)(Gt,{"data-testid":`server-header-authenticate`,size:`sm`,variant:`outline`,className:L(_z,t),onClick:t=>{t.stopPropagation(),vz(e),i()},children:`Authenticate`}):r?(0,R.jsx)(Gt,{size:`sm`,variant:`outline`,className:L(_z,t),render:(0,R.jsx)(`a`,{href:r,"data-testid":`server-header-authenticate`,onClick:t=>{t.stopPropagation(),vz(e)}}),nativeButton:!1,children:`Authenticate`}):null}function bz({connections:e,selectedServer:t,onServerSelect:n,mobileMode:r=!1,variant:i=`default`,compactHeader:a=!1}){let o=LN(),s=t=>{e.some(e=>e.id===t)&&n(t)},c=(0,R.jsxs)(Za,{className:`w-[calc(100vw-2rem)] sm:w-[300px]`,align:`start`,children:[(0,R.jsx)(Qa,{className:`cursor-pointer hover:bg-zinc-100 dark:hover:bg-zinc-800`,onClick:()=>o(`/`),children:`MCP Servers`}),(0,R.jsx)(no,{}),e.length===0?(0,R.jsx)(`div`,{className:`px-2 py-4 text-sm text-muted-foreground dark:text-zinc-400 text-center`,children:`No servers connected. Go to the dashboard to add one.`}):e.map(e=>(0,R.jsxs)($a,{onClick:()=>s(e.id),className:`flex items-center gap-3`,children:[(0,R.jsx)(ZI,{server:e,size:`sm`}),(0,R.jsxs)(`div`,{className:`flex items-center gap-2 flex-1`,children:[(0,R.jsx)(`div`,{className:`font-medium`,children:Xj(e)}),(0,R.jsx)(gz,{status:e.state})]})]},e.id)),(0,R.jsx)(no,{}),(0,R.jsx)($a,{onClick:()=>o(`/`),children:(0,R.jsx)(`span`,{className:`text-blue-600 dark:text-blue-400`,children:`+ Add new server`})})]});return r?(0,R.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,R.jsx)(`div`,{className:`relative`,children:(0,R.jsxs)(Ya,{children:[(0,R.jsx)(Xa,{render:(0,R.jsxs)(Gt,{variant:`ghost`,className:`h-11 px-2 bg-black dark:bg-white text-white dark:text-black border-black dark:border-white hover:bg-gray-800 dark:hover:bg-zinc-100 hover:border-gray-800 dark:hover:border-zinc-200 flex items-center gap-1.5`,children:[t?(0,R.jsx)(ZI,{server:t,size:`md`}):(0,R.jsx)(Fi,{className:`h-5 w-5`}),(0,R.jsx)(Ir,{className:`h-4 w-4`})]}),nativeButton:!0}),c]})})}):i===`header`?(0,R.jsx)(`div`,{className:`flex min-w-0 items-center gap-2`,children:(0,R.jsxs)(Ya,{children:[(0,R.jsx)(Xa,{render:(0,R.jsxs)(`button`,{type:`button`,className:`inline-flex max-w-full min-w-0 items-center gap-1.5 border-0 bg-transparent p-0 cursor-pointer text-foreground transition-opacity hover:opacity-80`,children:[t&&(0,R.jsx)(ZI,{server:t,size:`sm`,className:`!size-5 shrink-0`}),(0,R.jsx)(`span`,{className:`truncate text-sm`,children:t?Xj(t):`Select server`}),t&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(gz,{status:t.state}),!a&&(0,R.jsx)(yz,{server:t})]}),(0,R.jsx)(Ir,{className:`size-3.5 shrink-0 text-muted-foreground`})]}),nativeButton:!0}),c]})}):(0,R.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,R.jsx)(`div`,{className:`relative`,children:(0,R.jsxs)(Ya,{children:[(0,R.jsx)(Xa,{render:(0,R.jsxs)(pz,{className:L(`min-w-0 sm:min-w-[200px] p-0 px-1 text-sm h-11 justify-start text-white dark:text-black border-black dark:border-white hover:bg-gray-800 dark:hover:bg-zinc-100 hover:border-gray-800 dark:hover:border-zinc-200`,!t&&`pl-4`),children:[t&&(0,R.jsx)(ZI,{server:t,size:`md`,className:`mr-2`}),(0,R.jsxs)(`div`,{className:`flex items-center gap-2 flex-1`,children:[(0,R.jsx)(`span`,{className:`truncate lg:max-w-[120px] xl:max-w-none`,children:t?Xj(t):`Select server to inspect`}),t&&(0,R.jsx)(`div`,{className:`flex items-center gap-2`,children:t.error&&t.state!==`ready`?(0,R.jsxs)(et,{children:[(0,R.jsx)(we,{render:(0,R.jsx)(`button`,{onClick:e=>{e.stopPropagation()},className:`w-2 h-2 rounded-full bg-rose-500 animate-status-pulse-red hover:bg-rose-600 transition-colors`,title:`Click to copy error message`,"aria-label":`Copy error message to clipboard`}),nativeButton:!0}),(0,R.jsx)(lt,{children:(0,R.jsx)(`p`,{className:`max-w-xs`,children:t.error})})]}):(0,R.jsx)(`div`,{className:`w-2 h-2 rounded-full ${t.state===`ready`?`bg-emerald-600 animate-status-pulse`:t.state===`failed`?`bg-rose-600 animate-status-pulse-red`:`bg-yellow-500 animate-status-pulse-yellow`}`})})]})]}),nativeButton:!0}),c]})})})}function xz(e){if(!e)return null;try{let t=new URL(e);if(t.protocol===`https:`)return t.origin}catch{}return null}function Sz(e,t){return e===`tools`?t.tools.length:e===`prompts`?t.prompts.length:e===`resources`?t.resources.length:e===`sampling`?t.pendingSamplingRequests?.length||0:e===`elicitation`?t.pendingElicitationRequests?.length||0:e===`notifications`?t.unreadNotificationCount:0}function Cz(e,t,n){return n&&t>0&&[`sampling`,`elicitation`,`notifications`].includes(e)}var wz=[{id:`server-metadata`,label:`Server Metadata`,icon:si},{id:`separator`},{id:`chat`,label:`Chat`,icon:vi,alwaysExpanded:!0},{id:`separator`},{id:`tools`,label:`Tools`,icon:Yi},{id:`prompts`,label:`Prompts`,icon:yi},{id:`resources`,label:`Resources`,icon:$r},{id:`sampling`,label:`Sampling`,icon:ti},{id:`elicitation`,label:`Elicitation`,icon:zi},{id:`notifications`,label:`Notifications`,icon:Mr},{id:`separator`},{id:`connection-settings`,label:`Connection Settings`,icon:Ii}],Tz=z.createContext(void 0);function Ez(e){let t=z.useContext(Tz);if(t===void 0&&!e)throw Error(Vt(47));return t}function Dz(){return{...ft(),disabled:!1,modal:!1,focusManagerModal:!1,instantType:void 0,openMethod:null,openChangeReason:null,titleElementId:void 0,descriptionElementId:void 0,stickIfOpen:!0,nested:!1,openOnHover:!1,closeDelay:0,hasViewport:!1}}var Oz={...De,disabled:St(e=>e.disabled),instantType:St(e=>e.instantType),openMethod:St(e=>e.openMethod),openChangeReason:St(e=>e.openChangeReason),modal:St(e=>e.modal),focusManagerModal:St(e=>e.focusManagerModal),stickIfOpen:St(e=>e.stickIfOpen),titleElementId:St(e=>e.titleElementId),descriptionElementId:St(e=>e.descriptionElementId),openOnHover:St(e=>e.openOnHover),closeDelay:St(e=>e.closeDelay),hasViewport:St(e=>e.hasViewport)},kz=class e extends Tt{constructor(e,t,n=!1){let r={...Dz(),...e},i=new at;r.open&&e?.mounted===void 0&&(r.mounted=!0),r.floatingRootContext=We(i,t,n),super(r,{popupRef:z.createRef(),backdropRef:z.createRef(),internalBackdropRef:z.createRef(),onOpenChange:void 0,onOpenChangeComplete:void 0,triggerFocusTargetRef:z.createRef(),beforeContentFocusGuardRef:z.createRef(),stickIfOpenTimeout:new xt,triggerElements:i},Oz)}setOpen=(e,t)=>{let n=t.reason===o,r=t.reason===`trigger-press`&&t.event.detail===0,i=!e&&(t.reason===`escape-key`||t.reason==null),a=je(t),s=this.select(`activeTriggerId`);if(!e&&t.reason===`close-press`&&t.trigger==null&&s!=null&&(t.trigger=this.context.triggerElements.getById(s)??this.select(`activeTriggerElement`)??void 0),this.context.onOpenChange?.(e,t),t.isCanceled)return;this.state.floatingRootContext.dispatchOpenChange(e,t);let c=()=>{let n={open:e,openChangeReason:t.reason};_t(n,e,t.trigger,a()),this.update(n)};n?(this.set(`stickIfOpen`,!0),this.context.stickIfOpenTimeout.start(500,()=>{this.set(`stickIfOpen`,!1)}),br.flushSync(c)):c(),r||i?this.set(`instantType`,r?`click`:`dismiss`):t.reason===`focus-out`?this.set(`instantType`,`focus`):this.set(`instantType`,void 0)};static useStore(t,n){let{store:r,internalStore:i}=Le(t,(t,r)=>new e(n,t,r));return z.useEffect(()=>i?.disposeEffect(),[i]),r}disposeEffect=()=>this.context.stickIfOpenTimeout.disposeEffect()};function Az({props:e}){let{children:t,open:n,defaultOpen:r=!1,onOpenChange:i,onOpenChangeComplete:a,modal:o=!1,handle:s,triggerId:c,defaultTriggerId:l=null}=e,u=kz.useStore(s?.store,{modal:o,open:r,openProp:n,activeTriggerId:l,triggerIdProp:c});Fe(u,n,r,l),u.useControlledProp(`openProp`,n),u.useControlledProp(`triggerIdProp`,c);let d=u.useState(`open`),f=u.useState(`mounted`),p=u.useState(`payload`),m=Ke()!=null;u.useContextCallback(`onOpenChange`,i),u.useContextCallback(`onOpenChangeComplete`,a),Be(u,d),Me(u);let{forceUnmount:h}=ot(d,u,()=>{u.update({stickIfOpen:!0,openChangeReason:null})});u.useSyncedValues({modal:o,nested:m}),z.useEffect(()=>{d||u.context.stickIfOpenTimeout.clear()},[u,d]);let g=z.useCallback(()=>{u.setOpen(!1,ne(_e))},[u]);z.useImperativeHandle(e.actionsRef,()=>({unmount:h,close:g}),[h,g]);let _=d||f,v=z.useMemo(()=>({store:u}),[u]);return(0,R.jsxs)(Tz.Provider,{value:v,children:[_&&(0,R.jsx)(Mz,{store:u,modal:o}),typeof t==`function`?t({payload:p}):t]})}function jz(e){return Ez(!0)?(0,R.jsx)(Az,{props:e}):(0,R.jsx)(Ye,{children:(0,R.jsx)(Az,{props:e})})}function Mz({store:e,modal:t}){let n=m(e.useState(`floatingRootContext`),{outsidePressEvent:{mouse:t===`trap-focus`?`sloppy`:`intentional`,touch:`sloppy`}});return $e(e,{activeTriggerProps:n.reference??Wt,inactiveTriggerProps:n.trigger??Wt,popupProps:z.useMemo(()=>zt(mt,n.floating),[n.floating])}),null}var Nz=z.forwardRef(function(e,t){let{render:n,className:r,style:i,disabled:o=!1,nativeButton:s=!0,handle:c,payload:l,openOnHover:u=!1,delay:d=300,closeDelay:f=0,id:p,...m}=e,h=Ez(!0),g=c?.store??h?.store;if(!g)throw Error(Vt(74));let _=D(p),v=g.useState(`isTriggerActive`,_),y=g.useState(`floatingRootContext`),b=g.useState(`isOpenedByTrigger`,_),S=g.useState(`triggerPopupId`,_),C=z.useRef(null),{registerTrigger:w,isMountedByThisTrigger:T}=Ce(_,C,g,{payload:l,disabled:o,openOnHover:u,closeDelay:f}),E=g.useState(`openChangeReason`),ee=g.useState(`stickIfOpen`),te=g.useState(`openMethod`),ne=g.useState(`focusManagerModal`),re=a(y,{enabled:!o&&y!=null&&u&&(te!==`touch`||E!==`trigger-press`),mouseOnly:!0,move:!1,handleClose:ce(),restMs:d,delay:{close:f},triggerElementRef:C,isActiveTrigger:v,isClosing:()=>g.select(`transitionStatus`)===`ending`}),ie=Sn(y,{enabled:y!=null,stickIfOpen:ee}),ae=dn(()=>g.select(`open`),e=>{g.set(`openMethod`,e)}),O=g.useState(`triggerProps`,T),{getButtonProps:k,buttonRef:A}=Lt({disabled:o,native:s}),oe={open(e){return e&&E===`trigger-press`?Ue.open(e):Ee.open(e)}},{preFocusGuardRef:se,handlePreFocusGuardFocus:j,handleFocusTargetFocus:M}=xr(g,C),N=Ft(`button`,e,{state:{disabled:o,open:b},ref:[A,t,w,C],props:[ie.reference,re,O,ae,{[x]:``,id:_,"aria-haspopup":`dialog`,"aria-expanded":b,"aria-controls":S},m,k],stateAttributesMapping:oe});return T&&!ne?(0,R.jsxs)(z.Fragment,{children:[(0,R.jsx)(ut,{ref:se,onFocus:j}),(0,R.jsx)(z.Fragment,{children:N},_),(0,R.jsx)(ut,{ref:g.context.triggerFocusTargetRef,onFocus:M})]}):(0,R.jsx)(z.Fragment,{children:N},_)}),Pz=z.createContext(void 0);function Fz(){let e=z.useContext(Pz);if(e===void 0)throw Error(Vt(45));return e}var Iz=z.forwardRef(function(e,t){let{keepMounted:n=!1,...r}=e,{store:i}=Ez();return i.useState(`mounted`)||n?(0,R.jsx)(Pz.Provider,{value:n,children:(0,R.jsx)(se,{ref:t,...r})}):null}),Lz=z.createContext(void 0);function Rz(){let e=z.useContext(Lz);if(!e)throw Error(Vt(46));return e}var zz=z.forwardRef(function(e,t){let{render:n,className:r,style:i,anchor:a,positionMethod:o=`absolute`,side:s=`bottom`,align:l=`center`,sideOffset:u=0,alignOffset:d=0,collisionBoundary:f=`clipping-ancestors`,collisionPadding:m=5,arrowPadding:h=5,sticky:g=!1,disableAnchorTracking:_=!1,collisionAvoidance:v=N,...y}=e,{store:b}=Ez(),x=Fz(),C=c(),w=b.useState(`floatingRootContext`),T=b.useState(`mounted`),E=b.useState(`open`),ee=b.useState(`openChangeReason`),te=b.useState(`activeTriggerElement`),ne=b.useState(`modal`),re=b.useState(`openMethod`),ie=b.useState(`positionerElement`),D=b.useState(`instantType`),ae=b.useState(`transitionStatus`),O=b.useState(`hasViewport`),A=z.useRef(null),oe=p(ie,!1,!1),se=S({anchor:a,floatingRootContext:w,positionMethod:o,mounted:T,side:s,sideOffset:u,align:l,alignOffset:d,arrowPadding:h,collisionBoundary:f,collisionPadding:m,sticky:g,disableAnchorTracking:_,keepMounted:x,nodeId:C,collisionAvoidance:v,adaptiveOrigin:O?ye:void 0}),ce=w.useState(`domReferenceElement`);Rt(()=>{let e=ce,t=A.current;if(e&&(A.current=e),t&&e&&e!==t){b.set(`instantType`,void 0);let e=new AbortController;return oe(()=>{b.set(`instantType`,`trigger-change`)},e.signal),()=>{e.abort()}}},[ce,oe,b]),an(E&&ne===!0&&ee!==`trigger-hover`,re===`touch`,ie,te);let j=z.useCallback(e=>{b.set(`positionerElement`,e)},[b]),M=st(e,{open:E,side:se.side,align:se.align,anchorHidden:se.anchorHidden,instant:D},{styles:se.positionerStyles,transitionStatus:ae,props:y,refs:[t,j],hidden:!T,inert:!E});return(0,R.jsxs)(Lz.Provider,{value:se,children:[T&&ne===!0&&ee!==`trigger-hover`&&(0,R.jsx)(wn,{ref:b.context.internalBackdropRef,inert:sn(!E),cutout:te}),(0,R.jsx)(k,{id:C,children:M})]})}),Bz=z.createContext(void 0);function Vz(){let[e,t]=z.useState(0),n=Pt(()=>(t(e=>e+1),()=>{t(e=>Math.max(0,e-1))}));return{context:z.useMemo(()=>({register:n}),[n]),hasClosePart:e>0}}function Hz(e){let{value:t,children:n}=e;return(0,R.jsx)(Bz.Provider,{value:t,children:n})}var Uz={...dt,...it},Wz=z.forwardRef(function(e,t){let{render:n,className:r,style:i,initialFocus:a,finalFocus:o,...s}=e,{store:c}=Ez(),l=Rz(),u=Cn(!0)!=null,{context:d,hasClosePart:f}=Vz(),p=c.useState(`open`),m=c.useState(`openMethod`),h=c.useState(`instantType`),_=c.useState(`transitionStatus`),v=c.useState(`popupProps`),y=c.useState(`titleElementId`),b=c.useState(`descriptionElementId`),x=c.useState(`modal`),S=c.useState(`mounted`),C=c.useState(`openChangeReason`),w=c.useState(`activeTriggerElement`),T=c.useState(`floatingRootContext`),E=T.useState(`floatingId`),ee=c.useState(`disabled`),te=c.useState(`openOnHover`),ne=c.useState(`closeDelay`),re=s.id??E;g({open:p,ref:c.context.popupRef,onComplete(){p&&c.context.onOpenChangeComplete?.(!0)}}),Ne(T,{enabled:te&&!ee,closeDelay:ne});let ie=a===void 0?Xe(c.context.popupRef):a,D=x!==!1&&f;c.useSyncedValue(`focusManagerModal`,D);let ae=z.useCallback(e=>{c.set(`popupElement`,e)},[c]),O=Ft(`div`,e,{state:{open:p,side:l.side,align:l.align,instant:h,transitionStatus:_},ref:[t,c.context.popupRef,ae],props:[v,{id:re,role:`dialog`,...mt,"aria-labelledby":y,"aria-describedby":b,onKeyDown(e){u&&Qt.has(e.key)&&e.stopPropagation()}},xe(_),s],stateAttributesMapping:Uz});return(0,R.jsx)(rn,{context:T,openInteractionType:m,modal:D,disabled:!S||C===`trigger-hover`,initialFocus:ie,returnFocus:o,restoreFocus:`popup`,previousFocusableElement:Bt(w)?w:void 0,nextFocusableElement:c.context.triggerFocusTargetRef,beforeContentFocusGuardRef:c.context.beforeContentFocusGuardRef,children:(0,R.jsx)(Hz,{value:d,children:O})})});function Gz({...e}){return(0,R.jsx)(jz,{"data-slot":`popover`,...e})}function Kz(e){return(0,R.jsx)(Nz,{"data-slot":`popover-trigger`,...e})}function qz({className:e,align:t=`center`,alignOffset:n=0,side:r=`bottom`,sideOffset:i=4,...a}){return(0,R.jsx)(Iz,{children:(0,R.jsx)(zz,{align:t,alignOffset:n,side:r,sideOffset:i,className:`isolate z-50`,children:(0,R.jsx)(Wz,{"data-slot":`popover-content`,className:L(`z-50 flex w-72 origin-(--transform-origin) flex-col gap-4 rounded-md bg-popover p-4 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95`,e),...a})})})}var Jz={success:`border-emerald-700/20 bg-emerald-700/10 text-emerald-700 dark:border-emerald-400/30 dark:bg-emerald-400/10 dark:text-emerald-400`,failed:`border-red-500/20 bg-red-500/10 text-red-500 dark:border-red-400/30 dark:bg-red-400/10 dark:text-red-400`,warning:`border-amber-700/20 bg-amber-700/10 text-amber-700 dark:border-amber-400/30 dark:bg-amber-400/10 dark:text-amber-400`,loading:`border-purple-500/20 bg-purple-500/10 text-purple-500 dark:border-purple-400/30 dark:bg-purple-400/10 dark:text-purple-400 animate-spin`},Yz=`size-4 shrink-0 rounded-full border p-0.5`;function Xz({state:e,className:t}){let n=L(Yz,Jz[e],t);switch(e){case`success`:return(0,R.jsx)(Fr,{className:n,"aria-hidden":!0});case`failed`:return(0,R.jsx)(zr,{className:n,"aria-hidden":!0});case`warning`:return(0,R.jsx)(Ki,{className:n,"aria-hidden":!0});case`loading`:return(0,R.jsx)(fi,{className:n,"aria-hidden":!0});default:return null}}function Zz(){return`text-emerald-700 dark:text-emerald-400`}function Qz({onStop:e,showCopiedBanner:t=!1}){return(0,R.jsxs)(R.Fragment,{children:[t&&(0,R.jsxs)(`div`,{className:L(`flex items-center gap-2 text-sm -mt-1`,Zz()),children:[(0,R.jsx)(Xz,{state:`success`}),(0,R.jsx)(`span`,{children:`URL copied to clipboard`})]}),(0,R.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,R.jsx)(`h4`,{className:`font-semibold text-sm`,children:`Tunnel URL`}),(0,R.jsxs)(`a`,{href:`https://manufact.com/docs/tunneling`,target:`_blank`,rel:`noopener noreferrer`,className:`flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground transition-colors`,children:[`Docs`,(0,R.jsx)(Ar,{className:`size-3`})]})]}),(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`h5`,{className:`font-semibold text-sm mb-2`,children:`Use in ChatGPT & Claude`}),(0,R.jsxs)(`ol`,{className:`space-y-2 text-xs text-muted-foreground`,children:[(0,R.jsxs)(`li`,{className:`flex gap-2`,children:[(0,R.jsx)(`span`,{className:`font-semibold text-foreground`,children:`1.`}),(0,R.jsxs)(`span`,{children:[`Enable`,` `,(0,R.jsx)(`a`,{href:`https://chatgpt.com/plugins#settings/Security`,target:`_blank`,rel:`noopener noreferrer`,className:`font-medium text-foreground underline underline-offset-2 hover:text-purple-600 dark:hover:text-purple-400`,children:`dev mode`}),` `,`from settings`]})]}),(0,R.jsxs)(`li`,{className:`flex gap-2`,children:[(0,R.jsx)(`span`,{className:`font-semibold text-foreground`,children:`2.`}),(0,R.jsxs)(`span`,{children:[(0,R.jsx)(`a`,{href:`https://chatgpt.com/plugins#settings/Connectors?create-connector=true&redirectAfter=%2Fplugins`,target:`_blank`,rel:`noopener noreferrer`,className:`font-medium text-foreground underline underline-offset-2 hover:text-purple-600 dark:hover:text-purple-400`,children:`Add a connector`}),` `,`in App & Connectors`]})]}),(0,R.jsxs)(`li`,{className:`flex gap-2`,children:[(0,R.jsx)(`span`,{className:`font-semibold text-foreground`,children:`3.`}),(0,R.jsx)(`span`,{children:`Use the tunnel URL in the input`})]})]})]}),(0,R.jsxs)(`button`,{type:`button`,onClick:()=>void e(),className:`flex items-center gap-1.5 text-xs text-red-600 dark:text-red-400 hover:text-red-700 dark:hover:text-red-300 transition-colors cursor-pointer`,children:[(0,R.jsx)(Vi,{className:`size-3 fill-current`}),`Stop Tunnel`]})]})}function $z(e){try{let t=new URL(e),n=t.pathname+t.search;return t.host+(n&&n!==`/`?n:``)}catch{return e}}function eB({copied:e,onCopy:t,className:n}){return(0,R.jsx)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),t()},"aria-label":e?`URL copied`:`Copy URL`,className:L(`shrink-0 cursor-pointer p-0.5 rounded-sm text-muted-foreground hover:text-foreground transition-opacity opacity-0 group-hover:opacity-100`,n),children:e?(0,R.jsx)(Xz,{state:`success`,className:`size-3.5`}):(0,R.jsx)(Wr,{className:`size-3.5`})})}function tB({url:e,className:t,tunnelPopover:n}){let[r,i]=(0,z.useState)(!1),[a,o]=(0,z.useState)(!1);if(!e)return null;let s=$z(e),c=n?.mcpUrl??e,l=!!n,u=async()=>{try{await zj(c),i(!0),setTimeout(()=>i(!1),2e3)}catch{IF.error(`Failed to copy URL`)}};(0,z.useEffect)(()=>{if(!n?.autoCopyOnOpen){o(!1);return}o(!0),i(!0);let e=setTimeout(()=>i(!1),2e3);return()=>clearTimeout(e)},[n?.autoCopyOnOpen]);let d=(0,R.jsxs)(R.Fragment,{children:[l?(0,R.jsx)(Lr,{className:`size-3.5 shrink-0`}):(0,R.jsx)(ei,{className:`size-3.5 shrink-0`}),(0,R.jsx)(`span`,{className:`truncate max-w-[min(24rem,30vw)]`,children:s})]}),f=L(`flex items-center gap-1 min-w-0 truncate text-left text-sm cursor-pointer`,l?`text-purple-600 dark:text-purple-400`:`text-blue-500`);return(0,R.jsxs)(`div`,{className:L(`group flex items-center gap-1.5 min-w-0`,t),children:[l?(0,R.jsxs)(Gz,{open:n.open,onOpenChange:n.onOpenChange,children:[(0,R.jsx)(Kz,{render:(0,R.jsx)(`button`,{type:`button`,className:L(f,`hover:opacity-80`),children:d}),nativeButton:!0}),(0,R.jsx)(qz,{className:`w-[calc(100vw-2rem)] sm:w-96`,align:`start`,sideOffset:4,children:(0,R.jsx)(Qz,{showCopiedBanner:a,onStop:async()=>{n.onOpenChange(!1),await n.onStop()}})})]}):(0,R.jsx)(`span`,{className:f,children:d}),(0,R.jsx)(eB,{copied:r,onCopy:()=>void u()})]})}function nB({devFromCli:e,isTunnelStarting:t,waitTicks:n,onStart:r}){if(t)return(0,R.jsxs)(`button`,{disabled:!0,className:`flex items-center gap-1 h-6 px-2 bg-violet-50 dark:bg-violet-950/40 border border-violet-200 dark:border-violet-800 rounded-full opacity-75 cursor-wait shrink-0`,children:[(0,R.jsx)(fi,{className:`size-3 text-violet-500 dark:text-violet-400 animate-spin`}),(0,R.jsxs)(`span`,{className:`text-xs font-medium text-violet-600 dark:text-violet-300 hidden lg:inline`,children:[`Start Tunnel `,(0,R.jsxs)(`span`,{className:`tabular-nums`,children:[n,`s`]})]})]});let i=e===!0,a=e===null;return(0,R.jsxs)(`button`,{type:`button`,onClick:()=>void r(),disabled:!i||a,title:e===!1?"Run `mcp-use dev` from your project to enable tunneling.":a?`Checking dev server…`:void 0,className:L(`flex items-center gap-1 h-6 px-2 border rounded-full transition-colors shrink-0`,i&&!a?`bg-violet-50 dark:bg-violet-950/40 border-violet-200 dark:border-violet-800 hover:bg-violet-100 dark:hover:bg-violet-900/50 cursor-pointer`:`bg-violet-50/60 dark:bg-violet-950/20 border-violet-200 dark:border-violet-800 cursor-not-allowed opacity-70`),children:[a?(0,R.jsx)(fi,{className:`size-3 text-violet-500 dark:text-violet-400 animate-spin`}):(0,R.jsx)(Lr,{className:`size-3 text-violet-500 dark:text-violet-400`}),(0,R.jsx)(`span`,{className:`text-xs font-medium text-violet-600 dark:text-violet-300 hidden lg:inline`,children:`Start Tunnel`})]})}function rB(){return typeof window>`u`?!1:window.__MCP_DEV_CLI__===!0}async function iB(){try{let e=await fetch(Gj(`dev/info`));return e.ok?await e.json():null}catch{return null}}function aB({tunnelUrl:e,setTunnelUrl:t,isTunnelStarting:n,setIsTunnelStarting:r,onTunnelStarted:i}){let[a,o]=(0,z.useState)(null),[s,c]=(0,z.useState)(null),[l,u]=(0,z.useState)(0),d=(0,z.useCallback)((e,n)=>{let r=n?.syncTunnel??!1;if(o(!!e.fromCli),e.mcpUrl&&c(e.mcpUrl),!r)return;if(e.tunnelUrl){t(new URL(e.tunnelUrl).origin);return}let i=xz(e.mcpUrl??null);if(i){t(i);return}t(null)},[t]);return(0,z.useEffect)(()=>{if(!n){u(20);return}u(20);let e=setInterval(()=>u(e=>e>0?e-1:0),1e3);return()=>clearInterval(e)},[n]),(0,z.useEffect)(()=>{let e=!1;if(!rB()){o(!1);return}return(async()=>{let t=await iB();e||(t?d(t,{syncTunnel:!0}):o(!1))})(),()=>{e=!0}},[d]),{devFromCli:a,mcpUrl:s,waitTicks:l,handleStartTunnel:(0,z.useCallback)(async()=>{if(a===!1){IF.error("Start Tunnel requires `mcp-use dev` from your project directory.");return}r(!0);let e=!1;try{let t=await fetch(Gj(`dev/start-tunnel`),{method:`POST`});if(!t.ok){let e=await t.json().catch(()=>({}));IF.error(e.error||`Failed to start tunnel`);return}let n=await iB();if(n?.tunnelUrl||n?.mcpUrl){d(n,{syncTunnel:!0});let e=n.mcpUrl??(n.tunnelUrl?`${n.tunnelUrl.replace(/\/+$/,``)}/mcp`:null);e&&Rj(e),i?.()}e=!0}catch{IF.error(`Failed to start tunnel`)}finally{r(!1)}try{bT(new jo({action:`start`,success:e})).catch(()=>{})}catch{}},[d,a,i,r]),handleStopTunnel:(0,z.useCallback)(async()=>{r(!0);let n=!1;try{let e=await fetch(Gj(`dev/stop-tunnel`),{method:`POST`});if(!e.ok){let t=await e.json().catch(()=>({}));IF.error(t.error||`Failed to stop tunnel`);return}t(null),c(null),IF.success(`Tunnel stopped`),n=!0}catch{IF.error(`Failed to stop tunnel`)}finally{r(!1)}try{bT(new jo({action:`stop`,success:n,tunnelUrl:e})).catch(()=>{})}catch{}},[r,t,e])}}function oB(e){let t=window.matchMedia(`(min-width: 1024px)`);return t.addEventListener(`change`,e),()=>t.removeEventListener(`change`,e)}function sB(){return window.matchMedia(`(min-width: 1024px)`).matches}function cB(){return!0}function lB(){return(0,z.useSyncExternalStore)(oB,sB,cB)}function uB(e){let[t,n]=(0,z.useState)(!1),[r,i]=(0,z.useState)(!1),a=lB(),o=(0,z.useCallback)(()=>{n(!0),i(!0)},[]);return(0,z.useEffect)(()=>{e||(n(!1),i(!1))},[e]),(0,z.useEffect)(()=>{if(!e)return;let t=new URLSearchParams(window.location.search);if(!t.has(`openTunnelPopover`))return;n(!0),i(!0),t.delete(`openTunnelPopover`);let r=t.toString();window.history.replaceState({},``,`${window.location.pathname}${r?`?${r}`:``}`)},[e]),{open:t,onOpenChange:(0,z.useCallback)(e=>{n(e),e||i(!1)},[]),isLgUp:a,autoCopyOnOpen:r,openWithAutoCopy:o}}function dB({connections:e,selectedServer:t,activeTab:n,onServerSelect:r,onTabChange:i,embedded:a=!1,sidebarCollapsed:o=!1}){let{tunnelUrl:s,isTunnelStarting:c,setTunnelUrl:l,setIsTunnelStarting:u,embeddedConfig:d}=nL(),[f,p]=(0,z.useState)(!1),[m]=(0,z.useState)(!0),h=uB(s),g=aB({tunnelUrl:s,setTunnelUrl:l,isTunnelStarting:c,setIsTunnelStarting:u,onTunnelStarted:h.openWithAutoCopy});if(d.singleTab)return null;let _=d.visibleTabs?wz.filter(e=>e.id===`separator`||d.visibleTabs.includes(e.id)):wz,v=!!t,y=!!t&&(qj(t.url??``)||Jj(t.url??``)||!!s),b=t?s?`${s.replace(/\/+$/,``)}${Uj()}`:t.url??``:``,x=g.mcpUrl??(s?`${s.replace(/\/+$/,``)}${Uj()}`:null),S=(e,n)=>{if(!t||!b)return null;let r=e===`desktop`?h.isLgUp:!h.isLgUp;return(0,R.jsxs)(`div`,{className:`flex items-center gap-1 min-w-0`,children:[(0,R.jsx)(tB,{url:b,className:n,tunnelPopover:s&&x&&r?{mcpUrl:x,onStop:g.handleStopTunnel,open:h.open,onOpenChange:h.onOpenChange,autoCopyOnOpen:h.autoCopyOnOpen}:void 0}),y&&!s&&(0,R.jsx)(nB,{devFromCli:g.devFromCli,isTunnelStarting:c,waitTicks:g.waitTicks,onStart:g.handleStartTunnel})]})},C=()=>a?null:(0,R.jsxs)(`div`,{className:`flex items-center gap-2 sm:gap-3 flex-shrink-0`,children:[t&&(0,R.jsx)(R.Fragment,{children:(0,R.jsx)(oz,{serverConfig:{url:b,name:Xj(t),headers:cM(t),serverId:t.id},onSuccess:e=>IF.success(`Opening in ${e}...`),onError:e=>IF.error(`Failed: ${e.message}`),trigger:(0,R.jsxs)(Gt,{variant:`ghost`,className:`bg-zinc-200 dark:bg-zinc-800 hover:bg-zinc-300 dark:hover:bg-zinc-700 rounded-full transition-colors px-3 flex items-center justify-center`,"aria-label":`Add to Client`,children:[(0,R.jsxs)(`span`,{className:`xl:hidden hidden sm:flex items-center gap-1`,children:[(0,R.jsx)(Ai,{className:`size-3`}),`Client`]}),(0,R.jsxs)(`span`,{className:`hidden xl:flex items-center gap-1`,children:[`Add to Client`,(0,R.jsx)(Ir,{className:`size-3`})]})]})})}),(0,R.jsx)(`a`,{href:f?`https://manufact.com/cloud?ref=mcp-use-inspector`:`https://manufact.com/signup?ref=mcp-use-inspector`,target:`_blank`,rel:`noopener noreferrer`,onClick:()=>{try{bT(new Mo({referrer:`mcp-use-inspector`})).catch(()=>{})}catch{}},className:`inline-flex h-8 items-center justify-center rounded-full border border-blue-500/25 bg-blue-500/10 px-4 text-[13px] text-blue-500 outline-none cursor-pointer transition-colors hover:bg-blue-500/15 dark:border-blue-400/30 dark:bg-blue-400/10 dark:text-blue-400 dark:hover:bg-blue-400/15 focus-visible:ring-1 focus-visible:ring-ring`,children:(0,R.jsx)(`span`,{className:`[text-box:trim-both_cap_alphabetic]`,children:`Deploy`})}),w()]}),w=(e=!1)=>d.chatApiUrl?(0,R.jsx)(rz,{chatApiUrl:d.chatApiUrl,onUserResolved:e=>p(!!e),compact:e}):null;return(0,R.jsxs)(`header`,{className:`w-full min-w-0 shrink-0 overflow-hidden`,children:[(0,R.jsxs)(`div`,{className:`hidden lg:flex h-(--header-height) items-center justify-between gap-3 px-4 md:pl-0 md:pr-6`,children:[(0,R.jsx)(`div`,{className:`flex items-center gap-3 min-w-0 flex-1`,children:!a&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`div`,{className:L(`hidden lg:block shrink-0`,v&&o&&`-mr-[calc(var(--sidebar-width-icon)/2-0.625rem)]`),children:(0,R.jsx)(sz,{pinSymbolInIconColumn:!0,showLabel:!v||!o,state:v&&o?`collapsed`:`expanded`})}),(0,R.jsx)(`span`,{className:`text-sm text-muted-foreground/60 shrink-0 [text-box:trim-both_cap_alphabetic]`,children:`/`}),(0,R.jsx)(bz,{connections:e,selectedServer:t,onServerSelect:r,variant:`header`}),S(`desktop`)]})}),C()]}),(0,R.jsxs)(`div`,{className:`flex lg:hidden min-w-0 w-full flex-col overflow-hidden pt-(--mobile-chrome-gap)`,children:[(0,R.jsx)(`div`,{className:`flex min-h-0 items-center gap-2 pb-(--mobile-chrome-gap)`,children:!a&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-2.5 overflow-hidden`,children:[(0,R.jsx)(sz,{state:`collapsed`,showLabel:!0,labelParts:`inspector`,className:`shrink-0`}),(0,R.jsx)(`span`,{className:`shrink-0 px-0.5 text-sm text-muted-foreground/60 [text-box:trim-both_cap_alphabetic]`,children:`/`}),(0,R.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,R.jsx)(bz,{connections:e,selectedServer:t,onServerSelect:r,variant:`header`,compactHeader:!0})})]}),(0,R.jsx)(`div`,{className:`shrink-0`,children:w(!0)})]})}),t&&(0,R.jsx)(`div`,{className:`w-full min-w-0 pb-(--mobile-chrome-gap) lg:hidden`,children:(0,R.jsx)(BR,{value:n,onValueChange:e=>i(e),collapsed:m,className:`w-full`,children:(0,R.jsx)(VR,{className:`w-full gap-0 border-0 bg-transparent p-0 [&_[role=tablist]]:justify-between`,children:_.filter(e=>e.id!==`separator`).map(e=>{let r=Sz(e.id,t);return(0,R.jsx)(UR,{value:e.id,"data-testid":`tab-${e.id}`,icon:e.icon,iconOnly:!0,title:e.label,badge:r>0?(0,R.jsx)(iz,{count:r,isActive:n===e.id,overlay:!0}):void 0,className:`size-9 shrink-0 rounded-full p-0`,children:(0,R.jsx)(`span`,{className:`sr-only`,children:e.label})},e.id)})})})})]})]})}function fB({collapsed:e,onToggle:t}){let n=e?`Expand sidebar`:`Collapse sidebar`;return(0,R.jsxs)(et,{children:[(0,R.jsx)(we,{render:(0,R.jsxs)(Gt,{type:`button`,variant:`ghost`,size:`icon-sm`,tabIndex:-1,"aria-label":n,onClick:t,className:L(`border-border absolute top-1/2 right-0 z-30 hidden size-7 min-h-7 min-w-7 -translate-y-1/2 translate-x-1/2 rounded-full border bg-background lg:flex`,`opacity-0 transition-opacity duration-200 group-hover/sidebar:opacity-100 focus-visible:opacity-100`),children:[(0,R.jsx)(wi,{className:`size-4`}),(0,R.jsx)(`span`,{className:`sr-only`,children:n})]}),nativeButton:!0}),(0,R.jsx)(lt,{side:`right`,children:n})]})}function pB({className:e}){return(0,R.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`24`,height:`24`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentcolor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,className:e,children:[(0,R.jsx)(`path`,{d:`M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4`}),(0,R.jsx)(`path`,{d:`M9 18c-4.51 2-5-2-7-2`})]})}var mB=z.createContext(void 0);function hB(){let e=z.useContext(mB);if(e===void 0)throw Error(Vt(63));return e}var gB=function(e){return e.checked=`data-checked`,e.unchecked=`data-unchecked`,e.disabled=`data-disabled`,e.readonly=`data-readonly`,e.required=`data-required`,e.valid=`data-valid`,e.invalid=`data-invalid`,e.touched=`data-touched`,e.dirty=`data-dirty`,e.filled=`data-filled`,e.focused=`data-focused`,e}({}),_B={...Tn,checked(e){return e?{[gB.checked]:``}:{[gB.unchecked]:``}}};function vB(e,t,n,r=!0,i){let[a,o]=z.useState(),s=D(i?`${i}-label`:void 0),c=e??t??a;return Rt(()=>{let i=e||t||!r?void 0:yB(n.current,s);a!==i&&o(i)}),c}function yB(e,t){let n=bB(e);if(n)return!n.id&&t&&(n.id=t),n.id||void 0}function bB(e){if(!e)return;let t=e.parentElement;if(t&&t.tagName===`LABEL`)return t;let n=e.id;if(n){let t=e.nextElementSibling;if(t&&t.htmlFor===n)return t}let r=e.labels;return r&&r[0]}var xB=z.forwardRef(function(e,t){let{checked:n,className:r,defaultChecked:i,"aria-labelledby":a,form:o,id:s,inputRef:c,name:l,nativeButton:u=!1,onCheckedChange:d,readOnly:f=!1,required:p=!1,disabled:m=!1,render:h,uncheckedValue:g,value:_,style:v,...y}=e,{clearErrors:b}=An(),{state:x,setTouched:S,setDirty:C,validityData:w,setFilled:T,setFocused:E,validationMode:ee,disabled:te,name:re,validation:ie}=On(),{labelId:ae}=kn(),O=te||m,k=re??l,A=z.useRef(null),oe=Kt(A,c,ie.inputRef),se=z.useRef(null),ce=D(),j=cn({id:s,implicit:!1,controlRef:se}),M=u?void 0:j,[N,le]=Yt({controlled:n,default:!!i,name:`Switch`,state:`checked`});En(se,ce,N,void 0,!O,l),Rt(()=>{A.current&&T(A.current.checked)},[A,T]),Dn(N,()=>{b(k),C(N!==w.initialValue),T(N),ie.change(N)});let{getButtonProps:ue,buttonRef:de}=Lt({disabled:O,native:u}),fe=vB(a,ae,A,!u,M),pe={id:u?j:ce,role:`switch`,"aria-checked":N,"aria-readonly":f||void 0,"aria-required":p||void 0,"aria-labelledby":fe,onFocus(){O||E(!0)},onBlur(){let e=A.current;!e||O||(S(!0),E(!1),ee===`onBlur`&&ie.commit(e.checked))},onClick(e){if(f||O)return;e.preventDefault();let t=A.current;t&&t.dispatchEvent(new(Mt(t)).PointerEvent(`click`,{bubbles:!0,shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,altKey:e.altKey,metaKey:e.metaKey}))}},me=zt({checked:N,disabled:O,form:o,id:M,name:k,required:p,style:k?Te:He,tabIndex:-1,type:`checkbox`,"aria-hidden":!0,ref:oe,onChange(e){if(e.nativeEvent.defaultPrevented)return;if(f){e.preventDefault();return}let t=e.currentTarget.checked,n=ne(be,e.nativeEvent);d?.(t,n),!n.isCanceled&&le(t)},onFocus(){se.current?.focus()}},e=>ie.getValidationProps(O,e),_===void 0?Wt:{value:_}),he=z.useMemo(()=>({...x,checked:N,disabled:O,readOnly:f,required:p}),[x,N,O,f,p]),ge=Ft(`span`,e,{state:he,ref:[t,se,de],props:[pe,y,ue,e=>ie.getValidationProps(O,e)],stateAttributesMapping:_B});return(0,R.jsxs)(mB.Provider,{value:he,children:[ge,!N&&k&&g!==void 0&&(0,R.jsx)(`input`,{type:`hidden`,form:o,name:k,value:g,disabled:O}),(0,R.jsx)(`input`,{...me,suppressHydrationWarning:!0})]})}),SB=z.forwardRef(function(e,t){let{render:n,className:r,style:i,...a}=e;return Ft(`span`,e,{state:hB(),ref:t,stateAttributesMapping:_B,props:a})}),CB=34,wB=20,TB=16,EB=2,DB=4,OB=2;function kB(e){return`label`in e&&typeof e.label==`string`}var AB=(0,z.forwardRef)(({label:e,checked:t,onToggle:n,disabled:r=!1,thumbTransition:i,uncheckedTrackColor:a,uncheckedTrackColorHovered:o,className:s,...c},l)=>{let u=(0,z.useId)(),d=(0,z.useRef)(!1),[f,p]=(0,z.useState)(!1),[m,h]=(0,z.useState)(!1),g=(0,z.useRef)(!1),_=(0,z.useRef)(!1),v=(0,z.useRef)(null),y=ia(t?16:EB);(0,z.useEffect)(()=>{d.current=!0},[]);let b=m?20:f?18:TB,x=m?TB-DB:TB,S=m?4:EB,C=b-TB,w=t?16-C:EB;(0,z.useEffect)(()=>{g.current||(d.current?ka(y,w,i??pt.moderate):y.set(w))},[w,y,i]);let T=(0,z.useCallback)(e=>{r||e.pointerType===`mouse`&&e.button!==0||(h(!0),g.current=!1,_.current=!1,v.current={clientX:e.clientX,originX:y.get()},e.currentTarget.setPointerCapture(e.pointerId))},[r,y]),E=(0,z.useCallback)(e=>{if(!v.current)return;let t=e.clientX-v.current.clientX;if(!g.current){if(Math.abs(t)<OB)return;g.current=!0}let n=EB,r=CB-EB-20,i=v.current.originX+t;y.set(Math.max(n,Math.min(r,i)))},[y]),ee=(0,z.useCallback)(e=>{v.current&&=(h(!1),g.current&&(_.current=!0,g.current=!1,e&&(y.get()>14/2===t?ka(y,t?16:EB,i??pt.moderate):n()),requestAnimationFrame(()=>{_.current=!1})),null)},[t,n,y,i]);return(0,R.jsxs)(`div`,{ref:l,className:L(`relative z-10 flex items-center gap-2.5 px-3 py-2 cursor-pointer select-none touch-none`,r&&`opacity-50 pointer-events-none`,s),onPointerEnter:e=>{e.pointerType===`mouse`&&p(!0)},onPointerLeave:()=>p(!1),onPointerDown:T,onPointerMove:E,onPointerUp:()=>ee(!0),onPointerCancel:()=>{v.current&&=(h(!1),g.current&&(g.current=!1,ka(y,t?16:EB,i??pt.moderate)),null)},onClick:()=>{r||_.current||n()},...c,children:[(0,R.jsx)(xB,{checked:t,"aria-labelledby":u,onCheckedChange:()=>{_.current||n()},disabled:r,tabIndex:0,className:L(`relative shrink-0 rounded-full outline-none cursor-pointer`,`transition-colors duration-80`,`focus-visible:ring-1 focus-visible:ring-[color:var(--focus-ring,#6B97FF)] focus-visible:ring-offset-2 focus-visible:ring-offset-background`),style:{width:CB,height:wB,backgroundColor:t?f?`color-mix(in oklab, var(--primary) 88%, black)`:`var(--primary)`:f?o??`color-mix(in oklab, var(--accent), rgb(var(--overlay)) 10%)`:a??`var(--accent)`},onClick:e=>e.stopPropagation(),children:(0,R.jsx)(SB,{render:e=>{let{style:t,onDrag:n,onDragStart:r,onDragEnd:a,onAnimationStart:o,onAnimationEnd:s,onAnimationIteration:c,...l}=e;return(0,R.jsx)(Pe.span,{...l,className:`absolute top-0 left-0 block rounded-full bg-white shadow-sm`,initial:!1,style:{...t,x:y},animate:{y:S,width:b,height:x},transition:d.current?i??pt.moderate:{duration:0}})}})}),(0,R.jsx)(`span`,{id:u,className:L(`text-[13px] [text-box:trim-both_cap_alphabetic] transition-[color] duration-80`,t?`text-foreground`:`text-muted-foreground`),children:e})]})});AB.displayName=`FluidSwitch`;var jB=(0,z.forwardRef)(({checked:e,defaultChecked:t=!1,onCheckedChange:n,disabled:r=!1,className:i},a)=>{let[o,s]=(0,z.useState)(t),c=e??o;return(0,R.jsx)(xB,{ref:a,checked:c,disabled:r,onCheckedChange:t=>{e===void 0&&s(t),n?.(t)},className:L(`peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-xs transition-colors duration-80`,`focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[color:var(--focus-ring,#6B97FF)]`,`disabled:cursor-not-allowed disabled:opacity-50`,`data-checked:bg-primary data-unchecked:bg-input`,i),children:(0,R.jsx)(SB,{className:L(`pointer-events-none block size-4 rounded-full bg-background shadow-sm ring-0 transition-transform duration-80`,`data-checked:translate-x-4 data-unchecked:translate-x-0`)})})});jB.displayName=`ShadcnSwitch`;var MB=(0,z.forwardRef)((e,t)=>kB(e)?(0,R.jsx)(AB,{ref:t,...e}):(0,R.jsx)(jB,{ref:t,...e}));MB.displayName=`Switch`;function NB({className:e}){return(0,R.jsx)(`svg`,{viewBox:`0 -28.5 256 256`,className:e,fill:`currentColor`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":!0,children:(0,R.jsx)(`path`,{d:`M216.856339,16.5966031 C200.285002,8.84328665 182.566144,3.2084988 164.041564,0 C161.766523,4.11318106 159.108624,9.64549908 157.276099,14.0464379 C137.583995,11.0849896 118.072967,11.0849896 98.7430163,14.0464379 C96.9108417,9.64549908 94.1925838,4.11318106 91.8971895,0 C73.3526068,3.2084988 55.6133949,8.86399117 39.0420583,16.6376612 C5.61752293,67.146514 -3.4433191,116.400813 1.08711069,164.955721 C23.2560196,181.510915 44.7403634,191.567697 65.8621325,198.148576 C71.0772151,190.971126 75.7283628,183.341335 79.7352139,175.300261 C72.104019,172.400575 64.7949724,168.822202 57.8887866,164.667963 C59.7209612,163.310589 61.5131304,161.891452 63.2445898,160.431257 C105.36741,180.133187 151.134928,180.133187 192.754523,160.431257 C194.506336,161.891452 196.298154,163.310589 198.110326,164.667963 C191.183787,168.842556 183.854737,172.420929 176.223542,175.320965 C180.230393,183.341335 184.861538,190.991831 190.096624,198.16893 C211.238746,191.588051 232.743023,181.531619 254.911949,164.955721 C260.227747,108.668201 245.831087,59.8662432 216.856339,16.5966031 Z M85.4738752,135.09489 C72.8290281,135.09489 62.4592217,123.290155 62.4592217,108.914901 C62.4592217,94.5396472 72.607595,82.7145587 85.4738752,82.7145587 C98.3405064,82.7145587 108.709962,94.5189427 108.488529,108.914901 C108.508531,123.290155 98.3405064,135.09489 85.4738752,135.09489 Z M170.525237,135.09489 C157.88039,135.09489 147.510584,123.290155 147.510584,108.914901 C147.510584,94.5396472 157.658606,82.7145587 170.525237,82.7145587 C183.391518,82.7145587 193.761324,94.5189427 193.539891,108.914901 C193.539891,123.290155 183.391518,135.09489 170.525237,135.09489 Z`,fillRule:`nonzero`})})}var PB=`flex size-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-sidebar-accent hover:text-sidebar-accent-foreground`,FB=`color-mix(in oklab, var(--sidebar-foreground) 22%, var(--sidebar))`,IB=`color-mix(in oklab, var(--sidebar-foreground) 30%, var(--sidebar))`,LB=`data-unchecked:!bg-zinc-300 dark:data-unchecked:!bg-zinc-600`;function RB({collapsed:e,rpcLoggerOpen:t,onRpcLoggerOpenChange:n,onCommandPaletteOpen:r}){let{embeddedConfig:i}=nL(),{theme:a,setTheme:o}=dz(),{user:s}=WR(i.chatApiUrl),c=s?`https://manufact.com/cloud?ref=mcp-use-inspector`:`https://manufact.com/signup?ref=mcp-use-inspector`,l=()=>{try{bT(new Mo({referrer:`mcp-use-inspector-sidebar`})).catch(()=>{})}catch{}};return(0,R.jsx)(`footer`,{className:`mt-auto shrink-0`,children:(0,R.jsxs)(`div`,{className:L(`flex flex-col`,e?`items-center gap-2 px-2 py-3`:`gap-3 px-(--sidebar-nav-inset-x) py-4`),children:[e?(0,R.jsxs)(et,{children:[(0,R.jsx)(we,{render:(0,R.jsx)(`div`,{className:`flex size-8 items-center justify-center`,children:(0,R.jsx)(MB,{checked:t,onCheckedChange:n,"aria-label":`RPC Panel`,className:L(`scale-75`,LB)})}),nativeButton:!1}),(0,R.jsx)(lt,{side:`right`,children:`RPC Panel`})]}):(0,R.jsx)(MB,{label:`RPC Panel`,checked:t,onToggle:()=>n(!t),uncheckedTrackColor:FB,uncheckedTrackColorHovered:IB,className:`w-full flex-row-reverse justify-between`}),e?(0,R.jsxs)(et,{children:[(0,R.jsx)(we,{render:(0,R.jsx)(`a`,{href:c,target:`_blank`,rel:`noopener noreferrer`,onClick:l,className:PB,"aria-label":`Deploying your MCP Server? Try manufact.com`,children:(0,R.jsx)(Ar,{className:`size-4`})}),nativeButton:!1}),(0,R.jsx)(lt,{side:`right`,children:`Deploying your MCP Server? Try manufact.com`})]}):(0,R.jsxs)(`a`,{href:c,target:`_blank`,rel:`noopener noreferrer`,onClick:l,className:`relative block rounded-xl border border-sidebar-border bg-white p-3 transition-colors hover:bg-sidebar-accent/50 dark:bg-black`,children:[(0,R.jsx)(Ar,{className:`absolute top-2.5 right-2.5 size-3.5 text-muted-foreground`,"aria-hidden":!0}),(0,R.jsx)(`p`,{className:`pr-5 text-xs leading-snug text-muted-foreground`,children:`Deploying your MCP Server?`}),(0,R.jsxs)(`p`,{className:`mt-0.5 text-xs leading-snug`,children:[`Try`,` `,(0,R.jsx)(`span`,{className:`font-medium underline underline-offset-2`,children:`manufact.com`})]})]}),(0,R.jsxs)(`div`,{className:L(`flex`,e?`flex-col items-center gap-1`:`flex-row items-center gap-2`),children:[(0,R.jsxs)(et,{children:[(0,R.jsx)(we,{render:(0,R.jsx)(`a`,{href:`https://github.com/mcp-use/mcp-use`,target:`_blank`,rel:`noopener noreferrer`,className:PB,"aria-label":`GitHub`,children:(0,R.jsx)(pB,{className:`size-4`})}),nativeButton:!1}),(0,R.jsx)(lt,{side:e?`right`:`top`,children:`GitHub`})]}),(0,R.jsxs)(et,{children:[(0,R.jsx)(we,{render:(0,R.jsx)(`a`,{href:`https://discord.gg/XkNkSkMz3V`,target:`_blank`,rel:`noopener noreferrer`,className:PB,"aria-label":`Discord`,children:(0,R.jsx)(NB,{className:`size-4`})}),nativeButton:!1}),(0,R.jsx)(lt,{side:e?`right`:`top`,children:`Discord`})]}),(0,R.jsxs)(Ya,{children:[(0,R.jsxs)(et,{children:[(0,R.jsx)(we,{render:(0,R.jsx)(Xa,{render:(0,R.jsx)(`button`,{type:`button`,className:PB,"aria-label":`Theme`,children:a===`light`?(0,R.jsx)(Ui,{className:`size-4`}):a===`dark`?(0,R.jsx)(xi,{className:`size-4`}):(0,R.jsx)(bi,{className:`size-4`})}),nativeButton:!0}),nativeButton:!0}),(0,R.jsx)(lt,{side:e?`right`:`top`,children:`Theme`})]}),(0,R.jsx)(Za,{side:e?`right`:`top`,align:e?`start`:`center`,className:`w-40`,children:(0,R.jsxs)(eo,{value:a,onValueChange:e=>o(e),children:[(0,R.jsxs)(to,{value:`light`,children:[(0,R.jsx)(Ui,{className:`size-4 mr-2`}),`Light`]}),(0,R.jsxs)(to,{value:`dark`,children:[(0,R.jsx)(xi,{className:`size-4 mr-2`}),`Dark`]}),(0,R.jsxs)(to,{value:`system`,children:[(0,R.jsx)(bi,{className:`size-4 mr-2`}),`System`]})]})})]}),(0,R.jsxs)(et,{children:[(0,R.jsx)(we,{render:(0,R.jsx)(`button`,{type:`button`,onClick:r,className:PB,"aria-label":`Command Palette`,"data-testid":`command-palette-trigger-button`,children:(0,R.jsx)(Ur,{className:`size-4`})}),nativeButton:!0}),(0,R.jsxs)(lt,{side:e?`right`:`top`,children:[`Command Palette (`,`⌘`,`K)`]})]})]})]})})}function zB(e,t){let n=0,r=0,i=e;for(;i&&i!==t;)n+=i.offsetTop,r+=i.offsetLeft,i=i.offsetParent;if(i!==t){let n=t.getBoundingClientRect(),r=e.getBoundingClientRect();return{top:r.top-n.top,left:r.left-n.left,width:r.width,height:r.height}}return{top:n,left:r,width:e.offsetWidth,height:e.offsetHeight}}function BB(e,t){let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r of n){let n=e[r],i=t[r];if(!n||!i||n.top!==i.top||n.left!==i.left||n.width!==i.width||n.height!==i.height)return!1}return!0}function VB(e,t={}){let{axis:n=`y`}=t,r=(0,z.useRef)(new Map),[i,a]=(0,z.useState)(null),[o,s]=(0,z.useState)({}),c=(0,z.useRef)({}),l=(0,z.useRef)(0),u=(0,z.useRef)(null),d=(0,z.useRef)(null),f=(0,z.useCallback)(()=>{let t=e.current;if(!t)return;let n={};r.current.forEach((e,r)=>{n[r]=zB(e,t)}),!BB(c.current,n)&&(c.current=n,s(n))},[e]),p=(0,z.useCallback)((e,t)=>{t?r.current.set(e,t):r.current.delete(e),d.current!==null&&cancelAnimationFrame(d.current),d.current=requestAnimationFrame(()=>{d.current=null,f()})},[f]),m=(0,z.useCallback)(t=>{let r=t.clientX,i=t.clientY;u.current!==null&&cancelAnimationFrame(u.current),u.current=requestAnimationFrame(()=>{u.current=null;let t=e.current;if(!t)return;let o=t.getBoundingClientRect(),s=n===`x`?r:i,l=null,d=1/0,f=null,p=c.current,m=n===`x`?t.scrollLeft:t.scrollTop,h=n===`x`?t.clientLeft:t.clientTop,g=n===`x`?o.left:o.top,_=n===`x`?t.offsetWidth:t.offsetHeight,v=n===`x`?o.width:o.height,y=_>0?v/_:1;for(let[e,t]of Object.entries(p)){let r=g+(h+(n===`x`?t.left:t.top)-m)*y,i=(n===`x`?t.width:t.height)*y,a=r+i;s>=r&&s<=a&&(f=e);let o=r+i/2,c=Math.abs(s-o);c<d&&(d=c,l=e)}a(f??l)})},[n,e]),h=(0,z.useCallback)(()=>{l.current+=1},[]),g=(0,z.useCallback)(()=>{u.current!==null&&(cancelAnimationFrame(u.current),u.current=null),a(null)},[]);return(0,z.useEffect)(()=>{let t=e.current;if(!t||typeof ResizeObserver>`u`)return;let n=new ResizeObserver(()=>{d.current!==null&&cancelAnimationFrame(d.current),d.current=requestAnimationFrame(()=>{d.current=null,f()})});return n.observe(t),()=>n.disconnect()},[e,f]),(0,z.useEffect)(()=>()=>{u.current!==null&&cancelAnimationFrame(u.current),d.current!==null&&cancelAnimationFrame(d.current)},[]),{activeKey:i,itemRects:o,sessionRef:l,handlers:{onMouseMove:m,onMouseEnter:h,onMouseLeave:g},registerItem:p,measureItems:f}}function HB(e){if(!e)return{left:0,right:0};let t=getComputedStyle(e),n=Number.parseFloat(t.getPropertyValue(`--sidebar-nav-pill-bleed`))||0,r=Number.parseFloat(t.getPropertyValue(`--sidebar-nav-scrollbar-width`))||0,i=Number.parseFloat(t.getPropertyValue(`--sidebar-nav-pill-outer-trim-right`))||0;return{left:n,right:n+r+i}}function UB(e,t){return{...e,left:e.left-t.left,width:e.width+t.left+t.right}}var WB=(0,z.createContext)(null);function GB(){let e=(0,z.useContext)(WB),t=(0,z.useRef)(e?.registerItem);t.current=e?.registerItem;let n=(0,z.useRef)(new Map);return(0,z.useCallback)(e=>{let r=n.current,i=r.get(e);return i||(i=n=>t.current?.(e,n),r.set(e,i)),i},[])}function KB({children:e,isActiveKey:t,className:n}){let r=(0,z.useRef)(null),{activeKey:i,itemRects:a,sessionRef:o,handlers:s,registerItem:c,measureItems:l}=VB(r),u=(0,z.useMemo)(()=>({registerItem:c}),[c]),d=Object.keys(a).find(e=>t(e))??null;(0,z.useLayoutEffect)(()=>{l()},[l,e,d]);let f=HB(r.current),p=i?a[i]:null,m=d?a[d]:null,h=p?UB(p,f):null,g=m?UB(m,f):null,_=i!==null&&i!==d;return(0,R.jsx)(WB.Provider,{value:u,children:(0,R.jsxs)(`div`,{ref:r,onMouseEnter:s.onMouseEnter,onMouseMove:s.onMouseMove,onMouseLeave:s.onMouseLeave,className:L(`relative isolate`,n),children:[(0,R.jsx)(en,{initial:!1,children:g&&d?(0,R.jsx)(Pe.div,{"aria-hidden":!0,className:`pointer-events-none absolute -z-20 rounded-full bg-sidebar-accent`,initial:{opacity:0,top:g.top,left:g.left,width:g.width,height:g.height},animate:{opacity:_?.85:1,top:g.top,left:g.left,width:g.width,height:g.height},exit:{opacity:0,transition:pt.fast.exit},transition:{opacity:{duration:.08},top:{duration:0},left:{duration:0},width:{duration:0},height:{duration:0}}},d):null}),(0,R.jsx)(en,{children:h?(0,R.jsx)(Pe.div,{"aria-hidden":!0,className:`pointer-events-none absolute -z-10 rounded-full bg-sidebar-accent`,initial:{opacity:0,top:g?.top??h.top,left:g?.left??h.left,width:g?.width??h.width,height:g?.height??h.height},animate:{opacity:1,top:h.top,left:h.left,width:h.width,height:h.height},exit:{opacity:0,transition:pt.fast.exit},transition:{...pt.fast,opacity:{duration:.08}}},o.current):null}),e]})})}var qB=L(`pointer-events-auto absolute right-(--sidebar-nav-trailing-right) top-1/2 z-10 flex h-(--sidebar-nav-trailing-size) min-w-(--sidebar-nav-trailing-size) -translate-y-1/2 items-center justify-center`,L(`transition-[opacity,filter] duration-200 ease-out`,`opacity-100 blur-0`,`group-data-[collapsible=icon]:opacity-0 group-data-[collapsible=icon]:blur-[3px] group-data-[collapsible=icon]:pointer-events-none`,`group-data-[collapsed=true]:opacity-0 group-data-[collapsed=true]:blur-[3px] group-data-[collapsed=true]:pointer-events-none`)),JB=L(`truncate transition-[opacity,filter,margin] duration-200 ease-out`,`group-data-[collapsible=icon]:hidden`,`group-data-[collapsed=true]:hidden`),YB=L(`peer/menu-button flex cursor-pointer items-center gap-2 overflow-hidden rounded-full py-2 text-left text-sm outline-hidden ring-sidebar-ring hover:text-sidebar-accent-foreground group-hover/menu-item:text-sidebar-accent-foreground focus-visible:ring-2 active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-active:font-medium data-active:text-sidebar-accent-foreground [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0`,`transition-[width,max-width,height,padding,border-radius] duration-200 ease-out`,`h-8 text-sm`);function XB({count:e}){return(0,R.jsx)(`span`,{className:L(`inline-flex h-5 shrink-0 items-center justify-center border border-border bg-zinc-200 px-1 text-[10px] font-medium tabular-nums leading-none text-foreground dark:bg-zinc-700`,String(e).length>=3?`min-w-5 rounded-md`:`size-5 min-w-5 rounded-full`),children:e})}function ZB(e){return e.id!==`separator`}function QB({activeTab:e,onTabChange:t,selectedServer:n,visibleTabs:r,collapsed:i}){let a=GB();return(0,R.jsx)(`ul`,{className:`flex w-full min-w-0 flex-col gap-1 px-(--sidebar-nav-inset-x) group`,"data-collapsed":i,"aria-label":`Inspector tabs`,children:(r?wz.filter(e=>ZB(e)&&r.includes(e.id)):wz.filter(ZB)).map((r,o)=>{let s=Sz(r.id,n),c=Cz(r.id,s,i),l=r.icon,u=e===r.id,d=s>0||c,f=(0,R.jsxs)(`button`,{ref:a(r.id),type:`button`,"data-testid":`tab-${r.id}`,"data-active":u?!0:void 0,onClick:()=>t(r.id),className:L(YB,i?`size-8! w-8! max-w-8! shrink-0 justify-center gap-0 p-0!`:`w-full max-w-full sidebar-nav-pill-bleed-x pl-(--sidebar-nav-icon-pl-bleed) pr-(--sidebar-nav-pr-bleed)`,d&&!i&&`pr-[calc(var(--sidebar-nav-trailing-right)+var(--sidebar-nav-trailing-size))]`),children:[(0,R.jsx)(l,{className:`size-4 shrink-0`}),(0,R.jsx)(`span`,{className:JB,children:r.label})]});return(0,R.jsxs)(`li`,{className:L(`group/menu-item relative`,o===0&&`mt-4`),children:[i?(0,R.jsxs)(et,{delayDuration:0,children:[(0,R.jsx)(we,{render:f,nativeButton:!0}),(0,R.jsx)(lt,{side:`right`,children:s>0?`${r.label} (${s})`:r.label})]}):f,d&&!i?(0,R.jsx)(`div`,{className:qB,children:s>0?(0,R.jsx)(XB,{count:s}):c?(0,R.jsx)(`span`,{className:`inline-flex h-2 w-2 shrink-0 rounded-full bg-yellow-500 animate-status-pulse-yellow`}):null}):null]},r.id)})})}function $B({activeTab:e,onTabChange:t,selectedServer:n,visibleTabs:r,collapsed:i,onCollapsedChange:a,rpcLoggerOpen:o,onRpcLoggerOpenChange:s,onCommandPaletteOpen:c}){return(0,R.jsxs)(`aside`,{className:L(`group/sidebar relative hidden lg:flex flex-col shrink-0 text-sidebar-foreground transition-[width] duration-200 ease-out @container/sidebar`,i?`w-(--sidebar-width-icon)`:`w-(--sidebar-width)`),"data-collapsed":i,"data-collapsible":i?`icon`:`expanded`,children:[(0,R.jsx)(`div`,{className:`sidebar-nav-scroll flex-1 overflow-y-auto overflow-x-hidden min-h-0`,children:(0,R.jsx)(KB,{isActiveKey:t=>t===e,className:`pb-2`,children:(0,R.jsx)(QB,{activeTab:e,onTabChange:t,selectedServer:n,visibleTabs:r,collapsed:i})})}),(0,R.jsx)(RB,{collapsed:i,rpcLoggerOpen:o,onRpcLoggerOpenChange:s,onCommandPaletteOpen:c}),(0,R.jsx)(fB,{collapsed:i,onToggle:()=>a(!i)})]})}function eV(e){if(e===0)return`0 Bytes`;let t=1024,n=[`Bytes`,`KB`,`MB`,`GB`],r=Math.floor(Math.log(e)/Math.log(t));return Math.round(e/t**r*100)/100+` `+n[r]}function tV(e){if(e===0)return`0 B`;let t=1024,n=[`B`,`KB`,`MB`],r=Math.floor(Math.log(e)/Math.log(t));return`${parseFloat((e/t**r).toFixed(1))} ${n[r]}`}var nV=100*1024,rV=1024*20;function iV(e,t){if(e==null)return e;if(typeof e==`string`)return e.length>t?e.substring(0,t)+`... (truncated)`:e;if(Array.isArray(e))return e.map(e=>iV(e,t));if(typeof e==`object`){let n={};for(let r in e)Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=iV(e[r],t));return n}return e}function aV(e){let t=JSON.stringify(e,null,2);return new TextEncoder().encode(t).length>nV?iV(e,rV):e}function oV(e){let t=JSON.stringify(e,null,2),n=new TextEncoder().encode(t).length,r=n>nV,i;if(r){let t=iV(e,rV);i=JSON.stringify(t,null,2)}else i=t;return{isLarge:r,size:n,sizeFormatted:eV(n),preview:i,full:t}}function sV(e,t){try{let n=JSON.stringify(e,null,2),r=globalThis.Blob,i=new r([n],{type:`application/json`}),a=URL.createObjectURL(i),o=document.createElement(`a`);o.href=a,o.download=t||`data-${Date.now()}.json`,document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(a)}catch(e){throw console.error(`Failed to download JSON:`,e),e}}var cV={key:`text-sky-600 dark:text-sky-400`,string:`text-emerald-600 dark:text-emerald-400`,number:`text-amber-600 dark:text-amber-400`,boolean:`text-violet-600 dark:text-violet-400`,null:`text-zinc-500 dark:text-zinc-400`,punctuation:`text-muted-foreground`};function lV(e){let t=[],n=0,r=(e,n)=>{n&&t.push({kind:e,text:n})};for(;n<e.length;){let t=e[n];if(t===`"`){let t=n;for(n++;n<e.length;){if(e[n]===`\\`){n+=2;continue}if(e[n]===`"`){n++;break}n++}let i=e.slice(t,n),a=n;for(;a<e.length&&/[ \t]/.test(e[a]);)a++;r(e[a]===`:`?`key`:`string`,i);continue}if(/[0-9-]/.test(t)){let t=n;for(e[n]===`-`&&n++;n<e.length&&/[0-9.eE+-]/.test(e[n]);)n++;r(`number`,e.slice(t,n));continue}if(e.startsWith(`true`,n)||e.startsWith(`false`,n)){let t=e.startsWith(`true`,n)?`true`:`false`;r(`boolean`,t),n+=t.length;continue}if(e.startsWith(`null`,n)){r(`null`,`null`),n+=4;continue}if(/[{}[\],:]/.test(t)){r(`punctuation`,t),n++;continue}r(`punctuation`,t),n++}return t}function uV(e){return lV(e).map((e,t)=>(0,R.jsx)(`span`,{className:cV[e.kind],children:e.text},t))}var dV={string:`text-emerald-600 dark:text-emerald-400`,number:`text-amber-600 dark:text-amber-400`,boolean:`text-violet-600 dark:text-violet-400`,null:`text-zinc-500 dark:text-zinc-400`,key:`text-sky-600 dark:text-sky-400`,punctuation:`text-muted-foreground`};function fV(e){return e===null?(0,R.jsx)(`span`,{className:dV.null,children:`null`}):typeof e==`string`?(0,R.jsx)(`span`,{className:dV.string,children:JSON.stringify(e)}):typeof e==`number`?(0,R.jsx)(`span`,{className:dV.number,children:String(e)}):typeof e==`boolean`?(0,R.jsx)(`span`,{className:dV.boolean,children:String(e)}):(0,R.jsx)(`span`,{className:dV.string,children:JSON.stringify(e)})}function pV(e){return Array.isArray(e)?`[${e.length}]`:`{${Object.keys(e).length}}`}function mV({label:e,value:t,depth:n,defaultExpanded:r}){let i=typeof t==`object`&&t&&!Array.isArray(t)?Object.keys(t).length>0:Array.isArray(t)?t.length>0:!1,[a,o]=(0,z.useState)(i&&(r||n===0));if(!i){let r=Array.isArray(t)?`[]`:`{}`;return typeof t==`object`&&t?(0,R.jsxs)(`div`,{className:`font-mono text-[0.8rem] leading-relaxed`,style:{paddingLeft:n*12},children:[e!=null&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`span`,{className:dV.key,children:JSON.stringify(e)}),(0,R.jsx)(`span`,{className:dV.punctuation,children:`: `})]}),(0,R.jsx)(`span`,{className:dV.punctuation,children:r})]}):(0,R.jsxs)(`div`,{className:`font-mono text-[0.8rem] leading-relaxed`,style:{paddingLeft:n*12},children:[e!=null&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`span`,{className:dV.key,children:JSON.stringify(e)}),(0,R.jsx)(`span`,{className:dV.punctuation,children:`: `})]}),fV(t)]})}let s=Array.isArray(t)?t.map((e,t)=>[String(t),e]):Object.entries(t),c=Array.isArray(t),l=c?`[`:`{`,u=c?`]`:`}`;return(0,R.jsxs)(`div`,{className:`font-mono text-[0.8rem] leading-relaxed`,children:[(0,R.jsxs)(`div`,{className:`flex items-start gap-0.5`,style:{paddingLeft:n*12},children:[(0,R.jsx)(`button`,{type:`button`,"aria-expanded":a,onClick:()=>o(e=>!e),className:`mt-0.5 inline-flex shrink-0 items-center justify-center rounded-sm text-muted-foreground hover:text-foreground`,children:(0,R.jsx)(C,{className:L(`h-3.5 w-3.5 transition-transform`,a&&`rotate-90`)})}),(0,R.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[e!=null&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`span`,{className:dV.key,children:JSON.stringify(e)}),(0,R.jsx)(`span`,{className:dV.punctuation,children:`: `})]}),(0,R.jsx)(`span`,{className:dV.punctuation,children:l}),!a&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`button`,{type:`button`,onClick:()=>o(!0),className:`mx-1 text-xs text-muted-foreground hover:text-foreground`,children:pV(t)}),(0,R.jsx)(`span`,{className:dV.punctuation,children:u})]})]})]}),a&&(0,R.jsxs)(`div`,{children:[s.map(([e,t])=>(0,R.jsx)(mV,{label:e,value:t,depth:n+1,defaultExpanded:r},`${n}-${e}`)),(0,R.jsx)(`div`,{style:{paddingLeft:n*12},children:(0,R.jsx)(`span`,{className:dV.punctuation,children:u})})]})]})}function hV({data:e,defaultExpanded:t=!0,className:n}){return(0,R.jsx)(`div`,{className:L(`text-gray-900 dark:text-gray-100 [overflow-wrap:anywhere]`,n),"data-testid":`collapsible-json`,children:(0,R.jsx)(mV,{value:e,depth:0,defaultExpanded:t})})}var gV=`font-mono text-[0.8rem] text-gray-900 dark:text-gray-100 whitespace-pre-wrap break-words [overflow-wrap:anywhere]`;function _V({data:e,filename:t,className:n,collapsible:r=!1,defaultExpanded:i=!0,...a}){let o=oV(e),s=aV(e),c=o.isLarge?(0,R.jsx)(`div`,{className:`mb-3 p-3 bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 rounded-lg`,children:(0,R.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,R.jsxs)(`div`,{className:`flex-1`,children:[(0,R.jsxs)(`p`,{className:`text-sm font-medium text-yellow-800 dark:text-yellow-300 mb-1`,children:[`JSON is too large (`,o.sizeFormatted,`)`]}),(0,R.jsx)(`p`,{className:`text-xs text-yellow-700 dark:text-yellow-400`,children:`Showing full structure with truncated values. Download the full JSON file to see complete values.`})]}),(0,R.jsxs)(Gt,{variant:`outline`,size:`sm`,onClick:()=>{sV(e,t)},className:`shrink-0`,children:[(0,R.jsx)(qr,{className:`h-4 w-4 mr-1`}),`Download`]})]})}):null;return r?(0,R.jsxs)(`div`,{className:n,...a,children:[c,(0,R.jsx)(hV,{data:s,defaultExpanded:i})]}):o.isLarge?(0,R.jsxs)(`div`,{className:n,...a,children:[c,(0,R.jsx)(`pre`,{className:gV,children:(0,R.jsx)(`code`,{children:uV(o.preview)})})]}):(0,R.jsx)(`div`,{className:n,...a,children:(0,R.jsx)(`pre`,{className:gV,children:(0,R.jsx)(`code`,{children:uV(o.preview)})})})}function vV(e){if(!e)return null;for(let t of e.elements){let e=t.tagName;if(e===`BUTTON`||e===`INPUT`){let e=t;if(e.type===`submit`)return e}}return null}var yV=function(e){return e.checked=`data-checked`,e.unchecked=`data-unchecked`,e.indeterminate=`data-indeterminate`,e.disabled=`data-disabled`,e.readonly=`data-readonly`,e.required=`data-required`,e.valid=`data-valid`,e.invalid=`data-invalid`,e.touched=`data-touched`,e.dirty=`data-dirty`,e.filled=`data-filled`,e.focused=`data-focused`,e}({});function bV(e){return z.useMemo(()=>({checked(t){return e.indeterminate?{}:t?{[yV.checked]:``}:{[yV.unchecked]:``}},...Tn}),[e.indeterminate])}var xV=z.createContext({disabled:!1});function SV(){return z.useContext(xV)}var CV=z.createContext(void 0);function wV(e=!0){let t=z.useContext(CV);if(t===void 0&&!e)throw Error(Vt(3));return t}var TV=z.createContext(void 0);function EV(){let e=z.useContext(TV);if(e===void 0)throw Error(Vt(14));return e}var DV=`data-parent`,OV=z.forwardRef(function(e,t){let{checked:n,className:r,defaultChecked:i=!1,"aria-labelledby":a,disabled:o=!1,form:s,id:c,indeterminate:l=!1,inputRef:u,name:d,onCheckedChange:f,parent:p=!1,readOnly:m=!1,render:h,required:g=!1,uncheckedValue:_,value:v,nativeButton:y=!1,style:b,...x}=e,{clearErrors:S}=An(),{disabled:C,name:w,setDirty:T,setFilled:E,setFocused:ee,setTouched:te,state:re,validationMode:ie,validityData:ae,validation:O}=On(),k=SV(),{labelId:A,controlId:oe,registerControlId:se,getDescriptionProps:ce}=kn(),j=wV(),M=j?.parent,N=M&&j.allValues,le=C||k.disabled||j?.disabled||o,ue=w??d,de=v??ue,fe=D(),pe=D(),me=oe;N?me=p?pe:`${M.id}-${de}`:c&&(me=c);let he={};N&&(p?he=j.parent.getParentProps():de&&(he=j.parent.getChildProps(de)));let{checked:ge=n,indeterminate:_e=l,onCheckedChange:ve,...ye}=he,xe=j?.value,P=j?.setValue,Se=j?.defaultValue,Ce=z.useRef(null),we=qt(()=>Symbol(`checkbox-control`)),Ee=z.useRef(!1),{getButtonProps:De,buttonRef:Oe}=Lt({disabled:le,native:y}),ke=j?.validation??O,[Ae,je]=Yt({controlled:de&&xe&&!p?xe.includes(de):ge,default:de&&Se&&!p?Se.includes(de):i,name:`Checkbox`,state:`checked`}),Me=N?!!ge:Ae,Ne=N&&_e||l;Rt(()=>{se!==It&&(Ee.current=!0,se(we.current,me))},[me,se,we]),z.useEffect(()=>{let e=we.current;return()=>{!Ee.current||se===It||(Ee.current=!1,se(e,void 0))}},[se,we]),En(Ce,fe,Ae,void 0,!j&&!le,d);let Pe=z.useRef(null),Fe=Kt(u,Pe,ke.inputRef,ke.registerInput),Ie=vB(a,A,Pe,!y,me??void 0);Rt(()=>{Pe.current&&(Pe.current.indeterminate=Ne,Ae&&E(!0))},[Ae,Ne,E]),Dn(Ae,()=>{j||(S(ue),E(Ae),T(Ae!==ae.initialValue),ke.change(Ae))});let Le=zt({checked:Ae,disabled:le,form:s,name:p?void 0:ue,id:y?void 0:me??void 0,required:g,ref:Fe,style:ue?Te:He,tabIndex:-1,type:`checkbox`,"aria-hidden":!0,onChange(e){if(e.nativeEvent.defaultPrevented)return;if(m){e.preventDefault();return}let t=e.currentTarget.checked,n=ne(be,e.nativeEvent);f?.(t,n),!n.isCanceled&&(ve?.(t,n),!n.isCanceled&&(je(t),de&&xe&&P&&!p&&!N&&P(t?[...xe,de]:xe.filter(e=>e!==de),n)))},onFocus(){Ce.current?.focus()}},v===void 0?Wt:{value:(j?Ae&&v:v)||``},ce,e=>ke.getValidationProps(le,e));z.useEffect(()=>{if(!M||!de)return;let e=M.disabledStatesRef.current;return e.set(de,le),()=>{e.delete(de)}},[M,le,de]);let Re=z.useMemo(()=>({...re,checked:Me,disabled:le,readOnly:m,required:g,indeterminate:Ne}),[re,Me,le,m,g,Ne]),ze=bV(Re),Be=Ft(`span`,e,{state:Re,ref:[Oe,Ce,t,j?.registerControlRef],props:[{id:y?me??void 0:fe,role:`checkbox`,"aria-checked":Ne?`mixed`:Me,"aria-readonly":m||void 0,"aria-required":g||void 0,"aria-labelledby":Ie,[DV]:p?``:void 0,onFocus(){le||ee(!0)},onBlur(){let e=Pe.current;e&&(te(!0),ee(!1),ie===`onBlur`&&ke.commit(j?xe:e.checked))},onKeyDown(e){if(e.key!==`Enter`||(e.preventBaseUIHandler(),e.defaultPrevented))return;let t=Pe.current?.form??null,n=e.currentTarget,r=e.nativeEvent,i=e.preventDefault,a=r.preventDefault,o=!1;e.preventDefault=()=>{o=!0,i.call(e)},r.preventDefault=()=>{o=!0,a.call(r)},a.call(r),Mt(n).queueMicrotask(()=>{e.preventDefault=i,r.preventDefault=a,o||vV(t)?.click()})},onClick(e){if(m||le)return;e.preventDefault();let t=Pe.current;t&&t.dispatchEvent(new(Mt(t)).PointerEvent(`click`,{bubbles:!0,shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,altKey:e.altKey,metaKey:e.metaKey}))}},x,ye,De,ce,e=>ke.getValidationProps(le,e)],stateAttributesMapping:ze});return(0,R.jsxs)(TV.Provider,{value:Re,children:[Be,!Ae&&!j&&ue&&!p&&_!==void 0&&(0,R.jsx)(`input`,{type:`hidden`,form:s,name:ue,value:_,disabled:le}),(0,R.jsx)(`input`,{...Le,suppressHydrationWarning:!0})]})}),kV=z.forwardRef(function(e,t){let{render:n,className:r,style:i,keepMounted:a=!1,...o}=e,s=EV(),c=s.checked||s.indeterminate,{mounted:l,transitionStatus:u,setMounted:d}=Je(c),f=z.useRef(null),p={...s,transitionStatus:u};g({open:c,ref:f,onComplete(){c||d(!1)}});let m={...bV(s),...it,...Tn},h=a||l,_=Ft(`span`,e,{ref:[t,f],state:p,stateAttributesMapping:m,props:o});return h?_:null}),AV=(0,z.createContext)(null);function jV(){let e=(0,z.useContext)(AV);if(!e)throw Error(`useCheckboxGroup must be used within a CheckboxGroup`);return e}var MV=(0,z.forwardRef)(({children:e,checkedIndices:t,orientation:n=`vertical`,className:r,...i},a)=>{let o=(0,z.useRef)(null),s=n===`horizontal`,{activeIndex:c,setActiveIndex:l,handlers:u,registerItem:d,measureItems:f}=_n(o,{axis:s?`x`:`y`});(0,z.useEffect)(()=>{f()},[f,e]);let p=s?`ArrowLeft`:`ArrowUp`,m=s?`ArrowRight`:`ArrowDown`;return(0,R.jsx)(AV.Provider,{value:{registerItem:d,activeIndex:c},children:(0,R.jsx)(`div`,{ref:e=>{o.current=e,typeof a==`function`?a(e):a&&(a.current=e)},onMouseEnter:u.onMouseEnter,onMouseMove:u.onMouseMove,onMouseLeave:u.onMouseLeave,onFocus:e=>{let t=e.target.closest(`[data-proximity-index]`)?.getAttribute(`data-proximity-index`);t!=null&&l(Number(t))},onBlur:e=>{o.current?.contains(e.relatedTarget)||l(null)},onKeyDown:e=>{let t=Array.from(o.current?.querySelectorAll(`[data-proximity-index]`)??[]),n=t.indexOf(e.target);n!==-1&&([p,m].includes(e.key)?(e.preventDefault(),t[e.key===m?(n+1)%t.length:(n-1+t.length)%t.length]?.focus()):e.key===`Home`?(e.preventDefault(),t[0]?.focus()):e.key===`End`&&(e.preventDefault(),t[t.length-1]?.focus()))},role:`group`,className:L(`relative flex max-w-full select-none`,s?`w-auto flex-row`:`w-72 flex-col`,r),...i,children:e})})});MV.displayName=`CheckboxGroup`;var NV=(0,z.forwardRef)(({label:e,index:t,checked:n,onToggle:r,size:i=`default`,className:a,...o},s)=>{let c=(0,z.useRef)(null),l=(0,z.useRef)(!1),{registerItem:u,activeIndex:d}=jV();(0,z.useEffect)(()=>(u(t,c.current),()=>u(t,null)),[t,u]),(0,z.useEffect)(()=>{l.current=!0},[]);let f=d===t,p=!l.current,m=Nt(),h=i===`sm`;return(0,R.jsxs)(`div`,{ref:e=>{c.current=e,typeof s==`function`?s(e):s&&(s.current=e)},"data-proximity-index":t,tabIndex:0,role:`checkbox`,"aria-checked":n,"aria-label":e,onClick:r,onMouseDown:e=>{let t=e.target.closest(`button:not([tabindex="-1"]), a[href], input, select, textarea, [tabindex]:not([tabindex="-1"])`);t&&t!==e.currentTarget||(e.preventDefault(),e.currentTarget.focus())},onKeyDown:e=>{(e.key===` `||e.key===`Enter`)&&(e.preventDefault(),r())},className:L(`relative z-10 flex items-center cursor-pointer outline-none`,h?`h-7 gap-1.5 px-2`:`h-8 gap-2.5 px-3`,m.item,`focus-visible:ring-1 focus-visible:ring-[color:var(--focus-ring,#6B97FF)]`,a),...o,children:[(0,R.jsxs)(OV,{checked:n,tabIndex:-1,"aria-hidden":!0,className:L(`pointer-events-none relative shrink-0 appearance-none bg-transparent p-0 border-0 outline-none`,h?`size-[13px]`:`size-[15px]`),children:[(0,R.jsx)(`div`,{className:L(`absolute inset-0 rounded-[5px] border-solid transition-all duration-80 border-[1.5px]`,n?`border-border`:f?`border-neutral-400 dark:border-neutral-500`:`border-border`)}),(0,R.jsx)(en,{children:n&&(0,R.jsx)(kV,{keepMounted:!0,render:e=>{let{style:t,onDrag:n,onDragStart:r,onDragEnd:i,onAnimationStart:a,onAnimationEnd:o,onAnimationIteration:s,...c}=e;return(0,R.jsx)(Pe.svg,{...c,width:h?14:18,height:h?14:18,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`,className:`absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 text-foreground`,initial:{opacity:1},animate:{opacity:1},exit:{opacity:1},children:(0,R.jsx)(Pe.path,{d:`M6 12L10 16L18 8`,initial:{pathLength:+!!p},animate:{pathLength:1,transition:{duration:.08,ease:`easeOut`}},exit:{pathLength:0,transition:{duration:.04,ease:`easeIn`}}})})}})})]}),(0,R.jsxs)(`span`,{className:`inline-grid items-center self-center leading-none`,children:[(0,R.jsx)(`span`,{className:`col-start-1 row-start-1 invisible leading-none`,style:{fontVariationSettings:ke.semibold},"aria-hidden":`true`,children:e}),(0,R.jsx)(`span`,{className:L(`col-start-1 row-start-1 leading-none transition-[color,font-variation-settings] duration-80`,h?`text-[11px]`:`text-[13px]`,n||f?`text-foreground`:`text-muted-foreground`),style:{fontVariationSettings:n?ke.semibold:ke.normal},children:e})]})]})});NV.displayName=`CheckboxItem`;var PV=36,FV=188,IV=6;function LV(e,t,n){let[r,i]=(0,z.useState)(0),[a,o]=(0,z.useState)(0),s=(0,z.useMemo)(()=>{let n=[],r=[],i=0;for(let a of e){n.push(i);let e=PV+(t.has(a.id)?FV:0);r.push(e),i+=e}return{offsets:n,heights:r,totalHeight:i}},[t,e]),c=(0,z.useMemo)(()=>{if(e.length===0)return{totalHeight:0,visibleItems:[]};let{offsets:t,heights:n,totalHeight:i}=s,o=r+a,c=0;for(;c<e.length&&t[c]+n[c]<r;)c++;c=Math.max(0,c-IV);let l=c;for(;l<e.length&&t[l]<o;)l++;l=Math.min(e.length,l+IV);let u=[];for(let r=c;r<l;r++)u.push({index:r,item:e[r],top:t[r],height:n[r]});return{totalHeight:i,visibleItems:u}},[e,s,r,a]),l=(0,z.useCallback)(()=>{let e=n.current;e&&i(e.scrollTop)},[n]);return(0,z.useEffect)(()=>{let e=n.current;if(!e)return;let t=()=>{o(e.clientHeight),i(e.scrollTop)};t();let r=new ResizeObserver(t);return r.observe(e),e.addEventListener(`scroll`,l,{passive:!0}),()=>{r.disconnect(),e.removeEventListener(`scroll`,l)}},[l,n,e.length]),c}var RV=300,zV=/(?:^|\/)notifications\//;function BV(e){let t=e;return typeof t?.method==`string`?t.method:null}function VV(e){let t=e.message;if(t?.id!==void 0&&t.id!==null||t?.result!==void 0||t?.error!==void 0)return null;let n=BV(e.message);return!n||!zV.test(n)?null:[e.source,e.serverId,e.widgetId??``,e.direction,n].join(`|`)}function HV(e,t,n=Date.now()){let r=VV(e),i=VV(t);if(!r||r!==i)return!1;let a=Date.parse(e.timestamp);return Number.isNaN(a)?!1:n-a<=RV}function UV(e,t){return{...e,timestamp:t.timestamp,message:t.message,repeatCount:(e.repeatCount??1)+1}}var WV=new class{maxEntries;entries=[];listeners=new Set;nextId=0;emitFrame=null;constructor(e=1e3){this.maxEntries=e}publish(e){let t=this.entries[this.entries.length-1];if(t&&HV(t,e,Date.parse(e.timestamp))){this.entries[this.entries.length-1]=UV(t,e),this.scheduleEmit();return}this.entries.push({...e,id:`rpc-${++this.nextId}`}),this.entries.length>this.maxEntries&&this.entries.splice(0,this.entries.length-this.maxEntries),this.scheduleEmit()}getSnapshot=()=>this.entries;subscribe=e=>(this.listeners.add(e),()=>this.listeners.delete(e));clear(e={}){let t=new Set(e.serverIds??[]),n=new Set(e.sources??[]);t.size===0&&n.size===0?this.entries=[]:this.entries=this.entries.filter(e=>!((t.size===0||t.has(e.serverId))&&(n.size===0||n.has(e.source)))),this.scheduleEmit()}peekCoalesceKey(e){return VV(e)}scheduleEmit(){if(this.emitFrame===null){if(typeof requestAnimationFrame>`u`){this.emit();return}this.emitFrame=requestAnimationFrame(()=>{this.emitFrame=null,this.emit()})}}emit(){this.listeners.forEach(e=>e())}},GV;function KV(e){WV.publish({source:`mcp`,serverId:e.serverId,direction:e.direction,timestamp:e.timestamp,message:e.message})}function qV(){GV||=(ZO().forEach(KV),QO(KV))}qV();function JV({serverIds:e,onCountChange:t,onClearRef:n,onExportRef:r}={}){let i=(0,z.useRef)(null),[a,o]=(0,z.useState)(new Set),[s,c]=(0,z.useState)(``),[l,u]=(0,z.useState)(!1),[d,f]=(0,z.useState)(()=>new Set([`mcp`,`widget`])),p=(0,z.useSyncExternalStore)(WV.subscribe,WV.getSnapshot,WV.getSnapshot),m=async e=>{try{await zj(JSON.stringify(e,null,2)),IF.success(`Message copied to clipboard`)}catch(e){console.error(`Failed to copy message:`,e),IF.error(`Failed to copy to clipboard`)}},h=(0,z.useMemo)(()=>{if(!e?.length)return p;let t=new Set(e);return p.filter(e=>t.has(e.serverId))},[p,e]),g=(0,z.useMemo)(()=>{let e=new Set;return d.has(`mcp`)&&e.add(0),d.has(`widget`)&&e.add(1),e},[d]),_=(0,z.useCallback)(e=>{f(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),y=(0,z.useMemo)(()=>{let e=h;d.size>0&&(e=e.filter(e=>d.has(e.source)));let t=s.trim().toLowerCase();return t&&(e=e.filter(e=>{let n=XV(e);return e.serverId.toLowerCase().includes(t)||e.widgetId?.toLowerCase().includes(t)||e.source.includes(t)||n.toLowerCase().includes(t)||e.direction.toLowerCase().includes(t)||JSON.stringify(e.message).toLowerCase().includes(t)})),[...e].reverse()},[h,s,d]),{totalHeight:b,visibleItems:x}=LV(y,a,i),S=(0,z.useCallback)(e=>{o(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),C=(0,z.useCallback)(async()=>{let t=d.size===0||d.size===2?void 0:[...d];(!t||t.includes(`mcp`))&&(e?.length?e.forEach(e=>$O(e)):$O()),WV.clear({serverIds:e,sources:t}),o(new Set)},[e,d]),w=(0,z.useCallback)(async()=>{try{await zj(JSON.stringify(y,null,2)),IF.success(`Copied ${y.length} messages`)}catch(e){console.error(`Failed to copy messages:`,e),IF.error(`Failed to copy to clipboard`)}},[y]),T=(0,z.useCallback)(()=>{let e=new Blob([JSON.stringify(y,null,2)],{type:`application/json`}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`mcp-rpc-traffic-${new Date().toISOString().replaceAll(`:`,`-`)}.json`,n.click(),URL.revokeObjectURL(t)},[y]);return(0,z.useEffect)(()=>{t?.(y.length)},[y.length,t]),(0,z.useEffect)(()=>(n&&(n.current=C),()=>{n&&(n.current=null)}),[C,n]),(0,z.useEffect)(()=>(r&&(r.current=w),()=>{r&&(r.current=null)}),[w,r]),(0,R.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col overflow-hidden`,children:[(0,R.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-2 pr-2 pt-2 pl-1`,children:[(0,R.jsx)(`h2`,{className:`text-xs font-medium text-foreground`,children:`RPC Logs`}),(0,R.jsxs)(`div`,{className:`flex items-center gap-0.5`,children:[(0,R.jsx)(Gt,{variant:`ghost`,size:`sm`,className:`size-7 p-0`,onClick:w,disabled:y.length===0,"aria-label":`Copy filtered RPC traffic`,title:`Copy filtered`,children:(0,R.jsx)(Wr,{className:`size-3.5`})}),(0,R.jsx)(Gt,{variant:`ghost`,size:`sm`,className:`size-7 p-0`,onClick:T,disabled:y.length===0,"aria-label":`Download filtered RPC traffic as JSON`,title:`Download JSON`,children:(0,R.jsx)(qr,{className:`size-3.5`})}),(0,R.jsx)(Gt,{variant:`ghost`,size:`sm`,className:`size-7 p-0`,onClick:C,disabled:p.length===0,"aria-label":`Clear RPC traffic`,title:`Clear`,children:(0,R.jsx)(Gi,{className:`size-3.5`})})]})]}),(0,R.jsxs)(`div`,{className:`flex shrink-0 items-center pr-2 pb-2 pt-1 pl-1`,children:[(0,R.jsxs)(`div`,{className:`relative min-w-0 flex-1 transition-[flex-grow] duration-200 ease-out`,children:[(0,R.jsx)(v,{className:`pointer-events-none absolute left-2 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground`}),(0,R.jsx)(ht,{value:s,onChange:e=>c(e.target.value),onFocus:()=>u(!0),onBlur:()=>u(!1),placeholder:`Search`,"aria-label":`Search RPC traffic`,className:`h-8 w-full pl-7 text-xs shadow-none transition-[width] duration-200 ease-out`})]}),(0,R.jsx)(`div`,{"aria-hidden":l,className:L(`shrink-0 overflow-hidden transition-[max-width,opacity,margin] duration-200 ease-out`,l?`pointer-events-none ml-0 max-w-0 opacity-0`:`ml-2 max-w-32 opacity-100`),children:(0,R.jsxs)(MV,{checkedIndices:g,orientation:`horizontal`,"aria-label":`Filter RPC traffic by source`,className:`w-auto shrink-0`,children:[(0,R.jsx)(NV,{index:0,label:`MCP`,size:`sm`,checked:d.has(`mcp`),onToggle:()=>_(`mcp`)}),(0,R.jsx)(NV,{index:1,label:`UI`,size:`sm`,checked:d.has(`widget`),onToggle:()=>_(`widget`)})]})})]}),(0,R.jsx)(`div`,{ref:i,className:`min-h-0 flex-1 overflow-y-auto pb-10`,style:{maskImage:`linear-gradient(to bottom, black 0, black calc(100% - 3rem), transparent 100%)`,WebkitMaskImage:`linear-gradient(to bottom, black 0, black calc(100% - 3rem), transparent 100%)`},children:y.length===0?(0,R.jsxs)(`div`,{className:`text-center py-8`,children:[(0,R.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:`No messages yet`}),(0,R.jsx)(`div`,{className:`text-[10px] text-muted-foreground mt-1`,children:`JSON-RPC messages will appear here`})]}):(0,R.jsx)(`div`,{className:`relative w-full`,style:{height:b},children:x.map(({item:e,top:t,height:n})=>(0,R.jsx)(YV,{item:e,top:t,height:n,expanded:a.has(e.id),onToggle:()=>S(e.id),onCopy:()=>m(e.message)},e.id))})})]})}function YV({item:e,top:t,height:n,expanded:r,onToggle:i,onCopy:a}){let o=XV(e),s=ZV(e),c=e.repeatCount&&e.repeatCount>1?` ×${e.repeatCount}`:``;return(0,R.jsxs)(`div`,{className:`absolute inset-x-0 overflow-hidden`,style:{top:t,height:n},"data-testid":`rpc-message-${o.replace(/\//g,`-`)}`,children:[(0,R.jsxs)(`button`,{type:`button`,"aria-expanded":r,onClick:i,className:`flex h-9 w-full cursor-pointer items-center gap-2 py-2 pr-3 pl-1 text-left text-muted-foreground transition-colors hover:text-foreground`,children:[(0,R.jsxs)(et,{children:[(0,R.jsx)(we,{render:(0,R.jsx)(`span`,{className:`flex size-4 shrink-0 items-center justify-center`,children:e.direction===`receive`?(0,R.jsx)(Dr,{className:`size-3.5 text-blue-500`}):(0,R.jsx)(Ar,{className:`size-3.5 text-emerald-500`})}),nativeButton:!1}),(0,R.jsx)(lt,{side:`left`,children:s})]}),(0,R.jsxs)(et,{children:[(0,R.jsx)(we,{render:(0,R.jsx)(`span`,{className:`flex size-3.5 shrink-0 items-center justify-center`,children:e.source===`mcp`?(0,R.jsx)(bL,{className:`size-3`}):(0,R.jsx)(Ti,{className:`size-3`})}),nativeButton:!1}),(0,R.jsx)(lt,{side:`left`,children:e.source===`mcp`?`MCP server`:`UI widget`})]}),(0,R.jsxs)(`span`,{className:`min-w-0 flex-1 truncate font-mono text-xs text-foreground`,children:[o,c?(0,R.jsx)(`span`,{className:`text-muted-foreground`,children:c}):null]}),(0,R.jsxs)(et,{children:[(0,R.jsx)(we,{render:(0,R.jsx)(`time`,{dateTime:e.timestamp,className:`shrink-0 cursor-default font-mono text-[10px] tabular-nums text-muted-foreground underline decoration-dotted underline-offset-2`,children:new Date(e.timestamp).toLocaleTimeString()}),nativeButton:!1}),(0,R.jsx)(lt,{side:`left`,children:new Date(e.timestamp).toLocaleString()})]})]}),r?(0,R.jsxs)(`div`,{className:`relative mx-3 mb-2 max-h-44 overflow-auto rounded-lg p-2 pr-8`,children:[(0,R.jsx)(_V,{data:e.message,className:`[&_pre]:!text-[10px] [&_pre]:!leading-4`}),(0,R.jsx)(Gt,{variant:`secondary`,size:`icon-sm`,onClick:a,className:`absolute right-1 top-1 size-6 rounded-full p-0`,title:`Copy message`,"aria-label":`Copy message`,children:(0,R.jsx)(Wr,{className:`size-3`})})]}):null]})}function XV(e){let t=BV(e.message);if(t)return t;let n=e.message;return n?.result===void 0?n?.error===void 0?`unknown`:`error`:`result`}function ZV(e){return e.source===`widget`?e.direction===`send`?`Host → Widget`:`Widget → Host`:e.direction===`send`?`Inspector → MCP`:`MCP → Inspector`}function QV({serverId:e,open:t}){return(0,R.jsx)(`aside`,{"aria-label":`RPC Panel`,"aria-hidden":!t,className:L(`relative hidden min-h-0 shrink-0 flex-col overflow-hidden transition-[width,margin] duration-200 ease-out lg:flex`,t?`w-(--rpc-panel-width) lg:mr-[18px]`:`w-0 lg:mr-0`),children:(0,R.jsx)(`div`,{className:L(`flex h-full min-h-0 w-(--rpc-panel-width) flex-col transition-opacity duration-200 ease-out`,t?`opacity-100`:`pointer-events-none opacity-0`),children:(0,R.jsx)(JV,{serverIds:[e]})})})}function $V({...e}){return(0,R.jsx)(jI,{"data-slot":`sheet`,...e})}function eH(e){return(0,R.jsx)(NI,{"data-slot":`sheet-trigger`,...e})}function tH({...e}){return(0,R.jsx)(wI,{"data-slot":`sheet-portal`,...e})}function nH({className:e,container:t,...n}){return(0,R.jsx)(hI,{"data-slot":`sheet-overlay`,className:L(`inset-0 z-50 bg-black/50 transition-opacity duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0`,t?`absolute`:`fixed`,e),...n})}function rH({className:e,children:t,side:n=`right`,showCloseButton:r=!0,container:i,...a}){return(0,R.jsxs)(tH,{container:i??void 0,children:[(0,R.jsx)(nH,{container:i}),(0,R.jsxs)(CI,{"data-slot":`sheet-content`,"data-side":n,className:L(`z-50 flex flex-col gap-4 bg-popover bg-clip-padding text-sm text-popover-foreground shadow-lg transition duration-200 ease-in-out data-ending-style:opacity-0 data-starting-style:opacity-0 data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=bottom]:data-ending-style:translate-y-[2.5rem] data-[side=bottom]:data-starting-style:translate-y-[2.5rem] data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=left]:data-ending-style:translate-x-[-2.5rem] data-[side=left]:data-starting-style:translate-x-[-2.5rem] data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=right]:data-ending-style:translate-x-[2.5rem] data-[side=right]:data-starting-style:translate-x-[2.5rem] data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=top]:data-ending-style:translate-y-[-2.5rem] data-[side=top]:data-starting-style:translate-y-[-2.5rem] data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm`,i?`absolute`:`fixed`,e),...a,children:[t,r&&(0,R.jsxs)(gI,{"data-slot":`sheet-close`,render:(0,R.jsx)(Gt,{variant:`ghost`,className:`absolute top-4 right-4`,size:`icon-sm`}),children:[(0,R.jsx)(Xi,{}),(0,R.jsx)(`span`,{className:`sr-only`,children:`Close`})]})]})]})}function iH({className:e,...t}){return(0,R.jsx)(`div`,{"data-slot":`sheet-header`,className:L(`flex flex-col gap-1.5 p-4`,e),...t})}function aH({className:e,...t}){return(0,R.jsx)(MI,{"data-slot":`sheet-title`,className:L(`font-medium text-foreground`,e),...t})}function oH({className:e,...t}){return(0,R.jsx)(_I,{"data-slot":`sheet-description`,className:L(`text-sm text-muted-foreground`,e),...t})}var sH=`https://cdn.mcp-use.com/mcpuse_logo_circle_dark.svg`;function cH({symbolSize:e=14,className:t,textClassName:n}){return(0,R.jsxs)(`span`,{className:L(`inline-flex items-center gap-1.5`,t),children:[(0,R.jsx)(lH,{size:e}),(0,R.jsx)(`span`,{className:L(`font-medium leading-none text-black [font-family:var(--font-family-outfit)]`,n),children:`Manufact`})]})}function lH({size:e=14,className:t}){return(0,R.jsxs)(`svg`,{width:e,height:e,viewBox:`0 0 480 480`,"aria-hidden":!0,className:L(`block shrink-0`,t),children:[(0,R.jsx)(`path`,{d:`M101.7 0 C157.9 0 203.4 45.7 203.4 102.1 C203.4 126.6 202.1 152.1 212.2 174.3 L219.8 191 C233.8 221.8 258.5 246.4 289.2 260.5 L303.5 267 C326.5 277.5 353 275.8 378.3 275.8 C434.5 275.8 480 321.5 480 377.9 C480 434.3 434.5 480 378.3 480 C322.1 480 276.6 434.3 276.6 377.9 C276.6 354.2 277.7 329.6 267.8 308 L259.8 290.3 C245.7 259.5 221 234.8 190.2 220.7 L173 212.9 C151 202.9 125.8 204.2 101.7 204.2 C45.5 204.2 0 158.5 0 102.1 C0 45.7 45.5 0 101.7 0 Z`,fill:`currentColor`}),(0,R.jsx)(`circle`,{cx:`96.4`,cy:`383.6`,r:`96.4`,fill:`currentColor`}),(0,R.jsx)(`circle`,{cx:`383.6`,cy:`96.4`,r:`96.4`,fill:`currentColor`})]})}var uH=`data:image/svg+xml,%3Csvg%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22%2394A3B8%22%20stroke%3D%22%2394A3B8%22%3E%3Cg%3E%3Cpath%20fill%3D%22none%22%20d%3D%22M3%20248.945C18%20248.945%2076%20236%20106%20219C136%20202%20136%20202%20198%20158C276.497%20102.293%20332%20120.945%20423%20120.945%22%20stroke-width%3D%2290%22%2F%3E%3Cpath%20d%3D%22M511%20121.5L357.25%20210.268L357.25%2032.7324L511%20121.5Z%22%2F%3E%3Cpath%20fill%3D%22none%22%20d%3D%22M0%20249C15%20249%2073%20261.945%20103%20278.945C133%20295.945%20133%20295.945%20195%20339.945C273.497%20395.652%20329%20377%20420%20377%22%20stroke-width%3D%2290%22%2F%3E%3Cpath%20d%3D%22M508%20376.445L354.25%20287.678L354.25%20465.213L508%20376.445Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E`,dH={openai:`OpenAI`,anthropic:`Anthropic`,google:`Google`};function fH(e){let t=e.split(`/`)[0]?.toLowerCase();return t===`openai`||t===`anthropic`||t===`google`?t:`openrouter`}function pH(e,t){let n=e.trim(),r=dH[t];if(r){let e=r.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),t=RegExp(`^${e}\\s*:\\s*`,`i`),i=n.replace(t,``).trim();if(i.length>0)return i}let i=n.indexOf(`: `);return i>0&&i<48?n.slice(i+2).trim():n}function mH({provider:e,model:t,displayName:n,mode:r=`byok`,className:i,...a}){let o=n??t,s=r===`managed`&&e===`openai-compatible`?fH(t):e;return(0,R.jsxs)(`button`,{type:`button`,className:L(`inline-flex items-center gap-1.5 min-w-0 border-0 bg-transparent p-1`,`font-mono text-[11px] text-muted-foreground cursor-pointer`,`hover:text-foreground transition-colors`,`rounded-md outline-none focus-visible:ring-1 focus-visible:ring-ring`,i),...a,children:[r===`managed`?(0,R.jsx)(`img`,{src:sH,alt:`Manufact`,className:`h-3.5 w-3.5 shrink-0 rounded-full object-cover`}):(0,R.jsx)(ci,{className:`size-3 shrink-0 opacity-70`,"aria-hidden":!0}),(0,R.jsx)(_H,{provider:s,className:`shrink-0`}),(0,R.jsx)(`span`,{className:`whitespace-nowrap`,children:o}),(0,R.jsx)(Ir,{className:`size-3 shrink-0 opacity-60`,"aria-hidden":!0})]})}function hH(e){switch(e){case`openai`:return`OpenAI`;case`openai-compatible`:return`OpenAI Compatible`;case`anthropic`:return`Anthropic`;case`google`:return`Google`;case`openrouter`:return`OpenRouter`;case`ollama`:return`Ollama`;default:return e}}function gH(e,t){switch(e){case`openai`:case`anthropic`:case`google`:return`https://inspector-cdn.mcp-use.com/providers/${e}.png`;case`ollama`:return`https://inspector-cdn.mcp-use.com/providers/${t===`dark`?`ollama_dark`:`ollama_light`}.png`;case`openrouter`:return uH;case`openai-compatible`:return null;default:return null}}function _H({provider:e,className:t}){let{resolvedTheme:n}=dz();if(e===`openai-compatible`)return null;let r=gH(e,n);if(r){let n=e===`ollama`?`h-3.5 w-3.5 object-contain`:`h-4 w-4 rounded-full object-cover`;return(0,R.jsx)(`img`,{src:r,alt:hH(e),className:L(n,t)})}return(0,R.jsx)(`div`,{"aria-label":hH(e),className:L(`flex h-4 w-4 items-center justify-center rounded-full bg-neutral-900 text-[9px] font-semibold text-white dark:bg-neutral-100 dark:text-neutral-900`,t),children:hH(e).charAt(0)})}function vH({className:e}){return(0,R.jsx)(`svg`,{viewBox:`0 -28.5 256 256`,className:e,fill:`currentColor`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":!0,children:(0,R.jsx)(`path`,{d:`M216.856339,16.5966031 C200.285002,8.84328665 182.566144,3.2084988 164.041564,0 C161.766523,4.11318106 159.108624,9.64549908 157.276099,14.0464379 C137.583995,11.0849896 118.072967,11.0849896 98.7430163,14.0464379 C96.9108417,9.64549908 94.1925838,4.11318106 91.8971895,0 C73.3526068,3.2084988 55.6133949,8.86399117 39.0420583,16.6376612 C5.61752293,67.146514 -3.4433191,116.400813 1.08711069,164.955721 C23.2560196,181.510915 44.7403634,191.567697 65.8621325,198.148576 C71.0772151,190.971126 75.7283628,183.341335 79.7352139,175.300261 C72.104019,172.400575 64.7949724,168.822202 57.8887866,164.667963 C59.7209612,163.310589 61.5131304,161.891452 63.2445898,160.431257 C105.36741,180.133187 151.134928,180.133187 192.754523,160.431257 C194.506336,161.891452 196.298154,163.310589 198.110326,164.667963 C191.183787,168.842556 183.854737,172.420929 176.223542,175.320965 C180.230393,183.341335 184.861538,190.991831 190.096624,198.16893 C211.238746,191.588051 232.743023,181.531619 254.911949,164.955721 C260.227747,108.668201 245.831087,59.8662432 216.856339,16.5966031 Z M85.4738752,135.09489 C72.8290281,135.09489 62.4592217,123.290155 62.4592217,108.914901 C62.4592217,94.5396472 72.607595,82.7145587 85.4738752,82.7145587 C98.3405064,82.7145587 108.709962,94.5189427 108.488529,108.914901 C108.508531,123.290155 98.3405064,135.09489 85.4738752,135.09489 Z M170.525237,135.09489 C157.88039,135.09489 147.510584,123.290155 147.510584,108.914901 C147.510584,94.5396472 157.658606,82.7145587 170.525237,82.7145587 C183.391518,82.7145587 193.761324,94.5189427 193.539891,108.914901 C193.539891,123.290155 183.391518,135.09489 170.525237,135.09489 Z`,fillRule:`nonzero`})})}var yH=`flex flex-1 items-center justify-center text-muted-foreground transition-colors hover:text-foreground active:text-foreground`;function bH({serverId:e,rpcLoggerOpen:t,onRpcLoggerOpenChange:n}){let r=lB(),{embeddedConfig:i}=nL(),{user:a}=WR(i.chatApiUrl),o=a?`https://manufact.com/cloud?ref=mcp-use-inspector`:`https://manufact.com/signup?ref=mcp-use-inspector`;return(0,R.jsxs)(R.Fragment,{children:[typeof document<`u`&&(0,br.createPortal)((0,R.jsxs)(`nav`,{"aria-label":`Inspector shortcuts`,className:`fixed inset-x-0 bottom-0 z-[100] flex items-center bg-transparent px-4 pt-(--mobile-chrome-gap) pb-[calc(var(--mobile-chrome-gap)+env(safe-area-inset-bottom))] lg:hidden`,children:[(0,R.jsx)(`button`,{type:`button`,onClick:()=>n(!t),className:L(yH,t&&`text-foreground`),"aria-label":`RPC logs`,"aria-pressed":t,children:(0,R.jsx)(Pi,{className:`size-4 shrink-0`})}),(0,R.jsx)(`a`,{href:`https://github.com/mcp-use/mcp-use`,target:`_blank`,rel:`noopener noreferrer`,className:yH,"aria-label":`GitHub`,children:(0,R.jsx)(pB,{className:`size-4 shrink-0`})}),(0,R.jsx)(`a`,{href:`https://discord.gg/XkNkSkMz3V`,target:`_blank`,rel:`noopener noreferrer`,className:yH,"aria-label":`Discord`,children:(0,R.jsx)(vH,{className:`size-4 shrink-0`})}),(0,R.jsx)(`a`,{href:o,target:`_blank`,rel:`noopener noreferrer`,onClick:()=>{try{bT(new Mo({referrer:`mcp-use-inspector-mobile-toolbar`})).catch(()=>{})}catch{}},className:yH,"aria-label":`manufact.com`,children:(0,R.jsx)(lH,{size:16})})]}),document.body),!r&&(0,R.jsx)($V,{open:t,onOpenChange:n,children:(0,R.jsxs)(rH,{side:`bottom`,className:`z-[101] flex h-[min(85dvh,720px)] flex-col gap-0 rounded-t-2xl border-zinc-200 p-0 dark:border-zinc-700`,children:[(0,R.jsx)(iH,{className:`sr-only`,children:(0,R.jsx)(aH,{children:`RPC logs`})}),(0,R.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col px-2 pb-2 pt-1`,children:(0,R.jsx)(JV,{serverIds:e?[e]:void 0})})]})})]})}function xH(e){return`${e.replace(/\/+$/,``)}${Uj()}`}function SH({tunnelUrl:e,tunnelMcpUrl:t,selectedServerId:n,selectedServer:r,configLoaded:i,removeConnection:a,updateConnection:o,connections:s}){let c=(0,z.useRef)(null),l=(0,z.useRef)(!1),u=(0,z.useRef)(null),[d,f]=(0,z.useState)(!1);return(0,z.useEffect)(()=>{!d||r?.url!==u.current||r.state!==`ready`&&r.state!==`failed`||(f(!1),l.current=!1,u.current=null)},[d,r]),(0,z.useEffect)(()=>{n&&qj(n)?c.current=n:r?.url&&qj(r.url)&&(c.current=r.url)},[r?.url,n]),(0,z.useEffect)(()=>{if(!i||!n||!r||l.current)return;let d=r.url??``,p=qj(d),m=Jj(d),h=t??(e?xH(e):null),g=null;e&&h&&p?g=h:!e&&m&&c.current&&(g=c.current),!(!g||g===d)&&(l.current=!0,u.current=g,f(!0),(async()=>{try{g!==n&&s.some(e=>e.id===g)&&await a(g),await o(n,uM({...fM(n)??dM(r),url:g}))}catch{f(!1),u.current=null,l.current=!1}})())},[i,s,a,r,n,t,e,o]),(0,z.useEffect)(()=>{d||(l.current=!1)},[d]),d}function CH({children:e}){let t=LN(),n=PN(),{servers:r,addServer:i,removeServer:a,updateServerMetadata:o,updateServer:s,storageLoaded:c}=oj(),l=(0,z.useCallback)(async(e,t)=>{try{await s(e,uM(t)),oM(e,t)}catch(t){console.error(`[Layout] Failed to update connection ${e}:`,t)}},[s]),u=(0,z.useCallback)(async(e,t)=>{try{await o(e,t)}catch(t){console.error(`[Layout] Failed to update connection metadata for ${e}:`,t)}},[o]),{selectedServerId:d,setSelectedServerId:f,activeTab:p,setActiveTab:m,navigateToItem:h,setTunnelUrl:g,tunnelUrl:_,isEmbedded:v,embeddedConfig:y,setEmbeddedMode:b}=nL(),[x,S]=(0,z.useState)(!1),[C,w]=(0,z.useState)(()=>{try{return localStorage.getItem(`inspector-sidebar-collapsed`)===`true`}catch{return!1}}),[T,E]=(0,z.useState)(()=>{try{return localStorage.getItem(`inspector-rpc-logger-open`)===`true`}catch{return!1}});(0,z.useEffect)(()=>{try{localStorage.setItem(`inspector-sidebar-collapsed`,C?`true`:`false`)}catch{}},[C]),(0,z.useEffect)(()=>{try{localStorage.setItem(`inspector-rpc-logger-open`,String(T))}catch{}},[T]);let{savedRequests:ee}=aL();(0,z.useEffect)(()=>{let e=new URLSearchParams(n.search),t=e.get(`embedded`)===`true`,r=e.get(`embeddedConfig`);if(t){let e={};if(r)try{e=JSON.parse(r)}catch(e){console.error(`Failed to parse embeddedConfig:`,e)}b(!0,e),e.defaultTab&&m(e.defaultTab)}},[]),(0,z.useEffect)(()=>{let e=new URLSearchParams(n.search).get(`tunnelUrl`);e!==null&&g(e)},[n.search,g]),(0,z.useEffect)(()=>{let e=new URLSearchParams(n.search).get(`tab`);e&&[`tools`,`prompts`,`resources`,`chat`,`sampling`,`elicitation`,`notifications`,`server-metadata`,`connection-settings`].includes(e)&&m(e)},[n.search,m]);let te=(0,z.useRef)(null),ne=(0,z.useRef)(Date.now()),re=(0,z.useRef)(new Set),ie=(0,z.useRef)(0);(0,z.useEffect)(()=>{let e=()=>{ie.current++};return window.addEventListener(`mcp-tool-executed`,e),()=>window.removeEventListener(`mcp-tool-executed`,e)},[]),(0,z.useEffect)(()=>{let e=()=>{try{bT(new Io({durationSeconds:Math.round((Date.now()-ne.current)/1e3),tabsVisited:re.current.size,toolsExecuted:ie.current})).catch(()=>{})}catch{}};return window.addEventListener(`beforeunload`,e),()=>window.removeEventListener(`beforeunload`,e)},[]);let D=(0,z.useCallback)(e=>{try{bT(new Po({tab:e,previousTab:te.current})).catch(()=>{})}catch{}te.current=e,re.current.add(e),m(e);let r=new URLSearchParams(n.search);r.set(`tab`,e),t(`/?${r.toString()}`,{replace:!0})},[m,t,n.search]);(0,z.useEffect)(()=>{let e=e=>{let t=e.detail.requestId;d&&h(d,`sampling`,t)},t=e=>{let t=e.detail.requestId;d&&h(d,`elicitation`,t)},n=e=>{let t=e.detail.toolName;d&&t?h(d,`tools`,t):d&&D(`tools`)};return window.addEventListener(`navigate-to-sampling`,e),window.addEventListener(`navigate-to-elicitation`,t),window.addEventListener(`navigate-to-tool-result`,n),()=>{window.removeEventListener(`navigate-to-sampling`,e),window.removeEventListener(`navigate-to-elicitation`,t),window.removeEventListener(`navigate-to-tool-result`,n)}},[d,D,h]);let ae=(0,z.useRef)(null),O=(0,z.useRef)(null),k=(0,z.useRef)(null),{isAutoConnecting:A}=nI({connections:r,addServer:i,removeConnection:a,configLoaded:c,embedded:v});(0,z.useEffect)(()=>{let e=()=>{let e=document.documentElement.classList.contains(`dark`)?`#000000`:`#f3f3f3`;document.documentElement.style.backgroundColor=e,document.body.style.backgroundColor=e};e();let t=new MutationObserver(e);return t.observe(document.documentElement,{attributes:!0,attributeFilter:[`class`]}),()=>t.disconnect()},[]);let oe=(0,z.useCallback)(e=>{bT(new ko({trigger:e})).catch(()=>{}),S(!0)},[]),se=e=>{if(!r.find(t=>t.id===e))return;f(e);let i=new URLSearchParams(n.search),a=i.get(`tunnelUrl`),o=i.get(`tab`),s=new URLSearchParams;s.set(`server`,e),a&&s.set(`tunnelUrl`,a),o&&s.set(`tab`,o),t(`/?${s.toString()}`)},ce=(0,z.useCallback)(e=>{if(!d)return;let t=fM(d)||r.find(e=>e.id===d);e.url===d?t&&hM(t,e)?(u(d,{name:e.name||e.url}),oM(d,e)):l(d,e):(a(d),i(e.url,uM(e))),IF.success(`Connection settings updated`)},[d,r,a,i,u,l]),j=(e,i,a)=>{if(console.warn(`[Layout] handleCommandPaletteNavigate called:`,{tab:e,itemName:i,serverId:a}),a){let o=r.find(e=>e.id===a);if(console.warn(`[Layout] Server lookup:`,{serverId:a,serverFound:!!o,serverState:o?.state}),!o||o.state!==`ready`){console.warn(`[Layout] Server not ready, showing error`),IF.error(`Server is not connected and cannot be inspected`);return}console.warn(`[Layout] Calling navigateToItem:`,{serverId:a,tab:e,itemName:i}),h(a,e,i);let s=new URLSearchParams(n.search),c=s.get(`tunnelUrl`),l=s.get(`tab`),u=new URLSearchParams;u.set(`server`,a),c&&u.set(`tunnelUrl`,c),e?u.set(`tab`,e):l&&u.set(`tab`,l);let d=`/?${u.toString()}`;console.warn(`[Layout] Navigating to:`,d),t(d)}else console.warn(`[Layout] No serverId, just updating tab to:`,e),D(e)},M=r.find(e=>e.id===d),N=SH({tunnelUrl:_,selectedServerId:d,selectedServer:M,configLoaded:c,removeConnection:a,updateConnection:s,connections:r}),le=M?M.tools.map(e=>({...e,_serverId:M.id})):r.flatMap(e=>e.state===`ready`?e.tools.map(t=>({...t,_serverId:e.id,_serverName:Xj(e)})):[]),ue=M?M.prompts.map(e=>({...e,_serverId:M.id})):r.flatMap(e=>e.state===`ready`?e.prompts.map(t=>({...t,_serverId:e.id,_serverName:Xj(e)})):[]),de=M?M.resources.map(e=>({...e,_serverId:M.id})):r.flatMap(e=>e.state===`ready`?e.resources.map(t=>({...t,_serverId:e.id,_serverName:Xj(e)})):[]);(0,z.useEffect)(()=>{if(N)return;let e=new URLSearchParams(n.search),i=e.get(`server`);if(i&&(i.startsWith(`http://`)||i.startsWith(`https://`))&&!r.find(e=>e.id===i)){let n=new URLSearchParams(e);n.delete(`server`),n.set(`autoConnect`,i),t(`/?${n.toString()}`,{replace:!0});return}i!==d&&f(i)},[n.search,d,f,r,t,N]),(0,z.useEffect)(()=>{if(N)return;let e=new URLSearchParams(n.search).get(`server`);if(e&&!r.find(t=>t.id===e)){let e=setTimeout(()=>t(`/`),3e3);return()=>clearTimeout(e)}},[n.search,t,r,N]),(0,z.useEffect)(()=>{if(!v)return;let e=e=>{if(!e.data||typeof e.data!=`object`||e.data.type!==`mcp-inspector:connect_servers`)return;let t=e.data.servers;if(!Array.isArray(t)||t.length===0)return;let n=null;for(let e of t){if(!e.url||typeof e.url!=`string`)continue;let t=e.url,a=e.name??`Server`,o={...e.headers??{}};if(e.auth?.access_token){let t=e.auth.token_type||`bearer`;o.Authorization=`${t.charAt(0).toUpperCase()+t.slice(1)} ${e.auth.access_token}`}let s=typeof e.proxyConfig?.proxyAddress==`string`?e.proxyConfig.proxyAddress.trim():``,c=``;try{new URL(t).origin!==window.location.origin&&(c=tM())}catch{c=tM()}let l=s||c,u=nM(e.connectionMode,e.connectionType,!!s),d=uM({url:t,name:a,transportType:`http`,connectionMode:u,protocolNegotiation:$j(eM(e.protocolNegotiation)),connectionType:u===`proxy`?`Via Proxy`:`Direct`,proxyConfig:u===`proxy`&&l?{proxyAddress:l,...Object.keys(o).length>0?{headers:o}:{}}:void 0,headers:o,autoProxyFallback:u===`auto`&&l?{enabled:!0,proxyAddress:l}:!1});r.find(e=>e.url===t)||i(t,d),n||=t}window.parent!==window&&window.parent.postMessage({type:`mcp-inspector:servers_connected`,count:t.length},`*`)};return window.addEventListener(`message`,e),()=>window.removeEventListener(`message`,e)},[v,r,i]);let fe=(0,z.useRef)(!1);(0,z.useEffect)(()=>{if(!v||fe.current||d)return;let e=r.find(e=>e.state===`ready`);if(e){fe.current=!0,f(e.id);let r=new URLSearchParams(n.search);r.set(`server`,e.id),t(`/?${r.toString()}`,{replace:!0})}},[v,r,d,f,t,n.search]),rL({onCommandPalette:()=>oe(`keyboard`),onToolsTab:()=>{M&&D(`tools`)},onPromptsTab:()=>{M&&D(`prompts`)},onResourcesTab:()=>{M&&D(`resources`)},onChatTab:()=>{M&&D(`chat`)},onHome:()=>{t(`/`)},onFocusSearch:()=>{p===`tools`&&ae.current?ae.current.focusSearch():p===`prompts`&&O.current?O.current.focusSearch():p===`resources`&&k.current&&k.current.focusSearch()},onBlurSearch:()=>{p===`tools`&&ae.current?ae.current.blurSearch():p===`prompts`&&O.current?O.current.blurSearch():p===`resources`&&k.current&&k.current.blurSearch()}});let pe=new URLSearchParams(n.search).get(`server`),me=!c&&!!pe&&!pe.startsWith(`http://`)&&!pe.startsWith(`https://`),he=A||me||N,ge=M?.id??`home`,_e=he?`boot`:ge,[ve,ye]=(0,z.useState)(_e);(0,z.useLayoutEffect)(()=>{if(_e===ve)return;let e=()=>(0,br.flushSync)(()=>ye(_e));typeof document.startViewTransition==`function`?document.startViewTransition(e):e()},[_e,ve]);let be=ve===`boot`,xe=be||ve===`home`?void 0:r.find(e=>e.id===ve),P=v&&y.singleTab,Se=v?{backgroundColor:y.backgroundColor||`#f3f3f3`,padding:P?`0`:y.padding||`0.5rem`}:{},Ce=v?P?`h-screen flex flex-col`:`h-screen flex flex-col gap-2 sm:gap-4`:`h-screen bg-[#f3f3f3] dark:bg-black flex flex-col overflow-x-hidden px-4 lg:px-0 pb-[calc(var(--mobile-toolbar-height)+env(safe-area-inset-bottom))] lg:pb-4`,we=P?`flex-1 w-full bg-white dark:bg-black p-0 overflow-auto`:L(`flex-1 min-h-0 min-w-0 max-w-full w-full bg-white dark:bg-black rounded-2xl border border-zinc-200 dark:border-zinc-700 overflow-x-hidden overflow-y-auto`,!xe&&`lg:mx-4`,xe&&`lg:mr-4`);return(0,R.jsxs)(Ve,{children:[(0,R.jsx)(`div`,{className:`inspector-view-transition h-screen overflow-x-hidden bg-[#f3f3f3] dark:bg-black`,children:be?(0,R.jsx)(`div`,{className:`flex h-full items-center justify-center bg-[#f3f3f3] dark:bg-black`,children:(0,R.jsxs)(`div`,{className:`flex flex-col items-center gap-4`,children:[(0,R.jsx)(XI,{className:`h-8 w-8 text-zinc-600 dark:text-zinc-400`}),(0,R.jsx)(`p`,{className:`text-sm text-zinc-600 dark:text-zinc-400`,children:`Connecting to MCP server...`})]})}):(0,R.jsxs)(`div`,{className:Ce,style:Se,children:[!P&&(0,R.jsx)(dB,{connections:r,selectedServer:xe,activeTab:p,onServerSelect:se,onTabChange:D,embedded:v,sidebarCollapsed:C}),(0,R.jsxs)(`div`,{className:P?`flex-1 min-h-0`:`flex min-w-0 flex-1 min-h-0 overflow-hidden`,children:[xe&&!P&&(0,R.jsx)($B,{activeTab:p,onTabChange:D,selectedServer:xe,visibleTabs:y.visibleTabs,collapsed:C,onCollapsedChange:w,rpcLoggerOpen:T,onRpcLoggerOpenChange:E,onCommandPaletteOpen:()=>oe(`button`)}),(0,R.jsx)(`main`,{className:we,children:(0,R.jsx)(FR,{selectedServer:xe,activeTab:p,toolsSearchRef:ae,promptsSearchRef:O,resourcesSearchRef:k,onUpdateConnection:ce,children:e})}),xe&&!P&&(0,R.jsx)(QV,{serverId:xe.id,open:T})]})]})}),!P&&!be&&(0,R.jsx)(bH,{serverId:xe?.id,rpcLoggerOpen:T,onRpcLoggerOpenChange:E}),(0,R.jsx)(SL,{isOpen:x,onOpenChange:S,tools:le,prompts:ue,resources:de,savedRequests:ee,connections:r,selectedServer:M,tunnelUrl:_,onNavigate:j,onServerSelect:se})]})}function wH({...e}){let{resolvedTheme:t}=dz();return(0,R.jsx)(ZF,{theme:t,className:`toaster group`,style:{"--normal-bg":`var(--popover)`,"--normal-text":`var(--popover-foreground)`,"--normal-border":`var(--border)`},...e})}var TH=(0,z.createContext)(void 0),EH={deviceType:`desktop`,customViewport:{width:768,height:1024},cspMode:`permissive`,displayModeOverride:null,capabilities:{hover:!0,touch:!1},safeAreaInsets:{top:0,right:0,bottom:0,left:0},locale:`en-US`,timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone||`UTC`};function DH({children:e}){let[t,n]=(0,z.useState)({activeWidgetId:null,widgets:new Map,playground:EH}),r=(0,z.useCallback)(e=>{n(t=>({...t,activeWidgetId:e}))},[]),i=(0,z.useCallback)((e,t)=>{n(n=>{if(n.widgets.has(e))return n;let r=new Map(n.widgets);return r.set(e,{...t,cspViolations:[]}),{...n,widgets:r}})},[]),a=(0,z.useCallback)(e=>{n(t=>{let n=new Map(t.widgets);return n.delete(e),{...t,widgets:n,activeWidgetId:t.activeWidgetId===e?null:t.activeWidgetId}})},[]),o=(0,z.useRef)(t);o.current=t;let s=(0,z.useCallback)(e=>o.current.widgets.get(e),[]),c=(0,z.useCallback)((e,t)=>{n(n=>{let r=n.widgets.get(e);if(!r)return n;let i={cspViolations:[...r.cspViolations,t]};t.originalPolicy&&r.effectivePolicy===void 0&&(i.effectivePolicy=t.originalPolicy);let a=new Map(n.widgets);return a.set(e,{...r,...i}),{...n,widgets:a}})},[]),l=(0,z.useCallback)(e=>{n(t=>{let n=t.widgets.get(e);if(!n)return t;let r=new Map(t.widgets);return r.set(e,{...n,cspViolations:[]}),{...t,widgets:r}})},[]),u=(0,z.useCallback)((e,t)=>{n(n=>{let r=n.widgets.get(e);if(!r)return n;let i=new Map(n.widgets);return i.set(e,{...r,modelContext:t}),{...n,widgets:i}})},[]),d=(0,z.useCallback)((e,t)=>{n(n=>{let r=n.widgets.get(e);if(!r)return n;let i=new Map(n.widgets);return i.set(e,{...r,widgetState:t}),{...n,widgets:i}})},[]),f=(0,z.useCallback)((e,t,r)=>{n(n=>{let i=n.widgets.get(e);if(!i)return n;let a=new Map(n.widgets);return a.set(e,{...i,declaredCsp:t,...r!==void 0&&{effectivePolicy:r}}),{...n,widgets:a}})},[]),p=(0,z.useCallback)(e=>{n(t=>({...t,playground:{...t.playground,...e}}))},[]),m=(0,z.useCallback)(()=>{n(e=>({...e,widgets:new Map,activeWidgetId:null}))},[]),h=(0,z.useCallback)(()=>{let e=new Map;for(let[n,r]of t.widgets)r.modelContext&&e.set(n,r.modelContext);return e},[t.widgets]);return(0,R.jsx)(TH,{value:(0,z.useMemo)(()=>({...t,setActiveWidget:r,addWidget:i,removeWidget:a,getWidget:s,addCspViolation:c,clearCspViolations:l,setWidgetModelContext:u,setWidgetState:d,setWidgetDeclaredCsp:f,updatePlaygroundSettings:p,clearAllWidgets:m,getAllModelContexts:h}),[t,r,i,a,s,c,l,u,d,f,p,m,h]),children:e})}function OH(){let e=(0,z.use)(TH);if(!e)throw Error(`useWidgetDebug must be used within WidgetDebugProvider`);return e}var kH={mobile:{width:390,height:844,name:`iPhone 14`},desktop:{width:1440,height:900,name:`Desktop`}},AH=(0,z.lazy)(()=>lS(()=>import(`./OAuthCallback-Bg0ejU9I.js`).then(e=>({default:e.OAuthCallback})),__vite__mapDeps([39,1,3]))),jH=(0,z.lazy)(()=>lS(()=>import(`./ManufactOAuthCallback-BVowTudz.js`).then(e=>({default:e.ManufactOAuthCallback})),__vite__mapDeps([40,1,3]))),MH=(0,z.lazy)(()=>lS(()=>import(`./ViewPreview-DeWlfohx.js`).then(e=>({default:e.ViewPreview})),__vite__mapDeps([41,1,3,18,2])));function NH({activeTabRef:e}){let{activeTab:t}=nL();return(0,z.useEffect)(()=>{e.current=t},[t,e]),null}function PH(){let e=(0,z.useRef)(`tools`),t=new URLSearchParams(window.location.search),n=t.get(`embedded`)===`true`,r=t.get(`theme`),i=(0,z.useMemo)(()=>n?void 0:new gM(`mcp-inspector-connections`),[n]),a=tM(),o=a?.replace(/\/proxy\/?$/,`/oauth`),s=Wj();return(0,z.useEffect)(()=>{vT()},[]),(0,z.useEffect)(()=>{let e=t.get(`auth_error`);if(!e)return;let n=t.get(`auth_error_description`);IF.error(`OAuth authentication failed: ${n||e}`,{duration:1/0,closeButton:!0});let r=new URLSearchParams(t);r.delete(`auth_error`),r.delete(`auth_error_description`);let i=r.toString();window.history.replaceState({},``,`${window.location.pathname}${i?`?${i}`:``}`)},[]),(0,R.jsx)(fz,{forcedTheme:r||void 0,children:(0,R.jsx)(Jt,{defaultShape:`pill`,children:(0,R.jsx)(DH,{children:(0,R.jsx)(aj,{storageProvider:i,enableRpcLogging:!0,defaultCallbackUrl:`${window.location.origin}${s}/oauth/callback`,defaultOAuthProxyUrl:o,defaultAutoProxyFallback:a?{enabled:!0,proxyAddress:a}:!1,defaultServerConfig:{preventAutoAuth:!0,useRedirectFlow:!0},clientInfo:{name:`mcp-use Inspector`,version:Lo(),websiteUrl:`https://mcp-use.com`,icons:[{src:`https://mcp-use.com/logo.png`}],capabilities:{extensions:{"io.modelcontextprotocol/ui":{mimeTypes:[`text/html;profile=mcp-app`]}}}},onServerAdded:(e,t)=>{console.log(`[Inspector] Server added:`,e,t.state)},onServerRemoved:e=>{console.log(`[Inspector] Server removed:`,e)},onServerStateChange:(e,t)=>{console.log(`[Inspector] Server state changed:`,e,t)},onSamplingRequest:(e,t,n,r,i)=>{let a=IF((0,R.jsx)(Fn,{title:`Sampling Request Received`,description:`New request from ${n}`,actions:[{label:`View Details`,testId:`sampling-toast-view-details`,onClick:()=>{let t=new CustomEvent(`navigate-to-sampling`,{detail:{requestId:e.id}});window.dispatchEvent(t),IF.dismiss(a)}},{label:`Approve`,testId:`sampling-toast-approve`,onClick:()=>{r(e.id,In),IF.success(`Sampling request approved`),IF.dismiss(a)}},{label:`Deny`,testId:`sampling-toast-deny`,onClick:()=>{i(e.id,`User denied from toast`),IF.dismiss(a)}}]}),{duration:1/0})},onElicitationRequest:(t,n,r,i,a)=>{if(e.current===`chat`)return;let o=t.request.mode||`form`,s=t.request.message,c=o===`url`&&`url`in t.request?t.request.url:void 0,l=IF((0,R.jsx)(Fn,{title:`Elicitation Request Received`,description:`From ${r}: ${s}`,extra:o===`url`&&c?(0,R.jsx)(`p`,{className:`text-xs text-muted-foreground mt-1 font-mono`,children:c}):void 0,actions:[{label:`View Details`,testId:`elicitation-toast-view-details`,onClick:()=>{let e=new CustomEvent(`navigate-to-elicitation`,{detail:{requestId:t.id}});window.dispatchEvent(e),IF.dismiss(l)}},...o===`url`&&c?[{label:`Open URL`,testId:`elicitation-toast-open-url`,onClick:()=>{window.open(c,`_blank`),IF.dismiss(l)}}]:[],{label:`Cancel`,testId:`elicitation-toast-cancel`,onClick:()=>{a(t.id,`User cancelled from toast`),IF.dismiss(l)}}]}),{duration:1/0})},children:(0,R.jsxs)(tL,{children:[(0,R.jsx)(NH,{activeTabRef:e}),(0,R.jsx)(eF,{basename:s,children:(0,R.jsxs)(dP,{children:[(0,R.jsx)(lP,{path:`/oauth/callback`,element:(0,R.jsx)(wR,{children:(0,R.jsx)(AH,{})})}),(0,R.jsx)(lP,{path:`/auth/callback`,element:(0,R.jsx)(wR,{children:(0,R.jsx)(jH,{})})}),(0,R.jsx)(lP,{path:`/preview/:view`,element:(0,R.jsx)(wR,{children:(0,R.jsx)(MH,{})})}),(0,R.jsx)(lP,{path:`/`,element:(0,R.jsx)(CH,{children:(0,R.jsx)($I,{})})})]})}),(0,R.jsx)(wH,{position:`top-center`})]})})})})})}var FH=document.getElementById(`root`);FH?Pn.createRoot(FH).render((0,R.jsx)(PH,{})):console.error(`[inspector] Root element not found`);export{hI as $,Wi as $t,WR as A,Q as At,BI as B,go as Bt,tV as C,Mr as Cn,Cj as Ct,qz as D,oj as Dt,Gz as E,_r as En,KA as Et,XI as F,Eo as Ft,GI as G,Ya as Gt,WI as H,vo as Ht,YI as I,wo as It,AI as J,Xa as Jt,zI as K,Za as Kt,JI as L,Co as Lt,aL as M,Bb as Mt,rL as N,Cf as Nt,Kz as O,bT as Ot,nL as P,No as Pt,gI as Q,Gi as Qt,RI as R,So as Rt,sV as S,Fr as Sn,Ij as St,vB as T,vr as Tn,wj as Tt,VI as U,mo as Ut,KI as V,bo as Vt,UI as W,ro as Wt,CI as X,Xi as Xt,wI as Y,Ia as Yt,_I as Z,Yi as Zt,DV as _,Yr as _n,Zj as _t,_H as a,xi as an,aI as at,_V as b,Vr as bn,zj as bt,$V as c,fi as cn,dF as ct,iH as d,ai as dn,fM as dt,zi as en,uI as et,aH as f,ri as fn,eM as ft,OV as g,Xr as gn,Xj as gt,kV as h,Zr as hn,Yj as ht,mH as i,Ti as in,iI as it,lR as j,lS as jt,dz as k,KC as kt,rH as l,ci as ln,sM as lt,WV as m,$r as mn,dM as mt,OH as n,Ai as nn,sI as nt,pH as o,bi as on,IF as ot,eH as p,ti as pn,$j as pt,MI as q,$a as qt,cH as r,ki as rn,oI as rt,hH as s,yi as sn,zN as st,kH as t,Ii as tn,rI as tt,oH as u,si as un,tM as ut,CV as v,qr as vn,Uj as vt,MB as w,jr as wn,Tj as wt,oV as x,Ir as xn,Bj as xt,SV as y,Wr as yn,Gj as yt,HI as z,Ao as zt};
|
|
499
|
+
`;for(let{name:n}of e)t+=`export ${n}="your-${n}-value"\n`;return t}function vL({className:e,size:t=`md`}){return(0,R.jsxs)(`svg`,{viewBox:`0 0 500 500`,className:L(`text-current`,{sm:`h-4 w-4`,md:`h-5 w-5`,lg:`h-6 w-6`}[t],e),fill:`currentColor`,fillRule:`nonzero`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,R.jsx)(`path`,{d:`M105.933 0C164.437 0.000116002 211.865 47.607 211.865 106.333C211.865 131.829 210.493 158.403 221.068 181.602L228.975 198.947C243.584 230.997 269.265 256.7 301.303 271.336L316.155 278.121C340.142 289.079 367.694 287.335 394.066 287.335C452.571 287.335 499.999 334.942 499.999 393.668C499.999 452.394 452.571 500.001 394.066 500.001C335.562 500.001 288.134 452.394 288.134 393.668C288.134 368.974 289.24 343.275 278.992 320.807L270.586 302.38C255.948 270.29 230.214 244.565 198.118 229.939L180.164 221.758C157.282 211.331 131.078 212.666 105.933 212.666C47.4278 212.666 4.86252e-05 165.059 0 106.333C0 47.607 47.4278 0 105.933 0Z`}),(0,R.jsx)(`circle`,{cx:`100.426`,cy:`399.575`,r:`100.426`}),(0,R.jsx)(`path`,{d:`M500 100.426C500 155.889 455.037 200.851 399.574 200.851C344.11 200.851 299.148 155.889 299.148 100.426C299.148 44.962 344.11 0 399.574 0C455.037 0 500 44.962 500 100.426Z`})]})}function yL({className:e}){return(0,R.jsx)(`svg`,{viewBox:`0 0 24 24`,className:e,fill:`currentColor`,xmlns:`http://www.w3.org/2000/svg`,children:(0,R.jsx)(`path`,{d:`M23.15 2.587L18.21.21a1.494 1.494 0 0 0-1.705.29l-9.46 8.63-4.12-3.128a.999.999 0 0 0-1.276.057L.327 7.261A1 1 0 0 0 .326 8.74L3.899 12 .326 15.26a1 1 0 0 0 .001 1.479L1.65 17.94a.999.999 0 0 0 1.276.057l4.12-3.128 9.46 8.63a1.492 1.492 0 0 0 1.704.29l4.942-2.377A1.5 1.5 0 0 0 24 20.06V3.939a1.5 1.5 0 0 0-.85-1.352zm-5.146 14.861L10.826 12l7.178-5.448v10.896z`})})}function bL({className:e}){return(0,R.jsxs)(`svg`,{fill:`currentColor`,fillRule:`evenodd`,viewBox:`0 0 24 24`,className:e,xmlns:`http://www.w3.org/2000/svg`,"aria-label":`ModelContextProtocol`,children:[(0,R.jsx)(`path`,{d:`M15.688 2.343a2.588 2.588 0 00-3.61 0l-9.626 9.44a.863.863 0 01-1.203 0 .823.823 0 010-1.18l9.626-9.44a4.313 4.313 0 016.016 0 4.116 4.116 0 011.204 3.54 4.3 4.3 0 013.609 1.18l.05.05a4.115 4.115 0 010 5.9l-8.706 8.537a.274.274 0 000 .393l1.788 1.754a.823.823 0 010 1.18.863.863 0 01-1.203 0l-1.788-1.753a1.92 1.92 0 010-2.754l8.706-8.538a2.47 2.47 0 000-3.54l-.05-.049a2.588 2.588 0 00-3.607-.003l-7.172 7.034-.002.002-.098.097a.863.863 0 01-1.204 0 .823.823 0 010-1.18l7.273-7.133a2.47 2.47 0 00-.003-3.537z`}),(0,R.jsx)(`path`,{d:`M14.485 4.703a.823.823 0 000-1.18.863.863 0 00-1.204 0l-7.119 6.982a4.115 4.115 0 000 5.9 4.314 4.314 0 006.016 0l7.12-6.982a.823.823 0 000-1.18.863.863 0 00-1.204 0l-7.119 6.982a2.588 2.588 0 01-3.61 0 2.47 2.47 0 010-3.54l7.12-6.982z`})]})}function xL({className:e}){return(0,R.jsx)(`svg`,{viewBox:`0 -28.5 256 256`,className:e,fill:`currentColor`,xmlns:`http://www.w3.org/2000/svg`,children:(0,R.jsx)(`path`,{d:`M216.856339,16.5966031 C200.285002,8.84328665 182.566144,3.2084988 164.041564,0 C161.766523,4.11318106 159.108624,9.64549908 157.276099,14.0464379 C137.583995,11.0849896 118.072967,11.0849896 98.7430163,14.0464379 C96.9108417,9.64549908 94.1925838,4.11318106 91.8971895,0 C73.3526068,3.2084988 55.6133949,8.86399117 39.0420583,16.6376612 C5.61752293,67.146514 -3.4433191,116.400813 1.08711069,164.955721 C23.2560196,181.510915 44.7403634,191.567697 65.8621325,198.148576 C71.0772151,190.971126 75.7283628,183.341335 79.7352139,175.300261 C72.104019,172.400575 64.7949724,168.822202 57.8887866,164.667963 C59.7209612,163.310589 61.5131304,161.891452 63.2445898,160.431257 C105.36741,180.133187 151.134928,180.133187 192.754523,160.431257 C194.506336,161.891452 196.298154,163.310589 198.110326,164.667963 C191.183787,168.842556 183.854737,172.420929 176.223542,175.320965 C180.230393,183.341335 184.861538,190.991831 190.096624,198.16893 C211.238746,191.588051 232.743023,181.531619 254.911949,164.955721 C260.227747,108.668201 245.831087,59.8662432 216.856339,16.5966031 Z M85.4738752,135.09489 C72.8290281,135.09489 62.4592217,123.290155 62.4592217,108.914901 C62.4592217,94.5396472 72.607595,82.7145587 85.4738752,82.7145587 C98.3405064,82.7145587 108.709962,94.5189427 108.488529,108.914901 C108.508531,123.290155 98.3405064,135.09489 85.4738752,135.09489 Z M170.525237,135.09489 C157.88039,135.09489 147.510584,123.290155 147.510584,108.914901 C147.510584,94.5396472 157.658606,82.7145587 170.525237,82.7145587 C183.391518,82.7145587 193.761324,94.5189427 193.539891,108.914901 C193.539891,123.290155 183.391518,135.09489 170.525237,135.09489 Z`,fillRule:`nonzero`})})}function SL({isOpen:e,onOpenChange:t,tools:n,prompts:r,resources:i,savedRequests:a,connections:o,selectedServer:s,tunnelUrl:c,onNavigate:l,onServerSelect:u}){let[d,f]=(0,z.useState)(``),[p,m]=(0,z.useState)(0),h=(0,z.useRef)(null),g=(0,z.useRef)(null),_=LN(),y=kt.pill,{activeIndex:b,itemRects:x,sessionRef:S,handlers:C,registerItem:w,measureItems:T}=_n(h),E=s?c?`${c}/mcp`:s.url:null,ee=s?.name||`MCP Server`,te=s?cM(s):void 0,ne=s?[{id:`open-in-cursor`,name:`Open in Cursor`,description:`Add this server to Cursor`,type:`global`,category:`Open in Client`,action:()=>{try{let e=lL(E,ee,te);window.location.href=e,IF.success(`Opening in Cursor...`),t(!1)}catch{IF.error(`Failed to open in Cursor`)}}},{id:`open-in-claude-code`,name:`Open in Claude Code`,description:`Add this server to Claude Code CLI`,type:`global`,category:`Open in Client`,action:()=>{let{command:e}=mL(E,ee,te);zj(e),IF.success(`Command copied to clipboard`),t(!1)}},{id:`open-in-claude-desktop`,name:`Open in Claude Desktop`,description:`Download .mcpb configuration file`,type:`global`,category:`Open in Client`,action:()=>{try{pL(E,ee,te),IF.success(`Downloaded .mcpb file`),t(!1)}catch{IF.error(`Failed to download configuration file`)}}},{id:`open-in-vscode`,name:`Open in VS Code`,description:`Add this server to VS Code`,type:`global`,category:`Open in Client`,action:()=>{try{let e=uL(E,ee,te);window.location.href=e,IF.success(`Opening in VS Code...`),t(!1)}catch{IF.error(`Failed to open in VS Code`)}}},{id:`open-in-vscode-insiders`,name:`Open in VS Code Insiders`,description:`Add this server to VS Code Insiders`,type:`global`,category:`Open in Client`,action:()=>{try{let e=dL(E,ee,te);window.location.href=e,IF.success(`Opening in VS Code Insiders...`),t(!1)}catch{IF.error(`Failed to open in VS Code Insiders`)}}},{id:`open-in-gemini`,name:`Open in Gemini CLI`,description:`Add this server to Gemini CLI`,type:`global`,category:`Open in Client`,action:()=>{let{command:e}=hL(E,ee,te);zj(e),IF.success(`Command copied to clipboard`),t(!1)}},{id:`open-in-codex`,name:`Open in Codex CLI`,description:`Add this server to Codex CLI`,type:`global`,category:`Open in Client`,action:()=>{let{config:e}=gL(E,ee,te);zj(e),IF.success(`Config copied to clipboard`),t(!1)}}]:[],re=[{id:`connect-server`,name:`Connect Server`,description:`Add a new MCP server connection`,type:`global`,category:`Navigation`,action:()=>_(`/`)},{id:`mcp-use-website`,name:`MCP Use Website`,description:`Visit mcp-use.com for tools and resources`,type:`global`,category:`Documentation`,action:()=>window.open(`https://mcp-use.com`,`_blank`)},{id:`mcp-use-docs`,name:`How to Create an MCP Server`,description:`Step-by-step guide to building MCP servers`,type:`global`,category:`Documentation`,action:()=>window.open(`https://mcp-use.com/docs`,`_blank`)},{id:`mcp-docs`,name:`MCP Official Documentation`,description:`Learn about the Model Context Protocol`,type:`global`,category:`Documentation`,action:()=>window.open(`https://modelcontextprotocol.io/docs/getting-started/intro`,`_blank`)},{id:`discord`,name:`Join Discord Community`,description:`Connect with the MCP community`,type:`global`,category:`Community`,action:()=>window.open(`https://discord.gg/XkNkSkMz3V`,`_blank`)},{id:`clear-localstorage`,name:`Clear localStorage & Reload`,description:`Having trouble connecting? Clear stored auth data and refresh`,type:`global`,category:`Troubleshooting`,action:()=>{let e=[];for(let t=0;t<localStorage.length;t++){let n=localStorage.key(t);n&&(n.startsWith(`mcp:auth`)||n.startsWith(`mcp-inspector`))&&e.push(n)}e.forEach(e=>localStorage.removeItem(e)),IF.success(`Cleared ${e.length} localStorage item(s). Refreshing page...`,{duration:2e3}),setTimeout(()=>{window.location.reload()},500),t(!1)}}],ie=o.map(e=>({id:`server-${e.id}`,name:Xj(e),description:`Connected server (${e.state})`,type:`global`,category:`Connected Servers`,metadata:{serverId:e.id,state:e.state},action:()=>u(e.id)})),D=[...re,...ne,...ie,...n.map(e=>({id:`tool-${e.name}`,name:e.name,description:e.description,type:`tool`,category:e._serverName?`Tools - ${e._serverName}`:`Tools`,metadata:{inputSchema:e.inputSchema,serverId:e._serverId,serverName:e._serverName}})),...r.map(e=>({id:`prompt-${e.name}`,name:e.name,description:e.description,type:`prompt`,category:e._serverName?`Prompts - ${e._serverName}`:`Prompts`,metadata:{arguments:e.arguments,serverId:e._serverId,serverName:e._serverName}})),...i.map(e=>({id:`resource-${e.uri}`,name:e.name,description:e.description,type:`resource`,category:e._serverName?`Resources - ${e._serverName}`:`Resources`,metadata:{uri:e.uri,mimeType:e.mimeType,serverId:e._serverId,serverName:e._serverName}})),...a.map(e=>({id:`saved-${e.id}`,name:e.name,description:`Saved request for ${e.toolName}`,type:`saved-request`,category:`Saved Requests`,metadata:{toolName:e.toolName,args:e.args,savedAt:e.savedAt,serverId:e.serverId,serverName:e.serverName}}))].filter(e=>d.trim()?`${e.name} ${e.description||``} ${e.category}`.toLowerCase().includes(d.trim().toLowerCase()):!0),ae=(0,z.useCallback)(e=>{if(console.warn(`[CommandPalette] Item selected:`,{itemType:e.type,itemName:e.name,itemId:e.id,metadata:e.metadata}),e.action)console.warn(`[CommandPalette] Executing action for global item`),e.action(),t(!1);else if(e.type===`global`)e.metadata?.serverId&&(console.warn(`[CommandPalette] Selecting server:`,e.metadata.serverId),u(e.metadata.serverId),t(!1));else{let n=e.type===`resource`?e.metadata?.uri:e.name,r=e.type===`tool`?`tools`:e.type===`prompt`?`prompts`:e.type===`saved-request`?`tools`:`resources`;console.warn(`[CommandPalette] Navigating to item:`,{tab:r,itemIdentifier:n,serverId:e.metadata?.serverId}),l(r,n,e.metadata?.serverId),t(!1)}},[l,t,u]),O=(e,t,n)=>{switch(e){case`tool`:return(0,R.jsx)(`div`,{className:`bg-blue-500/20 rounded-full p-2 flex items-center justify-center shrink-0`,children:(0,R.jsx)(Yi,{className:`h-4 w-4 text-blue-500`})});case`prompt`:return(0,R.jsx)(`div`,{className:`bg-purple-500/20 rounded-full p-2 flex items-center justify-center shrink-0`,children:(0,R.jsx)(yi,{className:`h-4 w-4 text-purple-500`})});case`resource`:return(0,R.jsx)(`div`,{className:`bg-green-500/20 rounded-full p-2 flex items-center justify-center shrink-0`,children:(0,R.jsx)(Qr,{className:`h-4 w-4 text-green-500`})});case`saved-request`:return(0,R.jsx)(`div`,{className:`bg-orange-500/20 rounded-full p-2 flex items-center justify-center shrink-0`,children:(0,R.jsx)(ri,{className:`h-4 w-4 text-orange-500`})});case`global`:if(t===`Navigation`)return(0,R.jsx)(`div`,{className:`bg-gray-500/20 rounded-full p-2 flex items-center justify-center shrink-0`,children:(0,R.jsx)(Ai,{className:`h-4 w-4 text-gray-600 dark:text-gray-300`})});if(t===`Open in Client`){if(n?.includes(`Cursor`))return(0,R.jsx)(`div`,{className:`bg-gray-200 dark:bg-gray-800 rounded-full p-2 flex items-center justify-center shrink-0`,children:(0,R.jsx)(`img`,{src:`https://cdn.simpleicons.org/cursor`,alt:`Cursor`,className:`h-4 w-4`})});if(n?.includes(`Claude Code`)||n?.includes(`Claude Desktop`))return(0,R.jsx)(`div`,{className:`bg-orange-500/20 rounded-full p-2 flex items-center justify-center shrink-0`,children:(0,R.jsx)(`img`,{src:`https://cdn.simpleicons.org/claude`,alt:`Claude`,className:`h-4 w-4`})});if(n?.includes(`VS Code`))return(0,R.jsx)(`div`,{className:`bg-blue-600/20 rounded-full p-2 flex items-center justify-center shrink-0`,children:(0,R.jsx)(yL,{className:`h-4 w-4 text-blue-600`})});if(n?.includes(`Gemini`))return(0,R.jsx)(`div`,{className:`bg-purple-500/20 rounded-full p-2 flex items-center justify-center shrink-0`,children:(0,R.jsx)(`img`,{src:`https://cdn.simpleicons.org/googlegemini`,alt:`Gemini`,className:`h-4 w-4`})});if(n?.includes(`Codex`))return(0,R.jsx)(`div`,{className:`bg-green-500/20 rounded-full p-2 flex items-center justify-center shrink-0`,children:(0,R.jsx)(`img`,{src:`https://inspector-cdn.mcp-use.com/providers/openai.png`,alt:`Codex`,className:`h-4 w-4`})})}return t===`Documentation`?n?.includes(`MCP Use`)||n?.includes(`mcp-use`)?(0,R.jsx)(`div`,{className:`bg-black/10 dark:bg-white/10 rounded-full p-2 flex items-center justify-center shrink-0`,children:(0,R.jsx)(vL,{className:`h-4 w-4 text-black dark:text-white`,size:`sm`})}):(0,R.jsx)(`div`,{className:`bg-orange-500/20 rounded-full p-2 flex items-center justify-center shrink-0`,children:(0,R.jsx)(Yr,{className:`h-4 w-4 text-orange-500`})}):t===`Community`?(0,R.jsx)(`div`,{className:`bg-purple-500/20 rounded-full p-2 flex items-center justify-center shrink-0`,children:(0,R.jsx)(xL,{className:`h-4 w-4 text-purple-500`})}):t===`Troubleshooting`?(0,R.jsx)(`div`,{className:`bg-yellow-500/20 rounded-full p-2 flex items-center justify-center shrink-0`,children:(0,R.jsx)(Pr,{className:`h-4 w-4 text-yellow-500`})}):t===`Connected Servers`?(0,R.jsx)(`div`,{className:`bg-cyan-500/20 rounded-full p-2 flex items-center justify-center shrink-0`,children:(0,R.jsx)(Fi,{className:`h-4 w-4 text-cyan-500`})}):(0,R.jsx)(`div`,{className:`bg-gray-500/20 rounded-full p-2 flex items-center justify-center shrink-0`,children:(0,R.jsx)(Yr,{className:`h-4 w-4 text-gray-500`})});default:return(0,R.jsx)(`div`,{className:`bg-gray-500/20 rounded-full p-2 flex items-center justify-center shrink-0`,children:(0,R.jsx)(v,{className:`h-4 w-4 text-gray-500`})})}};(0,z.useEffect)(()=>{e&&(f(``),m(0),requestAnimationFrame(()=>g.current?.focus()))},[e]),(0,z.useEffect)(()=>{h.current&&(h.current.scrollTop=0),m(0)},[d]),(0,z.useEffect)(()=>{p>=D.length&&m(Math.max(0,D.length-1))},[p,D.length]),(0,z.useLayoutEffect)(()=>{e&&T()},[e,T,D]);let k=x[p]??null,A=b===null?null:x[b],oe=b!==null&&b!==p;return e?(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`button`,{type:`button`,className:`fixed inset-0 z-50 bg-black/40 backdrop-blur-sm`,"aria-label":`Close command palette`,onClick:()=>t(!1)}),(0,R.jsxs)(`div`,{role:`dialog`,"aria-label":`Command Palette`,"data-testid":`command-palette-dialog`,className:`fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-[51] max-w-[640px] w-[calc(100vw-2rem)] sm:w-full p-2 bg-white dark:bg-zinc-900/90 backdrop-blur-xl rounded-xl overflow-hidden border border-border shadow-[var(--cmdk-shadow)] transition-transform duration-100 ease-out outline-none`,onKeyDown:e=>{e.key===`ArrowDown`?(e.preventDefault(),m(e=>Math.min(e+1,D.length-1))):e.key===`ArrowUp`?(e.preventDefault(),m(e=>Math.max(e-1,0))):e.key===`Enter`&&D[p]?(e.preventDefault(),ae(D[p])):e.key===`Escape`&&(e.preventDefault(),t(!1))},children:[(0,R.jsx)(`input`,{ref:g,placeholder:`What do you need?`,value:d,onChange:e=>f(e.target.value),className:`border-none w-full text-[17px] px-4 pt-2 pb-4 outline-none bg-transparent text-foreground border-b border-border mb-0 rounded-none placeholder:text-muted-foreground`,"data-testid":`command-palette-input`}),(0,R.jsxs)(`div`,{ref:h,onMouseEnter:C.onMouseEnter,onMouseMove:C.onMouseMove,onMouseLeave:C.onMouseLeave,className:`relative isolate min-h-[200px] sm:min-h-[330px] max-h-[400px] overflow-auto overscroll-contain transition-[height] duration-100 ease-out px-1`,"data-testid":`command-palette-list`,children:[(0,R.jsx)(en,{children:k&&(0,R.jsx)(Pe.div,{"aria-hidden":!0,className:L(`pointer-events-none absolute bg-active`,y.bg),initial:!1,animate:{top:k.top,left:k.left,width:k.width,height:k.height,opacity:oe?.8:1},exit:{opacity:0,transition:pt.moderate.exit},transition:{...pt.moderate,opacity:{duration:.08}}})}),(0,R.jsx)(en,{children:A&&(0,R.jsx)(Pe.div,{"aria-hidden":!0,className:L(`pointer-events-none absolute bg-hover`,y.bg),initial:{opacity:0,top:k?.top??A.top,left:k?.left??A.left,width:k?.width??A.width,height:k?.height??A.height},animate:{opacity:1,top:A.top,left:A.left,width:A.width,height:A.height},exit:{opacity:0,transition:pt.fast.exit},transition:{...pt.fast,opacity:{duration:.08}}},S.current)}),D.length===0?(0,R.jsx)(`div`,{className:`text-sm flex items-center justify-center h-12 whitespace-pre-wrap text-muted-foreground`,children:`No results found.`}):D.map((e,t)=>(0,R.jsxs)(`button`,{ref:e=>w(t,e),type:`button`,"data-testid":`command-palette-item-${e.id}`,"data-proximity-index":t,onClick:()=>ae(e),className:`[content-visibility:auto] relative z-10 cursor-pointer h-12 text-sm flex items-center gap-3 px-3 text-foreground select-none w-full text-left mt-1 first:mt-0`,children:[O(e.type,e.category,e.name),(0,R.jsx)(`span`,{className:`font-medium truncate flex-1 min-w-0`,children:e.name}),(()=>{let t=e.metadata?.serverId;if(!t||e.category===`Connected Servers`)return null;let n=o.find(e=>e.id===t);return n?(0,R.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0 text-muted-foreground`,children:[(0,R.jsx)(ZI,{server:n,size:`xs`}),(0,R.jsx)(`span`,{className:`text-xs truncate max-w-[9rem]`,children:Xj(n)})]}):null})()]},e.id))]}),(0,R.jsxs)(`div`,{className:`border-t border-border px-4 py-3 pb-1 flex items-center justify-between text-xs text-muted-foreground `,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,R.jsx)(`span`,{className:`inline-flex items-center justify-center w-5 h-5 font-mono font-medium rounded shadow-sm bg-white dark:bg-zinc-800 border border-zinc-200 dark:border-zinc-700 text-foreground leading-none`,children:`t`}),(0,R.jsx)(`span`,{children:`Tools`})]}),(0,R.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,R.jsx)(`span`,{className:`inline-flex items-center justify-center w-5 h-5 font-mono font-medium rounded shadow-sm bg-white dark:bg-zinc-800 border border-zinc-200 dark:border-zinc-700 text-foreground leading-none`,children:`p`}),(0,R.jsx)(`span`,{children:`Prompts`})]}),(0,R.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,R.jsx)(`span`,{className:`inline-flex items-center justify-center w-5 h-5 font-mono font-medium rounded shadow-sm bg-white dark:bg-zinc-800 border border-zinc-200 dark:border-zinc-700 text-foreground leading-none`,children:`r`}),(0,R.jsx)(`span`,{children:`Resources`})]}),(0,R.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,R.jsx)(`span`,{className:`inline-flex items-center justify-center w-5 h-5 font-mono font-medium rounded shadow-sm bg-white dark:bg-zinc-800 border border-zinc-200 dark:border-zinc-700 text-foreground leading-none`,children:`c`}),(0,R.jsx)(`span`,{children:`Chat`})]})]}),(0,R.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,R.jsx)(`span`,{className:`inline-flex items-center justify-center w-5 h-5 font-mono font-medium rounded shadow-sm bg-white dark:bg-zinc-800 border border-zinc-200 dark:border-zinc-700 text-foreground leading-none`,children:`h`}),(0,R.jsx)(`span`,{children:`Home`})]}),(0,R.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,R.jsx)(`span`,{className:`inline-flex items-center justify-center px-2 h-5 font-mono text-[10px] font-medium rounded shadow-sm bg-white dark:bg-zinc-800 border border-zinc-200 dark:border-zinc-700 text-foreground leading-none`,children:`esc`}),(0,R.jsx)(`span`,{children:`Close`})]})]})]})]})]}):null}var CL=`openid profile email offline_access`,wL=`mcp-inspector:manufact-auth`,TL=`manufact:session-changed`,EL={loaded:!0,authorizing:!1,accessToken:null,user:null,mode:null},DL=new Map,OL=new Set,kL=new Map,AL=new Map,jL=null,ML=!1;typeof window<`u`&&window.addEventListener(`message`,e=>{if(e.data?.type!==`manufact:invalidate-oauth-client`)return;for(let e of DL.keys())PL()?.removeItem(BL(e,`client`));let t=jL;!t||ML||(ML=!0,cR(t,{isRetry:!0}).finally(()=>{ML=!1}))});function NL(e){let t=DL.get(e);if(t)return t;let n={...EL,loaded:!1};return DL.set(e,n),n}function PL(){return typeof window>`u`?null:window.localStorage}function FL(e){return new URL(e).origin}function IL(e,t){let n=new URL(e),r=new URL(t),i=new Set([`localhost`,`127.0.0.1`]);return i.has(n.hostname)&&i.has(r.hostname)?n.origin===r.origin:(n.hostname===`manufact.com`||n.hostname.endsWith(`.manufact.com`))&&(r.hostname===`manufact.com`||r.hostname.endsWith(`.manufact.com`))}function LL(e){let t=window.__MANUFACT_LOGIN_URL__;if(t)return new URL(t).origin;let n=new URL(e);return n.hostname===`localhost`||n.hostname===`127.0.0.1`?`${n.protocol}//${n.hostname}:3000`:`${n.protocol}//manufact.com`}function RL(e){return`${LL(e)}/login`}function zL(e){return`${LL(e)}/auth/embedded-sign-out`}function BL(e,t){return`${wL}:${t}:${e}`}function VL(e){return PL()?.getItem(BL(e,`skip-session`))===`1`}function HL(e,t){let n=BL(e,`skip-session`);t?PL()?.setItem(n,`1`):PL()?.removeItem(n)}function UL(e){return`${wL}:state:${e}`}function WL(e){let t=PL()?.getItem(e);if(!t)return null;try{return JSON.parse(t)}catch{return PL()?.removeItem(e),null}}function GL(e,t){PL()?.setItem(e,JSON.stringify(t))}function KL(e,t){DL.set(e,{...DL.get(e)??EL,...t}),OL.forEach(e=>e()),window.dispatchEvent(new CustomEvent(TL))}function qL(e){let t=``;return e.forEach(e=>{t+=String.fromCharCode(e)}),btoa(t).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}function JL(e=32){let t=new Uint8Array(e);return crypto.getRandomValues(t),qL(t)}async function YL(e){let t=await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(e));return qL(new Uint8Array(t))}async function XL(e){let t=await fetch(`${e}/api/auth/.well-known/openid-configuration`);if(!t.ok)throw Error(`Manufact OAuth discovery failed`);return await t.json()}function ZL(){return`${window.location.origin}${Wj()}/auth/callback`}function QL(e){return e===`localhost`||e===`127.0.0.1`}function $L(e){try{let t=new URL(e).hostname,n=typeof window<`u`?new URL(window.location.href).hostname:``;return QL(t)&&QL(n)}catch{return!1}}async function eR(e,t,n){let r=new URL(`${e}/api/auth/oauth2/authorize`);r.searchParams.set(`response_type`,`code`),r.searchParams.set(`client_id`,t),r.searchParams.set(`redirect_uri`,n),r.searchParams.set(`scope`,CL),r.searchParams.set(`code_challenge`,await YL(JL(32))),r.searchParams.set(`code_challenge_method`,`S256`),r.searchParams.set(`state`,`client-probe`),r.searchParams.set(`prompt`,`none`);try{let e=await fetch(r.toString(),{method:`GET`,redirect:`manual`,credentials:`include`}),t=e.headers.get(`location`)??``;return t.includes(`/auth/error`)&&t.includes(`invalid_client`)?!1:e.status>=300&&e.status<400||e.type===`opaqueredirect`?!!t&&!t.includes(`/auth/error`):!0}catch{return!1}}async function tR(e,t){let n=ZL(),r=BL(e,`client`),i=WL(r),a=$L(e);if(!a&&i?.client_id&&i.redirect_uri===n){if(await eR(e,i.client_id,n))return i;PL()?.removeItem(r)}else a&&i?.client_id&&PL()?.removeItem(r);if(!t.registration_endpoint)throw Error(`Manufact OAuth registration is unavailable`);let o=await fetch(t.registration_endpoint,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({client_name:`mcp-use Inspector`,redirect_uris:[n],grant_types:[`authorization_code`,`refresh_token`],response_types:[`code`],token_endpoint_auth_method:`none`,scope:CL})});if(!o.ok)throw Error(`Could not register Inspector with Manufact`);let s=await o.json();if(!s.client_id)throw Error(`Manufact returned no OAuth client ID`);let c={...s,redirect_uri:n};return GL(r,c),c}async function nR(e,t){let n=await fetch(e,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:new URLSearchParams(t)}),r=await n.json().catch(()=>({}));if(!n.ok||!r.access_token)throw Error(r.error_description??`Manufact token exchange failed`);return{access_token:r.access_token,refresh_token:r.refresh_token,token_type:r.token_type,expires_at:Date.now()+(r.expires_in??3600)*1e3}}async function rR(e,t){if(!t.refresh_token)return null;let n=AL.get(e);if(n)return n;let r=(async()=>{try{let n=await XL(e),r=WL(BL(e,`client`));if(!r?.client_id)return null;let i=await nR(n.token_endpoint,{grant_type:`refresh_token`,refresh_token:t.refresh_token,client_id:r.client_id}),a={...i,refresh_token:i.refresh_token??t.refresh_token};return GL(BL(e,`tokens`),a),a}catch{return PL()?.removeItem(BL(e,`tokens`)),null}finally{AL.delete(e)}})();return AL.set(e,r),r}async function iR(e){let t=WL(BL(e,`tokens`));return t?.access_token?t.expires_at>Date.now()+3e4?t:rR(e,t):null}async function aR(e,t){let n=await XL(e);if(!n.userinfo_endpoint)return null;let r=await fetch(n.userinfo_endpoint,{headers:{Authorization:`Bearer ${t}`}});if(!r.ok)return null;let i=await r.json();return i.sub?{id:i.sub,name:i.name,email:i.email,image:i.picture}:null}async function oR(e){try{let t=await fetch(`${e}/api/auth/get-session`,{credentials:`include`});return t.ok?(await t.json())?.user??null:null}catch{return null}}async function sR(e){let t=kL.get(e);if(t)return t;DL.set(e,{...DL.get(e)??EL,loaded:!1});let n=(async()=>{try{let t=IL(typeof window<`u`?window.location.href:e,e),n=VL(e),r=await iR(e),i=r?await aR(e,r.access_token):null;if(i&&r){HL(e,!1),KL(e,{loaded:!0,accessToken:r.access_token,user:i,mode:`oauth`});return}r&&!i&&PL()?.removeItem(BL(e,`tokens`));let a=t&&!n?await oR(e):null;if(a){KL(e,{loaded:!0,accessToken:null,user:a,mode:`session`});return}KL(e,{loaded:!0,accessToken:null,user:null,mode:null})}catch{KL(e,{loaded:!0,accessToken:null,user:null,mode:null})}})().finally(()=>kL.delete(e));return kL.set(e,n),n}async function cR(e,t){let n=FL(e);jL=e,HL(n,!1);let r=window.open(``,`manufact-oauth`,`width=600,height=700,resizable=yes,scrollbars=yes`);if(!r)throw Error(`Allow popups to sign in with Manufact`);if(KL(n,{authorizing:!0}),IL(window.location.href,n)){r.location.href=RL(n);let e=window.setInterval(async()=>{if(r.closed){window.clearInterval(e),KL(n,{authorizing:!1});return}let t=await oR(n);t&&(window.clearInterval(e),r.close(),KL(n,{loaded:!0,authorizing:!1,accessToken:null,user:t,mode:`session`}))},1e3);return}try{let e=await XL(n),t=await tR(n,e),i=JL(64),a=JL(),o=ZL();GL(UL(a),{authOrigin:n,clientId:t.client_id,redirectUri:o,codeVerifier:i,expiresAt:Date.now()+600*1e3});let s=new URL(e.authorization_endpoint);s.searchParams.set(`response_type`,`code`),s.searchParams.set(`client_id`,t.client_id),s.searchParams.set(`redirect_uri`,o),s.searchParams.set(`scope`,CL),s.searchParams.set(`state`,a),s.searchParams.set(`code_challenge`,await YL(i)),s.searchParams.set(`code_challenge_method`,`S256`),s.searchParams.set(`prompt`,`consent`),r.location.href=s.toString();let c=window.setInterval(()=>{r.closed&&(window.clearInterval(c),sR(n).finally(()=>KL(n,{authorizing:!1})))},500)}catch(e){throw r.close(),KL(n,{authorizing:!1}),e}}async function lR(e=new URL(window.location.href)){let t=e.searchParams.get(`state`),n=e.searchParams.get(`code`),r=e.searchParams.get(`error_description`)??e.searchParams.get(`error`);if(r)throw Error(r);if(!t||!n)throw Error(`Missing OAuth code or state`);let i=UL(t),a=WL(i);if(PL()?.removeItem(i),!a||a.expiresAt<Date.now())throw Error(`OAuth state is invalid or expired`);let o=await nR((await XL(a.authOrigin)).token_endpoint,{grant_type:`authorization_code`,code:n,redirect_uri:a.redirectUri,client_id:a.clientId,code_verifier:a.codeVerifier});GL(BL(a.authOrigin,`tokens`),o),HL(a.authOrigin,!1);let s=await aR(a.authOrigin,o.access_token);KL(a.authOrigin,{loaded:!0,authorizing:!1,accessToken:o.access_token,user:s,mode:`oauth`}),window.opener?.postMessage({type:`manufact:oauth-complete`,authOrigin:a.authOrigin},window.location.origin)}function uR(e){let t=FL(e);PL()?.removeItem(BL(t,`tokens`)),KL(t,{loaded:!0,authorizing:!1,accessToken:null,user:null,mode:null})}async function dR(e){let t=WL(BL(e,`tokens`)),n=WL(BL(e,`client`)),r=t?.refresh_token??t?.access_token;if(!n?.client_id||!r)return null;try{let i=(await XL(e)).revocation_endpoint??`${e}/api/auth/oauth2/revoke`;return(await fetch(i,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:new URLSearchParams({client_id:n.client_id,token:r,token_type_hint:t?.refresh_token?`refresh_token`:`access_token`})})).status}catch{return-1}}async function fR(e){let t=LL(e),n=window.open(zL(e),`manufact-sign-out`,`width=420,height=320`);return n?new Promise(r=>{let i=!1,a=e=>{i||(i=!0,window.clearTimeout(o),window.clearInterval(c),window.removeEventListener(`message`,s),r(e))},o=window.setTimeout(()=>{a({attempted:!0,signOutOk:!1,signOutStatus:null})},3e4),s=e=>{e.origin===t&&e.data?.type===`manufact:sign-out-complete`&&a({attempted:!0,signOutOk:!0,signOutStatus:200})},c=window.setInterval(()=>{n.closed&&oR(e).then(e=>{a({attempted:!0,signOutOk:!e,signOutStatus:e?401:200})})},500);window.addEventListener(`message`,s)}):{attempted:!0,signOutOk:!1,signOutStatus:null}}async function pR(e,t){let n=FL(e),r=!!WL(BL(n,`tokens`))?.access_token;t===`oauth`||r?(await dR(n),HL(n,!0)):t===`session`&&(await fR(n),HL(n,!1)),uR(e)}function mR(e){let t=e?FL(e):null,n=(0,z.useSyncExternalStore)((0,z.useCallback)(e=>(OL.add(e),()=>OL.delete(e)),[]),(0,z.useCallback)(()=>t?NL(t):EL,[t]),()=>EL);return(0,z.useEffect)(()=>{if(!t)return;sR(t);let e=e=>{e.origin===window.location.origin&&e.data?.type===`manufact:oauth-complete`&&e.data.authOrigin===t&&sR(t).finally(()=>KL(t,{authorizing:!1}))},n=e=>{e.key!==BL(t,`tokens`)||!e.newValue||sR(t).finally(()=>KL(t,{authorizing:!1}))};return window.addEventListener(`message`,e),window.addEventListener(`storage`,n),()=>{window.removeEventListener(`message`,e),window.removeEventListener(`storage`,n)}},[t]),{...n,authorize:(0,z.useCallback)(async()=>{e&&await cR(e)},[e]),logout:(0,z.useCallback)(async()=>{e&&await pR(e,n.mode)},[e,n.mode])}}var hR=(0,z.lazy)(()=>lS(()=>import(`./ChatTab-BEfFVccY.js`).then(e=>({default:e.ChatTab})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]))),gR=(0,z.lazy)(()=>lS(()=>import(`./ToolsTab-hSGwy5-P.js`).then(e=>({default:e.ToolsTab})),__vite__mapDeps([20,1,2,3,5,6,4,7,8,21,22,23,13,19,18,24,25,26,10,27,28,29,16,17]))),_R=(0,z.lazy)(()=>lS(()=>import(`./PromptsTab-DP25ApgP.js`).then(e=>({default:e.PromptsTab})),__vite__mapDeps([30,1,2,3,5,6,4,7,8,24,26,10,27,28,29,11,12,19]))),vR=(0,z.lazy)(()=>lS(()=>import(`./ResourcesTab-CptaN3NT.js`).then(e=>({default:e.ResourcesTab})),__vite__mapDeps([31,1,2,3,5,7,21,6,4,8,22,23,13,19,18,32,24,25,26,10,27,28,14,17]))),yR=(0,z.lazy)(()=>lS(()=>import(`./SamplingTab-BcdnfiwQ.js`).then(e=>({default:e.SamplingTab})),__vite__mapDeps([33,1,2,3,5,6,4,7,8,26,10,27,22,23,13,14,19]))),bR=(0,z.lazy)(()=>lS(()=>import(`./ElicitationTab-BP4GKiyX.js`).then(e=>({default:e.ElicitationTab})),__vite__mapDeps([34,1,2,3,5,8,26,10,27,22,15,12,19]))),xR=(0,z.lazy)(()=>lS(()=>import(`./NotificationsTab-BiZcGnsE.js`).then(e=>({default:e.NotificationsTab})),__vite__mapDeps([35,1,2,3,32,25,26,5,10,27,28]))),SR=(0,z.lazy)(()=>lS(()=>import(`./ServerMetadataTab-DfM-a-Kp.js`).then(e=>({default:e.ServerMetadataTab})),__vite__mapDeps([36,1,5,2,3,9,7,8,27,10,37]))),CR=(0,z.lazy)(()=>lS(()=>import(`./ConnectionSettingsTab-Bb_6a0Iv.js`).then(e=>({default:e.ConnectionSettingsTab})),__vite__mapDeps([38,1,2,3,5,27,10,37])));function wR({children:e}){return(0,R.jsx)(z.Suspense,{fallback:(0,R.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,R.jsx)(XI,{className:`size-6`})}),children:e})}var TR=`anthropic/claude-sonnet-4.6`;function ER({isLoopback:e,chatApiUrl:t}){return e&&!!t}function DR(e,t,n=!1,r){let i=e.replace(/\/chat\/stream\/?$/,`/llm`);return{provider:`openai-compatible`,model:r??`anthropic/claude-sonnet-4.6`,apiKey:t??`server-managed`,baseUrl:i,...n?{credentials:`include`}:{}}}function OR(e){return e?{Authorization:`Bearer ${e}`}:void 0}var kR=`mcp-inspector:managed-model`;function AR(e){return`${kR}:${e}`}function jR(e){try{return localStorage.getItem(AR(e))}catch{return null}}function MR(e,t,n,r){let i=e?new URL(e).origin:null,[a,o]=(0,z.useState)([]),[s,c]=(0,z.useState)(TR),[l,u]=(0,z.useState)(()=>i?jR(i)??`anthropic/claude-sonnet-4.6`:TR),[d,f]=(0,z.useState)(!1),p=(0,z.useCallback)(e=>{if(u(e),i)try{localStorage.setItem(AR(i),e)}catch{}},[i]);return(0,z.useEffect)(()=>{if(!r||!i)return;let e=!1;return f(!0),(async()=>{try{let r=OR(t),a=await fetch(`${i}/api/v1/models`,{headers:r,credentials:n===`session`?`include`:`same-origin`});if(!a.ok)return;let s=await a.json();if(e)return;let l=s.models??[];o(l);let d=s.defaultModelId??`anthropic/claude-sonnet-4.6`;c(d);let f=new Set(l.map(e=>e.id)),p=jR(i);p&&f.has(p)?u(p):f.has(d)?u(d):l[0]&&u(l[0].id)}finally{e||f(!1)}})(),()=>{e=!0}},[r,i,t,n]),{models:a,selectedModelId:l,setSelectedModelId:p,isLoading:d,selectedModel:a.find(e=>e.id===l)??null,defaultModelId:s}}var NR=[`tools`,`prompts`,`resources`,`chat`,`sampling`,`elicitation`,`notifications`,`server-metadata`,`connection-settings`];function PR(e){return NR.includes(e)?e:`tools`}function FR({selectedServer:e,activeTab:t,toolsSearchRef:n,promptsSearchRef:r,resourcesSearchRef:i,onUpdateConnection:a,children:o}){let{embeddedConfig:s}=nL(),c=PR(t),[l,u]=(0,z.useState)(()=>new Set([c]));(0,z.useEffect)(()=>{let e=PR(t);u(t=>t.has(e)?t:new Set(t).add(e))},[t]);let{accessToken:d,mode:f,user:p}=mR(s.chatApiUrl),m=OR(d),h=f===`session`?`include`:void 0,g=p!=null,_=s.chatApiUrl,v=!!e?.url&&qj(e.url),y=e?ER({isLoopback:v,chatApiUrl:s.chatApiUrl,enableFreeTierUpgrade:s.chatEnableFreeTierUpgrade}):!1,b=MR(_,d,f,!!e&&!!_&&g),x=y?DR(_,d,f===`session`,g?b.selectedModelId:void 0):s.managedLlmConfig??(_&&!v?{provider:`anthropic`,model:`claude-haiku-4-5`,apiKey:`server-managed`}:void 0);if(!e&&s.forceConnected)return s.chatApiUrl?(0,R.jsx)(wR,{children:(0,R.jsx)(hR,{connection:{id:`force-connected`,url:``,displayName:``,name:``,state:`ready`,tools:[],prompts:[],resources:[]},isConnected:!0,prompts:[],serverId:`force-connected`,callPrompt:async()=>({messages:[]}),readResource:async()=>({contents:[]}),useClientSide:!1,chatApiUrl:s.chatApiUrl,extraHeaders:m,credentials:h,managedLlmConfig:s.managedLlmConfig??{provider:`anthropic`,model:`claude-haiku-4-5`,apiKey:`server-managed`},enableFreeTierUpgrade:s.chatEnableFreeTierUpgrade,hideTitle:s.chatHideTitle,hideModelBadge:s.chatHideModelBadge??!0,hideServerUrl:s.chatHideServerUrl??!0,clearButtonLabel:s.chatClearButtonLabel,clearButtonHideIcon:s.chatClearButtonHideIcon,clearButtonHideShortcut:s.chatClearButtonHideShortcut,clearButtonVariant:s.chatClearButtonVariant,chatQuickQuestions:s.chatQuickQuestions,chatFollowups:s.chatFollowups,hideClearButton:s.chatHideClearButton,hideToolSelector:s.chatHideToolSelector,enableKeyboardShortcuts:!1},`chat-force-connected`)}):(0,R.jsx)(R.Fragment,{children:o});if(!e)return(0,R.jsx)(R.Fragment,{children:o});let S=e=>s.visibleTabs?s.visibleTabs.includes(e):!0,C=NR;return(0,R.jsxs)(wR,{children:[S(`tools`)&&l.has(`tools`)&&(0,R.jsx)(`div`,{style:{display:t===`tools`?`block`:`none`},className:`h-full`,children:(0,R.jsx)(gR,{ref:n,tools:e.tools,callTool:e.callTool,readResource:e.readResource,serverId:e.id,isConnected:e.state===`ready`,refreshTools:e.refreshTools},`tools-${e.id}`)}),S(`prompts`)&&l.has(`prompts`)&&(0,R.jsx)(`div`,{style:{display:t===`prompts`?`block`:`none`},className:`h-full`,children:(0,R.jsx)(_R,{ref:r,prompts:e.prompts,callPrompt:(t,n)=>e.getPrompt(t,n?Object.fromEntries(Object.entries(n).map(([e,t])=>[e,typeof t==`string`?t:String(t??``)])):void 0),serverId:e.id,isConnected:e.state===`ready`,refreshPrompts:e.refreshPrompts},`prompts-${e.id}`)}),S(`resources`)&&l.has(`resources`)&&(0,R.jsx)(`div`,{style:{display:t===`resources`?`block`:`none`},className:`h-full`,children:(0,R.jsx)(vR,{ref:i,resources:e.resources,readResource:e.readResource,serverId:e.id,isConnected:e.state===`ready`,mcpServerUrl:e.url||``,refreshResources:e.refreshResources},`resources-${e.id}`)}),S(`chat`)&&l.has(`chat`)&&(0,R.jsx)(`div`,{style:{display:t===`chat`?`block`:`none`},className:`h-full`,children:(0,R.jsx)(hR,{connection:e,isConnected:s.forceConnected||e.state===`ready`,prompts:e.prompts,serverId:e.id,callPrompt:(t,n)=>e.getPrompt(t,n?Object.fromEntries(Object.entries(n).map(([e,t])=>[e,typeof t==`string`?t:String(t??``)])):void 0),readResource:e.readResource,useClientSide:y||!_,chatApiUrl:_,extraHeaders:m,credentials:s.chatCredentials??h,managedLlmConfig:x,managedCloudModel:b,enableFreeTierUpgrade:s.chatEnableFreeTierUpgrade,hideTitle:s.chatHideTitle,hideModelBadge:s.chatHideModelBadge??!1,hideServerUrl:s.chatHideServerUrl??!!_,clearButtonLabel:s.chatClearButtonLabel,clearButtonHideIcon:s.chatClearButtonHideIcon,clearButtonHideShortcut:s.chatClearButtonHideShortcut,clearButtonVariant:s.chatClearButtonVariant,chatQuickQuestions:s.chatQuickQuestions,chatFollowups:s.chatFollowups,hideClearButton:s.chatHideClearButton,hideToolSelector:s.chatHideToolSelector,streamProtocol:s.chatStreamProtocol},`chat-${e.id}`)}),S(`sampling`)&&l.has(`sampling`)&&(0,R.jsx)(`div`,{style:{display:t===`sampling`?`block`:`none`},className:`h-full`,children:(0,R.jsx)(yR,{pendingRequests:e.pendingSamplingRequests,onApprove:e.approveSampling,onReject:e.rejectSampling,serverId:e.id,isConnected:e.state===`ready`,mcpServerUrl:e.url??``},`sampling-${e.id}`)}),S(`elicitation`)&&l.has(`elicitation`)&&(0,R.jsx)(`div`,{style:{display:t===`elicitation`?`block`:`none`},className:`h-full`,children:(0,R.jsx)(bR,{pendingRequests:e.pendingElicitationRequests,onApprove:e.approveElicitation,onReject:e.rejectElicitation,serverId:e.id,isConnected:e.state===`ready`},`elicitation-${e.id}`)}),S(`notifications`)&&l.has(`notifications`)&&(0,R.jsx)(`div`,{style:{display:t===`notifications`?`block`:`none`},className:`h-full`,children:(0,R.jsx)(xR,{notifications:e.notifications,unreadCount:e.unreadNotificationCount,markNotificationRead:e.markNotificationRead,markAllNotificationsRead:e.markAllNotificationsRead,clearNotifications:e.clearNotifications,serverId:e.id,isConnected:e.state===`ready`},`notifications-${e.id}`)}),S(`server-metadata`)&&l.has(`server-metadata`)&&(0,R.jsx)(`div`,{style:{display:t===`server-metadata`?`block`:`none`},className:`h-full`,children:(0,R.jsx)(SR,{connection:e},`server-metadata-${e.id}`)}),S(`connection-settings`)&&l.has(`connection-settings`)&&a&&(0,R.jsx)(`div`,{style:{display:t===`connection-settings`?`block`:`none`},className:`h-full`,children:(0,R.jsx)(CR,{connection:e,onSave:a},`connection-settings-${e.id}`)}),!C.includes(t)&&(0,R.jsx)(R.Fragment,{children:o})]})}var IR=z.createContext(void 0);function LR(){let e=z.use(IR);if(!e)throw Error(`useTabs must be used within a TabsProvider`);return e}var RR=z.createContext(void 0);function zR(){return z.use(RR)}function BR({ref:e,children:t,defaultValue:n,value:r,onValueChange:i,className:a,collapsed:o,onCollapsedChange:s,...c}){let[l,u]=z.useState(n||``),d=r!==void 0,f=o!==void 0,[p,m]=z.useState(!1),h=z.useCallback(e=>{d||u(e),i?.(e)},[d,i]);return(0,R.jsx)(IR,{value:{activeValue:d?r:l,handleValueChange:h,collapsed:f?o:p,handleCollapsedChange:z.useCallback(e=>{f||m(e),s?.(e)},[f,s])},children:(0,R.jsx)(`div`,{ref:e,className:L(`flex flex-col gap-2`,a),...c,children:t})})}BR.displayName=`Tabs`;function VR({ref:e,children:t,className:n,variant:r=`default`,collapsible:i=!1,...a}){let{activeValue:o,collapsed:s,handleCollapsedChange:c}=LR(),[l,u]=z.useState({width:0,left:0}),d=z.useRef(null),f=z.useRef(null),p=z.useRef(null),m=z.useCallback(()=>{let e=d.current;if(!e)return;let t=e.querySelector(`div:first-child`);if(!t)return;let n=t.querySelector(`button[data-tab-value="${o}"]`);if(n&&o){let e=t.getBoundingClientRect(),r=n.getBoundingClientRect();u({width:r.width,left:r.left-e.left})}else u({width:0,left:0})},[o]),h=z.useCallback(()=>{p.current&&clearTimeout(p.current),p.current=setTimeout(m,16)},[m]);z.useEffect(()=>{let e=setTimeout(m,10);return()=>clearTimeout(e)},[m,s]),z.useEffect(()=>{let e=d.current;if(!e)return;f.current=new ResizeObserver(()=>{h()}),f.current.observe(e);let t=e.querySelector(`div:first-child`);return t&&t.querySelectorAll(`button[data-tab-value]`).forEach(e=>{f.current&&f.current.observe(e)}),()=>{f.current&&f.current.disconnect(),p.current&&clearTimeout(p.current)}},[h]),z.useEffect(()=>{let e=()=>{h()};return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[h]);let g=z.useRef(null);return z.useEffect(()=>{g.current&&(g.current.style.width=`${l.width}px`,g.current.style.left=`${l.left}px`)},[l]),(0,R.jsx)(RR,{value:{variant:r,collapsed:s,handleCollapsedChange:c},children:(0,R.jsx)(`div`,{ref:d,className:L(`relative flex items-center bg-none gap-1`,r==="default"&&`p-1 rounded-full border border-zinc-300 dark:border-zinc-600`,r===`underline`&&`border-b border-zinc-200 dark:border-zinc-700`,n),...a,children:(0,R.jsxs)(`div`,{role:`tablist`,className:`flex-1 flex items-center relative`,children:[t,(0,R.jsx)(`span`,{ref:g,className:L(`absolute transition-all duration-[250ms] ease-in-out z-0`,r==="default"&&`bg-white dark:bg-zinc-700 rounded-full h-[calc(100%)] top-0 border border-zinc-300 dark:border-zinc-600`,r===`underline`&&`bottom-0 h-0.5 bg-black dark:bg-white`)})]})})})}VR.displayName=`TabsList`;var HR=({children:e,title:t,collapsed:n})=>!t||!n?e:(0,R.jsx)(Ve,{children:(0,R.jsxs)(et,{children:[(0,R.jsx)(we,{render:(0,R.jsx)(`span`,{className:`contents`,children:e}),nativeButton:!1}),(0,R.jsx)(lt,{children:t})]})}),UR=z.forwardRef(({children:e,value:t,className:n,disabled:r,icon:i,title:a,showDot:o=!1,alwaysExpanded:s=!1,iconOnly:c=!1,badge:l,...u},d)=>{let{activeValue:f,handleValueChange:p,collapsed:m}=LR(),h=zR()?.variant||`default`,g=f===t,_=!c&&(!m||g||s),v=c||m&&!_;return(0,R.jsx)(HR,{title:a,collapsed:m&&!_,children:(0,R.jsxs)(`button`,{ref:d,disabled:r,onClick:()=>p(t),"data-tab-value":t,"data-tab-active":g,role:`tab`,"aria-selected":g?`true`:`false`,title:m&&!_&&a?a:void 0,className:L(`relative z-10 inline-flex items-center justify-center whitespace-nowrap text-sm font-medium ring-offset-background transition-all duration-[250ms] ease-in-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 cursor-pointer`,c?`size-9 shrink-0 flex-none rounded-full p-0`:`flex-1`,h==="default"&&!c&&`py-2.5`,h==="default"&&!c&&`rounded-md px-4`,h===`underline`&&`px-6 py-3 border-b-2 border-transparent`,g&&`text-foreground`,!g&&`text-muted-foreground hover:text-foreground`,n),...u,children:[i&&(0,R.jsxs)(`span`,{className:L(`relative inline-flex shrink-0 items-center justify-center`,c?`size-5`:_&&`mr-2`),children:[(0,R.jsx)(i,{className:L(`h-4 w-4 shrink-0 transition-all duration-[250ms] ease-in-out`,!_&&!c&&`mr-0!`)}),l&&v?l:null]}),o&&(0,R.jsx)(`span`,{className:`absolute top-1.5 right-1.5 w-2 h-2 bg-orange-500 dark:bg-orange-400 border-2 border-white dark:border-zinc-900 rounded-full transition-opacity duration-300 z-10 animate-status-pulse-orange`}),(0,R.jsx)(`span`,{className:L(`min-w-0 transition-all duration-[250ms] ease-in-out overflow-hidden`,_?`w-auto opacity-100`:`w-0 opacity-0`),children:e}),l&&!v?l:null]})})});UR.displayName=`TabsTrigger`;function WR(e){return mR(e)}var GR=z.createContext(void 0);function KR(){let e=z.useContext(GR);if(e===void 0)throw Error(Vt(13));return e}var qR={imageLoadingStatus:()=>null},JR=z.forwardRef(function(e,t){let{className:n,render:r,style:i,...a}=e,[o,s]=z.useState(`idle`),c={imageLoadingStatus:o},l=z.useMemo(()=>({imageLoadingStatus:o,setImageLoadingStatus:s}),[o,s]),u=Ft(`span`,e,{state:c,ref:t,props:a,stateAttributesMapping:qR});return(0,R.jsx)(GR.Provider,{value:l,children:u})});function YR(e,{referrerPolicy:t,crossOrigin:n,sizes:r,srcSet:i}){let[a,o]=z.useState(`idle`);return Rt(()=>{if(!e&&!i)return o(`error`),It;let a=!0,s=new window.Image,c=e=>()=>{a&&o(e)};return o(`loading`),s.onload=c(`loaded`),s.onerror=c(`error`),t&&(s.referrerPolicy=t),s.crossOrigin=n??null,r&&(s.sizes=r),i&&(s.srcset=i),e&&(s.src=e),s.complete&&o(s.naturalWidth>0?`loaded`:`error`),()=>{a=!1}},[e,i,r,n,t]),a}var XR={...qR,...it},ZR=z.forwardRef(function(e,t){let{className:n,render:r,onLoadingStatusChange:i,style:a,...o}=e,{setImageLoadingStatus:s}=KR(),c=YR(o.src,o),l=c===`loaded`,{mounted:u,transitionStatus:d,setMounted:f}=Je(l),p=z.useRef(null),m=Pt(e=>{i?.(e),s(e)});Rt(()=>{c!==`idle`&&m(c)},[c,m]),Rt(()=>()=>s(`idle`),[s]),g({open:l,ref:p,onComplete(){l||f(!1)}});let h=Ft(`img`,e,{state:{imageLoadingStatus:c,transitionStatus:d},ref:[t,p],props:o,stateAttributesMapping:XR,enabled:u});return u?h:null}),QR=z.forwardRef(function(e,t){let{className:n,render:r,delay:i,style:a,...o}=e,{imageLoadingStatus:s}=KR(),[c,l]=z.useState(i===void 0),u=fe();return z.useEffect(()=>(i===void 0?l(!0):u.start(i,()=>l(!0)),u.clear),[u,i]),Ft(`span`,e,{state:{imageLoadingStatus:s},ref:t,props:o,stateAttributesMapping:qR,enabled:s!==`loaded`&&(i===void 0||c)})});function $R({className:e,size:t=`default`,...n}){return(0,R.jsx)(JR,{"data-slot":`avatar`,"data-size":t,className:L(`group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten`,e),...n})}function ez({className:e,...t}){return(0,R.jsx)(ZR,{"data-slot":`avatar-image`,className:L(`aspect-square size-full rounded-full object-cover`,e),...t})}function tz({className:e,...t}){return(0,R.jsx)(QR,{"data-slot":`avatar-fallback`,className:L(`flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs`,e),...t})}function nz(e,t){return e?.[0]?e[0].toUpperCase():t?.[0]?t[0].toUpperCase():`U`}function rz({chatApiUrl:e,dashboardUrl:t=`https://manufact.com/cloud`,fallback:n=null,onUserResolved:r,compact:i=!1}){let{user:a,loaded:o,authorizing:s,authorize:c,logout:l,mode:u}=WR(e),d=(0,z.useRef)(void 0);if((0,z.useEffect)(()=>{if(!o)return;let e=a?.id??null;d.current!==e&&(d.current=e,r?.(a))},[o,a,r]),!o)return null;if(!a)return(0,R.jsxs)(R.Fragment,{children:[n,(0,R.jsx)(Gt,{variant:`ghost`,size:`sm`,className:L(`shrink-0 rounded-full text-[13px]`,i?`px-2.5 text-xs`:`px-4`),disabled:s,onClick:()=>{c().catch(e=>IF.error(e instanceof Error?e.message:`Authorization failed`))},children:s?`Authorizing…`:`Sign in`})]});let f=nz(a.name,a.email),p=a.name??a.email??`User`;return(0,R.jsxs)(Ya,{children:[(0,R.jsx)(Xa,{render:(0,R.jsx)(Gt,{variant:`ghost`,className:`relative h-8 w-8 shrink-0 rounded-full p-0 mr-2`,"aria-label":`User menu`,children:(0,R.jsxs)($R,{className:`h-8 w-8 border border-zinc-300 dark:border-zinc-600`,children:[(0,R.jsx)(ez,{src:a.image??``,alt:p}),(0,R.jsx)(tz,{className:`text-sm`,children:f})]})}),nativeButton:!0}),(0,R.jsxs)(Za,{className:`w-56`,align:`end`,forceMount:!0,children:[(0,R.jsx)(Qa,{className:`font-normal`,children:(0,R.jsxs)(`div`,{className:`flex flex-col space-y-1`,children:[(0,R.jsx)(`p`,{className:`text-sm font-medium leading-none truncate`,children:p}),a.email&&a.email!==p&&(0,R.jsx)(`p`,{className:`text-xs leading-none text-muted-foreground truncate`,children:a.email})]})}),(0,R.jsx)(no,{}),(0,R.jsx)($a,{render:(0,R.jsxs)(`a`,{href:t,target:`_blank`,rel:`noopener noreferrer`,children:[(0,R.jsx)(li,{className:`mr-2 h-4 w-4`}),`Go to dashboard`]})}),(0,R.jsx)(no,{}),(0,R.jsxs)($a,{onClick:()=>{l().catch(()=>IF.error(`Sign out failed`))},children:[(0,R.jsx)(hi,{className:`mr-2 h-4 w-4`}),u===`session`?`Sign out of Manufact`:`Disconnect Inspector`]})]})]})}function iz({count:e,isActive:t,size:n=`md`,overlay:r=!1}){return e<=0?null:(0,R.jsx)(`span`,{className:L(t?`dark:bg-black`:`dark:bg-zinc-700`,`shrink-0 bg-zinc-200 text-zinc-700 dark:text-zinc-300 rounded-full font-medium`,r&&`absolute -bottom-1 -right-1.5 z-10 flex h-3.5 min-w-3.5 items-center justify-center border border-background px-0.5 text-[9px] leading-none`,!r&&`ml-1`,!r&&n===`sm`&&`text-[10px] px-1.5 py-0.5`,!r&&n===`md`&&`text-xs px-2 py-0.5`),children:e})}var az=`flex h-10 items-center gap-2`;function oz({serverConfig:e,additionalItems:t=[],showClients:n={cursor:!0,vsCode:!0,vsCodeInsiders:!0,claudeDesktop:!0,claudeCode:!0,geminiCli:!0,codexCli:!0},className:r=``,onSuccess:i,onError:a,trigger:o}){let[s,c]=(0,z.useState)(!1),[l,u]=(0,z.useState)(null),[d,f]=(0,z.useState)(!1),{url:p,name:m,headers:h}=e,g=e=>{try{bT(new Fo({client:e})).catch(()=>{})}catch{}},_=()=>{g(`cursor`);try{let e=lL(p,m,h);window.location.href=e,i?.(`Cursor`)}catch(e){console.error(`Failed to generate Cursor deep link:`,e),a?.(e)}},v=()=>{g(`vscode`);try{let e=uL(p,m,h);window.location.href=e,i?.(`VS Code`)}catch(e){console.error(`Failed to generate VS Code deep link:`,e),a?.(e)}},y=()=>{g(`vscode-insiders`);try{let e=dL(p,m,h);window.location.href=e,i?.(`VS Code Insiders`)}catch(e){console.error(`Failed to generate VS Code Insiders deep link:`,e),a?.(e)}},b=()=>{g(`claude-desktop`);try{pL(p,m,h),i?.(`Claude Desktop`)}catch(e){console.error(`Failed to download .mcpb file:`,e),a?.(e)}},x=()=>{g(`claude-code`),u(`claude-code`),c(!0)},S=()=>{g(`gemini-cli`),u(`gemini-cli`),c(!0)},C=()=>{g(`codex-cli`),u(`codex-cli`),c(!0)},w=async e=>{try{await zj(e),f(!0),setTimeout(()=>f(!1),2e3)}catch(e){console.error(`Failed to copy:`,e),a?.(e)}},T=()=>{if(l===`claude-code`){let{command:e,envVars:t}=mL(p,m,h),n=_L(t);return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsxs)(VI,{children:[(0,R.jsx)(GI,{children:`Add to Claude Code`}),(0,R.jsx)(KI,{children:`Execute the following command in your shell to add this server to Claude Code.`})]}),(0,R.jsxs)(HI,{className:`space-y-4`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`h5`,{className:`font-semibold text-sm mb-2`,children:`Instructions`}),(0,R.jsxs)(`ol`,{className:`space-y-2 text-xs text-muted-foreground`,children:[(0,R.jsxs)(`li`,{className:`flex gap-2`,children:[(0,R.jsx)(`span`,{className:`font-semibold text-foreground`,children:`1.`}),(0,R.jsx)(`span`,{children:`Ensure the Claude Code executable is available in your path`})]}),(0,R.jsxs)(`li`,{className:`flex gap-2`,children:[(0,R.jsx)(`span`,{className:`font-semibold text-foreground`,children:`2.`}),(0,R.jsx)(`span`,{children:`Execute the following snippet in your shell:`})]})]})]}),(0,R.jsxs)(`div`,{className:`relative`,children:[(0,R.jsx)(`div`,{className:`absolute top-2 right-2 z-10`,children:(0,R.jsx)(Gt,{variant:`ghost`,size:`sm`,className:`h-7 px-2 bg-background hover:bg-accent border border-border`,onClick:()=>w(e),children:d?(0,R.jsx)(Fr,{className:`size-3.5 text-green-600`}):(0,R.jsx)(Wr,{className:`size-3.5`})})}),(0,R.jsx)(`pre`,{className:`bg-muted p-3 pr-14 rounded-md text-xs overflow-x-auto`,children:(0,R.jsx)(`code`,{children:e})})]}),n&&(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`h5`,{className:`font-semibold text-sm mb-2`,children:`Environment Variables`}),(0,R.jsx)(`p`,{className:`text-xs text-muted-foreground mb-2`,children:`After installation, set these environment variables in your shell:`}),(0,R.jsx)(`pre`,{className:`bg-muted p-3 rounded-md text-xs overflow-x-auto`,children:(0,R.jsx)(`code`,{children:n})})]}),(0,R.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`The MCP configuration supports environment variable expansion using `,(0,R.jsx)(`code`,{className:`text-foreground`,children:"${VAR}"}),` `,`syntax.`]})]})]})}if(l===`gemini-cli`){let{command:e,envVars:t}=hL(p,m,h),n=_L(t);return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsxs)(VI,{children:[(0,R.jsx)(GI,{children:`Add to Gemini CLI`}),(0,R.jsx)(KI,{children:`Execute the following command in your shell to add this server to Gemini CLI.`})]}),(0,R.jsxs)(HI,{className:`space-y-4`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`h5`,{className:`font-semibold text-sm mb-2`,children:`Instructions`}),(0,R.jsxs)(`ol`,{className:`space-y-2 text-xs text-muted-foreground`,children:[(0,R.jsxs)(`li`,{className:`flex gap-2`,children:[(0,R.jsx)(`span`,{className:`font-semibold text-foreground`,children:`1.`}),(0,R.jsx)(`span`,{children:`Ensure the Gemini CLI executable is available in your path`})]}),n&&(0,R.jsxs)(`li`,{className:`flex gap-2`,children:[(0,R.jsx)(`span`,{className:`font-semibold text-foreground`,children:`2.`}),(0,R.jsx)(`span`,{children:`Set these environment variables in your shell before running the command:`})]}),(0,R.jsxs)(`li`,{className:`flex gap-2`,children:[(0,R.jsx)(`span`,{className:`font-semibold text-foreground`,children:n?`3.`:`2.`}),(0,R.jsx)(`span`,{children:`Execute the following snippet in your shell:`})]})]})]}),n&&(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`h5`,{className:`font-semibold text-sm mb-2`,children:`Environment Variables`}),(0,R.jsx)(`pre`,{className:`bg-muted p-3 rounded-md text-xs overflow-x-auto`,children:(0,R.jsx)(`code`,{children:n})})]}),(0,R.jsxs)(`div`,{className:`relative`,children:[(0,R.jsx)(`div`,{className:`absolute top-2 right-2 z-10`,children:(0,R.jsx)(Gt,{variant:`ghost`,size:`sm`,className:`h-7 px-2 bg-background hover:bg-accent border border-border`,onClick:()=>w(e),children:d?(0,R.jsx)(Fr,{className:`size-3.5 text-green-600`}):(0,R.jsx)(Wr,{className:`size-3.5`})})}),(0,R.jsx)(`pre`,{className:`bg-muted p-3 pr-14 rounded-md text-xs overflow-x-auto`,children:(0,R.jsx)(`code`,{children:e})})]}),(0,R.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Restart Gemini CLI to load the new configuration.`})]})]})}if(l===`codex-cli`){let{config:e,envVars:t}=gL(p,m,h);return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsxs)(VI,{children:[(0,R.jsx)(GI,{children:`Add to Codex CLI`}),(0,R.jsxs)(KI,{children:[`Add this configuration to your`,` `,(0,R.jsx)(`code`,{className:`text-foreground`,children:`~/.codex/config.toml`}),` `,`file.`]})]}),(0,R.jsxs)(HI,{className:`space-y-4`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`h5`,{className:`font-semibold text-sm mb-2`,children:`Instructions`}),(0,R.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Add this configuration to your`,` `,(0,R.jsx)(`code`,{className:`text-foreground`,children:`~/.codex/config.toml`}),`:`]})]}),(0,R.jsxs)(`div`,{className:`relative`,children:[(0,R.jsx)(`div`,{className:`absolute top-2 right-2 z-10`,children:(0,R.jsx)(Gt,{variant:`ghost`,size:`sm`,className:`h-7 px-2 bg-background hover:bg-accent border border-border`,onClick:()=>w(e),children:d?(0,R.jsx)(Fr,{className:`size-3.5 text-green-600`}):(0,R.jsx)(Wr,{className:`size-3.5`})})}),(0,R.jsx)(`pre`,{className:`bg-muted p-3 pr-14 rounded-md text-xs overflow-x-auto`,children:(0,R.jsx)(`code`,{children:e})})]}),t.length>0&&(0,R.jsx)(`div`,{children:(0,R.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`(optional) If you would rather use variables from your system's environment, replace the`,` `,(0,R.jsx)(`code`,{className:`text-foreground`,children:`http_headers`}),` key with the `,(0,R.jsx)(`code`,{className:`text-foreground`,children:`env_http_headers`}),` `,`key as shown in the commented section above.`]})}),(0,R.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Restart Codex CLI to load the new configuration.`})]})]})}return null},E=(0,R.jsxs)(Gt,{variant:`ghost`,className:`bg-zinc-200 dark:bg-zinc-800 hover:bg-zinc-300 dark:hover:bg-zinc-700 rounded-full transition-colors px-3 flex items-center justify-center ${r}`,children:[(0,R.jsxs)(`span`,{className:`xl:hidden hidden sm:flex items-center gap-1`,children:[(0,R.jsx)(Ai,{className:`size-3`}),`Client`]}),(0,R.jsxs)(`span`,{className:`hidden xl:flex items-center gap-1`,children:[`Add to Client`,(0,R.jsx)(Ir,{className:`size-3`})]})]}),ee=o?typeof o==`function`?o({isOpen:!1,onClick:()=>{}}):o:E;return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsxs)(Ya,{children:[(0,R.jsx)(Xa,{render:(0,z.isValidElement)(ee)?ee:E,nativeButton:!0}),(0,R.jsxs)(Za,{align:`end`,className:`w-auto min-w-[300px]`,children:[t.map(e=>(0,R.jsxs)($a,{onClick:async()=>{await e.onClick()},className:az,children:[e.icon,(0,R.jsx)(`span`,{className:`min-w-0 max-w-full whitespace-nowrap`,children:e.label})]},e.id)),t.length>0&&(0,R.jsx)(no,{}),n.cursor&&(0,R.jsxs)($a,{onClick:_,className:az,children:[(0,R.jsx)(`img`,{src:`https://cdn.simpleicons.org/cursor`,alt:`Cursor`,className:`h-4 w-4`}),(0,R.jsx)(`span`,{className:`min-w-0 max-w-full whitespace-nowrap`,children:`Cursor`})]}),n.claudeCode&&(0,R.jsxs)($a,{onClick:x,className:az,children:[(0,R.jsx)(`img`,{src:`https://cdn.simpleicons.org/claude`,alt:`Claude`,className:`h-4 w-4`}),(0,R.jsx)(`span`,{className:`min-w-0 max-w-full whitespace-nowrap`,children:`Claude Code`})]}),n.claudeDesktop&&(0,R.jsxs)($a,{onClick:b,className:az,children:[(0,R.jsx)(`img`,{src:`https://cdn.simpleicons.org/claude`,alt:`Claude`,className:`h-4 w-4`}),(0,R.jsx)(`span`,{className:`min-w-0 max-w-full whitespace-nowrap`,children:`Claude Desktop`})]}),n.vsCode&&(0,R.jsxs)($a,{onClick:v,className:az,children:[(0,R.jsx)(yL,{className:`h-4 w-4 text-blue-500`}),(0,R.jsx)(`span`,{className:`min-w-0 max-w-full whitespace-nowrap`,children:`VS Code`})]}),n.vsCodeInsiders&&(0,R.jsxs)($a,{onClick:y,className:az,children:[(0,R.jsx)(yL,{className:`h-4 w-4 text-teal-400`}),(0,R.jsx)(`span`,{className:`min-w-0 max-w-full whitespace-nowrap`,children:`VS Code Insiders`})]}),n.geminiCli&&(0,R.jsxs)($a,{onClick:S,className:az,children:[(0,R.jsx)(`img`,{src:`https://cdn.simpleicons.org/googlegemini`,alt:`Gemini`,className:`h-4 w-4`}),(0,R.jsx)(`span`,{className:`min-w-0 max-w-full whitespace-nowrap`,children:`Gemini CLI`})]}),n.codexCli&&(0,R.jsxs)($a,{onClick:C,className:az,children:[(0,R.jsx)(`img`,{src:`https://inspector-cdn.mcp-use.com/providers/openai.png`,alt:`Codex`,className:`h-4 w-4`}),(0,R.jsx)(`span`,{className:`min-w-0 max-w-full whitespace-nowrap`,children:`Codex CLI`})]})]})]}),(0,R.jsx)(RI,{open:s,onOpenChange:c,children:(0,R.jsx)(BI,{scrollable:!0,className:`max-w-3xl max-h-[80vh]`,children:T()})})]})}function sz({className:e,state:t=`collapsed`,to:n=`/`,showLabel:r=t===`expanded`,labelParts:i=`full`,pinSymbolInIconColumn:a=!1,size:o}){let[s,c]=(0,z.useState)(!1),l=1.5,u=.2/l,d=.8999999999999999/l,f=r&&(t===`expanded`||i===`inspector`),p=o??(a?20:t===`expanded`?40:20),m=(0,R.jsx)(`div`,{className:`relative`,children:(0,R.jsxs)(Pe.svg,{viewBox:`0 0 500 500`,initial:`rest`,animate:s?`hover`:`rest`,className:`text-foreground`,style:{width:p,height:p},children:[(0,R.jsxs)(Pe.g,{variants:{rest:{opacity:1},hover:{opacity:[1,0,0,1],transition:{duration:l,times:[0,u,d,1],ease:`easeInOut`}}},fill:`currentColor`,fillRule:`nonzero`,stroke:`currentColor`,strokeWidth:4,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,R.jsx)(`path`,{d:`M105.933 0C164.437 0.000116002 211.865 47.607 211.865 106.333C211.865 131.829 210.493 158.403 221.068 181.602L228.975 198.947C243.584 230.997 269.265 256.7 301.303 271.336L316.155 278.121C340.142 289.079 367.694 287.335 394.066 287.335C452.571 287.335 499.999 334.942 499.999 393.668C499.999 452.394 452.571 500.001 394.066 500.001C335.562 500.001 288.134 452.394 288.134 393.668C288.134 368.974 289.24 343.275 278.992 320.807L270.586 302.38C255.948 270.29 230.214 244.565 198.118 229.939L180.164 221.758C157.282 211.331 131.078 212.666 105.933 212.666C47.4278 212.666 4.86252e-05 165.059 0 106.333C0 47.607 47.4278 0 105.933 0Z`}),(0,R.jsx)(`circle`,{cx:`100.426`,cy:`399.575`,r:`100.426`}),(0,R.jsx)(`path`,{d:`M500 100.426C500 155.889 455.037 200.851 399.574 200.851C344.11 200.851 299.148 155.889 299.148 100.426C299.148 44.962 344.11 0 399.574 0C455.037 0 500 44.962 500 100.426Z`})]}),(0,R.jsxs)(`g`,{fill:`none`,stroke:`currentColor`,strokeWidth:4,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,R.jsx)(cz,{d:`M105.933 0C164.437 0.000116002 211.865 47.607 211.865 106.333C211.865 131.829 210.493 158.403 221.068 181.602L228.975 198.947C243.584 230.997 269.265 256.7 301.303 271.336L316.155 278.121C340.142 289.079 367.694 287.335 394.066 287.335C452.571 287.335 499.999 334.942 499.999 393.668C499.999 452.394 452.571 500.001 394.066 500.001C335.562 500.001 288.134 452.394 288.134 393.668C288.134 368.974 289.24 343.275 278.992 320.807L270.586 302.38C255.948 270.29 230.214 244.565 198.118 229.939L180.164 221.758C157.282 211.331 131.078 212.666 105.933 212.666C47.4278 212.666 4.86252e-05 165.059 0 106.333C0 47.607 47.4278 0 105.933 0Z`,times:{T0:0,T1:u,T2:d,T3:1},total:l}),(0,R.jsx)(lz,{cx:100.426,cy:399.575,r:100.426,times:{T0:0,T1:u,T2:d,T3:1},total:l}),(0,R.jsx)(cz,{d:`M500 100.426C500 155.889 455.037 200.851 399.574 200.851C344.11 200.851 299.148 155.889 299.148 100.426C299.148 44.962 344.11 0 399.574 0C455.037 0 500 44.962 500 100.426Z`,times:{T0:0,T1:u,T2:d,T3:1},total:l})]})]})}),h=r?(0,R.jsx)(`span`,{className:L(`font-ubuntu flex items-center gap-2 whitespace-nowrap`,a?L(`pl-(--sidebar-nav-text-pl-absolute)`,f?`relative opacity-100 blur-0`:`pointer-events-none absolute left-0 top-1/2 w-0 -translate-y-1/2 overflow-hidden opacity-0 blur-[3px]`):i===`inspector`?`mr-0`:`mr-3`),children:i===`full`?(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`span`,{className:`text-xl font-bold leading-none text-foreground [text-box:trim-both_cap_alphabetic]`,children:`mcp-use`}),(0,R.jsx)(`span`,{className:`text-lg font-sans font-light leading-none tracking-wide text-muted-foreground [text-box:trim-both_cap_alphabetic]`,children:`Inspector`})]}):(0,R.jsx)(`span`,{className:`text-base font-medium leading-none text-foreground [text-box:trim-both_cap_alphabetic]`,children:`Inspector`})}):null,g=a?(0,R.jsxs)(`div`,{className:L(`relative flex shrink-0 items-center`,f?`min-w-(--sidebar-width-icon)`:`w-(--sidebar-width-icon)`),children:[(0,R.jsx)(`div`,{className:`pointer-events-none absolute inset-y-0 left-0 flex w-(--sidebar-width-icon) items-center justify-center`,children:(0,R.jsx)(`div`,{className:`pointer-events-auto`,children:m})}),h]}):i===`inspector`?(0,R.jsxs)(`span`,{className:`flex items-center gap-2.5`,children:[m,h]}):(0,R.jsxs)(R.Fragment,{children:[m,h]});return(0,R.jsx)(rF,{to:n,className:L(`flex items-center transition-opacity`,!a&&i!==`inspector`&&`-my-3`,e),onMouseEnter:()=>c(!0),onMouseLeave:()=>c(!1),children:g})}function cz({d:e,times:t,total:n}){let{T0:r,T1:i,T2:a,T3:o}=t;return(0,R.jsx)(Pe.path,{d:e,variants:{rest:{pathLength:0,opacity:0},hover:{pathLength:[0,0,1,1],opacity:[0,0,1,1],transition:{duration:n,times:[r,i,a,o],ease:`easeInOut`}}}})}function lz({cx:e,cy:t,r:n,times:r,total:i}){let{T0:a,T1:o,T2:s,T3:c}=r;return(0,R.jsx)(Pe.circle,{cx:e,cy:t,r:n,variants:{rest:{pathLength:0,opacity:0},hover:{pathLength:[0,0,1,1],opacity:[0,0,1,1],transition:{duration:i,times:[a,o,s,c],ease:`easeInOut`}}}})}var uz=(0,z.createContext)(void 0);function dz(){let e=(0,z.use)(uz);if(e===void 0)throw Error(`useTheme must be used within a ThemeProvider`);return e}function fz({children:e,defaultTheme:t=`system`,storageKey:n=`theme`,forcedTheme:r}){let[i,a]=(0,z.useState)(r||t),[o,s]=(0,z.useState)(!1),c=()=>typeof window>`u`?`light`:window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`,l=i===`system`?c():i,u=e=>{let t=document.documentElement,i=e===`system`?c():e;t.classList.remove(`light`,`dark`),t.classList.add(i),r||localStorage.setItem(n,e)};return(0,z.useEffect)(()=>{s(!0);let e=localStorage.getItem(n),i=r||e||t;a(i),u(i)},[t,n,r]),(0,z.useEffect)(()=>{if(i!==`system`)return;let e=window.matchMedia(`(prefers-color-scheme: dark)`),t=()=>{u(`system`)};return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[i]),(0,z.useEffect)(()=>{o&&u(i)},[i,o]),(0,R.jsx)(uz,{value:{theme:i,setTheme:e=>{if(r){console.warn(`[ThemeProvider] Theme is forced via URL parameter, ignoring setTheme call`);return}a(e)},resolvedTheme:l},children:e})}function pz({ref:e,shimmerColor:t,shimmerSize:n=`0.05em`,shimmerDuration:r=`3s`,borderRadius:i=`100px`,background:a,className:o,children:s,...c}){let{theme:l}=dz();return(0,R.jsxs)(`button`,{style:{"--spread":`90deg`,"--shimmer-color":t||(l===`dark`?`#000000`:`#ffffff`),"--radius":i,"--speed":r,"--cut":n,"--bg":a||(l===`dark`?`rgba(255, 255, 255, 1)`:`rgba(0, 0, 0, 1)`)},className:L(`group relative z-0 flex cursor-pointer items-center justify-center overflow-hidden [border-radius:var(--radius)] border px-6 py-3 whitespace-nowrap [background:var(--bg)]`,`transform-gpu transition-transform duration-300 ease-in-out active:translate-y-px`,`dark:text-white text-black dark:border-white/10 border-black/10`,o),ref:e,...c,children:[(0,R.jsx)(`div`,{className:L(`-z-30 blur-[2px]`,`@container-[size] absolute inset-0 overflow-visible`),children:(0,R.jsx)(`div`,{className:`animate-shimmer-slide absolute inset-0 aspect-[1] h-[100cqh] rounded-none mask-none`,children:(0,R.jsx)(`div`,{className:`animate-spin-around absolute -inset-full w-auto [translate:0_0] rotate-0 [background:conic-gradient(from_calc(270deg-(var(--spread)*0.5)),transparent_0,var(--shimmer-color)_var(--spread),transparent_var(--spread))]`})})}),s,(0,R.jsx)(`div`,{className:L(`absolute inset-0 size-full`,`rounded-2xl px-4 py-1.5 text-sm font-medium`,`transform-gpu transition-all duration-300 ease-in-out`,`dark:shadow-[inset_0_-8px_10px_#0000001f] dark:group-hover:shadow-[inset_0_-6px_10px_#0000003f] dark:group-active:shadow-[inset_0_-10px_10px_#0000003f] shadow-[inset_0_-8px_10px_#ffffff1f] group-hover:shadow-[inset_0_-6px_10px_#ffffff3f] group-active:shadow-[inset_0_-10px_10px_#ffffff3f]`)}),(0,R.jsx)(`div`,{className:L(`absolute [inset:var(--cut)] -z-20 [border-radius:var(--radius)] bg-black dark:bg-white`)})]})}pz.displayName=`ShimmerButton`;function mz(e){switch(e){case`ready`:return`bg-emerald-600 animate-status-pulse`;case`failed`:return`bg-rose-600 animate-status-pulse-red`;default:return`bg-yellow-500 animate-status-pulse-yellow`}}function hz(e){switch(e){case`ready`:return`Connected`;case`failed`:return`Failed`;default:return e}}function gz({status:e,className:t}){return(0,R.jsxs)(et,{children:[(0,R.jsx)(we,{render:(0,R.jsx)(`div`,{className:L(`w-2 h-2 rounded-full shrink-0`,mz(e),t)}),nativeButton:!1}),(0,R.jsx)(lt,{children:(0,R.jsx)(`p`,{children:hz(e)})})]})}var _z=`h-6 px-2 text-xs bg-yellow-500/20 border-0 dark:bg-yellow-400/10 text-yellow-800 dark:text-yellow-500 shrink-0`;function vz(e){try{sessionStorage.setItem(QF,JSON.stringify({url:e.url,name:e.name||`Auto-connected Server`,transportType:e.transportType||`http`,connectionMode:`auto`}))}catch{}}function yz({server:e,className:t}){let{state:n,authUrl:r,authenticate:i}=e;return n!==`pending_auth`&&n!==`authenticating`?null:n===`authenticating`?(0,R.jsxs)(Gt,{size:`sm`,variant:`outline`,disabled:!0,className:L(_z,t),children:[(0,R.jsx)(fi,{className:`h-3 w-3 animate-spin mr-1`}),`Authenticating`]}):i?(0,R.jsx)(Gt,{"data-testid":`server-header-authenticate`,size:`sm`,variant:`outline`,className:L(_z,t),onClick:t=>{t.stopPropagation(),vz(e),i()},children:`Authenticate`}):r?(0,R.jsx)(Gt,{size:`sm`,variant:`outline`,className:L(_z,t),render:(0,R.jsx)(`a`,{href:r,"data-testid":`server-header-authenticate`,onClick:t=>{t.stopPropagation(),vz(e)}}),nativeButton:!1,children:`Authenticate`}):null}function bz({connections:e,selectedServer:t,onServerSelect:n,mobileMode:r=!1,variant:i=`default`,compactHeader:a=!1}){let o=LN(),s=t=>{e.some(e=>e.id===t)&&n(t)},c=(0,R.jsxs)(Za,{className:`w-[calc(100vw-2rem)] sm:w-[300px]`,align:`start`,children:[(0,R.jsx)(Qa,{className:`cursor-pointer hover:bg-zinc-100 dark:hover:bg-zinc-800`,onClick:()=>o(`/`),children:`MCP Servers`}),(0,R.jsx)(no,{}),e.length===0?(0,R.jsx)(`div`,{className:`px-2 py-4 text-sm text-muted-foreground dark:text-zinc-400 text-center`,children:`No servers connected. Go to the dashboard to add one.`}):e.map(e=>(0,R.jsxs)($a,{onClick:()=>s(e.id),className:`flex items-center gap-3`,children:[(0,R.jsx)(ZI,{server:e,size:`sm`}),(0,R.jsxs)(`div`,{className:`flex items-center gap-2 flex-1`,children:[(0,R.jsx)(`div`,{className:`font-medium`,children:Xj(e)}),(0,R.jsx)(gz,{status:e.state})]})]},e.id)),(0,R.jsx)(no,{}),(0,R.jsx)($a,{onClick:()=>o(`/`),children:(0,R.jsx)(`span`,{className:`text-blue-600 dark:text-blue-400`,children:`+ Add new server`})})]});return r?(0,R.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,R.jsx)(`div`,{className:`relative`,children:(0,R.jsxs)(Ya,{children:[(0,R.jsx)(Xa,{render:(0,R.jsxs)(Gt,{variant:`ghost`,className:`h-11 px-2 bg-black dark:bg-white text-white dark:text-black border-black dark:border-white hover:bg-gray-800 dark:hover:bg-zinc-100 hover:border-gray-800 dark:hover:border-zinc-200 flex items-center gap-1.5`,children:[t?(0,R.jsx)(ZI,{server:t,size:`md`}):(0,R.jsx)(Fi,{className:`h-5 w-5`}),(0,R.jsx)(Ir,{className:`h-4 w-4`})]}),nativeButton:!0}),c]})})}):i===`header`?(0,R.jsx)(`div`,{className:`flex min-w-0 items-center gap-2`,children:(0,R.jsxs)(Ya,{children:[(0,R.jsx)(Xa,{render:(0,R.jsxs)(`button`,{type:`button`,className:`inline-flex max-w-full min-w-0 items-center gap-1.5 border-0 bg-transparent p-0 cursor-pointer text-foreground transition-opacity hover:opacity-80`,children:[t&&(0,R.jsx)(ZI,{server:t,size:`sm`,className:`!size-5 shrink-0`}),(0,R.jsx)(`span`,{className:`truncate text-sm`,children:t?Xj(t):`Select server`}),t&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(gz,{status:t.state}),!a&&(0,R.jsx)(yz,{server:t})]}),(0,R.jsx)(Ir,{className:`size-3.5 shrink-0 text-muted-foreground`})]}),nativeButton:!0}),c]})}):(0,R.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,R.jsx)(`div`,{className:`relative`,children:(0,R.jsxs)(Ya,{children:[(0,R.jsx)(Xa,{render:(0,R.jsxs)(pz,{className:L(`min-w-0 sm:min-w-[200px] p-0 px-1 text-sm h-11 justify-start text-white dark:text-black border-black dark:border-white hover:bg-gray-800 dark:hover:bg-zinc-100 hover:border-gray-800 dark:hover:border-zinc-200`,!t&&`pl-4`),children:[t&&(0,R.jsx)(ZI,{server:t,size:`md`,className:`mr-2`}),(0,R.jsxs)(`div`,{className:`flex items-center gap-2 flex-1`,children:[(0,R.jsx)(`span`,{className:`truncate lg:max-w-[120px] xl:max-w-none`,children:t?Xj(t):`Select server to inspect`}),t&&(0,R.jsx)(`div`,{className:`flex items-center gap-2`,children:t.error&&t.state!==`ready`?(0,R.jsxs)(et,{children:[(0,R.jsx)(we,{render:(0,R.jsx)(`button`,{onClick:e=>{e.stopPropagation()},className:`w-2 h-2 rounded-full bg-rose-500 animate-status-pulse-red hover:bg-rose-600 transition-colors`,title:`Click to copy error message`,"aria-label":`Copy error message to clipboard`}),nativeButton:!0}),(0,R.jsx)(lt,{children:(0,R.jsx)(`p`,{className:`max-w-xs`,children:t.error})})]}):(0,R.jsx)(`div`,{className:`w-2 h-2 rounded-full ${t.state===`ready`?`bg-emerald-600 animate-status-pulse`:t.state===`failed`?`bg-rose-600 animate-status-pulse-red`:`bg-yellow-500 animate-status-pulse-yellow`}`})})]})]}),nativeButton:!0}),c]})})})}function xz(e){if(!e)return null;try{let t=new URL(e);if(t.protocol===`https:`)return t.origin}catch{}return null}function Sz(e,t){return e===`tools`?t.tools.length:e===`prompts`?t.prompts.length:e===`resources`?t.resources.length:e===`sampling`?t.pendingSamplingRequests?.length||0:e===`elicitation`?t.pendingElicitationRequests?.length||0:e===`notifications`?t.unreadNotificationCount:0}function Cz(e,t,n){return n&&t>0&&[`sampling`,`elicitation`,`notifications`].includes(e)}var wz=[{id:`server-metadata`,label:`Server Metadata`,icon:si},{id:`separator`},{id:`chat`,label:`Chat`,icon:vi,alwaysExpanded:!0},{id:`separator`},{id:`tools`,label:`Tools`,icon:Yi},{id:`prompts`,label:`Prompts`,icon:yi},{id:`resources`,label:`Resources`,icon:$r},{id:`sampling`,label:`Sampling`,icon:ti},{id:`elicitation`,label:`Elicitation`,icon:zi},{id:`notifications`,label:`Notifications`,icon:Mr},{id:`separator`},{id:`connection-settings`,label:`Connection Settings`,icon:Ii}],Tz=z.createContext(void 0);function Ez(e){let t=z.useContext(Tz);if(t===void 0&&!e)throw Error(Vt(47));return t}function Dz(){return{...ft(),disabled:!1,modal:!1,focusManagerModal:!1,instantType:void 0,openMethod:null,openChangeReason:null,titleElementId:void 0,descriptionElementId:void 0,stickIfOpen:!0,nested:!1,openOnHover:!1,closeDelay:0,hasViewport:!1}}var Oz={...De,disabled:St(e=>e.disabled),instantType:St(e=>e.instantType),openMethod:St(e=>e.openMethod),openChangeReason:St(e=>e.openChangeReason),modal:St(e=>e.modal),focusManagerModal:St(e=>e.focusManagerModal),stickIfOpen:St(e=>e.stickIfOpen),titleElementId:St(e=>e.titleElementId),descriptionElementId:St(e=>e.descriptionElementId),openOnHover:St(e=>e.openOnHover),closeDelay:St(e=>e.closeDelay),hasViewport:St(e=>e.hasViewport)},kz=class e extends Tt{constructor(e,t,n=!1){let r={...Dz(),...e},i=new at;r.open&&e?.mounted===void 0&&(r.mounted=!0),r.floatingRootContext=We(i,t,n),super(r,{popupRef:z.createRef(),backdropRef:z.createRef(),internalBackdropRef:z.createRef(),onOpenChange:void 0,onOpenChangeComplete:void 0,triggerFocusTargetRef:z.createRef(),beforeContentFocusGuardRef:z.createRef(),stickIfOpenTimeout:new xt,triggerElements:i},Oz)}setOpen=(e,t)=>{let n=t.reason===o,r=t.reason===`trigger-press`&&t.event.detail===0,i=!e&&(t.reason===`escape-key`||t.reason==null),a=je(t),s=this.select(`activeTriggerId`);if(!e&&t.reason===`close-press`&&t.trigger==null&&s!=null&&(t.trigger=this.context.triggerElements.getById(s)??this.select(`activeTriggerElement`)??void 0),this.context.onOpenChange?.(e,t),t.isCanceled)return;this.state.floatingRootContext.dispatchOpenChange(e,t);let c=()=>{let n={open:e,openChangeReason:t.reason};_t(n,e,t.trigger,a()),this.update(n)};n?(this.set(`stickIfOpen`,!0),this.context.stickIfOpenTimeout.start(500,()=>{this.set(`stickIfOpen`,!1)}),br.flushSync(c)):c(),r||i?this.set(`instantType`,r?`click`:`dismiss`):t.reason===`focus-out`?this.set(`instantType`,`focus`):this.set(`instantType`,void 0)};static useStore(t,n){let{store:r,internalStore:i}=Le(t,(t,r)=>new e(n,t,r));return z.useEffect(()=>i?.disposeEffect(),[i]),r}disposeEffect=()=>this.context.stickIfOpenTimeout.disposeEffect()};function Az({props:e}){let{children:t,open:n,defaultOpen:r=!1,onOpenChange:i,onOpenChangeComplete:a,modal:o=!1,handle:s,triggerId:c,defaultTriggerId:l=null}=e,u=kz.useStore(s?.store,{modal:o,open:r,openProp:n,activeTriggerId:l,triggerIdProp:c});Fe(u,n,r,l),u.useControlledProp(`openProp`,n),u.useControlledProp(`triggerIdProp`,c);let d=u.useState(`open`),f=u.useState(`mounted`),p=u.useState(`payload`),m=Ke()!=null;u.useContextCallback(`onOpenChange`,i),u.useContextCallback(`onOpenChangeComplete`,a),Be(u,d),Me(u);let{forceUnmount:h}=ot(d,u,()=>{u.update({stickIfOpen:!0,openChangeReason:null})});u.useSyncedValues({modal:o,nested:m}),z.useEffect(()=>{d||u.context.stickIfOpenTimeout.clear()},[u,d]);let g=z.useCallback(()=>{u.setOpen(!1,ne(_e))},[u]);z.useImperativeHandle(e.actionsRef,()=>({unmount:h,close:g}),[h,g]);let _=d||f,v=z.useMemo(()=>({store:u}),[u]);return(0,R.jsxs)(Tz.Provider,{value:v,children:[_&&(0,R.jsx)(Mz,{store:u,modal:o}),typeof t==`function`?t({payload:p}):t]})}function jz(e){return Ez(!0)?(0,R.jsx)(Az,{props:e}):(0,R.jsx)(Ye,{children:(0,R.jsx)(Az,{props:e})})}function Mz({store:e,modal:t}){let n=m(e.useState(`floatingRootContext`),{outsidePressEvent:{mouse:t===`trap-focus`?`sloppy`:`intentional`,touch:`sloppy`}});return $e(e,{activeTriggerProps:n.reference??Wt,inactiveTriggerProps:n.trigger??Wt,popupProps:z.useMemo(()=>zt(mt,n.floating),[n.floating])}),null}var Nz=z.forwardRef(function(e,t){let{render:n,className:r,style:i,disabled:o=!1,nativeButton:s=!0,handle:c,payload:l,openOnHover:u=!1,delay:d=300,closeDelay:f=0,id:p,...m}=e,h=Ez(!0),g=c?.store??h?.store;if(!g)throw Error(Vt(74));let _=D(p),v=g.useState(`isTriggerActive`,_),y=g.useState(`floatingRootContext`),b=g.useState(`isOpenedByTrigger`,_),S=g.useState(`triggerPopupId`,_),C=z.useRef(null),{registerTrigger:w,isMountedByThisTrigger:T}=Ce(_,C,g,{payload:l,disabled:o,openOnHover:u,closeDelay:f}),E=g.useState(`openChangeReason`),ee=g.useState(`stickIfOpen`),te=g.useState(`openMethod`),ne=g.useState(`focusManagerModal`),re=a(y,{enabled:!o&&y!=null&&u&&(te!==`touch`||E!==`trigger-press`),mouseOnly:!0,move:!1,handleClose:ce(),restMs:d,delay:{close:f},triggerElementRef:C,isActiveTrigger:v,isClosing:()=>g.select(`transitionStatus`)===`ending`}),ie=Sn(y,{enabled:y!=null,stickIfOpen:ee}),ae=dn(()=>g.select(`open`),e=>{g.set(`openMethod`,e)}),O=g.useState(`triggerProps`,T),{getButtonProps:k,buttonRef:A}=Lt({disabled:o,native:s}),oe={open(e){return e&&E===`trigger-press`?Ue.open(e):Ee.open(e)}},{preFocusGuardRef:se,handlePreFocusGuardFocus:j,handleFocusTargetFocus:M}=xr(g,C),N=Ft(`button`,e,{state:{disabled:o,open:b},ref:[A,t,w,C],props:[ie.reference,re,O,ae,{[x]:``,id:_,"aria-haspopup":`dialog`,"aria-expanded":b,"aria-controls":S},m,k],stateAttributesMapping:oe});return T&&!ne?(0,R.jsxs)(z.Fragment,{children:[(0,R.jsx)(ut,{ref:se,onFocus:j}),(0,R.jsx)(z.Fragment,{children:N},_),(0,R.jsx)(ut,{ref:g.context.triggerFocusTargetRef,onFocus:M})]}):(0,R.jsx)(z.Fragment,{children:N},_)}),Pz=z.createContext(void 0);function Fz(){let e=z.useContext(Pz);if(e===void 0)throw Error(Vt(45));return e}var Iz=z.forwardRef(function(e,t){let{keepMounted:n=!1,...r}=e,{store:i}=Ez();return i.useState(`mounted`)||n?(0,R.jsx)(Pz.Provider,{value:n,children:(0,R.jsx)(se,{ref:t,...r})}):null}),Lz=z.createContext(void 0);function Rz(){let e=z.useContext(Lz);if(!e)throw Error(Vt(46));return e}var zz=z.forwardRef(function(e,t){let{render:n,className:r,style:i,anchor:a,positionMethod:o=`absolute`,side:s=`bottom`,align:l=`center`,sideOffset:u=0,alignOffset:d=0,collisionBoundary:f=`clipping-ancestors`,collisionPadding:m=5,arrowPadding:h=5,sticky:g=!1,disableAnchorTracking:_=!1,collisionAvoidance:v=N,...y}=e,{store:b}=Ez(),x=Fz(),C=c(),w=b.useState(`floatingRootContext`),T=b.useState(`mounted`),E=b.useState(`open`),ee=b.useState(`openChangeReason`),te=b.useState(`activeTriggerElement`),ne=b.useState(`modal`),re=b.useState(`openMethod`),ie=b.useState(`positionerElement`),D=b.useState(`instantType`),ae=b.useState(`transitionStatus`),O=b.useState(`hasViewport`),A=z.useRef(null),oe=p(ie,!1,!1),se=S({anchor:a,floatingRootContext:w,positionMethod:o,mounted:T,side:s,sideOffset:u,align:l,alignOffset:d,arrowPadding:h,collisionBoundary:f,collisionPadding:m,sticky:g,disableAnchorTracking:_,keepMounted:x,nodeId:C,collisionAvoidance:v,adaptiveOrigin:O?ye:void 0}),ce=w.useState(`domReferenceElement`);Rt(()=>{let e=ce,t=A.current;if(e&&(A.current=e),t&&e&&e!==t){b.set(`instantType`,void 0);let e=new AbortController;return oe(()=>{b.set(`instantType`,`trigger-change`)},e.signal),()=>{e.abort()}}},[ce,oe,b]),an(E&&ne===!0&&ee!==`trigger-hover`,re===`touch`,ie,te);let j=z.useCallback(e=>{b.set(`positionerElement`,e)},[b]),M=st(e,{open:E,side:se.side,align:se.align,anchorHidden:se.anchorHidden,instant:D},{styles:se.positionerStyles,transitionStatus:ae,props:y,refs:[t,j],hidden:!T,inert:!E});return(0,R.jsxs)(Lz.Provider,{value:se,children:[T&&ne===!0&&ee!==`trigger-hover`&&(0,R.jsx)(wn,{ref:b.context.internalBackdropRef,inert:sn(!E),cutout:te}),(0,R.jsx)(k,{id:C,children:M})]})}),Bz=z.createContext(void 0);function Vz(){let[e,t]=z.useState(0),n=Pt(()=>(t(e=>e+1),()=>{t(e=>Math.max(0,e-1))}));return{context:z.useMemo(()=>({register:n}),[n]),hasClosePart:e>0}}function Hz(e){let{value:t,children:n}=e;return(0,R.jsx)(Bz.Provider,{value:t,children:n})}var Uz={...dt,...it},Wz=z.forwardRef(function(e,t){let{render:n,className:r,style:i,initialFocus:a,finalFocus:o,...s}=e,{store:c}=Ez(),l=Rz(),u=Cn(!0)!=null,{context:d,hasClosePart:f}=Vz(),p=c.useState(`open`),m=c.useState(`openMethod`),h=c.useState(`instantType`),_=c.useState(`transitionStatus`),v=c.useState(`popupProps`),y=c.useState(`titleElementId`),b=c.useState(`descriptionElementId`),x=c.useState(`modal`),S=c.useState(`mounted`),C=c.useState(`openChangeReason`),w=c.useState(`activeTriggerElement`),T=c.useState(`floatingRootContext`),E=T.useState(`floatingId`),ee=c.useState(`disabled`),te=c.useState(`openOnHover`),ne=c.useState(`closeDelay`),re=s.id??E;g({open:p,ref:c.context.popupRef,onComplete(){p&&c.context.onOpenChangeComplete?.(!0)}}),Ne(T,{enabled:te&&!ee,closeDelay:ne});let ie=a===void 0?Xe(c.context.popupRef):a,D=x!==!1&&f;c.useSyncedValue(`focusManagerModal`,D);let ae=z.useCallback(e=>{c.set(`popupElement`,e)},[c]),O=Ft(`div`,e,{state:{open:p,side:l.side,align:l.align,instant:h,transitionStatus:_},ref:[t,c.context.popupRef,ae],props:[v,{id:re,role:`dialog`,...mt,"aria-labelledby":y,"aria-describedby":b,onKeyDown(e){u&&Qt.has(e.key)&&e.stopPropagation()}},xe(_),s],stateAttributesMapping:Uz});return(0,R.jsx)(rn,{context:T,openInteractionType:m,modal:D,disabled:!S||C===`trigger-hover`,initialFocus:ie,returnFocus:o,restoreFocus:`popup`,previousFocusableElement:Bt(w)?w:void 0,nextFocusableElement:c.context.triggerFocusTargetRef,beforeContentFocusGuardRef:c.context.beforeContentFocusGuardRef,children:(0,R.jsx)(Hz,{value:d,children:O})})});function Gz({...e}){return(0,R.jsx)(jz,{"data-slot":`popover`,...e})}function Kz(e){return(0,R.jsx)(Nz,{"data-slot":`popover-trigger`,...e})}function qz({className:e,align:t=`center`,alignOffset:n=0,side:r=`bottom`,sideOffset:i=4,...a}){return(0,R.jsx)(Iz,{children:(0,R.jsx)(zz,{align:t,alignOffset:n,side:r,sideOffset:i,className:`isolate z-50`,children:(0,R.jsx)(Wz,{"data-slot":`popover-content`,className:L(`z-50 flex w-72 origin-(--transform-origin) flex-col gap-4 rounded-md bg-popover p-4 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95`,e),...a})})})}var Jz={success:`border-emerald-700/20 bg-emerald-700/10 text-emerald-700 dark:border-emerald-400/30 dark:bg-emerald-400/10 dark:text-emerald-400`,failed:`border-red-500/20 bg-red-500/10 text-red-500 dark:border-red-400/30 dark:bg-red-400/10 dark:text-red-400`,warning:`border-amber-700/20 bg-amber-700/10 text-amber-700 dark:border-amber-400/30 dark:bg-amber-400/10 dark:text-amber-400`,loading:`border-purple-500/20 bg-purple-500/10 text-purple-500 dark:border-purple-400/30 dark:bg-purple-400/10 dark:text-purple-400 animate-spin`},Yz=`size-4 shrink-0 rounded-full border p-0.5`;function Xz({state:e,className:t}){let n=L(Yz,Jz[e],t);switch(e){case`success`:return(0,R.jsx)(Fr,{className:n,"aria-hidden":!0});case`failed`:return(0,R.jsx)(zr,{className:n,"aria-hidden":!0});case`warning`:return(0,R.jsx)(Ki,{className:n,"aria-hidden":!0});case`loading`:return(0,R.jsx)(fi,{className:n,"aria-hidden":!0});default:return null}}function Zz(){return`text-emerald-700 dark:text-emerald-400`}function Qz({onStop:e,showCopiedBanner:t=!1}){return(0,R.jsxs)(R.Fragment,{children:[t&&(0,R.jsxs)(`div`,{className:L(`flex items-center gap-2 text-sm -mt-1`,Zz()),children:[(0,R.jsx)(Xz,{state:`success`}),(0,R.jsx)(`span`,{children:`URL copied to clipboard`})]}),(0,R.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,R.jsx)(`h4`,{className:`font-semibold text-sm`,children:`Tunnel URL`}),(0,R.jsxs)(`a`,{href:`https://manufact.com/docs/tunneling`,target:`_blank`,rel:`noopener noreferrer`,className:`flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground transition-colors`,children:[`Docs`,(0,R.jsx)(Ar,{className:`size-3`})]})]}),(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`h5`,{className:`font-semibold text-sm mb-2`,children:`Use in ChatGPT & Claude`}),(0,R.jsxs)(`ol`,{className:`space-y-2 text-xs text-muted-foreground`,children:[(0,R.jsxs)(`li`,{className:`flex gap-2`,children:[(0,R.jsx)(`span`,{className:`font-semibold text-foreground`,children:`1.`}),(0,R.jsxs)(`span`,{children:[`Enable`,` `,(0,R.jsx)(`a`,{href:`https://chatgpt.com/plugins#settings/Security`,target:`_blank`,rel:`noopener noreferrer`,className:`font-medium text-foreground underline underline-offset-2 hover:text-purple-600 dark:hover:text-purple-400`,children:`dev mode`}),` `,`from settings`]})]}),(0,R.jsxs)(`li`,{className:`flex gap-2`,children:[(0,R.jsx)(`span`,{className:`font-semibold text-foreground`,children:`2.`}),(0,R.jsxs)(`span`,{children:[(0,R.jsx)(`a`,{href:`https://chatgpt.com/plugins#settings/Connectors?create-connector=true&redirectAfter=%2Fplugins`,target:`_blank`,rel:`noopener noreferrer`,className:`font-medium text-foreground underline underline-offset-2 hover:text-purple-600 dark:hover:text-purple-400`,children:`Add a connector`}),` `,`in App & Connectors`]})]}),(0,R.jsxs)(`li`,{className:`flex gap-2`,children:[(0,R.jsx)(`span`,{className:`font-semibold text-foreground`,children:`3.`}),(0,R.jsx)(`span`,{children:`Use the tunnel URL in the input`})]})]})]}),(0,R.jsxs)(`button`,{type:`button`,onClick:()=>void e(),className:`flex items-center gap-1.5 text-xs text-red-600 dark:text-red-400 hover:text-red-700 dark:hover:text-red-300 transition-colors cursor-pointer`,children:[(0,R.jsx)(Vi,{className:`size-3 fill-current`}),`Stop Tunnel`]})]})}function $z(e){try{let t=new URL(e),n=t.pathname+t.search;return t.host+(n&&n!==`/`?n:``)}catch{return e}}function eB({copied:e,onCopy:t,className:n}){return(0,R.jsx)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),t()},"aria-label":e?`URL copied`:`Copy URL`,className:L(`shrink-0 cursor-pointer p-0.5 rounded-sm text-muted-foreground hover:text-foreground transition-opacity opacity-0 group-hover:opacity-100`,n),children:e?(0,R.jsx)(Xz,{state:`success`,className:`size-3.5`}):(0,R.jsx)(Wr,{className:`size-3.5`})})}function tB({url:e,className:t,tunnelPopover:n}){let[r,i]=(0,z.useState)(!1),[a,o]=(0,z.useState)(!1);if(!e)return null;let s=$z(e),c=n?.mcpUrl??e,l=!!n,u=async()=>{try{await zj(c),i(!0),setTimeout(()=>i(!1),2e3)}catch{IF.error(`Failed to copy URL`)}};(0,z.useEffect)(()=>{if(!n?.autoCopyOnOpen){o(!1);return}o(!0),i(!0);let e=setTimeout(()=>i(!1),2e3);return()=>clearTimeout(e)},[n?.autoCopyOnOpen]);let d=(0,R.jsxs)(R.Fragment,{children:[l?(0,R.jsx)(Lr,{className:`size-3.5 shrink-0`}):(0,R.jsx)(ei,{className:`size-3.5 shrink-0`}),(0,R.jsx)(`span`,{className:`truncate max-w-[min(24rem,30vw)]`,children:s})]}),f=L(`flex items-center gap-1 min-w-0 truncate text-left text-sm cursor-pointer`,l?`text-purple-600 dark:text-purple-400`:`text-blue-500`);return(0,R.jsxs)(`div`,{className:L(`group flex items-center gap-1.5 min-w-0`,t),children:[l?(0,R.jsxs)(Gz,{open:n.open,onOpenChange:n.onOpenChange,children:[(0,R.jsx)(Kz,{render:(0,R.jsx)(`button`,{type:`button`,className:L(f,`hover:opacity-80`),children:d}),nativeButton:!0}),(0,R.jsx)(qz,{className:`w-[calc(100vw-2rem)] sm:w-96`,align:`start`,sideOffset:4,children:(0,R.jsx)(Qz,{showCopiedBanner:a,onStop:async()=>{n.onOpenChange(!1),await n.onStop()}})})]}):(0,R.jsx)(`span`,{className:f,children:d}),(0,R.jsx)(eB,{copied:r,onCopy:()=>void u()})]})}function nB({devFromCli:e,isTunnelStarting:t,waitTicks:n,onStart:r}){if(t)return(0,R.jsxs)(`button`,{disabled:!0,className:`flex items-center gap-1 h-6 px-2 bg-violet-50 dark:bg-violet-950/40 border border-violet-200 dark:border-violet-800 rounded-full opacity-75 cursor-wait shrink-0`,children:[(0,R.jsx)(fi,{className:`size-3 text-violet-500 dark:text-violet-400 animate-spin`}),(0,R.jsxs)(`span`,{className:`text-xs font-medium text-violet-600 dark:text-violet-300 hidden lg:inline`,children:[`Start Tunnel `,(0,R.jsxs)(`span`,{className:`tabular-nums`,children:[n,`s`]})]})]});let i=e===!0,a=e===null;return(0,R.jsxs)(`button`,{type:`button`,onClick:()=>void r(),disabled:!i||a,title:e===!1?"Run `mcp-use dev` from your project to enable tunneling.":a?`Checking dev server…`:void 0,className:L(`flex items-center gap-1 h-6 px-2 border rounded-full transition-colors shrink-0`,i&&!a?`bg-violet-50 dark:bg-violet-950/40 border-violet-200 dark:border-violet-800 hover:bg-violet-100 dark:hover:bg-violet-900/50 cursor-pointer`:`bg-violet-50/60 dark:bg-violet-950/20 border-violet-200 dark:border-violet-800 cursor-not-allowed opacity-70`),children:[a?(0,R.jsx)(fi,{className:`size-3 text-violet-500 dark:text-violet-400 animate-spin`}):(0,R.jsx)(Lr,{className:`size-3 text-violet-500 dark:text-violet-400`}),(0,R.jsx)(`span`,{className:`text-xs font-medium text-violet-600 dark:text-violet-300 hidden lg:inline`,children:`Start Tunnel`})]})}function rB(){return typeof window>`u`?!1:window.__MCP_DEV_CLI__===!0}async function iB(){try{let e=await fetch(Gj(`dev/info`));return e.ok?await e.json():null}catch{return null}}function aB({tunnelUrl:e,setTunnelUrl:t,isTunnelStarting:n,setIsTunnelStarting:r,onTunnelStarted:i}){let[a,o]=(0,z.useState)(null),[s,c]=(0,z.useState)(null),[l,u]=(0,z.useState)(0),d=(0,z.useCallback)((e,n)=>{let r=n?.syncTunnel??!1;if(o(!!e.fromCli),e.mcpUrl&&c(e.mcpUrl),!r)return;if(e.tunnelUrl){t(new URL(e.tunnelUrl).origin);return}let i=xz(e.mcpUrl??null);if(i){t(i);return}t(null)},[t]);return(0,z.useEffect)(()=>{if(!n){u(20);return}u(20);let e=setInterval(()=>u(e=>e>0?e-1:0),1e3);return()=>clearInterval(e)},[n]),(0,z.useEffect)(()=>{let e=!1;if(!rB()){o(!1);return}return(async()=>{let t=await iB();e||(t?d(t,{syncTunnel:!0}):o(!1))})(),()=>{e=!0}},[d]),{devFromCli:a,mcpUrl:s,waitTicks:l,handleStartTunnel:(0,z.useCallback)(async()=>{if(a===!1){IF.error("Start Tunnel requires `mcp-use dev` from your project directory.");return}r(!0);let e=!1;try{let t=await fetch(Gj(`dev/start-tunnel`),{method:`POST`});if(!t.ok){let e=await t.json().catch(()=>({}));IF.error(e.error||`Failed to start tunnel`);return}let n=await iB();if(n?.tunnelUrl||n?.mcpUrl){d(n,{syncTunnel:!0});let e=n.mcpUrl??(n.tunnelUrl?`${n.tunnelUrl.replace(/\/+$/,``)}/mcp`:null);e&&Rj(e),i?.()}e=!0}catch{IF.error(`Failed to start tunnel`)}finally{r(!1)}try{bT(new jo({action:`start`,success:e})).catch(()=>{})}catch{}},[d,a,i,r]),handleStopTunnel:(0,z.useCallback)(async()=>{r(!0);let n=!1;try{let e=await fetch(Gj(`dev/stop-tunnel`),{method:`POST`});if(!e.ok){let t=await e.json().catch(()=>({}));IF.error(t.error||`Failed to stop tunnel`);return}t(null),c(null),IF.success(`Tunnel stopped`),n=!0}catch{IF.error(`Failed to stop tunnel`)}finally{r(!1)}try{bT(new jo({action:`stop`,success:n,tunnelUrl:e})).catch(()=>{})}catch{}},[r,t,e])}}function oB(e){let t=window.matchMedia(`(min-width: 1024px)`);return t.addEventListener(`change`,e),()=>t.removeEventListener(`change`,e)}function sB(){return window.matchMedia(`(min-width: 1024px)`).matches}function cB(){return!0}function lB(){return(0,z.useSyncExternalStore)(oB,sB,cB)}function uB(e){let[t,n]=(0,z.useState)(!1),[r,i]=(0,z.useState)(!1),a=lB(),o=(0,z.useCallback)(()=>{n(!0),i(!0)},[]);return(0,z.useEffect)(()=>{e||(n(!1),i(!1))},[e]),(0,z.useEffect)(()=>{if(!e)return;let t=new URLSearchParams(window.location.search);if(!t.has(`openTunnelPopover`))return;n(!0),i(!0),t.delete(`openTunnelPopover`);let r=t.toString();window.history.replaceState({},``,`${window.location.pathname}${r?`?${r}`:``}`)},[e]),{open:t,onOpenChange:(0,z.useCallback)(e=>{n(e),e||i(!1)},[]),isLgUp:a,autoCopyOnOpen:r,openWithAutoCopy:o}}function dB({connections:e,selectedServer:t,activeTab:n,onServerSelect:r,onTabChange:i,embedded:a=!1,sidebarCollapsed:o=!1}){let{tunnelUrl:s,isTunnelStarting:c,setTunnelUrl:l,setIsTunnelStarting:u,embeddedConfig:d}=nL(),[f,p]=(0,z.useState)(!1),[m]=(0,z.useState)(!0),h=uB(s),g=aB({tunnelUrl:s,setTunnelUrl:l,isTunnelStarting:c,setIsTunnelStarting:u,onTunnelStarted:h.openWithAutoCopy});if(d.singleTab)return null;let _=d.visibleTabs?wz.filter(e=>e.id===`separator`||d.visibleTabs.includes(e.id)):wz,v=!!t,y=!!t&&(qj(t.url??``)||Jj(t.url??``)||!!s),b=t?s?`${s.replace(/\/+$/,``)}${Uj()}`:t.url??``:``,x=g.mcpUrl??(s?`${s.replace(/\/+$/,``)}${Uj()}`:null),S=(e,n)=>{if(!t||!b)return null;let r=e===`desktop`?h.isLgUp:!h.isLgUp;return(0,R.jsxs)(`div`,{className:`flex items-center gap-1 min-w-0`,children:[(0,R.jsx)(tB,{url:b,className:n,tunnelPopover:s&&x&&r?{mcpUrl:x,onStop:g.handleStopTunnel,open:h.open,onOpenChange:h.onOpenChange,autoCopyOnOpen:h.autoCopyOnOpen}:void 0}),y&&!s&&(0,R.jsx)(nB,{devFromCli:g.devFromCli,isTunnelStarting:c,waitTicks:g.waitTicks,onStart:g.handleStartTunnel})]})},C=()=>a?null:(0,R.jsxs)(`div`,{className:`flex items-center gap-2 sm:gap-3 flex-shrink-0`,children:[t&&(0,R.jsx)(R.Fragment,{children:(0,R.jsx)(oz,{serverConfig:{url:b,name:Xj(t),headers:cM(t),serverId:t.id},onSuccess:e=>IF.success(`Opening in ${e}...`),onError:e=>IF.error(`Failed: ${e.message}`),trigger:(0,R.jsxs)(Gt,{variant:`ghost`,className:`bg-zinc-200 dark:bg-zinc-800 hover:bg-zinc-300 dark:hover:bg-zinc-700 rounded-full transition-colors px-3 flex items-center justify-center`,"aria-label":`Add to Client`,children:[(0,R.jsxs)(`span`,{className:`xl:hidden hidden sm:flex items-center gap-1`,children:[(0,R.jsx)(Ai,{className:`size-3`}),`Client`]}),(0,R.jsxs)(`span`,{className:`hidden xl:flex items-center gap-1`,children:[`Add to Client`,(0,R.jsx)(Ir,{className:`size-3`})]})]})})}),(0,R.jsx)(`a`,{href:f?`https://manufact.com/cloud?ref=mcp-use-inspector`:`https://manufact.com/signup?ref=mcp-use-inspector`,target:`_blank`,rel:`noopener noreferrer`,onClick:()=>{try{bT(new Mo({referrer:`mcp-use-inspector`})).catch(()=>{})}catch{}},className:`inline-flex h-8 items-center justify-center rounded-full border border-blue-500/25 bg-blue-500/10 px-4 text-[13px] text-blue-500 outline-none cursor-pointer transition-colors hover:bg-blue-500/15 dark:border-blue-400/30 dark:bg-blue-400/10 dark:text-blue-400 dark:hover:bg-blue-400/15 focus-visible:ring-1 focus-visible:ring-ring`,children:(0,R.jsx)(`span`,{className:`[text-box:trim-both_cap_alphabetic]`,children:`Deploy`})}),w()]}),w=(e=!1)=>d.chatApiUrl?(0,R.jsx)(rz,{chatApiUrl:d.chatApiUrl,onUserResolved:e=>p(!!e),compact:e}):null;return(0,R.jsxs)(`header`,{className:`w-full min-w-0 shrink-0 overflow-hidden`,children:[(0,R.jsxs)(`div`,{className:`hidden lg:flex h-(--header-height) items-center justify-between gap-3 px-4 md:pl-0 md:pr-6`,children:[(0,R.jsx)(`div`,{className:`flex items-center gap-3 min-w-0 flex-1`,children:!a&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`div`,{className:L(`hidden lg:block shrink-0`,v&&o&&`-mr-[calc(var(--sidebar-width-icon)/2-0.625rem)]`),children:(0,R.jsx)(sz,{pinSymbolInIconColumn:!0,showLabel:!v||!o,state:v&&o?`collapsed`:`expanded`})}),(0,R.jsx)(`span`,{className:`text-sm text-muted-foreground/60 shrink-0 [text-box:trim-both_cap_alphabetic]`,children:`/`}),(0,R.jsx)(bz,{connections:e,selectedServer:t,onServerSelect:r,variant:`header`}),S(`desktop`)]})}),C()]}),(0,R.jsxs)(`div`,{className:`flex lg:hidden min-w-0 w-full flex-col overflow-hidden pt-(--mobile-chrome-gap)`,children:[(0,R.jsx)(`div`,{className:`flex min-h-0 items-center gap-2 pb-(--mobile-chrome-gap)`,children:!a&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-2.5 overflow-hidden`,children:[(0,R.jsx)(sz,{state:`collapsed`,showLabel:!0,labelParts:`inspector`,className:`shrink-0`}),(0,R.jsx)(`span`,{className:`shrink-0 px-0.5 text-sm text-muted-foreground/60 [text-box:trim-both_cap_alphabetic]`,children:`/`}),(0,R.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,R.jsx)(bz,{connections:e,selectedServer:t,onServerSelect:r,variant:`header`,compactHeader:!0})})]}),(0,R.jsx)(`div`,{className:`shrink-0`,children:w(!0)})]})}),t&&(0,R.jsx)(`div`,{className:`w-full min-w-0 pb-(--mobile-chrome-gap) lg:hidden`,children:(0,R.jsx)(BR,{value:n,onValueChange:e=>i(e),collapsed:m,className:`w-full`,children:(0,R.jsx)(VR,{className:`w-full gap-0 border-0 bg-transparent p-0 [&_[role=tablist]]:justify-between`,children:_.filter(e=>e.id!==`separator`).map(e=>{let r=Sz(e.id,t);return(0,R.jsx)(UR,{value:e.id,"data-testid":`tab-${e.id}`,icon:e.icon,iconOnly:!0,title:e.label,badge:r>0?(0,R.jsx)(iz,{count:r,isActive:n===e.id,overlay:!0}):void 0,className:`size-9 shrink-0 rounded-full p-0`,children:(0,R.jsx)(`span`,{className:`sr-only`,children:e.label})},e.id)})})})})]})]})}function fB({collapsed:e,onToggle:t}){let n=e?`Expand sidebar`:`Collapse sidebar`;return(0,R.jsxs)(et,{children:[(0,R.jsx)(we,{render:(0,R.jsxs)(Gt,{type:`button`,variant:`ghost`,size:`icon-sm`,tabIndex:-1,"aria-label":n,onClick:t,className:L(`border-border absolute top-1/2 right-0 z-30 hidden size-7 min-h-7 min-w-7 -translate-y-1/2 translate-x-1/2 rounded-full border bg-background lg:flex`,`opacity-0 transition-opacity duration-200 group-hover/sidebar:opacity-100 focus-visible:opacity-100`),children:[(0,R.jsx)(wi,{className:`size-4`}),(0,R.jsx)(`span`,{className:`sr-only`,children:n})]}),nativeButton:!0}),(0,R.jsx)(lt,{side:`right`,children:n})]})}function pB({className:e}){return(0,R.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`24`,height:`24`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentcolor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,className:e,children:[(0,R.jsx)(`path`,{d:`M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4`}),(0,R.jsx)(`path`,{d:`M9 18c-4.51 2-5-2-7-2`})]})}var mB=z.createContext(void 0);function hB(){let e=z.useContext(mB);if(e===void 0)throw Error(Vt(63));return e}var gB=function(e){return e.checked=`data-checked`,e.unchecked=`data-unchecked`,e.disabled=`data-disabled`,e.readonly=`data-readonly`,e.required=`data-required`,e.valid=`data-valid`,e.invalid=`data-invalid`,e.touched=`data-touched`,e.dirty=`data-dirty`,e.filled=`data-filled`,e.focused=`data-focused`,e}({}),_B={...Tn,checked(e){return e?{[gB.checked]:``}:{[gB.unchecked]:``}}};function vB(e,t,n,r=!0,i){let[a,o]=z.useState(),s=D(i?`${i}-label`:void 0),c=e??t??a;return Rt(()=>{let i=e||t||!r?void 0:yB(n.current,s);a!==i&&o(i)}),c}function yB(e,t){let n=bB(e);if(n)return!n.id&&t&&(n.id=t),n.id||void 0}function bB(e){if(!e)return;let t=e.parentElement;if(t&&t.tagName===`LABEL`)return t;let n=e.id;if(n){let t=e.nextElementSibling;if(t&&t.htmlFor===n)return t}let r=e.labels;return r&&r[0]}var xB=z.forwardRef(function(e,t){let{checked:n,className:r,defaultChecked:i,"aria-labelledby":a,form:o,id:s,inputRef:c,name:l,nativeButton:u=!1,onCheckedChange:d,readOnly:f=!1,required:p=!1,disabled:m=!1,render:h,uncheckedValue:g,value:_,style:v,...y}=e,{clearErrors:b}=An(),{state:x,setTouched:S,setDirty:C,validityData:w,setFilled:T,setFocused:E,validationMode:ee,disabled:te,name:re,validation:ie}=On(),{labelId:ae}=kn(),O=te||m,k=re??l,A=z.useRef(null),oe=Kt(A,c,ie.inputRef),se=z.useRef(null),ce=D(),j=cn({id:s,implicit:!1,controlRef:se}),M=u?void 0:j,[N,le]=Yt({controlled:n,default:!!i,name:`Switch`,state:`checked`});En(se,ce,N,void 0,!O,l),Rt(()=>{A.current&&T(A.current.checked)},[A,T]),Dn(N,()=>{b(k),C(N!==w.initialValue),T(N),ie.change(N)});let{getButtonProps:ue,buttonRef:de}=Lt({disabled:O,native:u}),fe=vB(a,ae,A,!u,M),pe={id:u?j:ce,role:`switch`,"aria-checked":N,"aria-readonly":f||void 0,"aria-required":p||void 0,"aria-labelledby":fe,onFocus(){O||E(!0)},onBlur(){let e=A.current;!e||O||(S(!0),E(!1),ee===`onBlur`&&ie.commit(e.checked))},onClick(e){if(f||O)return;e.preventDefault();let t=A.current;t&&t.dispatchEvent(new(Mt(t)).PointerEvent(`click`,{bubbles:!0,shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,altKey:e.altKey,metaKey:e.metaKey}))}},me=zt({checked:N,disabled:O,form:o,id:M,name:k,required:p,style:k?Te:He,tabIndex:-1,type:`checkbox`,"aria-hidden":!0,ref:oe,onChange(e){if(e.nativeEvent.defaultPrevented)return;if(f){e.preventDefault();return}let t=e.currentTarget.checked,n=ne(be,e.nativeEvent);d?.(t,n),!n.isCanceled&&le(t)},onFocus(){se.current?.focus()}},e=>ie.getValidationProps(O,e),_===void 0?Wt:{value:_}),he=z.useMemo(()=>({...x,checked:N,disabled:O,readOnly:f,required:p}),[x,N,O,f,p]),ge=Ft(`span`,e,{state:he,ref:[t,se,de],props:[pe,y,ue,e=>ie.getValidationProps(O,e)],stateAttributesMapping:_B});return(0,R.jsxs)(mB.Provider,{value:he,children:[ge,!N&&k&&g!==void 0&&(0,R.jsx)(`input`,{type:`hidden`,form:o,name:k,value:g,disabled:O}),(0,R.jsx)(`input`,{...me,suppressHydrationWarning:!0})]})}),SB=z.forwardRef(function(e,t){let{render:n,className:r,style:i,...a}=e;return Ft(`span`,e,{state:hB(),ref:t,stateAttributesMapping:_B,props:a})}),CB=34,wB=20,TB=16,EB=2,DB=4,OB=2;function kB(e){return`label`in e&&typeof e.label==`string`}var AB=(0,z.forwardRef)(({label:e,checked:t,onToggle:n,disabled:r=!1,thumbTransition:i,uncheckedTrackColor:a,uncheckedTrackColorHovered:o,className:s,...c},l)=>{let u=(0,z.useId)(),d=(0,z.useRef)(!1),[f,p]=(0,z.useState)(!1),[m,h]=(0,z.useState)(!1),g=(0,z.useRef)(!1),_=(0,z.useRef)(!1),v=(0,z.useRef)(null),y=ia(t?16:EB);(0,z.useEffect)(()=>{d.current=!0},[]);let b=m?20:f?18:TB,x=m?TB-DB:TB,S=m?4:EB,C=b-TB,w=t?16-C:EB;(0,z.useEffect)(()=>{g.current||(d.current?ka(y,w,i??pt.moderate):y.set(w))},[w,y,i]);let T=(0,z.useCallback)(e=>{r||e.pointerType===`mouse`&&e.button!==0||(h(!0),g.current=!1,_.current=!1,v.current={clientX:e.clientX,originX:y.get()},e.currentTarget.setPointerCapture(e.pointerId))},[r,y]),E=(0,z.useCallback)(e=>{if(!v.current)return;let t=e.clientX-v.current.clientX;if(!g.current){if(Math.abs(t)<OB)return;g.current=!0}let n=EB,r=CB-EB-20,i=v.current.originX+t;y.set(Math.max(n,Math.min(r,i)))},[y]),ee=(0,z.useCallback)(e=>{v.current&&=(h(!1),g.current&&(_.current=!0,g.current=!1,e&&(y.get()>14/2===t?ka(y,t?16:EB,i??pt.moderate):n()),requestAnimationFrame(()=>{_.current=!1})),null)},[t,n,y,i]);return(0,R.jsxs)(`div`,{ref:l,className:L(`relative z-10 flex items-center gap-2.5 px-3 py-2 cursor-pointer select-none touch-none`,r&&`opacity-50 pointer-events-none`,s),onPointerEnter:e=>{e.pointerType===`mouse`&&p(!0)},onPointerLeave:()=>p(!1),onPointerDown:T,onPointerMove:E,onPointerUp:()=>ee(!0),onPointerCancel:()=>{v.current&&=(h(!1),g.current&&(g.current=!1,ka(y,t?16:EB,i??pt.moderate)),null)},onClick:()=>{r||_.current||n()},...c,children:[(0,R.jsx)(xB,{checked:t,"aria-labelledby":u,onCheckedChange:()=>{_.current||n()},disabled:r,tabIndex:0,className:L(`relative shrink-0 rounded-full outline-none cursor-pointer`,`transition-colors duration-80`,`focus-visible:ring-1 focus-visible:ring-[color:var(--focus-ring,#6B97FF)] focus-visible:ring-offset-2 focus-visible:ring-offset-background`),style:{width:CB,height:wB,backgroundColor:t?f?`color-mix(in oklab, var(--primary) 88%, black)`:`var(--primary)`:f?o??`color-mix(in oklab, var(--accent), rgb(var(--overlay)) 10%)`:a??`var(--accent)`},onClick:e=>e.stopPropagation(),children:(0,R.jsx)(SB,{render:e=>{let{style:t,onDrag:n,onDragStart:r,onDragEnd:a,onAnimationStart:o,onAnimationEnd:s,onAnimationIteration:c,...l}=e;return(0,R.jsx)(Pe.span,{...l,className:`absolute top-0 left-0 block rounded-full bg-white shadow-sm`,initial:!1,style:{...t,x:y},animate:{y:S,width:b,height:x},transition:d.current?i??pt.moderate:{duration:0}})}})}),(0,R.jsx)(`span`,{id:u,className:L(`text-[13px] [text-box:trim-both_cap_alphabetic] transition-[color] duration-80`,t?`text-foreground`:`text-muted-foreground`),children:e})]})});AB.displayName=`FluidSwitch`;var jB=(0,z.forwardRef)(({checked:e,defaultChecked:t=!1,onCheckedChange:n,disabled:r=!1,className:i},a)=>{let[o,s]=(0,z.useState)(t),c=e??o;return(0,R.jsx)(xB,{ref:a,checked:c,disabled:r,onCheckedChange:t=>{e===void 0&&s(t),n?.(t)},className:L(`peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-xs transition-colors duration-80`,`focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[color:var(--focus-ring,#6B97FF)]`,`disabled:cursor-not-allowed disabled:opacity-50`,`data-checked:bg-primary data-unchecked:bg-input`,i),children:(0,R.jsx)(SB,{className:L(`pointer-events-none block size-4 rounded-full bg-background shadow-sm ring-0 transition-transform duration-80`,`data-checked:translate-x-4 data-unchecked:translate-x-0`)})})});jB.displayName=`ShadcnSwitch`;var MB=(0,z.forwardRef)((e,t)=>kB(e)?(0,R.jsx)(AB,{ref:t,...e}):(0,R.jsx)(jB,{ref:t,...e}));MB.displayName=`Switch`;function NB({className:e}){return(0,R.jsx)(`svg`,{viewBox:`0 -28.5 256 256`,className:e,fill:`currentColor`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":!0,children:(0,R.jsx)(`path`,{d:`M216.856339,16.5966031 C200.285002,8.84328665 182.566144,3.2084988 164.041564,0 C161.766523,4.11318106 159.108624,9.64549908 157.276099,14.0464379 C137.583995,11.0849896 118.072967,11.0849896 98.7430163,14.0464379 C96.9108417,9.64549908 94.1925838,4.11318106 91.8971895,0 C73.3526068,3.2084988 55.6133949,8.86399117 39.0420583,16.6376612 C5.61752293,67.146514 -3.4433191,116.400813 1.08711069,164.955721 C23.2560196,181.510915 44.7403634,191.567697 65.8621325,198.148576 C71.0772151,190.971126 75.7283628,183.341335 79.7352139,175.300261 C72.104019,172.400575 64.7949724,168.822202 57.8887866,164.667963 C59.7209612,163.310589 61.5131304,161.891452 63.2445898,160.431257 C105.36741,180.133187 151.134928,180.133187 192.754523,160.431257 C194.506336,161.891452 196.298154,163.310589 198.110326,164.667963 C191.183787,168.842556 183.854737,172.420929 176.223542,175.320965 C180.230393,183.341335 184.861538,190.991831 190.096624,198.16893 C211.238746,191.588051 232.743023,181.531619 254.911949,164.955721 C260.227747,108.668201 245.831087,59.8662432 216.856339,16.5966031 Z M85.4738752,135.09489 C72.8290281,135.09489 62.4592217,123.290155 62.4592217,108.914901 C62.4592217,94.5396472 72.607595,82.7145587 85.4738752,82.7145587 C98.3405064,82.7145587 108.709962,94.5189427 108.488529,108.914901 C108.508531,123.290155 98.3405064,135.09489 85.4738752,135.09489 Z M170.525237,135.09489 C157.88039,135.09489 147.510584,123.290155 147.510584,108.914901 C147.510584,94.5396472 157.658606,82.7145587 170.525237,82.7145587 C183.391518,82.7145587 193.761324,94.5189427 193.539891,108.914901 C193.539891,123.290155 183.391518,135.09489 170.525237,135.09489 Z`,fillRule:`nonzero`})})}var PB=`flex size-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-sidebar-accent hover:text-sidebar-accent-foreground`,FB=`color-mix(in oklab, var(--sidebar-foreground) 22%, var(--sidebar))`,IB=`color-mix(in oklab, var(--sidebar-foreground) 30%, var(--sidebar))`,LB=`data-unchecked:!bg-zinc-300 dark:data-unchecked:!bg-zinc-600`;function RB({collapsed:e,rpcLoggerOpen:t,onRpcLoggerOpenChange:n,onCommandPaletteOpen:r}){let{embeddedConfig:i}=nL(),{theme:a,setTheme:o}=dz(),{user:s}=WR(i.chatApiUrl),c=s?`https://manufact.com/cloud?ref=mcp-use-inspector`:`https://manufact.com/signup?ref=mcp-use-inspector`,l=()=>{try{bT(new Mo({referrer:`mcp-use-inspector-sidebar`})).catch(()=>{})}catch{}};return(0,R.jsx)(`footer`,{className:`mt-auto shrink-0`,children:(0,R.jsxs)(`div`,{className:L(`flex flex-col`,e?`items-center gap-2 px-2 py-3`:`gap-3 px-(--sidebar-nav-inset-x) py-4`),children:[e?(0,R.jsxs)(et,{children:[(0,R.jsx)(we,{render:(0,R.jsx)(`div`,{className:`flex size-8 items-center justify-center`,children:(0,R.jsx)(MB,{checked:t,onCheckedChange:n,"aria-label":`RPC Panel`,className:L(`scale-75`,LB)})}),nativeButton:!1}),(0,R.jsx)(lt,{side:`right`,children:`RPC Panel`})]}):(0,R.jsx)(MB,{label:`RPC Panel`,checked:t,onToggle:()=>n(!t),uncheckedTrackColor:FB,uncheckedTrackColorHovered:IB,className:`w-full flex-row-reverse justify-between`}),e?(0,R.jsxs)(et,{children:[(0,R.jsx)(we,{render:(0,R.jsx)(`a`,{href:c,target:`_blank`,rel:`noopener noreferrer`,onClick:l,className:PB,"aria-label":`Deploying your MCP Server? Try manufact.com`,children:(0,R.jsx)(Ar,{className:`size-4`})}),nativeButton:!1}),(0,R.jsx)(lt,{side:`right`,children:`Deploying your MCP Server? Try manufact.com`})]}):(0,R.jsxs)(`a`,{href:c,target:`_blank`,rel:`noopener noreferrer`,onClick:l,className:`relative block rounded-xl border border-sidebar-border bg-white p-3 transition-colors hover:bg-sidebar-accent/50 dark:bg-black`,children:[(0,R.jsx)(Ar,{className:`absolute top-2.5 right-2.5 size-3.5 text-muted-foreground`,"aria-hidden":!0}),(0,R.jsx)(`p`,{className:`pr-5 text-xs leading-snug text-muted-foreground`,children:`Deploying your MCP Server?`}),(0,R.jsxs)(`p`,{className:`mt-0.5 text-xs leading-snug`,children:[`Try`,` `,(0,R.jsx)(`span`,{className:`font-medium underline underline-offset-2`,children:`manufact.com`})]})]}),(0,R.jsxs)(`div`,{className:L(`flex`,e?`flex-col items-center gap-1`:`flex-row items-center gap-2`),children:[(0,R.jsxs)(et,{children:[(0,R.jsx)(we,{render:(0,R.jsx)(`a`,{href:`https://github.com/mcp-use/mcp-use`,target:`_blank`,rel:`noopener noreferrer`,className:PB,"aria-label":`GitHub`,children:(0,R.jsx)(pB,{className:`size-4`})}),nativeButton:!1}),(0,R.jsx)(lt,{side:e?`right`:`top`,children:`GitHub`})]}),(0,R.jsxs)(et,{children:[(0,R.jsx)(we,{render:(0,R.jsx)(`a`,{href:`https://discord.gg/XkNkSkMz3V`,target:`_blank`,rel:`noopener noreferrer`,className:PB,"aria-label":`Discord`,children:(0,R.jsx)(NB,{className:`size-4`})}),nativeButton:!1}),(0,R.jsx)(lt,{side:e?`right`:`top`,children:`Discord`})]}),(0,R.jsxs)(Ya,{children:[(0,R.jsxs)(et,{children:[(0,R.jsx)(we,{render:(0,R.jsx)(Xa,{render:(0,R.jsx)(`button`,{type:`button`,className:PB,"aria-label":`Theme`,children:a===`light`?(0,R.jsx)(Ui,{className:`size-4`}):a===`dark`?(0,R.jsx)(xi,{className:`size-4`}):(0,R.jsx)(bi,{className:`size-4`})}),nativeButton:!0}),nativeButton:!0}),(0,R.jsx)(lt,{side:e?`right`:`top`,children:`Theme`})]}),(0,R.jsx)(Za,{side:e?`right`:`top`,align:e?`start`:`center`,className:`w-40`,children:(0,R.jsxs)(eo,{value:a,onValueChange:e=>o(e),children:[(0,R.jsxs)(to,{value:`light`,children:[(0,R.jsx)(Ui,{className:`size-4 mr-2`}),`Light`]}),(0,R.jsxs)(to,{value:`dark`,children:[(0,R.jsx)(xi,{className:`size-4 mr-2`}),`Dark`]}),(0,R.jsxs)(to,{value:`system`,children:[(0,R.jsx)(bi,{className:`size-4 mr-2`}),`System`]})]})})]}),(0,R.jsxs)(et,{children:[(0,R.jsx)(we,{render:(0,R.jsx)(`button`,{type:`button`,onClick:r,className:PB,"aria-label":`Command Palette`,"data-testid":`command-palette-trigger-button`,children:(0,R.jsx)(Ur,{className:`size-4`})}),nativeButton:!0}),(0,R.jsxs)(lt,{side:e?`right`:`top`,children:[`Command Palette (`,`⌘`,`K)`]})]})]})]})})}function zB(e,t){let n=0,r=0,i=e;for(;i&&i!==t;)n+=i.offsetTop,r+=i.offsetLeft,i=i.offsetParent;if(i!==t){let n=t.getBoundingClientRect(),r=e.getBoundingClientRect();return{top:r.top-n.top,left:r.left-n.left,width:r.width,height:r.height}}return{top:n,left:r,width:e.offsetWidth,height:e.offsetHeight}}function BB(e,t){let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r of n){let n=e[r],i=t[r];if(!n||!i||n.top!==i.top||n.left!==i.left||n.width!==i.width||n.height!==i.height)return!1}return!0}function VB(e,t={}){let{axis:n=`y`}=t,r=(0,z.useRef)(new Map),[i,a]=(0,z.useState)(null),[o,s]=(0,z.useState)({}),c=(0,z.useRef)({}),l=(0,z.useRef)(0),u=(0,z.useRef)(null),d=(0,z.useRef)(null),f=(0,z.useCallback)(()=>{let t=e.current;if(!t)return;let n={};r.current.forEach((e,r)=>{n[r]=zB(e,t)}),!BB(c.current,n)&&(c.current=n,s(n))},[e]),p=(0,z.useCallback)((e,t)=>{t?r.current.set(e,t):r.current.delete(e),d.current!==null&&cancelAnimationFrame(d.current),d.current=requestAnimationFrame(()=>{d.current=null,f()})},[f]),m=(0,z.useCallback)(t=>{let r=t.clientX,i=t.clientY;u.current!==null&&cancelAnimationFrame(u.current),u.current=requestAnimationFrame(()=>{u.current=null;let t=e.current;if(!t)return;let o=t.getBoundingClientRect(),s=n===`x`?r:i,l=null,d=1/0,f=null,p=c.current,m=n===`x`?t.scrollLeft:t.scrollTop,h=n===`x`?t.clientLeft:t.clientTop,g=n===`x`?o.left:o.top,_=n===`x`?t.offsetWidth:t.offsetHeight,v=n===`x`?o.width:o.height,y=_>0?v/_:1;for(let[e,t]of Object.entries(p)){let r=g+(h+(n===`x`?t.left:t.top)-m)*y,i=(n===`x`?t.width:t.height)*y,a=r+i;s>=r&&s<=a&&(f=e);let o=r+i/2,c=Math.abs(s-o);c<d&&(d=c,l=e)}a(f??l)})},[n,e]),h=(0,z.useCallback)(()=>{l.current+=1},[]),g=(0,z.useCallback)(()=>{u.current!==null&&(cancelAnimationFrame(u.current),u.current=null),a(null)},[]);return(0,z.useEffect)(()=>{let t=e.current;if(!t||typeof ResizeObserver>`u`)return;let n=new ResizeObserver(()=>{d.current!==null&&cancelAnimationFrame(d.current),d.current=requestAnimationFrame(()=>{d.current=null,f()})});return n.observe(t),()=>n.disconnect()},[e,f]),(0,z.useEffect)(()=>()=>{u.current!==null&&cancelAnimationFrame(u.current),d.current!==null&&cancelAnimationFrame(d.current)},[]),{activeKey:i,itemRects:o,sessionRef:l,handlers:{onMouseMove:m,onMouseEnter:h,onMouseLeave:g},registerItem:p,measureItems:f}}function HB(e){if(!e)return{left:0,right:0};let t=getComputedStyle(e),n=Number.parseFloat(t.getPropertyValue(`--sidebar-nav-pill-bleed`))||0,r=Number.parseFloat(t.getPropertyValue(`--sidebar-nav-scrollbar-width`))||0,i=Number.parseFloat(t.getPropertyValue(`--sidebar-nav-pill-outer-trim-right`))||0;return{left:n,right:n+r+i}}function UB(e,t){return{...e,left:e.left-t.left,width:e.width+t.left+t.right}}var WB=(0,z.createContext)(null);function GB(){let e=(0,z.useContext)(WB),t=(0,z.useRef)(e?.registerItem);t.current=e?.registerItem;let n=(0,z.useRef)(new Map);return(0,z.useCallback)(e=>{let r=n.current,i=r.get(e);return i||(i=n=>t.current?.(e,n),r.set(e,i)),i},[])}function KB({children:e,isActiveKey:t,className:n}){let r=(0,z.useRef)(null),{activeKey:i,itemRects:a,sessionRef:o,handlers:s,registerItem:c,measureItems:l}=VB(r),u=(0,z.useMemo)(()=>({registerItem:c}),[c]),d=Object.keys(a).find(e=>t(e))??null;(0,z.useLayoutEffect)(()=>{l()},[l,e,d]);let f=HB(r.current),p=i?a[i]:null,m=d?a[d]:null,h=p?UB(p,f):null,g=m?UB(m,f):null,_=i!==null&&i!==d;return(0,R.jsx)(WB.Provider,{value:u,children:(0,R.jsxs)(`div`,{ref:r,onMouseEnter:s.onMouseEnter,onMouseMove:s.onMouseMove,onMouseLeave:s.onMouseLeave,className:L(`relative isolate`,n),children:[(0,R.jsx)(en,{initial:!1,children:g&&d?(0,R.jsx)(Pe.div,{"aria-hidden":!0,className:`pointer-events-none absolute -z-20 rounded-full bg-sidebar-accent`,initial:{opacity:0,top:g.top,left:g.left,width:g.width,height:g.height},animate:{opacity:_?.85:1,top:g.top,left:g.left,width:g.width,height:g.height},exit:{opacity:0,transition:pt.fast.exit},transition:{opacity:{duration:.08},top:{duration:0},left:{duration:0},width:{duration:0},height:{duration:0}}},d):null}),(0,R.jsx)(en,{children:h?(0,R.jsx)(Pe.div,{"aria-hidden":!0,className:`pointer-events-none absolute -z-10 rounded-full bg-sidebar-accent`,initial:{opacity:0,top:g?.top??h.top,left:g?.left??h.left,width:g?.width??h.width,height:g?.height??h.height},animate:{opacity:1,top:h.top,left:h.left,width:h.width,height:h.height},exit:{opacity:0,transition:pt.fast.exit},transition:{...pt.fast,opacity:{duration:.08}}},o.current):null}),e]})})}var qB=L(`pointer-events-auto absolute right-(--sidebar-nav-trailing-right) top-1/2 z-10 flex h-(--sidebar-nav-trailing-size) min-w-(--sidebar-nav-trailing-size) -translate-y-1/2 items-center justify-center`,L(`transition-[opacity,filter] duration-200 ease-out`,`opacity-100 blur-0`,`group-data-[collapsible=icon]:opacity-0 group-data-[collapsible=icon]:blur-[3px] group-data-[collapsible=icon]:pointer-events-none`,`group-data-[collapsed=true]:opacity-0 group-data-[collapsed=true]:blur-[3px] group-data-[collapsed=true]:pointer-events-none`)),JB=L(`truncate transition-[opacity,filter,margin] duration-200 ease-out`,`group-data-[collapsible=icon]:hidden`,`group-data-[collapsed=true]:hidden`),YB=L(`peer/menu-button flex cursor-pointer items-center gap-2 overflow-hidden rounded-full py-2 text-left text-sm outline-hidden ring-sidebar-ring hover:text-sidebar-accent-foreground group-hover/menu-item:text-sidebar-accent-foreground focus-visible:ring-2 active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-active:font-medium data-active:text-sidebar-accent-foreground [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0`,`transition-[width,max-width,height,padding,border-radius] duration-200 ease-out`,`h-8 text-sm`);function XB({count:e}){return(0,R.jsx)(`span`,{className:L(`inline-flex h-5 shrink-0 items-center justify-center border border-border bg-zinc-200 px-1 text-[10px] font-medium tabular-nums leading-none text-foreground dark:bg-zinc-700`,String(e).length>=3?`min-w-5 rounded-md`:`size-5 min-w-5 rounded-full`),children:e})}function ZB(e){return e.id!==`separator`}function QB({activeTab:e,onTabChange:t,selectedServer:n,visibleTabs:r,collapsed:i}){let a=GB();return(0,R.jsx)(`ul`,{className:`flex w-full min-w-0 flex-col gap-1 px-(--sidebar-nav-inset-x) group`,"data-collapsed":i,"aria-label":`Inspector tabs`,children:(r?wz.filter(e=>ZB(e)&&r.includes(e.id)):wz.filter(ZB)).map((r,o)=>{let s=Sz(r.id,n),c=Cz(r.id,s,i),l=r.icon,u=e===r.id,d=s>0||c,f=(0,R.jsxs)(`button`,{ref:a(r.id),type:`button`,"data-testid":`tab-${r.id}`,"data-active":u?!0:void 0,onClick:()=>t(r.id),className:L(YB,i?`size-8! w-8! max-w-8! shrink-0 justify-center gap-0 p-0!`:`w-full max-w-full sidebar-nav-pill-bleed-x pl-(--sidebar-nav-icon-pl-bleed) pr-(--sidebar-nav-pr-bleed)`,d&&!i&&`pr-[calc(var(--sidebar-nav-trailing-right)+var(--sidebar-nav-trailing-size))]`),children:[(0,R.jsx)(l,{className:`size-4 shrink-0`}),(0,R.jsx)(`span`,{className:JB,children:r.label})]});return(0,R.jsxs)(`li`,{className:L(`group/menu-item relative`,o===0&&`mt-4`),children:[i?(0,R.jsxs)(et,{delayDuration:0,children:[(0,R.jsx)(we,{render:f,nativeButton:!0}),(0,R.jsx)(lt,{side:`right`,children:s>0?`${r.label} (${s})`:r.label})]}):f,d&&!i?(0,R.jsx)(`div`,{className:qB,children:s>0?(0,R.jsx)(XB,{count:s}):c?(0,R.jsx)(`span`,{className:`inline-flex h-2 w-2 shrink-0 rounded-full bg-yellow-500 animate-status-pulse-yellow`}):null}):null]},r.id)})})}function $B({activeTab:e,onTabChange:t,selectedServer:n,visibleTabs:r,collapsed:i,onCollapsedChange:a,rpcLoggerOpen:o,onRpcLoggerOpenChange:s,onCommandPaletteOpen:c}){return(0,R.jsxs)(`aside`,{className:L(`group/sidebar relative hidden lg:flex flex-col shrink-0 text-sidebar-foreground transition-[width] duration-200 ease-out @container/sidebar`,i?`w-(--sidebar-width-icon)`:`w-(--sidebar-width)`),"data-collapsed":i,"data-collapsible":i?`icon`:`expanded`,children:[(0,R.jsx)(`div`,{className:`sidebar-nav-scroll flex-1 overflow-y-auto overflow-x-hidden min-h-0`,children:(0,R.jsx)(KB,{isActiveKey:t=>t===e,className:`pb-2`,children:(0,R.jsx)(QB,{activeTab:e,onTabChange:t,selectedServer:n,visibleTabs:r,collapsed:i})})}),(0,R.jsx)(RB,{collapsed:i,rpcLoggerOpen:o,onRpcLoggerOpenChange:s,onCommandPaletteOpen:c}),(0,R.jsx)(fB,{collapsed:i,onToggle:()=>a(!i)})]})}function eV(e){if(e===0)return`0 Bytes`;let t=1024,n=[`Bytes`,`KB`,`MB`,`GB`],r=Math.floor(Math.log(e)/Math.log(t));return Math.round(e/t**r*100)/100+` `+n[r]}function tV(e){if(e===0)return`0 B`;let t=1024,n=[`B`,`KB`,`MB`],r=Math.floor(Math.log(e)/Math.log(t));return`${parseFloat((e/t**r).toFixed(1))} ${n[r]}`}var nV=100*1024,rV=1024*20;function iV(e,t){if(e==null)return e;if(typeof e==`string`)return e.length>t?e.substring(0,t)+`... (truncated)`:e;if(Array.isArray(e))return e.map(e=>iV(e,t));if(typeof e==`object`){let n={};for(let r in e)Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=iV(e[r],t));return n}return e}function aV(e){let t=JSON.stringify(e,null,2);return new TextEncoder().encode(t).length>nV?iV(e,rV):e}function oV(e){let t=JSON.stringify(e,null,2),n=new TextEncoder().encode(t).length,r=n>nV,i;if(r){let t=iV(e,rV);i=JSON.stringify(t,null,2)}else i=t;return{isLarge:r,size:n,sizeFormatted:eV(n),preview:i,full:t}}function sV(e,t){try{let n=JSON.stringify(e,null,2),r=globalThis.Blob,i=new r([n],{type:`application/json`}),a=URL.createObjectURL(i),o=document.createElement(`a`);o.href=a,o.download=t||`data-${Date.now()}.json`,document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(a)}catch(e){throw console.error(`Failed to download JSON:`,e),e}}var cV={key:`text-sky-600 dark:text-sky-400`,string:`text-emerald-600 dark:text-emerald-400`,number:`text-amber-600 dark:text-amber-400`,boolean:`text-violet-600 dark:text-violet-400`,null:`text-zinc-500 dark:text-zinc-400`,punctuation:`text-muted-foreground`};function lV(e){let t=[],n=0,r=(e,n)=>{n&&t.push({kind:e,text:n})};for(;n<e.length;){let t=e[n];if(t===`"`){let t=n;for(n++;n<e.length;){if(e[n]===`\\`){n+=2;continue}if(e[n]===`"`){n++;break}n++}let i=e.slice(t,n),a=n;for(;a<e.length&&/[ \t]/.test(e[a]);)a++;r(e[a]===`:`?`key`:`string`,i);continue}if(/[0-9-]/.test(t)){let t=n;for(e[n]===`-`&&n++;n<e.length&&/[0-9.eE+-]/.test(e[n]);)n++;r(`number`,e.slice(t,n));continue}if(e.startsWith(`true`,n)||e.startsWith(`false`,n)){let t=e.startsWith(`true`,n)?`true`:`false`;r(`boolean`,t),n+=t.length;continue}if(e.startsWith(`null`,n)){r(`null`,`null`),n+=4;continue}if(/[{}[\],:]/.test(t)){r(`punctuation`,t),n++;continue}r(`punctuation`,t),n++}return t}function uV(e){return lV(e).map((e,t)=>(0,R.jsx)(`span`,{className:cV[e.kind],children:e.text},t))}var dV={string:`text-emerald-600 dark:text-emerald-400`,number:`text-amber-600 dark:text-amber-400`,boolean:`text-violet-600 dark:text-violet-400`,null:`text-zinc-500 dark:text-zinc-400`,key:`text-sky-600 dark:text-sky-400`,punctuation:`text-muted-foreground`};function fV(e){return e===null?(0,R.jsx)(`span`,{className:dV.null,children:`null`}):typeof e==`string`?(0,R.jsx)(`span`,{className:dV.string,children:JSON.stringify(e)}):typeof e==`number`?(0,R.jsx)(`span`,{className:dV.number,children:String(e)}):typeof e==`boolean`?(0,R.jsx)(`span`,{className:dV.boolean,children:String(e)}):(0,R.jsx)(`span`,{className:dV.string,children:JSON.stringify(e)})}function pV(e){return Array.isArray(e)?`[${e.length}]`:`{${Object.keys(e).length}}`}function mV({label:e,value:t,depth:n,defaultExpanded:r}){let i=typeof t==`object`&&t&&!Array.isArray(t)?Object.keys(t).length>0:Array.isArray(t)?t.length>0:!1,[a,o]=(0,z.useState)(i&&(r||n===0));if(!i){let r=Array.isArray(t)?`[]`:`{}`;return typeof t==`object`&&t?(0,R.jsxs)(`div`,{className:`font-mono text-[0.8rem] leading-relaxed`,style:{paddingLeft:n*12},children:[e!=null&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`span`,{className:dV.key,children:JSON.stringify(e)}),(0,R.jsx)(`span`,{className:dV.punctuation,children:`: `})]}),(0,R.jsx)(`span`,{className:dV.punctuation,children:r})]}):(0,R.jsxs)(`div`,{className:`font-mono text-[0.8rem] leading-relaxed`,style:{paddingLeft:n*12},children:[e!=null&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`span`,{className:dV.key,children:JSON.stringify(e)}),(0,R.jsx)(`span`,{className:dV.punctuation,children:`: `})]}),fV(t)]})}let s=Array.isArray(t)?t.map((e,t)=>[String(t),e]):Object.entries(t),c=Array.isArray(t),l=c?`[`:`{`,u=c?`]`:`}`;return(0,R.jsxs)(`div`,{className:`font-mono text-[0.8rem] leading-relaxed`,children:[(0,R.jsxs)(`div`,{className:`flex items-start gap-0.5`,style:{paddingLeft:n*12},children:[(0,R.jsx)(`button`,{type:`button`,"aria-expanded":a,onClick:()=>o(e=>!e),className:`mt-0.5 inline-flex shrink-0 items-center justify-center rounded-sm text-muted-foreground hover:text-foreground`,children:(0,R.jsx)(C,{className:L(`h-3.5 w-3.5 transition-transform`,a&&`rotate-90`)})}),(0,R.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[e!=null&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`span`,{className:dV.key,children:JSON.stringify(e)}),(0,R.jsx)(`span`,{className:dV.punctuation,children:`: `})]}),(0,R.jsx)(`span`,{className:dV.punctuation,children:l}),!a&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`button`,{type:`button`,onClick:()=>o(!0),className:`mx-1 text-xs text-muted-foreground hover:text-foreground`,children:pV(t)}),(0,R.jsx)(`span`,{className:dV.punctuation,children:u})]})]})]}),a&&(0,R.jsxs)(`div`,{children:[s.map(([e,t])=>(0,R.jsx)(mV,{label:e,value:t,depth:n+1,defaultExpanded:r},`${n}-${e}`)),(0,R.jsx)(`div`,{style:{paddingLeft:n*12},children:(0,R.jsx)(`span`,{className:dV.punctuation,children:u})})]})]})}function hV({data:e,defaultExpanded:t=!0,className:n}){return(0,R.jsx)(`div`,{className:L(`text-gray-900 dark:text-gray-100 [overflow-wrap:anywhere]`,n),"data-testid":`collapsible-json`,children:(0,R.jsx)(mV,{value:e,depth:0,defaultExpanded:t})})}var gV=`font-mono text-[0.8rem] text-gray-900 dark:text-gray-100 whitespace-pre-wrap break-words [overflow-wrap:anywhere]`;function _V({data:e,filename:t,className:n,collapsible:r=!1,defaultExpanded:i=!0,...a}){let o=oV(e),s=aV(e),c=o.isLarge?(0,R.jsx)(`div`,{className:`mb-3 p-3 bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 rounded-lg`,children:(0,R.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,R.jsxs)(`div`,{className:`flex-1`,children:[(0,R.jsxs)(`p`,{className:`text-sm font-medium text-yellow-800 dark:text-yellow-300 mb-1`,children:[`JSON is too large (`,o.sizeFormatted,`)`]}),(0,R.jsx)(`p`,{className:`text-xs text-yellow-700 dark:text-yellow-400`,children:`Showing full structure with truncated values. Download the full JSON file to see complete values.`})]}),(0,R.jsxs)(Gt,{variant:`outline`,size:`sm`,onClick:()=>{sV(e,t)},className:`shrink-0`,children:[(0,R.jsx)(qr,{className:`h-4 w-4 mr-1`}),`Download`]})]})}):null;return r?(0,R.jsxs)(`div`,{className:n,...a,children:[c,(0,R.jsx)(hV,{data:s,defaultExpanded:i})]}):o.isLarge?(0,R.jsxs)(`div`,{className:n,...a,children:[c,(0,R.jsx)(`pre`,{className:gV,children:(0,R.jsx)(`code`,{children:uV(o.preview)})})]}):(0,R.jsx)(`div`,{className:n,...a,children:(0,R.jsx)(`pre`,{className:gV,children:(0,R.jsx)(`code`,{children:uV(o.preview)})})})}function vV(e){if(!e)return null;for(let t of e.elements){let e=t.tagName;if(e===`BUTTON`||e===`INPUT`){let e=t;if(e.type===`submit`)return e}}return null}var yV=function(e){return e.checked=`data-checked`,e.unchecked=`data-unchecked`,e.indeterminate=`data-indeterminate`,e.disabled=`data-disabled`,e.readonly=`data-readonly`,e.required=`data-required`,e.valid=`data-valid`,e.invalid=`data-invalid`,e.touched=`data-touched`,e.dirty=`data-dirty`,e.filled=`data-filled`,e.focused=`data-focused`,e}({});function bV(e){return z.useMemo(()=>({checked(t){return e.indeterminate?{}:t?{[yV.checked]:``}:{[yV.unchecked]:``}},...Tn}),[e.indeterminate])}var xV=z.createContext({disabled:!1});function SV(){return z.useContext(xV)}var CV=z.createContext(void 0);function wV(e=!0){let t=z.useContext(CV);if(t===void 0&&!e)throw Error(Vt(3));return t}var TV=z.createContext(void 0);function EV(){let e=z.useContext(TV);if(e===void 0)throw Error(Vt(14));return e}var DV=`data-parent`,OV=z.forwardRef(function(e,t){let{checked:n,className:r,defaultChecked:i=!1,"aria-labelledby":a,disabled:o=!1,form:s,id:c,indeterminate:l=!1,inputRef:u,name:d,onCheckedChange:f,parent:p=!1,readOnly:m=!1,render:h,required:g=!1,uncheckedValue:_,value:v,nativeButton:y=!1,style:b,...x}=e,{clearErrors:S}=An(),{disabled:C,name:w,setDirty:T,setFilled:E,setFocused:ee,setTouched:te,state:re,validationMode:ie,validityData:ae,validation:O}=On(),k=SV(),{labelId:A,controlId:oe,registerControlId:se,getDescriptionProps:ce}=kn(),j=wV(),M=j?.parent,N=M&&j.allValues,le=C||k.disabled||j?.disabled||o,ue=w??d,de=v??ue,fe=D(),pe=D(),me=oe;N?me=p?pe:`${M.id}-${de}`:c&&(me=c);let he={};N&&(p?he=j.parent.getParentProps():de&&(he=j.parent.getChildProps(de)));let{checked:ge=n,indeterminate:_e=l,onCheckedChange:ve,...ye}=he,xe=j?.value,P=j?.setValue,Se=j?.defaultValue,Ce=z.useRef(null),we=qt(()=>Symbol(`checkbox-control`)),Ee=z.useRef(!1),{getButtonProps:De,buttonRef:Oe}=Lt({disabled:le,native:y}),ke=j?.validation??O,[Ae,je]=Yt({controlled:de&&xe&&!p?xe.includes(de):ge,default:de&&Se&&!p?Se.includes(de):i,name:`Checkbox`,state:`checked`}),Me=N?!!ge:Ae,Ne=N&&_e||l;Rt(()=>{se!==It&&(Ee.current=!0,se(we.current,me))},[me,se,we]),z.useEffect(()=>{let e=we.current;return()=>{!Ee.current||se===It||(Ee.current=!1,se(e,void 0))}},[se,we]),En(Ce,fe,Ae,void 0,!j&&!le,d);let Pe=z.useRef(null),Fe=Kt(u,Pe,ke.inputRef,ke.registerInput),Ie=vB(a,A,Pe,!y,me??void 0);Rt(()=>{Pe.current&&(Pe.current.indeterminate=Ne,Ae&&E(!0))},[Ae,Ne,E]),Dn(Ae,()=>{j||(S(ue),E(Ae),T(Ae!==ae.initialValue),ke.change(Ae))});let Le=zt({checked:Ae,disabled:le,form:s,name:p?void 0:ue,id:y?void 0:me??void 0,required:g,ref:Fe,style:ue?Te:He,tabIndex:-1,type:`checkbox`,"aria-hidden":!0,onChange(e){if(e.nativeEvent.defaultPrevented)return;if(m){e.preventDefault();return}let t=e.currentTarget.checked,n=ne(be,e.nativeEvent);f?.(t,n),!n.isCanceled&&(ve?.(t,n),!n.isCanceled&&(je(t),de&&xe&&P&&!p&&!N&&P(t?[...xe,de]:xe.filter(e=>e!==de),n)))},onFocus(){Ce.current?.focus()}},v===void 0?Wt:{value:(j?Ae&&v:v)||``},ce,e=>ke.getValidationProps(le,e));z.useEffect(()=>{if(!M||!de)return;let e=M.disabledStatesRef.current;return e.set(de,le),()=>{e.delete(de)}},[M,le,de]);let Re=z.useMemo(()=>({...re,checked:Me,disabled:le,readOnly:m,required:g,indeterminate:Ne}),[re,Me,le,m,g,Ne]),ze=bV(Re),Be=Ft(`span`,e,{state:Re,ref:[Oe,Ce,t,j?.registerControlRef],props:[{id:y?me??void 0:fe,role:`checkbox`,"aria-checked":Ne?`mixed`:Me,"aria-readonly":m||void 0,"aria-required":g||void 0,"aria-labelledby":Ie,[DV]:p?``:void 0,onFocus(){le||ee(!0)},onBlur(){let e=Pe.current;e&&(te(!0),ee(!1),ie===`onBlur`&&ke.commit(j?xe:e.checked))},onKeyDown(e){if(e.key!==`Enter`||(e.preventBaseUIHandler(),e.defaultPrevented))return;let t=Pe.current?.form??null,n=e.currentTarget,r=e.nativeEvent,i=e.preventDefault,a=r.preventDefault,o=!1;e.preventDefault=()=>{o=!0,i.call(e)},r.preventDefault=()=>{o=!0,a.call(r)},a.call(r),Mt(n).queueMicrotask(()=>{e.preventDefault=i,r.preventDefault=a,o||vV(t)?.click()})},onClick(e){if(m||le)return;e.preventDefault();let t=Pe.current;t&&t.dispatchEvent(new(Mt(t)).PointerEvent(`click`,{bubbles:!0,shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,altKey:e.altKey,metaKey:e.metaKey}))}},x,ye,De,ce,e=>ke.getValidationProps(le,e)],stateAttributesMapping:ze});return(0,R.jsxs)(TV.Provider,{value:Re,children:[Be,!Ae&&!j&&ue&&!p&&_!==void 0&&(0,R.jsx)(`input`,{type:`hidden`,form:s,name:ue,value:_,disabled:le}),(0,R.jsx)(`input`,{...Le,suppressHydrationWarning:!0})]})}),kV=z.forwardRef(function(e,t){let{render:n,className:r,style:i,keepMounted:a=!1,...o}=e,s=EV(),c=s.checked||s.indeterminate,{mounted:l,transitionStatus:u,setMounted:d}=Je(c),f=z.useRef(null),p={...s,transitionStatus:u};g({open:c,ref:f,onComplete(){c||d(!1)}});let m={...bV(s),...it,...Tn},h=a||l,_=Ft(`span`,e,{ref:[t,f],state:p,stateAttributesMapping:m,props:o});return h?_:null}),AV=(0,z.createContext)(null);function jV(){let e=(0,z.useContext)(AV);if(!e)throw Error(`useCheckboxGroup must be used within a CheckboxGroup`);return e}var MV=(0,z.forwardRef)(({children:e,checkedIndices:t,orientation:n=`vertical`,className:r,...i},a)=>{let o=(0,z.useRef)(null),s=n===`horizontal`,{activeIndex:c,setActiveIndex:l,handlers:u,registerItem:d,measureItems:f}=_n(o,{axis:s?`x`:`y`});(0,z.useEffect)(()=>{f()},[f,e]);let p=s?`ArrowLeft`:`ArrowUp`,m=s?`ArrowRight`:`ArrowDown`;return(0,R.jsx)(AV.Provider,{value:{registerItem:d,activeIndex:c},children:(0,R.jsx)(`div`,{ref:e=>{o.current=e,typeof a==`function`?a(e):a&&(a.current=e)},onMouseEnter:u.onMouseEnter,onMouseMove:u.onMouseMove,onMouseLeave:u.onMouseLeave,onFocus:e=>{let t=e.target.closest(`[data-proximity-index]`)?.getAttribute(`data-proximity-index`);t!=null&&l(Number(t))},onBlur:e=>{o.current?.contains(e.relatedTarget)||l(null)},onKeyDown:e=>{let t=Array.from(o.current?.querySelectorAll(`[data-proximity-index]`)??[]),n=t.indexOf(e.target);n!==-1&&([p,m].includes(e.key)?(e.preventDefault(),t[e.key===m?(n+1)%t.length:(n-1+t.length)%t.length]?.focus()):e.key===`Home`?(e.preventDefault(),t[0]?.focus()):e.key===`End`&&(e.preventDefault(),t[t.length-1]?.focus()))},role:`group`,className:L(`relative flex max-w-full select-none`,s?`w-auto flex-row`:`w-72 flex-col`,r),...i,children:e})})});MV.displayName=`CheckboxGroup`;var NV=(0,z.forwardRef)(({label:e,index:t,checked:n,onToggle:r,size:i=`default`,className:a,...o},s)=>{let c=(0,z.useRef)(null),l=(0,z.useRef)(!1),{registerItem:u,activeIndex:d}=jV();(0,z.useEffect)(()=>(u(t,c.current),()=>u(t,null)),[t,u]),(0,z.useEffect)(()=>{l.current=!0},[]);let f=d===t,p=!l.current,m=Nt(),h=i===`sm`;return(0,R.jsxs)(`div`,{ref:e=>{c.current=e,typeof s==`function`?s(e):s&&(s.current=e)},"data-proximity-index":t,tabIndex:0,role:`checkbox`,"aria-checked":n,"aria-label":e,onClick:r,onMouseDown:e=>{let t=e.target.closest(`button:not([tabindex="-1"]), a[href], input, select, textarea, [tabindex]:not([tabindex="-1"])`);t&&t!==e.currentTarget||(e.preventDefault(),e.currentTarget.focus())},onKeyDown:e=>{(e.key===` `||e.key===`Enter`)&&(e.preventDefault(),r())},className:L(`relative z-10 flex items-center cursor-pointer outline-none`,h?`h-7 gap-1.5 px-2`:`h-8 gap-2.5 px-3`,m.item,`focus-visible:ring-1 focus-visible:ring-[color:var(--focus-ring,#6B97FF)]`,a),...o,children:[(0,R.jsxs)(OV,{checked:n,tabIndex:-1,"aria-hidden":!0,className:L(`pointer-events-none relative shrink-0 appearance-none bg-transparent p-0 border-0 outline-none`,h?`size-[13px]`:`size-[15px]`),children:[(0,R.jsx)(`div`,{className:L(`absolute inset-0 rounded-[5px] border-solid transition-all duration-80 border-[1.5px]`,n?`border-border`:f?`border-neutral-400 dark:border-neutral-500`:`border-border`)}),(0,R.jsx)(en,{children:n&&(0,R.jsx)(kV,{keepMounted:!0,render:e=>{let{style:t,onDrag:n,onDragStart:r,onDragEnd:i,onAnimationStart:a,onAnimationEnd:o,onAnimationIteration:s,...c}=e;return(0,R.jsx)(Pe.svg,{...c,width:h?14:18,height:h?14:18,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`,className:`absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 text-foreground`,initial:{opacity:1},animate:{opacity:1},exit:{opacity:1},children:(0,R.jsx)(Pe.path,{d:`M6 12L10 16L18 8`,initial:{pathLength:+!!p},animate:{pathLength:1,transition:{duration:.08,ease:`easeOut`}},exit:{pathLength:0,transition:{duration:.04,ease:`easeIn`}}})})}})})]}),(0,R.jsxs)(`span`,{className:`inline-grid items-center self-center leading-none`,children:[(0,R.jsx)(`span`,{className:`col-start-1 row-start-1 invisible leading-none`,style:{fontVariationSettings:ke.semibold},"aria-hidden":`true`,children:e}),(0,R.jsx)(`span`,{className:L(`col-start-1 row-start-1 leading-none transition-[color,font-variation-settings] duration-80`,h?`text-[11px]`:`text-[13px]`,n||f?`text-foreground`:`text-muted-foreground`),style:{fontVariationSettings:n?ke.semibold:ke.normal},children:e})]})]})});NV.displayName=`CheckboxItem`;var PV=36,FV=188,IV=6;function LV(e,t,n){let[r,i]=(0,z.useState)(0),[a,o]=(0,z.useState)(0),s=(0,z.useMemo)(()=>{let n=[],r=[],i=0;for(let a of e){n.push(i);let e=PV+(t.has(a.id)?FV:0);r.push(e),i+=e}return{offsets:n,heights:r,totalHeight:i}},[t,e]),c=(0,z.useMemo)(()=>{if(e.length===0)return{totalHeight:0,visibleItems:[]};let{offsets:t,heights:n,totalHeight:i}=s,o=r+a,c=0;for(;c<e.length&&t[c]+n[c]<r;)c++;c=Math.max(0,c-IV);let l=c;for(;l<e.length&&t[l]<o;)l++;l=Math.min(e.length,l+IV);let u=[];for(let r=c;r<l;r++)u.push({index:r,item:e[r],top:t[r],height:n[r]});return{totalHeight:i,visibleItems:u}},[e,s,r,a]),l=(0,z.useCallback)(()=>{let e=n.current;e&&i(e.scrollTop)},[n]);return(0,z.useEffect)(()=>{let e=n.current;if(!e)return;let t=()=>{o(e.clientHeight),i(e.scrollTop)};t();let r=new ResizeObserver(t);return r.observe(e),e.addEventListener(`scroll`,l,{passive:!0}),()=>{r.disconnect(),e.removeEventListener(`scroll`,l)}},[l,n,e.length]),c}var RV=300,zV=/(?:^|\/)notifications\//;function BV(e){let t=e;return typeof t?.method==`string`?t.method:null}function VV(e){let t=e.message;if(t?.id!==void 0&&t.id!==null||t?.result!==void 0||t?.error!==void 0)return null;let n=BV(e.message);return!n||!zV.test(n)?null:[e.source,e.serverId,e.widgetId??``,e.direction,n].join(`|`)}function HV(e,t,n=Date.now()){let r=VV(e),i=VV(t);if(!r||r!==i)return!1;let a=Date.parse(e.timestamp);return Number.isNaN(a)?!1:n-a<=RV}function UV(e,t){return{...e,timestamp:t.timestamp,message:t.message,repeatCount:(e.repeatCount??1)+1}}var WV=new class{maxEntries;entries=[];listeners=new Set;nextId=0;emitFrame=null;constructor(e=1e3){this.maxEntries=e}publish(e){let t=this.entries[this.entries.length-1];if(t&&HV(t,e,Date.parse(e.timestamp))){this.entries[this.entries.length-1]=UV(t,e),this.scheduleEmit();return}this.entries.push({...e,id:`rpc-${++this.nextId}`}),this.entries.length>this.maxEntries&&this.entries.splice(0,this.entries.length-this.maxEntries),this.scheduleEmit()}getSnapshot=()=>this.entries;subscribe=e=>(this.listeners.add(e),()=>this.listeners.delete(e));clear(e={}){let t=new Set(e.serverIds??[]),n=new Set(e.sources??[]);t.size===0&&n.size===0?this.entries=[]:this.entries=this.entries.filter(e=>!((t.size===0||t.has(e.serverId))&&(n.size===0||n.has(e.source)))),this.scheduleEmit()}peekCoalesceKey(e){return VV(e)}scheduleEmit(){if(this.emitFrame===null){if(typeof requestAnimationFrame>`u`){this.emit();return}this.emitFrame=requestAnimationFrame(()=>{this.emitFrame=null,this.emit()})}}emit(){this.listeners.forEach(e=>e())}},GV;function KV(e){WV.publish({source:`mcp`,serverId:e.serverId,direction:e.direction,timestamp:e.timestamp,message:e.message})}function qV(){GV||=(ZO().forEach(KV),QO(KV))}qV();function JV({serverIds:e,onCountChange:t,onClearRef:n,onExportRef:r}={}){let i=(0,z.useRef)(null),[a,o]=(0,z.useState)(new Set),[s,c]=(0,z.useState)(``),[l,u]=(0,z.useState)(!1),[d,f]=(0,z.useState)(()=>new Set([`mcp`,`widget`])),p=(0,z.useSyncExternalStore)(WV.subscribe,WV.getSnapshot,WV.getSnapshot),m=async e=>{try{await zj(JSON.stringify(e,null,2)),IF.success(`Message copied to clipboard`)}catch(e){console.error(`Failed to copy message:`,e),IF.error(`Failed to copy to clipboard`)}},h=(0,z.useMemo)(()=>{if(!e?.length)return p;let t=new Set(e);return p.filter(e=>t.has(e.serverId))},[p,e]),g=(0,z.useMemo)(()=>{let e=new Set;return d.has(`mcp`)&&e.add(0),d.has(`widget`)&&e.add(1),e},[d]),_=(0,z.useCallback)(e=>{f(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),y=(0,z.useMemo)(()=>{let e=h;d.size>0&&(e=e.filter(e=>d.has(e.source)));let t=s.trim().toLowerCase();return t&&(e=e.filter(e=>{let n=XV(e);return e.serverId.toLowerCase().includes(t)||e.widgetId?.toLowerCase().includes(t)||e.source.includes(t)||n.toLowerCase().includes(t)||e.direction.toLowerCase().includes(t)||JSON.stringify(e.message).toLowerCase().includes(t)})),[...e].reverse()},[h,s,d]),{totalHeight:b,visibleItems:x}=LV(y,a,i),S=(0,z.useCallback)(e=>{o(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),C=(0,z.useCallback)(async()=>{let t=d.size===0||d.size===2?void 0:[...d];(!t||t.includes(`mcp`))&&(e?.length?e.forEach(e=>$O(e)):$O()),WV.clear({serverIds:e,sources:t}),o(new Set)},[e,d]),w=(0,z.useCallback)(async()=>{try{await zj(JSON.stringify(y,null,2)),IF.success(`Copied ${y.length} messages`)}catch(e){console.error(`Failed to copy messages:`,e),IF.error(`Failed to copy to clipboard`)}},[y]),T=(0,z.useCallback)(()=>{let e=new Blob([JSON.stringify(y,null,2)],{type:`application/json`}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`mcp-rpc-traffic-${new Date().toISOString().replaceAll(`:`,`-`)}.json`,n.click(),URL.revokeObjectURL(t)},[y]);return(0,z.useEffect)(()=>{t?.(y.length)},[y.length,t]),(0,z.useEffect)(()=>(n&&(n.current=C),()=>{n&&(n.current=null)}),[C,n]),(0,z.useEffect)(()=>(r&&(r.current=w),()=>{r&&(r.current=null)}),[w,r]),(0,R.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col overflow-hidden`,children:[(0,R.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-2 pr-2 pt-2 pl-1`,children:[(0,R.jsx)(`h2`,{className:`text-xs font-medium text-foreground`,children:`RPC Logs`}),(0,R.jsxs)(`div`,{className:`flex items-center gap-0.5`,children:[(0,R.jsx)(Gt,{variant:`ghost`,size:`sm`,className:`size-7 p-0`,onClick:w,disabled:y.length===0,"aria-label":`Copy filtered RPC traffic`,title:`Copy filtered`,children:(0,R.jsx)(Wr,{className:`size-3.5`})}),(0,R.jsx)(Gt,{variant:`ghost`,size:`sm`,className:`size-7 p-0`,onClick:T,disabled:y.length===0,"aria-label":`Download filtered RPC traffic as JSON`,title:`Download JSON`,children:(0,R.jsx)(qr,{className:`size-3.5`})}),(0,R.jsx)(Gt,{variant:`ghost`,size:`sm`,className:`size-7 p-0`,onClick:C,disabled:p.length===0,"aria-label":`Clear RPC traffic`,title:`Clear`,children:(0,R.jsx)(Gi,{className:`size-3.5`})})]})]}),(0,R.jsxs)(`div`,{className:`flex shrink-0 items-center pr-2 pb-2 pt-1 pl-1`,children:[(0,R.jsxs)(`div`,{className:`relative min-w-0 flex-1 transition-[flex-grow] duration-200 ease-out`,children:[(0,R.jsx)(v,{className:`pointer-events-none absolute left-2 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground`}),(0,R.jsx)(ht,{value:s,onChange:e=>c(e.target.value),onFocus:()=>u(!0),onBlur:()=>u(!1),placeholder:`Search`,"aria-label":`Search RPC traffic`,className:`h-8 w-full pl-7 text-xs shadow-none transition-[width] duration-200 ease-out`})]}),(0,R.jsx)(`div`,{"aria-hidden":l,className:L(`shrink-0 overflow-hidden transition-[max-width,opacity,margin] duration-200 ease-out`,l?`pointer-events-none ml-0 max-w-0 opacity-0`:`ml-2 max-w-32 opacity-100`),children:(0,R.jsxs)(MV,{checkedIndices:g,orientation:`horizontal`,"aria-label":`Filter RPC traffic by source`,className:`w-auto shrink-0`,children:[(0,R.jsx)(NV,{index:0,label:`MCP`,size:`sm`,checked:d.has(`mcp`),onToggle:()=>_(`mcp`)}),(0,R.jsx)(NV,{index:1,label:`UI`,size:`sm`,checked:d.has(`widget`),onToggle:()=>_(`widget`)})]})})]}),(0,R.jsx)(`div`,{ref:i,className:`min-h-0 flex-1 overflow-y-auto pb-10`,style:{maskImage:`linear-gradient(to bottom, black 0, black calc(100% - 3rem), transparent 100%)`,WebkitMaskImage:`linear-gradient(to bottom, black 0, black calc(100% - 3rem), transparent 100%)`},children:y.length===0?(0,R.jsxs)(`div`,{className:`text-center py-8`,children:[(0,R.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:`No messages yet`}),(0,R.jsx)(`div`,{className:`text-[10px] text-muted-foreground mt-1`,children:`JSON-RPC messages will appear here`})]}):(0,R.jsx)(`div`,{className:`relative w-full`,style:{height:b},children:x.map(({item:e,top:t,height:n})=>(0,R.jsx)(YV,{item:e,top:t,height:n,expanded:a.has(e.id),onToggle:()=>S(e.id),onCopy:()=>m(e.message)},e.id))})})]})}function YV({item:e,top:t,height:n,expanded:r,onToggle:i,onCopy:a}){let o=XV(e),s=ZV(e),c=e.repeatCount&&e.repeatCount>1?` ×${e.repeatCount}`:``;return(0,R.jsxs)(`div`,{className:`absolute inset-x-0 overflow-hidden`,style:{top:t,height:n},"data-testid":`rpc-message-${o.replace(/\//g,`-`)}`,children:[(0,R.jsxs)(`button`,{type:`button`,"aria-expanded":r,onClick:i,className:`flex h-9 w-full cursor-pointer items-center gap-2 py-2 pr-3 pl-1 text-left text-muted-foreground transition-colors hover:text-foreground`,children:[(0,R.jsxs)(et,{children:[(0,R.jsx)(we,{render:(0,R.jsx)(`span`,{className:`flex size-4 shrink-0 items-center justify-center`,children:e.direction===`receive`?(0,R.jsx)(Dr,{className:`size-3.5 text-blue-500`}):(0,R.jsx)(Ar,{className:`size-3.5 text-emerald-500`})}),nativeButton:!1}),(0,R.jsx)(lt,{side:`left`,children:s})]}),(0,R.jsxs)(et,{children:[(0,R.jsx)(we,{render:(0,R.jsx)(`span`,{className:`flex size-3.5 shrink-0 items-center justify-center`,children:e.source===`mcp`?(0,R.jsx)(bL,{className:`size-3`}):(0,R.jsx)(Ti,{className:`size-3`})}),nativeButton:!1}),(0,R.jsx)(lt,{side:`left`,children:e.source===`mcp`?`MCP server`:`UI widget`})]}),(0,R.jsxs)(`span`,{className:`min-w-0 flex-1 truncate font-mono text-xs text-foreground`,children:[o,c?(0,R.jsx)(`span`,{className:`text-muted-foreground`,children:c}):null]}),(0,R.jsxs)(et,{children:[(0,R.jsx)(we,{render:(0,R.jsx)(`time`,{dateTime:e.timestamp,className:`shrink-0 cursor-default font-mono text-[10px] tabular-nums text-muted-foreground underline decoration-dotted underline-offset-2`,children:new Date(e.timestamp).toLocaleTimeString()}),nativeButton:!1}),(0,R.jsx)(lt,{side:`left`,children:new Date(e.timestamp).toLocaleString()})]})]}),r?(0,R.jsxs)(`div`,{className:`relative mx-3 mb-2 max-h-44 overflow-auto rounded-lg p-2 pr-8`,children:[(0,R.jsx)(_V,{data:e.message,className:`[&_pre]:!text-[10px] [&_pre]:!leading-4`}),(0,R.jsx)(Gt,{variant:`secondary`,size:`icon-sm`,onClick:a,className:`absolute right-1 top-1 size-6 rounded-full p-0`,title:`Copy message`,"aria-label":`Copy message`,children:(0,R.jsx)(Wr,{className:`size-3`})})]}):null]})}function XV(e){let t=BV(e.message);if(t)return t;let n=e.message;return n?.result===void 0?n?.error===void 0?`unknown`:`error`:`result`}function ZV(e){return e.source===`widget`?e.direction===`send`?`Host → Widget`:`Widget → Host`:e.direction===`send`?`Inspector → MCP`:`MCP → Inspector`}function QV({serverId:e,open:t}){return(0,R.jsx)(`aside`,{"aria-label":`RPC Panel`,"aria-hidden":!t,className:L(`relative hidden min-h-0 shrink-0 flex-col overflow-hidden transition-[width,margin] duration-200 ease-out lg:flex`,t?`w-(--rpc-panel-width) lg:mr-[18px]`:`w-0 lg:mr-0`),children:(0,R.jsx)(`div`,{className:L(`flex h-full min-h-0 w-(--rpc-panel-width) flex-col transition-opacity duration-200 ease-out`,t?`opacity-100`:`pointer-events-none opacity-0`),children:(0,R.jsx)(JV,{serverIds:[e]})})})}function $V({...e}){return(0,R.jsx)(jI,{"data-slot":`sheet`,...e})}function eH(e){return(0,R.jsx)(NI,{"data-slot":`sheet-trigger`,...e})}function tH({...e}){return(0,R.jsx)(wI,{"data-slot":`sheet-portal`,...e})}function nH({className:e,container:t,...n}){return(0,R.jsx)(hI,{"data-slot":`sheet-overlay`,className:L(`inset-0 z-50 bg-black/50 transition-opacity duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0`,t?`absolute`:`fixed`,e),...n})}function rH({className:e,children:t,side:n=`right`,showCloseButton:r=!0,container:i,...a}){return(0,R.jsxs)(tH,{container:i??void 0,children:[(0,R.jsx)(nH,{container:i}),(0,R.jsxs)(CI,{"data-slot":`sheet-content`,"data-side":n,className:L(`z-50 flex flex-col gap-4 bg-popover bg-clip-padding text-sm text-popover-foreground shadow-lg transition duration-200 ease-in-out data-ending-style:opacity-0 data-starting-style:opacity-0 data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=bottom]:data-ending-style:translate-y-[2.5rem] data-[side=bottom]:data-starting-style:translate-y-[2.5rem] data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=left]:data-ending-style:translate-x-[-2.5rem] data-[side=left]:data-starting-style:translate-x-[-2.5rem] data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=right]:data-ending-style:translate-x-[2.5rem] data-[side=right]:data-starting-style:translate-x-[2.5rem] data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=top]:data-ending-style:translate-y-[-2.5rem] data-[side=top]:data-starting-style:translate-y-[-2.5rem] data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm`,i?`absolute`:`fixed`,e),...a,children:[t,r&&(0,R.jsxs)(gI,{"data-slot":`sheet-close`,render:(0,R.jsx)(Gt,{variant:`ghost`,className:`absolute top-4 right-4`,size:`icon-sm`}),children:[(0,R.jsx)(Xi,{}),(0,R.jsx)(`span`,{className:`sr-only`,children:`Close`})]})]})]})}function iH({className:e,...t}){return(0,R.jsx)(`div`,{"data-slot":`sheet-header`,className:L(`flex flex-col gap-1.5 p-4`,e),...t})}function aH({className:e,...t}){return(0,R.jsx)(MI,{"data-slot":`sheet-title`,className:L(`font-medium text-foreground`,e),...t})}function oH({className:e,...t}){return(0,R.jsx)(_I,{"data-slot":`sheet-description`,className:L(`text-sm text-muted-foreground`,e),...t})}var sH=`https://cdn.mcp-use.com/mcpuse_logo_circle_dark.svg`;function cH({symbolSize:e=14,className:t,textClassName:n}){return(0,R.jsxs)(`span`,{className:L(`inline-flex items-center gap-1.5`,t),children:[(0,R.jsx)(lH,{size:e}),(0,R.jsx)(`span`,{className:L(`font-medium leading-none text-black [font-family:var(--font-family-outfit)]`,n),children:`Manufact`})]})}function lH({size:e=14,className:t}){return(0,R.jsxs)(`svg`,{width:e,height:e,viewBox:`0 0 480 480`,"aria-hidden":!0,className:L(`block shrink-0`,t),children:[(0,R.jsx)(`path`,{d:`M101.7 0 C157.9 0 203.4 45.7 203.4 102.1 C203.4 126.6 202.1 152.1 212.2 174.3 L219.8 191 C233.8 221.8 258.5 246.4 289.2 260.5 L303.5 267 C326.5 277.5 353 275.8 378.3 275.8 C434.5 275.8 480 321.5 480 377.9 C480 434.3 434.5 480 378.3 480 C322.1 480 276.6 434.3 276.6 377.9 C276.6 354.2 277.7 329.6 267.8 308 L259.8 290.3 C245.7 259.5 221 234.8 190.2 220.7 L173 212.9 C151 202.9 125.8 204.2 101.7 204.2 C45.5 204.2 0 158.5 0 102.1 C0 45.7 45.5 0 101.7 0 Z`,fill:`currentColor`}),(0,R.jsx)(`circle`,{cx:`96.4`,cy:`383.6`,r:`96.4`,fill:`currentColor`}),(0,R.jsx)(`circle`,{cx:`383.6`,cy:`96.4`,r:`96.4`,fill:`currentColor`})]})}var uH=`data:image/svg+xml,%3Csvg%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22%2394A3B8%22%20stroke%3D%22%2394A3B8%22%3E%3Cg%3E%3Cpath%20fill%3D%22none%22%20d%3D%22M3%20248.945C18%20248.945%2076%20236%20106%20219C136%20202%20136%20202%20198%20158C276.497%20102.293%20332%20120.945%20423%20120.945%22%20stroke-width%3D%2290%22%2F%3E%3Cpath%20d%3D%22M511%20121.5L357.25%20210.268L357.25%2032.7324L511%20121.5Z%22%2F%3E%3Cpath%20fill%3D%22none%22%20d%3D%22M0%20249C15%20249%2073%20261.945%20103%20278.945C133%20295.945%20133%20295.945%20195%20339.945C273.497%20395.652%20329%20377%20420%20377%22%20stroke-width%3D%2290%22%2F%3E%3Cpath%20d%3D%22M508%20376.445L354.25%20287.678L354.25%20465.213L508%20376.445Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E`,dH={openai:`OpenAI`,anthropic:`Anthropic`,google:`Google`};function fH(e){let t=e.split(`/`)[0]?.toLowerCase();return t===`openai`||t===`anthropic`||t===`google`?t:`openrouter`}function pH(e,t){let n=e.trim(),r=dH[t];if(r){let e=r.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),t=RegExp(`^${e}\\s*:\\s*`,`i`),i=n.replace(t,``).trim();if(i.length>0)return i}let i=n.indexOf(`: `);return i>0&&i<48?n.slice(i+2).trim():n}function mH({provider:e,model:t,displayName:n,mode:r=`byok`,className:i,...a}){let o=n??t,s=r===`managed`&&e===`openai-compatible`?fH(t):e;return(0,R.jsxs)(`button`,{type:`button`,className:L(`inline-flex items-center gap-1.5 min-w-0 border-0 bg-transparent p-1`,`font-mono text-[11px] text-muted-foreground cursor-pointer`,`hover:text-foreground transition-colors`,`rounded-md outline-none focus-visible:ring-1 focus-visible:ring-ring`,i),...a,children:[r===`managed`?(0,R.jsx)(`img`,{src:sH,alt:`Manufact`,className:`h-3.5 w-3.5 shrink-0 rounded-full object-cover`}):(0,R.jsx)(ci,{className:`size-3 shrink-0 opacity-70`,"aria-hidden":!0}),(0,R.jsx)(_H,{provider:s,className:`shrink-0`}),(0,R.jsx)(`span`,{className:`whitespace-nowrap`,children:o}),(0,R.jsx)(Ir,{className:`size-3 shrink-0 opacity-60`,"aria-hidden":!0})]})}function hH(e){switch(e){case`openai`:return`OpenAI`;case`openai-compatible`:return`OpenAI Compatible`;case`anthropic`:return`Anthropic`;case`google`:return`Google`;case`openrouter`:return`OpenRouter`;case`ollama`:return`Ollama`;default:return e}}function gH(e,t){switch(e){case`openai`:case`anthropic`:case`google`:return`https://inspector-cdn.mcp-use.com/providers/${e}.png`;case`ollama`:return`https://inspector-cdn.mcp-use.com/providers/${t===`dark`?`ollama_dark`:`ollama_light`}.png`;case`openrouter`:return uH;case`openai-compatible`:return null;default:return null}}function _H({provider:e,className:t}){let{resolvedTheme:n}=dz();if(e===`openai-compatible`)return null;let r=gH(e,n);if(r){let n=e===`ollama`?`h-3.5 w-3.5 object-contain`:`h-4 w-4 rounded-full object-cover`;return(0,R.jsx)(`img`,{src:r,alt:hH(e),className:L(n,t)})}return(0,R.jsx)(`div`,{"aria-label":hH(e),className:L(`flex h-4 w-4 items-center justify-center rounded-full bg-neutral-900 text-[9px] font-semibold text-white dark:bg-neutral-100 dark:text-neutral-900`,t),children:hH(e).charAt(0)})}function vH({className:e}){return(0,R.jsx)(`svg`,{viewBox:`0 -28.5 256 256`,className:e,fill:`currentColor`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":!0,children:(0,R.jsx)(`path`,{d:`M216.856339,16.5966031 C200.285002,8.84328665 182.566144,3.2084988 164.041564,0 C161.766523,4.11318106 159.108624,9.64549908 157.276099,14.0464379 C137.583995,11.0849896 118.072967,11.0849896 98.7430163,14.0464379 C96.9108417,9.64549908 94.1925838,4.11318106 91.8971895,0 C73.3526068,3.2084988 55.6133949,8.86399117 39.0420583,16.6376612 C5.61752293,67.146514 -3.4433191,116.400813 1.08711069,164.955721 C23.2560196,181.510915 44.7403634,191.567697 65.8621325,198.148576 C71.0772151,190.971126 75.7283628,183.341335 79.7352139,175.300261 C72.104019,172.400575 64.7949724,168.822202 57.8887866,164.667963 C59.7209612,163.310589 61.5131304,161.891452 63.2445898,160.431257 C105.36741,180.133187 151.134928,180.133187 192.754523,160.431257 C194.506336,161.891452 196.298154,163.310589 198.110326,164.667963 C191.183787,168.842556 183.854737,172.420929 176.223542,175.320965 C180.230393,183.341335 184.861538,190.991831 190.096624,198.16893 C211.238746,191.588051 232.743023,181.531619 254.911949,164.955721 C260.227747,108.668201 245.831087,59.8662432 216.856339,16.5966031 Z M85.4738752,135.09489 C72.8290281,135.09489 62.4592217,123.290155 62.4592217,108.914901 C62.4592217,94.5396472 72.607595,82.7145587 85.4738752,82.7145587 C98.3405064,82.7145587 108.709962,94.5189427 108.488529,108.914901 C108.508531,123.290155 98.3405064,135.09489 85.4738752,135.09489 Z M170.525237,135.09489 C157.88039,135.09489 147.510584,123.290155 147.510584,108.914901 C147.510584,94.5396472 157.658606,82.7145587 170.525237,82.7145587 C183.391518,82.7145587 193.761324,94.5189427 193.539891,108.914901 C193.539891,123.290155 183.391518,135.09489 170.525237,135.09489 Z`,fillRule:`nonzero`})})}var yH=`flex flex-1 items-center justify-center text-muted-foreground transition-colors hover:text-foreground active:text-foreground`;function bH({serverId:e,rpcLoggerOpen:t,onRpcLoggerOpenChange:n}){let r=lB(),{embeddedConfig:i}=nL(),{user:a}=WR(i.chatApiUrl),o=a?`https://manufact.com/cloud?ref=mcp-use-inspector`:`https://manufact.com/signup?ref=mcp-use-inspector`;return(0,R.jsxs)(R.Fragment,{children:[typeof document<`u`&&(0,br.createPortal)((0,R.jsxs)(`nav`,{"aria-label":`Inspector shortcuts`,className:`fixed inset-x-0 bottom-0 z-[100] flex items-center bg-transparent px-4 pt-(--mobile-chrome-gap) pb-[calc(var(--mobile-chrome-gap)+env(safe-area-inset-bottom))] lg:hidden`,children:[(0,R.jsx)(`button`,{type:`button`,onClick:()=>n(!t),className:L(yH,t&&`text-foreground`),"aria-label":`RPC logs`,"aria-pressed":t,children:(0,R.jsx)(Pi,{className:`size-4 shrink-0`})}),(0,R.jsx)(`a`,{href:`https://github.com/mcp-use/mcp-use`,target:`_blank`,rel:`noopener noreferrer`,className:yH,"aria-label":`GitHub`,children:(0,R.jsx)(pB,{className:`size-4 shrink-0`})}),(0,R.jsx)(`a`,{href:`https://discord.gg/XkNkSkMz3V`,target:`_blank`,rel:`noopener noreferrer`,className:yH,"aria-label":`Discord`,children:(0,R.jsx)(vH,{className:`size-4 shrink-0`})}),(0,R.jsx)(`a`,{href:o,target:`_blank`,rel:`noopener noreferrer`,onClick:()=>{try{bT(new Mo({referrer:`mcp-use-inspector-mobile-toolbar`})).catch(()=>{})}catch{}},className:yH,"aria-label":`manufact.com`,children:(0,R.jsx)(lH,{size:16})})]}),document.body),!r&&(0,R.jsx)($V,{open:t,onOpenChange:n,children:(0,R.jsxs)(rH,{side:`bottom`,className:`z-[101] flex h-[min(85dvh,720px)] flex-col gap-0 rounded-t-2xl border-zinc-200 p-0 dark:border-zinc-700`,children:[(0,R.jsx)(iH,{className:`sr-only`,children:(0,R.jsx)(aH,{children:`RPC logs`})}),(0,R.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col px-2 pb-2 pt-1`,children:(0,R.jsx)(JV,{serverIds:e?[e]:void 0})})]})})]})}function xH(e){return`${e.replace(/\/+$/,``)}${Uj()}`}function SH({tunnelUrl:e,tunnelMcpUrl:t,selectedServerId:n,selectedServer:r,configLoaded:i,removeConnection:a,updateConnection:o,connections:s}){let c=(0,z.useRef)(null),l=(0,z.useRef)(!1),u=(0,z.useRef)(null),[d,f]=(0,z.useState)(!1);return(0,z.useEffect)(()=>{!d||r?.url!==u.current||r.state!==`ready`&&r.state!==`failed`||(f(!1),l.current=!1,u.current=null)},[d,r]),(0,z.useEffect)(()=>{n&&qj(n)?c.current=n:r?.url&&qj(r.url)&&(c.current=r.url)},[r?.url,n]),(0,z.useEffect)(()=>{if(!i||!n||!r||l.current)return;let d=r.url??``,p=qj(d),m=Jj(d),h=t??(e?xH(e):null),g=null;e&&h&&p?g=h:!e&&m&&c.current&&(g=c.current),!(!g||g===d)&&(l.current=!0,u.current=g,f(!0),(async()=>{try{g!==n&&s.some(e=>e.id===g)&&await a(g),await o(n,uM({...fM(n)??dM(r),url:g}))}catch{f(!1),u.current=null,l.current=!1}})())},[i,s,a,r,n,t,e,o]),(0,z.useEffect)(()=>{d||(l.current=!1)},[d]),d}function CH({children:e}){let t=LN(),n=PN(),{servers:r,addServer:i,removeServer:a,updateServerMetadata:o,updateServer:s,storageLoaded:c}=oj(),l=(0,z.useCallback)(async(e,t)=>{try{await s(e,uM(t)),oM(e,t)}catch(t){console.error(`[Layout] Failed to update connection ${e}:`,t)}},[s]),u=(0,z.useCallback)(async(e,t)=>{try{await o(e,t)}catch(t){console.error(`[Layout] Failed to update connection metadata for ${e}:`,t)}},[o]),{selectedServerId:d,setSelectedServerId:f,activeTab:p,setActiveTab:m,navigateToItem:h,setTunnelUrl:g,tunnelUrl:_,isEmbedded:v,embeddedConfig:y,setEmbeddedMode:b}=nL(),[x,S]=(0,z.useState)(!1),[C,w]=(0,z.useState)(()=>{try{return localStorage.getItem(`inspector-sidebar-collapsed`)===`true`}catch{return!1}}),[T,E]=(0,z.useState)(()=>{try{return localStorage.getItem(`inspector-rpc-logger-open`)===`true`}catch{return!1}});(0,z.useEffect)(()=>{try{localStorage.setItem(`inspector-sidebar-collapsed`,C?`true`:`false`)}catch{}},[C]),(0,z.useEffect)(()=>{try{localStorage.setItem(`inspector-rpc-logger-open`,String(T))}catch{}},[T]);let{savedRequests:ee}=aL();(0,z.useEffect)(()=>{let e=new URLSearchParams(n.search),t=e.get(`embedded`)===`true`,r=e.get(`embeddedConfig`);if(t){let e={};if(r)try{e=JSON.parse(r)}catch(e){console.error(`Failed to parse embeddedConfig:`,e)}b(!0,e),e.defaultTab&&m(e.defaultTab)}},[]),(0,z.useEffect)(()=>{let e=new URLSearchParams(n.search).get(`tunnelUrl`);e!==null&&g(e)},[n.search,g]),(0,z.useEffect)(()=>{let e=new URLSearchParams(n.search).get(`tab`);e&&[`tools`,`prompts`,`resources`,`chat`,`sampling`,`elicitation`,`notifications`,`server-metadata`,`connection-settings`].includes(e)&&m(e)},[n.search,m]);let te=(0,z.useRef)(null),ne=(0,z.useRef)(Date.now()),re=(0,z.useRef)(new Set),ie=(0,z.useRef)(0);(0,z.useEffect)(()=>{let e=()=>{ie.current++};return window.addEventListener(`mcp-tool-executed`,e),()=>window.removeEventListener(`mcp-tool-executed`,e)},[]),(0,z.useEffect)(()=>{let e=()=>{try{bT(new Io({durationSeconds:Math.round((Date.now()-ne.current)/1e3),tabsVisited:re.current.size,toolsExecuted:ie.current})).catch(()=>{})}catch{}};return window.addEventListener(`beforeunload`,e),()=>window.removeEventListener(`beforeunload`,e)},[]);let D=(0,z.useCallback)(e=>{try{bT(new Po({tab:e,previousTab:te.current})).catch(()=>{})}catch{}te.current=e,re.current.add(e),m(e);let r=new URLSearchParams(n.search);r.set(`tab`,e),t(`/?${r.toString()}`,{replace:!0})},[m,t,n.search]);(0,z.useEffect)(()=>{let e=e=>{let t=e.detail.requestId;d&&h(d,`sampling`,t)},t=e=>{let t=e.detail.requestId;d&&h(d,`elicitation`,t)},n=e=>{let t=e.detail.toolName;d&&t?h(d,`tools`,t):d&&D(`tools`)};return window.addEventListener(`navigate-to-sampling`,e),window.addEventListener(`navigate-to-elicitation`,t),window.addEventListener(`navigate-to-tool-result`,n),()=>{window.removeEventListener(`navigate-to-sampling`,e),window.removeEventListener(`navigate-to-elicitation`,t),window.removeEventListener(`navigate-to-tool-result`,n)}},[d,D,h]);let ae=(0,z.useRef)(null),O=(0,z.useRef)(null),k=(0,z.useRef)(null),{isAutoConnecting:A}=nI({connections:r,addServer:i,removeConnection:a,configLoaded:c,embedded:v});(0,z.useEffect)(()=>{let e=()=>{let e=document.documentElement.classList.contains(`dark`)?`#000000`:`#f3f3f3`;document.documentElement.style.backgroundColor=e,document.body.style.backgroundColor=e};e();let t=new MutationObserver(e);return t.observe(document.documentElement,{attributes:!0,attributeFilter:[`class`]}),()=>t.disconnect()},[]);let oe=(0,z.useCallback)(e=>{bT(new ko({trigger:e})).catch(()=>{}),S(!0)},[]),se=e=>{if(!r.find(t=>t.id===e))return;f(e);let i=new URLSearchParams(n.search),a=i.get(`tunnelUrl`),o=i.get(`tab`),s=new URLSearchParams;s.set(`server`,e),a&&s.set(`tunnelUrl`,a),o&&s.set(`tab`,o),t(`/?${s.toString()}`)},ce=(0,z.useCallback)(e=>{if(!d)return;let t=fM(d)||r.find(e=>e.id===d);e.url===d?t&&hM(t,e)?(u(d,{name:e.name||e.url}),oM(d,e)):l(d,e):(a(d),i(e.url,uM(e))),IF.success(`Connection settings updated`)},[d,r,a,i,u,l]),j=(e,i,a)=>{if(console.warn(`[Layout] handleCommandPaletteNavigate called:`,{tab:e,itemName:i,serverId:a}),a){let o=r.find(e=>e.id===a);if(console.warn(`[Layout] Server lookup:`,{serverId:a,serverFound:!!o,serverState:o?.state}),!o||o.state!==`ready`){console.warn(`[Layout] Server not ready, showing error`),IF.error(`Server is not connected and cannot be inspected`);return}console.warn(`[Layout] Calling navigateToItem:`,{serverId:a,tab:e,itemName:i}),h(a,e,i);let s=new URLSearchParams(n.search),c=s.get(`tunnelUrl`),l=s.get(`tab`),u=new URLSearchParams;u.set(`server`,a),c&&u.set(`tunnelUrl`,c),e?u.set(`tab`,e):l&&u.set(`tab`,l);let d=`/?${u.toString()}`;console.warn(`[Layout] Navigating to:`,d),t(d)}else console.warn(`[Layout] No serverId, just updating tab to:`,e),D(e)},M=r.find(e=>e.id===d),N=SH({tunnelUrl:_,selectedServerId:d,selectedServer:M,configLoaded:c,removeConnection:a,updateConnection:s,connections:r}),le=M?M.tools.map(e=>({...e,_serverId:M.id})):r.flatMap(e=>e.state===`ready`?e.tools.map(t=>({...t,_serverId:e.id,_serverName:Xj(e)})):[]),ue=M?M.prompts.map(e=>({...e,_serverId:M.id})):r.flatMap(e=>e.state===`ready`?e.prompts.map(t=>({...t,_serverId:e.id,_serverName:Xj(e)})):[]),de=M?M.resources.map(e=>({...e,_serverId:M.id})):r.flatMap(e=>e.state===`ready`?e.resources.map(t=>({...t,_serverId:e.id,_serverName:Xj(e)})):[]);(0,z.useEffect)(()=>{if(N)return;let e=new URLSearchParams(n.search),i=e.get(`server`);if(i&&(i.startsWith(`http://`)||i.startsWith(`https://`))&&!r.find(e=>e.id===i)){let n=new URLSearchParams(e);n.delete(`server`),n.set(`autoConnect`,i),t(`/?${n.toString()}`,{replace:!0});return}i!==d&&f(i)},[n.search,d,f,r,t,N]),(0,z.useEffect)(()=>{if(N)return;let e=new URLSearchParams(n.search).get(`server`);if(e&&!r.find(t=>t.id===e)){let e=setTimeout(()=>t(`/`),3e3);return()=>clearTimeout(e)}},[n.search,t,r,N]),(0,z.useEffect)(()=>{if(!v)return;let e=e=>{if(!e.data||typeof e.data!=`object`||e.data.type!==`mcp-inspector:connect_servers`)return;let t=e.data.servers;if(!Array.isArray(t)||t.length===0)return;let n=null;for(let e of t){if(!e.url||typeof e.url!=`string`)continue;let t=e.url,a=e.name??`Server`,o={...e.headers??{}};if(e.auth?.access_token){let t=e.auth.token_type||`bearer`;o.Authorization=`${t.charAt(0).toUpperCase()+t.slice(1)} ${e.auth.access_token}`}let s=typeof e.proxyConfig?.proxyAddress==`string`?e.proxyConfig.proxyAddress.trim():``,c=``;try{new URL(t).origin!==window.location.origin&&(c=tM())}catch{c=tM()}let l=s||c,u=nM(e.connectionMode,e.connectionType,!!s),d=uM({url:t,name:a,transportType:`http`,connectionMode:u,protocolNegotiation:$j(eM(e.protocolNegotiation)),connectionType:u===`proxy`?`Via Proxy`:`Direct`,proxyConfig:u===`proxy`&&l?{proxyAddress:l,...Object.keys(o).length>0?{headers:o}:{}}:void 0,headers:o,autoProxyFallback:u===`auto`&&l?{enabled:!0,proxyAddress:l}:!1});r.find(e=>e.url===t)||i(t,d),n||=t}window.parent!==window&&window.parent.postMessage({type:`mcp-inspector:servers_connected`,count:t.length},`*`)};return window.addEventListener(`message`,e),()=>window.removeEventListener(`message`,e)},[v,r,i]);let fe=(0,z.useRef)(!1);(0,z.useEffect)(()=>{if(!v||fe.current||d)return;let e=r.find(e=>e.state===`ready`);if(e){fe.current=!0,f(e.id);let r=new URLSearchParams(n.search);r.set(`server`,e.id),t(`/?${r.toString()}`,{replace:!0})}},[v,r,d,f,t,n.search]),rL({onCommandPalette:()=>oe(`keyboard`),onToolsTab:()=>{M&&D(`tools`)},onPromptsTab:()=>{M&&D(`prompts`)},onResourcesTab:()=>{M&&D(`resources`)},onChatTab:()=>{M&&D(`chat`)},onHome:()=>{t(`/`)},onFocusSearch:()=>{p===`tools`&&ae.current?ae.current.focusSearch():p===`prompts`&&O.current?O.current.focusSearch():p===`resources`&&k.current&&k.current.focusSearch()},onBlurSearch:()=>{p===`tools`&&ae.current?ae.current.blurSearch():p===`prompts`&&O.current?O.current.blurSearch():p===`resources`&&k.current&&k.current.blurSearch()}});let pe=new URLSearchParams(n.search).get(`server`),me=!c&&!!pe&&!pe.startsWith(`http://`)&&!pe.startsWith(`https://`),he=A||me||N,ge=M?.id??`home`,_e=he?`boot`:ge,[ve,ye]=(0,z.useState)(_e);(0,z.useLayoutEffect)(()=>{if(_e===ve)return;let e=()=>(0,br.flushSync)(()=>ye(_e));typeof document.startViewTransition==`function`?document.startViewTransition(e):e()},[_e,ve]);let be=ve===`boot`,xe=be||ve===`home`?void 0:r.find(e=>e.id===ve),P=v&&y.singleTab,Se=v?{backgroundColor:y.backgroundColor||`#f3f3f3`,padding:P?`0`:y.padding||`0.5rem`}:{},Ce=v?P?`h-screen flex flex-col`:`h-screen flex flex-col gap-2 sm:gap-4`:`h-screen bg-[#f3f3f3] dark:bg-black flex flex-col overflow-x-hidden px-4 lg:px-0 pb-[calc(var(--mobile-toolbar-height)+env(safe-area-inset-bottom))] lg:pb-4`,we=P?`flex-1 w-full bg-white dark:bg-black p-0 overflow-auto`:L(`flex-1 min-h-0 min-w-0 max-w-full w-full bg-white dark:bg-black rounded-2xl border border-zinc-200 dark:border-zinc-700 overflow-x-hidden overflow-y-auto`,!xe&&`lg:mx-4`,xe&&`lg:mr-4`);return(0,R.jsxs)(Ve,{children:[(0,R.jsx)(`div`,{className:`inspector-view-transition h-screen overflow-x-hidden bg-[#f3f3f3] dark:bg-black`,children:be?(0,R.jsx)(`div`,{className:`flex h-full items-center justify-center bg-[#f3f3f3] dark:bg-black`,children:(0,R.jsxs)(`div`,{className:`flex flex-col items-center gap-4`,children:[(0,R.jsx)(XI,{className:`h-8 w-8 text-zinc-600 dark:text-zinc-400`}),(0,R.jsx)(`p`,{className:`text-sm text-zinc-600 dark:text-zinc-400`,children:`Connecting to MCP server...`})]})}):(0,R.jsxs)(`div`,{className:Ce,style:Se,children:[!P&&(0,R.jsx)(dB,{connections:r,selectedServer:xe,activeTab:p,onServerSelect:se,onTabChange:D,embedded:v,sidebarCollapsed:C}),(0,R.jsxs)(`div`,{className:P?`flex-1 min-h-0`:`flex min-w-0 flex-1 min-h-0 overflow-hidden`,children:[xe&&!P&&(0,R.jsx)($B,{activeTab:p,onTabChange:D,selectedServer:xe,visibleTabs:y.visibleTabs,collapsed:C,onCollapsedChange:w,rpcLoggerOpen:T,onRpcLoggerOpenChange:E,onCommandPaletteOpen:()=>oe(`button`)}),(0,R.jsx)(`main`,{className:we,children:(0,R.jsx)(FR,{selectedServer:xe,activeTab:p,toolsSearchRef:ae,promptsSearchRef:O,resourcesSearchRef:k,onUpdateConnection:ce,children:e})}),xe&&!P&&(0,R.jsx)(QV,{serverId:xe.id,open:T})]})]})}),!P&&!be&&(0,R.jsx)(bH,{serverId:xe?.id,rpcLoggerOpen:T,onRpcLoggerOpenChange:E}),(0,R.jsx)(SL,{isOpen:x,onOpenChange:S,tools:le,prompts:ue,resources:de,savedRequests:ee,connections:r,selectedServer:M,tunnelUrl:_,onNavigate:j,onServerSelect:se})]})}function wH({...e}){let{resolvedTheme:t}=dz();return(0,R.jsx)(ZF,{theme:t,className:`toaster group`,style:{"--normal-bg":`var(--popover)`,"--normal-text":`var(--popover-foreground)`,"--normal-border":`var(--border)`},...e})}var TH=(0,z.createContext)(void 0),EH={deviceType:`desktop`,customViewport:{width:768,height:1024},cspMode:`permissive`,displayModeOverride:null,capabilities:{hover:!0,touch:!1},safeAreaInsets:{top:0,right:0,bottom:0,left:0},locale:`en-US`,timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone||`UTC`};function DH({children:e}){let[t,n]=(0,z.useState)({activeWidgetId:null,widgets:new Map,playground:EH}),r=(0,z.useCallback)(e=>{n(t=>({...t,activeWidgetId:e}))},[]),i=(0,z.useCallback)((e,t)=>{n(n=>{if(n.widgets.has(e))return n;let r=new Map(n.widgets);return r.set(e,{...t,cspViolations:[]}),{...n,widgets:r}})},[]),a=(0,z.useCallback)(e=>{n(t=>{let n=new Map(t.widgets);return n.delete(e),{...t,widgets:n,activeWidgetId:t.activeWidgetId===e?null:t.activeWidgetId}})},[]),o=(0,z.useRef)(t);o.current=t;let s=(0,z.useCallback)(e=>o.current.widgets.get(e),[]),c=(0,z.useCallback)((e,t)=>{n(n=>{let r=n.widgets.get(e);if(!r)return n;let i={cspViolations:[...r.cspViolations,t]};t.originalPolicy&&r.effectivePolicy===void 0&&(i.effectivePolicy=t.originalPolicy);let a=new Map(n.widgets);return a.set(e,{...r,...i}),{...n,widgets:a}})},[]),l=(0,z.useCallback)(e=>{n(t=>{let n=t.widgets.get(e);if(!n)return t;let r=new Map(t.widgets);return r.set(e,{...n,cspViolations:[]}),{...t,widgets:r}})},[]),u=(0,z.useCallback)((e,t)=>{n(n=>{let r=n.widgets.get(e);if(!r)return n;let i=new Map(n.widgets);return i.set(e,{...r,modelContext:t}),{...n,widgets:i}})},[]),d=(0,z.useCallback)((e,t)=>{n(n=>{let r=n.widgets.get(e);if(!r)return n;let i=new Map(n.widgets);return i.set(e,{...r,widgetState:t}),{...n,widgets:i}})},[]),f=(0,z.useCallback)((e,t,r)=>{n(n=>{let i=n.widgets.get(e);if(!i)return n;let a=new Map(n.widgets);return a.set(e,{...i,declaredCsp:t,...r!==void 0&&{effectivePolicy:r}}),{...n,widgets:a}})},[]),p=(0,z.useCallback)(e=>{n(t=>({...t,playground:{...t.playground,...e}}))},[]),m=(0,z.useCallback)(()=>{n(e=>({...e,widgets:new Map,activeWidgetId:null}))},[]),h=(0,z.useCallback)(()=>{let e=new Map;for(let[n,r]of t.widgets)r.modelContext&&e.set(n,r.modelContext);return e},[t.widgets]);return(0,R.jsx)(TH,{value:(0,z.useMemo)(()=>({...t,setActiveWidget:r,addWidget:i,removeWidget:a,getWidget:s,addCspViolation:c,clearCspViolations:l,setWidgetModelContext:u,setWidgetState:d,setWidgetDeclaredCsp:f,updatePlaygroundSettings:p,clearAllWidgets:m,getAllModelContexts:h}),[t,r,i,a,s,c,l,u,d,f,p,m,h]),children:e})}function OH(){let e=(0,z.use)(TH);if(!e)throw Error(`useWidgetDebug must be used within WidgetDebugProvider`);return e}var kH={mobile:{width:390,height:844,name:`iPhone 14`},desktop:{width:1440,height:900,name:`Desktop`}},AH=(0,z.lazy)(()=>lS(()=>import(`./OAuthCallback-0QMKMr_h.js`).then(e=>({default:e.OAuthCallback})),__vite__mapDeps([39,1,3]))),jH=(0,z.lazy)(()=>lS(()=>import(`./ManufactOAuthCallback-C7FmBqhm.js`).then(e=>({default:e.ManufactOAuthCallback})),__vite__mapDeps([40,1,3]))),MH=(0,z.lazy)(()=>lS(()=>import(`./ViewPreview-r5Me72Dm.js`).then(e=>({default:e.ViewPreview})),__vite__mapDeps([41,1,3,18,2])));function NH({activeTabRef:e}){let{activeTab:t}=nL();return(0,z.useEffect)(()=>{e.current=t},[t,e]),null}function PH(){let e=(0,z.useRef)(`tools`),t=new URLSearchParams(window.location.search),n=t.get(`embedded`)===`true`,r=t.get(`theme`),i=(0,z.useMemo)(()=>n?void 0:new gM(`mcp-inspector-connections`),[n]),a=tM(),o=a?.replace(/\/proxy\/?$/,`/oauth`),s=Wj();return(0,z.useEffect)(()=>{vT()},[]),(0,z.useEffect)(()=>{let e=t.get(`auth_error`);if(!e)return;let n=t.get(`auth_error_description`);IF.error(`OAuth authentication failed: ${n||e}`,{duration:1/0,closeButton:!0});let r=new URLSearchParams(t);r.delete(`auth_error`),r.delete(`auth_error_description`);let i=r.toString();window.history.replaceState({},``,`${window.location.pathname}${i?`?${i}`:``}`)},[]),(0,R.jsx)(fz,{forcedTheme:r||void 0,children:(0,R.jsx)(Jt,{defaultShape:`pill`,children:(0,R.jsx)(DH,{children:(0,R.jsx)(aj,{storageProvider:i,enableRpcLogging:!0,defaultCallbackUrl:`${window.location.origin}${s}/oauth/callback`,defaultOAuthProxyUrl:o,defaultAutoProxyFallback:a?{enabled:!0,proxyAddress:a}:!1,defaultServerConfig:{preventAutoAuth:!0,useRedirectFlow:!0},clientInfo:{name:`mcp-use Inspector`,version:Lo(),websiteUrl:`https://mcp-use.com`,icons:[{src:`https://mcp-use.com/logo.png`}],capabilities:{extensions:{"io.modelcontextprotocol/ui":{mimeTypes:[`text/html;profile=mcp-app`]}}}},onServerAdded:(e,t)=>{console.log(`[Inspector] Server added:`,e,t.state)},onServerRemoved:e=>{console.log(`[Inspector] Server removed:`,e)},onServerStateChange:(e,t)=>{console.log(`[Inspector] Server state changed:`,e,t)},onSamplingRequest:(e,t,n,r,i)=>{let a=IF((0,R.jsx)(Fn,{title:`Sampling Request Received`,description:`New request from ${n}`,actions:[{label:`View Details`,testId:`sampling-toast-view-details`,onClick:()=>{let t=new CustomEvent(`navigate-to-sampling`,{detail:{requestId:e.id}});window.dispatchEvent(t),IF.dismiss(a)}},{label:`Approve`,testId:`sampling-toast-approve`,onClick:()=>{r(e.id,In),IF.success(`Sampling request approved`),IF.dismiss(a)}},{label:`Deny`,testId:`sampling-toast-deny`,onClick:()=>{i(e.id,`User denied from toast`),IF.dismiss(a)}}]}),{duration:1/0})},onElicitationRequest:(t,n,r,i,a)=>{if(e.current===`chat`)return;let o=t.request.mode||`form`,s=t.request.message,c=o===`url`&&`url`in t.request?t.request.url:void 0,l=IF((0,R.jsx)(Fn,{title:`Elicitation Request Received`,description:`From ${r}: ${s}`,extra:o===`url`&&c?(0,R.jsx)(`p`,{className:`text-xs text-muted-foreground mt-1 font-mono`,children:c}):void 0,actions:[{label:`View Details`,testId:`elicitation-toast-view-details`,onClick:()=>{let e=new CustomEvent(`navigate-to-elicitation`,{detail:{requestId:t.id}});window.dispatchEvent(e),IF.dismiss(l)}},...o===`url`&&c?[{label:`Open URL`,testId:`elicitation-toast-open-url`,onClick:()=>{window.open(c,`_blank`),IF.dismiss(l)}}]:[],{label:`Cancel`,testId:`elicitation-toast-cancel`,onClick:()=>{a(t.id,`User cancelled from toast`),IF.dismiss(l)}}]}),{duration:1/0})},children:(0,R.jsxs)(tL,{children:[(0,R.jsx)(NH,{activeTabRef:e}),(0,R.jsx)(eF,{basename:s,children:(0,R.jsxs)(dP,{children:[(0,R.jsx)(lP,{path:`/oauth/callback`,element:(0,R.jsx)(wR,{children:(0,R.jsx)(AH,{})})}),(0,R.jsx)(lP,{path:`/auth/callback`,element:(0,R.jsx)(wR,{children:(0,R.jsx)(jH,{})})}),(0,R.jsx)(lP,{path:`/preview/:view`,element:(0,R.jsx)(wR,{children:(0,R.jsx)(MH,{})})}),(0,R.jsx)(lP,{path:`/`,element:(0,R.jsx)(CH,{children:(0,R.jsx)($I,{})})})]})}),(0,R.jsx)(wH,{position:`top-center`})]})})})})})}var FH=document.getElementById(`root`);FH?Pn.createRoot(FH).render((0,R.jsx)(PH,{})):console.error(`[inspector] Root element not found`);export{hI as $,Wi as $t,WR as A,Q as At,BI as B,go as Bt,tV as C,Mr as Cn,Cj as Ct,qz as D,oj as Dt,Gz as E,_r as En,KA as Et,XI as F,Eo as Ft,GI as G,Ya as Gt,WI as H,vo as Ht,YI as I,wo as It,AI as J,Xa as Jt,zI as K,Za as Kt,JI as L,Co as Lt,aL as M,Bb as Mt,rL as N,Cf as Nt,Kz as O,bT as Ot,nL as P,No as Pt,gI as Q,Gi as Qt,RI as R,So as Rt,sV as S,Fr as Sn,Ij as St,vB as T,vr as Tn,wj as Tt,VI as U,mo as Ut,KI as V,bo as Vt,UI as W,ro as Wt,CI as X,Xi as Xt,wI as Y,Ia as Yt,_I as Z,Yi as Zt,DV as _,Yr as _n,Zj as _t,_H as a,xi as an,aI as at,_V as b,Vr as bn,zj as bt,$V as c,fi as cn,dF as ct,iH as d,ai as dn,fM as dt,zi as en,uI as et,aH as f,ri as fn,eM as ft,OV as g,Xr as gn,Xj as gt,kV as h,Zr as hn,Yj as ht,mH as i,Ti as in,iI as it,lR as j,lS as jt,dz as k,KC as kt,rH as l,ci as ln,sM as lt,WV as m,$r as mn,dM as mt,OH as n,Ai as nn,sI as nt,pH as o,bi as on,IF as ot,eH as p,ti as pn,$j as pt,MI as q,$a as qt,cH as r,ki as rn,oI as rt,hH as s,yi as sn,zN as st,kH as t,Ii as tn,rI as tt,oH as u,si as un,tM as ut,CV as v,qr as vn,Uj as vt,MB as w,jr as wn,Tj as wt,oV as x,Ir as xn,Bj as xt,SV as y,Wr as yn,Gj as yt,HI as z,Ao as zt};
|